OSDN Git Service

ABM intrinsics file.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
2
3         * config/i386/abmintrin.h: New.
4         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
5         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
6
7 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
8
9         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
10         (crc32modesuffix): Remove.
11         (crc32modeconstraint): Ditto.
12         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
13         imodesuffix instead of crc32modesuffix and <r>m instead of
14         crc32modeconstraint.
15
16 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
17
18         PR c++/42234
19         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
20         contains no statements.
21
22 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
23             Joern Rennecke  <amylaar@spamcop.net>
24
25         * cgraphunit.c (plugin.h): Include.
26         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
27         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
28         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
29         (enum plugin_event): Define by including plugin.def.
30         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
31         (plugin_event_name): Change type to const char **.
32         (get_event_last, get_named_event_id, unregister_callback): Declare.
33         (register_callback): Change type of event argument to int.
34         (highlev-plugin-common.h): New file.
35         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
36         $(HASHTAB_H)
37         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
38         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
39         (s-header-vars): New rule.
40         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
41         * params.c (get_num_compiler_params): New function.
42         * params.h (get_num_compiler_params): Declare.
43         * passes.c (plugin.h): Include.
44         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
45         (do_per_function_toporder, pass_init_dump_file): No longer static.
46         (pass_fini_dump_file): Likewise.
47         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
48         PLUGIN_PASS_EXECUTION.
49         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
50         PLUGIN_EARLY_GIMPLE_PASSES_END.
51         * plugin.c (plugin_event_name_init): New array, defined by
52         including plugin.def.
53         (FMT_FOR_PLUGIN_EVENT): Update.
54         (plugin_event_name): Change type to const char ** and initialize
55         to plugin_event_name_init.
56         (event_tab, event_last, event_horizon): New variable.
57         (get_event_last): New function.
58         (plugin_callbacks_init): New array.
59         (plugin_callbacks: Change type to struct callback_info **.
60         Initialize to plugin_callbacks_init.
61         (htab_event_eq, get_named_event_id, unregister_callback): New function.
62         (invoke_plugin_va_callbacks): Likewise.
63         (register_callback): Change type of event argument to int.
64         Handle new events.  Allow dynamic events.
65         (invoke_plugin_callbacks): Likewise.  Return success status.
66         (plugins_active_p): Allow dynamic callbacks.
67         * plugin.def: New file.
68         * plugin.h (invoke_plugin_callbacks): Update prototype.
69         (invoke_plugin_va_callbacks): Declare.
70         * tree-optimize.c (plugin.h): Include.
71         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
72         PLUGIN_ALL_PASSES_END.
73         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
74         (pass_fini_dump_file, do_per_function_toporder): Likewise.
75         * doc/plugin.texi: Document new event types.
76
77 2009-12-01  Martin Jambor  <mjambor@suse.cz>
78
79         PR tree-optimization/42237
80         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
81         in between references into two.
82
83 2009-12-01  Richard Guenther  <rguenther@suse.de>
84
85         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
86         to the block of the call when remapping a type.
87
88 2009-12-01  Martin Jambor  <mjambor@suse.cz>
89
90         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
91         unsigned short int.
92         * ipa-prop.h (struct ipa_param_call_note): Likewise.
93         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
94
95 2009-12-01  Richard Guenther  <rguenther@suse.de>
96
97         * final.c (rest_of_clean_state): If -fcompare-debug is
98         given dump final insns without UIDs.
99         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
100         after_inlining checks.
101
102 2009-11-30  Chao-ying Fu  <fu@mips.com>
103
104         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
105
106 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
107
108         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
109         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
110         * configure: Regenerate.
111         * config.in: Regenerate.
112
113         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
114         options for Cygwin DLL libstdc++ support wrappers.
115         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
116         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
117         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
118         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
119         (LINK_SPEC): Include CXX_WRAP_SPEC.
120         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
121         (i386_find_on_wrapper_list): Check if a function is found on the list
122         of libstdc++ wrapper options.
123         (i386_pe_file_end): If we are importing a wrapped function, also emit
124         an external declaration for the real version.
125         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
126         Cygwin targets. Update copyright year.
127
128 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
129             Jakub Jelinek <jakub@redhat.com>
130
131         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
132         before forcing mode.
133
134 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
135
136         * config/sh/sh.c (sh_promote_prototypes): Make static.
137         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
138         functions.
139         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
140         * config/sh/sh.h: (FUNCTION_VALUE_REGNO_P): Redefine, use
141         sh_function_value_regno_p.
142         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
143         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
144         (sh_promote_prototypes) : Remove.
145
146 2009-11-30  Julian Brown  <julian@codesourcery.com>
147
148         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
149         reloads to LO_REGS.
150
151 2009-11-30  Richard Henderson  <rth@redhat.com>
152
153         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
154         (bdesc_special_args): Update insn codes.
155         (avx_vpermilp_parallel): Correct range check.
156         (ix86_rtx_costs): Handle vector permutation rtx codes.
157         (struct expand_vec_perm_d): Move earlier.
158         (get_mode_wider_vector): New.
159         (expand_vec_perm_broadcast_1): New.
160         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
161         (expand_vec_perm_broadcast): New.
162         (ix86_expand_vec_perm_builtin_1): Use it.
163         * config/i386/i386-protos.h: Update.
164         * config/i386/predicates.md (avx_vbroadcast_operand): New.
165         * config/i386/sse.md (AVX256MODE24P): New.
166         (ssescalarmodesuffix2s): New.
167         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
168         (avxmodesuffixf2c): Add V8SI, V4DI.
169         (vec_dupv4sf): New expander.
170         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
171         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
172         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
173         pinsrd alternatives.
174         (*vec_set<mode>_0_sse2): Split out from ...
175         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
176         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
177         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
178         ix86_fixup_binary_operands.
179         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
180         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
181         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
182         vec_select form to vec_duplicate form.
183         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
184         ix86_vec_interleave_v2df_operator_ok.
185         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
186         (*avx_unpcklpd256): ... here.
187         (*vec_dupv4si_avx): New.
188         (*vec_dupv2di_avx): Add movddup alternative.
189         (*vec_dupv2di_sse3): New.
190         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
191         avx_vbroadcastss256; represent with vec_duplicate instead of
192         nested vec_concat operations.
193         (avx_vbroadcastf128_<mode>): Rename from
194         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
195         (*avx_vperm_broadcast_v4sf): New.
196         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
197
198 2009-11-30  Martin Jambor  <mjambor@suse.cz>
199
200         PR middle-end/42196
201         * tree-sra.c (struct access): New field grp_different_types.
202         (dump_access): Dump grp_different_types.
203         (compare_access_positions): Prefer scalars and vectors over other
204         scalar types.
205         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
206         (sra_modify_expr): Use the original also when dealing with a complex
207          or vector group accessed as multiple types.
208
209 2009-11-30  Richard Henderson  <rth@redhat.com>
210
211         * config/i386/i386.c (avx_vperm2f128_parallel): New.
212         * config/i386/i386-protos.h: Declare it.
213         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
214         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
215         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
216         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
217         (*avx_vperm2f128<mode>_nozero): New.
218
219 2009-11-30  Richard Henderson  <rth@redhat.com>
220
221         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
222         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
223         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
224         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
225         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
226         (bdesc_args): Add them.
227         (ix86_expand_builtin): Expand them.
228         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
229
230 2009-11-30  Martin Jambor  <mjambor@suse.cz>
231
232         PR middle-end/42206
233         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
234
235 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
236
237         * ipa-reference.c (propagate): Only dump bitmaps if computed.
238
239 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
240
241         PR middle-end/39806
242         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
243         (new_var_hash): Likewise.
244         (is_in_new_vars_htab): Likewise.
245         (add_to_new_vars_htab): Likewise.
246
247 2009-11-30  Ira Rosen  <irar@il.ibm.com>
248
249         * tree-vect-stmts.c (vectorizable_assignment): Support
250         multiple types.
251
252 2009-11-30  Richard Guenther  <rguenther@suse.de>
253
254         * doc/contrib.texi (Contributors): Add myself.
255
256 2009-11-30  Richard Guenther  <rguenther@suse.de>
257
258         * tree.c (free_lang_data): Do not set debug_info_level to
259         none if terse.
260
261 2009-11-30  Richard Guenther  <rguenther@suse.de>
262
263         PR middle-end/42119
264         PR fortran/38530
265         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
266         of CONST_DECLs.
267
268 2009-11-30  Richard Guenther  <rguenther@suse.de>
269
270         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
271         variable UID order.
272
273 2009-11-30  Richard Guenther  <rguenther@suse.de>
274
275         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
276         * tree-pass.h (TDF_NOUID): Likewise.
277         * print-rtl.c: Include tree-pass.h.
278         (print_mem_expr): Pass dump_flags.
279         (print_rtx): Likewise.
280         * print-tree.c: Include tree-pass.h.
281         (print_node_brief): Handle TDF_NOUID.
282         (print_node): Likewise.
283         * tree-pretty-print.c (dump_decl_name): Likewise.
284         (dump_generic_node): Likewise.
285         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
286         dependency.
287
288 2009-11-30  Nick Clifton  <nickc@redhat.com>
289
290         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
291         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
292         stormy16-lib2-count-leading-zeros.c.
293         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
294         __stormy16_count_leading_zeros() into this function.
295         (__ctzhi2): Use __builtin_clz.
296         (__ffshi2): Likewise.
297
298 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
299
300         * config/sparc/sparc.c (DF_MODES): Simplify.
301         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
302         (TF_MODES, OF_MODES): Adjust for above change.
303         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
304         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
305
306 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
307
308         PR rtl-optimization/41812
309         * fwprop.c (local_md, local_lr): New globals.
310         (process_defs, process_uses): Remove local_md argument.  Never
311         consider dead pseudos to have singleton def-use chains.
312         (single_def_use_enter_block): Perform LR simulation.
313         (build_single_def_use_links): Remove local_md local variable.
314         Add DF_NOTE.  Allocate local_lr.
315         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
316         * df-problems.c (df_md_scratch): New.
317         (df_md_alloc, df_md_free): Allocate/free it.
318         (df_md_local_compute): Only include live registers in init.
319         (df_md_transfer_function): Prune the in-set computed by
320         the confluence function, and the gen-set too.
321
322 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
323
324         PR rtl-optimization/40086
325         * reorg.c (relax_delay_slots): When looking for redundant insn at
326         the branch target, use next_real_insn, not next_active_insn.
327
328 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
329
330         * doc/install.texi: Update minimum MPC version to 0.8.
331
332 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
333
334         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
335         HONOR_SIGNED_ZEROS final condition.
336         (fnmsubsf4_powerpc_1): Same.
337         (fnmadddf4_fpr_1): Same.
338         (fnmsubdf4_fpr_1): Same.
339
340 2009-11-29  Ira Rosen  <irar@il.ibm.com>
341
342         PR tree-optimization/42193
343         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
344         to 1 in case of basic block SLP.
345         (vectorizable_load): Likewise.
346
347 2009-11-28  Jan Hubicka  <jh@suse.cz>
348
349         * cgraph.c (same_body_alias_1): Break out of
350         (same_body_alias): ... here; remove comdat check; it is handled
351         in cp already.
352         (cgraph_add_thunk): New.
353         (dump_cgraph_node): Dump aliases and thunks.
354         * cgraph.h (cgraph_thunk_info): New structure.
355         (struct cgraph_node): Add thunk info.
356         (cgraph_add_thunk): New.
357         * cgraphunit.c (cgraph_emit_thunks): Remove.
358         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
359         (assemble_thunk): New function.
360         (cgraph_expand_function): Handle thunks.
361         (thunk_adjust): New.
362         (init_lowered_empty_function): New.
363         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
364         Remove.
365         * lto-cgraph.c (lto_output_node): Stream thunk info.
366         (input_node): Likewise.
367         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
368         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
369         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
370         * i386.c (x86_output_mi_thunk): Make output prettier.
371
372 2009-11-28  Richard Guenther  <rguenther@suse.de>
373
374         PR tree-optimization/42183
375         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
376         address taken.  Merge the addressable state of the NRV
377         variable and the result instead of copying it.
378
379 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
380
381         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
382         malloc_fname variable.
383         (check_allocation_function): Remove unused gsi and bb_level_0
384         variables.
385         (transform_access_sites): Remove unused d_type_size and d_type_size_k
386         variables.
387         * omega.c (resurrect_subs): Remove unused n variable.
388         (omega_solve_geq): Remove unused neweqns variable.
389         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
390         * tree-inline.c (declare_return_variable): Remove USE_P argument,
391         return use instead of var.
392         (remap_decl, remap_block): Remove unused fn variable.
393         (expand_call_inline): Remove unused retvar variable, adjust
394         declare_return_variable caller.
395         (optimize_inline_calls): Remove unused prev_fn variable.
396         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
397         variable.
398         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
399         variables.
400         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
401         properly.
402         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
403         variable.
404         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
405         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
406         parameter.  Remove unused par_stmt variable.
407         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
408         (expand_omp_sections): Remove unused l1 variable.
409         (lower_omp_for): Remove unused ilist variable.
410         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
411         Remove unused has_upstream_mem_write_p variable.
412         * recog.c (decode_asm_operands): Remove unused noperands variable.
413         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
414         size2 variable.
415         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
416         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
417         base_nm variable.
418         (gen_conditions_for_pow): Remove unused ec variable.
419         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
420         variable.
421         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
422         fndecl variable.
423         * tree-ssa-sink.c (statement_sink_location): Remove unused code
424         variable.
425         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
426         variables.
427         * tree-complex.c (create_one_component_var): Remove unused inner_type
428         variable.
429         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
430         unnecessarily when GEN_*CALL omits that argument.
431         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
432         (build_def_use): Remove unused icode variable.
433         * ipa-pure-const.c (check_call): Remove unused callee and avail
434         variables.
435         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
436         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
437         variable.
438         (vect_pattern_recog): Remove unused stmt variable.
439         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
440         new_regions variable.
441         * postreload.c (reload_cse_simplify_operands): Remove unused mode
442         variable.
443         * tree-parloops.c (create_call_for_reduction_1): Remove unused
444         addr_type variable.
445         (create_parallel_loop): Remove unused res variable.
446         (gen_parallel_loop): Remove unused nloop variable.
447         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
448         * value-prof.c (gimple_mod_subtract_transform,
449         gimple_stringops_transform): Remove unused value variable.
450         (gimple_stringops_values_to_profile): Remove unused fcode variable.
451         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
452         (vrp_visit_switch_stmt): Remove unused n variable.
453         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
454         variable.
455         (vectorizable_operation): Remove unused shift_p variable.
456         (vectorizable_store): Remove unused first_stmt_vinfo variable.
457         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
458         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
459         variable.
460         (vect_permute_store_chain): Remove unused scalar_dest variable.
461         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
462         variable.
463         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
464         local_info variable.
465         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
466         variable.
467         * optabs.c (expand_binop): Remove unused equiv_value variable.
468         (emit_libcall_block): Remove unused prev variable.
469         (init_optabs): Remove unused int_mode variable.
470         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
471         variable.
472         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
473         (find_func_aliases): Remove unused rhstype variable.
474         (ipa_pta_execute): Remove unused varid variable.
475
476 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
477
478         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
479
480 2009-11-28  David Binderman  <dcb314@hotmail.com>
481
482         * ira-color.c (put_allocno_into_bucket): Remove set but not used
483         local variable hard_regs_num.
484         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
485         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
486         * lower-subreg.c (decompose_multiword_subregs): Remove next.
487
488 2009-11-27  Martin Jambor  <mjambor@suse.cz>
489
490         PR middle-end/42006
491         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
492         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
493         for vector and complex types.
494         (get_adjustment_for_base): Describe return value in the comment.
495
496 2009-11-27  Nick Clifton  <nickc@redhat.com>
497
498         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
499         (COUNT_LEADING_ZEROS_0): Likewise.
500         * config/stormy16/stormy16-lib2.c: Arrange for separate
501         compilation of each function.
502         (__ffshi2): New function.
503         (__stormy16_count_leading_zeros): New function.
504         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
505         compile each function into its own object file.
506         (stormy16-lib2-ashlsi3.c): New stub file.
507         (stormy16-lib2-ashrsi3.c): New stub file.
508         (stormy16-lib2-clzhi2.c): New stub file.
509         (stormy16-lib2-count-leading-zeros.c): New stub file.
510         (stormy16-lib2-ctzhi2.c): New stub file.
511         (stormy16-lib2-divsi3.c): New stub file.
512         (stormy16-lib2-ffshi2.c): New stub file.
513         (stormy16-lib2-lshrsi3.c): New stub file.
514         (stormy16-lib2-modsi3.c): New stub file.
515         (stormy16-lib2-parityhi2.c): New stub file.
516         (stormy16-lib2-popcounthi2.c): New stub file.
517         (stormy16-lib2-udivmodsi4.c): New stub file.
518         (stormy16-lib2-udivsi3.c): New stub file.
519         (stormy16-lib2-umodsi3.c): New stub file.
520
521 2009-11-27  Richard Henderson  <rth@redhat.com>
522
523         * config/i386/sse.md (vec_interleave_highv16qi,
524         vec_interleave_lowv16qi, vec_interleave_highv8hi,
525         vec_interleave_lowv8hi, vec_interleave_highv4si,
526         vec_interleave_lowv4si, vec_interleave_highv2di,
527         vec_interleave_lowv2di, vec_interleave_highv4sf,
528         vec_interleave_lowv4sf, vec_interleave_highv2df,
529         vec_interleave_lowv2df): Remove expanders.
530         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
531         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
532         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
533         Rename to their proper vec_interleave equivalent.  Update all users
534         to the new name.
535         * config/i386/i386.c, config/i386/i386.md: Update all users.
536
537 2009-11-27  Michael Matz  <matz@suse.de>
538
539         PR rtl-optimization/42084
540         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
541         use it to stop walking.
542         (expand_gimple_cond): Adjust call to above.
543
544 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
545
546         PR target/41810
547         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
548         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
549         __extension__ to allow cast from function pointer to object
550         pointer in C++.
551         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
552
553 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
554
555         * config/ia64/itanium1.md: Remove.
556         * config/ia64/ia64.md: Do not include it.
557         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
558         "itanium1", and "merced" from the processor alias table.
559         (clocks, add_cycles): Remove global variables.
560         (ia64_sched_reorder2): Don't set/use them.
561         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
562         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
563
564 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
565
566         * config/s390/s390.c (last_scheduled_insn): New variable.
567         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
568         functions.
569         (s390_sched_reorder, s390_sched_variable_issue): New functions.
570         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
571         defined.
572
573 2009-11-27  Michael Matz  <matz@suse.de>
574
575         PR c++/41906
576         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
577
578 2009-11-27  Richard Guenther  <rguenther@suse.de>
579
580         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
581         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
582         * loop-init.c (pass_rtl_move_loop_invariants): Use
583         TV_LOOP_MOVE_INVARIANTS.
584         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
585         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
586         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
587
588 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
589
590         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
591
592 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
593
594         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
595         unused insn variable.
596         * genemit.c (output_peephole2_scratches): Only declare and initialize
597         _regs_allocated if it will be ever used.
598         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
599         succ_bb variable.
600         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
601         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
602         variable.
603
604         * opts.c (decode_options): If optimize is bigger than 255,
605         set it to 255.
606
607 2009-11-26  Richard Henderson  <rth@redhat.com>
608
609         * config/i386/sse.md (mulv16qi3): Change back from an expander
610         to an insn-and-split.
611         (mulv4si): Mention AVX not XOP for AVX exception.
612         (*sse2_mulv4si3): Likewise.
613         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
614
615 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
616
617         * cfgexpand (n_stack_vars_conflict): New static variable.
618         (triangular_index): Reduce likelyhood of overflow by performing
619         the division before the multiplication.
620         (resize_stack_vars_conflict): Call fatal_error if overflow
621         occurred in triangular_index.  Update n_stack_vars_conflict.
622
623         PR rtl-opt/38582
624         * regrename.c (struct du_chain): Remove member earlyclobber.
625         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
626         all callers changed.
627         (scan_rtx): Remove argument earlyclobber, all callers changed.
628         (hide_operands, restore_operands, record_out_operands): New functions,
629         broken out of build_def_use.
630         (build_def_use): Call them as necessary.
631
632         * regrename.c (struct du_head): New members id, conflicts,
633         hard_conflicts and cannot_rename.
634         (enum scan_actions): Remove terminate_all_read and
635         terminate_overlapping_read; add mark_all_read.
636         (scan_actions_name): Likewise.
637         (du_head_p): New typedef.  Define a vector type for it.
638         (id_to_chain): New static variable.
639         (note_sets, clear_dead_regs): Delete functions.
640         (free_chain_data): New function.
641         (merge_overlapping_regs): Simply walk the conflicts bitmap.
642         Remove argument B, all callers changed.
643         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
644         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
645         Call free_chain_data when done.
646         (do_replace): Remove death notes when the renamed reg is set in the
647         last insn; add them if not.
648         (mark_conflict, note_sets_clobbers): New static function.
649         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
650         static variables.
651         (scan_rtx_reg): Keep track of conflicts between chains, and between
652         chains and hard regs.  Don't terminate chains when we find a read we
653         can't handle, mark it unrenameable instead.  For terminate_write,
654         terminate chains that are written with an exact match or a superset
655         of registers.  Set fail_current_block if multi-word lifetimes are too
656         complex to handle.
657         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
658         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
659         free memory for them when done.
660         Rearrange the steps so that earlyclobbers are noted before reads
661         are processed.  Add new steps to keep track of hard register lifetimes
662         outside insn operands.
663
664 2009-11-26  Richard Guenther  <rguenther@suse.de>
665
666         * tree-ssa-dce.c (nr_walks): New variable.
667         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
668         (perform_tree_ssa_dce): Init nr_walks.
669
670 2009-11-26  Michael Matz  <matz@suse.de>
671
672         PR tree-optimization/41905
673         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
674         below statements that can't fall thru.
675
676 2009-11-26  Michael Matz  <matz@suse.de>
677
678         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
679         expand_builtin_sprintf): Remove.
680         (expand_builtin): Don't call them.
681
682 2009-11-26  Richard Guenther  <rguenther@suse.de>
683
684         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
685
686 2009-11-26  Nick Clifton  <nickc@redhat.com>
687
688         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
689         being used incorrectly.
690         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
691         sibcalls, or sibcalls from interrupt functions.
692         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
693         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
694         for a MEM inside a MEM.
695         (sibcall_value): Likewise.
696         (sibcall_internal): New pattern containing old sibcall pattern.
697         (sibcall_value_internal): Likewise.
698
699 2009-11-25  Richard Henderson  <rth@redhat.com>
700
701         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
702         optional 3rd argument to define the mode.
703         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
704         (V2UDI, V4USI, V8UHI, V16UQI): New.
705         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
706         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
707         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
708         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
709         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
710         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
711         (bdesc_args): Add the builtin definitions to match.
712         (ix86_expand_builtin): Expand them.
713         (ix86_builtin_vectorization_cost): Rename from
714         x86_builtin_vectorization_cost.
715         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
716         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
717         expand_vec_perm_blend, expand_vec_perm_vpermil,
718         expand_vec_perm_pshufb, expand_vec_perm_1,
719         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
720         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
721         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
722         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
723         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
724         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
725         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
726         * sse.md (SSEMODE_EO): New.
727         (vec_extract_even<mode>): Use SSEMODE_EO and
728         ix86_expand_vec_extract_even_odd.
729         (vec_extract_odd<mode>): Likewise.
730         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
731         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
732
733 2009-11-25  Richard Henderson  <rth@redhat.com>
734
735         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
736         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
737         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
738         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
739         the vector constant here...
740         (vect_transform_slp_perm_load): ... do it here instead.  Validate
741         that the permutation vector is implementable by the target.
742
743 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
744
745         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
746         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
747
748         * print-rtl.c (print_rtx): When printing newline, append
749         print_rtx_head and indentation after the newline.
750
751         PR target/42165
752         * config/i386/i386.c (print_operand): For 32-byte memory use
753         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
754         * config/i386/i386.md (crc32modesuffix): Expand to nothing
755         in -masm=intel mode.
756         (sse4_2_crc32di): Print just crc32 instead of crc32q in
757         -masm=intel mode.
758         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
759         memory operand in -masm=intel mode.
760         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
761         *sse2_pinsrw): Likewise.
762         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
763         q suffix in -masm=intel mode.
764
765 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
766
767         PR target/10127
768         PR ada/20548
769         PR middle-end/42004
770         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
771         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
772         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
773         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
774         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
775         above renaming.
776         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
777
778 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
779
780         * config/i386/predicates.md (emms_operation): New predicate.
781         (vzeroupper_operation): Ditto.
782         (vzeroall_operation): Improve pattern recognition.
783         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
784         (avx_vzeroupper): Change insn pattern to expander.
785         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
786         predicate.
787         (*avx_vzeroall): Remove operands 1 and 2.
788         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
789         (mmx_femms): Ditto.
790         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
791         (*mmx_femms): Ditto.
792         * config/i386/i386.c (enum ix86_builtins)
793         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
794         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
795         Remove initailization.
796         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
797
798 2009-11-25  Paul Brook  <paul@codesourcery.com>
799
800         * config/arm/arm.md (consttable_4): Handle (high ...).
801
802 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
803             Richard Earnshaw  <rearnsha@arm.com>
804
805         * arm.h (enum vfp_reg_type): Add VFP_NONE.
806         * arm.c (all_fpus): Use it for floating point units that aren't based
807         on the VFP architecture.
808         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
809         enum machine_mode.
810
811 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
812
813         * alias.c: Remove trailing white spaces.
814         * alloc-pool.c: Likewise.
815         * alloc-pool.h: Likewise.
816         * attribs.c: Likewise.
817         * auto-inc-dec.c: Likewise.
818         * basic-block.h: Likewise.
819         * bb-reorder.c: Likewise.
820         * bt-load.c: Likewise.
821         * builtins.c: Likewise.
822         * builtins.def: Likewise.
823         * c-common.c: Likewise.
824         * c-common.h: Likewise.
825         * c-cppbuiltin.c: Likewise.
826         * c-decl.c: Likewise.
827         * c-format.c: Likewise.
828         * c-lex.c: Likewise.
829         * c-omp.c: Likewise.
830         * c-opts.c: Likewise.
831         * c-parser.c: Likewise.
832         * c-pretty-print.c: Likewise.
833         * c-tree.h: Likewise.
834         * c-typeck.c: Likewise.
835         * caller-save.c: Likewise.
836         * calls.c: Likewise.
837         * cfg.c: Likewise.
838         * cfganal.c: Likewise.
839         * cfgexpand.c: Likewise.
840         * cfghooks.c: Likewise.
841         * cfghooks.h: Likewise.
842         * cfglayout.c: Likewise.
843         * cfgloop.c: Likewise.
844         * cfgloop.h: Likewise.
845         * cfgloopmanip.c: Likewise.
846         * cfgrtl.c: Likewise.
847         * cgraph.c: Likewise.
848         * cgraph.h: Likewise.
849         * cgraphbuild.c: Likewise.
850         * cgraphunit.c: Likewise.
851         * cif-code.def: Likewise.
852         * collect2.c: Likewise.
853         * combine.c: Likewise.
854         * convert.c: Likewise.
855         * coverage.c: Likewise.
856         * crtstuff.c: Likewise.
857         * cse.c: Likewise.
858         * cselib.c: Likewise.
859         * dbgcnt.c: Likewise.
860         * dbgcnt.def: Likewise.
861         * dbgcnt.h: Likewise.
862         * dbxout.c: Likewise.
863         * dce.c: Likewise.
864         * ddg.c: Likewise.
865         * ddg.h: Likewise.
866         * defaults.h: Likewise.
867         * df-byte-scan.c: Likewise.
868         * df-core.c: Likewise.
869         * df-problems.c: Likewise.
870         * df-scan.c: Likewise.
871         * df.h: Likewise.
872         * dfp.c: Likewise.
873         * diagnostic.c: Likewise.
874         * diagnostic.h: Likewise.
875         * dominance.c: Likewise.
876         * domwalk.c: Likewise.
877         * double-int.c: Likewise.
878         * double-int.h: Likewise.
879         * dse.c: Likewise.
880         * dwarf2asm.c: Likewise.
881         * dwarf2asm.h: Likewise.
882         * dwarf2out.c: Likewise.
883         * ebitmap.c: Likewise.
884         * ebitmap.h: Likewise.
885         * emit-rtl.c: Likewise.
886         * et-forest.c: Likewise.
887         * except.c: Likewise.
888         * except.h: Likewise.
889         * expmed.c: Likewise.
890         * expr.c: Likewise.
891         * expr.h: Likewise.
892         * final.c: Likewise.
893         * flags.h: Likewise.
894         * fold-const.c: Likewise.
895         * function.c: Likewise.
896         * function.h: Likewise.
897         * fwprop.c: Likewise.
898         * gcc.c: Likewise.
899         * gcov-dump.c: Likewise.
900         * gcov-io.c: Likewise.
901         * gcov-io.h: Likewise.
902         * gcov.c: Likewise.
903         * gcse.c: Likewise.
904         * genattr.c: Likewise.
905         * genattrtab.c: Likewise.
906         * genautomata.c: Likewise.
907         * genchecksum.c: Likewise.
908         * genconfig.c: Likewise.
909         * genflags.c: Likewise.
910         * gengtype-parse.c: Likewise.
911         * gengtype.c: Likewise.
912         * gengtype.h: Likewise.
913         * genmddeps.c: Likewise.
914         * genmodes.c: Likewise.
915         * genopinit.c: Likewise.
916         * genpreds.c: Likewise.
917         * gensupport.c: Likewise.
918         * ggc-common.c: Likewise.
919         * ggc-page.c: Likewise.
920         * ggc-zone.c: Likewise.
921         * ggc.h: Likewise.
922         * gimple-iterator.c: Likewise.
923         * gimple-low.c: Likewise.
924         * gimple-pretty-print.c: Likewise.
925         * gimple.c: Likewise.
926         * gimple.def: Likewise.
927         * gimple.h: Likewise.
928         * gimplify.c: Likewise.
929         * graphds.c: Likewise.
930         * graphite-clast-to-gimple.c: Likewise.
931         * gthr-nks.h: Likewise.
932         * gthr-posix.c: Likewise.
933         * gthr-posix.h: Likewise.
934         * gthr-posix95.h: Likewise.
935         * gthr-single.h: Likewise.
936         * gthr-tpf.h: Likewise.
937         * gthr-vxworks.h: Likewise.
938         * gthr.h: Likewise.
939         * haifa-sched.c: Likewise.
940         * hard-reg-set.h: Likewise.
941         * hooks.c: Likewise.
942         * hooks.h: Likewise.
943         * hosthooks.h: Likewise.
944         * hwint.h: Likewise.
945         * ifcvt.c: Likewise.
946         * incpath.c: Likewise.
947         * init-regs.c: Likewise.
948         * integrate.c: Likewise.
949         * ipa-cp.c: Likewise.
950         * ipa-inline.c: Likewise.
951         * ipa-prop.c: Likewise.
952         * ipa-pure-const.c: Likewise.
953         * ipa-reference.c: Likewise.
954         * ipa-struct-reorg.c: Likewise.
955         * ipa-struct-reorg.h: Likewise.
956         * ipa-type-escape.c: Likewise.
957         * ipa-type-escape.h: Likewise.
958         * ipa-utils.c: Likewise.
959         * ipa-utils.h: Likewise.
960         * ipa.c: Likewise.
961         * ira-build.c: Likewise.
962         * ira-color.c: Likewise.
963         * ira-conflicts.c: Likewise.
964         * ira-costs.c: Likewise.
965         * ira-emit.c: Likewise.
966         * ira-int.h: Likewise.
967         * ira-lives.c: Likewise.
968         * ira.c: Likewise.
969         * jump.c: Likewise.
970         * lambda-code.c: Likewise.
971         * lambda-mat.c: Likewise.
972         * lambda-trans.c: Likewise.
973         * lambda.h: Likewise.
974         * langhooks.c: Likewise.
975         * lcm.c: Likewise.
976         * libgcov.c: Likewise.
977         * lists.c: Likewise.
978         * loop-doloop.c: Likewise.
979         * loop-init.c: Likewise.
980         * loop-invariant.c: Likewise.
981         * loop-iv.c: Likewise.
982         * loop-unroll.c: Likewise.
983         * lower-subreg.c: Likewise.
984         * lto-cgraph.c: Likewise.
985         * lto-compress.c: Likewise.
986         * lto-opts.c: Likewise.
987         * lto-section-in.c: Likewise.
988         * lto-section-out.c: Likewise.
989         * lto-streamer-in.c: Likewise.
990         * lto-streamer-out.c: Likewise.
991         * lto-streamer.c: Likewise.
992         * lto-streamer.h: Likewise.
993         * lto-symtab.c: Likewise.
994         * lto-wpa-fixup.c: Likewise.
995         * matrix-reorg.c: Likewise.
996         * mcf.c: Likewise.
997         * mode-switching.c: Likewise.
998         * modulo-sched.c: Likewise.
999         * omega.c: Likewise.
1000         * omega.h: Likewise.
1001         * omp-low.c: Likewise.
1002         * optabs.c: Likewise.
1003         * optabs.h: Likewise.
1004         * opts-common.c: Likewise.
1005         * opts.c: Likewise.
1006         * params.def: Likewise.
1007         * params.h: Likewise.
1008         * passes.c: Likewise.
1009         * plugin.c: Likewise.
1010         * postreload-gcse.c: Likewise.
1011         * postreload.c: Likewise.
1012         * predict.c: Likewise.
1013         * predict.def: Likewise.
1014         * pretty-print.c: Likewise.
1015         * pretty-print.h: Likewise.
1016         * print-rtl.c: Likewise.
1017         * print-tree.c: Likewise.
1018         * profile.c: Likewise.
1019         * read-rtl.c: Likewise.
1020         * real.c: Likewise.
1021         * recog.c: Likewise.
1022         * reg-stack.c: Likewise.
1023         * regcprop.c: Likewise.
1024         * reginfo.c: Likewise.
1025         * regmove.c: Likewise.
1026         * regrename.c: Likewise.
1027         * regs.h: Likewise.
1028         * regstat.c: Likewise.
1029         * reload.c: Likewise.
1030         * reload1.c: Likewise.
1031         * resource.c: Likewise.
1032         * rtl.c: Likewise.
1033         * rtl.def: Likewise.
1034         * rtl.h: Likewise.
1035         * rtlanal.c: Likewise.
1036         * sbitmap.c: Likewise.
1037         * sched-deps.c: Likewise.
1038         * sched-ebb.c: Likewise.
1039         * sched-int.h: Likewise.
1040         * sched-rgn.c: Likewise.
1041         * sched-vis.c: Likewise.
1042         * sdbout.c: Likewise.
1043         * sel-sched-dump.c: Likewise.
1044         * sel-sched-dump.h: Likewise.
1045         * sel-sched-ir.c: Likewise.
1046         * sel-sched-ir.h: Likewise.
1047         * sel-sched.c: Likewise.
1048         * sel-sched.h: Likewise.
1049         * sese.c: Likewise.
1050         * sese.h: Likewise.
1051         * simplify-rtx.c: Likewise.
1052         * stack-ptr-mod.c: Likewise.
1053         * stmt.c: Likewise.
1054         * stor-layout.c: Likewise.
1055         * store-motion.c: Likewise.
1056         * stringpool.c: Likewise.
1057         * stub-objc.c: Likewise.
1058         * sync-builtins.def: Likewise.
1059         * target-def.h: Likewise.
1060         * target.h: Likewise.
1061         * targhooks.c: Likewise.
1062         * targhooks.h: Likewise.
1063         * timevar.c: Likewise.
1064         * tlink.c: Likewise.
1065         * toplev.c: Likewise.
1066         * toplev.h: Likewise.
1067         * tracer.c: Likewise.
1068         * tree-affine.c: Likewise.
1069         * tree-affine.h: Likewise.
1070         * tree-browser.def: Likewise.
1071         * tree-call-cdce.c: Likewise.
1072         * tree-cfg.c: Likewise.
1073         * tree-cfgcleanup.c: Likewise.
1074         * tree-chrec.c: Likewise.
1075         * tree-chrec.h: Likewise.
1076         * tree-complex.c: Likewise.
1077         * tree-data-ref.c: Likewise.
1078         * tree-data-ref.h: Likewise.
1079         * tree-dfa.c: Likewise.
1080         * tree-dump.c: Likewise.
1081         * tree-dump.h: Likewise.
1082         * tree-eh.c: Likewise.
1083         * tree-flow-inline.h: Likewise.
1084         * tree-flow.h: Likewise.
1085         * tree-if-conv.c: Likewise.
1086         * tree-inline.c: Likewise.
1087         * tree-into-ssa.c: Likewise.
1088         * tree-loop-distribution.c: Likewise.
1089         * tree-loop-linear.c: Likewise.
1090         * tree-mudflap.c: Likewise.
1091         * tree-nested.c: Likewise.
1092         * tree-nomudflap.c: Likewise.
1093         * tree-nrv.c: Likewise.
1094         * tree-object-size.c: Likewise.
1095         * tree-optimize.c: Likewise.
1096         * tree-outof-ssa.c: Likewise.
1097         * tree-parloops.c: Likewise.
1098         * tree-pass.h: Likewise.
1099         * tree-phinodes.c: Likewise.
1100         * tree-predcom.c: Likewise.
1101         * tree-pretty-print.c: Likewise.
1102         * tree-profile.c: Likewise.
1103         * tree-scalar-evolution.c: Likewise.
1104         * tree-ssa-address.c: Likewise.
1105         * tree-ssa-alias.c: Likewise.
1106         * tree-ssa-ccp.c: Likewise.
1107         * tree-ssa-coalesce.c: Likewise.
1108         * tree-ssa-copy.c: Likewise.
1109         * tree-ssa-copyrename.c: Likewise.
1110         * tree-ssa-dce.c: Likewise.
1111         * tree-ssa-dom.c: Likewise.
1112         * tree-ssa-dse.c: Likewise.
1113         * tree-ssa-forwprop.c: Likewise.
1114         * tree-ssa-ifcombine.c: Likewise.
1115         * tree-ssa-live.c: Likewise.
1116         * tree-ssa-live.h: Likewise.
1117         * tree-ssa-loop-ch.c: Likewise.
1118         * tree-ssa-loop-im.c: Likewise.
1119         * tree-ssa-loop-ivcanon.c: Likewise.
1120         * tree-ssa-loop-ivopts.c: Likewise.
1121         * tree-ssa-loop-manip.c: Likewise.
1122         * tree-ssa-loop-niter.c: Likewise.
1123         * tree-ssa-loop-prefetch.c: Likewise.
1124         * tree-ssa-loop-unswitch.c: Likewise.
1125         * tree-ssa-loop.c: Likewise.
1126         * tree-ssa-math-opts.c: Likewise.
1127         * tree-ssa-operands.c: Likewise.
1128         * tree-ssa-operands.h: Likewise.
1129         * tree-ssa-phiopt.c: Likewise.
1130         * tree-ssa-phiprop.c: Likewise.
1131         * tree-ssa-pre.c: Likewise.
1132         * tree-ssa-propagate.c: Likewise.
1133         * tree-ssa-reassoc.c: Likewise.
1134         * tree-ssa-sccvn.c: Likewise.
1135         * tree-ssa-sink.c: Likewise.
1136         * tree-ssa-structalias.c: Likewise.
1137         * tree-ssa-ter.c: Likewise.
1138         * tree-ssa-threadedge.c: Likewise.
1139         * tree-ssa-threadupdate.c: Likewise.
1140         * tree-ssa-uncprop.c: Likewise.
1141         * tree-ssa.c: Likewise.
1142         * tree-ssanames.c: Likewise.
1143         * tree-switch-conversion.c: Likewise.
1144         * tree-tailcall.c: Likewise.
1145         * tree-vect-data-refs.c: Likewise.
1146         * tree-vect-generic.c: Likewise.
1147         * tree-vect-loop-manip.c: Likewise.
1148         * tree-vect-loop.c: Likewise.
1149         * tree-vect-patterns.c: Likewise.
1150         * tree-vect-slp.c: Likewise.
1151         * tree-vect-stmts.c: Likewise.
1152         * tree-vectorizer.c: Likewise.
1153         * tree-vectorizer.h: Likewise.
1154         * tree-vrp.c: Likewise.
1155         * tree.c: Likewise.
1156         * tree.def: Likewise.
1157         * tree.h: Likewise.
1158         * treestruct.def: Likewise.
1159         * unwind-compat.c: Likewise.
1160         * unwind-dw2-fde-glibc.c: Likewise.
1161         * unwind-dw2.c: Likewise.
1162         * value-prof.c: Likewise.
1163         * value-prof.h: Likewise.
1164         * var-tracking.c: Likewise.
1165         * varasm.c: Likewise.
1166         * varpool.c: Likewise.
1167         * vec.c: Likewise.
1168         * vec.h: Likewise.
1169         * vmsdbgout.c: Likewise.
1170         * web.c: Likewise.
1171         * xcoffout.c: Likewise.
1172
1173 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1174
1175         * pa.c (output_call): Only use sr4 for long interspace calls if
1176         call binds local and generating non PIC code.
1177         (attr_length_call): Adjust length calculation for above.
1178
1179 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1180
1181         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
1182         (add<mode>3_carry): Change operand order of plus RTX.
1183         (*add<mode>3_carry): Ditto.
1184         (*addsi3_carry_zext): Ditto.
1185         (*add<dwi>3_doubleword): Update for changed operand order.
1186         (*negti2_1 splitter): Ditto.
1187         (*negdi2_1 splitter): Ditto.
1188         (<plusminus_insn><mode>3_carry): Macroize expander from
1189         {add,sub}<mode>3_carry patterns using plusminus code iterator.
1190         (*<plusminus_insn><mode>3_carry): Macroize insn from
1191         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
1192         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
1193         patterns using SDWIM mode iterator.
1194         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
1195         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
1196         using DWIH mode iterator.
1197         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
1198         using SWI mode iterator.
1199         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
1200         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
1201         patterns using SWIM mode iterator.
1202         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
1203         patterns using SWI248 mode iterator.
1204         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
1205         patterns using SWI mode iterator.
1206         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
1207         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
1208
1209 2009-11-24  Michael Matz  <matz@suse.de>
1210
1211         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
1212
1213 2009-11-24  David Binderman  <dcb314@hotmail.com>
1214
1215         * expr.c (store_field): Remove set but not used local variable
1216         width_mask.
1217         (expand_expr_real_2): Remove treeop2.
1218         * gcse.c (update_ld_motion_stores): Remove new_rtx.
1219         * haifa-sched.c (max_issue): Remove points.
1220         (sched_create_recovery_edges): Remove e.
1221         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
1222
1223 2009-11-24  Nick Clifton  <nickc@redhat.com>
1224
1225         * config/v850/v850.c (function_arg): Fix handling of zero-length
1226         function arguments.
1227
1228 2009-11-24  Michael Matz  <matz@suse.de>
1229
1230         * tree.h (union tree_ann_d): Don't declare.
1231         (tree_base): Remove ann field.
1232         (struct var_ann_d): Declare forward.
1233         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
1234         (DECL_VAR_ANN_PTR): New macro.
1235         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
1236         accept only VAR, PARM or RESULT decls.
1237         (create_tree_common_ann): Remove.
1238         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
1239         * tree-eh.c (lookup_expr_eh_lp): Remove.
1240         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
1241         DECL_VAR_ANN_PTR.
1242         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
1243         * tree-flow.h (enum tree_ann_type): Remove.
1244         (struct tree_ann_common_d): Remove.
1245         (struct var_ann_d): Remove common field.
1246         (union tree_ann_d): Remove.
1247         (tree_ann_t, tree_ann_common_t): Remove typedefs.
1248         (tree_common_ann, get_tree_common_ann, ann_type,
1249         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
1250         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
1251         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
1252         * builtins.c (expand_builtin_memcpy): Use
1253         currently_expanding_gimple_stmt instead of tree annotation.
1254         (expand_builtin_memset_args): Ditto.
1255         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
1256         (expand_call_stmt): Don't set tree annotation.
1257         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
1258         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
1259         * gimple.h (currently_expanding_gimple_stmt): Declare.
1260
1261 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
1262
1263         * dwarf2out.c (add_location_or_const_value_attribute): Remove
1264         useless NOTE_VAR_LOCATION_STATUS call.
1265         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
1266
1267 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
1268
1269         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
1270         being called recursively.
1271
1272 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
1273
1274         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
1275         $(MD5_H) params.def params.h prefix.h tree-inline.h.
1276
1277 2009-11-24  Paul Brook  <paul@codesourcery.com>
1278
1279         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
1280         typo.
1281
1282 2009-11-24  Julian Brown  <julian@codesourcery.com>
1283             Paul Brook  <paul@codesourcery.com>
1284
1285         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
1286         (arm_dwarf_register_span): New function.
1287         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
1288
1289 2009-11-24  David Binderman  <dcb314@hotmail.com>
1290
1291         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
1292         local variable bb_note.
1293         * dominance.c (get_dominated_by): Likewise local var n.
1294         (output_file_names): Likewise local var idx.
1295         (add_location_or_const_value_attribute): Likewise local var status.
1296         * dwarf2out.c (gen_variable_die): Likewise local var field.
1297         * emit-rtl.c (no_line_numbers): Remove.
1298         (init_emit_once): Remove line_numbers parameter.
1299         * rtl.h (init_emit_once): Adjust prototype.
1300         * toplev.c (backend_init): Adjust init_emit_once call.
1301
1302 2009-11-24  Richard Guenther  <rguenther@suse.de>
1303
1304         PR tree-optimization/42142
1305         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
1306         Handle iv-dependent (non-)kills properly.
1307         (mark_aliased_reaching_defs_necessary): Pass the basic-block
1308         of the reference statement to mark_aliased_reaching_defs_necessary_1.
1309
1310 2009-11-24  Martin Jambor  <mjambor@suse.cz>
1311
1312         PR tree-optimization/42154
1313         * tree-sra.c (struct access): Added comments.
1314         (sra_modify_expr): Build references to the old aggregate with
1315         build_ref_for_offset instead of reusing access->expr.
1316         (load_assign_lhs_subreplacements): Likewise.
1317
1318 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
1319
1320         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
1321         to expander.
1322         (sub<mode>3_carry): Ditto.
1323         (x86_mov<mode>cc_0_m1): Ditto.
1324         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
1325         for ix86_carry_flag_operator operator predicate.
1326         (*sub<mode>3_carry): Ditto.
1327         (*x86_mov<mode>cc_0_m1): Ditto.
1328         (*addsi3_carry_zext): Use VOIDmode match_operator for
1329         ix86_carry_flag_operator operator predicate.
1330         (*subsi3_carry_zext): Ditto.
1331         (*x86_mov<mode>cc_0_m1_s): Ditto.
1332         (*x86_mov<mode>cc_0_m1_neg): Ditto.
1333         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
1334         check operator sub-expressions for FLAGS_REG and const0_rtx.
1335         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
1336         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
1337         (ix86_expand_int_addcc): Update calls to
1338         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
1339         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
1340         Do not set mode of compare operation.
1341
1342 2009-11-23  Jan Hubicka  <jh@suse.cz>
1343
1344         PR middle-end/42151
1345         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
1346         twice.
1347
1348 2009-11-23  Jan Hubicka  <jh@suse.cz>
1349
1350         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
1351         wrong profile updates.
1352         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
1353         having largest frequency.
1354         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
1355         used uninitalized warning.
1356         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
1357         frequencies.
1358
1359 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
1360
1361         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
1362         of gen_rtx_REG to generate operand 5.
1363         (*cmp_ssub_sidi): Ditto.
1364
1365 2009-11-23  Richard Henderson  <rth@redhat.com>
1366
1367         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
1368         mismatch.
1369
1370 2009-11-23  Paul Brook  <paul@codesourcery.com>
1371
1372         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
1373         case for noreturn functions.
1374         (arm_compute_save_reg_mask): Remove special noreturn handling.
1375
1376 2009-11-23  Richard Guenther  <rguenther@suse.de>
1377
1378         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
1379         size for DECL bases.
1380
1381 2009-11-22  Richard Henderson  <rth@redhat.com>
1382
1383         * i386.c (avx_vpermilp_parallel): New function.
1384         * i386-protos.h: Declare it.
1385         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
1386         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
1387         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
1388         (ssescalarnum, ssedoublesizemode): Add AVX modes.
1389         (vpermilbits): Remove.
1390         (avx_vpermil<mode>): Change insns to expanders.
1391         (*avx_vpermil<mode>): New.  Use vec_select.
1392
1393 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
1394
1395         * opts.c (decode_options): Don't enable flag_schedule_insns
1396         when optimizing for size.
1397         * doc/invoke.texi: Document change.
1398
1399 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
1400
1401         PR target/42113
1402         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
1403         of scratch register to SImode.
1404         (*cmp_sadd_sidi): Ditto.
1405         (*cmp_ssub_si): Ditto.
1406         (*cmp_ssub_sidi): Ditto.
1407
1408 2009-11-21  Ian Lance Taylor  <iant@google.com>
1409
1410         * Makefile.in (HOST_LIBS): Move higher in file.
1411         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
1412         is not empty, set to $(CC) and $(CFLAGS).
1413
1414 2009-11-22  Martin Jambor  <mjambor@suse.cz>
1415
1416         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
1417         V_C_E of an SSA_NAME or an invariant if lvalue is required.
1418         (verify_gimple_call): Verify LHS also with with
1419         verify_types_in_gimple_reference.
1420
1421 2009-11-21  Martin Jambor  <mjambor@suse.cz>
1422
1423         PR middle-end/42025
1424         * tree-sra.c (access_precludes_ipa_sra_p): New function.
1425         (splice_param_accesses): Check all accesses by calling
1426         access_precludes_ipa_sra_p.
1427         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
1428         not convert types if it is true.
1429         (sra_ipa_modify_assign): Convert types in case of mismatch.
1430
1431 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
1432
1433         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
1434         for operand 1.
1435
1436 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
1437
1438         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
1439         (mips_mulsidi3_gen_fn): Declare new function.
1440         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
1441         * config/mips/mips.md (<u>mulsidi3): Change condition to use
1442         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
1443         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
1444         (mulsidi3_64bit_dmul): New define_insn.
1445
1446 2009-11-21  Ben Elliston  <bje@au.ibm.com>
1447
1448         * gengtype-lex.l: Enable noinput flex option.
1449         (YY_NO_INPUT): Remove define.
1450
1451 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1452
1453         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
1454         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
1455         (insert_debug_temps_for_defs): Handle PHI nodes.
1456         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
1457         SSA names.
1458
1459 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1460
1461         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
1462         after remove_phi_node.
1463
1464 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1465
1466         PR tree-optimization/42078
1467         * gimple.h (gimple_replace_lhs): New declaration.
1468         * gimple.c (gimple_replace_lhs): New function.
1469         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
1470         modifying the call.
1471
1472 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
1473
1474         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
1475         (xop_mulv2div2di3_low): Same.
1476         (*xop_pmacsdqh_mem): Same.
1477
1478 2009-11-20  Richard Henderson  <rth@redhat.com>
1479
1480         * config/i386/i386-builtin-types.awk: New file.
1481         * config/i386/i386-builtin-types.def: New file.
1482         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
1483         * config/i386/i386.c: Include it.
1484         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
1485         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
1486         (struct builtin_isa): Remove GTY marker.  Replace tree type with
1487         ix86_builtin_func_type; add set_and_not_built_p.
1488         (def_builtin): Change type parameter to tcode; use
1489         ix86_get_builtin_func_type; update all callers.  Accept zero mask
1490         to mean the builtin is unconditionally available.
1491         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
1492         being set to NULL.
1493         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
1494         Update some users to rationalized enumeration codes from new include.
1495         (enum multi_arg_type): Remove.  Replace all enumeration values
1496         with defines to new ix86_builtin_func_type.
1497         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
1498         all type resolution to def_builtin.
1499         (ix86_init_builtin_types): Split out from ...
1500         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
1501
1502 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
1503
1504         PR target/41787
1505         * config/rs6000/rs6000.c (struct machine_function): Revert
1506         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
1507         (rs6000_expand_to_rtl_hook): Ditto.
1508         (rs6000_check_vector_mode): Ditto.
1509         (compute_vrsave_mask): Ditto.
1510
1511 2009-11-20  Paul Brook  <paul@codesourcery.com>
1512
1513         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
1514         * config/arm/arm-cores.def: Add cortex-a5.
1515         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
1516         * config/arm/arm-tune.md: Regenerate.
1517
1518 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
1519
1520         PR middle-end/39960
1521         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
1522         (ref_pos): New field in structure.
1523         (insert_new_var_in_stmt): New function.
1524
1525
1526 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1527
1528         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
1529         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
1530         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
1531         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
1532         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1533         INT_LEAST64_TYPE): Define.
1534         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
1535         UINT_LEAST64_TYPE): Define.
1536         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
1537         INT_FAST64_TYPE): Define.
1538         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1539         UINT_FAST64_TYPE): Define.
1540         (INTPTR_TYPE, UINTPTR_TYPE): Define.
1541
1542 2009-11-20  Julian Brown  <julian@codesourcery.com>
1543
1544         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
1545         specially for Thumb-1.
1546         (ASM_OUTPUT_REG_POP): Likewise.
1547
1548 2009-11-19  Jason Merrill  <jason@redhat.com>
1549
1550         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
1551
1552 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1553             Rafael Avila de Espindola  <espindola@google.com>
1554
1555         * doc/plugins.texi (Plugin initialization): Added advices for
1556         retrieving the version of GCC at plugin compilation and loading times.
1557
1558 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1559
1560         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
1561         (dump_active_plugins): output to file everything. Use
1562         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1563
1564 2009-11-19  Richard Guenther  <rguenther@suse.de>
1565
1566         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1567         around truth-valued expressions.
1568         * tree.c (free_lang_data): Untangle check for LTO frontend.
1569
1570 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1571
1572         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1573         of cgraph_node_for_decl.
1574         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1575         * cgraph.c (cgraph_node_for_decl): Remove.
1576         (cgraph_get_node): Just return NULL if !cgraph_hash.
1577
1578 2009-11-19  Paul Brook  <paul@codesourcery.com>
1579
1580         * config.gcc: Add new ARM --with-fpu options.
1581         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1582         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1583
1584 2009-11-18  Richard Guenther  <rguenther@suse.de>
1585
1586         * gimple.h (union gimple_statement_d): Add gsmembase member.
1587         (gimple_vuse_op): Use gsmembase for access.
1588         (gimple_vdef_op): Likewise.
1589         (gimple_vuse): Likewise.
1590         (gimple_vdef): Likewise.
1591         (gimple_vuse_ptr): Likewise.
1592         (gimple_vdef_ptr): Likewise.
1593         (gimple_set_vuse): Likewise.
1594         (gimple_set_vdef): Likewise.
1595         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1596
1597 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1598
1599         * doc/arm-neon-intrinsics.texi: Regenerated.
1600
1601 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1602
1603         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1604
1605 2009-11-18  Paul Brook  <paul@codesourcery.com>
1606             Daniel Jacobowitz  <dan@codesourcery.com>
1607
1608         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1609         (arm_arch7em): New variable.
1610         (all_architectures): Add armv7e-m.
1611         (arm_override_options): Set arm_arch7em.
1612         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
1613         Include arm_arch7em.
1614         (arm_arch7em): Declare.
1615
1616 2009-11-18  Richard Guenther  <rguenther@suse.de>
1617
1618         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
1619         a valid field decl if checking is enabled.
1620
1621 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1622
1623         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
1624         (lto_ipa_fixup_call_notes): Declare.
1625         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
1626         (update_call_notes_after_inlining): Copy call stmt uid to the new
1627         edge.
1628         (ipa_write_param_call_note): New function.
1629         (ipa_read_param_call_note): New function
1630         (ipa_write_node_info): Write also param call notes.  Removed a bogus
1631         comment, reformatted to fit 80 columns.
1632         (ipa_read_node_info): Read also param call notes. Removed a bogus
1633         comment.  Remove ipa_edge_args_vector growth.
1634         (lto_ipa_fixup_call_notes): New function.
1635         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
1636         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
1637         inlining regardless of flag_wpa.
1638         (cgraph_decide_inlining_of_small_functions): Likewise.
1639         (cgraph_decide_inlining): Likewise.
1640         (inline_read_summary): Likewise.
1641
1642 2009-11-18  Jan Hubicka  <jh@suse.cz>
1643
1644         * predict.c (compute_function_frequency): Export.
1645         * predict.h (compute_function_frequency): Declare.
1646         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
1647
1648 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1649
1650         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
1651         on all nodes we write summaries for.
1652
1653 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
1654
1655         PR middle-end/22201
1656         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
1657         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
1658         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
1659         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
1660         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
1661         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
1662         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
1663         description string.
1664
1665 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
1666
1667         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
1668         unnecessarily.
1669         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
1670
1671         PR c++/3187
1672         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
1673         fields.
1674         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1675         prototypes.
1676         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
1677         cgraph_materialize_all_clones): Handle same_body aliases.
1678         * cgraph.c (cgraph_allocate_node): New function.
1679         (cgraph_create_node): Use it.
1680         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
1681         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
1682         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1683         functions.
1684         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
1685         (input_node): Stream in same_body aliases.
1686         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
1687         for same_body aliases.
1688         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
1689
1690 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1691
1692         PR other/39888
1693         * config/darwin.h: Use the extension stub libraries to access
1694         current libgcc_s features.
1695
1696 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1697
1698         PR debug/41926
1699         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
1700         (vect_transform_loop): Call it.
1701
1702 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1703
1704         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
1705         released SSA names.
1706
1707 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1708
1709         PR debug/41888
1710         PR debug/41886
1711         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
1712         are ok.
1713         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
1714         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
1715         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
1716         (sese_bad_liveouts_use): New.
1717         (sese_reset_debug_liveouts_bb): New.
1718         (sese_build_liveouts): Use it.
1719         (rename_variables_in_stmt): Reset debug stmts rather than creating
1720         new vars for them.
1721         (expand_scalar_variable_stmt): Likewise.
1722
1723 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1724
1725         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
1726         (df_ref_remove): Likewise.
1727
1728 2009-11-17  Jan Hubicka  <jh@suse.cz>
1729
1730         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
1731         info.
1732
1733 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
1734
1735         * toplev.c (process_options): Remove dead code.
1736         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
1737
1738 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
1739
1740         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
1741         nodes.
1742
1743 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1744
1745         PR tree-optimization/41857
1746         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
1747         TYPE's address space instead of pointer to TYPE.
1748
1749 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1750
1751         * reload.c (find_reloads_address): Fix typo.
1752
1753 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1754
1755         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
1756         registers in leaf functions if possible.
1757
1758 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1759
1760         * config/m68k/m68k-devices.def: Add MCF5441x family.
1761
1762 2009-11-17  Jan Hubicka  <jh@suse.cz>
1763
1764         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
1765         removed node.
1766         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
1767
1768 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
1769
1770         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
1771         nest ior expressions.
1772         (x86_64_szext_nonmemory_operand): Ditto.
1773         (call_insn_operand): Ditto.
1774
1775 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1776
1777         * stmt.c (expand_asm_stmt): Get locus from stmt.
1778
1779 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1780
1781         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
1782         Create the decl label for the new dest block on demand.  Require
1783         a fallthrough edge if no asm labels were redirected.
1784
1785 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
1786
1787         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
1788         operand 1 predicate.
1789         (cstoresi4): Ditto for operand 2.
1790         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
1791         patterns using SDWIM mode iterator.
1792         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
1793         using SWIM mode iterator.
1794         (cmpdi_1): Rename from cmpdi_1_rex64.
1795         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
1796         SWI48 mode iterator.
1797         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
1798         using SWI mode iterator.
1799         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
1800         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
1801         (*cmpqi_ext_3_insn): Make private.
1802         (*cmpqi_ext_3_insn_rex64): Make private.
1803         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
1804         * config/i386/predicates.md (cmpsi_operand): Remove.
1805
1806 2009-11-16  Paul Brook  <paul@codesourcery.com>
1807
1808         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
1809         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
1810
1811 2009-11-14  Jan Hubicka  <jh@suse.cz>
1812
1813         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
1814         ENTRY_BLOCK_PTR.
1815         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
1816         zero out all callees.
1817         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
1818         frequency and count match.
1819         * ipa-inline.c (update_noncloned_frequencies): New function.
1820         (cgraph_clone_inlined_nodes): Use it.
1821         * tree-inline.c (copy_bb): Fix frequency scaling; output
1822         diagnostic on frequency mismatches to dump file.
1823         (initialize_cfun): Do not scale frequency; fix count scaling;
1824         initialize entry and exit block frequencies; copy profile info.
1825         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
1826         (copy_body): Use frequency_scale as argument.
1827         (expand_call_inline): Compute frequency scale and output diagnostic
1828         to dump file.
1829         (delete_unreachable_blocks_update_callgrah): Remove checking that
1830         has to be done after edge redirection.
1831         (tree_function_versioning): Update initialize_cfun and copy_body call.
1832
1833 2009-11-14  Jan Hubicka  <jh@suse.cz>
1834
1835         * cgraph.c (cgraph_release_function_body): Update use of
1836         ipa_transforms_to_apply.
1837         (cgraph_remove_node): Remove ipa_transforms_to_apply.
1838         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
1839         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
1840         copied body.
1841         (cgraph_materialize_clone): Remove original if dead.
1842         * lto-streamer-in.c (lto_read_body): Remove FIXME and
1843         ipa_transforms_to_apply hack.
1844         * function.h (struct function): Add ipa_transforms_to_apply.
1845         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
1846         * tree-inline.c (copy_bb): Update sanity check.
1847         (initialize_cfun): Do not copy ipa_transforms_to_apply.
1848         (expand_call_inline): remove dead clone originals.
1849         (tree_function_versioning): Merge transformation queues.
1850         * passes.c (add_ipa_transform_pass): Remove.
1851         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
1852         tracking.
1853         (execute_all_ipa_transforms): Update.
1854         (execute_one_pass): Update.
1855
1856 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1857
1858         PR target/21078, 21080
1859         * config/avr/avr.c (avr_return_addr_rtx): New function for
1860         builtin_return_address.
1861         (expand_prologue): Calculate stack usage.
1862         (avr_asm_function_end_prologue): Output stack size and offset label.
1863         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
1864         (machine_function): Add stack_usage.
1865         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
1866
1867 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
1868
1869         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
1870         new 'outgoing' argument.
1871         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
1872         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1873         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
1874         iq2000_function_value_regno_p.
1875         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1876         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
1877         Declare.
1878
1879 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
1880
1881         PR target/42031
1882         * arm.md (adddi_sesidi_di): Place tied contraint first.
1883         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
1884         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
1885         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
1886         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
1887         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
1888         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
1889         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
1890         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
1891         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
1892
1893 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
1894
1895         * config/i386/predicates.md (call_register_no_elim_operand):
1896         New predicate.  Reject stack register as valid call operand
1897         for 32bit targets.
1898         (call_insn_operand): Use call_register_no_elim_operand.
1899
1900 2009-11-13  Richard Henderson  <rth@redhat.com>
1901
1902         * function.c (stack_protect_prologue): Don't bypass expand_expr
1903         for stack_protect_guard and guard_decl.
1904         (stack_protect_epilogue): Likewise.
1905
1906 2009-11-13  Jan Hubicka  <jh@suse.cz>
1907
1908         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
1909         when to PUBLIC is set.
1910
1911 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
1912
1913         PR middle-end/42029
1914         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
1915         tmp_load if needed.
1916
1917 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1918
1919         PR target/41900
1920         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
1921         *call_value_1): Use "lsm" as operand 1 constraint.
1922         * config/i386/predicates.md (call_insn_operand): Depend on
1923         index_register_operand to avoid %esp register.
1924
1925 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1926
1927         Revert:
1928         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1929
1930         PR target/41900
1931         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1932         (TARGET_CALL_ESP): New define.
1933         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1934         X86_ARCH_CALL_ESP.
1935         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1936         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1937         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1938         TARGET_CALL_ESP.
1939         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1940         New patterns, use "lsm" as operand 1 constraint.
1941         * config/i386/predicates.md (call_insn_operand): Depend on
1942         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1943
1944 2009-11-13  Jason Merrill  <jason@redhat.com>
1945
1946         PR debug/26965
1947         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
1948         Don't emit a second declaration at any scope.
1949
1950 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1951
1952         PR rtl-optimization/41697
1953         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
1954         a conditional jump has a single successor.
1955
1956 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1957
1958         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
1959         allocate reg_last when in case lazy_reg_last is true.
1960         (init_deps_reg_last): New.
1961         (free_deps): When max_reg is 0, this context is already freed.
1962         * sched-int.h (init_deps_reg_last): Export.
1963         (init_deps): Update prototype.
1964         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
1965         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
1966         * ddg.c (build_intra_loop_deps): Likewise.
1967         * sel-sched-ir.c (copy_deps_context, create_deps_context,
1968         reset_deps_context, deps_init_id): Likewise.
1969         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
1970         (free_data_for_scheduled_insn): New, break down from ...
1971         (free_first_time_insn_data): ... here.
1972         (has_dependence_p): Allocate reg_last now, when it is needed.
1973         (extend_insn_data): When maximal LUID is big enough, allocate
1974         per-insn data in smaller chunks.
1975         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
1976         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
1977         in scheduled insn.
1978
1979 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1980
1981         * config/i386/i386.md (call_value): Fix comment.
1982         (sibcall_value): Ditto.
1983
1984 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
1985
1986         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
1987         (MD_FROB_UPDATE_CONTEXT): Define.
1988
1989 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
1990             Laurent GUERBY  <laurent@guerby.net>
1991
1992         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
1993         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
1994         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
1995
1996 2009-11-12  Jan Hubicka  <jh@suse.cz>
1997
1998         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
1999         and clear DECL_COMMON on localized declarations.
2000
2001 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2002
2003         PR rtl-opt/38582
2004         * regrename.c (struct du_head): New structure; some elements moved
2005         from...
2006         (struct du_chain): ... this one.
2007         (open_chains, closed_chains): Now of type struct du_head *.
2008         (do_replace): Accept du_head argument, not du_chain.  All callers
2009         changed.  Modified code to match new data structures.
2010         (build_def_use): Return a list of du_head structures.  Modified code
2011         to match new data structures.
2012         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2013         callers changed.  Modified code to match new data structures.
2014         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2015         callers changed.  Modified code to match new data structures.
2016         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2017         Allocate a du_head structure as well as a du_chain when creating a
2018         new chain.  Modified other code to match new data structures.
2019
2020 2009-11-12  Jan Hubicka  <jh@suse.cz>
2021
2022         * cgraph.h (varpool_node_name): Declare.
2023         * cgraphunit.c (process_function_and_variable_attributes): Set
2024         force_output flag on used variables.
2025         * ipa.c (function_and_variable_visibility): Dump externally visible
2026         and needed variables.
2027         * varpool.c (varpool_node_name): Export.
2028         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2029         ignore needed flag.
2030
2031 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2032
2033         PR middle-end/41930
2034         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2035         processing if XEXP (x, i) is NULL.
2036
2037 2009-11-12  Jan Hubicka  <jh@suse.cz>
2038
2039         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2040         imply PUBLIC || EXTERNAL.
2041
2042 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2043
2044         PR middle-end/41440
2045         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2046         single successor block, ending with jump created by RTL expander.
2047
2048 2009-11-11  Jan Hubicka  <jh@suse.cz>
2049
2050         PR middle-end/41729
2051         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2052         and WEAK variables at -fwhole-program.
2053
2054         PR middle-end/41735
2055         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2056         functions/variables are not needed even if they are externally visible.
2057
2058 2009-11-11  Jan Hubicka  <jh@suse.cz>
2059
2060         (patch by Richard Guenther)
2061         * lto-streamer-out.c (output_function): Output head of argument list
2062         earlier.
2063         * lto-streamer-in.c (input_function): Re-map arguments into merged
2064         declaration.
2065
2066 2009-11-11  Jan Hubicka  <jh@suse.cz>
2067
2068         * lto-cgraph.c: Include gcov-io.h
2069         (output_profile_summary): New function.
2070         (output_cgraph): Use it.
2071         (input_profile_summary): New function.
2072         (input_cgraph): Use it.
2073         * coverage.c (build_ctr_info_value): Use varpool; initalize
2074         DECL_ASSEMBLER_NAME.
2075         (create_coverage): Likewise.
2076         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2077         (tree_init_edge_profiler): Likewise.
2078         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2079
2080 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2081
2082         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2083         * c-pragma.c (def_pragma_macro_value): Likewise.
2084         (def_pragma_macro): Likewise.
2085         (pushed_macro_table): Likewise.
2086         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2087         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2088
2089 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2090
2091         * doc/plugins.texi (Registering custom attributes): section
2092         renamed as (Registering custom attributes or pragmas).
2093         Mentions custom attributes & pragmas, and c_register_pragma, with
2094         a small example.
2095         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2096         pragmas.
2097         * doc/extend.texi (Function Attributes): Mentions that plugin can
2098         provide their attributes.
2099
2100 2009-11-11  Jon Beniston  <jon@beniston.com>
2101
2102         * config.gcc: Add lm32 elf and uclinux targets.
2103         * config/lm32: New directory.
2104         * config/lm32/lm32.c: New file.
2105         * config/lm32/lm32.h: New file.
2106         * config/lm32/lm32.md: New file.
2107         * config/lm32/lm32.opt: New file.
2108         * config/lm32/lm32-protos.h: New file.
2109         * config/lm32/constraints.md: New file.
2110         * config/lm32/predicates.md: New file.
2111         * config/lm32/sfp-machine.h: New file.
2112         * config/lm32/t-fprules-softfp: New file.
2113         * config/lm32/uclinux-elf.h: New file.
2114         * doc/invoke.texi: Document lm32 options.
2115         * doc/contrib.texi: Document lm32 porter.
2116         * doc/install.texi: Document lm32 targets.
2117
2118 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2119
2120         PR lto/41932
2121         * ipa-prop.c (ipa_update_after_lto_read): Call
2122         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2123         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2124
2125 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2126
2127         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2128         (neon_expand_vector_init): Use them.  Also handle non-constant
2129         vectors with identical elements and vectors with only one
2130         non-constant element.
2131         (arm_print_operand): Handle 'y' modifier.
2132         * config/arm/arm-protos.h (neon_make_constant): Declare.
2133         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2134         patterns.  Use VX instead of VDQW for the first one.  Allow
2135         a VFP alternative and V32 modes for the second one.
2136         * config/arm/neon.ml (shape_elt): Add Alternatives.
2137         (ops): Use Alternatives for vdup lane instructions.
2138         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2139         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2140
2141 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2142
2143         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2144         operands.
2145         (movti, mov<mode>): Call force_reg on one operand if required.
2146         * config/arm/vec-common.md (mov<mode>): Likewise.
2147
2148 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2149
2150         * config/arm/arm.c (arm_override_options): Enable scheduling for
2151         Thumb-2.
2152
2153 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2154
2155         PR target/10127
2156         PR ada/20548
2157         * expr.h (anti_adjust_stack_and_probe): Declare.
2158         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
2159         parameter and rewrite head comment.
2160         (allocate_dynamic_stack_space): Adjust call to above function.
2161         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
2162
2163         * tree.h (dwarf2out_args_size): Delete.
2164         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
2165         (dwarf2out_args_size_adjust): Delete prototype and move around.
2166         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2167         ACCUMULATE_OUTGOING_ARGS targets.
2168
2169 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2170
2171         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
2172         DECL_SIZE of DECL_RESULT before evaluating it.
2173
2174 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2175
2176         PR tree-optimization/41987
2177         * fold-const.c (const_binop): Avoid using fold_buildN().
2178
2179 2009-11-10  Martin Jambor  <mjambor@suse.cz>
2180
2181         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
2182         (execute_all_ipa_stmt_fixups): Declare.
2183         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
2184         * ipa-inline.c (pass_ipa_inline): Likewise.
2185         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
2186         * ipa-reference.c (pass_ipa_reference): Likewise.
2187         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
2188         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
2189         (pass_ipa_lto_finish_out): Likewise.
2190         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
2191         * passes.c (execute_ipa_stmt_fixups): New function.
2192         (execute_all_ipa_stmt_fixups): New function.
2193         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2194
2195 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2196
2197         PR ada/20548
2198         * explow.c (probe_stack_range): Fix typo.
2199         * config/sparc/sparc.md (probe_stack): New expander.
2200
2201 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
2202
2203         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2204
2205 2009-11-09  Jason Merrill  <jason@redhat.com>
2206
2207         * gdbinit.in (pgq): New function for printing gimple sequence.
2208
2209 2009-11-09  Paul Brook  <paul@codesourcery.com>
2210             Daniel Jacobowitz  <dan@codesourcery.com>
2211             Sandra Loosemore  <sandra@codesourcery.com>
2212
2213         * doc/extend.texi (Half-Precision): Update wording to reflect
2214         that there are now multiple -mfpu options that enable fp16
2215         hardware support.
2216         * doc/invoke.texi: Update list of ARM -mfpu= options.
2217         * config.gcc: Update ARM --with-fpu option list.
2218         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
2219         vfpv3xd and vfpv3xd-fp16.
2220         (use_vfp_abi): New function.
2221         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
2222         when undesirable.
2223         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
2224         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
2225         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
2226         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
2227         provides them.
2228         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
2229         NEON.
2230         (arm_print_operand): Handle 'p' modifier.
2231         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
2232         TARGET_FP16.
2233         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
2234         (TARGET_FP16): Define.
2235         * config/arm/vfp.md: Disable double-precision patterns if the FPU
2236         does not provide them.
2237         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
2238         double-precision values on a single-precision FPU.
2239         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
2240         double-precision constants.
2241         (movhf_vfp_neon): New pattern (was movhf_vfp).
2242         (movhf_vfp): Remove NEON instructions.
2243         * config/arm/constraints.md: Add new "Dy" constraint for
2244         double-precision constants.  Update description of "Dv".
2245         * config/arm/arm.md: Disable double-precision patterns if the FPU
2246         does not provide them
2247
2248 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
2249
2250         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
2251         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
2252         diagnostics.
2253
2254 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
2255
2256         * collect2.c (main): Search PLUGIN_LD for plugin linker.
2257
2258         * configure.ac (--with-plugin-ld): New.  Default to ld.
2259         * configure: Regenerated.
2260         * config.in: Likewise.
2261
2262         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
2263         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2264
2265 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
2266
2267         * config/openbsd-stdint.h: Change to reflect what
2268         c_common_nodes_and_builtins expects.
2269
2270 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
2271
2272         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
2273
2274 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
2275
2276         PR target/41985
2277         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
2278         function contains at least one local dynamic name.
2279         (print_operand) <case '&'>: Instead output operand lossage diagnostics
2280         here if that happens.
2281
2282 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
2283             Joern Rennecke  <amylaar@spamcop.net>
2284
2285         * cfgrtl.c (pass_free_cfg): Add pass name.
2286         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
2287         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
2288         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
2289         * df-core.c (pass_df_initialize_no_opt): Likewise.
2290         * except.c (pass_rtl_eh): Likewise.
2291         * function.c (pass_init_function, pass_leaf_regs): Likewise.
2292         * gcse.c (pass_rtl_pre): Change pass name.
2293         * passes.c (pass_postreload): Add pass name.
2294         (make_pass_instance): Don't use duplicate-tracking logic for
2295         names starting with '*'.
2296         (next_pass_1): Assert that pass has a name.
2297         (register_one_dump_file): If there is an space in the name,
2298         skip past it.
2299         * predict.c (pass_strip_predict_hints): Add pass name.
2300         * reg-stack.c (pass_stack_regs): Likewise.
2301         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
2302         * tree-cfg.c (pass_warn_function_return,
2303         pass_warn_function_noreturn): Add pass name.
2304         * tree-dfa.c (pass_referenced_vars): Likewise.
2305         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
2306         Fix whitespace before comment.
2307         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
2308         (pass_init_datastructures): Add pass name.
2309         * tree-ssa-loop.c (pass_record_bounds): Likewise.
2310         * tree-ssa.c (pass_early_warn_uninitialized,
2311         pass_late_warn_uninitialized): Likewise.
2312         * tree.c (pass_ipa_free_lang_data): Likewise.
2313         * doc/passes.texi (pass manager): Document how to disambiguate
2314         pass names.
2315
2316 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
2317
2318         * df-problems.c: Fix documentation for forward simulation of LR.
2319         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
2320         (df_simulate_finalize_forwards): Remove.
2321         * df.h (df_simulate_finalize_forwards): Remove.
2322
2323 2009-11-08  Richard Guenther  <rguenther@suse.de>
2324
2325         * tree-ssa-structalias.c (build_succ_graph): Properly make
2326         variables escape if they are stored to anything.
2327
2328 2009-11-08  Richard Guenther  <rguenther@suse.de>
2329
2330         PR rtl-optimization/41928
2331         * loop-invariant.c (free_loop_data): If we didn't allocate
2332         loop data do not try to free it.
2333
2334 2009-11-07  Jason Merrill  <jason@redhat.com>
2335
2336         * tree.c (reconstruct_complex_type): Preserve attributes.
2337
2338 2009-11-07  Richard Guenther  <rguenther@suse.de>
2339
2340         * tree-ssa-structalias.c (build_succ_graph): Feed stores
2341         to anything only to variables that can take pointers.
2342         (get_constraint_for_ssa_var): Properly exclude full
2343         variables from expanding.
2344         (first_vi_for_offset): Avoid overflow in arithmetic.
2345         (first_or_preceding_vi_for_offset): Likewise.
2346         (count_num_arguments): Fix implementation.
2347         (gate_ipa_pta): Do not run when not optimizing.
2348
2349 2009-11-07  David Binderman <dcb314@hotmail.com>
2350
2351         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
2352         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
2353         set but not used variables.
2354         (apply_args_reg_offset): Comment out as unused.
2355         * calls.c (flags_from_decl_or_type): Likewise.
2356         * genautomata.c (check_regexp_units_distribution): Likewise.
2357
2358 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
2359
2360         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
2361         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
2362         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
2363         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
2364         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
2365         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
2366         operand alternatives.
2367
2368 2009-11-06  Michael Matz  <matz@suse.de>
2369
2370         PR middle-end/41963
2371         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
2372         of a potential reciprocal to really be reciprocals.
2373
2374 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
2375
2376         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
2377         lwpintrin.h after immintrin.h.
2378         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
2379         typedefs.
2380
2381         PR middle-end/41935
2382         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
2383         or non-constant index, allow index one past the last element and
2384         allow exceeding array bound in arrays that might be used as flexible
2385         array members.
2386
2387 2009-11-05  Richard Henderson  <rth@redhat.com>
2388
2389         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
2390
2391 2009-11-05  Paul Brook  <paul@codesourcery.com>
2392
2393         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
2394         (arm_fpu_desc): New.
2395         (all_fpus): Add FPU details.
2396         (fp_model_for_fpu): Remove.
2397         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
2398         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
2399         (arm_file_start): Use arm_fpu_desc.
2400         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
2401         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
2402         arm_fpu_desc.
2403         (TARGET_FPA_EMU2): Define.
2404         (arm_fp_model, fputype, arm_fpu_tune): Remove.
2405         (vfp_reg_type, arm_fpu_desc): New.
2406         * config/arm/arm.md (attr fpu): Simplify.
2407         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
2408         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
2409         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
2410         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
2411         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
2412
2413 2009-11-05  Michael Matz  <matz@suse.de>
2414
2415         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
2416         on TARGET_RECIP.
2417         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
2418         for 1/sqrtf.
2419
2420 2009-11-04  Jason Merrill  <jason@redhat.com>
2421
2422         PR c++/36912
2423         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
2424         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
2425         (output_constant): Avoid crash after error.
2426
2427 2009-11-05  Martin Jambor  <mjambor@suse.cz>
2428
2429         * tree-sra.c (struct access): Changed comment of next_sibling field.
2430         (analyze_modified_params): Loop over accesses of a group rather than
2431         over all with the ame base, pass a common bitmap to
2432         walk_aliased_vdefs.
2433         (unmodified_by_ref_scalar_representative): Build link lists of
2434         accesses of a group.
2435         (splice_param_accesses): Likewise.
2436
2437 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
2438
2439         * df-scan.c (df-uses-record): Add case zero_extract of mem.
2440
2441 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
2442
2443         PR target/10127
2444         PR ada/20548
2445         * config/i386/i386.md (probe_stack): New expander.
2446         (logical operation peepholes): Do not split stack checking probes.
2447
2448 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2449             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2450
2451         * doc/invoke.texi (-mlwp): Add documentation.
2452         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
2453         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
2454         (x86_64-*-*): Ditto.
2455         * config/i386/lwpintrin.h: New file, provide x86 compiler
2456         intrinisics for LWP.
2457         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
2458         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
2459         * config/i386/i386-c.c (ix86_target_macros_internal): Check
2460         ISA_FLAG for LWP.
2461         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
2462         * config/i386/i386.opt (-mlwp): New switch for LWP support.
2463         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
2464         (OPTION_MASK_ISA_LWP_UNSET): New.
2465         (ix86_handle_option): Handle -mlwp.
2466         (isa_opts): Handle -mlwp.
2467         (enum pta_flags): Add PTA_LWP.
2468         (override_options): Add LWP support.
2469         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
2470         (IX86_BUILTIN_LLWPCB32): Ditto.
2471         (IX86_BUILTIN_LLWPCB64): Ditto.
2472         (IX86_BUILTIN_SLWPCB16): Ditto.
2473         (IX86_BUILTIN_SLWPCB32): Ditto.
2474         (IX86_BUILTIN_SLWPCB64): Ditto.
2475         (IX86_BUILTIN_LWPVAL16): Ditto.
2476         (IX86_BUILTIN_LWPVAL32): Ditto.
2477         (IX86_BUILTIN_LWPVAL64): Ditto.
2478         (IX86_BUILTIN_LWPINS16): Ditto.
2479         (IX86_BUILTIN_LWPINS32): Ditto.
2480         (IX86_BUILTIN_LWPINS64): Ditto.
2481         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
2482         (builtin_description): Ditto.
2483         (ix86_init_mmx_sse_builtins): Ditto.
2484         (ix86_expand_special_args_builtin): Ditto.
2485         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
2486         LWP support.
2487         (UNSPEC_SLWP_INTRINSIC): Ditto.
2488         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
2489         (UNSPECV_LWPINS_INTRINSIC): Ditto.
2490         (lwp_llwpcbhi1): New lwp pattern.
2491         (lwp_llwpcbsi1): Ditto.
2492         (lwp_llwpcbdi1): Ditto.
2493         (lwp_slwpcbhi1): Ditto.
2494         (lwp_slwpcbsi1): Ditto.
2495         (lwp_slwpcbdi1): Ditto.
2496         (lwp_lwpvalhi3): Ditto.
2497         (lwp_lwpvalsi3): Ditto.
2498         (lwp_lwpvaldi3): Ditto.
2499         (lwp_lwpinshi3): Ditto.
2500         (lwp_lwpinssi3): Ditto.
2501         (lwp_lwpinsdi3): Ditto.
2502
2503 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2504             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2505
2506         PR rtl-opt/41833
2507         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
2508         a vec_duplicate.
2509
2510 2009-11-04  Richard Guenther  <rguenther@suse.de>
2511             Rafael Avila de Espindola  <espindola@google.com>
2512
2513         * gcc.c (process_command): Handle arguments name@offset.
2514
2515 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2516             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2517
2518         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
2519         (x86_64-*-*): Ditto.
2520         * config/i386/xopintrin.h: New file, provide common x86 compiler
2521         intrinisics for XOP.
2522         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
2523         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
2524         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2525         ISA_FLAG for XOP.
2526         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
2527         * config/i386/i386.opt (-mxop): New switch for XOP support.
2528         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
2529         (UNSPEC_XOP_TRUEFALSE)
2530         (UNSPEC_XOP_PERMUTE)
2531         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
2532         (PPERM_*): New constants for vpperm instruction.
2533         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
2534         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
2535         (OPTION_MASK_ISA_XOP_UNSET): New.
2536         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
2537         (ix86_handle_option): Handle -mxop.
2538         (isa_opts): Handle -mxop.
2539         (enum pta_flags): Add PTA_XOP.
2540         (override_options): Add XOP support.
2541         (print_operand): Add code for XOP compare instructions.
2542         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
2543         (ix86_expand_int_vcond): Extend for XOP compare instruction.
2544
2545         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
2546         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
2547         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
2548         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
2549         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
2550         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
2551         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
2552
2553         (IX86_BUILTIN_VPCMOV256): Ditto.
2554         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
2555         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
2556         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
2557         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
2558         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
2559         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
2560
2561         (IX86_BUILTIN_VPPERM): Ditto.
2562
2563         (IX86_BUILTIN_VPMACSSWW): Ditto.
2564         (IX86_BUILTIN_VPMACSWW): Ditto.
2565         (IX86_BUILTIN_VPMACSSWD): Ditto.
2566         (IX86_BUILTIN_VPMACSWD): Ditto.
2567         (IX86_BUILTIN_VPMACSSDD): Ditto.
2568         (IX86_BUILTIN_VPMACSDD): Ditto.
2569         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2570         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2571         (IX86_BUILTIN_VPMACSDQL): Ditto.
2572         (IX86_BUILTIN_VPMACSDQH): Ditto.
2573         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2574         (IX86_BUILTIN_VPMADCSWD): Ditto.
2575
2576         (IX86_BUILTIN_VPHADDBW): Ditto.
2577         (IX86_BUILTIN_VPHADDBD): Ditto.
2578         (IX86_BUILTIN_VPHADDBQ): Ditto.
2579         (IX86_BUILTIN_VPHADDWD): Ditto.
2580         (IX86_BUILTIN_VPHADDWQ): Ditto.
2581         (IX86_BUILTIN_VPHADDDQ): Ditto.
2582         (IX86_BUILTIN_VPHADDUBW): Ditto.
2583         (IX86_BUILTIN_VPHADDUBD): Ditto.
2584         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2585         (IX86_BUILTIN_VPHADDUWD): Ditto.
2586         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2587         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2588         (IX86_BUILTIN_VPHSUBBW): Ditto.
2589         (IX86_BUILTIN_VPHSUBWD): Ditto.
2590         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2591
2592         (IX86_BUILTIN_VPROTB): Ditto.
2593         (IX86_BUILTIN_VPROTW): Ditto.
2594         (IX86_BUILTIN_VPROTD): Ditto.
2595         (IX86_BUILTIN_VPROTQ): Ditto.
2596         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2597         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2598         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2599         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2600
2601         (IX86_BUILTIN_VPSHLB): Ditto.
2602         (IX86_BUILTIN_VPSHLW): Ditto.
2603         (IX86_BUILTIN_VPSHLD): Ditto.
2604         (IX86_BUILTIN_VPSHLQ): Ditto.
2605         (IX86_BUILTIN_VPSHAB): Ditto.
2606         (IX86_BUILTIN_VPSHAW): Ditto.
2607         (IX86_BUILTIN_VPSHAD): Ditto.
2608         (IX86_BUILTIN_VPSHAQ): Ditto.
2609
2610         (IX86_BUILTIN_VFRCZSS): Ditto.
2611         (IX86_BUILTIN_VFRCZSD): Ditto.
2612         (IX86_BUILTIN_VFRCZPS): Ditto.
2613         (IX86_BUILTIN_VFRCZPD): Ditto.
2614         (IX86_BUILTIN_VFRCZPS256): Ditto.
2615         (IX86_BUILTIN_VFRCZPD256): Ditto.
2616
2617         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2618         (IX86_BUILTIN_VPCOMNEUB): Ditto.
2619         (IX86_BUILTIN_VPCOMLTUB): Ditto.
2620         (IX86_BUILTIN_VPCOMLEUB): Ditto.
2621         (IX86_BUILTIN_VPCOMGTUB): Ditto.
2622         (IX86_BUILTIN_VPCOMGEUB): Ditto.
2623         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
2624         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
2625
2626         (IX86_BUILTIN_VPCOMEQUW): Ditto.
2627         (IX86_BUILTIN_VPCOMNEUW): Ditto.
2628         (IX86_BUILTIN_VPCOMLTUW): Ditto.
2629         (IX86_BUILTIN_VPCOMLEUW): Ditto.
2630         (IX86_BUILTIN_VPCOMGTUW): Ditto.
2631         (IX86_BUILTIN_VPCOMGEUW): Ditto.
2632         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
2633         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
2634
2635         (IX86_BUILTIN_VPCOMEQUD): Ditto.
2636         (IX86_BUILTIN_VPCOMNEUD): Ditto.
2637         (IX86_BUILTIN_VPCOMLTUD): Ditto.
2638         (IX86_BUILTIN_VPCOMLEUD): Ditto.
2639         (IX86_BUILTIN_VPCOMGTUD): Ditto.
2640         (IX86_BUILTIN_VPCOMGEUD): Ditto.
2641         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
2642         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
2643
2644         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
2645         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
2646         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
2647         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
2648         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
2649         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
2650         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
2651         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
2652
2653         (IX86_BUILTIN_VPCOMEQB): Ditto.
2654         (IX86_BUILTIN_VPCOMNEB): Ditto.
2655         (IX86_BUILTIN_VPCOMLTB): Ditto.
2656         (IX86_BUILTIN_VPCOMLEB): Ditto.
2657         (IX86_BUILTIN_VPCOMGTB): Ditto.
2658         (IX86_BUILTIN_VPCOMGEB): Ditto.
2659         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
2660         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
2661
2662         (IX86_BUILTIN_VPCOMEQW): Ditto.
2663         (IX86_BUILTIN_VPCOMNEW): Ditto.
2664         (IX86_BUILTIN_VPCOMLTW): Ditto.
2665         (IX86_BUILTIN_VPCOMLEW): Ditto.
2666         (IX86_BUILTIN_VPCOMGTW): Ditto.
2667         (IX86_BUILTIN_VPCOMGEW): Ditto.
2668         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
2669         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
2670
2671         (IX86_BUILTIN_VPCOMEQD): Ditto.
2672         (IX86_BUILTIN_VPCOMNED): Ditto.
2673         (IX86_BUILTIN_VPCOMLTD): Ditto.
2674         (IX86_BUILTIN_VPCOMLED): Ditto.
2675         (IX86_BUILTIN_VPCOMGTD): Ditto.
2676         (IX86_BUILTIN_VPCOMGED): Ditto.
2677         (IX86_BUILTIN_VPCOMFALSED): Ditto.
2678         (IX86_BUILTIN_VPCOMTRUED): Ditto.
2679
2680         (IX86_BUILTIN_VPCOMEQQ): Ditto.
2681         (IX86_BUILTIN_VPCOMNEQ): Ditto.
2682         (IX86_BUILTIN_VPCOMLTQ): Ditto.
2683         (IX86_BUILTIN_VPCOMLEQ): Ditto.
2684         (IX86_BUILTIN_VPCOMGTQ): Ditto.
2685         (IX86_BUILTIN_VPCOMGEQ): Ditto.
2686         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
2687         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
2688
2689         (enum multi_arg_type): New enum for describing the various XOP
2690         intrinsic argument types.
2691         (bdesc_multi_arg): New table for XOP intrinsics.
2692         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
2693         (ix86_expand_multi_arg_builtin): New function for creating XOP
2694         intrinsics.
2695
2696         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
2697         (xop_pmacsww): Ditto.
2698         (xop_pmacssww): Ditto.
2699         (xop_pmacsdd): Ditto.
2700         (xop_pmacssdd): Ditto.
2701         (xop_pmacssdql): Ditto.
2702         (xop_pmacssdqh): Ditto.
2703         (xop_pmacsdql): Ditto.
2704         (xop_pmacsdql_mem): Ditto.
2705         (xop_mulv2div2di3_low): Ditto.
2706         (xop_pmacsdqh): Ditto.
2707         (xop_pmacsdqh_mem): Ditto.
2708         (xop_mulv2div2di3_high): Ditto.
2709         (xop_pmacsswd): Ditto.
2710         (xop_pmacswd): Ditto.
2711         (xop_pmadcsswd): Ditto.
2712         (xop_pmadcswd): Ditto.
2713         (xop_pcmov_<mode>): Ditto.
2714         (xop_pcmov_<mode>256): Ditto.
2715         (xop_phaddbw): Ditto.
2716         (xop_phaddbd): Ditto.
2717         (xop_phaddbq): Ditto.
2718         (xop_phaddwd): Ditto.
2719         (xop_phaddwq): Ditto.
2720         (xop_phadddq): Ditto.
2721         (xop_phaddubw): Ditto.
2722         (xop_phaddubd): Ditto.
2723         (xop_phaddubq): Ditto.
2724         (xop_phadduwd): Ditto.
2725         (xop_phadduwq): Ditto.
2726         (xop_phaddudq): Ditto.
2727         (xop_phsubbw): Ditto.
2728         (xop_phsubwd): Ditto.
2729         (xop_phsubdq): Ditto.
2730         (xop_pperm): Ditto.
2731         (rotl<mode>3): Ditto.
2732         (rotr<mode>3): Ditto.
2733         (xop_rotl<mode>3): Ditto.
2734         (xop_rotr<mode>3): Ditto.
2735         (vrotr<mode>3): Ditto.
2736         (vrotl<mode>3): Ditto.
2737         (xop_vrotl<mode>3): Ditto.
2738         (vlshr<mode>3): Ditto.
2739         (vashr<mode>3): Ditto.
2740         (vashl<mode>3
2741         (xop_ashl<mode>3): Ditto.
2742         (xop_lshl<mode>3): Ditto.
2743         (ashlv16qi3): Ditto.
2744         (lshlv16qi3): Ditto.
2745         (ashrv16qi3): Ditto.
2746         (ashrv2di3): Ditto.
2747         (xop_frcz<mode>2): Ditto.
2748         (xop_vmfrcz<mode>2): Ditto.
2749         (xop_frcz<mode>2256): Ditto.
2750         (xop_maskcmp<mode>3): Ditto.
2751         (xop_maskcmp_uns<mode>3): Ditto.
2752         (xop_maskcmp_uns2<mode>3): Ditto.
2753         (xop_pcom_tf<mode>3): Ditto.
2754
2755         * doc/invoke.texi (-mxop): Add documentation.
2756         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
2757
2758 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
2759
2760         PR driver/11810
2761         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
2762         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
2763         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
2764
2765 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
2766
2767         PR target/40835
2768         * arm.md (peephole2 patterns for move and compare): New.
2769
2770 2009-11-04  Nick Clifton  <nickc@redhat.com>
2771
2772         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
2773         Make sure that it does not allow CONST_DOUBLEs.
2774         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
2775         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
2776         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
2777         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
2778         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
2779         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
2780         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
2781         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
2782         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
2783         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
2784         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
2785         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
2786         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
2787         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
2788         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
2789
2790 2009-11-04  Richard Guenther  <rguenther@suse.de>
2791
2792         PR tree-optimization/41919
2793         * tree-vrp.c (test_for_singularity): Properly compare values.
2794
2795 2009-11-04  Revital Eres  <eres@il.ibm.com>
2796
2797         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2798         Consider peeling for alignment only for stores and remove
2799         redundant assignment.
2800
2801 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
2802
2803         PR target/41302
2804         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
2805         (m68k_ok_for_sibcall_p): Handle different result return locations.
2806
2807 2009-11-04  Richard Guenther  <rguenther@suse.de>
2808
2809         * c-opts.c (c_common_post_options): Move LTO option processing
2810         code ...
2811         * opts.c (decode_options): ... here.
2812
2813 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
2814
2815         * c-common.c (fold_offsetof_1): Use %wd instead of
2816         HOST_WIDE_INT_PRINT_DEC.
2817
2818 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2819
2820         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
2821         __pic__ or __PIC__.
2822
2823 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2824
2825         * config.gcc (vax-*-linux*): Keep the original contents of
2826         tmake_file while adding vax/t-linux.
2827
2828 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2829
2830         PR target/10127
2831         PR ada/20548
2832         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
2833         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
2834         (STACK_CHECK_MOVING_SP): Likewise.
2835         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
2836         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
2837         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
2838         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
2839         Document PROBE_STACK.
2840         * explow.c (anti_adjust_stack_and_probe): New function.
2841         (allocate_dynamic_stack_space): Do not directly allocate space if
2842         STACK_CHECK_MOVING_SP, instead invoke above function.
2843         (emit_stack_probe): Handle probe_stack insn.
2844         (PROBE_INTERVAL): New macro.
2845         (STACK_GROW_OPTAB): Likewise.
2846         (STACK_GROW_OFF): Likewise.
2847         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
2848         loop condition in the small constant case.  Rewrite in the general
2849         case to be immune to wraparounds.  Make sure the address of probes
2850         is valid.  Try to use [base + disp] addressing mode if possible.
2851         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
2852         checking is enabled and STACK_CHECK_MOVING_SP.
2853         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
2854         return 1 for volatile references to the stack pointer.
2855         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
2856         __builtin_alloca if stack checking is enabled.
2857         * unwind-dw2.c (uw_identify_context): Take into account whether the
2858         context is that of a signal frame or not.
2859         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
2860         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
2861
2862 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
2863
2864         PR rtl-optimization/41917
2865         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
2866         operand isn't known to be 0, return 1.
2867
2868 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2869
2870         * config/mips/mips.md: Fix typos.
2871
2872 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2873
2874         * doc/invoke.texi: Fix typo.
2875
2876 2009-11-03  Paul Brook  <paul@codesourcery.com>
2877
2878         * config/arm/neon.ml (vectype): Add T_floatSF.
2879         (string_of_vectype): Ditto.
2880         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
2881         (deftypes): Use float for float32_t.
2882         * config/arm/arm_neon.h: Regenerate.
2883
2884 2009-11-03  Nick Clifton  <nickc@redhat.com>
2885             Kevin Buettner  <kevinb@redhat.com>
2886
2887         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
2888         order of expected registers.
2889         (rx_load_multiple_vector): Likewise.
2890         (rx_rtsd_vector): Likewise.
2891         * config/rx/rx.c (rx_cpu_type): New variable.
2892         (rx_print_operand): Fix bug printing 64-bit constant values.
2893         (rx_emit_stack_pushm): Reverse order of pushed registers.
2894         (gen_rx_store_vector): Likewise.
2895         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
2896         attribute name.
2897         (is_exception_func): Rename to is_interrupt_func and only accept
2898         "interrupt" as the attribute name.
2899         (rx_get_stack_layout): Use new function name.
2900         (rx_func_attr_inlinable): Likewise.
2901         (rx_attribute_table): Remove "exception".
2902         (rx_expand_prologue): If necessary push the accumulator register
2903         in the prologue of interrupt functions.
2904         (rx_expand_epilogue): If necessary pop the accumulator.
2905         (rx_builtins): Add RX_BUILTIN_MVTIPL.
2906         (rx_expand_builtin_stz): Remove.
2907         (rx_expand_builtin_mvtipl): New function.
2908         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
2909         (rx_expand_builtin): Likewise.
2910         (rx_enable_fpu): New variable.
2911         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
2912         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
2913         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
2914         (enum rx_cpu_types): Define.
2915         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
2916         (INCOMING_FRAME_SP_OFFSET): Define.
2917         (ARG_POINTER_CFA_OFFSET): Define.
2918         (FRAME_POINTER_CFA_OFFSET): Define.
2919         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
2920         (ALLOW_RX_FPU_INSNS): Define.
2921         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
2922         fast_math_flags_set_p.
2923         (UNSPEC_BUILTIN_MVTIPL): Define.
2924         (revl): Rename to bswapsi2.
2925         (bswaphi2): New pattern.
2926         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
2927         (mvtaclo): Likewise.
2928         (racw): Likewise.
2929         (mvtc): Remove clobber of cc0.
2930         (mvtcp): Delete.
2931         (opecp): Delete.
2932         * config/rx/rx.opt (mieee): Remove.
2933         (fpu): Add.
2934         (nofpu): Add.
2935         (mcpu=): Add.
2936         (patch=): Add.
2937         (msave-acc-in-interrupts): Add.
2938         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
2939         (MULTILIB_DIRS): Likewise.
2940         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
2941         * doc/extend.texi: Remove description of "exception" function
2942         attribute.
2943         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
2944         -msave-acc-in-interrupts options.
2945
2946 2009-11-03  Richard Guenther  <rguenther@suse.de>
2947
2948         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
2949
2950 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
2951
2952         PR c++/38699
2953         * c-common.c (fold_offsetof_1): Issue errors when the member
2954         designator of the offsetof expression is not legitimate.
2955
2956 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2957
2958         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
2959         names instead of numerical constants.
2960         (sse_prologue_save): Ditto.
2961         (*sse_prologue_save_insn): Ditto.
2962
2963 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2964
2965         PR target/41900
2966         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2967         (TARGET_CALL_ESP): New define.
2968         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2969         X86_ARCH_CALL_ESP.
2970         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2971         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2972         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2973         TARGET_CALL_ESP.
2974         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2975         New patterns, use "lsm" as operand 1 constraint.
2976         * config/i386/predicates.md (call_insn_operand): Depend on
2977         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2978
2979 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2980
2981         PR tree-optimization/41857
2982         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
2983         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
2984         to create_mem_ref.
2985         * tree-ssa-address.c (move_hint_to_base): New function.
2986         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
2987         address space associated with TYPE.
2988         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
2989         most_expensive_mult_to_index.  Call move_hint_to_base.
2990         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
2991         TYPE to addr_to_parts.
2992
2993 2009-11-02  Martin Jambor  <mjambor@suse.cz>
2994
2995         PR tree-optimization/41750
2996         * tree-sra.c (analyze_modified_params): Loop over all
2997         representatives of components of a parameter.
2998
2999 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3000
3001         PR tree-optimization/41841
3002         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3003         local variables of not yet materialized clones.
3004
3005         PR debug/41893
3006         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3007         for a VOIDmode variable.
3008
3009         PR c++/41774
3010         * c-pragma.c (visstack): Change into vector of ints rather than
3011         enum symbol_visibility.
3012         (push_visibility): Add kind argument, push default_visibility together
3013         with kind.
3014         (pop_visibility): Add kind argument, return true if successful, fail
3015         if visibility stack is empty or if stack top is of different kind.
3016         (handle_pragma_visibility): Don't check length of visstack, instead
3017         call pop_visibility and issue diagnostics if it failed.  Pass 0
3018         as last argument to push_visibility and pop_visibility.
3019         * c-pragma.h (push_visibility): Add kind argument.
3020         (pop_visibility): Likewise.  Return bool instead of void.
3021
3022 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3023
3024         * tree.def (TARGET_MEM_REF): Update comment.
3025         * alias.c (get_alias_set): Retrieve the original memory reference for
3026         a TARGET_MEM_REF before proceeding.
3027
3028 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3029
3030         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3031         frv_function_value_regno_p): New functions.
3032         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3033         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3034         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3035         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3036
3037 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3038
3039         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3040         new 'outgoing' argument.
3041         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3042         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3043         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3044         LIBCALL_VALUE): Remove.
3045         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3046         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3047         (mh10300_function_value_regno_p): Declare.
3048
3049 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3050
3051         * config/arm/cortex-a9.md: New - integer pipeline description.
3052
3053 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3054
3055         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3056         aborting if the sizes of the two references don't match.
3057
3058 2009-10-31  Toon Moene  <toon@moene.org>
3059
3060         * ipa-inline.c (cgraph_decide_inlining):
3061         Include reason for not inlining called-once functions in dump file.
3062
3063 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3064
3065         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3066         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3067         (LINK_SPEC): BE_LINK_SPEC added.
3068
3069 2009-10-30  Richard Guenther  <rguenther@suse.de>
3070
3071         PR lto/41858
3072         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3073
3074 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3075
3076         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3077         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3078         label.
3079
3080 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3081
3082         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3083
3084 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3085
3086         PR target/40838
3087         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3088         first.  Move assert on stack_alignment_estimated just before
3089         setting stack_realign_needed.
3090         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3091         Don't call update_stack_boundary.
3092
3093         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3094         (verride_options): Don't check ix86_force_align_arg_pointer here.
3095         (ix86_function_ok_for_sibcall): Use it.
3096         (ix86_update_stack_boundary): Likewise.
3097
3098         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3099
3100 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3101
3102         * arm.md (QHSI): New mode iterator.
3103         (movqi): If generating for thumb, then truncate any immediate to
3104         8 bits.
3105         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3106         with...
3107         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3108         version.
3109
3110 2009-10-29  Cary Coutant  <ccoutant@google.com>
3111
3112         PR debug/41700
3113         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3114         locations in the source).
3115         (store_vcall_insn): New function.
3116         (lookup_vcall_insn): New function.
3117         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3118         (dwarf2out_copy_call_info): New function.
3119         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3120         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3121         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3122         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3123         (debug_nothing_rtx_rtx): New dummy hook.
3124         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3125         (xcoff_debug_hooks): Likewise.
3126         * sdbout.c (sdb_debug_hooks): Likewise.
3127         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3128
3129 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3130
3131         * doc/invoke.texi (mmcount-ra-address): Document new command line
3132         option.
3133         * config/mips/mips.opt (mmcount-ra-address): New option.
3134         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3135         function.
3136         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3137         member.
3138         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3139         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3140         rewritten.
3141         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3142         mips_function_profiler.
3143
3144 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3145
3146         PR middle-end/37565
3147         PR target/38018
3148         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3149         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3150         * optc-gen.awk (cl_target_option_restore): Include call to
3151         targetm.override_options_after_change.
3152         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3153         * target.h (override_options_after_change): New.
3154         * c-common.c (parse_optimize_options): Call
3155         targetm.override_options_after_change.
3156         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3157         (ia64_override_options_after_change): New.
3158         (ia64_override_options) Add call to above.
3159
3160 2009-10-29  Michael Matz  <matz@suse.de>
3161
3162         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
3163         (gate_convert_to_rsqrt): Ditto.
3164         (pass_convert_to_rsqrt): Ditto.
3165         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
3166         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
3167         to pass list.
3168
3169         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
3170
3171 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3172
3173         * config/arm/arm.c (find_best_start): Fix type of remainder to be
3174         unsigned.
3175
3176 2009-10-29  Martin Jambor  <mjambor@suse.cz>
3177
3178         PR tree-optimization/41775
3179         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
3180         (generate_subtree_copies): Do not unshare agg.
3181         (load_assign_lhs_subreplacements): Do not unshare rhs.
3182         (sra_modify_assign): Do not unshare exprs.
3183         (propagate_subacesses_accross_link): Renamed to
3184         propagate_subaccesses_across_link.
3185
3186 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
3187
3188         * arm.c (count_insns_for_constant): Rework to support counting for
3189         thumb2 immediates as well.
3190         (find_best_start): Split out from arm_gen_constant.
3191         (arm_gen_constant): Rework to support XOR with immediate.
3192
3193 2009-10-29  Chao-ying Fu  <fu@mips.com>
3194
3195         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
3196         functions.
3197         (mips_expand_synci_loop):  Use the length rtx to control the
3198         synci loop from the begin rtx that points to the first byte of
3199         the cache line.
3200
3201 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3202
3203         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
3204
3205 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3206
3207         * dbxout.c (dbxout_common_check): Accept non public trees.
3208         * dwarf2out.c (fortran_common): Accept non public trees.
3209
3210 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3211
3212         * common.opt (fuse-linker-plugin): New option.
3213         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
3214         fuse-linker-plugin.
3215         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
3216
3217 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3218
3219         PR rtl-optimization/39715
3220         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
3221         (gen_cstoresi_ltu_thumb1): New splitter.
3222
3223 2009-10-28  Richard Guenther  <rguenther@suse.de>
3224
3225         PR lto/41808
3226         PR lto/41839
3227         * tree-ssa.c (useless_type_conversion_p): Do not treat
3228         conversions to pointers to incomplete types as useless.
3229         * gimple.c (gimple_types_compatible_p): Compare struct tags,
3230         not typedef names.
3231
3232 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
3233
3234         * var-tracking.c (emit_note_insn_var_location): Don't call the second
3235         vt_expand_loc unnecessarily when location is not a register nor
3236         memory.
3237
3238         PR middle-end/41837
3239         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
3240         fields don't have DECL_NAME.
3241
3242         PR debug/41801
3243         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
3244         call convert_memory_address on addr.
3245
3246         PR target/41762
3247         * config/i386/i386.c (ix86_pic_register_p): Don't call
3248         rtx_equal_for_cselib_p for VALUEs discarded as useless.
3249
3250 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
3251
3252         * var-tracking.c (emit_note_insn_var_location): Get the mode of
3253         a variable part from its REG, MEM or VALUE.
3254
3255 2009-10-28  Richard Guenther  <rguenther@suse.de>
3256
3257         * gimple.c (gimple_get_alias_set): Fix comment typo.
3258
3259 2009-10-28  Richard Guenther  <rguenther@suse.de>
3260
3261         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
3262         (free_lang_data): Unconditionally compute alias sets for all
3263         standard integer types.  Bail out if gate bailed out previously.
3264         Do not reset the types_compatible_p langhook.
3265         (gate_free_lang_data): Remove.
3266         (struct pass_ipa_free_lang_data): Enable unconditionally.
3267         * gimple.c (gimple_get_alias_set): Use the same alias-set for
3268         all pointer types.
3269
3270 2009-10-28  Richard Guenther  <rguenther@suse.de>
3271
3272         PR middle-end/41855
3273         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
3274         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
3275         (call_may_clobber_ref_p_1): Likewise.
3276         * tree-ssa-structalias.c (find_func_aliases): Likewise.
3277         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
3278
3279 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3280
3281         PR rtl-optimization/41812
3282
3283         Revert:
3284         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3285
3286         * df-problems.c (df_md_scratch): New.
3287         (df_md_alloc, df_md_free): Allocate/free it.
3288         (df_md_local_compute): Only include live registers in init.
3289         (df_md_transfer_function): Prune the in-set computed by
3290         the confluence function, and the gen-set too.
3291
3292 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3293
3294         PR rtl-optimization/39715
3295         * combine.c (simplify_comparison): Use extensions to
3296         widen comparisons.  Try an ANDing first.
3297
3298 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3299
3300         PR rtl-optimization/40741
3301         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
3302         a small constant is cheap.
3303         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
3304         force_reg on the LHS.
3305         (xorsi3): Likewise, and split the XOR if the constant is complex
3306         and not in Thumb mode.
3307
3308 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3309
3310         * expmed.c (emit_store_flag): Check costs before
3311         transforming to the opposite representation.
3312
3313 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3314
3315         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
3316         cstore result to DImode.
3317
3318 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3319
3320         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
3321         inside the unspec vector.
3322
3323 2009-10-27  Richard Henderson  <rth@redhat.com>
3324
3325         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
3326
3327 2009-10-27  Richard Henderson  <rth@redhat.com>
3328
3329         PR c++/41819
3330         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
3331         eh_region_may_contain_throw; update users.
3332         (eh_region_may_contain_throw): New function.
3333         (lower_catch): Check flag_exceptions before creating exception region.
3334         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
3335         (lower_cleanup): Tidy existing flag_exceptions check to match.
3336
3337 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
3338
3339         PR/41799
3340         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
3341         * config/i386/mingw.opt: Add fset-stack-executable.
3342         * config/i386/i386.c (ix86_trampoline_init): Make call to
3343         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
3344         defined and its value is not zero.
3345         * doc/invoke.texi
3346
3347 2009-10-27  Richard Guenther  <rguenther@suse.de>
3348
3349         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
3350         handle calls to externally visible functions like in regular mode.
3351         (create_variable_info_for): Do not create function infos here.
3352         (have_alias_info): Remove write-only variable.
3353         (solve_constraints): New function split out from common code
3354         in compute_points_to_sets and ipa_pta_execute.
3355         (compute_points_to_sets): Adjust.
3356         (ipa_pta_execute): Likewise.  Handle clones and externally visible
3357         functions like in non-IPA mode.
3358
3359 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
3360
3361         PR c/41842
3362         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
3363         error_mark_node.
3364
3365 2009-10-27  Richard Guenther  <rguenther@suse.de>
3366
3367         * tree-complex.c (expand_complex_div_wide): Check for
3368         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
3369
3370 2009-10-27  Revital Eres  <eres@il.ibm.com>
3371
3372         PR tree-optimization/40648
3373         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3374         Change decision of when to peel for alignment.
3375
3376 2009-10-27  Richard Guenther  <rguenther@suse.de>
3377
3378         PR lto/41821
3379         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
3380
3381 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
3382
3383         PR bootstrap/41451
3384         * fold-const.c (fold_binary_loc): Do not call
3385         protected_set_expr_location.
3386
3387 2009-10-27  Wei Guozhi  <carrot@google.com>
3388
3389         PR target/41705
3390         * target.h (have_conditional_execution): Add a new target hook
3391         function.
3392         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
3393         * targhooks.h (default_have_conditional_execution): Likewise.
3394         * targhooks.c (default_have_conditional_execution): Likewise.
3395         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
3396         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
3397         (arm_have_conditional_execution): New function.
3398         * ifcvt.c (noce_process_if_block, find_if_header,
3399         cond_exec_find_if_block, dead_or_predicable): Change the usage of
3400         macro HAVE_conditional_execution to a target hook call.
3401         * recog.c (peephole2_optimize): Likewise.
3402         * sched-rgn.c (add_branch_dependences): Likewise.
3403         * final.c (asm_insn_count, final_scan_insn): Likewise.
3404         * bb-reorder.c (HAVE_conditional_execution): Remove it.
3405
3406 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3407             Michael Meissner  <meissner@linux.vnet.ibm.com>
3408             Ulrich Weigand  <uweigand@de.ibm.com>
3409
3410         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
3411         * config/spu/spu_cache.h: New file.
3412
3413         * config/spu/cachemgr.c: New file.
3414         * config/spu/cache.S: New file.
3415
3416         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
3417         (ADDR_SPACE_EA): Define.
3418         (TARGET_ADDR_SPACE_KEYWORDS): Define.
3419         * config/spu/spu.c (EAmode): New macro.
3420         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3421         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3422         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
3423         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3424         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3425         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3426         (TARGET_ASM_SELECT_SECTION): Likewise.
3427         (TARGET_ASM_UNIQUE_SECTION): Likewise.
3428         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
3429         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
3430         (ea_symbol_ref): New function.
3431         (spu_legitimate_constant_p): Handle __ea qualified addresses.
3432         (spu_addr_space_legitimate_address_p): New function.
3433         (spu_addr_space_legitimize_address): Likewise.
3434         (cache_fetch): New global.
3435         (cache_fetch_dirty): Likewise.
3436         (ea_alias_set): Likewise.
3437         (ea_load_store): New function.
3438         (ea_load_store_inline): Likewise.
3439         (expand_ea_mem): Likewise.
3440         (spu_expand_mov): Handle __ea qualified memory references.
3441         (spu_addr_space_pointer_mode): New function.
3442         (spu_addr_space_address_mode): Likewise.
3443         (spu_addr_space_subset_p): Likewise.
3444         (spu_addr_space_convert): Likewise.
3445         (spu_section_type_flags): Handle "._ea" section.
3446         (spu_select_section): New function.
3447         (spu_unique_section): Likewise.
3448         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
3449         and __EA64__ predefined macros.
3450         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
3451         -matomic-updates switches.
3452
3453         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
3454         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
3455         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
3456         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
3457         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
3458         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
3459         $(T)cache128k.o): Likewise.
3460         ($(T)libgcc_%.a): Likewise.
3461
3462         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
3463         * config/spu/spu.opt (-mea32/-mea64): Add switches.
3464         (-maddress-space-conversion): Likewise.
3465         (-mcache-size=): Likewise.
3466         (-matomic-updates): Likewise.
3467         * doc/invoke.texi (-mea32/-mea64): Document.
3468         (-maddress-space-conversion): Likewise.
3469         (-mcache-size=): Likewise.
3470         (-matomic-updates): Likewise.
3471
3472 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3473             Michael Meissner  <meissner@linux.vnet.ibm.com>
3474             Ulrich Weigand  <uweigand@de.ibm.com>
3475
3476         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
3477
3478         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
3479         defined, add the named address space keywords.
3480         (c_addr_space_name): New function.
3481         (complete_array_type): Preserve named address space.
3482         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
3483         instead of targetm.valid_pointer_mode.
3484
3485         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
3486         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
3487         (ADDR_SPACE_KEYWORD): New macro.
3488         (c_addr_space_name): Add prototype.
3489
3490         * c-tree.h (struct c_declspecs): Add address_space member.
3491         (declspecs_add_addrspace): Add prototype.
3492
3493         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
3494
3495         * c-parser.c (c_parse_init): Add assertion.
3496         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
3497         (c_lex_one_token): Handle address space keywords.
3498         (c_token_starts_typename): Likewise.
3499         (c_token_starts_declspecs): Likewise.
3500         (c_parser_declspecs): Likewise.
3501         (c_parser_postfix_expression_after_paren_type): Diagnose compound
3502         literal within function qualified with named address space.
3503
3504         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
3505         address space qualifiers.
3506         (shadow_tag_warned): Warn about useless address space qualifiers.
3507         (quals_from_declspecs): Handle address space qualifiers.
3508         (grokdeclarator): Likewise.
3509         (build_null_declspecs): Likewise.
3510         (declspecs_add_addrspace): New function.
3511
3512         * c-typeck.c (addr_space_superset): New function.
3513         (qualify_type): Handle named address spaces.
3514         (composite_type): Likewise.
3515         (common_pointer_type): Likewise.
3516         (comp_target_types): Likewise.
3517         (build_conditional_expr): Likewise.
3518         (handle_warn_cast_qual): Likewise.
3519         (build_c_cast): Likewise.
3520         (convert_for_assignment): Likewise.
3521         (build_binary_op): Likewise.
3522         (pointer_diff): Handle named address spaces.  Use intermediate
3523         integer type of sufficient size if required.
3524
3525 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3526             Michael Meissner  <meissner@linux.vnet.ibm.com>
3527             Ulrich Weigand  <uweigand@de.ibm.com>
3528
3529         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
3530         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3531         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3532
3533         * target.h (struct target_def): Add pointer_mode, address_mode,
3534         and valid_pointer_mode to addr_space substructure.
3535         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3536         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3537         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3538         (TARGET_ADDR_SPACE_HOOKS): Add them.
3539         * targhooks.c (target_default_pointer_address_modes_p): New function.
3540         * target.h (target_default_pointer_address_modes_p): Add prototype.
3541         * targhooks.c (default_addr_space_pointer_mode): New function.
3542         (default_addr_space_address_mode): Likewise.
3543         (default_addr_space_valid_pointer_mode): Likewise.
3544         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
3545         (default_addr_space_address_mode): Likewise.
3546         (default_addr_space_valid_pointer_mode): Likewise.
3547         * output.h (default_valid_pointer_mode): Move to ...
3548         * targhooks.h (default_valid_pointer_mode): ... here.
3549         * varasm.c (default_valid_pointer_mode): Move to ...
3550         * targhooks.c (default_valid_pointer_mode): ... here.
3551
3552         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
3553         instead of targetm.valid_pointer_mode.
3554
3555         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
3556         * tree.c (integer_pow2p): Likewise.
3557         (tree_log2): Likewise.
3558         (tree_floor_log2): Likewise.
3559         (signed_or_unsigned_type_for): Support pointer type of different size.
3560         (int_or_pointer_precision): New function.
3561         * tree.h (int_or_pointer_precision): Add prototype.
3562         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3563         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3564         incoming pointer type instead of POINTER_SIZE.
3565
3566         * tree.c (build_pointer_type): Use appropriate pointer mode
3567         instead of ptr_mode.
3568         (build_reference_type): Likewise.
3569         * expr.c (store_expr): Likewise.
3570         (expand_expr_addr_expr): Likewise.
3571         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3572         * cfgexpand.c (expand_debug_expr): Likewise.
3573
3574         * auto-inc-dec.c: Include "target.h".
3575         (try_merge): Use appropriate address mode instead of Pmode.
3576         (find_inc): Likewise.
3577         * combine.c (find_split_point): Likewise.
3578         * cselib.c (cselib_record_sets): Likewise.
3579         * dse.c (replace_inc_dec): Likewise.
3580         (canon_address): Likewise.
3581         * var-tracking.c (replace_expr_with_values): Likewise.
3582         (count_uses): Likewise.
3583         (add_uses): Likewise.
3584         (add_stores): Likewise.
3585         * emit-rtl.c: Include "target.h".
3586         (adjust_address_1): Use appropriate address mode instead of Pmode.
3587         (offset_address): Likewise.
3588         * explow.c (break_out_memory_refs): Likewise.
3589         (memory_address_addr_space): Likewise.
3590         (promote_mode): Likewise.
3591         * expr.c (move_by_pieces): Likewise.
3592         (emit_block_move_via_loop): Likewise.
3593         (store_by_pieces): Likewise.
3594         (store_by_pieces_1): Likewise.
3595         (expand_assignment): Likewise.
3596         (store_constructor): Likewise.
3597         (expand_expr_addr_expr): Likewise.
3598         (expand_expr_real_1): Likewise.
3599         * cfgexpand.c (expand_debug_expr): Likewise.
3600         * ifcvt.c (noce_try_cmove_arith): Likewise.
3601         * regcprop.c (kill_autoinc_value): Likewise.
3602         * regmove.c (try_auto_increment): Likewise.
3603         * reload.c (find_reloads): Likewise.
3604         (find_reloads_address): Likewise.
3605         (find_reloads_address_1): Likewise.
3606         * sched-deps.c: Include "target.h".
3607         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3608         (sched_analyze_2): Likewise.
3609         * sel-sched-dump.c: Include "target.h".
3610         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3611         * stor-layout.c (layout_type): Likewise.
3612         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3613         (multiplier_allowed_in_address_p): Likewise.
3614         (get_address_cost): Likewise.
3615         * varasm.c (make_decl_rtl): Likewise.
3616
3617         * expr.c (expand_assignment): Always convert offsets to appropriate
3618         address mode.
3619         (store_expr): Likewise.
3620         (store_constructor): Likewise.
3621         (expand_expr_real_1): Likewise.
3622
3623         * reload.h (form_sum): Add MODE argument.
3624         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
3625         Update recursive calls.
3626         (subst_indexed_address): Update calls to form_sum.
3627
3628         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
3629         * tree-ssa-address.c: Include "target.h".
3630         (templates): Replace by ...
3631         (mem_addr_template_list): ... this new vector.
3632         (TEMPL_IDX): Handle address space numbers.
3633         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
3634         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
3635         instead of global cache.  Update call to gen_addr_rtx.
3636         (valid_mem_ref_p): Update call to addr_for_mem_ref.
3637         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
3638
3639         * rtl.h (convert_memory_address_addr_space): Add prototype.
3640         (convert_memory_address): Define as macro.
3641         * explow.c (convert_memory_address): Rename to ...
3642         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3643         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
3644         Update recursive calls.
3645         (memory_address_addr_space): Call convert_memory_address_addr_space.
3646         * expmed.c (make_tree): Likewise.
3647         * expr.c (expand_assignment): Likewise.
3648         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
3649         (expand_expr_addr_expr): Likewise.  Also, update call.
3650
3651         * alias.c (find_base_value): Guard pointer size optimizations.
3652         (find_base_term): Likewise.
3653         * rtlanal.c (nonzero_bits1): Likewise.
3654         (num_sign_bit_copies1): Likewise.
3655         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
3656
3657         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
3658         (emit-rtl.o): Likewise.
3659         (auto-inc-dec.o): Likewise.
3660         (sched-deps.o): Likewise.
3661
3662 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3663             Michael Meissner  <meissner@linux.vnet.ibm.com>
3664             Ulrich Weigand  <uweigand@de.ibm.com>
3665
3666         * doc/extend.texi (Named Address Spaces): New section.
3667         * coretypes.h (addr_space_t): New type.
3668         (ADDR_SPACE_GENERIC): New define.
3669         (ADDR_SPACE_GENERIC_P): New macro.
3670
3671         * doc/tm.texi (Named Address Spaces): New section.
3672         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
3673         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
3674         (TARGET_ADDR_SPACE_SUBSET_P): Document.
3675         (TARGET_ADDR_SPACE_CONVERT): Document.
3676         * target.h (struct gcc_target): Add addr_space substructure.
3677         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
3678         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3679         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3680         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3681         (TARGET_ADDR_SPACE_HOOKS): Likewise.
3682         (TARGET_INITIALIZER): Initialize addr_space hooks.
3683         * targhooks.c (default_addr_space_legitimate_address_p): New function.
3684         (default_addr_space_legitimize_address): Likewise.
3685         (default_addr_space_subset_p): Likewise.
3686         (default_addr_space_convert): Likewise.
3687         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
3688         (default_addr_space_legitimize_address): Likewise.
3689         (default_addr_space_subset_p): Likewise.
3690         (default_addr_space_convert): Likewise.
3691
3692         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
3693         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
3694         (MEM_ADDR_SPACE): New macro.
3695         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
3696         address space memory attribute.
3697         (mem_attrs_htab_hash): Handle address space memory attribute.
3698         (mem_attrs_htab_eq): Likewise.
3699         (set_mem_attributes_minus_bitpos): Likewise.
3700         (set_mem_alias_set): Likewise.
3701         (set_mem_align): Likewise.
3702         (set_mem_expr): Likewise.
3703         (set_mem_offset): Likewise.
3704         (set_mem_size): Likewise.
3705         (adjust_address_1): Likewise.
3706         (offset_address): Likewise.
3707         (widen_memoy_address): Likewise.
3708         (get_spill_slot_decl): Likewise.
3709         (set_mem_attrs_for_spill): Likewise.
3710         (set_mem_addr_space): New function.
3711         * emit-rtl.h (set_mem_addr_space): Add prototype.
3712         * print-rtl.c (print_rtx): Print address space memory attribute.
3713         * expr.c (expand_assignment): Set address space memory attribute
3714         of generated MEM RTXes as appropriate.
3715         (expand_expr_real_1): Likewise.
3716         * cfgexpand.c (expand_debug_expr): Likewise.
3717         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3718
3719         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
3720         size of "spare" bitfield.
3721         (TYPE_ADDR_SPACE): New macro.
3722         (ENCODE_QUAL_ADDR_SPACE): Likewise.
3723         (DECODE_QUAL_ADDR_SPACE): Likewise.
3724         (CLEAR_QUAL_ADDR_SPACE): Likewise.
3725         (KEEP_QUAL_ADDR_SPACE): Likewise.
3726         (TYPE_QUALS): Encode type address space.
3727         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
3728         * tree.c (set_type_quals): Set type address space.
3729         (build_array_type): Inherit array address space from element type.
3730         * print-tree.c (print_node_brief): Print type address space.
3731         (print_node): Likewise.
3732         * tree-pretty-print.c (dump_generic_node): Likewise.
3733
3734         * explow.c (memory_address): Rename to ...
3735         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3736         Use address-space aware variants of memory address routines.
3737         * recog.c (memory_address_p): Rename to ...
3738         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3739         Use address-space aware variants of memory address routines.
3740         (offsettable_address_p): Rename to ...
3741         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
3742         Use address-space aware variants of memory address routines.
3743         * reload.c (strict_memory_address_p): Rename to ...
3744         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3745         Use address-space aware variants of memory address routines.
3746         (maybe_memory_address_p): Rename to ...
3747         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3748         Use address-space aware variants of memory address routines.
3749         * expr.h (memory_address_addr_space): Add prototype.
3750         (memory_address): Define as macro.
3751         * recog.h (memory_address_addr_space_p): Add prototype.
3752         (memory_address_p): Define as macro.
3753         (offsettable_address_addr_space_p): Add prototype.
3754         (offsettable_address_p): Define as macro.
3755         (strict_memory_address_addr_space_p): Add prototype.
3756         (strict_memory_address_p): Define as macro.
3757
3758         * combine.c (find_split_point): Use address-space aware variants
3759         of memory address routines.
3760         * emit-rtl.c (operand_subword): Likewise.
3761         (change_address_1): Likewise.
3762         (adjust_address_1): Likewise.
3763         (offset_address): Likewise.
3764         * expr.c (emit_move_insn): Likewise.
3765         (expand_assignment): Likewise.
3766         (expand_expr_real_1): Likewise.
3767         * recog.c (verify_changes): Likewise.
3768         (general_operand): Likewise.
3769         (offsettable_memref_p): Likewise.
3770         (offsettable_nonstrict_memref_p): Likewise.
3771         (constrain_operands): Likewise.
3772         * reload.c (get_secondary_mem): Likewise.
3773         (find_reloads_toplev): Likewise.
3774         (find_reloads_address): Likewise.
3775         (find_reloads_subreg_address): Likewise.
3776         * reload1.c (reload): Likewise.
3777         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
3778         * rtl.h (address_cost): Add ADDRSPACE argument.
3779         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
3780         aware variant of memory address routines.
3781         * loop-invariant.c (create_new_invariant): Update address_cost call.
3782         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
3783         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
3784         Use address-space aware variant of memory address routines.
3785         (propagate_rtx_1): Update call to should_replace_address.
3786         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
3787         argument.
3788         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
3789         ADDRSPACE argument.  Use per-address-space instead of global cache.
3790         Use address-space aware variant of memory address routines.
3791         (get_address_cost): Likewise.
3792         (get_computation_cost_at): Update calls.
3793         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
3794         Use address-space aware variant of memory address routines.
3795         (create_mem_ref_raw): Update call to valid_mem_ref_p.
3796         (most_expensive_mult_to_index): Update call to
3797         multiplier_allowed_in_address_p.
3798
3799         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
3800         attribute to indicate named address spaces.
3801
3802         * varasm.c (get_variable_section): DECLs in named address spaces
3803         cannot be "common".
3804
3805         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
3806         for addresses in a non-generic address space.
3807
3808         * expr.c (emit_block_move_hints): Do not use libcalls for
3809         memory in non-generic address spaces.
3810         (clear_storage_hints): Likewise.
3811         (expand_assignment): Likewise.
3812
3813         * fold-const.c (operand_equal_p): Expressions refering to different
3814         address spaces are not equivalent.
3815
3816         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
3817         spaces are not equivalent.
3818         (rtx_equal_p): Likewise.
3819         * cse.c (exp_equiv_p): Likewise.
3820         * jump.c (rtx_renumbered_equal_p): Likewise.
3821         * reload.c (operands_match_p): Likewise.
3822
3823         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
3824         address spaces may alias.
3825         (true_dependence): Likewise.
3826         (canon_true_dependence): Likewise.
3827         (write_dependence_p): Likewise.
3828
3829         * dse.c (canon_address): Handle named address spaces.
3830         * ifcvt.c (noce_try_cmove_arith): Likewise.
3831
3832         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
3833         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
3834         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
3835         to handle conversions between different address spaces.
3836         * fold-const.c (fold_convert_loc): Likewise.
3837         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
3838         * tree-pretty-print.c (dump_generic_node): Likewise.
3839         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
3840         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
3841         * tree-inline.c (estimate_operator_cost): Likewise.
3842         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
3843         to different address spaces are not useless.
3844
3845 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
3846
3847         PR bootstrap/41345
3848         * cfgcleanup.c (trivially_empty_bb_p): New function.
3849         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
3850
3851         PR debug/41828
3852         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
3853         add_name_and_src_coords_attributes, gen_namespace_die,
3854         dwarf2out_set_name): Handle dwarf2_name returning NULL.
3855
3856 2009-10-26  Nick Clifton  <nickc@redhat.com>
3857
3858         * config.gcc: Add support for RX target.
3859         * config/rx: New directory.
3860         * config/rx/constraints.md: New file.
3861         * config/rx/predicates.md: New file.
3862         * config/rx/rx.c: New file.
3863         * config/rx/rx.h: New file.
3864         * config/rx/rx.md: New file.
3865         * config/rx/rx.opt: New file.
3866         * config/rx/rx-protos.h: New file.
3867         * config/rx/t-rx: New file.
3868         * doc/extend.texi: Document RX function attributes.
3869         * doc/invoke.texi: Document RX specific command line options.
3870         * doc/contrib.texi: Document RX contribution.
3871         * doc/md.texi: Document RX constraints.
3872         * doc/install.texi: Document RX support.
3873
3874 2009-10-26  Michael Matz  <matz@suse.de>
3875
3876         PR tree-optimization/41783
3877         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
3878         case for simple diamonds.
3879         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
3880         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
3881         argument, use alias oracle to skip some vdefs.
3882         (phi_translate_1): Change call to above, don't allocate new
3883         value ids if they can stay the same.
3884         (compute_avail): Allow vuse walking when looking up references.
3885
3886 2009-10-26  Richard Guenther  <rguenther@suse.de>
3887
3888         PR tree-optimization/41826
3889         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
3890         access to re-allocated vector fields.
3891
3892 2009-10-26  Richard Guenther  <rguenther@suse.de>
3893
3894         * graphite-sese-to-poly.c (check_poly_representation): Fix
3895         compile without checking.
3896
3897 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
3898
3899         PR fortran/41714
3900         * gimple.h (tree_annotate_all_with_location): Remove prototype.
3901         * gimplify.c (tree_should_carry_location_p,
3902         tree_annotate_one_with_location,tree_annotate_all_with_location):
3903         Remove obsolete functions.
3904
3905 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3906
3907         PR target/41813
3908         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
3909
3910 2009-10-25  Richard Guenther  <rguenther@suse.de>
3911
3912         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
3913         Stream DECL_RESTRICTED_P.
3914         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
3915
3916 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
3917
3918         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
3919         a note when expanding to nothing.
3920
3921 2009-10-25  Richard Guenther  <rguenther@suse.de>
3922
3923         PR middle-end/41814
3924         * tree.c (find_decls_types_r): Deal with Java overloading
3925         BINFO_VIRTUALS for its own purpose.
3926
3927 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
3928
3929         * config/mips/predicates.md (hilo_operand): New predicate.
3930         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
3931         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
3932         splitter part from here ...:
3933         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
3934         op0 and op4 to match the DINS case.
3935         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
3936
3937 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3938
3939         PR middle-end/19154
3940         * avr.md (QIDI): Add new mode iterator.
3941         (sbrx_branch<mode>): Create new zero extract bit, test and jump
3942         patterns for all QI thru DI modes combinations.
3943         (sbrx_and_branch<mode>): Create new and based bit test and jump
3944         patterns for QI thru SI modes.
3945         avr.c (avr_out_sbxx_branch): Use only bit number.
3946
3947 2009-10-24  Jan Hubicka  <jh@suse.cz>
3948
3949         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
3950         to memory.
3951         (analyze_function): When analyzing noreturn nothrow call, do not
3952         compute written stats; free bitmaps of vars early if possible.
3953         (generate_summary): Only update bitmaps if computed.
3954         (propagate): Only dump bitmaps if computed.
3955         (ipa_reference_read_summary): Fix pasto.
3956
3957 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
3958
3959         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
3960         (aliasing_component_refs_p): ...this.  Return true if there is no
3961         common base and the base access types have the same alias set.
3962         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
3963         (indirect_refs_may_alias_p): Likewise.
3964
3965 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3966
3967         PR c/40033
3968         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
3969         a C_MAYBE_CONST_EXPR.
3970
3971 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3972
3973         PR target/41787
3974         * config/rs6000/rs6000.c (struct machine_function): Add
3975         vsx_or_altivec_used_p to record if vector types are used.
3976         (rs6000_expand_to_rtl_hook): Rename from
3977         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
3978         any vector operations, so if there are, we can set VRSAVE to
3979         non-zero when only floating point vector registers are used.
3980         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
3981         (rs6000_check_vector_mode): Inner function to check if vector
3982         types are used in the code.
3983         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
3984         vector instructions are used.
3985
3986         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
3987         Indicate that VSX registers which overlap floating point
3988         registers, can't be used across a call, since the ABI only states
3989         the scalar part of the register will be saved and restored.
3990
3991 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3992
3993         PR c/41673
3994         * alias.c (get_alias_set): Call langhook before returning 0 for
3995         types with structural equality.
3996         * c-common.c (c_common_get_alias_set): Use alias set of element
3997         type for arrays with structural comparison.
3998
3999 2009-10-23  Richard Guenther  <rguenther@suse.de>
4000
4001         PR middle-end/41805
4002         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
4003         gimple_call_nothrow_p.
4004
4005 2009-10-23  Richard Guenther  <rguenther@suse.de>
4006
4007         PR tree-optimization/41778
4008         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
4009         redundancy along a path in the CFG we want to optimize for speed
4010         is going to be removed.
4011         (execute_pre): Do partial-PRE only if the function is to be
4012         optimized for speed.
4013         (gate_pre): Do not turn off all of PRE when not optimizing a
4014         function for speed.
4015
4016 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4017
4018         * builtins.c (fold_builtin_cabs): Use validate_arg().
4019         (fold_builtin_cexp): Fix if-logic.
4020         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
4021
4022 2009-10-22  Jeff Law  <law@redhat.com>
4023
4024         * ira-lives.c (process_single_reg_class_operands): Update the
4025         hard reg costs for all the hard registers desired by the
4026         single reg class operand.
4027
4028 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4029
4030         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
4031         for rtxes that aren't handled specially.
4032
4033 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4034
4035         * rtl.h (shallow_copy_rtvec): Declare.
4036         * rtl.c (shallow_copy_rtvec): New function.
4037         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
4038         rtx field if the subrtx has changed.
4039
4040 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
4041
4042         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
4043         (m32c_function_value): Make static, add new 'outgoing' argument.
4044         (m32c_libcall_value): Make static, add new 'fun' argument.
4045         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4046         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4047         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
4048         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
4049         (m32c_function_value, m32c_libcall_value): Delete declaration.
4050
4051 2009-10-22  Diego Novillo  <dnovillo@google.com>
4052
4053         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
4054
4055 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4056
4057         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
4058         space.
4059
4060 2009-10-22  Richard Guenther  <rguenther@suse.de>
4061
4062         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
4063         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
4064         (lto_symtab_merge): Do not merge cgraph nodes here.
4065         (lto_symtab_resolve_can_prevail_p): Simplify.
4066         (lto_symtab_resolve_symbols): Store cgraph node.
4067         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
4068         functions from the symtab.
4069         (lto_symtab_merge_cgraph_nodes_1): New function.
4070         (lto_symtab_merge_cgraph_nodes): Likewise.
4071
4072 2009-10-22  Richard Guenther  <rguenther@suse.de>
4073
4074         PR lto/41791
4075         * lto-streamer-out.c (lto_output_location): Stream the
4076         system header flag.
4077         * lto-streamer-in.c (lto_input_location): Likewise.
4078
4079 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4080
4081         * cfgloopmanip.c (duplicate_subloops): Export.
4082         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
4083         (transform_to_exit_first_loop): Duplicate bbs starting from
4084         header up to loop->latch instead of exit->src.
4085         Initialize control variable to the correct number of iterations.
4086         (gather_scalar_reductions): Do not register double reductions.
4087         (parallelize_loops): Dump which loop is tested.
4088         Indicate whether the parallelized loop is inner or not.
4089         Remove the innermost-loop requirement.
4090         * cfgloop.h (duplicate_subloops): Export.
4091         * tree-cfg.c (add_phi_args_after_redirect): New function.
4092         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
4093         Call duplicate_subloops.
4094         Update number of iterations at the exit condition.
4095         Don't redirect nexits always to the loop exit.
4096         Redirect copied edges from latch to the loop exit.
4097
4098 2009-10-22  Jan Hubicka  <jh@suse.cz>
4099
4100         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
4101         flag_ltrans check.
4102         * ipa-inline.c (cgraph_mark_inline_edge,
4103         cgraph_decide_inlining_of_small_function,
4104         cgraph_decide_inlining, inline_read_summary): Disable indirect
4105         inlining for WPA for time being.
4106
4107         PR tree-optimize/40556
4108         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
4109
4110 2009-10-22  Richard Guenther  <rguenther@suse.de>
4111
4112         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
4113         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
4114
4115 2009-10-22  Jan Hubicka  <jh@suse.cz>
4116
4117         PR lto/41730
4118         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
4119         global vars.
4120         (check_call): Handle only indirect calls.
4121         (propagate_bits): Update comment.
4122         (write_node_summary_p): Turn bogus check to assert.
4123         (ipa_reference_write_summary): Stream calls_read_all properly.
4124         (ipa_reference_read_summary): Stream in calls_read_all properly.
4125         (read_write_all_from_decl): New function.
4126         (propagate): Handle OVERWRITABLE nodes and external calls here.
4127         * ipa-pre-const.c (check_call): In IPA mode handle indirect
4128         calls only.
4129         (analyze_function): Do not check visibility here.
4130         (add_new_function): We summary OVERWRITABLE too.
4131         (generate_summary): Stream OVERWRITABLE nodes too.
4132         (propagate): Handle external calls and OVERWRITABLE nodes here.
4133         (local_pure_const): Check visibility here.
4134
4135 2009-10-22  Jan Hubicka  <jh@suse.cz>
4136
4137         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
4138         (pass_ipa_cp): Register them.
4139         (ipcp_init_stage): Analyze all functions for whopr/lto.
4140         (ipcp_propagate_stage): Skip external calls.
4141         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
4142         * ipa-reference.c (write_node_summary_p): Fix thinko about
4143         availability.
4144         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
4145         when in ltrans, skip executing of ipa passes since everything
4146         should've been done.
4147         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
4148         (inline_generate_summary): Likewise.
4149         (inline_read_summary): New function.
4150         (inline_write_summary): New function.
4151         (pass_ipa_inline): Register new hooks.
4152         * ipa-prop.c: Inlcude lto-streamer.h
4153         (ipa_edge_args_vector): Update declaration.
4154         (ipa_count_arguments, ipa_compute_jump_functions,
4155         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
4156         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
4157         ipa_read_node_info): New static functions.
4158         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
4159         (duplicate_array): Use xmalloc.
4160         (duplicate_ggc_array): New.
4161         (ipa_edge_duplication_hook): Use it.
4162         (ipa_update_after_lto_read): New function.
4163         * ipa-prop.h (ipa_prop_write_jump_functions,
4164         ipa_prop_read_jump_functions): Declare.
4165         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
4166         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
4167         (ipa_edge_args_vector): Move into GGC.
4168         (ipa_check_create_edge_args): Update.
4169         (ipa_update_after_lto_read): New.
4170         * passes.c (ipa_write_summaries_1): When in wpa, do not write
4171         summaries.
4172         (ipa_read_summaries): When in ltrans, so not read summaries.
4173         * lto-streamer.c (lto_get_section_name): Add
4174         LTO_section_jump_functions.
4175         * lto-streamer.h (LTO_section_jump_functions): New section.
4176         (produce_asm): Declare.
4177         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
4178         * lto-streamer-out.c (produce_asm): Export.
4179         * lto-streamer-in.c: Include tree-pass.h
4180         (input_function): Free dominance info when done.
4181         (lto_read_body): Push ipa_inline in ltrans stage.
4182         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
4183         * Makefile.in (GTFILES): Add ipa-prop.h
4184
4185 2009-10-22  Matthias Klose  <doko@ubuntu.com>
4186
4187         * doc/install.texi: Document --enable-browser-plugin.
4188
4189 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
4190
4191         * doc/invoke.texi (fira-loop-pressure): Update default value.
4192         * opts.c (decode_options): Remove default value setting for
4193         flag_ira_loop_pressure.
4194         * config/ia64/ia64.c (ia64_override_options): Set
4195         flag_ira_loop_pressure up for -O3.
4196         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
4197
4198 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
4199
4200         PR tree-optimization/41497
4201         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
4202         chrec_dont_know if the evolution function returned by follow_ssa_edge
4203         is constant in the analyzed loop and is not compatible with the
4204         initial value before the loop.
4205         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
4206
4207 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
4208
4209         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
4210
4211 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
4212
4213         PR other/25507
4214         * doc/invoke.texi: Document -print-multi-os-directory.
4215
4216 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
4217
4218         PR c++/41313
4219         * gcc/config/darwin10.h: Use default_emit_unwind_label.
4220         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
4221         when darwin_emit_unwind_label is used.
4222
4223 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
4224
4225         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
4226         order of checks.
4227
4228 2009-10-20  Richard Henderson  <rth@redhat.com>
4229
4230         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
4231         before emit_post_landing_pad.
4232
4233 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
4234
4235         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
4236         Use when calling rtx_costs.
4237         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
4238         global optimize_size.  Pass speed to mips_binary_cost.
4239
4240 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4241
4242         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
4243         of TREE_CONSTANT.
4244
4245 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
4246
4247         * rtl.h (simplify_replace_fn_rtx): Declare.
4248         (wrap_constant, unwrap_constant): Delete.
4249         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
4250         (expand_debug_expr): Don't call wrap_constant.
4251         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
4252         (auto_adjust_pair): Fold into...
4253         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
4254         Just return a new value.
4255         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
4256         otherwise use simplify_replace_rtx.
4257         * cselib.c (wrap_constant): Reinstate old definition.
4258         (cselib_expand_value_rtx_1): Don't wrap constants.
4259         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
4260         simplify_replace_rtx.
4261         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
4262         * reload1.c (reload): Skip all uses for an insn before adjusting it.
4263         Use simplify_replace_rtx.
4264         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
4265         adapted from...
4266         (simplify_replace_rtx): ...here.  Turn into a wrapper for
4267         simplify_replace_fn_rtx.
4268         (simplify_unary_operation): Don't unwrap CONSTs.
4269         * var-tracking.c (check_wrap_constant): Delete.
4270         (vt_expand_loc_callback): Don't call it.
4271         (vt_expand_loc): Likewise.
4272
4273 2009-10-20  Pascal Obry  <obry@adacore.com>
4274             Eric Botcazou  <ebotcazou@adacore.com>
4275
4276         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
4277
4278 2009-10-20  Michael Matz  <matz@suse.de>
4279
4280         * loop-invariant.c (create_new_invariant): Use different magic number.
4281
4282 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
4283
4284         PR target/39247
4285         * arm.c (arm_override_options): Forcibly disable hot/cold block
4286         partitioning.
4287
4288 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4289
4290         PR debug/41739
4291         * haifa-sched.c (try_ready): Skip debug deps updating speculation
4292         status.
4293
4294 2009-10-20  Richard Guenther  <rguenther@suse.de>
4295
4296         * ggc-page.c: Include cfgloop.h.
4297         (struct max_alignment): Drop long double, add void *.
4298         (extra_order_size_table): Add low non-power-of-two multiples
4299         of MAX_ALIGNMENT.  Drop small type-based entries, add
4300         tree_type, cgraph_node and loop.
4301         * alloc-pool.c (struct allocation_object_def): Drop long double
4302         aligning element.
4303
4304 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4305
4306         PR debug/41340
4307         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
4308         referenced just in DEBUG_INSNs.
4309
4310 2009-10-20  Richard Guenther  <rguenther@suse.de>
4311
4312         PR lto/41761
4313         * gimple.c (gimple_register_type): Make sure we register
4314         the types main variant first.
4315
4316 2009-10-20  Richard Guenther  <rguenther@suse.de>
4317
4318         * gimple.c (gimple_types_compatible_p): Simplify.  Move
4319         cheap checks before hashtable queries.  Add checks for
4320         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
4321
4322 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
4323
4324         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
4325         without size or with size that can't be represented as a host integer.
4326
4327 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4328
4329         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
4330         the removal of a debug stmt as a significant change.
4331
4332 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
4333
4334         * config/s390/s390.md: Added agen condition to operand
4335         forwarding bypasses.  Added bypass for early address generation
4336         use of int results.  Updated comments.
4337
4338 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
4339
4340         * config/i386/i386.c: Remove signal.h #include.
4341
4342 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
4343
4344         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
4345         * doc/rtl.texi: Document ss_abs.
4346
4347 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4348
4349         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
4350         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
4351         instead of C_LEX_RAW_STRINGS.
4352         (lex_string): Handle CPP_UTF8STRING.
4353         * c-parser.c (c_parser_postfix_expression): Likewise.
4354         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
4355         (C_LEX_STRING_NO_JOIN): ... this.
4356
4357 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
4358
4359         * config/cris/cris.c (cris_function_value, cris_libcall_value,
4360         cris_function_value_regno_p): New functions.
4361         (cris_promote_function_mode): Update comment.
4362         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4363         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4364         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
4365         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
4366
4367 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4368
4369         * unwind-dw2.c (execute_stack_op): Fix operand order for
4370         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
4371
4372 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
4373
4374         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
4375         (lower_stmt) <GIMPLE_BIND>: Add comment.
4376         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
4377         and return.
4378         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
4379         Otherwise lower it and set cannot_fallthru to true.
4380         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
4381         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
4382         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
4383         to true for a noreturn call.  Do not remove statements.
4384         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
4385         Set cannot_fallthru to false on function exit.
4386         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
4387         <GIMPLE_ASSIGN>: Remove.
4388
4389 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4390
4391         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
4392
4393 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4394
4395         * config/s390/s390.c (s390_z10_optimize_cmp): Use
4396         next/prev_active_insn to skip DEBUG_INSNs as well.
4397
4398 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
4399
4400         * config/arm/arm.c (output_move_neon): Use DImode in call to
4401         adjust_address.
4402
4403 2009-10-19  Matthias Klose  <doko@ubuntu.com>
4404
4405         PR target/40134
4406         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
4407
4408 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4409
4410         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
4411
4412 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4413
4414         PR middle-end/41738
4415         * optabs.c (expand_binop): Make mode of shift count expression mode
4416         of shift count not target.
4417         Remove indent nit.
4418
4419 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4420
4421         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
4422         case.  Force using values to replace references within the statement.
4423         (convert_local_reference_stmt): Likewise.
4424
4425 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4426
4427         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
4428         remove a subsequent GOTO or RETURN statement.
4429
4430 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
4431
4432         * config/avr.md (*movqi): Add zero as equally preferable constraint
4433         as general register.
4434         (*movhi): Ditto.
4435
4436 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4437
4438         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
4439
4440 2009-10-17  Richard Guenther  <rguenther@suse.de>
4441
4442         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
4443
4444 2009-10-17  Richard Guenther  <rguenther@suse.de>
4445
4446         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
4447         operands in COMPONENT_REFs.
4448
4449 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
4450
4451         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
4452         if not defined. Change type of second argument to const_rtx.
4453         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
4454         macro not defined.
4455         * targhooks.h (default_libcall_value): Update prototype.
4456         * target.h (struct gcc_target): Change type of second argument of
4457         libcall_value to const_rtx.
4458         * config/arm/arm.c (arm_libcall_value): Change type of second argument
4459         to const_rtx.
4460         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
4461         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
4462
4463 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
4464
4465         PR debug/40521
4466         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
4467         * cgraphunit.c (cgraph_optimize): Call it.
4468         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
4469         (dwarf2out_assembly_start): ... here.  New hook.
4470         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
4471         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
4472         hook.
4473         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
4474         * sdbout.c (sdb_debug_hooks): Likewise.
4475         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
4476         (vmsdbgout_assembly_start): New hook.
4477
4478 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4479
4480         * rtl.h (RTL_LOCATION): Fix typo.
4481
4482 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4483
4484         * print-rtl.c (print_rtx): Print locators in asm_operands
4485         and asm_input.
4486
4487 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4488
4489         PR debug/41535
4490         * sched-deps.c (depl_on_debug_p): New.
4491         (attach_dep_link): Reject debug deps before nondebug deps.
4492         (add_to_deps_list): Insert debug deps after nondebug deps.
4493         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
4494         deps.
4495         (sd_add_dep): Do not reject debug deps.
4496         (add_insn_mem_dependence): Don't count debug deps.
4497         (remove_from_deps): Likewise.
4498         (sched_analyze_2): Set up mem deps on debug insns.
4499         (sched_analyze_insn): Record reg uses for deps on debug insns.
4500         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
4501         try_ready nondebug insn after debug insn.
4502         * ddg.c (create_ddg_dep_from_intra_loop_link,
4503         create_ddg_dep_no_link): Don't reject debug deps.
4504
4505 2009-10-16  Richard Guenther  <rguenther@suse.de>
4506
4507         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
4508         (maybe_merge_incomplete_and_complete_type): Likewise.
4509         (lto_symtab_merge): Do not call them.  Do not warn for
4510         complete vs. incomplete compatible types.
4511         (lto_symtab_merge_decls_2): Simplify.
4512         * gimple.c (gimple_force_type_merge): Remove.
4513         (gimple_types_compatible_p): Make it static.
4514         * gimple.h (gimple_force_type_merge): Remove.
4515         (gimple_types_compatible_p): Likewise.
4516
4517 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
4518
4519         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
4520         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
4521
4522 2009-10-16  Richard Guenther  <rguenther@suse.de>
4523
4524         PR tree-optimization/41728
4525         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
4526         if fold_stmt did anything.
4527
4528 2009-10-16  Richard Guenther  <rguenther@suse.de>
4529
4530         PR lto/41715
4531         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
4532         (maybe_fixup_handled_component): New function.
4533         (input_gimple_stmt): Fixup mismatched decl replacements.
4534
4535 2009-10-16  Richard Guenther  <rguenther@suse.de>
4536
4537         PR lto/41713
4538         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
4539         the same as VAR_DECL.
4540
4541 2009-10-16  Richard Guenther  <rguenther@suse.de>
4542
4543         * gimple.c (iterative_hash_gimple_type): For integer types
4544         also hash their minimum and maximum values and the string flag.
4545         For array types hash their domain and the string flag.
4546
4547 2009-10-16  Richard Guenther  <rguenther@suse.de>
4548
4549         * gimple.c (gimple_types_compatible_p): Restrict completing
4550         types to record or unions.  Simplify completion.
4551         Do not merge records or unions with different
4552         TYPE_STRUCTURAL_EQUALITY_P tag.
4553         (iterative_hash_gimple_type): Restrict non-recursing into
4554         pointer targets for records and unions.
4555
4556 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4557
4558         PR debug/41717
4559         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
4560         * dwarf2out.c (mem_loc_descriptor): Don't handle
4561         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
4562         punt if it is not lowpart subreg or if inner mode isn't
4563         MODE_INT.
4564
4565 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4566
4567         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
4568         investigating previous or next insns.
4569
4570 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
4571
4572         * tree-sra.c (build_ref_for_offset_1): Update comment.
4573
4574 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
4575
4576         * config/s390/s390.md (atype): Added missing values.
4577
4578 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4579
4580         PR target/41702
4581         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
4582         (casesi64p): Update pattern to reflect above.
4583
4584 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
4585
4586         PR rtl-optimization/41697
4587         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
4588
4589 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
4590
4591         PR target/23983
4592         * config/rs6000/predicates.md: Update copyright year.
4593         * config/rs6000/altivec.md: Ditto.
4594
4595         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
4596         (MD_INCLUDES): Add a2.md.
4597
4598         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
4599         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
4600         (builtin_classify): New static vector to classify various builtins
4601         to get the tree attributes correct.
4602         (def_builtin): Set the attributes of builtins based on what the
4603         builtin does (i.e. memory operation, floating point, saturation
4604         need special attributes, others are pure functions).
4605
4606         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
4607         the builtins.
4608         (enum rs6000_builtins): Include rs6000-builtin.def to define the
4609         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
4610         RS6000_BUILTIN_COUNT.
4611         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
4612         MAX_RS6000_BUILTINS.
4613
4614         * config/rs6000/rs6000-builtin.def: New file that combines the
4615         builtin enumeration name and attributes.
4616
4617 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4618
4619         * config/i386/linux.h (ASM_SPEC): Add --32.
4620
4621 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4622
4623         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
4624         and DW_TAG_template_alias.
4625         (dwarf_attr_name): Handle DW_AT_main_subprogram,
4626         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
4627         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
4628         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
4629         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
4630         and DW_AT_GNU_odr_signature.
4631         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
4632         DW_FORM_flag_present and DW_FORM_ref_sig8.
4633         (output_signature): Only print name on the first byte.
4634         (output_die): Likewise for dw_val_class_data8.
4635
4636 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
4637
4638         * doc/invoke.texi: Clarify that most optimizations are not enabled
4639         without -O.
4640
4641 2009-10-15  Richard Guenther  <rguenther@suse.de>
4642
4643         PR lto/41668
4644         * gimple.c (compare_type_names_p): Handle anonymous names
4645         differently based on new mode argument.
4646         (gimple_types_compatible_p): For structs also compare the tags.
4647         (iterative_hash_type_name): Rename to ...
4648         (iterative_hash_name): ... this.  Hash all names.
4649         (iterative_hash_gimple_type): Fix hashing the struct tag of
4650         pointer targets.  Hash field decl names.
4651
4652 2009-10-15  Richard Guenther  <rguenther@suse.de>
4653
4654         PR lto/41669
4655         * gimple.c (gimple_get_alias_set): Avoid recursing on
4656         invalid type topology.
4657
4658 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4659
4660         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
4661
4662 2009-10-15  Richard Guenther  <rguenther@suse.de>
4663
4664         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
4665
4666 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4667
4668         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
4669         add --with-tune{,-32,-64} configured default for -mtune if explicit
4670         -mcpu is used.
4671
4672 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
4673
4674         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
4675
4676 2009-10-14  DJ Delorie  <dj@redhat.com>
4677
4678         * config/h8300/h8300.c (F): New.
4679         (Fpa): New.
4680         (h8300_emit_stack_adjustment): Call them.
4681         (push): Likewise.
4682         (h8300_push_pop): Likewise.
4683         (h8300_expand_prologue): Likewise.
4684         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
4685         (MUST_USE_SJLJ_EXCEPTIONS): Define.
4686         (INCOMING_RETURN_ADDR_RTX): Define.
4687         (INCOMING_FRAME_SP_OFFSET): Define.
4688         (DWARF_CIE_DATA_ALIGNMENT): Define.
4689
4690 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4691
4692         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
4693         fields in builtin structs.
4694         (finalize_record_size): Likewise.
4695
4696 2009-10-14  Richard Guenther  <rguenther@suse.de>
4697
4698         * gimple.c (gtc_ob): New global.
4699         (struct type_pair_d): Replace pointers with type UIDs.
4700         (type_pair_hash): Adjust.
4701         (type_pair_eq): Likewise.
4702         (lookup_type_pair): Likewise.  Allocate from an obstack.
4703         (gimple_force_type_merge): Adjust.
4704         (gimple_types_compatible_p): Likewise.
4705         (free_gimple_type_tables): Free the obstack.
4706
4707 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4708
4709         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
4710         stmts setting DEBUG_EXPR_DECLs.
4711
4712         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
4713         Don't crash if mode1 is VOIDmode.
4714
4715 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4716
4717         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
4718         * params.h (IRA_LOOP_RESERVED_REGS): New.
4719         * tree-pass.h (pass_subregs_of_mode_init,
4720         pass_subregs_of_mode_finish): Remove.
4721         * passes.c (pass_subregs_of_mode_init,
4722         pass_subregs_of_mode_finish): Remove.
4723         (pass_reginfo_init): Move before loop optimizations.
4724         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
4725         * common.opt (fira-loop-pressure): New.
4726         * toplev.h (flag_ira_loop_pressure): New.
4727         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
4728         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
4729         Make external and void type functions.
4730         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
4731         pass_subregs_of_mode_finish): Remove.
4732         * ira-costs.c (init_costs): Call init_subregs_of_mode.
4733         * regmove.c: Include ira.h.
4734         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
4735         register pressure calculation in loops.
4736         * loop-invariant.c: Include REGS_H and ira.h.
4737         (struct loop_data): New members max_reg_pressure, regs_ref, and
4738         regs_live.
4739         (struct invariant): New member orig_regno.
4740         (curr_loop): New variable.
4741         (find_exits): Initialize regs_ref and regs_live.
4742         (create_new_invariant): Initialize orig_regno.
4743         (get_cover_class_and_nregs): New.
4744         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
4745         array.  Add code for flag_ira_loop_pressure.
4746         (gain_for_invariant): Make new_regs an array.  Add code for
4747         flag_ira_loop_pressure.
4748         (best_gain_for_invariant): Ditto.
4749         (set_move_mark): New parameter gain.  Use it for debugging output.
4750         (find_invariants_to_move): Make regs_needed and new_regs an array.
4751         Add code for flag_ira_loop_pressure.
4752         (move_invariant_reg): Set up orig_regno.
4753         (move_invariants): Set up reg classes for pseudos for
4754         flag_ira_loop_pressure.
4755         (free_loop_data): Clear regs_ref and regs_live.
4756         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
4757         get_regno_cover_class, change_pressure, mark_regno_live,
4758         mark_regno_death, mark_reg_store, mark_reg_clobber,
4759         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
4760         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
4761         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
4762         register pressure calculation in loops if new regs were added.
4763         Call finish_subregs_of_mode.
4764         * opts.c (decode_options): Set up flag_ira_loop_pressure.
4765         * Makefile.in (loop-invariant.o): Add ira.h.
4766         (regmove.o): Ditto.
4767         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
4768         Describe.
4769         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
4770
4771 2009-10-14  Richard Guenther  <rguenther@suse.de>
4772
4773         * lto-symtab.c (lto_symtab_compatible): Fold in ...
4774         (lto_symtab_merge): ... here.  Rewrite both to take the
4775         prevailing and a to-be-merged entry and to queue diagnostics properly.
4776         (lto_symtab_resolve_replaceable_p): New predicate for
4777         symbol resolution.
4778         (lto_symtab_resolve_can_prevail_p): Likewise.
4779         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
4780         handles merging commons by choosing the largest decl.  Fold
4781         in code that gives ODR errors.
4782         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
4783         diagnostics here.
4784         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
4785         case of no prevailing decl here.  Diagnose mismatches
4786         in object types here.  Drop all but the prevailing decls.
4787         (lto_symtab_prevailing_decl): Return the single prevailing decl.
4788         * lto-streamer-in.c (lto_input_tree_ref): Deal with
4789         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
4790
4791 2009-10-14  Richard Guenther  <rguenther@suse.de>
4792
4793         PR lto/41521
4794         * lto-streamer-in.c (input_bb): Replace debug stmts with
4795         nops instead of dropping them.
4796
4797 2009-10-14  Nick Clifton  <nickc@redhat.com>
4798
4799         * gcc/doc/extended.texi: Replace the dash character with @minus{}
4800         in situations where it is being used as a minus symbol.
4801         * gcc/doc/tm.texi: Likewise.
4802         * gcc/doc/md.texi: Likewise.
4803
4804 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4805
4806         PR preprocessor/41543
4807         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
4808         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
4809         * tree.c: Include intl.h.
4810         (expand_location): Handle BUILTINS_LOCATION.
4811         * Makefile.in (tree.o): Depend on intl.h.
4812
4813         PR debug/41695
4814         * dwarf2out.c (dwarf2out_var_location): Always clear
4815         last_postcall_label when changing last_label.
4816
4817 2009-10-14  Pascal Obry  <obry@adacore.com>
4818
4819         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
4820         (process_command): Handle -E as done with -c and -S.  Do not add
4821         the target executable suffix to the output file when -E is used.
4822         (main): Adjust error message accordingly.
4823
4824 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
4825
4826         PR debug/41343
4827         PR debug/41447
4828         PR debug/41264
4829         PR debug/41338
4830         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
4831         decl with rtl.
4832         (tree_code_size): Likewise.
4833
4834 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4835
4836         * builtins.c (fold_builtin_1): Support complex "arc" functions.
4837         * real.h (HAVE_mpc_arc): Define.
4838
4839 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
4840
4841         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
4842         (struct builtin_description): Add fndecl field.
4843         (bdesc): Remove const qualifier.  Update initializer.
4844         (sh_media_init_builtins): Remove const qualifier for d.  Record
4845         the result of add_builtin_function to the fndecl field.
4846         (sh_builtin_decl): New.
4847         (sh_media_builtin_decl): New.
4848
4849 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
4850
4851         PR target/38948
4852         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
4853         requests between special registers.
4854
4855 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
4856
4857         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
4858
4859 2009-10-13  Richard Henderson  <rth@redhat.com>
4860
4861         PR tree-optimization/41377
4862         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
4863         (cleanup_empty_eh_merge_phis): New change_region parameter;
4864         pass it on to redirect_eh_edge_1.  Update callers.
4865         (cleanup_empty_eh_unsplit): Don't require an existing EH label
4866         at the destination block.
4867
4868 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
4869
4870         * passes.c (register_pass): Replaced gcc_unreachable by
4871         fatal_error on failure. Mentions plugins in comments & messages.
4872
4873 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
4874
4875         PR target/41693
4876         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
4877         * sched-vis.c (print_value): Use it.
4878         * cselib.c (cselib_hash_rtx): Likewise.
4879         * print-rtl.c (print_rtx): Likewise.
4880         * cfgexpand.c (expand_debug_rtx): Likewise.
4881         * var-tracking.c (vt_expand_loc_callback): Likewise.
4882
4883 2009-10-13  Richard Guenther  <rguenther@suse.de>
4884
4885         PR lto/41565
4886         * opts.c (handle_option): Split out code to handle setting
4887         the options flag var ...
4888         (set_option): ... here.
4889         * opts.h (set_option): Declare.
4890         * lto-opts.c (register_user_option_p): Include -fexceptions
4891         and all position independent code variants.
4892         (handle_common_option): Remove.
4893         (lto_reissue_options): Use set_option.
4894
4895 2009-10-13  Martin Jambor  <mjambor@suse.cz>
4896
4897         PR tree-optimization/41661
4898         * ipa-prop.c (compute_complex_pass_through): Allow only operations
4899         that are tcc_comparisons or do not change the type in any
4900         un-usleless way.
4901         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
4902         folding tcc_comparison operations.
4903
4904 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4905
4906         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
4907         properly.
4908
4909 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4910
4911         PR debug/41343
4912         PR debug/41447
4913         PR debug/41264
4914         PR debug/41338
4915         * tree.def (DEBUG_EXPR_DECL): New.
4916         * rtl.def (DEBUG_EXPR): New.
4917         * gengtype.c (adjust_field_rtx_def): Handle it.
4918         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
4919         (insert_debug_temp_for_var_def): ... this.  Drop support for
4920         moving.  Take iterator for def stmt; insert debug stmt before it.
4921         Scan early for use count and kind in debug stmts.
4922         (propagate_defs_into_debug_stmts): Rename to...
4923         (insert_debug_temps_for_defs): ... this.  Likewise.
4924         * tree.h (DEBUG_TEMP_UID): New.
4925         * tree.c (next_debug_decl_uid): New.
4926         (make_node_stat): Count debug decls separately.
4927         (copy_node_stat): Likewise.
4928         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
4929         * var-tracking.c (dv_is_decl_p): Recognize it.
4930         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
4931         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
4932         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
4933         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
4934         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
4935         (cselib_hash_rtx): Likewise.
4936         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
4937         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
4938         debug bind stmts.
4939         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
4940         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
4941         * rtl.c (copy_rtx): Likewise.
4942         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
4943         * print-rtl.c (print_rtx): Likewise.
4944         * sched-vis.c (print_value): Likewise.
4945         (print_insn): Handle DEBUG_EXPR_DECL.
4946         * tree-dump.c (dequeue_and_dump): Likewise.
4947         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
4948         * gimple-iterator (gsi_replace): Check for same lhs.
4949         (gsi_remove): Insert debug temps.
4950         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
4951         (move_computations_stmt): Drop explicit propagation into debug stmts.
4952         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
4953         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
4954         * tree-ssa-sink.c (statement_sink_location): Likewise.
4955         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
4956         * tree-ssanames.c (release_ssa_name): Adjust for rename.
4957         * tree-flow.h: Likewise.
4958         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
4959         debug temps without values.
4960         (eliminate_unnecessary_stmts): Don't discard just-inserted
4961         debug stmts.
4962
4963 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
4964
4965         PR target/26515
4966         * config/cris/cris.md (andu): Check that operand 1 is one of the
4967         general registers.  Fix typo in head comment.
4968
4969 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
4970
4971         * config/i386/i386.md (vswapmov): New.
4972         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
4973         (ix86_function_ms_hook_prologue): New.
4974         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
4975         * configure.ac: Test for swap suffix support in as.
4976         * configure: Rebuild.
4977
4978 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
4979
4980         PR target/41680
4981         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
4982         paradoxical subregs to prevent partial register stalls if the inner
4983         mode is integer mode.
4984
4985 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4986
4987         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
4988
4989 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
4990
4991         PR c++/41570
4992         * gcc/dwarf2out.c (template_parameter_pack_die,
4993         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
4994
4995 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4996
4997         PR debug/41616
4998         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
4999         on updates too.
5000         (maybe_register_def): Likewise.  Take stmt iterator.
5001         (rewrite_update_stmt): Take stmt iterator and pass it on.
5002         (rewrite_update_enter_block): Pass stmt iterator.
5003
5004 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5005
5006         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
5007         (spu_builtin_decl): New function.
5008
5009 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5010
5011         * config/i386/i386.md (SWIM): New mode iterator.
5012         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
5013         using SWIM mode iterator.
5014         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
5015         patterns using SWI48 mode iterator.
5016         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
5017         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
5018         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
5019         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
5020         patterns using SWI248 mode iterator.
5021         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
5022         gen_x86_movdicc_0_m1_rex64 for renamed function
5023
5024 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
5025             Eric Botcazou  <ebotcazou@adacore.com>
5026
5027         PR target/33743
5028         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
5029         * config/sparc/sol2-unwind.h: New file.
5030
5031 2009-10-11  Olivier Hainque  <hainque@adacore.com>
5032             Eric Botcazou  <ebotcazou@adacore.com>
5033
5034         PR target/33743
5035         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
5036         * config/i386/sol2-unwind.h: New file.
5037
5038 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
5039
5040         PR target/41665
5041         * config/i386/i386.md (addsi_1_zext): Get the proper second
5042         operand for lea.
5043
5044 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
5045
5046         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
5047         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
5048         replacement value.
5049
5050 2009-10-11  Richard Guenther  <rguenther@suse.de>
5051
5052         * gimple.c (iterative_hash_type_name): Do not handle special
5053         anonymous names.
5054
5055 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
5056
5057         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
5058         (*setcc_si_1_and): Ditto.
5059         (*setcc_si_1_movzbl): Ditto.
5060         (*setcc_<mode>_2): Ditto.
5061         (*setcc_qi): Rename from *setcc_1.
5062         (*setcc_qi_slp): Rename from *setcc_2.
5063
5064         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
5065         (*zero_extendqisi2_movzbw_and splitter): Ditto.
5066
5067         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
5068         "if" condition, there is already assert with reload_completed present.
5069
5070 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
5071
5072         * plugin.c (try_init_one_plugin): Improve constness of variable err.
5073
5074 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
5075
5076         * doc/install.texi (Final install): Refer to
5077         http://gcc.gnu.org/bugs/ for bug reporting.
5078
5079 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
5080
5081         * configure.ac: Add test for dci instruction.
5082         * configure: Regenerate.
5083         * config.in: Likewise.
5084         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
5085         * doc/invoke.texi: Add cpu_type 476 and 476fp.
5086         (-mmulhw): Add 476 to description.
5087         (-mdlmzb): Likewise.
5088         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
5089         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
5090         (processor_target_table): Add 476 and 476fp entries.
5091         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
5092         (rs6000_issue_rate): Add CPU_PPC476.
5093         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
5094         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
5095         (processor_type): Add PROCESSOR_PPC476.
5096         (EXTRA_SPECS): Add asm_cpu_476 string.
5097         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
5098         (define_attr "cpu"): Add ppc476.
5099         Include 476.md.
5100         Update comments for 476.
5101         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
5102         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
5103         Update copyright year.
5104         * config/rs6000/476.md: New file.
5105         * config/rs6000/40x.md: Add description for "isel" attribute.
5106         Update copyright year.
5107         * config/rs6000/440.md: Likewise.
5108         * config/rs6000/603.md: Likewise.
5109         * config/rs6000/6xx.md: Likewise.
5110         * config/rs6000/7450.md: Likewise.
5111         * config/rs6000/7xx.md: Likewise.
5112         * config/rs6000/8540.md: Likewise.
5113         * config/rs6000/cell.md: Likewise.
5114         * config/rs6000/e300c2c3.md: Likewise.
5115         * config/rs6000/e500mc.md: Likewise.
5116         * config/rs6000/mpc.md: Likewise.
5117         * config/rs6000/power4.md: Likewise.
5118         * config/rs6000/power5.md: Likewise.
5119         * config/rs6000/power6.md: Likewise.
5120         * config/rs6000/power7.md: Likewise.
5121         * config/rs6000/rios1.md: Likewise.
5122         * config/rs6000/rios2.md: Likewise.
5123         * config/rs6000/rs64.md: Likewise.
5124
5125 2009-10-10  Richard Guenther  <rguenther@suse.de>
5126
5127         PR tree-optimization/41654
5128         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
5129         a cond expr before calling gimple_cond_set_condition_from_tree.
5130         (ifcombine_iforif): Likewise.
5131
5132 2009-10-09  Ian Lance Taylor  <iant@google.com>
5133
5134         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
5135         * configure: Rebuild.
5136
5137 2009-10-09  Neil Vachharajani <nvachhar@google.com>
5138
5139         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
5140         deprecated.
5141
5142 2009-10-09  Richard Guenther  <rguenther@suse.de>
5143
5144         PR lto/41638
5145         * target-def.h (TARGET_BUILTIN_DECL): Define.
5146         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
5147         * target.h (struct gcc_target): Add builtin_decl target hook.
5148         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
5149         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
5150         target builtins.
5151         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
5152         not gcc_unreachable.
5153         (lto_output_builtin_tree): Sorry if the target does not support
5154         streaming target builtins.
5155         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
5156         (rs6000_builtin_decl): New function.
5157         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
5158         (ix86_builtin_decl): New function.
5159
5160 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
5161
5162         PR preprocessor/41445
5163         * c-ppoutput.c (do_line_change): New function.
5164         (cb_line_change): Use it.
5165         (scan_translation_unit): Call do_line_change if
5166         avoid_paste or PREV_WHITE and token location is on a different line
5167         than print.src_line.
5168
5169         PR debug/40521
5170         * dwarf2out.c (dwarf2out_init): Test whether
5171         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
5172         it is defined.
5173
5174         PR rtl-optimization/41646
5175         * calls.c (expand_call): For BLKmode types returned in registers
5176         avoid likely spilled hard regs in copy_blkmode_from_reg generated
5177         insns.
5178
5179 2009-10-09  Richard Guenther  <rguenther@suse.de>
5180
5181         PR tree-optimization/41634
5182         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
5183         we remove the correct elements.
5184         (optimize_stmt): Make sure to update stmt operands before
5185         optimizing redundancies.
5186
5187 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5188
5189         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
5190
5191 2009-10-09  Richard Guenther  <rguenther@suse.de>
5192
5193         PR driver/41637
5194         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
5195         globals.
5196         (lto_wrapper_exit): New function.
5197         (fatal): Use it.
5198         (fatal_perror): Likewise.
5199         (fork_execute): Use global args_name, do not free it.
5200         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
5201         * lto-streamer.h: Remove duplicate prototypes.
5202
5203 2009-10-09  Richard Guenther  <rguenther@suse.de>
5204
5205         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
5206         before calling stmt_can_throw_external.
5207
5208 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
5209
5210         PR tree-optimization/40071
5211         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
5212         pointer if the original data reference doesn't conflict with the
5213         created vector data reference.  Fix long line.
5214
5215 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
5216
5217         * config/i386/i386.md (any_div): New code iterator.
5218         (u): Handle div and udiv.
5219         (sgnprefix): Ditto.
5220         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
5221         code iterator.
5222         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
5223         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
5224         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
5225         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
5226
5227 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
5228
5229         * gcc.c (main): Remove trailing "." from diagnostics.
5230
5231 2009-10-08  Cary Coutant  <ccoutant@google.com>
5232
5233         Add support for debugging with ICF (Identical Code Folding).
5234         * calls.c (debug.h): New #include.
5235         (emit_call_1): Call virtual_call_token debug hook.
5236         * common.opt (-fenable-icf-debug): New option.
5237         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
5238         locations in the source).
5239         (poc_label_num): New variable.
5240         (dcall_entry, vcall_entry): New typedefs.
5241         (dcall_table, vcall_table): New variables.
5242         (struct vcall_insn): New type.
5243         (vcall_insn_table): New variable.
5244         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
5245         (size_of_dcall_table): New function.
5246         (output_dcall_table): New function.
5247         (size_of_vcall_table): New function.
5248         (output_vcall_table): New function.
5249         (dwarf2out_direct_call): New function.
5250         (vcall_insn_table_hash): New function.
5251         (vcall_insn_table_eq): New function.
5252         (dwarf2out_virtual_call_token): New function.
5253         (dwarf2out_virtual_call): New function.
5254         (dwarf2out_init): Allocate new tables and sections.
5255         (prune_unused_types): Mark DIEs referenced from direct call table.
5256         (dwarf2out_finish): Output direct and virtual call tables.
5257         * final.c (final_scan_insn): Call direct_call and virtual_call
5258         debug hooks.
5259         * debug.h (struct gcc_debug_hooks): Add direct_call,
5260         virtual_call_token, virtual_call hooks.
5261         (debug_nothing_uid): New function.
5262         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
5263         (debug_nothing_uid): New function.
5264         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
5265         (xcoff_debug_hooks): Likewise.
5266         * sdbout.c (sdb_debug_hooks): Likewise.
5267         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5268         * doc/invoke.texi (-fenable-icf-debug): New option.
5269
5270 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
5271
5272         PR debug/41353
5273         * regmove.c (regmove_backward_pass): Replace src with dst in the
5274         debug insn, and check for dst before rather than after.
5275
5276 2009-10-08  Janis Johnson <janis187@us.ibm.com>
5277
5278         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
5279         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
5280
5281 2009-10-08  Jan Hubicka  <jh@suse.cz>
5282
5283         PR middle-end/41626
5284         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
5285         do not mark cgraph nodes as needed.
5286         (record_references_in_initializer): Add new only_vars parameter.
5287         * cgraph.h (record_references_in_initializer): New parameter.
5288         * varasm.c (assemble_variable): Update call.
5289         * varpool.c (varpool_analyze_pending_decls): Always look for
5290         referenced vars.
5291
5292 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
5293
5294         * config/avr/avr.c (last_insn_address) Remove variable.
5295         (expand_prologue): Don't initialise last_insn_address variable.
5296         (final_prescan_insn): Don't output insn size.
5297         * config/avr/avr.opt (msize): Remove switch.
5298         * doc/invoke.texi (AVR Options): Remove documentation of -msize
5299         switch.
5300
5301 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
5302
5303         * combine.c (label_tick_ebb_start): Fix comment.
5304         (combine_instructions): Set label_tick and label_tick_ebb_start before
5305         calling setup_incoming_promotions.  Start them from 1.  Increment
5306         label_tick instead of deriving it from the BB index.  Rather than
5307         comparing ticks use the block from the previous iteration to decide
5308         whether to start a new EBB.  Remove empty lines before function.
5309
5310 2009-10-08  Michael Matz  <matz@suse.de>
5311
5312         PR middle-end/41573
5313         * builtins.c (fold_builtin_isascii): Use fold_build2.
5314         (fold_builtin_isdigit): Ditto.
5315         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
5316         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
5317         remove_useless_stmts_cond, remove_useless_stmts_tf,
5318         remove_useless_stmts_tc, remove_useless_stmts_bind,
5319         remove_useless_stmts_goto, remove_useless_stmts_label,
5320         remove_useless_stmts_1, remove_useless_stmts,
5321         pass_remove_useless_stmts): Remove.
5322         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
5323         * passes.c (init_optimization_passes): Don't add
5324         pass_remove_useless_stmts.
5325         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
5326         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
5327         static constants.
5328         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
5329         for static constants.
5330         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
5331         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
5332
5333 2009-10-08  Richard Guenther  <rguenther@suse.de>
5334
5335         * gimple.c (free_gimple_type_tables): New function.
5336         * gimple.h (free_gimple_type_tables): Declare.
5337
5338 2009-10-07  Mark Heffernan  <meheff@google.com>
5339
5340         * ipa-prop.c (ipa_print_node_params) Only print
5341         names of named arguments.
5342
5343 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
5344
5345         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
5346         being statically linked.
5347
5348 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5349
5350         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
5351
5352 2009-10-08  Jan Hubicka  <jh@suse.cz>
5353
5354         PR bootstrap/41620
5355         * ipa.c (cgraph_externally_visible_p,
5356         function_and_variable_visibility,
5357         whole_program_function_and_variable_visibility): Skip non-finalized
5358         nodes.
5359
5360 2009-10-08  Nick Clifton  <nickc@redhat.com>
5361
5362         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
5363         CONST_DOUBLEs.
5364
5365 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
5366
5367         PR bootstrap/37739
5368         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
5369
5370 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
5371
5372         PR c/41182
5373         * c-common.c (c_fully_fold_internal): Strip nops from the result
5374         of recursive calls to c_fully_fold_internal.
5375         (c_wrap_maybe_const): New.
5376         (c_save_expr): Use c_wrap_maybe_const.
5377         * c-common.h (c_wrap_maybe_const): Declare.
5378         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
5379         build_binary_op): Use c_wrap_maybe_const.
5380
5381 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5382
5383         * real.c: Fix comment to reflect actual exponent size.
5384
5385 2009-10-08  Ben Elliston  <bje@au.ibm.com>
5386
5387         * config/rs6000/a2.md: Add FSF comment header.
5388
5389 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
5390
5391         * config/i386/i386.md (any_extend): New code iterator.
5392         (u, s): New code attributes.
5393         (sgnprefix): Ditto.
5394         (DWIH): Rewrite as code iterator for SI and DI modes.
5395         (DWI): Rewrite as mode attribute.
5396         (dwi): New mode attribute.
5397         (di): Depend on SI mode and DI mode.
5398         (doubleint_general_operand): Remove mode attribute.
5399
5400         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
5401         DWIH mode iterator.
5402
5403         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
5404         (*sub<mode>3_doubleword): Ditto.
5405
5406         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
5407         using SWIM248 mode iterator.
5408         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
5409         using SWI48 mode iterator.
5410         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
5411         patterns using DWIH mode iterator and any_extend code iterator.
5412         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
5413         using any_extend code iterator.
5414         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
5415         patterns using DWIH mode iterator and any_extend code iterator.
5416         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
5417         using any_extend code iterator.
5418         (<s>mul<mode>3_highpart): Macroize expander from
5419         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
5420         and any_extend code iterator.
5421         (*<s>muldi3_highpart_1): Macroize insn from
5422         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
5423         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
5424         patterns using any_extend code iterator.
5425         (*<s>mulsi3_highpart_zext): Macroize insn from
5426         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
5427
5428 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
5429
5430         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
5431         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
5432         refering to a DIE with DW_AT_const_value.
5433
5434 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
5435
5436         PR middle-end/22072
5437         * ira-lives.c (check_and_make_def_conflict): Process all operands.
5438
5439 2009-10-06  Jan Hubicka  <jh@suse.cz>
5440
5441         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
5442         correctly.
5443
5444 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5445
5446         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
5447         *lea_2_rex64): Move before *add<mode>_1 pattern.
5448
5449 2009-10-07  Jan Hubicka  <jh@suse.cz>
5450
5451         * collect2.c (main): Add -fno-whole-program.
5452         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
5453
5454 2009-10-07  Jan Hubicka  <jh@suse.cz>
5455
5456         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
5457         has no address taken.
5458         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
5459         never needed.
5460         (cgraph_clone_node): Clear externally_visible flag for clones.
5461         * cgraph.h (cgraph_only_called_directly_p,
5462         cgraph_can_remove_if_no_direct_calls_p): New predicates.
5463         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
5464         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
5465         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
5466         ipcp_insert_stage): Likwise.
5467         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
5468         externally_visible flag.
5469         (verify_cgraph_node): Verify that inline clones look right.
5470         (process_function_and_variable_attributes): Do not set
5471         externally_visible flags.
5472         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
5473         been already run.
5474         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
5475         boundaries.
5476         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
5477         clear externally_visible when turning into inline clones
5478         (cgraph_mark_inline_edge): Use new predicates.
5479         (cgraph_estimate_growth): Likewise.
5480         (cgraph_decide_inlining): Likewise.
5481         * ipa.c (cgraph_postorder): Likewise.
5482         (cgraph_remove_unreachable_nodes): Likewise; sanity check
5483         that inline clones are not needed.
5484         (cgraph_externally_visible_p): New predicate.
5485         (function_and_variable_visibility): Add whole_program parameter;
5486         always set externally_visible flag; handle COMDAT function
5487         privatization.
5488         (local_function_and_variable_visibility): New function.
5489         (gate_whole_program_function_and_variable_visibility): New function.
5490         (whole_program_function_and_variable_visibility): New function.
5491         (pass_ipa_whole_program_visibility): New function.
5492         * passes.c  (init_optimization_passes): Add whole program visibility
5493         pass.
5494         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
5495         not care about needed/reachable flags.
5496         * varpool.c: Include flags.h
5497         (decide_is_variable_needed): When doing LTO assume whole-program mode.
5498         (varpool_finalize_decl): When we are in LTO read-back, all variables
5499         are analyzed.
5500         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
5501
5502 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5503
5504         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
5505         add MASK_HARD_DFP.
5506
5507 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5508
5509         * config.gcc: Don't include the makefile fragments intended for
5510         libgcc.
5511         * config/s390/fixdfdi.h: File removed.
5512         * config/s390/libgcc-glibc.ver: File removed.
5513         * config/s390/s390.h: Remove the fixdfdi.h hack.
5514         * config/s390/t-crtstuff: File moved to libgcc dir.
5515         * config/s390/t-linux: Likewise.
5516         * config/s390/t-tpf: libgcc specific parts removed.
5517         * config/s390/t-linux64: Likewise.
5518
5519 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5520
5521         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
5522         (lto-compress.o): Likewise.
5523
5524 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
5525
5526         PR target/41512
5527         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
5528         dllexport to class members here.
5529         (i386_pe_determine_dllimport_p): Only check static class data for
5530         definition.
5531         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
5532         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
5533         functions for vague linkage.
5534         (i386_pe_type_dllexport_p): Fix formatting.
5535         (maybe_add_dllexport) New function.
5536         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
5537         to class members.
5538
5539 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5540
5541         * config/rs6000/a2.md: Remove duplicated lines.
5542
5543 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5544
5545         * config.gcc (powerpc*-*-*): Handle a2.
5546         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
5547         * config/rs6000/a2.md: New file.
5548         * config/rs6000/rs6000.opt (mno-update): New.
5549         (mupdate): Return to using a mask, not a var.
5550         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
5551         (enum processor_type): Add PROCESSOR_PPCA2.
5552         * config/rs6000/rs6000.c (ppca2_cost): New costs.
5553         (rs6000_override_options): Add "a2" to processor_target_table.
5554         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
5555         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
5556
5557 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5558
5559         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
5560         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
5561         reference to nonexistent gen_truncxfxf2 function.
5562
5563 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5564
5565         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
5566         (DWIH, g, di, doubleint_general_operand): New mode attributes.
5567         (general_operand): Handle TI mode.
5568         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
5569         using SDWIM mode iterator.
5570         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
5571         pattern from *add{di,ti}3_1 patterns and corresponding splitters
5572         using DWI mode iterator.
5573         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
5574         patterns using SWI mode iterator.
5575         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
5576         using SWI48 mode iterator.
5577         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
5578         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
5579         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
5580         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
5581         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
5582         using SDWIM mode iterator.
5583         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
5584         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
5585         using DWI mode iterator.
5586         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
5587         patterns using SWI mode iterator.
5588         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
5589         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
5590         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
5591         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
5592         patterns using plusminus code iterator.
5593         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
5594         sub<mode>3 patterns using plusminus code iterator.
5595         * config/i386/i386.c (override_options): Update the call to
5596         gen_subdi_carry_rex64 for renamed function.
5597         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
5598         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
5599         calls to instruction expanders.
5600
5601 2009-10-06  Martin Jambor  <mjambor@suse.cz>
5602
5603         PR bootstrap/41395
5604         * opts.c (decode_options): Run IPA-SRA at -O2.
5605
5606 2009-10-06  Richard Guenther  <rguenther@suse.de>
5607
5608         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
5609
5610 2009-10-06  Tobias Burnus  <burnus@net-b.de>
5611
5612         PR lto/41591
5613         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5614         -flto and -fwhole-program flags can be combined.
5615
5616 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5617
5618         PR driver/41217
5619         * gcc.c (process_command): Check that -o argument was specified.
5620
5621 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5622
5623         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
5624
5625 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5626
5627         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
5628         * doc/invoke.texi (Warning Options): Annotate allowed languages
5629         for -Wunsuffixed-float-constants.
5630
5631 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
5632
5633         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
5634         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
5635         same name and isn't the main variant.
5636
5637         PR debug/41558
5638         * dwarf2out.c (loc_by_reference): Removed.
5639         (dw_loc_list_1): New function.
5640         (dw_loc_list): Remove toplev argument, add want_address argument.
5641         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
5642         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
5643         want_address == 2 to dw_loc_list.  For successful dw_loc_list
5644         set have_address to 1 only if want_address is not 0.
5645
5646 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5647
5648         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
5649         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
5650         a code block followed by two pointers.
5651         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
5652         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
5653         (MIPS_MOVE): Likewise.
5654         (MIPS_LUI): Likewise.
5655         (MIPS_JR): Likewise.
5656         (MIPS_BAL): Likewise.
5657         (MIPS_NOP): Likewise.
5658         (mips_asm_trampoline_template): Delete.
5659         (mips_trampoline_code_size): New function.
5660         (mips_trampoline_init): Add shorter sequences for all cases
5661         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
5662         Calculate the opcodes directly, rather than copying from a template.
5663         Only flush the code part of the trampoline.
5664         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
5665
5666 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5667
5668         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
5669         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
5670         (INCOMING_RETURN_ADDR_RTX): Likewise.
5671         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
5672         with AT_REGNUM.
5673         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
5674         with RETURN_ADDR_REGNUM.
5675         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
5676         * config/mips/mips.c (mips16_build_call_stub): Replace
5677         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
5678         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
5679         (mips_print_operand_punctuation): Likewise.
5680         (mips_frame_set): Likewise.
5681         (mips16e_output_save_restore): Likewise.
5682         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
5683         (mips_save_reg_p): Likewise.
5684         (mips_return_addr): Likewise.
5685         (mips_set_return_address): Likewise.
5686         (mips_direct_save_slot_move_p): Likewise.
5687         (mips_output_function_prologue): Likewise.
5688         (mips_restore_reg): Likewise.
5689         (mips_expand_epilogue): Likewise.
5690         (mips_epilogue_uses): Likewise.
5691         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
5692         (*mov<mode>_ra): Use it instead of a hard-coded 31.
5693         (clear_hazard_<mode>): Likewise.
5694         (call_internal): Likewise.
5695         (call_internal_direct): Likewise.
5696         (call_direct_split): Likewise.
5697         (call_value_internal): Likewise.
5698         (call_value_split): Likewise.
5699         (call_value_internal_direct): Likewise.
5700         (call_value_direct_split): Likewise.
5701         (call_value_multiple_internal): Likewise.
5702         (call_value_multiple_split): Likewise.
5703
5704 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
5705             Jakub Jelinek  <jakub@redhat.com>
5706
5707         PR rtl-optimization/41511
5708         * combine.c (record_value_for_reg): Pass explicit values as argument
5709         to get_last_value_validate.
5710         (get_last_value_validate): Document INSN parameter.
5711         For non-readonly MEMs, assume they might have been modified if INSN
5712         was in another basic block.
5713         (get_last_value): Minor reformatting.
5714
5715 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5716
5717         PR tree-opt/40992
5718         * final.c (asm_str_count): Split out from asm_insn_count.
5719         * rtl.h (asm_str_count): New prototype.
5720         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
5721         asm_str_count.
5722
5723 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
5724
5725         * doc/plugins.texi: Change plugin_pass to register_pass_info.
5726
5727 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
5728             Rafael Espindola  <espindola@google.com>
5729
5730         * gengtype.c (write_types): Moved call to write_func_for_structure
5731         into seperate loops.
5732
5733 2009-10-05  Richard Guenther  <rguenther@suse.de>
5734
5735         PR lto/41281
5736         * lto-cgraph.c (output_cgraph): Output toplevel asms.
5737         (input_cgraph_1): Input toplevel asms.
5738
5739 2009-10-05  Richard Guenther  <rguenther@suse.de>
5740
5741         PR lto/40902
5742         * lto-symtab.c (lto_compatible_attributes_p): Remove.
5743         (external_aggregate_decl_p): Likewise.
5744         (lto_symtab_compatible): Re-structure.  Remove dead code.
5745         For variables ignore toplevel qualifiers when comparing types.
5746         Issue warnings, not errors for mismatched user-alignment.
5747
5748 2009-10-05  Richard Guenther  <rguenther@suse.de>
5749
5750         PR lto/41552
5751         PR lto/41487
5752         * lto-symtab.c (struct lto_symtab_base_def): Remove.
5753         (struct lto_symtab_identifier_def): Likewise.
5754         (struct lto_symtab_decl_def): Likewise.
5755         (struct lto_symtab_entry_def): New.
5756         (lto_symtab_identifier_t): Rename to ...
5757         (lto_symtab_entry_t): ... this.
5758         (lto_symtab_decls): Remove.
5759         (lto_symtab_base_hash): Rename to ...
5760         (lto_symtab_entry_hash): ... this.
5761         (lto_symtab_base_eq): Rename to ...
5762         (lto_symtab_entry_eq): ... this.
5763         (lto_symtab_base_marked_p): Rename to ...
5764         (lto_symtab_entry_marked_p): ... this.
5765         (lto_symtab_identifier_marked_p): Remove.
5766         (lto_symtab_decl_marked_p): Likewise.
5767         (lto_symtab_maybe_init_hash_tables): Rename to ...
5768         (lto_symtab_maybe_init_hash_table): ... this.
5769         (lto_symtab_set_resolution_and_file_data): Remove.
5770         (lto_symtab_register_decl): New function.
5771         (lto_symtab_get_identifier): Remove.
5772         (lto_symtab_get): New function.
5773         (lto_symtab_get_resolution): Adjust.
5774         (lto_symtab_get_identifier_decl): Remove.
5775         (lto_symtab_set_identifier_decl): Likewise.
5776         (lto_symtab_merge_decl): Rename to ...
5777         (lto_symtab_merge): ... this.  Rewrite.
5778         (lto_symtab_merge_var): Remove.
5779         (lto_symtab_merge_fn): Likewise.
5780         (lto_symtab_prevailing_decl): Adjust.
5781         (lto_cgraph_replace_node): New function.
5782         (lto_symtab_merge_decls_2): Likewise.
5783         (lto_symtab_merge_decls_1): Likewise.
5784         (lto_symtab_fixup_var_decls): Likewise.
5785         (lto_symtab_resolve_symbols): Likewise.
5786         (lto_symtab_merge_decls): Likewise.
5787         (lto_symtab_prevailing_decl): Adjust.
5788         (lto_symtab_get_symtab_def): Remove.
5789         (lto_symtab_get_file_data): Likewise.
5790         (lto_symtab_clear_resolution): Adjust.
5791         (lto_symtab_clear_resolution): Likewise.
5792         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
5793         (input_cgraph_1): Likewise.
5794         * lto-streamer-in.c (get_resolution): Do not provide fake
5795         symbol resolutions here.
5796         (deferred_global_decls): Remove.
5797         (lto_register_deferred_decls_in_symtab): Likewise.
5798         (lto_register_var_decl_in_symtab): Change signature, register
5799         variable via lto_symtab_register_decl.
5800         (lto_register_function_decl_in_symtab): Likewise.
5801         (lto_read_tree): Adjust.
5802         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
5803         (lto_symtab_merge_var): Likewise.
5804         (lto_symtab_merge_fn): Likewise.
5805         (lto_symtab_register_decl): Declare.
5806         (lto_symtab_merge_decls): Likewise.
5807
5808 2009-10-05  Richard Guenther  <rguenther@suse.de>
5809
5810         PR tree-optimization/23821
5811         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
5812         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
5813         simple IV increments.
5814
5815 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5816
5817         * config/arm/arm.c (arm_override_options): Really initialize
5818         flag_dwarf2_cfi_asm to 0.
5819
5820 2009-10-05  Doug Kwan  <dougkwan@google.com>
5821
5822         PR rtl-optimization/41574
5823         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
5824         floating point and we are not doing unsafe math optimizations.
5825
5826 2009-10-03  Simon Baldwin  <simonb@google.com>
5827             Cary Coutant  <ccoutant@google.com>
5828             Rafael Espindola  <espindola@google.com>
5829             Richard Guenther  <rguenther@suse.de>
5830             Jan Hubicka  <jh@suse.cz>
5831             Doug Kwan <dougkwan@google.com>
5832             H.J. Lu  <hongjiu.lu@intel.com>
5833             Bill Maddox  <maddox@google.com>
5834             Ryan Mansfield  <rmansfield@qnx.com>
5835             Diego Novillo  <dnovillo@google.com>
5836             Ollie Wild  <aaw@google.com>
5837             Kenneth Zadeck <zadeck@naturalbridge.com>
5838
5839         * lto-cgraph.c: New file.
5840         * lto-compress.c: New file.
5841         * lto-compress.h: New file.
5842         * lto-opts.c: New file.
5843         * lto-section-in.c: New file.
5844         * lto-section-out.c: New file.
5845         * lto-streamer-in.c: New file.
5846         * lto-streamer-out.c: New file.
5847         * lto-streamer.c: New file.
5848         * lto-streamer.h: New file.
5849         * lto-symtab.c: New file.
5850         * lto-wpa-fixup.c: New file.
5851         * lto-wrapper.c: New file.
5852
5853 2009-10-03  Simon Baldwin  <baldwin@google.com>
5854             Ben Elliston  <bje@au.ibm.com>
5855             Rafael Espindola  <espindola@google.com>
5856             Nathan Froyd  <froydnj@codesourcery.com>
5857             Jan Hubicka  <jh@suse.cz>
5858             Doug Kwan  <dougkwan@google.com>
5859             Diego Novillo  <dnovillo@google.com>
5860             Kenneth Zadeck  <zadeck@naturalbridge.com>
5861
5862         * Makefile.in (enable_lto): New.
5863         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
5864         (LINKER_PLUGIN_API_H): Define.
5865         (LTO_SYMTAB_H): Define.
5866         (LTO_STREAMER_H): Define.
5867         (TREE_VECTORIZER_H): Define.
5868         (INCLUDES): Add LIBELFINC.
5869         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
5870         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
5871         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
5872         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
5873         (native): Add lto-wrapper$(exeext)
5874         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
5875         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
5876         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
5877         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
5878         (varasm.o): Add dependency on tree-iterator.h.
5879         (cgraph.o): Add dependency on cif-code.def.
5880         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
5881         (ipa-pure-const.o): Likewise.
5882         (GTFILES): Add lto-symtab.c.
5883         (install-lto-wrapper): New.
5884         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
5885         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
5886         * config.in: Regenerate.
5887
5888 2009-10-03  Rafael Espindola  <espindola@google.com>
5889             Diego Novillo  <dnovillo@google.com>
5890
5891         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
5892         ipa_write_summaries.
5893         Call execute_ipa_summary_passes for all_regular_ipa_passes and
5894         all_lto_gen_passes.
5895         (cgraph_optimize): Make extern.
5896
5897 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
5898             Kenneth Zadeck <zadeck@naturalbridge.com>
5899
5900         * toplev.c (in_lto_p): Declare.
5901         * collect2.c (scan_prog_file): Read all the output when reading
5902         information for LTO.
5903         (enum lto_mode_d): Declare.
5904
5905 2009-10-03  Richard Guenther  <rguenther@suse.de>
5906             Diego Novillo  <dnovillo@google.com>
5907
5908         * gimple.c: Include target.h and alias.h.
5909         (gimple_types): Declare.
5910         (type_hash_cache): Declare.
5911         (gimple_alloc_stat): Make extern.
5912         (gimple_build_eh_must_not_throw): Call
5913         gimple_eh_must_not_throw_set_fndecl.
5914         (struct type_pair_d): Declare.
5915         (type_pair_t): Declare.
5916         (type_pair_hash): New.
5917         (type_pair_eq): New.
5918         (lookup_type_pair): New.
5919         (gimple_force_type_merge): New.
5920         (compare_type_names_p): New.
5921         (compare_field_offset): New.
5922         (gimple_types_compatible_p): New.
5923         (struct sccs): Declare.
5924         (next_dfs_num): Declare.
5925         (iterative_hash_gimple_type): New.
5926         (visit): New.
5927         (iterative_hash_type_name): New.
5928         (iterative_hash_gimple_type): New.
5929         (gimple_type_hash): New.
5930         (gimple_type_eq): New.
5931         (gimple_register_type): New.
5932         (print_gimple_types_stats): New.
5933         (gimple_signed_or_unsigned_type): New.
5934         (gimple_unsigned_type): New.
5935         (gimple_signed_type): New.
5936         (gimple_get_alias_set): New.
5937         (gimple_decl_printable_name): Do not use DMGL_TYPES.
5938         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
5939         (gimple_force_type_merge): Declare.
5940         (gimple_types_compatible_p): Declare.
5941         (gimple_register_type): Declare.
5942         (print_gimple_types_stats): Declare.
5943         (gimple_unsigned_type): Declare.
5944         (gimple_signed_type): Declare.
5945         (gimple_get_alias_set): Declare.
5946         (gimple_eh_must_not_throw_set_fndecl): New.
5947
5948 2009-10-03  Jan Hubicka  <jh@suse.cz>
5949             Kenneth Zadeck <zadeck@naturalbridge.com>
5950
5951         * ipa-pure-const.c: Include lto-streamer.h.
5952         (register_hooks): Factor out of ...
5953         (generate_summary): ... here.
5954         (pure_const_write_summary): New.
5955         (pure_const_read_summary): New.
5956         (pass_ipa_pure_const): Add pure_const_write_summary and
5957         pure_const_read_summary.
5958         * ipa-reference.c: Include lto-streamer.h.
5959         (add_new_function): New.
5960         (remove_node_data): New.
5961         (duplicate_node_data): New.
5962         (ipa_init): Guard against multiple calls.
5963         Move hook setup from analyze_function.
5964         (write_node_summary_p): New.
5965         (ipa_reference_write_summary): New.
5966         (ipa_reference_read_summary): New.
5967         (pass_ipa_reference): Add ipa_reference_write_summary and
5968         ipa_reference_read_summary.
5969         * cgraph.h (cgraph_local_info): Add field lto_file_data.
5970         (struct cgraph_edge): Add fields lto_stmt_uid and
5971         call_stmt_cannot_inline_p.
5972         (cgraph_optimize): Declare.
5973         (cgraph_decide_is_function_needed): Declare.
5974         (reset_inline_failed): Declare.
5975         (enum LTO_cgraph_tags): Declare.
5976         (LTO_cgraph_tag_names): Declare.
5977         (LCC_NOT_FOUND): Define.
5978
5979 2009-10-03  Doug Kwan  <dougkwan@google.com>
5980             Rafael Espindola  <espindola@google.com>
5981             Jan Hubicka  <jh@suse.cz>
5982             Diego Novillo  <dnovillo@google.com>
5983             Kenneth Zadeck  <zadeck@naturalbridge.com>
5984
5985         * passes.c (all_regular_ipa_passes): New.
5986         (all_ipa_passes): Rename to all_small_ipa_passes.
5987         (init_optimization_passes): Init all_regular_ipa_passes.
5988         * tree-pass.h (all_regular_ipa_passes): New.
5989         (all_ipa_passes): Rename to all_small_ipa_passes.
5990         * passes.c (all_lto_gen_passes): New.
5991         (init_optimization_passes): Initialize all_lto_gen_passes.
5992         (execute_ipa_summary_passes): Make non-static.
5993         (ipa_write_summaries_1): New.
5994         (ipa_write_summaries_2): New.
5995         (ipa_write_summaries): New.
5996         (ipa_write_summaries_of_cgraph_node_set): New.
5997         (ipa_read_summaries_1): New.
5998         (ipa_read_summaries): New.
5999         (execute_ipa_pass_list): Call cgraph_process_new_functions.
6000         (execute_regular_ipa_pass_list): Remove.
6001         (init_optimization_passes): Schedule
6002         pass_rebuild_cgraph_edges and pass_early_inline outside
6003         of pass_all_early_optimizations.  Document reason.
6004         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
6005         pass_ipa_lto_finish_out): New pass.
6006         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
6007         (execute_all_ipa_transforms): New.
6008         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
6009         (dump_properties, debug_properties): New.
6010         * tree-optimize.c (gate_all_early_local_passes): Return
6011         false if we are in lto1.
6012         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
6013         * tree-pass.h (execute_all_ipa_transforms): Declare.
6014         (pass_ipa_function_and_variable_visibility): Declare.
6015         (pass_ipa_early_inline): Declare.
6016         (pass_ipa_lto_gimple_out): Declare.
6017         (pass_ipa_lto_wpa_fixup): Declare.
6018         (pass_ipa_lto_finish_out): Declare.
6019         (all_small_ipa_passes, all_regular_ipa_passes,
6020         all_lto_gen_passes): Declare.
6021         (execute_ipa_summary_passes): Declare.
6022         (execute_all_ipa_transforms): Declare.
6023         (ipa_write_summaries): Declare
6024         (ipa_write_summaries_of_cgraph_node_set): Declare.
6025         (ipa_read_summaries): Declare.
6026
6027 2009-10-03  Doug Kwan  <dougkwan@google.com>
6028             Ollie Wild  <aaw@google.com>
6029
6030         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
6031
6032         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
6033         (lto_mode): New variable.
6034         (maybe_run_lto_and_relink): Handle the -fwpa option.
6035         (main): Handle the -fwpa option.
6036         (maybe_unlink_list): New function.
6037         * gcc.c (link_lto_options): Replace -flto with -fwpa.
6038         * common.opt (flto): New flag.
6039         * toplev.c (flag_generate_lto): Declare.
6040
6041 2009-10-03  Simon Baldwin  <simonb@google.com>
6042
6043         * common.opt (flto-compression-level): New flag.
6044
6045         * opts.c: Include lto-opts.h.
6046         (handle_option): Call lto_register_user_option for each
6047         valid option handled.
6048         (decode_options): Clear registered options before the options
6049         handling loop.
6050
6051 2009-10-03  Cary Coutant  <ccoutant@google.com>
6052
6053         * collect2.c (is_elf): New function.
6054         (scan_prog_file): Require LTO object to be in ELF format.
6055
6056 2009-10-03  Rafael Espindola  <espindola@google.com>
6057
6058         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
6059         libgcc to the linker.
6060
6061         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
6062
6063         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
6064         (collect_execute): Add flags argument. Pass flags to pex_run. Update
6065         all callers.
6066         * collect2.h (collect_execute): Add flags argument.
6067         * tlink.c (tlink_execute): Update call to collect_execute.
6068         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
6069         (use_linker_plugin): New.
6070         (use_linker_plugin_spec_function): New.
6071         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
6072         (linker_plugin_file_spec): New.
6073         (lto_wrapper_spec): New.
6074         (lto_gcc_spec): New.
6075         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
6076         (static_spec_functions): Add use-linker-plugin.
6077         (process_command): Handle -use-linker-plugin.
6078         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
6079         linker_plugin_file_spec and lto_gcc_spec.
6080         (use_linker_plugin_spec_function): New.
6081
6082 2009-10-03  Richard Guenther  <rguenther@suse.de>
6083
6084         PR lto/41547
6085         PR lto/41548
6086         * tree.h (is_lang_specific): Include LANG_TYPE.
6087         * tree.c (find_decls_types_r): Manually add interesting parts
6088         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
6089
6090         * gimple.c (type_pair_hash): Make symmetric.
6091         (type_pair_eq): Likewise.
6092         (lookup_type_pair): Increase initial hashtable size.
6093         (gimple_force_type_merge): Rely on type-pair symmetry.
6094         (visit): Remove excessive checking code.
6095         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
6096         (gimple_register_type): Remove getenv calls, shrink initial
6097         hashtable size.
6098
6099         PR middle-end/41502
6100         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
6101         inline functions if not generating lto output.
6102
6103         PR lto/41379
6104         * toplev.c (finalize): In WPA mode remove the asm file.
6105
6106 2009-10-03  Doug Kwan  <dougkwan@google.com>
6107
6108         * ipa-inline.c (cgraph_mark_inline): Check
6109         edge->call_stmt_cannot_inline_p instead of calling
6110         gimple_call_cannot_inline_p.
6111         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
6112         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
6113         (inline_generate_summary): Do nothing in LTRANS.
6114         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
6115         exists before calling gimple_call_cannot_inline_p.
6116         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
6117         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
6118         Update new_edge->lto_stmt_uid.
6119         * cgraphbuild.c (reset_inline_failed): New.
6120
6121         * common.opt (fwpa): New flag.
6122         (fltrans): New option.
6123         * gcc.c (gcc_lto_option_t): New type.
6124         (current_lto_option): New variable.
6125         (lto_single_spec_function): Remove and is replaced by ..
6126         (lto_option_spec_function): New function.
6127         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
6128         passing the -flto flag.
6129         (cc1_options): Separate non-LTO related parts into ..
6130         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
6131         (lto1_options): New spec for lto FE.
6132         (link_lto_options): New spec for handling LTO flags in linker.
6133         (invoke_lto_single): Re-format to fit in 80 column.  Replace
6134         lto-single with lto-option.
6135         (static_specs): Add cc1_non_lto_options, lto1_options and
6136         link_lto_options.
6137         (static_spec_function): Replace lto-single with lto-option.
6138         (process_command): Handle -flto, -fwpa and -fltran by setting
6139         current_lto_option and not passing it to subprocess unconditionally.
6140
6141 2009-10-03  Bill Maddox  <maddox@google.com>
6142
6143         Add `gcc' driver support for link-time code generation (LTO).
6144
6145         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
6146         (lto_flag, lto_objects, lto_o_file): New variables.
6147         (struct lto_object, struct lto_object_list): New structures.
6148         (collect_exit, handler): Remove LTO temporary output file on exit.
6149         (add_lto_object): New function.
6150         (maybe_run_lto_and_relink): New function. Perform link time code
6151         generation and relinking for object files containing LTO information.
6152         (main): Invoke maybe_run_lto_and_relink().
6153         (dump_argv): New function.  For debugging, currently disabled.
6154         (scan_prog_file): Add LTO information pass.
6155         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
6156         collect2.
6157         * toplev.c (compile_file): Emit assembler directive to create
6158         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
6159
6160 2009-10-03  Diego Novillo  <dnovillo@google.com>
6161
6162         * c.opt: Add LTO to warn_abi and warn_psabi.
6163
6164         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
6165         inline function.  Ignore language-specific nodes.  Update all users.
6166         (find_decls_types_r): Do not traverse the subtrees of
6167         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
6168         * tree.h (is_lang_specific): New.
6169         * langhooks.h (struct lang_hooks_for_decls): Remove
6170         may_need_assembler_name_p.  Update all users.
6171
6172         * c-common.c (set_builtin_user_assembler_name): Move ...
6173         * builtins.c (set_builtin_user_assembler_name): ... here.
6174         (is_builtin_name): Add comment
6175         (is_builtin_fn): New.
6176         * except.c (output_ttype): Only call
6177         lookup_type_for_runtime if TYPE is not a runtime type.
6178
6179         * passes.c (register_pass): Call position_pass on
6180         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
6181         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
6182         (TV_IPA_LTO_DECL_IO): Define.
6183         (TV_IPA_LTO_CGRAPH_IO): Define.
6184         (TV_LTO): Define.
6185         (TV_WHOPR_WPA): Define.
6186         (TV_WHOPR_WPA_IO): Define.
6187         (TV_WHOPR_LTRANS): Define.
6188         (TV_WHOPR_WPA_FIXUP): Define.
6189         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
6190         * tree-cfg.c (tree_node_can_be_shared): Make extern.
6191         * tree-flow.h (tree_node_can_be_shared): Declare.
6192         * tree-inline.c (tree_can_inline_p): Check that E has a
6193         statement associated with it.
6194         * tree.c (free_lang_data_in_binf): Factor out of ...
6195         (free_lang_data_in_type): ... here.
6196         Call RECORD_OR_UNION_TYPE_P.
6197         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
6198         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
6199         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
6200         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
6201         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
6202         (gate_free_lang_data): Return true if flag_generate_lto is set.
6203         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
6204         * c-common.h (set_builtin_user_assembler_name): Move ...
6205         * tree.h (set_builtin_user_assembler_name): ... here.
6206
6207         * common.opt (flto-report): New flag.
6208         * opts.c (complain_wrong_lang): Do not complain if running lto1.
6209         * collect2.c (scan_prog_file): Send the error output of
6210         'nm' to HOST_BIT_BUCKET.
6211
6212 2009-10-03  Ollie Wild  <aaw@google.com>
6213
6214         * langhooks-def.h (lhd_begin_section): New function declaration.
6215         (lhd_write_section): New function declaration.
6216         (lhd_end_section): New function declaration.
6217         (LANG_HOOKS_BEGIN_SECTION): New macro.
6218         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
6219         (LANG_HOOKS_END_SECTION): New macro.
6220         (LANG_HOOKS_LTO): New macro.
6221         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
6222         * langhooks.c (output.h): Add include.
6223         (saved_section): New static variable.
6224         (lhd_begin_section): New function.
6225         (lhd_write_section_data): New function.
6226         (lhd_end_section): New function.
6227         * langhooks.h (struct lang_hooks_for_lto): New structure.
6228         (struct lang_hooks): Add member lto.
6229         * Makefile.in (langhooks.o): Add dependency on output.h.
6230
6231         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
6232
6233 2009-10-03  Richard Guenther  <rguenther@suse.de>
6234
6235         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
6236         Handle LTO.
6237
6238 2009-10-03  Simon Baldwin  <simonb@google.com>
6239             Richard Guenther  <rguenther@suse.de>
6240             Janis Johnson  <janis187@us.ibm.com>
6241             Doug Kwan  <dougkwan@google.com>
6242             Diego Novillo  <dnovillo@google.com>
6243             Ramana Radhakrishnan  <ramana.r@gmail.com>
6244             Ollie Wild  <aaw@google.com>
6245
6246         * doc/install.texi: Add documentation for libelf and --enable-lto.
6247         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
6248         -flto-report, -flto-compression-level and -use-linker-plugin.
6249         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
6250         Add section for LTO Testing.
6251
6252 2009-10-02  Cary Coutant  <ccoutant@google.com>
6253
6254         Add support for comdat type sections for DWARF v4.
6255         Merge from dwarf4 branch.
6256
6257         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
6258         (dw_die_ref): Define vector type.
6259         (enum dw_val_class): Add dw_val_class_data8.
6260         (struct dw_val_struct): Add v.val_data8.
6261         (comdat_type_node_ref): New type.
6262         (struct die_struct): Move die_symbol into a union; add new field
6263         die_type_node.  Change all uses.
6264         (comdat_type_node): New type.
6265         (skeleton_chain_node): New type.
6266         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
6267         (comdat_type_list): New variable.
6268         (dwarf_tag_name): Add DW_TAG_type_unit.
6269         (dwarf_attr_name): Add DW_AT_signature.
6270         (add_AT_data8): New function.
6271         (replace_child): New function.
6272         (move_all_children): New function.
6273         (print_signature): New function.
6274         (print_die): Print signature information; add dw_val_class_data8.
6275         (attr_checksum): Support dw_val_class_data8.
6276         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
6277         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
6278         (checksum_sleb128, checksum_uleb128): New functions.
6279         (checksum_die_context): New function.
6280         (loc_checksum_ordered): New function.
6281         (attr_checksum_ordered): New function.
6282         (struct checksum_attributes): New structure.
6283         (collect_checksum_attributes): New function.
6284         (die_checksum_ordered): New function.
6285         (generate_type_signature): New function.
6286         (same_dw_val_p): Add dw_val_class_data8.
6287         (is_symbol_die): Use new is_declaration_die function.
6288         (is_declaration_die): New function.
6289         (should_move_die_to_comdat): New function.
6290         (clone_die): New function.
6291         (clone_tree): New function.
6292         (clone_as_declaration): New function.
6293         (copy_declaration_context): New function.
6294         (generate_skeleton_ancestor_tree): New function.
6295         (generate_skeleton_bottom_up): New function.
6296         (generate_skeleton): New function.
6297         (remove_child_or_replace_with_skeleton): New function.
6298         (break_out_comdat_types): New function.
6299         (struct decl_table_entry): New type.
6300         (htab_decl_hash): New function.
6301         (htab_decl_eq): New function.
6302         (htab_decl_del): New function.
6303         (copy_ancestor_tree): New function.
6304         (copy_decls_walk): New function.
6305         (copy_decls_for_unworthy_types): New function.
6306         (build_abbrev_table): Don't assert on missing die_symbol when doing
6307         comdat type sections.
6308         (size_of_die): Use DW_FORM_sig8 for external references.  Add
6309         dw_val_class_data8.
6310         (unmark_dies): Don't assert for unmarked dies when doing comdat
6311         type sections.
6312         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
6313         (output_signature): New function.
6314         (output_die): Likewise.
6315         (output_compilation_unit_header): Mark output as DWARF version 3
6316         even if generating DWARF 4.
6317         (output_comdat_type_unit): New function.
6318         (output_line_info): Mark output as DWARF version 3 even if generating
6319         DWARF 4.
6320         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
6321         DWARF-4.
6322         (dwarf2out_end_source_file): Likewise.
6323         (prune_unused_types_walk_attribs): Don't follow references into
6324         comdat type sections.
6325         (prune_unused_types_mark): When generating type units, do not mark
6326         children of non-defining declarations of types; do mark children of
6327         type entries.
6328         (prune_unused_types): Process comdat type sections.
6329         (htab_ct_hash): New function.
6330         (htab_ct_eq): New function.
6331         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
6332         Add a pointer to the line table from type unit entries so
6333         DW_AT_decl_file has meaning.
6334         * varasm.c (default_elf_asm_named_section): Use identifier name as
6335         comdat key instead of lang hook.
6336
6337 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
6338
6339         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
6340
6341 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
6342
6343         * config/i386/i386.md (SWIM248): New mode iterator.
6344         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
6345         divmodhi4 patterns using SWIM248 macro.
6346         (*divmod<mode>4): Macroize insn_and_split pattern from
6347         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
6348         and their corresponding splitters usign SWIM248 macro.  Split SImode
6349         insn to generate cltd and DImode insn to generate cqto instead of
6350         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
6351         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
6352         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
6353         *divmodsi_noext patterns using SWIM248 macro.
6354         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
6355         udivmodhi4 patterns using SWIM248 macro.
6356         (*udivmod<mode>4): Macroize insn_and_split pattern from
6357         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
6358         corresponding splitters using SWIM248 macro.
6359         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
6360         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
6361
6362 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
6363
6364         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
6365         of zero-sized element is zero-sized regardless of its extent.
6366
6367 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
6368
6369         PR debug/40521
6370         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
6371         * configure: Regenerated.
6372         * config.in: Regenerated.
6373         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
6374         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
6375         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
6376         not emitting .eh_frame, emit .cfi_sections .debug_frame
6377         directive.
6378
6379         PR debug/41404
6380         PR debug/41353
6381         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
6382         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
6383         with '\0'.
6384         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
6385         vars use DECL_RTL with resetting it back to NULL afterwards.
6386         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
6387         rtx_equal_p instead of asserting it is a SYMBOL_REF.
6388         (value_format): For dw_val_class_addr only use DW_FORM_addr if
6389         the attribute type allows it, otherwise use DW_FORM_dataN.
6390         (mem_loc_descriptor): Handle CONST_STRING.
6391         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
6392         Handle MEM with CONST_STRING address using add_AT_string.
6393         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
6394         CONST_STRING for const arrays initialized with a string literal.
6395         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
6396         (dwarf2out_finish): Call resolve_addr.
6397
6398 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
6399             Maxim Kuvyrkov  <maxim@codesourcery.com>
6400
6401         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
6402
6403 2009-10-02  Nick Clifton  <nickc@redhat.com>
6404
6405         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
6406         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
6407
6408 2009-10-01  Jan Hubicka  <jh@suse.cz>
6409
6410         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
6411         (cgraph_create_virtual_clone): Just pass redirect_callers
6412         around.
6413         * cgraph.h (cgraph_clone_node): Update prototype.
6414         * ipa-pure-const.c (self_recursive_p): New function.
6415         (propagate): Use it.
6416         * ipa-inline.c (cgraph_clone_inlined_nodes,
6417         cgraph_decide_recursive_inlining): Update.
6418
6419 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
6420
6421         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
6422         instructions for TARGET_OCTEON.
6423
6424 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6425
6426         * config/arm/arm.c (arm_override_options): Turn off
6427         flag_dwarf2_cfi_asm for AAPCS variants.
6428
6429 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6430
6431         PR middle-end/12392
6432         * tree-sra.c (convert_callers): Do not call
6433         compute_inline_parameters on one caller more than once.
6434
6435 2009-10-01  Nick Clifton  <nickc@redhat.com>
6436
6437         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
6438         an empty string if not already defined.
6439
6440 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6441
6442         PR bootstrap/41395
6443         * tree-sra.c (is_va_list_type): New function.
6444         (find_var_candidates): Call is_va_list_type.
6445         (find_param_candidates): Check that the type or the type pointed
6446         to are not va_list types.
6447
6448 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6449
6450         PR c++/41503
6451         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
6452         DECL_ARTIFICIAL (param_decl) is true.
6453
6454 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
6455
6456         * tree.h (tree_decl_common::lang_flag_8): New.
6457         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
6458         keyword.
6459         * c-common.h (RID_CONSTEXPR): New.
6460
6461 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6462
6463         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
6464         Use ref-all pointers.
6465         (alpha_gimplify_va_arg): Ditto.
6466
6467 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
6468
6469         PR target/41279
6470         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
6471         before insn counting loop now that BB_END (bb) is counted.  Ensure
6472         the return value isn't zero.
6473
6474 2009-09-30  Nick Clifton  <nickc@redhat.com>
6475
6476         * config.gcc (sh-symbianelf): Replace definition of extra_objs
6477         with separate definitions of c_target_objs and cxx_target_objs.
6478         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
6479         and symbian-base.o.
6480         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
6481         sh_symbian_import_export_class.
6482         * config/sh/sh-protos.h: Fix names of exported symbian functions.
6483         * config/sh/symbian.c: Delete, moving code into...
6484         * config/sh/symbian-base.c: ... here
6485         * config/sh/symbian-c.c: ... and here
6486         * config/sh/symbian-cxx.c: ... and here.
6487
6488 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6489
6490         PR target/22093
6491         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
6492         of plus RTX into register.
6493
6494 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6495
6496         * doc/install.texi: Linguistic and markup fixes.
6497         (Configuration) <--disable-cpp>: Remove description.
6498         <--enable-maintainer-mode>: Autotools files are affected, too.
6499         <--with-sysroot>: Improve description.
6500         (Building): Bump required GNU make version.
6501
6502 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6503
6504         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
6505         (x86_64-*-*): Ditto.
6506
6507         * config/i386/fma4intrin.h: New file, provide common x86 compiler
6508         intrinisics for FMA4.
6509         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
6510         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
6511         Add FMA4 check and fma4intrin.h.
6512         * config/i386/i386-c.c(ix86_target_macros_internal): Check
6513         ISA_FLAG for FMA4.
6514         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
6515         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
6516         constant for FMA4 support.
6517         (UNSPEC_FMA4_FMADDSUB): Ditto.
6518         (UNSPEC_FMA4_FMSUBADD): Ditto.
6519         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
6520         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
6521         (ix86_expand_fma4_multiple_memory): Ditto.
6522         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
6523         (OPTION_MASK_ISA_FMA4_UNSET): New.
6524         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
6525         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
6526         (ix86_handle_option): Handle -mfma4.
6527         (isa_opts): Handle -mfma4.
6528         (enum pta_flags): Add PTA_FMA4.
6529         (override_options): Add FMA4 support.
6530         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
6531         (IX86_BUILTIN_VFMADDSD): Ditto.
6532         (IX86_BUILTIN_VFMADDPS): Ditto.
6533         (IX86_BUILTIN_VFMADDPD): Ditto.
6534         (IX86_BUILTIN_VFMSUBSS): Ditto.
6535         (IX86_BUILTIN_VFMSUBSD): Ditto.
6536         (IX86_BUILTIN_VFMSUBPS): Ditto.
6537         (IX86_BUILTIN_VFMSUBPD): Ditto.
6538         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
6539         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
6540         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
6541         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
6542         (IX86_BUILTIN_VFNMADDSS): Ditto.
6543         (IX86_BUILTIN_VFNMADDSD): Ditto.
6544         (IX86_BUILTIN_VFNMADDPS): Ditto.
6545         (IX86_BUILTIN_VFNMADDPD): Ditto.
6546         (IX86_BUILTIN_VFNMSUBSS): Ditto.
6547         (IX86_BUILTIN_VFNMSUBSD): Ditto.
6548         (IX86_BUILTIN_VFNMSUBPS): Ditto.
6549         (IX86_BUILTIN_VFNMSUBPD): Ditto.
6550         (IX86_BUILTIN_VFMADDPS256): Ditto.
6551         (IX86_BUILTIN_VFMADDPD256): Ditto.
6552         (IX86_BUILTIN_VFMSUBPS256): Ditto.
6553         (IX86_BUILTIN_VFMSUBPD256): Ditto.
6554         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
6555         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
6556         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
6557         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
6558         (IX86_BUILTIN_VFNMADDPS256): Ditto.
6559         (IX86_BUILTIN_VFNMADDPD256): Ditto.
6560         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
6561         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
6562         (enum multi_arg_type): New enum for describing the various FMA4
6563         intrinsic argument types.
6564         (bdesc_multi_arg): New table for FMA4 intrinsics.
6565         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
6566         (ix86_expand_multi_arg_builtin): New function for creating FMA4
6567         intrinsics.
6568         (ix86_expand_builtin): Add FMA4 intrinsic support.
6569         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
6570         operand instructions.
6571         (ix86_expand_fma4_multiple_memory): New function to split the
6572         second memory reference from FMA4 instructions.
6573         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
6574         (ssemodesuffixf2s): Ditto.
6575         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
6576         instructions.
6577         (fma4_fmsub<mode>4): Ditto.
6578         (fma4_fnmadd<mode>4): Ditto.
6579         (fma4_fnmsub<mode>4): Ditto.
6580         (fma4_vmfmadd<mode>4): Ditto.
6581         (fma4_vmfmsub<mode>4): Ditto.
6582         (fma4_vmfnmadd<mode>4): Ditto.
6583         (fma4_vmfnmsub<mode>4): Ditto.
6584         (fma4_fmadd<mode>4256): Ditto.
6585         (fma4_fmsub<mode>4256): Ditto.
6586         (fma4_fnmadd<mode>4256): Ditto.
6587         (fma4_fnmsub<mode>4256): Ditto.
6588         (fma4_fmaddsubv8sf4): Ditto.
6589         (fma4_fmaddsubv4sf4): Ditto.
6590         (fma4_fmaddsubv4df4): Ditto.
6591         (fma4_fmaddsubv2df4): Ditto.
6592         (fma4_fmsubaddv8sf4): Ditto.
6593         (fma4_fmsubaddv4sf4): Ditto.
6594         (fma4_fmsubaddv4df4): Ditto.
6595         (fma4_fmsubaddv2df4): Ditto.
6596         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
6597         instructions for intrinsics.
6598         (fma4i_fmsub<mode>4): Ditto.
6599         (fma4i_fnmadd<mode>4): Ditto.
6600         (fma4i_fnmsub<mode>4): Ditto.
6601         (fma4i_vmfmadd<mode>4): Ditto.
6602         (fma4i_vmfmsub<mode>4): Ditto.
6603         (fma4i_vmfnmadd<mode>4): Ditto.
6604         (fma4i_vmfnmsub<mode>4): Ditto.
6605         (fma4i_fmadd<mode>4256): Ditto.
6606         (fma4i_fmsub<mode>4256): Ditto.
6607         (fma4i_fnmadd<mode>4256): Ditto.
6608         (fma4i_fnmsub<mode>4256): Ditto.
6609         (fma4i_fmaddsubv8sf4): Ditto.
6610         (fma4i_fmaddsubv4sf4): Ditto.
6611         (fma4i_fmaddsubv4df4): Ditto.
6612         (fma4i_fmaddsubv2df4): Ditto.
6613         (fma4i_fmsubaddv8sf4): Ditto.
6614         (fma4i_fmsubaddv4sf4): Ditto.
6615         (fma4i_fmsubaddv4df4): Ditto.
6616         (fma4i_fmsubaddv2df4): Ditto.
6617
6618         * doc/invoke.texi (-mfma4): Add documentation.
6619         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
6620
6621 2009-09-29  Richard Henderson  <rth@redhat.com>
6622
6623         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
6624         an edge to the new destination block.
6625
6626 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6627
6628         PR target/41393
6629         * pa.c (hppa_profile_hook): Use
6630         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
6631
6632 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
6633             Alexander Monakov  <amonakov@ispras.ru>
6634
6635         PR target/41365
6636         * config/ia64/predicates.md (not_postinc_destination_operand): New.
6637         (not_postinc_memory_operand): New.
6638         (not_postinc_move_operand): New.
6639         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
6640         (*cmovsi_internal): Ditto.
6641
6642 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
6643
6644         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
6645         restrict issue_rate in first pass when scheduling for register
6646         pressure.
6647
6648 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
6649             Rafael Avila de Espindola  <espindola@google.com>
6650
6651         * gengtype.c (plugin_output): New.
6652         (get_output_file_with_visibility): Return plugin_output for plugins.
6653         (main): Parse and use the -P option.
6654         * gty.texi: Update the command line format.
6655
6656 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
6657
6658         PR debug/41438
6659         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
6660         functions.
6661         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
6662         out if !const_ok_for_output.
6663
6664         PR debug/41474
6665         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
6666         case VAR_LOCATION>: Remove gcc_unreachable ().
6667
6668 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6669
6670         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
6671         (x86_64-*-*): Ditto.
6672         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
6673         back to smmintrin.h.
6674         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
6675         * config/i386/x86intrin.h: Remove SSE5.
6676         * config/i386/mmintrin-common.h: Delete file.
6677         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
6678
6679 2009-09-29  Richard Guenther  <rguenther@suse.de>
6680
6681         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
6682         resulting from stack temporaries on STRICT_ALIGNMENT targets.
6683
6684 2009-09-29  Nick Clifton  <nickc@redhat.com>
6685
6686         * function.c (current_function_name): If there is no current
6687         function just return "<none>".
6688
6689 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
6690
6691         * tree-pass.h (register_pass_info): New structure.
6692         (pass_positioning_ops): Move enum from gcc-plugin.h.
6693         (register_pass): New function.
6694         * gcc-plugin.h (plugin_pass): Delete structure.
6695         (pass_positioning_ops): Delete enum.
6696         * plugin.c (regsiter_pass): Delete function.
6697         (position_pass): Delete function.
6698         (added_pass_nodes): Delete variable.
6699         (prev_added_pass_nodes): Delete variable.
6700         (pass_list_node): Delete structure.
6701         * passes.c (make_pass_instance): New function.
6702         (next_pass_1): Change to call make_pass_instance.
6703         (pass_list_node): Move structure from gcc-plugin.h.
6704         (added_pass_nodes): Move variable from plugin.c.
6705         (prev_added_pass_nodes): Move variable from plugin.c.
6706         (position_pass): New function.
6707         (register_pass): New function.
6708
6709 2009-09-28  Easwaran Raman  <eraman@google.com>
6710
6711         * ifcvt.c (noce_try_abs): Recognize pattern and call
6712         expand_one_cmpl_abs_nojump.
6713         * optabs.c (expand_one_cmpl_abs_nojump): New function.
6714         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
6715
6716 2009-09-28  Ian Lance Taylor  <iant@google.com>
6717
6718         PR middle-end/40500
6719         * c-opts.c (c_common_handle_option): Don't set
6720         warn_jump_misses_init for -Wall.
6721         * doc/invoke.texi (Warning Options): Update documentation.
6722
6723 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6724
6725         * Makefile.in ($(out_object_file)): Depend on
6726         gt-$(basename $(notdir $(out_file))).h.
6727
6728 2009-09-28  Richard Henderson  <rth@redhat.com>
6729
6730         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
6731         * except.c (gen_eh_region): Set it.
6732         (duplicate_eh_regions_1): Copy it.
6733         * tree-eh.c (lower_resx): Use it to determine which function
6734         to call to resume.
6735
6736         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
6737         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
6738         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
6739         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
6740         BUILT_IN_CXA_END_CLEANUP if necessary.
6741
6742         * c-common.c (c_define_builtins): Update call to
6743         build_common_builtin_nodes.
6744
6745 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6746
6747         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
6748
6749 2009-09-28  Michael Matz  <matz@suse.de>
6750
6751         * builtins.c (interclass_mathfn_icode): New helper.
6752         (expand_builtin_interclass_mathfn): Use it here, and split folding
6753         into ...
6754         (fold_builtin_interclass_mathfn): ... this new folder.
6755         (build_call_nofold_loc): New static helper.
6756         (build_call_nofold): New wrapper macro for above.
6757         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
6758         (expand_builtin_pow): Ditto.
6759         (expand_builtin_memset_args): Ditto.
6760         (expand_builtin_printf): Ditto.
6761         (expand_builtin_fprintf): Ditto.
6762         (expand_builtin_sprintf): Ditto.
6763         (expand_builtin_memory_chk): Ditto.
6764         (expand_builtin_mempcpy_args): Ditto and don't call folders.
6765         (expand_builtin_stpcpy): Ditto.
6766         (expand_builtin_strcmp): Ditto.
6767         (expand_builtin_strncmp): Ditto.
6768         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
6769         (expand_builtin_strcpy_args): Don't call folders.
6770         (expand_builtin_memcmp): Ditto.
6771         (expand_builtin_strncpy): Ditto, and use target.
6772         (expand_builtin_memcpy): Ditto.
6773         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
6774         expand_builtin_strpbrk, expand_builtin_memmove,
6775         expand_builtin_memmove_args, expand_builtin_bcopy,
6776         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
6777         expand_builtin_strspn, expand_builtin_strcspn,
6778         expand_builtin_fputs): Remove these.
6779         (expand_builtin): Don't call the above, change calls to other
6780         expanders that changed prototype.
6781         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
6782         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
6783         fold_builtin_interclass_mathfn.
6784         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
6785         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
6786
6787         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
6788         * passes.c (init_optimization_passes): Move pass_fold_builtins
6789         after last phiopt pass.
6790         * tree-inline.c (fold_marked_statements): When folding builtins
6791         iterate over all instruction potentially generated.
6792         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
6793         earlier.
6794         (fold_gimple_call): Use it to always fold calls (into potentially
6795         multiple instructions).
6796         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
6797         calls into zero at this time.
6798         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
6799         statements generated by builtin folding.
6800
6801 2009-09-28  Nick Clifton  <nickc@redhat.com>
6802
6803         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
6804
6805 2009-09-28  Duncan Sands  <baldrick@free.fr>
6806
6807         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
6808         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
6809         (register_callback): Dispatch it.
6810         (invoke_plugin_callbacks): Incorporate in sanity check.
6811         * ggc.h (ggc_register_cache_tab): Add declaration.
6812         * ggc-common.c (ggc_register_root_tab): Simplify.
6813         (const_ggc_cache_tab_t): New typedef.
6814         (extra_cache_vec): New vector of dynamically added cache tables.
6815         (ggc_register_cache_tab): New function.
6816         (ggc_scan_cache_tab): New function.
6817         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
6818         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
6819
6820 2009-09-27  Richard Henderson  <rth@redhat.com>
6821
6822         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
6823         which we remove __builtin_stack_restore.
6824
6825 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6826
6827         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
6828         to test for GRD_INVARIANT.
6829         (simple_rhs_p): Anything that's function_invariant_p is fine.
6830
6831 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
6832
6833         * gengtype.c (main): Use plunge_files instead of plugin_output.
6834
6835 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
6836             Rafael Avila de Espindola  <espindola@google.com>
6837
6838         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
6839         Don't print pch related info if it is false.
6840         (main): Don't print pch info in plugin mode.
6841
6842 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6843
6844         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
6845         with dw_val_class_const_double.
6846         (struct dw_val_struct): Replace val_long_long with val_double and
6847         adjust for above change.
6848         (output_loc_operands): Likewise.
6849         (add_AT_long_long): Rename into...
6850         (add_AT_double): ...this.
6851         (print_die): Replace dw_val_class_long_long with
6852         dw_val_class_const_double and adjust.
6853         (attr_checksum): Likewise.
6854         (same_dw_val_p): Likewise.
6855         (size_of_die): Likewise.
6856         (value_format): Likewise.
6857         (output_die): Likewise.
6858         (loc_descriptor) <CONST_DOUBLE>: Likewise.
6859         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
6860         instead of add_AT_long_long.
6861         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
6862         value with the precision of its type.
6863
6864 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
6865
6866         PR c/41476
6867         * c-typeck.c (build_conditional_expr): Use the readonly and
6868         volatile flags of the operand types, not of the operands itself.
6869
6870 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
6871
6872         * collect2.c (main): Look for -brtl before adding libraries.
6873
6874 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
6875
6876         * config.gcc: Update OpenBSD targets.
6877         * config/openbsd-stdint.h: New file.
6878         * config/openbsd-libpthread.h: New file.
6879         * config/openbsd.h: Update and break out LIB_SPEC definition.
6880         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
6881         * config/i386/openbsdelf.h: Correct types.
6882         * config/m68k/openbsd.h: Likewise.
6883         * config/mips/openbsd.h: Likewise.
6884         * config/vax/openbsd.h: Likewise.
6885
6886 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6887
6888         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
6889         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
6890         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
6891         of the length and zero.
6892
6893 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6894
6895         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
6896         (FLAGS_H): Add options.h $(REAL_H).
6897         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
6898         (TREE_VECTORIZER_H): New.
6899         (EBITMAP_H): Renamed from EBIMAP_H.
6900         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
6901         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
6902         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
6903         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
6904         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
6905         (graphite-clast-to-gimple.o, graphite-dependences.o)
6906         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
6907         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
6908         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
6909         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
6910         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
6911         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
6912         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
6913         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
6914         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
6915         updated and fixed as per above changes and per
6916         check_makefile_deps.sh output.
6917
6918         PR bootstrap/40928
6919         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
6920         * configure: Regenerate.
6921
6922 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6923
6924         * doc/install.texi: Update minimum MPC version to 0.7.
6925
6926 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
6927
6928         * doc/install.texi (Binaries): Remove reference to the binary
6929         distribution CD-ROM from the FSF.
6930
6931 2009-09-26  Michael Matz  <matz@suse.de>
6932
6933         PR lto/40758
6934         PR middle-end/41470
6935         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
6936         that are mentioned in the body.
6937
6938 2009-09-26  Michael Matz  <matz@suse.de>
6939
6940         PR tree-optimization/41454
6941         * tree-ssa-dom (stmts_to_rescan): Remove variable.
6942         (tree_ssa_dominator_optimize): Don't allocate and free it.
6943         (dom_opt_leave_block): Don't iterate over it.
6944         (eliminate_redundant_computations): Don't return a value.
6945         (cprop_operand, cprop_into_stmt): Ditto.
6946         (optimize_stmt): Don't defer updating stmts.
6947
6948 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
6949
6950         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
6951         generic_parameter_die, template_parameter_pack_die,
6952         gen_formal_parameter_die, gen_subprogram_die): Adjust after
6953         renaming DW_TAG_formal_parameter_pack and
6954         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
6955         and DW_TAG_GNU_template_parameter_pack.
6956
6957 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
6958
6959         * config/v850/v850.h (FUNCTION_VALUE): Remove.
6960         * config/v850/v850.c (v850_function_value): New function.
6961         (TARGET_FUNCTION_VALUE): Define.
6962
6963 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
6964
6965         * tree-vect-stmts.c (vectorizable_call): Call
6966         mark_symbols_for_renaming after vect_finish_stmt_generation.
6967
6968         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
6969         to loc_descriptor_from_tree.
6970         (add_location_or_const_value_attribute): Pass 0 instead of 2
6971         for decl_by_reference_p decls.
6972
6973 2009-09-25  Richard Guenther  <rguenther@suse.de>
6974
6975         PR middle-end/41463
6976         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
6977         arrays again.
6978
6979 2009-09-25  Ben Elliston  <bje@au.ibm.com>
6980
6981         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
6982         after `power7'.
6983
6984 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
6985
6986         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
6987         form of instruction.
6988
6989 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6990
6991         PR middle-end/41435
6992         * fold-const.c (const_binop): Handle complex int division.
6993         * tree-complex.c (expand_complex_div_straight,
6994         expand_complex_div_wide): Update comments.
6995
6996 2009-09-24  DJ Delorie  <dj@redhat.com>
6997
6998         PR target/41456
6999         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
7000         (reg_class): Likewise.
7001         (REG_CLASS_NAMES): Likewise.
7002         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
7003         (m32c_override_options): Disable -fivopts for M32C.
7004
7005 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
7006
7007         * config/rs6000/predicates.md (indexed_or_indirect_operand):
7008         Delete VSX load/store with update support.
7009         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
7010         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
7011         (vsx_movti): Ditto.
7012         (VSX_U): Delete.
7013         (VSbit): Ditto.
7014         (VStype_load_update): Ditto.
7015         (VStype_store_update): Ditto.
7016         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7017         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7018
7019         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
7020         load/store with update builtins.
7021
7022 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
7023
7024         * libgcc2.c (L_trampoline): Prototype for getpagesize
7025         and mprotect in WINNT case.
7026
7027 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
7028
7029         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
7030         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
7031         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
7032         'outgoing' argument.
7033         (TARGET_FUNCTION_VALUE): Define.
7034
7035 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7036
7037         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
7038
7039 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7040
7041         PR bootstrap/41405
7042         * common.opt: Initialize dwarf_strict to -1.
7043         * toplev.c (process_options): Catch unset dwarf_strict
7044         and set to 0 for all targets not overriding.
7045         * config/darwin.c (darwin_override_options): Catch unset
7046         dwarf_strict and override to 1.
7047
7048 2009-09-24  Jeff Law  <law@redhat.com>
7049
7050         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
7051
7052 2009-09-24  Richard Guenther  <rguenther@suse.de>
7053
7054         PR tree-optimization/36143
7055         PR tree-optimization/38747
7056         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
7057         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
7058
7059 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7060
7061         PR bootstrap/41457
7062         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
7063         return false instead of gcc_unreachable ().  For CONST return the
7064         value returned by recursive call instead of always returning true.
7065         (tree_add_const_value_attribute): Return the value returned by
7066         add_const_value_attribute instead of always returning true if rtl
7067         is non-NULL.
7068
7069 2009-09-23  Justin Seyster  <jrseys@gmail.com>
7070
7071         * Makefile.in (PLUGIN_HEADERS): Include real.h.
7072
7073 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7074
7075         * cgraphunit.c (cgraph_lower_function): Revert last change.
7076         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
7077         instead of DECL_NO_STATIC_CHAIN.
7078         * tree-cfg.c (verify_gimple_call): Likewise.
7079         * tree-nested.c (get_chain_decl, get_chain_field,
7080         convert_tramp_reference_op, convert_gimple_call): Likewise.
7081         (convert_all_function_calls): Likewise.  Always set or clear
7082         DECL_STATIC_CHAIN initially, for !n->outer clear it.
7083         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
7084         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
7085         if nested.
7086         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
7087         DECL_NO_STATIC_CHAIN.
7088         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
7089         instead of DECL_NO_STATIC_CHAIN.
7090         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
7091         decl_function_context.
7092         * varasm.c (initializer_constant_valid_p): Likewise.
7093         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
7094         (DECL_STATIC_CHAIN): ... this.
7095         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
7096         instead of DECL_NO_STATIC_CHAIN.
7097
7098 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
7099             Rafael Avila de Espindola  <espindola@google.com>
7100
7101         * gengtype.c (nb_plugin_files): Make it unsigned to match
7102         num_gt_files. Adjust other variables to avoid warnings.
7103         (main): Allocate an all zero lang_bitmap before each plugin file name
7104         to match regular file names.
7105
7106 2009-09-23  Richard Henderson  <rth@redhat.com>
7107
7108         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7109         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
7110         static chain passed in memory.
7111         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
7112         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
7113         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
7114         STATIC_CHAIN_REGNUM defined.
7115
7116         * config/picochip/picochip-protos.h: s/class/klass/.
7117         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
7118         (picochip_static_chain): New.
7119         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
7120         (STATIC_CHAIN_INCOMING): Remove.
7121
7122         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
7123         (xtensa_static_chain): New.
7124         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
7125         (STATIC_CHAIN_INCOMING): Remove.
7126
7127 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7128
7129         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
7130         * config/pa/pa-protos.h (function_value): Remove.
7131         * config/pa/pa.c (pa_function_value): Rename from function_value.
7132         Make static, add 'outgoing' argument.
7133         (TARGET_FUNCTION_VALUE): Define.
7134
7135 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7136
7137         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
7138         instead of cfun->machine->is_leaf.
7139         * config/avr/avr.h (machine_function): Remove is_leaf field.
7140
7141 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7142
7143         PR debug/41439
7144         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
7145         DW_OP_piece after DW_OP_stack_value, adjust size calculations
7146         for it, when DW_OP_stack_value and DW_OP_implicit_value has
7147         the same size, prefer DW_OP_stack_value.
7148         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
7149         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
7150
7151 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7152
7153         PR debug/41353
7154         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
7155
7156 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7157
7158         PR debug/41248
7159         * cfgexpand.c (convert_debug_memory_address): New.
7160         (expand_debug_expr): Convert base address and offset to the same
7161         mode.  Use it to convert addresses to other modes.  Accept
7162         ptr_mode addresses.
7163
7164 2009-09-23  Dodji Seketeli <dodji@redhat.com>
7165
7166         PR debug/41065
7167         * function.h (types_used_by_vars_hash): Declare new hash table.
7168         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
7169         equality and hash function for the hash table.
7170         (types_used_by_cur_var_decl): Declare a new global chained list.
7171         (types_used_by_var_decl_insert): Declare new function.
7172         * function.c (types_used_by_vars_hash): Define the hashtable ...
7173         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
7174         its equality and hash functions.
7175         (hash_types_used_by_vars_entry): New hash helper.
7176         (types_used_by_cur_var_decl): Define the global chained list.
7177         (used_types_insert): Update the list of types used by the global
7178         variable being parsed.
7179         (types_used_by_var_decl_insert): Define new function.
7180         * c-common.h (record_types_used_by_current_var_decl): Declare ...
7181         * c-common.c (record_types_used_by_current_var_decl): ... new
7182         function.
7183         * c-decl.c (finish_decl): Record the types used by the global
7184         variable declaration we've just parsed.
7185         * dwarf2out.c (premark_used_types): Insert a new line between
7186         comment and function.
7187         (premark_used_types_helper): Fix comment.
7188         (premark_types_used_by_global_vars_helper,
7189         premark_types_used_by_global_vars): New functions.
7190         (prune_unused_types): Do not prune types used by global variables.
7191
7192 2009-09-23  Richard Guenther  <rguenther@suse.de>
7193
7194         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
7195         produced for bigendian targets with promoted subregs.
7196
7197 2009-09-23  Richard Guenther  <rguenther@suse.de>
7198
7199         * value-prof.c (gimple_ic): Purge old EH edges only after building
7200         the new ones.
7201
7202 2009-09-23  Nick Clifton  <nickc@redhat.com>
7203
7204         * config/arc/arc.c (arc_trampoline_init): Fix typo.
7205
7206 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7207
7208         PR bootstrap/41405
7209         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
7210
7211         PR bootstrap/41436
7212         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
7213         on non-nested functions.
7214
7215 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7216             Jan Hubicka  <jh@suse.cz>
7217
7218         * dwarf2out.c (loc_list_plus_const): Only define if
7219         DWARF2_DEBUGGING_INFO.
7220         (address_of_int_loc_descriptor): Likewise.
7221
7222         PR debug/41411
7223         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
7224
7225 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
7226
7227         PR c/39779
7228         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
7229         constant is more than zero.
7230
7231 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
7232
7233         PR target/40473
7234         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
7235         call final to emit non-scheduled prologue, instead insert at entry.
7236
7237 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7238             Joseph S. Myers  <joseph@codesourcery.com>
7239
7240         * doc/install.texi (*-*-freebsd*): Add proper format codes.
7241
7242 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7243             Rafael Avila de Espindola  <espindola@google.com>
7244
7245         * gengtype.c (is_file_equal): New function.
7246         (close_output_files): Use is_file_equal. Free of->buf.
7247
7248 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7249             Rafael Avila de Espindola  <espindola@google.com>
7250
7251         * gengtype.c (write_types, write_local): Add the output_header
7252         argument. Update all callers.
7253
7254 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
7255
7256         * dwarf2out.c (template_parameter_pack_die,
7257         gen_formal_parameter_pack_die ): New functions.
7258         (make_ith_pack_parameter_name): Remove this function.
7259         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
7260         DW_TAG_formal_parameter_pack.
7261         (gen_generic_params_dies): Represent each template parameter pack
7262         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
7263         represented by usual DW_TAG_template_*_parameter DIEs that are
7264         children of the DW_TAG_template_parameter_pack element DIE.
7265         (generic_parameter_die): This doesn't deal with parameter pack
7266         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
7267         of parameter pack DIEs.
7268         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
7269         in certain cases, e.g. for pack elements.
7270         (gen_formal_types_die, gen_decl_die): Adjust usage of
7271         gen_formal_parameter_die.
7272         (gen_subprogram_die): Represent each function parameter pack by a
7273         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
7274         represented by usual DW_TAG_formal_parameter DIEs that are children
7275         of the DW_TAG_formal_parameter_pack DIE. Remove references to
7276         ____builtin_va_alist decls as no part of the compiler uses those
7277         anymore.
7278         * langhooks.h (struct lang_hooks_for_decls): Add
7279         function_parm_expanded_from_pack_p, get_generic_function_decl
7280         and function_parameter_pack_p hooks.  Fix comment for
7281         get_innermost_generic_parms hook.
7282         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
7283         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
7284         macros and use them to initialize lang_hook.
7285
7286 2009-09-22  Richard Henderson  <rth@redhat.com>
7287
7288         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
7289         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
7290         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
7291         on TRAMPOLINE_TEMPLATE.
7292         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
7293         TRAMPOLINE_ADJUST_ADDRESS.
7294         * targhooks.c (default_asm_trampoline_template): Remove.
7295         (default_trampoline_adjust_address): Remove.
7296         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
7297         * targhooks.h: Update decls.
7298
7299 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7300
7301         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
7302         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
7303         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
7304
7305 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
7306
7307         PR debug/41295
7308         * reload1.c (reload): Reset debug insns with pseudos without
7309         equivalences.
7310
7311 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
7312
7313         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
7314         unconditional true for decimal float modes.
7315         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
7316         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
7317
7318 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7319
7320         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
7321         Enable a new case for __FreeBSD__ >= 7.
7322         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
7323         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
7324         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
7325         and USE_LD_AS_NEEDED.
7326
7327         * doc/install.texi (*-*-freebsd*): Update target information.
7328
7329 2009-09-22  Richard Guenther  <rguenther@suse.de>
7330
7331         PR middle-end/41395
7332         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
7333         arrays really properly.
7334
7335 2009-09-22  Richard Henderson  <rth@redhat.com>
7336
7337         PR target/41246
7338         * target.h (struct gcc_target): Add asm_out.trampoline_template,
7339         calls.static_chain, calls.trampoline_init,
7340         calls.trampoline_adjust_address.
7341         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7342         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7343         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7344         * builtins.c (expand_builtin_setjmp_receiver): Use
7345         targetm.calls.static_chain; only clobber registers.
7346         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
7347         set up memory attributes properly for the trampoline block.
7348         (expand_builtin_adjust_trampoline): Use
7349         targetm.calls.trampoline_adjust_address.
7350         * calls.c (prepare_call_address): Add fndecl argument.  Use
7351         targetm.calls.static_chain.
7352         * df-scan.c (df_need_static_chain_reg): Remove.
7353         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
7354         consolodate static chain handling.
7355         * doc/tm.texi: Document new hooks.
7356         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
7357         (init_emit_regs): Don't initialize them.
7358         * expr.h (prepare_call_address): Update decl.
7359         * final.c (profile_function): Use targetm.calls.static_chain.
7360         * function.c (expand_function_start): Likewise.
7361         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
7362         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
7363         only clobber registers.
7364         * targhooks.c (default_static_chain): New.
7365         (default_asm_trampoline_template, default_trampoline_init): New.
7366         (default_trampoline_adjust_address): New.
7367         * targhooks.h: Declare them.
7368         * varasm.c (assemble_trampoline_template): Use
7369         targetm.asm_out.trampoline_template.  Make the memory block const
7370         and set its size.
7371
7372         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
7373         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
7374         differences into the TARGET_ABI_OPEN_VMS code block.
7375         (TARGET_TRAMPOLINE_INIT): New.
7376         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
7377         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
7378         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
7379         (INITIALIZE_TRAMPOLINE): Remove.
7380
7381         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
7382         (TRAMPOLINE_TEMPLATE): Merge with ...
7383         (INITIALIZE_TRAMPOLINE): ... this and move ...
7384         * config/arc/arc.c (arc_trampoline_init): ... here.
7385         (TARGET_TRAMPOLINE_INIT): New.
7386
7387         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7388         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7389         (arm_asm_trampoline_template): New.
7390         (arm_trampoline_init, arm_trampoline_adjust_address): New.
7391         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
7392         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
7393         code to arm_asm_trampoline_template.
7394         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
7395         arm_trampoline_adjust_address.
7396         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
7397         adjust for target hook parameters.
7398
7399         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
7400         Remove.
7401
7402         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
7403         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
7404         (bfin_trampoline_init): Rename from initialize_trampoline;
7405         make static; update for target hook parameters.
7406         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7407         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
7408         bfin_asm_trampoline_template.
7409         (INITIALIZE_TRAMPOLINE): Remove.
7410
7411         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7412         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
7413         cris_trampoline_init): New.
7414         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
7415         cris_asm_trampoline_template.
7416         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
7417         adjust for target hook parameters.
7418
7419         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
7420
7421         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7422         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
7423         fr30_trampoline_init): New.
7424         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
7425         fr30_asm_trampoline_template.
7426         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
7427         adjust for target hook parameters.
7428
7429         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
7430         (frv_trampoline_init): Rename from frv_initialize_trampoline;
7431         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
7432         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
7433         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
7434
7435         * config/h8300/h8300.c (h8300_trampoline_init): New.
7436         (TARGET_TRAMPOLINE_INIT): New.
7437         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
7438         to h8300_trampoline_init and adjust for hook parameters.
7439
7440         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
7441         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
7442         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
7443         make static; adjust for hook parameters.
7444         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
7445
7446         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7447         (TARGET_TRAMPOLINE_INIT): New.
7448         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
7449         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
7450         iq2000_asm_trampoline_template.
7451         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
7452         (TRAMPOLINE_CODE_SIZE): New.
7453         (TRAMPOLINE_SIZE): Use it.
7454         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
7455
7456         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
7457         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
7458         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
7459         adjust for hook parameters.
7460         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
7461
7462         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
7463         (m32r_trampoline_init): New.
7464         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
7465         m32r_trampoline_init.
7466
7467         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
7468         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
7469         make static; update for hook parameters.
7470         * config/m68hc11/m68hc11-protos.h: Update.
7471         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
7472
7473         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7474         (TARGET_TRAMPOLINE_INIT): New.
7475         (mcore_function_value): Fix typo.
7476         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
7477         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
7478         to mcore_asm_trampoline_template.
7479         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
7480
7481         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
7482         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
7483         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
7484         update for hook parameters.
7485         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
7486
7487         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7488         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7489         mips_trampoline_init): New.
7490         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
7491         mips_asm_trampoline_template.
7492         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
7493         update for hook parameters.
7494
7495         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7496         (TARGET_TRAMPOLINE_INIT): New.
7497         (mmix_trampoline_size): Remove.
7498         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
7499         make static.  Remove out-of-date tetra vs octa comment.
7500         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
7501         make static; update for hook parameters.
7502         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
7503         (INITIALIZE_TRAMPOLINE): Remove.
7504         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
7505         (TRAMPOLINE_ALIGNMENT): New.
7506         * gcc/config/mmix/mmix-protos.h: Update.
7507
7508         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7509         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7510         mn10300_trampoline_init): New.
7511         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
7512         mn10300_asm_trampoline_template.
7513         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
7514
7515         * config/moxie/moxie.c (moxie_static_chain,
7516         moxie_asm_trampoline_template, moxie_trampoline_init,
7517         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
7518         TARGET_TRAMPOLINE_INIT): New.
7519         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
7520         moxie_trampoline_init.
7521         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
7522         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7523
7524         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7525         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7526         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
7527         pa_trampoline_adjust_address): New.
7528         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
7529         pa_asm_trampoline_template.
7530         (TRAMPOLINE_ALIGNMENT): New.
7531         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
7532         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
7533         adjust for hook parameters.
7534         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
7535
7536         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
7537         (TARGET_TRAMPOLINE_INIT): New.
7538         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
7539         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
7540
7541         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
7542
7543         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
7544         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
7545         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
7546         make static; adjust parameters for the hook.
7547         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
7548
7549         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
7550         s390_trampoline_template; make static.
7551         (s390_trampoline_init): Rename from s390_initialize_trampoline;
7552         make static; adjust for target hook.
7553         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7554         * config/s390/s390-protos.h: Remove trampoline decls.
7555         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
7556         (TRAMPOLINE_TEMPLATE): Remove.
7557         (TRAMPOLINE_ALIGNMENT): New.
7558
7559         * config/score/score-protos.h (score_initialize_trampoline): Remove.
7560         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7561         (TARGET_TRAMPOLINE_INIT): New.
7562         (score_asm_trampoline_template): New.
7563         (score_trampoline_init): Rename from score_initialize_trampoline;
7564         make static; adjust for hook parameters.
7565         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
7566         score[37]_asm_trampoline_template.
7567         (INITIALIZE_TRAMPOLINE): Remove.
7568         * config/score/score3.c (score3_asm_trampoline_template): New.
7569         (score3_trampoline_init): Rename from score3_initialize_trampoline;
7570         adjust for target hook.
7571         * config/score/score7.c (score7_asm_trampoline_template): New.
7572         (score7_trampoline_init): Rename from score7_initialize_trampoline;
7573         adjust for target hook.
7574         * config/score/score3.h, config/score/score7.h: Update.
7575
7576         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
7577         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
7578         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7579         (sh_trampoline_init): Rename from sh_initialize_trampoline;
7580         make static; adjust for target hook parameters.
7581         (sh_trampoline_adjust_address): New.
7582         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
7583         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
7584
7585         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
7586         (sparc32_initialize_trampoline): Rename from
7587         sparc_initialize_trampoline; make static; replace tramp parameter
7588         with m_tramp and update memory accesses.
7589         (sparc64_initialize_trampoline): Similarly.
7590         (sparc_trampoline_init): New.
7591         * config/sparc/sparc-protos.h: Remove trampoline decls.
7592         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
7593         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
7594
7595         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
7596         (array_to_constant): Make ARR parameter const.
7597         (spu_trampoline_init): Rename from spu_initialize_trampoline;
7598         make static; update for hook parameters.
7599         * config/spu/spu-protos.h: Update decls.
7600         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
7601
7602         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
7603         from xstormy16_initialize_trampoline; make static; update for
7604         hook parameters.
7605         (TARGET_TRAMPOLINE_INIT): New.
7606         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
7607
7608         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7609         (TARGET_TRAMPOLINE_INIT): New.
7610         (v850_can_eliminate): Make static.
7611         (v850_asm_trampoline_template, v850_trampoline_init): New.
7612         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
7613         v850_asm_trampoline_template.
7614         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7615         and adjust for target hook parameters.
7616
7617         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7618         (TARGET_TRAMPOLINE_INIT): New.
7619         (vax_asm_trampoline_template, vax_trampoline_init): New.
7620         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
7621         vax_asm_trampoline_template.
7622         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
7623
7624         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7625         (TARGET_TRAMPOLINE_INIT): New.
7626         (xtensa_asm_trampoline_template): Rename from
7627         xtensa_trampoline_template; make static.
7628         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
7629         make static; update for hook parameters.
7630         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
7631         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
7632         (INITIALIZE_TRAMPOLINE): Remove.
7633
7634         * config/i386/i386.c (ix86_function_regparm): Do not issue an
7635         error for nested functions with regparm=3.
7636         (ix86_compute_frame_layout): Adjust frame pointer offset for
7637         ix86_static_chain_on_stack.
7638         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
7639         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
7640         don't reset to UNITS_PER_WORD.
7641         (ix86_emit_leave): Adjust ix86_cfa_state.
7642         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
7643         (ix86_static_chain): New.
7644         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
7645         make static; update for target hook parameters; use ix86_static_chain.
7646         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7647         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
7648         (INITIALIZE_TRAMPOLINE): Remove.
7649         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
7650         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
7651         to the end.  Add static_chain_on_stack.
7652         (ix86_static_chain_on_stack): New.
7653
7654         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
7655         (m68k_output_mi_thunk): Don't use static_chain_rtx.
7656         (m68k_trampoline_init): New.
7657         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
7658         m68k_trampoline_init and adjust for hook parameters.
7659         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
7660         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
7661
7662 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7663
7664         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
7665         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
7666
7667         * reload1.c (reload): Call wrap_constant when substituting
7668         reg for equiv inside of DEBUG_INSNs.
7669
7670         PR bootstrap/41405
7671         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
7672         add_call_src_coords_attributes, add_high_low_attributes,
7673         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
7674         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
7675         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
7676         when -gdwarf-2 -gstrict-dwarf.
7677         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
7678         -gdwarf-[23] -gstrict-dwarf.
7679         (address_of_int_loc_descriptor, loc_descriptor,
7680         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
7681         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
7682         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
7683
7684 2009-09-22  Richard Guenther  <rguenther@suse.de>
7685
7686         PR tree-optimization/41428
7687         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
7688         (ccp_finalize): Pass it to substitute_and_fold.
7689
7690 2009-09-22  Richard Guenther  <rguenther@suse.de>
7691
7692         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
7693         (substitute_and_fold): Adjust prototype.
7694         * tree-vrp.c (vrp_evaluate_conditional): Make static.
7695         (simplify_stmt_using_ranges): Likewise.
7696         (fold_predicate_in): Move here from tree-ssa-propagate.c.
7697         (vrp_fold_stmt): New function.
7698         (vrp_finalize): Pass it to substitute_and_fold.
7699         * tree-flow.h (vrp_evaluate_conditional): Remove.
7700         (simplify_stmt_using_ranges): Likewise.
7701         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
7702         * tree-ssa-copy.c (fini_copy_prop): Likewise.
7703         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
7704         member.
7705         (fold_predicate_in): Move to tree-vrp.c.
7706         (substitute_and_fold): Use the callback instead of calling into
7707         tree-vrp.c functions directly.
7708
7709 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7710
7711         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
7712         comparison warning on rs6000.
7713
7714         PR middle-end/41429
7715         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
7716         GIMPLE_EH_MUST_NOT_THROW cleanup.
7717         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7718
7719 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
7720
7721         PR middle-end/41260
7722         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
7723         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
7724         LIB_SPEC for darwin10 and later since it always uses the unwinder in
7725         libSystem which is derived from the gcc 4.2.1 unwinder.
7726
7727 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7728
7729         PR middle-end/41357
7730         * varasm.c (default_encode_section_info): Copy TLS model into
7731         sym_ref flags regardless of backend support for TLS, for all
7732         model types except TLS_MODEL_EMULATED.
7733
7734 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7735
7736         PR bootstrap/41404
7737         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
7738         we can handle it correctly.
7739
7740 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7741
7742         * doc/install.texi (os2): Remove section.
7743
7744 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7745
7746         * doc/standards.texi (Objective-C): Adjust two URLs.
7747
7748 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
7749
7750         * tree-tailcall.c (process_assignment): Don't check if a
7751         multiplication or an addition are already present.
7752         (find_tail_calls): Combine multiple additions and multiplications.
7753         (adjust_accumulator_values): Emit accumulators.
7754
7755 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
7756
7757         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
7758         xmm register restore.
7759
7760 2009-09-21  Jan Hubicka  <jh@suse.cz>
7761
7762         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
7763         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
7764         restore at the end.
7765
7766 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
7767
7768         * stor-layout.c (layout_type): Remove obsolete code.
7769
7770 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
7771
7772         PR middle-end/41395
7773         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
7774
7775 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7776
7777         PR middle-end/30789
7778         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
7779         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
7780         (fold_builtin_2, do_mpc_arg1): Update accordingly.
7781         * fold-const.c (const_binop): Likewise.
7782         * real.h (do_mpc_arg2): Update prototype.
7783
7784 2009-09-20  Jan Hubicka  <jh@suse.cz>
7785
7786         * dwarf2out.c (add_const_value_attribute): Return true if successful.
7787         (add_location_or_const_value_attribute): Rewrite using
7788         loc_list_from_tree.
7789         (tree_add_const_value_attribute): Return true if successful.
7790         (tree_add_const_value_attribute_for_decl): Likewise.
7791
7792         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
7793         (loc_descriptor): ... here;
7794         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7795         (cst_pool_loc_descr): Break out from ...; do not reffer constant
7796         pool items that was not marked for output.
7797         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
7798         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7799         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7800         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
7801         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
7802         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
7803         DW_OP_stack_value to get address of items that are not available
7804         as addresses.
7805         (dw_loc_list): Handle single element lists correctly.
7806
7807 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
7808             Pascal Obry  <obry@adacore.com>
7809
7810         * unwind-dw2-fde.c (classify_object_over_fdes):
7811         Cast the constant 1 to _Unwind_Ptr.
7812         (add_fdes): Likewise.
7813         (linear_search_fdes): Likewise.
7814
7815 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
7816
7817         * stor-layout.c (set_sizetype): Avoid useless type copy.
7818
7819 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
7820
7821         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
7822         feature check.
7823         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
7824         * configure, config.in: Regenerate.
7825         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
7826         DW_EH_PE_absptr.
7827         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
7828         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
7829         for global data if the output could be used in a shared library.
7830         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
7831         to 0 if TARGET_WRITABLE_EH_FRAME.
7832
7833 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
7834
7835         PR rtl-optimization/39886
7836         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
7837         just when insn is equal to BB_END (bb).
7838
7839 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
7840
7841         * config/mips/mips.opt (mrelax-pic-calls): New option.
7842         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
7843         the file.
7844         (mips_unspec_call): Change "unspec_call" expander into this.
7845         (mips_strip_unspec_call): New function.
7846         (mips_got_load): Call mips_unspec_call instead of
7847         gen_unspec_call<mode>.
7848         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
7849         MIPS_CALL.
7850         (mips_cfg_in_reorg): New function.
7851         (mips16_lay_out_constants): Use it to decide whether to call
7852         CFG-aware insn splitting.
7853         (r10k_insert_cache_barriers): Move CFG set-up code from here to
7854         mips_reorg.  Move DF set-up code from here ...
7855         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
7856         from here.
7857         (mips_reorg): Call mips_df_reorg instead of
7858         r10k_insert_cache_barriers.  Move CFG set-up code here from
7859         r10k_insert_cache_barriers.
7860         (mips_call_expr_from_insn): New function.
7861         (mips_pic_call_symbol_from_set): Likewise.
7862         (mips_find_pic_call_symbol): Likewise.
7863         (mips_annotate_pic_call_expr): Likewise.
7864         (mips_get_pic_call_symbol): Likewise.
7865         (mips_annotate_pic_calls): Likewise.
7866         (mips_override_options): Disable -mrelax-pic-calls unless PIC
7867         calls are used.
7868         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
7869         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
7870         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
7871         directive.
7872         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
7873         (unspec_call<mode>): Remove it.
7874         (sibcall_internal, sibcall_value_internal,
7875         sibcall_value_multiple_internal, call_internal, call_split,
7876         call_value_internal, call_value_split,
7877         call_value_multiple_internal, call_value_multiple_split): Pass
7878         SIZE_OPNO to MIPS_CALL.
7879         (call_internal_direct, call_direct_split,
7880         call_value_internal_direct, call_value_direct_split): Pass -1 as
7881         SIZE_OPNO to MIPS_CALL.
7882         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
7883         * configure: Regenerate.
7884         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
7885         and -mno-relax-pic-calls.
7886         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
7887
7888 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7889
7890         PR bootstrap/35619
7891         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
7892         in the directory this rule is called from, rather than the
7893         toplevel 'gcc' directory, to fix in-tree build.
7894
7895 2009-09-19  Chris Demetriou  <cgd@google.com>
7896
7897         PR preprocessor/28435:
7898         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
7899         to cpplib that the preprocessor output is needed.
7900
7901 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
7902
7903         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
7904         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
7905         *return_and_restore_fpregs_<mode>,
7906         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
7907
7908         PR bootstrap/41397
7909         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
7910         instead of assuming it has always a REG inside of it.
7911
7912 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
7913
7914         * config/freebsd.h: Update comment on types.
7915         (WINT_TYPE): Define.
7916
7917 2009-09-18  Jason Merrill  <jason@redhat.com>
7918
7919         * c.opt: Add -fno-deduce-init-list.
7920
7921 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
7922
7923         * value-prof.c (interesting_stringop_to_profile_p): Added output
7924         argument to indicate which parameter is the size parameter.
7925         * value-prof.c (gimple_stringop_fixed_value): Use
7926         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
7927         * value-prof.c (gimple_stringops_transform): Update call sites to
7928         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
7929
7930 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
7931
7932         PR target/38288
7933         From David Binderman <dcb314@hotmail.com>:
7934         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
7935         local variable f.  Remove stale comments.
7936         (ix86_compute_frame_layout): Remove useless local variable total_size.
7937         Remove #if 0'd code.
7938         (legitimate_address_p): Remove useless local variables
7939         reason_rtx and reason.
7940         (ix86_split_copysign_const): Remove useless local variable op1.
7941         (scale_counter): Remove useless local variable piece_size_mask.
7942
7943 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
7944
7945         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
7946         output decl.
7947
7948 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
7949
7950         PR target/40913
7951         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
7952
7953 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
7954
7955         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
7956         TYPE_STUB_DECL.
7957
7958 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
7959
7960         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
7961         DW_OP_implicit_value even without dwarf_version 4.
7962
7963 2009-09-17  Jan Hubicka  <jh@suse.cz>
7964
7965         * dwarf2out.c: Include tree-pass.h and gimple.h.
7966         (loc_list_plus_const): New function.
7967         (loc_descriptor_from_tree_1): Rename to ...
7968         (loc_descriptor_from_tree): ... remove original.
7969         (loc_list_from_tree): New function.
7970         (add_AT_location_description): Accept location list.
7971         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
7972         (concatn_mem_loc_descriptor): Remove.
7973         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
7974         returning NULL.
7975         (secname_for_decl): Move up.
7976         (hidden_reference_p): New function; break out from ...
7977         (loc_by_refernece): ... here; move up.
7978         (dw_loc_list): New function.
7979         (single_element_loc_list): New function.
7980         (single_element_loc_list_p): New function.
7981         (add_loc_descr_to_each): New function.
7982         (add_loc_list): New function.
7983         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
7984         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
7985         add diagnostics why expansion failed.
7986         (add_location_or_const_value_attribute): Support location lists.
7987         (add_bound_info): Likewise.
7988         (descr_info_loc): Update call of loc_descriptor_from_tree.
7989         (gen_variable_die): Work on location lists.
7990         * final.c (pass_final): Add dump file.
7991         * Makefile.in (dwarf2out.o): Add new dependencies.
7992
7993 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
7994
7995         PR c/41049
7996         * real.c decimal_from_integer, decimal_integer_string): New.
7997         (real_from_integer): Use them as special case for decimal float.
7998         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
7999         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
8000         Do not append zero after the decimal point in string to convert.
8001
8002 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
8003
8004         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
8005         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
8006
8007 2009-09-17  Martin Jambor  <mjambor@suse.cz>
8008
8009         * common.opt (fipa-sra): New switch.
8010         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
8011         * timevar.def (TV_IPA_SRA): New timevar.
8012         * params.def (ipa-sra-ptr-growth-factor): New parameter.
8013         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
8014         * tree-sra.c: Include cgraph.c.
8015         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
8016         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
8017         and grp_not_necessarilly_dereferenced.
8018         (func_param_count): New variable.
8019         (encountered_apply_args): New variable.
8020         (bb_dereferences): New variable.
8021         (final_bbs): New variable.
8022         (no_accesses_representant): New variable.
8023         (no_accesses_p): New function.
8024         (dump_access): Dump the new fields.
8025         (sra_initialize): Set encountered_apply_args to false.
8026         (get_ssa_base_param): New function.
8027         (mark_parm_dereference): New function.
8028         (create_access): Caring for INIDRECT_REFs and different handling of
8029         varialble length accesses in early IPA SRA.  Store the stmt - a new
8030         parameter - to the new access.
8031         (build_access_from_expr_1): New parameter stmt, passed to
8032         create_access.  Handle INDIRECT_REFs.
8033         (build_access_from_expr): Pass the current statement to
8034         build_access_from_expr_1.
8035         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
8036         passes.
8037         (build_accesses_from_assign): Pass the current statement to
8038         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
8039         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
8040         final_bbs when necessary.  Check for calls to __builtin_apply_args.
8041         Fixup EH info if anythng was changed.
8042         (is_unused_scalar_param): New function.
8043         (ptr_parm_has_direct_uses): New function.
8044         (find_param_candidates): New function.
8045         (mark_maybe_modified): New function.
8046         (analyze_modified_params): New function.
8047         (propagate_dereference_distances): New function.
8048         (dump_dereferences_table): New function.
8049         (analyze_caller_dereference_legality): New function.
8050         (unmodified_by_ref_scalar_representative): New function.
8051         (splice_param_accesses): New function.
8052         (decide_one_param_reduction): New function.
8053         (enum ipa_splicing_result): New type.
8054         (splice_all_param_accesses): New function.
8055         (get_param_index): New function.
8056         (turn_representatives_into_adjustments): New function.
8057         (analyze_all_param_acesses): New function.
8058         (get_replaced_param_substitute): New function.
8059         (get_adjustment_for_base): New function.
8060         (replace_removed_params_ssa_names): New function.
8061         (sra_ipa_reset_debug_stmts): New function.
8062         (sra_ipa_modify_expr): New function.
8063         (sra_ipa_modify_assign): New function.
8064         (convert_callers): New function.
8065         (modify_function): New function.
8066         (ipa_sra_preliminary_function_checks): New function.
8067         (ipa_early_sra): New function.
8068         (ipa_early_sra_gate): New function.
8069         (pass_early_ipa_sra): New variable.
8070         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
8071
8072 2009-09-17  Michael Matz  <matz@suse.de>
8073
8074         PR middle-end/41347
8075         * tree.c (build_type_attribute_qual_variant): Export.
8076         * tree.h (build_type_attribute_qual_variant): Declare.
8077         * tree-inline.c (remap_type_1): Use it to build variants with
8078         the original qualifiers and attributes.
8079
8080 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8081
8082         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
8083         without a fallthrough edge.
8084
8085 2009-09-16  DJ Delorie  <dj@redhat.com>
8086
8087         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
8088         chip and ignore the "fast_interrupt" attribute if so.
8089
8090 2009-09-16  Richard Henderson  <rth@redhat.com>
8091
8092         PR middle-end/41360
8093         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
8094         barrier fix.
8095
8096 2009-09-16  Richard Henderson  <rth@redhat.com>
8097
8098         PR target/41246
8099         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
8100         is set only if DECL_NO_STATIC_CHAIN is unset.
8101         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
8102         (FOR_EACH_NEST_INFO): New.
8103         (walk_all_functions): Use it.
8104         (finalize_nesting_tree): Likewise.
8105         (unnest_nesting_tree): Likewise.
8106         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
8107         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
8108         (convert_gimple_call): Early out if gimple_call_chain already set.
8109         (convert_all_function_calls): Iterate until no new functions
8110         require a static chain.
8111         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
8112         when building a trampoline.  Use dump_function_to_file instead
8113         of dump_function.
8114         (lower_nested_functions): Open dump_file.  Validate that decls
8115         that have DECL_NO_STATIC_CHAIN from the front end don't have that
8116         bit reset by this pass.
8117
8118 2009-09-16  Michael Matz  <matz@suse.de>
8119
8120         PR fortran/41212
8121         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
8122         shorten decl_common_unused.
8123         (DECL_RESTRICTED_P): New accessor.
8124         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
8125         to disambiguate marked decls and restrict pointers.
8126
8127 2009-09-16  Richard Henderson  <rth@redhat.com>
8128
8129         PR middle-end/41360
8130         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
8131
8132 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
8133
8134         * integrate.c (set_block_abstract_flags): Call
8135         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
8136
8137 2009-09-16  Richard Guenther  <rguenther@suse.de>
8138
8139         PR middle-end/34011
8140         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
8141         as non-aliased.
8142
8143 2009-09-16  DJ Delorie  <dj@redhat.com>
8144             Kaz Kojima  <kkojima@gcc.gnu.org>
8145
8146         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
8147         (sh_expand_prologue): Update calls to output_stack_adjust.
8148         (sh_expand_epilogue): Likewise.
8149
8150 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
8151
8152         PR bootstrap/41349
8153         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
8154         trying to limit the extent of searches in the insn stream.
8155
8156 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
8157             Jakub Jelinek  <jakub@redhat.com>
8158
8159         PR target/41175
8160         PR target/40677
8161         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
8162         problem.
8163         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
8164         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
8165         (rs6000_savres_strategy): Always save FP registers inline if the
8166         target doesn't support hardware double-precision.  Set the above
8167         bits in return value when needed.
8168         (rs6000_savres_routine_sym): Fix computation for cache selector.
8169         Mark the generated symbol as a function.  Rename exitp argument to
8170         lr.  Move code for determining the name of the symbol...
8171         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
8172         getting the names right on AIX and 64-bit Linux.
8173         (savres_routine_name): New variable.
8174         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
8175         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
8176         on what the target routine uses as a base register.  If savep && lr
8177         describe saving of r0 into memory slot.
8178         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
8179         line calls for AIX ABI.
8180         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
8181         determine FP save/restore functions.
8182         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
8183         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
8184         gen_addsi3.
8185         (rs6000_emit_epilogue): Adjust computation of restore_lr.
8186         Duplicate restoration of LR and execute the appropriate one
8187         depending on whether GPRs are being restored inline.  Set r11 from
8188         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
8189         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
8190         Fix out of line calls for AIX ABI.
8191         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
8192         New insn.
8193         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
8194         register 11.
8195         (*restore_gpregs_spe): Likewise.
8196         (*return_and_restore_gpregs_spe): Likewise.
8197         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8198         Define to empty string unconditionally.
8199         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8200         Define to empty string unconditionally.
8201         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
8202         !TARGET_64BIT.
8203
8204 2009-09-15  Jan Hubicka  <jh@suse.cz>
8205
8206         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
8207         * params.def (inline-insns-auto): Likewise.
8208
8209 2009-09-15  Martin Jambor  <mjambor@suse.cz>
8210
8211         * ipa-inline.c (estimate_function_body_sizes): Dump info about
8212         individual statements only at TDF_DETAILS dump level.  Format
8213         source for 80 characters per line.
8214
8215 2009-09-15  Christian Bruel  <christian.bruel@st.com>
8216
8217         * regrename.c (do_replace): Update REG_DEAD notes.
8218
8219 2009-09-15  Revital Eres  <eres@il.ibm.com>
8220
8221         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
8222         * targhooks.c (default_builtin_support_vector_misalignment):
8223         New builtin function.
8224         * targhooks.h (default_builtin_support_vector_misalignment):
8225         Declare.
8226         * target.h (builtin_support_vector_misalignment):
8227         New field in struct gcc_target.
8228         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
8229         new builtin function.
8230         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
8231         Define.
8232         * config/rs6000/rs6000.c
8233         (rs6000_builtin_support_vector_misalignment): New function.
8234         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
8235
8236 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
8237
8238         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
8239         instead of INSN_P.
8240         (bfin_optimize_loop): Likewise.
8241         (bfin_gen_bundles): Likewise.
8242         (workaround_speculation): Likewise.
8243         (find_load): Return NULL_RTX for debug_insn.
8244
8245 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
8246
8247         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
8248         (sminsf3): Ditto.
8249
8250 2009-09-14  DJ Delorie  <dj@redhat.com>
8251
8252         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
8253         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
8254         VLIW mode.
8255
8256 2009-09-14  Richard Henderson  <rth@redhat.com>
8257             Jakub Jelinek  <jakub@redhat.com>
8258
8259         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
8260         * cfgbuild.c (make_edges): Handle asm goto.
8261         * cfglayout.c (fixup_reorder_chain): Likewise.
8262         * cfgrtl.c (patch_jump_insn): Likewise.
8263         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
8264         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
8265         (gimple_build_asm_vec): Add and use labels parameter.
8266         (gimple_build_asm): Remove.
8267         (walk_gimple_asm): Walk labels too.
8268         * gimple.def (GIMPLE_ASM): Update docs.
8269         * gimple.h: Update decls.
8270         (struct gimple_statement_asm): Change nc to use unsigned char;
8271         add nl member.
8272         (gimple_asm_nlabels): New.
8273         (gimple_asm_label_op, gimple_asm_set_label_op): New.
8274         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
8275         into gimple_build_asm_vec.
8276         * jump.c (mark_jump_label_asm): New.
8277         (mark_jump_label): Use it.
8278         (redirect_jump_1): Handle asm goto.
8279         (invert_jump_1): Soft fail if X is null.
8280         * recog.c (extract_asm_operands): New.
8281         (asm_noperands): Use it; handle asm labels.
8282         (decode_asm_operands): Use extract_asm_operands.
8283         (asm_operand_ok): Properly handle empty string.
8284         * reg-stack.c (get_asm_operands_in_out): Rename from
8285         get_asm_operand_n_inputs; use extract_asm_operands; return both
8286         inputs and outputs by reference; update all callers.
8287         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
8288         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
8289         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
8290         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
8291         (extract_asm_operands): Declare.
8292         * stmt.c (expand_asm_operands): Add and use labels parameter.
8293         (check_unique_operand_names): Likewise.
8294         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
8295         (expand_asm_stmt): Handle asm labels.
8296         * tree-cfg.c (make_gimple_asm_edges): New.
8297         (make_edges): Use it.
8298         (cleanup_dead_labels): Handle asm labels.
8299         (is_ctrl_altering_stmt): Likewise.
8300         (gimple_redirect_edge_and_branch): Likewise.
8301         * tree.def (ASM_EXPR): Add 5th operand.
8302         * tree.h (ASM_LABELS): New.
8303         (resolve_asm_operand_names): Update decl.
8304
8305         * c-parser.c (c_parser_asm_statement): Parse asm goto.
8306         (c_parser_asm_goto_operands): New.
8307         * c-tree.h (build_asm_expr): Update decl.
8308         * c-typeck.c (build_asm_expr): Add and use labels parameter.
8309         * doc/extend.texi: Document asm goto.
8310
8311 2009-09-14  Richard Henderson  <rth@redhat.com>
8312
8313         * except.h: Update declarations.
8314         (struct pointer_map_t): Forward declare.
8315         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
8316         (struct eh_landing_pad_d, eh_landing_pad): New.
8317         (struct eh_catch_d, eh_catch): New.
8318         (struct eh_region_d): Remove next_region_sharing_label, aka,
8319         label, tree_label, landing_pad, post_landing_pad, resume,
8320         may_contain_throw.  Rename region_number to index.  Remove
8321         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
8322         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
8323         (VEC(eh_landing_pad,gc)): New.
8324         (struct eh_status): Remove last_region_number.  Add lp_array,
8325         throw_stmt_table, ttype_data, ehspec_data.
8326         (ehr_next, FOR_ALL_EH_REGION_AT): New.
8327         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
8328         * except.c (lang_protect_cleanup_actions): Return tree.
8329         (struct ehl_map_entry): Remove.
8330         (init_eh_for_function): Push zero entries for region and lp_array.
8331         (gen_eh_region): Add to region_array immediately.
8332         (gen_eh_region_catch): Operate on eh_catch objects.
8333         (gen_eh_landing_pad): New.
8334         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
8335         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
8336         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
8337         (get_eh_landing_pad_from_number_fn): New.
8338         (get_eh_landing_pad_from_number): New.
8339         (get_eh_region_from_lp_number_fn): New.
8340         (get_eh_region_from_lp_number): New.
8341         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
8342         (get_exception_pointer, get_exception_filter): Remove.
8343         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
8344         (current_function_has_exception_handlers): Simplify.
8345         (bring_to_root, eh_region_replaceable_by_p): Remove.
8346         (replace_region, hash_type_list, hash_eh_region): Remove.
8347         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
8348         (label_to_region_map, num_eh_regions): Remove.
8349         (get_next_region_sharing_label, must_not_throw_labels): Remove.
8350         (find_exception_handler_labels): Remove.
8351         (duplicate_eh_regions_0, find_prev_try): Remove.
8352         (struct duplicate_eh_regions_data): New.
8353         (duplicate_eh_regions_1): Rewrite.
8354         (duplicate_eh_regions): Return a pointer map instead of an
8355         integer offset.
8356         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
8357         (redirect_eh_edge_to_label): Remove.
8358         (eh_region_outermost): Rewrite using eh_region pointers
8359         instead of integers.
8360         (add_ttypes_entry): Update for ttype_data move to eh_status.
8361         (add_ehspec_entry): Rewrite with VEC instead of varray.
8362         (assign_filter_values): Likewise.  Export.
8363         (build_post_landing_pads, connect_post_landing_pads): Remove.
8364         (dw2_build_landing_pads): Rewrite to use lp_array.
8365         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
8366         (sjlj_assign_call_site_values): Rewrite to use lp_array.
8367         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
8368         (sjlj_mark_call_sites): Update for landing pad numbers.
8369         (finish_eh_generation): Rewrite.
8370         (gate_handle_eh): Do nothing for no eh tree.
8371         (pass_rtl_eh): Move up near finish_eh_generation.
8372         (remove_eh_landing_pad): New.
8373         (remove_eh_handler): Export.
8374         (remove_eh_region, remove_eh_handler_and_replace): Remove.
8375         (for_each_eh_label): Rewrite to use lp_array.
8376         (make_reg_eh_region_note): New.
8377         (make_reg_eh_region_note_nothrow_nononlocal): New.
8378         (insn_could_throw_p): New.
8379         (copy_reg_eh_region_note_forward): New.
8380         (copy_reg_eh_region_note_backward): New.
8381         (check_handled, add_reachable_handler): Remove.
8382         (reachable_next_level, foreach_reachable_handler): Remove.
8383         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
8384         (get_eh_region_and_lp_from_rtx): New.
8385         (get_eh_region_from_rtx): New.
8386         (can_throw_internal_1, can_throw_external_1): Remove.
8387         (can_throw_internal): Use get_eh_region_from_rtx.
8388         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
8389         (insn_nothrow_p, can_nonlocal_goto): New.
8390         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
8391         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
8392         (add_action_record): Use VEC not varray.
8393         (collect_one_action_chain): Update for eh_region changes.
8394         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
8395         Use get_eh_region_and_lp_from_rtx.
8396         (gate_convert_to_eh_region_ranges): New.
8397         (pass_convert_to_eh_region_ranges): Use it.
8398         (push_uleb128, push_sleb128): Use VEC not varray.
8399         (output_one_function_exception_table): Likewise.
8400         (dump_eh_tree): Update for eh_region changes.
8401         (verify_eh_tree): Likewise.
8402         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
8403         * tree-eh.c: Include target.h.
8404         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
8405         Don't disallow GIMPLE_RESX; adjust argument check.
8406         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
8407         (record_stmt_eh_region): Update for landing pad numbers;
8408         generate a landing pad if necessary.
8409         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
8410         (remove_stmt_from_eh_lp_fn): Similarly.
8411         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
8412         Update for lp numbers; don't special case missing throw_stmt_table.
8413         (lookup_expr_eh_lp): Similarly.
8414         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
8415         (eh_seq, eh_region_may_contain_throw): New.
8416         (struct leh_state): Add ehp_region.
8417         (struct leh_tf_state): Remove eh_label.
8418         (emit_post_landing_pad): New.
8419         (emit_resx, emit_eh_dispatch): New.
8420         (note_eh_region_may_contain_throw): New.
8421         (frob_into_branch_around): Take eh_region not eh label;
8422         emit eh code into eh_seq.
8423         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
8424         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
8425         lower_eh_must_not_throw.  Emit code to eh_seq.
8426         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
8427         (lower_try_finally_onedest): Likewise.
8428         (lower_try_finally_copy): Likewise.
8429         (lower_try_finally_switch): Likewise.
8430         (lower_try_finally): Initialize ehp_region.
8431         (lower_catch): Update for eh_catch objects.
8432         (lower_eh_filter): Don't handle must_not_throw.
8433         (lower_eh_must_not_throw): New.
8434         (lower_cleanup): Don't set eh_label.
8435         (lower_eh_constructs_2): Resolve eh builtins.
8436         Handle GIMPLE_EH_MUST_NOT_THROW.
8437         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
8438         Add eh_seq to the end of the function body.
8439         (make_eh_dispatch_edges): New.
8440         (make_eh_edge): Remove.
8441         (make_eh_edges): Simplify for landing pads.
8442         (redirect_eh_edge_1): New.
8443         (redirect_eh_edge): Use it.
8444         (redirect_eh_dispatch_edge): New.
8445         (stmt_could_throw_p): Use a switch.  Allow RESX.
8446         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
8447         (stmt_can_throw_internal): Likewise.
8448         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
8449         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
8450         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
8451         (gate_refactor_eh): New.
8452         (pass_refactor_eh): Use it.
8453         (lower_resx, execute_lower_resx, pass_lower_resx): New.
8454         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
8455         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
8456         (remove_unreachable_handlers): Rename from
8457         tree_remove_unreachable_handlers; rewrite for landing pads;
8458         call remove_eh_handler directly.
8459         (remove_unreachable_handlers_no_lp): New.
8460         (unsplit_eh, unsplit_all_eh): New.
8461         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
8462         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
8463         (cleanup_empty_eh_unsplit): New.
8464         (cleanup_empty_eh): Rewrite.
8465         (cleanup_all_empty_eh): New.
8466         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
8467         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
8468         (gate_cleanup_eh): New.
8469         (pass_cleanup_eh): Use it.
8470         (verify_eh_edges): Move later in file.  Expect one EH edge.
8471         (verify_eh_dispatch_edge): New.
8472
8473         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
8474         (gtype-desc.o): Add TARGET_H.
8475         (tree.o): Use EXCEPT_H, not except.h.
8476         (cfgbuild.o): Add EXPR_H.
8477         (GTFILES): Add vecprim.h.
8478         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
8479         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
8480         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
8481         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
8482         * calls.c (emit_call_1): Use make_reg_eh_region_note.
8483         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
8484         calls to can_throw_internal.
8485         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
8486         (make_edges): Don't handle RESX; use can_nonlocal_goto.
8487         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
8488         (expand_gimple_stmt): Use make_reg_eh_region_note.
8489         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
8490         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
8491         or find_exception_handler_labels.
8492         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
8493         there is exacly one EH edge.  Use can_nonlocal_goto and
8494         can_throw_internal.
8495         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
8496         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
8497         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
8498         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
8499         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
8500         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
8501         * dse.c (scan_insn): Use insn_could_throw_p.
8502         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
8503         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
8504         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
8505         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
8506         EXC_PTR_EXPR or FILTER_EXPR.
8507         (tree_expr_nonzero_warnv_p): Likewise.
8508         * function.h: Include vecprim.h, not varray.h
8509         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
8510         move ttype_data and ehspec_data members to struct eh_status; change
8511         action_record_data member to a VEC.
8512         * gcse.c (hash_scan_set): Use can_throw_internal.
8513         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
8514         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
8515         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8516         (block_may_fallthru): Don't handle RESX_EXPR.
8517         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
8518         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
8519         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
8520         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
8521         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
8522         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
8523         (gimple_size): Likewise.
8524         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
8525         (gimple_build_resx): Use gimple_build_with_ops.
8526         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
8527         (is_gimple_val): Likewise.
8528         (is_gimple_stmt): Remove RESX_EXPR.
8529         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
8530         (GIMPLE_RESX): Reorder with other EH constructs.
8531         * gimple.h (struct gimple_statement_eh_mnt): New.
8532         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
8533         (gimple_eh_filter_must_not_throw): Remove.
8534         (gimple_eh_filter_set_must_not_throw): Remove.
8535         (gimple_eh_must_not_throw_fndecl): New.
8536         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
8537         (is_gimple_resx): New.
8538         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
8539         Don't copy EH_FILTER_MUST_NOT_THROW.
8540         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
8541         * ipa-inline.c (estimate_function_body_sizes): Don't try to
8542         handle must_not_throw_labels specially.
8543         * ipa-pure-const.c (check_call): Update debug statement for LP.
8544         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
8545         * ipa-utils.c (get_base_var): Likewise.
8546         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
8547         * lower-subreg.c (move_eh_region_note): Remove.
8548         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
8549         * omp-low.c (new_omp_context): Update for eh_lp_nr.
8550         (create_task_copyfn): Likewise.
8551         (maybe_catch_exception): Use gimple_build_eh_filter.
8552         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
8553         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
8554         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
8555         and pass_lower_resx.
8556         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
8557         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
8558         can_throw_internal, can_nonlocal_goto.
8559         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
8560         copy_reg_eh_region_note_forward.
8561         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
8562         (emit_output_reload_insns): Likewise.
8563         (copy_eh_notes): Remove.
8564         * rtl.def (RESX): Remove.
8565         * rtl.h: Update declarations.
8566         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
8567         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
8568         (update_eh_label): Remove.
8569         (cleanup_dead_labels_eh): New.
8570         (cleanup_deal_labels): Use it instead of update_eh_label.
8571         (gimple_merge_blocks): Update landing pad data structure when
8572         removing a landing pad label.
8573         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
8574         test; handle GIMPLE_EH_MUST_NOT_THROW.
8575         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
8576         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
8577         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
8578         (verify_stmt): Likewise.  Verify landing pads.
8579         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
8580         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
8581         (struct move_stmt_d): Add eh_map.
8582         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
8583         (move_stmt_r): Remap eh region numbers in builtin calls,
8584         resx and eh_dispatch.
8585         (move_block_to_fn): Remove eh_offset parameter.  Use
8586         maybe_duplicate_eh_stmt_fn.
8587         (find_outermost_region_in_block): Operate on eh_region pointers
8588         instead of region numbers.
8589         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
8590         duplicate_eh_regions.
8591         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
8592         test earlier.  Disallow EH landing pads.
8593         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
8594         * tree-flow.h: Update declarations.
8595         (struct tree_ann_common_d): Replace rn with lp_nr.
8596         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
8597         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
8598         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
8599         resx and eh_dispatch.
8600         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
8601         (copy_edges_for_bb): Use make_eh_dispatch_edges.
8602         (copy_cfg_body): Expect eh_map instead of eh_region_offset
8603         from duplicate_eh_regions.
8604         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
8605         update RESX; handle EH_DISPATCH.
8606         (expand_call_inline): Set eh_lp_nr, not eh_region.
8607         (maybe_inline_call_in_expr): Likewise.
8608         * tree-inline.h (struct copy_body_data): Replace eh_region with
8609         eh_lp_nr, eh_region_offset with eh_map.
8610         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
8611         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
8612         * tree-pretty-print.c (dump_generic_node): Don't handle
8613         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8614         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8615         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8616         EXC_PTR_EXPR, FILTER_EXPR.
8617         * tree-ssa-operands.c (get_expr_operands): Likewise.
8618         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
8619         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
8620         (ao_ref_init_from_vn_reference): Likewise.
8621         * tree-ssa-sink.c (statement_sink_location): Likewise.
8622         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8623         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
8624         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
8625         EXC_PTR_EXPR, FILTER_EXPR.
8626         (is_exception_related): Remove.
8627         (compute_avail): Don't call it.
8628         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
8629         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
8630         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
8631         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
8632         Build EH builtins.
8633         (build_resx): Remove.
8634         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
8635         * tree.h: Update declarations.
8636         (EH_FILTER_MUST_NOT_THROW): Remove.
8637         (struct tree_label_decl): Add eh_landing_pad_nr.
8638         (EH_LANDING_PAD_NR): New.
8639         * value-prof.c (gimple_ic): Tidy variable names.  Update for
8640         landing pad numbers.
8641         (gimple_stringop_fixed_value): Tidy variable names.  Assert
8642         that neither call stmt can throw.
8643         * vecprim.h (uchar): New.
8644         (VEC(uchar,heap), VEC(uchar,gc)): New.
8645
8646         * c-common.c (c_define_builtins): Update call to
8647         build_common_builtin_nodes.
8648         * c-parser.c (c_parse_file): Don't call
8649         default_init_unwind_resume_libfunc.
8650
8651 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
8652
8653         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
8654         (mips_cprestore_address_p): Likewise.
8655         (mips_save_gp_to_cprestore_slot): Likewise.
8656         (mips_restore_gp): Rename to...
8657         (mips_restore_gp_from_cprestore_slot): ...this.
8658         (mips_must_initialize_gp_p): Declare.
8659         (mips_emit_save_slot_move): Likewise.
8660         (mips_output_load_label): Return nothing.
8661         (mips_eh_uses): Declare.
8662         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
8663         (TARGET_CPRESTORE_DIRECTIVE): New macro.
8664         (TARGET_ABSOLUTE_JUMPS): Likewise.
8665         (EH_USES): Likewise.
8666         (FIRST_PSEUDO_REGISTER): Update comment.
8667         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
8668         (MIPS_CALL): ...here.
8669         (REGISTER_NAMES): Add $cprestore.
8670         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
8671         Add load_label_length, has_inflexible_gp_insn_p,
8672         has_flexible_gp_insn_p, must_initialize_gp_p and
8673         must_restore_gp_when_clobbered_p.
8674         (mips_expand_call): Don't generate split instructions here.
8675         (mips_split_call): Update the call to mips_restore_gp after
8676         the above name change.
8677         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
8678         (mips_find_gp_ref): New function.
8679         (mips_insn_has_inflexible_gp_ref_p): Likewise.
8680         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
8681         (mips_insn_has_flexible_gp_ref_p): Likewise.
8682         (mips_cfun_has_flexible_gp_ref_p): Likewise.
8683         (mips_function_has_gp_insn): Delete.
8684         (mips_global_pointer): Drop the df_regs_ever_live_p check.
8685         Use the new functions above.  Only return INVALID_REGNUM
8686         for TARGET_ABSOLUTE_JUMPS.
8687         (mips_must_initialize_gp_p): New function.
8688         (mips_get_cprestore_base_and_offset): New function, extracted from...
8689         (mips_cprestore_slot): ...here.  Take a bool parameter.
8690         (mips_cfun_has_cprestore_slot_p): New function.
8691         (mips_cprestore_address_p): Likewise.
8692         (mips_save_gp_to_cprestore_slot): Likewise.
8693         (mips_restore_gp): Rename to...
8694         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
8695         epilogue_completed.  Update the call to mips_cprestore_slot.
8696         Test cfun->machine->must_restore_gp_when_clobbered_p.
8697         (mips_direct_save_slot_move_p): New function.
8698         (mips_emit_save_slot_move): Likewise.
8699         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
8700         of cfun->machine->global_pointer.
8701         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
8702         (mips_save_reg): Use mips_emit_save_slot_move.
8703         (mips_expand_prologue): Set must_initialize_gp_p.
8704         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
8705         for all cprestore saves.  Emit a use_cprestore instruction after
8706         setting up the cprestore slot.
8707         (mips_restore_reg): Use mips_emit_save_slot_move.
8708         (mips_process_load_label): New function.
8709         (mips_load_label_length): Likewise.
8710         (mips_output_load_label): Don't return asm: output it here instead.
8711         Use mips_process_load_label.
8712         (mips_adjust_insn_length): Adjust the length of branch instructions
8713         that have length MAX_PIC_BRANCH_LENGTH.
8714         (mips_output_conditional_branch): Update the call to
8715         mips_output_load_label.  Assume the branch target is OPERANDS[0]
8716         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
8717         (mips_output_order_conditional_branch): Swap the meaning of
8718         OPERANDS[0] and OPERANDS[1].
8719         (mips_variable_issue): Don't count ghost instructions.
8720         (mips_expand_ghost_gp_insns): New function.
8721         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
8722         (mips_output_mi_thunk): Set must_initialize_gp_p.
8723         (mips_eh_uses): New function.
8724         * config/mips/predicates.md (cprestore_save_slot_operand)
8725         (cprestore_load_slot_operand): New predicates.
8726         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
8727         (UNSPEC_MOVE_GP): Likewise.
8728         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
8729         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
8730         (CPRESTORE_SLOT_REGNUM): New register.
8731         (MAX_PIC_BRANCH_LENGTH): New constant.
8732         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
8733         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
8734         branches.  Fix commentary.
8735         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
8736         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
8737         Change type to "ghost".
8738         (loadgp_absolute_<mode>): Likewise.
8739         (loadgp_rtp_<mode>): Likewise.
8740         (copygp_mips16): Likewise.
8741         (loadgp_blockage): Remove redundant mode attribute.
8742         (potential_cprestore): New instruction.
8743         (cprestore): Turn into an unspec set.
8744         (use_cprestore): New instruction.
8745         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
8746         (*branch_fp_inverted): Likewise.
8747         (*branch_order<mode>): Likewise.
8748         (*branch_order<mode>_inverted): Likewise.
8749         (*branch_equality<mode>): Likewise.
8750         (*branch_equality<mode>_inverted): Likewise.
8751         (*branch_bit<bbv><mode>): Likewise.
8752         (*branch_bit<bbv><mode>_inverted): Likewise.
8753         (*branch_equality<mode>_mips16): Remove redundant mode.
8754         (jump): Turn into a define_expand.
8755         (*jump_absolute): New instruction.
8756         (*jump_pic): Likewise.
8757         (*jump_mips16): Rename previously-unnamed pattern.  Remove
8758         redundant mode attribute.
8759         (restore_gp): Split on epilogue_completed rather than
8760         reload_completed.  Change type to "ghost".
8761         (move_gp<mode>): New instruction.
8762         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
8763         Remove redundant mode attribute.
8764         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
8765         (bc1any4f, bc1any2t, bc1any2f): Likewise.
8766         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
8767
8768 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
8769
8770         PR target/41210
8771         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
8772         are returned in the same register (vs34 or v2) that Altivec vector
8773         types are returned in.
8774         (rs6000_libcall_value): Ditto.
8775
8776         PR target/41331
8777         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
8778         instead of explicit addsi3/adddi3 calls.
8779         (rs6000_split_multireg_move): Ditto.
8780         (rs6000_emit_allocate_stack): Ditto.
8781         (rs6000_emit_prologue): Ditto.
8782         (rs6000_output_mi_thunk): Ditto.
8783
8784         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
8785         size is 64 bits if we can use 64-bit registers.
8786
8787 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8788
8789         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
8790         symbols.
8791
8792         From Jie Zhang <jie.zhang@analog.com>:
8793         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
8794         save FP and RETS with saveall attribute.
8795         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
8796         with saveall attribute.
8797
8798         * config/bfin/bfin.c (bfin_expand_builtin,
8799         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
8800         operands.
8801
8802         From Jie Zhang <jie.zhang@analog.com>:
8803         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
8804         before use in two places.
8805         * config/bfin/bfin.md (AREG): Define mode iterator.
8806         (reload_in, reload_out): Use mode iterator AREG.
8807
8808 2009-09-14  Richard Guenther  <rguenther@suse.de>
8809
8810         PR middle-end/41350
8811         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
8812         EH personality path.
8813
8814 2009-09-13  Richard Guenther  <rguenther@suse.de>
8815             Rafael Avila de Espindola  <espindola@google.com>
8816
8817         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
8818         (LANG_HOOKS_EH_PERSONALITY): Likewise.
8819         (LANG_HOOKS_INITIALIZER): Adjust.
8820         (lhd_pass_through_t): Declare.
8821         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
8822         eh_personality.
8823         * langhooks.c (lhd_pass_through_t): New function.
8824         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
8825         dwarf2out_begin_prologue): Use personality from current_function_decl.
8826         * expr.h (get_personality_function): Declare.
8827         * expr.c (get_personality_function): New function.
8828         (build_personality_function): Likewise.
8829         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
8830         (eh_personality_libfunc): Remove.
8831         * optabs.c (build_libfunc_function): New function split out from ...
8832         (init_one_libfunc): ... here.
8833         * tree.h (DECL_FUNCTION_PERSONALITY): New.
8834         (tree_function_decl): Add personality.
8835         (lhd_gcc_personality): Declare.
8836         (build_personality_function): Likewise.
8837         * tree.c (gcc_eh_personality_decl): New.
8838         (lhd_gcc_personality): New function.
8839         * except.h (lang_eh_runtime_type): Remove.
8840         (enum eh_personality_kind): New.
8841         (build_personality_function): Declare.
8842         (function_needs_eh_personality): Declare.
8843         * except.c (lang_eh_runtime_type): Remove.
8844         (function_needs_eh_personality): New function.
8845         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
8846         (sjlj_emit_function_enter, output_function_exception_table):
8847         Use personality from current_function_decl.
8848         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
8849         * tree-inline.c (tree_can_inline_p): Do not inline across different
8850         EH personalities.
8851         (expand_call_inline): Likewise.  Adjust the callers EH personality.
8852         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
8853         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
8854         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
8855         (c-parser.o): Likewise
8856         * c-tree.h (c_eh_initialized_p): Remove.
8857         (c_maybe_initialize_eh): Likewise.
8858         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
8859         (finish_decl): Don't call c_maybe_initialize_eh.
8860         (c_eh_initialized_p): Remove.
8861         (c_maybe_initialize_eh): Likewise.
8862         * c-parser.c (c_parser_omp_construct): Likewise.
8863         (c_parse_file): Initialize exception handling.
8864
8865 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
8866
8867         * config.gcc (tm_file): Remove i386/biarch32.h
8868         for i?86-w64-mingw* case.
8869         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
8870         support.
8871         * config.host: Set for x64 mingw the option
8872         use_long_long_for_widest_fast_int to yes.
8873
8874 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
8875
8876         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
8877         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
8878         (dbxout_begin_function): Likewise.
8879         * final.c (dwarf2_debug_info_emitted_p): New predicate.
8880         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
8881         set on the function.
8882         (final_end_function): Likewise.
8883         (final_scan_insn): Likewise.
8884         (rest_of_handle_final): Likewise.
8885         * varasm.c (assemble_start_function): Likewise.
8886         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
8887
8888 2009-09-12  Jason Merrill  <jason@redhat.com>
8889
8890         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
8891         * opts.c (common_handle_option): constify.
8892
8893 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8894
8895         * doc/install.texi (avr): Remove obsolete reference site.
8896
8897 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8898
8899         * doc/install.texi (Binaries): Adjust AIX link.
8900
8901 2009-09-12  Akim Demaille  <demaille@gostai.com>
8902
8903         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
8904         Use an imperative sentence.
8905
8906 2009-09-11  Richard Henderson  <rth@redhat.com>
8907
8908         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
8909         structure-name and has-tree-operands arguments; update all entries.
8910         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
8911         update all entries.
8912         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
8913         (gsstruct_code_size): New.
8914         (gss_for_code_): New.
8915         (gss_for_code): Remove.
8916         (gimple_size): Rewrite using gsstruct_code_size.
8917         (gimple_statement_structure): Move to gimple.h.
8918         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
8919         (gss_for_code, gimple_statement_structure): New.
8920         (gimple_ops): Use new arrays; tidy.
8921
8922 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8923
8924         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
8925         operand to be a PLUS expression.
8926         * config/pa/pa.c (pa_secondary_reload): Likewise.
8927
8928 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
8929
8930         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
8931
8932         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
8933         XEXP (in_rtx, 8).
8934
8935 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8936
8937         From Jie Zhang <jie.zhang@analog.com>:
8938         * doc/extend.texi (node Function Attributes): Document l2
8939         function attribute.
8940         (node Blackfin Variable Attributes): Document l2 variable attributes.
8941
8942 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
8943
8944         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
8945         to match the system compiler's configuration at inflection point.
8946         Add comment to remark a remaining difference with system compiler.
8947
8948         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
8949         * configure: Regenerate.
8950
8951 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8952
8953         From Jie Zhang <jie.zhang@analog.com>:
8954         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
8955         (bfin_handle_l2_attribute): New.
8956         (bfin_attribute_table): Add l2 attribute.
8957
8958 2009-09-11  Michael Matz  <matz@suse.de>
8959
8960         PR middle-end/41275
8961         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
8962         on the local_decls list.
8963
8964 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
8965
8966         PR debug/41276
8967         PR debug/41307
8968         * cselib.c (cselib_expand_value_rtx_cb): Document callback
8969         interface.
8970         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
8971         for VALUEs, to implement the documented interface.
8972         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
8973         Adjust for VALUEs and anything else, to implement the
8974         documented interface.
8975
8976 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
8977
8978         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
8979         with actual SPE/paired vector modes before using 64-bit alignment.
8980         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
8981
8982 2009-09-10  DJ Delorie  <dj@redhat.com>
8983
8984         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
8985         emitted.
8986
8987         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
8988         * config/mep/mep.c (mep_legitimate_constant_p): New.
8989         * config/mep/mep-protos.h: Prototype it.
8990
8991 2009-09-10  Richard Henderson  <rth@redhat.com>
8992
8993         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
8994
8995 2009-09-10  Jason Merrill  <jason@redhat.com>
8996
8997         * tree.c (chain_index): New fn.
8998         * tree.h: Declare it.
8999
9000 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9001
9002         * config/sol2-c.c (cmn_err_length_specs): Initialize
9003         scalar_identity_flag.
9004
9005 2009-09-10  Richard Henderson  <rth@redhat.com>
9006
9007         * tree.h (struct tree_decl_common): Move align member earlier;
9008         move label_decl_uid member ...
9009         (struct tree_label_decl): ... here.
9010         (LABEL_DECL_UID): Update to match.
9011
9012         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
9013         not TDF_DETAILS.
9014
9015         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
9016         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
9017
9018         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
9019         dest_prev if the edge is complex.
9020
9021         * tree-cfg.c (is_ctrl_stmt): Use a switch.
9022
9023         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
9024         loop latch tests earlier.
9025
9026         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
9027         before GIMPLE_RETURN, not after its predecessor; insert
9028         before GIMPLE_RESX.
9029
9030         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
9031         gimple_seq_empty_p to test for no PHI nodes.
9032         * tree-cfg.c (split_critical_edges): Likewise.
9033
9034         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
9035
9036 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9037
9038         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
9039         introduced by the VTA branch merge.
9040
9041 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9042
9043         * ira-conflicts.c: Use fputs or putc instead of fprintf
9044         where appropriate.
9045         * cfg.c: Ditto.
9046         * toplev.c: Ditto.
9047         * tree-switch-conversion.c: Ditto.
9048
9049 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9050
9051         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
9052         introduced by the VTA branch merge.
9053
9054 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9055
9056         Revert:
9057         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9058
9059         PR rtl-optimization/39779
9060         * expr.c (convert_modes): Return when mode == oldmode after
9061         CONST_INTs are processed.
9062
9063 2009-09-10  Nick Clifton  <nickc@redhat.com>
9064
9065         * config/mep/mep.c (mep_encode_section_info): Copy weakness
9066         attribute and referring decl when creating renamed symbol.
9067
9068 2009-09-10  Richard Guenther  <rguenther@suse.de>
9069
9070         PR middle-end/41257
9071         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
9072         reachable nodes.
9073         (cgraph_finalize_compilation_unit): Compute reachability
9074         before emitting thunks.  Properly process aliases before
9075         possibly removing unreachable nodes.
9076
9077 2009-09-10  Richard Guenther  <rguenther@suse.de>
9078
9079         PR middle-end/41254
9080         * tree.c (struct free_lang_data_d): Add worklist member.
9081         (find_decls_types_r): Push onto the worklist instead of recursing.
9082         Handle TREE_BINFOs properly.
9083         (find_decls_types): New function wrapped around find_decls_types_r
9084         to process the worklist.
9085         (find_decls_types_in_eh_region): Use it.
9086         (find_decls_types_in_node): Likewise.
9087         (find_decls_types_in_var): Likewise.
9088         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
9089         * tree.h (RECORD_OR_UNION_TYPE_P): New.
9090         (AGGREGATE_TYPE_P): Adjust.
9091
9092 2009-09-09  Jason Merrill  <jason@redhat.com>
9093
9094         * configure.ac: Check glibc version even if we have an in-tree
9095         assembler.
9096
9097 2009-09-09  Anthony Green  <green@moxielogic.com>
9098
9099         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
9100         the constant 0 when appropriate.
9101         * config/moxie/constraints.md: Add constraint O.
9102
9103         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
9104         to pass up to 6 32-bit argument values in registers.
9105         (moxie_function_arg): Ditto.
9106         (moxie_arg_partial_bytes): Ditto.
9107         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
9108         (REG_PARM_STACK_SPACE): Ditto.
9109         (FUNCTION_ARG_REGNO_P): Ditto.
9110
9111         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9112         instruction to allocate stack space.
9113
9114 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9115
9116         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
9117         unnecessarily stringent constraints.  Fix address
9118         calculation in the splitters.
9119
9120 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9121
9122         PR rtl-optimization/39779
9123         * expr.c (convert_modes): Return when mode == oldmode after
9124         CONST_INTs are processed.
9125
9126 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
9127
9128         PR/41315
9129         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
9130         (ix86_expand_prologue): Take frame.padding0 into logic of
9131         to_allocate checks.
9132         (ix86_expand_epilogue): Likewise.
9133
9134 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
9135
9136         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
9137         New variables.
9138         (SHLIB_LINK, SHLIB_INSTALL): Use them.
9139         * config/t-slibgcc-libgcc: New file.
9140         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
9141
9142 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9143
9144         PR tree-optimization/41089
9145         * tree-sra.c (find_var_candidates): Do not consider va_lists in
9146         early SRA.
9147
9148 2009-09-09  Richard Henderson  <rth@redhat.com>
9149
9150         * gimple.h (CASE_GIMPLE_OMP): New.
9151         (is_gimple_omp): Use it.
9152         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
9153         (verify_gimple_debug): Likewise.
9154
9155 2009-09-09  Richard Guenther  <rguenther@suse.de>
9156
9157         PR tree-optimization/41101
9158         * tree-ssa-pre.c (maximal_set): Remove.
9159         (compute_antic_aux): Treat the maximal set as implicitly all ones.
9160         Defer all blocks we didn't visit at least one successor.
9161         (add_to_exp_gen): Do not add to the maximal set.
9162         (make_values_for_phi): Likewise.
9163         (compute_avail): Likewise.
9164         (init_pre): Do not allocate the maximal set.
9165         (execute_pre): Do not dump it.
9166
9167 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9168
9169         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
9170         an SSA_NAME rather than a is_gimple_variable.
9171
9172 2009-09-09  Richard Guenther  <rguenther@suse.de>
9173
9174         PR middle-end/41317
9175         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
9176         code dealing with plain pointer bases.
9177         (maybe_fold_offset_to_reference): Likewise.
9178         (maybe_fold_stmt_addition): Adjust.
9179
9180 2009-09-09  Richard Guenther  <rguenther@suse.de>
9181
9182         * tree.c (free_lang_data_in_type): Do not free the type variant
9183         chains.
9184         (free_lang_data): Merge char_type_node with its properly signed
9185         variant.
9186         (pass_ipa_free): Collect after freeing language specific data.
9187
9188 2009-09-09  Michael Matz  <matz@suse.de>
9189
9190         PR middle-end/41268
9191         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
9192         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
9193         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
9194         to reflect reality.
9195
9196 2009-09-08  DJ Delorie  <dj@redhat.com>
9197
9198         * config/mep/mep.c (conversions[]): Add "ml" pattern.
9199
9200 2009-09-04  Jason Merrill  <jason@redhat.com>
9201
9202         * tree.c (tree_find_value): Remove.
9203         * tree.h: Remove prototype.
9204         * varasm.c (assemble_external): Use value_member instead.
9205
9206 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9207
9208         * toplev.c (process_options): Choose default debugging type when
9209         gtoggle enables debug info and type is unset.
9210
9211 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9212
9213         PR debug/41276
9214         PR debug/41307
9215         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
9216         invalid subreg.
9217
9218 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9219
9220         * configure: Rebuilt with modified libtool.m4.
9221
9222 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9223
9224         PR debug/41229
9225         PR debug/41291
9226         PR debug/41300
9227         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
9228
9229 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9230
9231         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
9232         (remove_statement): Likewise.
9233         (rewrite_use_nonlinear_expr): Adjust.
9234         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
9235         * tree-ssa.c (release_defs_bitset): ... this.  New.
9236         * tree-flow.h (release_defs_bitset): Declare.
9237
9238 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9239
9240         PR debug/41232
9241         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
9242         in the middle block.
9243
9244 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
9245
9246         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
9247         via intptr_t to long type.
9248         (insert_operand_rank): Cast long type via intptr_t to
9249         pointer type.
9250         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
9251         pointer to scalar.
9252         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
9253         from pointer to unsigned via uintptr_t.
9254
9255         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
9256         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
9257         and HAVE_INTPTR_T.
9258         * configure: Regenerated.
9259         * config.in: Regenerated
9260         * system.h (stdint.h): Add include.
9261         (inttypes.h): Likewise.
9262         * Makefile.in (aclocal): Add config/stdint.m4.
9263         * aclocal.m4: Regenerated.
9264
9265 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9266
9267         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
9268         variables.
9269         (note_np_check_stores): New function.
9270         (harmless_null_pointer_p): New function.
9271         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
9272         changed.  Take into account whether we're in the shadow of a condjump
9273         that tested NP_REG for NULL.
9274         Lose all code that tested for SEQUENCEs.
9275         (workaround_speculation): Avoid inserting NOPs for loads that are
9276         either always executed or a NULL pointer.
9277
9278 2009-09-08  Jan Hubicka  <jh@suse.cz>
9279
9280         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
9281         * params.def (early-inlining-insns): Likewise.
9282
9283 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
9284
9285         PR rtl-optimization/41239
9286         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
9287         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
9288         lists.
9289         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
9290         across calls, as the calls might not always return normally.
9291         (call_may_noreturn_p): New function.
9292         (deps_analyze_insn): Update last_function_call_may_noreturn list.
9293         (init_deps): Initialize it.
9294         (remove_from_deps): Also remove calls from
9295         last_function_call_may_noreturn list.
9296
9297 2009-09-07  Richard Henderson  <rth@redhat.com>
9298
9299         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
9300         more VR->OPERANDS than LHS operands.  Free LHS before returning.
9301
9302 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9303
9304         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
9305         (attr "addrtype"): New member "spreg".
9306         Use it if mem_spfp_address_operand is true for the address.
9307         (attr "type"): New entry "stall".
9308         (cpu_unit "load"): New.
9309         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
9310         "load".
9311         (insn_reservation "loadsp"): New.
9312         (insn_reservation "load_stall1"): New.
9313         (insn_reservation "load_stall3"): New.
9314         (stall): New insn.
9315         * config/bfin/predicates.md (const1_operand, const3_operand): New.
9316         (mem_p_address_operand): Exclude stack and frame pointer based
9317         addresses.
9318         (mem_spfp_address_operand): New; match them here.
9319         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
9320         (bfin_reorg): Call it if scheduling insns.
9321         (bfin_gen_bundles): Remove dummy insns created by
9322         add_sched_insns_for_speculation.
9323
9324         From Jie Zhang <jie.zhang@analog.com>:
9325         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
9326         bfin_si_revision, bfin_workarounds): Move these ...
9327         * config/bfin/bfin.h: ... here.
9328
9329         From Mike Frysinger  <michael.frysinger@analog.com>
9330         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
9331         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
9332         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
9333         bf547m, bf548m, and bf549m.
9334         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
9335         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
9336         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
9337         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
9338         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
9339         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
9340         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
9341         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
9342         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
9343         bf542m, bf544m, bf547m, bf548m, and bf549m.
9344
9345         From Jie Zhang <jie.zhang@analog.com>:
9346         * config/bfin/predicates.md (p_register_operand): New predicate.
9347         (dp_register_operand): New predicate.
9348         * config/bfin/bfin-protos.h (WA_05000074): Define.
9349         (ENABLE_WA_05000074): Define.
9350         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
9351         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
9352         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
9353         (define_attr addrtype): Allow load/store register to be P register.
9354         (define_attr storereg): New.
9355         (define_cpu_unit anomaly_05000074): New.
9356         (define_insn_reservation dsp32shiftimm): New.
9357         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
9358         (define_insn_reservation loadp): Cannot use slot2.
9359         (define_insn_reservation loadsp): Cannot use slot2.
9360         (define_insn_reservation storep): Cannot use slot2. Does not
9361         apply when working around 05000074.
9362         (define_insn_reservation storep_anomaly_05000074): New.
9363         (define_insn_reservation storei): Does not apply when working
9364         around 05000074.
9365         (define_insn_reservation storei_anomaly_05000074): New.
9366         (define_attr length): Add dsp32shiftimm case.
9367         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
9368         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
9369         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
9370         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
9371         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
9372
9373 2009-09-07  Martin Jambor  <mjambor@suse.cz>
9374
9375         PR middle-end/41282
9376         * tree-sra.c (create_artificial_child_access): Return NULL if
9377         build_ref_for_offset fails.
9378         (propagate_subacesses_accross_link): Allow build_ref_for_offset
9379         and create_artificial_child_access to fail.
9380
9381 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
9382
9383         PR c++/41214
9384         * unwind-dw2.c (uw_init_context_1): Mark noinline.
9385         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
9386         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
9387
9388 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9389
9390         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
9391         block, ensure it has an exit edge.  Emit a barrier after a jump.
9392
9393 2009-09-07  Nick Clifton  <nickc@redhat.com>
9394
9395         * gcc.c (this_is_linker_script): New variable.  Like
9396         this_is_library_file but for the %T constructor.
9397         (end_going_arg): If this_is_linker_script is set then locate the
9398         script and insert a --script switch before it
9399         (do_spec_2): Initialise this_is_linker_script.
9400         (do_spec_1): Likewise.  Handle %T construct.
9401         (eval_spec_function): Preserve this_is_linker_script.
9402         * doc/invoke.texi: Document %T construct in spec files.
9403         * config/m32c/m32c.h (LIB_SPEC): Use it.
9404
9405 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
9406
9407         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
9408         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
9409         when volatile flag is set.
9410         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
9411
9412 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
9413
9414         PR bootstrap/41241
9415         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
9416         (combine_stack_adjustments_for_block): Allow insns between stack
9417         adjustments and stores with corresponding pre-(dec|inc)rement or
9418         pre-modify operation.
9419
9420 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
9421
9422         PR bootstrap/41241
9423         * combine-stack-adj.c (struct csa_memlist): Rename to...
9424         (struct csa_reflist): ... this.  Rename mem field to ref.
9425         (free_csa_memlist): Rename to...
9426         (free_csa_reflist): ... this.
9427         (record_one_stack_memref): Rename to...
9428         (record_one_stack_ref): ... this.  Handle also REG_P.
9429         (try_apply_stack_adjustment): Handle also REG_P.
9430         (struct record_stack_memrefs_data): Rename to...
9431         (struct record_stack_refs_data): ... this.  Rename memlist field to
9432         reflist.
9433         (record_stack_memrefs): Rename to...
9434         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
9435         subexpressions instead of failing when a MEM contains SP references.
9436         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
9437         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
9438
9439 2009-09-06  Richard Guenther  <rguenther@suse.de>
9440
9441         PR middle-end/41144
9442         * tree.c (build_array_type): Do not record types marked
9443         with structural equality in the canonical type hashtable.
9444
9445 2009-09-06  Richard Guenther  <rguenther@suse.de>
9446
9447         PR middle-end/41261
9448         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
9449
9450 2009-09-05  Richard Guenther  <rguenther@suse.de>
9451
9452         PR middle-end/41181
9453         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
9454
9455 2009-09-05  Richard Guenther  <rguenther@suse.de>
9456
9457         PR debug/41273
9458         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
9459
9460 2009-09-05  Richard Guenther  <rguenther@suse.de>
9461
9462         PR middle-end/41271
9463         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
9464         before comparing function argument types.
9465
9466 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9467
9468         PR target/41024
9469         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
9470         the assembler.
9471
9472 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9473
9474         Revert:
9475         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
9476
9477         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
9478         locators before emit_insn is called.
9479
9480 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
9481
9482         PR bootstrap/41241
9483         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
9484         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
9485         (reginfo_init): Don't call allocate_reg_info.
9486
9487 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9488
9489         PR target/41262
9490         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
9491         NONDEBUG_INSN_P instead of INSN_P.
9492
9493 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9494
9495         PR debug/41225
9496         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
9497
9498 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9499
9500         PR target/41252
9501         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
9502         pattern of the split.
9503
9504 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9505
9506         * toplev.c (process_options): Move setter of flag_var_tracking
9507         before other tests that depend on it.  Move down setter of
9508         flag_rename_registers.  Don't enable var-tracking-assignments
9509         by default if selective scheduling is enabled.  Warn if both
9510         are enabled.
9511
9512 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9513
9514         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
9515         comment.  Use switch statement to catch overlaps between rtx
9516         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
9517         (IS_DECL_CODE): ... here. Remove.
9518         (check_value_is_not_decl): Remove.
9519         (dv_from_decl, dv_from_value): Check after conversion.
9520
9521 2009-09-04  Richard Guenther  <rguenther@suse.de>
9522
9523         PR middle-end/41257
9524         * (cgraph_finalize_compilation_unit): Move finalizing aliases
9525         after emitting tunks.  Move emitting thunks and ctors from ...
9526         (cgraph_optimize): ... here.  Remove redundant
9527         cgraph_analyze_functions.
9528         * varasm.c (find_decl_and_mark_needed): Remove no longer
9529         necessary check.
9530         (finish_aliases_1): Adjust check for thunk aliases.
9531
9532 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
9533
9534         * config/arm/arm.md (ctzsi2): Added braces
9535         to avoid warning that broke booststrap.
9536
9537 2009-09-04  Martin Jambor  <mjambor@suse.cz>
9538
9539         PR tree-optimization/41112
9540         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
9541         handle variable-bounded arrays.
9542         (expr_with_var_bounded_array_refs_p): New function.
9543         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
9544
9545 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
9546
9547         * config/s390/2097.md: Removed two incorrect bypasses.
9548         (z10_fsimpdf): Fixed latency.
9549         (z10_fhex): New insn_reservation.
9550         (z10_floaddf): Fixed latency.
9551         (z10_floadsf): Fixed latency.
9552         (z10_ftrunctf): Fixed latency.
9553         (z10_ftruncdf): Fixed latency.
9554         * config/s390/s390.c (z10_cost): Fixed values.
9555         (s390_adjust_priority): Added z10 path.
9556         * config/s390/s390.md (type): Added fhex.
9557         (*mov<mode>_64dfp): Updated type attribute.
9558         (*mov<mode>_64): Updated type attribute.
9559         (*mov<mode>_31): Updated type attribute.
9560         (*mov<mode>"): Likewise.
9561         * config/s390/2084.md (x_fsimpdf): Updated condition.
9562
9563 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
9564
9565         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
9566         RTXs in the predicate for operand 1.
9567
9568 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
9569
9570         * config/arm/arm.md (UNSPEC_RBIT): New constant.
9571         (rbitsi2): New insn.
9572         (ctzsi2): New expand.
9573         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
9574
9575 2009-09-03  Martin Jambor  <mjambor@suse.cz>
9576
9577         * tree-sra.c (duplicate_expr_for_different_base): Removed.
9578         (create_artificial_child_access): Use build_ref_for_offset instead
9579         of duplicate_expr_for_different_base.
9580         (propagate_subacesses_accross_link): Likewise.
9581
9582 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
9583
9584         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
9585         of INSN_P.
9586         (mips16e_collect_argument_saves): Skip debug instructions.
9587         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
9588         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
9589         (r10k_insert_cache_barriers): Likewise.
9590         (mips_reorg_process_insns): Likewise.
9591
9592 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
9593
9594         PR bootstrap/41241
9595         * ira.c (update_equiv_reg): Remove check on class likely spill.
9596
9597 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
9598
9599         PR debug/41236
9600         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
9601         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
9602         it or SUBREG.
9603
9604         PR debug/41238
9605         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
9606         the stack slot if it is passed by invisible reference.
9607         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
9608         by invisible reference.
9609
9610 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
9611
9612         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9613         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9614         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9615         0.
9616         * config/bfin/sync.md: New file.
9617         * config/bfin/bfin.md: Include it.
9618         (UNSPEC_ATOMIC): New.
9619         (UNSPEC_ONES): Provide a unique number.
9620
9621         From Jie Zhang <jie.zhang@analog.com>:
9622         * config/bfin/bfin.c (ret_regs): New.
9623         (must_save_fp_p): Don't return true because of frame_pointer_needed.
9624         (must_save_rets_p): New.
9625         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
9626         current_function_is_leaf.
9627         (do_link): Likewise.
9628         (do_unlink): Likewise.
9629         (expand_interrupt_handler_prologue): Use ret_regs array.
9630         (expand_interrupt_handler_epilogue): Use ret_regs array and
9631         pass return register to gen_return_internal.
9632         (bfin_expand_epilogue): Pass return register to
9633         gen_return_internal.
9634         (bfin_expand_call): Explicitly clobber RETS.
9635         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
9636         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
9637         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
9638         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
9639         RETS.
9640         (return_internal): Take a reg rtx rather than the register number.
9641
9642 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
9643
9644         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
9645         when comparing against estimated_loop_iterations_int return.
9646
9647 2009-09-03  Richard Guenther  <rguenther@suse.de>
9648
9649         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
9650         eh_personality_libfunc.
9651
9652 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9653
9654         * tree-parloops.c (separate_decls_in_region): Add space.
9655
9656 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9657
9658         * tree-parloops.c (separate_decls_in_region): Change the condition
9659         checking if there are reductions in the loop.
9660
9661 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9662
9663         PR tree-optimization/38275
9664         * tree-parloops.c (parallelize_loops): Replace profitability condition
9665         for expected number of iterations.
9666
9667 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9668
9669         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
9670         (bootstrap-debug): Explain conditions in which it becomes default.
9671         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
9672         make it add to it.
9673
9674 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
9675
9676         * doc/invoke.texi (Optimize Options): Move
9677         -finline-small-functions to the -O2 list.
9678
9679 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9680
9681         * toplev.c (process_options): Enable var-tracking-assignments
9682         by default if var-tracking is enabled.
9683
9684 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
9685
9686         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
9687         barrier.
9688         * emit-rtl.c (prev_nonnote_insn_bb): New function.
9689         * rtl.h (prev_nonnote_insn_bb): Declare it.
9690
9691 2009-09-03  Diego Novillo  <dnovillo@google.com>
9692
9693         * cgraph.c (cgraph_node_for_decl): New.
9694         * cgraph.h (cgraph_node_for_decl): Declare.
9695         * tree.c (host_integerp): Return 0 if T is NULL.
9696
9697 2009-09-03  Diego Novillo  <dnovillo@google.com>
9698
9699         * tree.h (struct alias_pair): Move from varasm.c.
9700         (alias_pairs): Likewise.
9701         (TYPE_MAXVAL): Define.
9702         (TYPE_MINVAL): Define.
9703         (iterative_hash_host_wide_int): Declare.
9704         (remove_unreachable_alias_pairs): Declare.
9705         * tree-pass.h (pass_ipa_free_lang_data): Declare.
9706         * diagnostic.c (default_diagnostic_starter): Make extern.
9707         (default_diagnostic_finalizer): Make extern.
9708         * diagnostic.h (default_diagnostic_starter): Declare.
9709         (default_diagnostic_finalizer): Declare.
9710         (default_tree_printer): Declare.
9711         * toplev.c (default_tree_printer): Make extern.
9712
9713 2009-09-03  Richard Guenther  <rguenther@suse.de>
9714             Diego Novillo  <dnovillo@google.com>
9715
9716         * cgraph.c (cgraph_add_new_function): Remove gimplification.
9717         * cgraphunit.c (cgraph_expand_function): Do not emit
9718         associated thunks from here.
9719         (cgraph_emit_thunks): New.
9720         (cgraph_optimize): Call it.
9721         Return if any IPA pass finds an error.
9722         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
9723         by thunks.
9724
9725 2009-09-03  Simon Baldwin  <simonb@google.com>
9726             Rafael Espindola  <espindola@google.com>
9727             Richard Guenther  <rguenther@suse.de>
9728             Doug Kwan  <dougkwan@google.com>
9729             Diego Novillo  <dnovillo@google.com>
9730
9731         * tree.c: Include tree-pass.h, langhooks-def.h,
9732         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
9733         (free_lang_data_in_type): New.
9734         (need_assembler_name_p): New.
9735         (free_lang_data_in_block): New.
9736         (free_lang_data_in_decl): New.
9737         (struct free_lang_data_d): New.
9738         (add_tree_to_fld_list): New.
9739         (find_decls_types_r): New.
9740         (get_eh_types_for_runtime): New.
9741         (find_decls_types_in_eh_region): New.
9742         (find_decls_types_in_node): New.
9743         (find_decls_types_in_var): New.
9744         (free_lang_data_in_cgraph): New.
9745         (free_lang_data): New.
9746         (gate_free_lang_data): New.
9747         (pass_ipa_free_lang_data): New.
9748
9749 2009-09-03  Diego Novillo  <dnovillo@google.com>
9750
9751         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
9752         * langhooks.h (struct lang_hooks): Add field free_lang_data.
9753         (lang_hooks): Remove const qualifier.
9754         * ipa.c (cgraph_remove_unreachable_nodes): Call
9755         remove_unreachable_alias_pairs.
9756         * except.c (add_type_for_runtime): Check if TYPE has
9757         already been converted.
9758         (lookup_type_for_runtime): Likewise.
9759         (check_handled): Handle converted types.
9760         * varasm.c (remove_unreachable_alias_pairs): New.
9761         * gimple.c: Include demangle.h.
9762         (gimple_decl_printable_name): New.
9763         (gimple_fold_obj_type_ref): New.
9764         * gimple.h (gimple_decl_printable_name): Declare.
9765         (gimple_fold_obj_type_ref): Declare.
9766         * passes.c (init_optimization_passes): Add pass
9767         pass_ipa_free_lang_data.
9768         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
9769         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
9770
9771 2009-09-03  Diego Novillo  <dnovillo@google.com>
9772
9773         * c-lang.c (lang_hooks): Remove const qualifier.
9774
9775 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
9776
9777         * doc/install.texi (*-*-freebsd*): Update target information.
9778
9779 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
9780
9781         * hard-reg-set.h (call_fixed_regs): Remove.
9782         * reginfo.c (call_fixed_regs): Remove.
9783         (init_reg_sets_1): Remove initialization of call_fixed_regs.
9784         (globalize_reg): Don't use call_fixed_regs.
9785         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
9786         call_fixed_regs.
9787
9788 2009-09-01  Michael Matz  <matz@suse.de>
9789
9790         * expr.h (emit_storent_insn, expand_expr_real_1,
9791         expand_expr_real_2): Declare.
9792         * expr.c (emit_storent_insn, expand_expr_real_1,
9793         expand_expr_real_2): Export.
9794         (store_expr): Setting and evaluating dont_return_target is useless.
9795         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
9796         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
9797         * except.c (expand_resx_expr): Rename to ...
9798         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
9799         * except.h (expand_resx_stmt): Declare.
9800         * stmt.c: Add include gimple.h
9801         (expand_asm_expr): Rename to ...
9802         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
9803         (expand_case): Rewrite to take gimple statement.
9804         * tree.h (expand_asm_stmt): Declare.
9805         (expand_case): Change prototype.
9806         * Makefile.in (stmt.o): Depend on gimple.h.
9807         * builtins.c (expand_builtin_synchronize): Build gimple asm
9808         statement, not an ASM_EXPR.
9809         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
9810         gimple_to_tree, release_stmt_tree): Remove.
9811         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
9812         ggc_free, but hold comparison code and operands separately.
9813         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
9814         (expand_call_stmt, expand_gimple_stmt_1,
9815         expand_gimple_stmt): New helpers.
9816         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
9817         release_stmt_tree.  Call expand_gimple_stmt instead.
9818         (expand_gimple_basic_block): Ditto.
9819
9820         * calls.c (emit_call_1): Don't look at EH regions here, make
9821         fntree parameter useless.
9822         (expand_call): New local rettype for TREE_TYPE(exp), use it
9823         throughout.  Remove local p, use addr instead.
9824         Don't look at EH regions here.
9825
9826 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
9827
9828         * doc/invoke.texi (-fsched-pressure): Document it.
9829         (-fsched-reg-pressure-heuristic): Remove it.
9830
9831         * reload.c (ira.h): Include.
9832         (find_reloads): Add choosing reload on number of small spilled
9833         classes.
9834
9835         * haifa-sched.c (ira.h): Include.
9836         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
9837         saved_reg_pressure, curr_reg_live, saved_reg_live,
9838         region_ref_regs): New variables.
9839         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
9840         initiate_reg_pressure_info, setup_ref_regs,
9841         initiate_bb_reg_pressure_info, save_reg_pressure,
9842         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
9843         functions.
9844         (setup_insn_reg_pressure_info): New function.
9845         (rank_for_schedule): Add pressure checking and insn issue time.
9846         Remove comparison of insn reg weights.
9847         (ready_sort): Set insn reg pressure info.
9848         (update_register_pressure, setup_insn_max_reg_pressure,
9849         update_reg_and_insn_max_reg_pressure,
9850         sched_setup_bb_reg_pressure_info): New functions.
9851         (schedule_insn): Add code for printing and updating reg pressure info.
9852         (find_set_reg_weight, find_insn_reg_weight): Remove.
9853         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
9854         (debug_ready_list): Print reg pressure info.
9855         (schedule_block): Ditto.  Check insn issue time.
9856         (sched_init): Set up sched_pressure_p.  Allocate and set up some
9857         reg pressure related info.
9858         (sched_finish): Free some reg pressure related info.
9859         (fix_tick_ready): Make insn always ready if pressure_p.
9860         (init_h_i_d): Don't call find_insn_reg_weight.
9861         (haifa_finish_h_i_d): Free insn reg pressure info.
9862
9863         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9864         ira_memory_move_cost, ira_class_hard_regs,
9865         ira_class_hard_regs_num, ira_no_alloc_regs,
9866         ira_available_class_regs, ira_reg_class_cover_size,
9867         ira_reg_class_cover, ira_class_translate): Move to ira.h.
9868
9869         * ira-lives.c (single_reg_class): Check mode to find how many
9870         registers are necessary for operand.
9871         (ira_implicitly_set_insn_hard_regs): New.
9872
9873         * common.opt (fsched-pressure): New options.
9874         (fsched-reg-pressure-heuristic): Remove.
9875
9876         * ira.c (setup_eliminable_regset): Rename to
9877         ira_setup_eliminable_regset.  Make it external.
9878         (expand_reg_info): Pass cover class to setup_reg_classes.
9879         (ira): Call resize_reg_info instead of allocate_reg_info.
9880
9881         * sched-deps.c: Include ira.h.
9882         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
9883         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
9884         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
9885         mark_insn_hard_regno_birth, mark_insn_reg_birth,
9886         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
9887         mark_insn_reg_store, mark_insn_reg_clobber,
9888         setup_insn_reg_pressure_info): New.
9889         (sched_analyze_1): Update implicit_reg_pending_uses.
9890         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
9891         Use them to create dependencies.  Set insn reg uses and pressure
9892         info.  Process reg_pending_uses in one place.
9893         (free_deps): Free implicit sets.
9894         (remove_from_deps): Remove implicit sets if necessary.  Check
9895         implicit sets when clearing reg_last_in_use.
9896         (init_deps_global): Clear implicit_reg_pending_clobbers and
9897         implicit_reg_pending_uses.
9898
9899         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9900         ira_memory_move_cost, ira_class_hard_regs,
9901         ira_class_hard_regs_num, ira_no_alloc_regs,
9902         ira_available_class_regs, ira_reg_class_cover_size,
9903         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
9904         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
9905         ira_implicitly_set_insn_hard_regs): New prototypes.
9906
9907         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
9908         cost_elements_num): New variables.
9909         (allocno_costs, total_costs): Rename to costs and
9910         total_allocno_costs.
9911         (COSTS_OF_ALLOCNO): Rename to COSTS.
9912         (allocno_pref): Rename to pref.
9913         (allocno_pref_buffer): Rename to pref_buffer.
9914         (common_classes): Rename to regno_cover_class.
9915         (COST_INDEX): New.
9916         (record_reg_classes): Set allocno attributes only if allocno_p.
9917         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
9918         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
9919         and COSTS_OF_ALLOCNO.
9920         (print_costs): Rename to print_allocno_costs.
9921         (print_pseudo_costs): New.
9922         (process_bb_node_for_costs): Split into 2 functions with new
9923         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
9924         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
9925         new parameter dump_file.  Use cost_elements_num instead of
9926         ira_allocnos_num.  Make one iteration if preferred classes were
9927         already calculated for scheduler.  Make 2 versions of code
9928         depending on allocno_p.
9929         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
9930         regno_cover_class and COSTS instead of common_classes and
9931         COSTS_OF_ALLOCNO.
9932         (init_costs, finish_costs): New.
9933         (ira_costs): Set up allocno_p and cost_elements_num.  Call
9934         init_costs and finish_costs.
9935         (ira_set_pseudo_classes): New.
9936
9937         * rtl.h (allocate_reg_info): Remove.
9938         (resize_reg_info): Change return type.
9939         (reg_cover_class): New.
9940         (setup_reg_classes): Add new parameter.
9941
9942         * sched-int.h (struct deps_reg): New member implicit_sets.
9943         (sched_pressure_p, sched_regno_cover_class): New external definitions.
9944         (INCREASE_BITS): New macro.
9945         (struct reg_pressure_data, struct reg_use_data): New.
9946         (struct _haifa_insn_data): Remove reg_weight.  Add members
9947         reg_pressure, reg_use_list, reg_set_list, and
9948         reg_pressure_excess_cost_change.
9949         (struct deps): New member implicit_sets.
9950         (pressure_p): New variable.
9951         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
9952         (struct reg_pressure_data, struct reg_use_data): New.
9953         (INSN_REG_WEIGHT): Remove.
9954         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
9955         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
9956         (sched_init_region_reg_pressure_info,
9957         sched_setup_bb_reg_pressure_info): New prototypes.
9958
9959         * reginfo.c (struct reg_pref): New member coverclass.
9960         (reg_cover_class): New function.
9961         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
9962         (reg_info_size): New variable.
9963         (allocate_reg_info): Make static.  Setup reg_info_size.
9964         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
9965         (setup_reg_classes): Add a new parameter.  Setup cover class too.
9966
9967         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
9968         the dependencies.
9969
9970         * sched-rgn.c (deps_join): Set up implicit_sets.
9971         (schedule_region): Set up region and basic blocks pressure
9972         relative info.
9973
9974         * passes.c (init_optimization_passes): Move
9975         pass_subregs_of_mode_init before pass_sched.
9976
9977 2009-09-02  Martin Jambor  <mjambor@suse.cz>
9978
9979         * tree-sra.c (struct access): New field grp_hint.
9980         (dump_access): Dump grp_hint.
9981         (sort_and_splice_var_accesses): Set grp_hint if a group is read
9982         multiple times.
9983         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
9984         those which have been specifically read and somehow written to.
9985         (propagate_subacesses_accross_link): Set grp_hint of right child and
9986         also possibly of the left child.
9987
9988 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
9989
9990         * tree-object-size.c (addr_object_size): Always use object_size_type
9991         0 or 2 when determining the pointer pointed object size.
9992
9993 2009-09-02  Richard Guenther  <rguenther@suse.de>
9994
9995         Revert
9996         2009-08-31  Richard Guenther  <rguenther@suse.de>
9997
9998         * builtins.c (fold_builtin_memory_op): Use the alias oracle
9999         to query if the memory regions for memmove overlap.
10000         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10001         asserts on pointers, instead deal with odd trees.
10002         (ptr_derefs_may_alias_p): Likewise.
10003         (refs_may_alias_p_1): Constructor bases also never alias.
10004
10005 2009-08-01  Christian Bruel  <christian.bruel@st.com>
10006
10007         Revert:
10008         2009-07-31  Christian Bruel  <christian.bruel@st.com>
10009         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
10010
10011 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
10012
10013         * doc/invoke.texi (-fvar-tracking-assignments): New.
10014         (-fvar-tracking-assignments-toggle): New.
10015         (-fdump-final-insns=file): Mark filename as optional.
10016         (--param min-nondebug-insn-uid): New.
10017         (-gdwarf-@{version}): Mention version 4.
10018         * opts.c (common_handle_option): Accept it.
10019         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
10020         * regrename.c (regrename_optimize): Drop last.  Don't count debug
10021         insns as uses.  Don't reject change because of debug insn.
10022         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
10023         from the chain starter, and check for inexact matches in DEBUG_INSNS.
10024         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
10025         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
10026         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
10027         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
10028         * doc/gimple.texi (is_gimple_debug): New.
10029         (gimple_debug_bind_p): New.
10030         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
10031         * doc/install.texi (bootstrap-debug): More details.
10032         (bootstrap-debug-big, bootstrap-debug-lean): Document.
10033         (bootstrap-debug-lib): More details.
10034         (bootstrap-debug-ckovw): Update.
10035         (bootstrap-time): New.
10036         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
10037         (insert_phi_nodes_for): Insert debug stmts.
10038         (rewrite_stmt): Take iterator.  Insert debug stmts.
10039         (rewrite_enter_block): Adjust.
10040         (maybe_replace_use_in_debug_stmt): New.
10041         (rewrite_update_stmt): Use it.
10042         (mark_use_interesting): Return early for debug stmts.
10043         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
10044         stmts before replacing stmt.
10045         (move_computations_stmt): Likewise.
10046         * ira-conflicts.c (add_copies): Skip debug insns.
10047         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
10048         (regstat_bb_compute_ri): Skip debug insns.
10049         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
10050         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
10051         check_loop_closed_ssa_stmt): Skip debug stmts.
10052         * tree-tailcall.c (find_tail_calls): Likewise.
10053         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
10054         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
10055         (build_var_debug_value_stat): Declare.
10056         (build_var_debug_value): Define.
10057         (target_for_debug_bind): Declare.
10058         * reload.c (find_equiv_reg): Skip debug insns.
10059         * rtlanal.c (reg_used_between_p): Skip debug insns.
10060         (side_effects_p): Likewise.
10061         (canonicalize_condition): Likewise.
10062         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
10063         insns never depend on debug insns.
10064         (create_ddg_dep_no_link): Likewise.
10065         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
10066         Don't add inter-loop dependencies for debug insns.
10067         (build_intra_loop_deps): Likewise.
10068         (create_ddg): Count debug insns.
10069         * ddg.h (struct ddg::num_debug): New.
10070         (num_backargs): Pair up with previous int field.
10071         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
10072         -fcompare-debug-second.
10073         * final.c (get_attr_length_1): Skip debug insns.
10074         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
10075         * gcc.c (invoke_as): Call compare-debug-dump-opt.
10076         (driver_self_specs): Map -fdump-final-insns to
10077         -fdump-final-insns=..
10078         (get_local_tick): New.
10079         (compare_debug_dump_opt_spec_function): Test for . argument and
10080         compute output name.  Compute temp output spec without flag name.
10081         Compute -frandom-seed.
10082         (OPT): Undef after use.
10083         * cfgloopanal.c (num_loop_insns): Skip debug insns.
10084         (average_num_loop_insns): Likewise.
10085         * params.h (MIN_NONDEBUG_INSN_UID): New.
10086         * gimple.def (GIMPLE_DEBUG): New.
10087         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
10088         * auto-inc-dec.c (merge_in_block): Skip debug insns.
10089         (merge_in_block): Fix whitespace.
10090         * toplev.c (flag_var_tracking): Update comment.
10091         (flag_var_tracking_assignments): New.
10092         (flag_var_tracking_assignments_toggle): New.
10093         (process_options): Don't open final insns dump file if we're not
10094         going to write to it.  Compute defaults for var_tracking.
10095         * df-scan.c (df_insn_rescan_debug_internal): New.
10096         (df_uses_record): Handle debug insns.
10097         * haifa-sched.c (ready): Initialize n_debug.
10098         (contributes_to_priority): Skip debug insns.
10099         (dep_list_size): New.
10100         (priority): Use it.
10101         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
10102         they're ready.  Disregard previous debug insns to make decisions.
10103         (queue_insn): Never queue debug insns.
10104         (ready_add, ready_remove_first, ready_remove): Count debug insns.
10105         (schedule_insn): Don't reject debug insns because of issue rate.
10106         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
10107         (queue_to_ready): Skip and discount debug insns.
10108         (choose_ready): Let debug insns through.
10109         (schedule_block): Check boundary debug insns.  Discount debug
10110         insns, schedule them early.  Adjust whitespace.
10111         (set_priorities): Check for boundary debug insns.
10112         (add_jump_dependencies): Use dep_list_size.
10113         (prev_non_location_insn): New.
10114         (check_cfg): Use it.
10115         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
10116         stmts.
10117         (remove_unused_ivs): Reset debug stmts.
10118         * modulo-sched.c (const_iteration_count): Skip debug insns.
10119         (res_MII): Discount debug insns.
10120         (loop_single_full_bb_p): Skip debug insns.
10121         (sms_schedule): Likewise.
10122         (sms_schedule_by_order): Likewise.
10123         (ps_has_conflicts): Likewise.
10124         * caller-save.c (refmarker_fn): New.
10125         (save_call_clobbered_regs): Replace regs with saved mem in
10126         debug insns.
10127         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
10128         Call refmarker_fn mark for hardregnos.
10129         (mark_reg_as_referenced): New.
10130         (replace_reg_with_saved_mem): New.
10131         * ipa-pure-const.c (check_stmt): Skip debug stmts.
10132         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
10133         searching back.
10134         (cse_extended_basic_block): Skip debug insns.
10135         (count_reg_usage): Likewise.
10136         (is_dead_reg): New, split out of...
10137         (set_live_p): ... here.
10138         (insn_live_p): Use it for debug insns.
10139         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
10140         (execute_optimize_stdarg): Likewise.
10141         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
10142         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
10143         changes in debug stmts as changes.
10144         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
10145         (moveup_expr): Don't move across debug insns.  Don't move
10146         debug insn if it would create a bookkeeping block.
10147         (moveup_expr_cached): Don't use cache for debug insns that
10148         are heads of blocks.
10149         (compute_av_set_inside_bb): Skip debug insns.
10150         (sel_rank_for_schedule): Schedule debug insns first.  Remove
10151         dead code.
10152         (block_valid_for_bookkeeping_p); Support lax searches.
10153         (create_block_for_bookkeeping): Adjust block numbers when
10154         encountering debug-only blocks.
10155         (find_place_for_bookkeeping): Deal with debug-only blocks.
10156         (generate_bookkeeping_insn): Accept no place to insert.
10157         (remove_temp_moveop_nops): New argument full_tidying.
10158         (prepare_place_to_insert): Deal with debug insns.
10159         (advance_state_on_fence): Debug insns don't start cycles.
10160         (update_boundaries): Take fence as argument.  Deal with
10161         debug insns.
10162         (schedule_expr_on_boundary): No full_tidying on debug insns.
10163         (fill_insns): Deal with debug insns.
10164         (track_scheduled_insns_and_blocks): Don't count debug insns.
10165         (need_nop_to_preserve_insn_bb): New, split out of...
10166         (remove_insn_from_stream): ... this.
10167         (fur_orig_expr_not_found): Skip debug insns.
10168         * rtl.def (VALUE): Move up.
10169         (DEBUG_INSN): New.
10170         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
10171         (nearest_common_dominator_of_uses): Take debug_stmts argument.
10172         Set it if debug stmts are found.
10173         (statement_sink_location): Skip debug stmts.  Propagate
10174         moving defs into debug stmts.
10175         * ifcvt.c (first_active_insn): Skip debug insns.
10176         (last_active_insns): Likewise.
10177         (cond_exec_process_insns): Likewise.
10178         (noce_process_if_block): Likewise.
10179         (check_cond_move_block): Likewise.
10180         (cond_move_convert_if_block): Likewise.
10181         (block_jumps_and_fallthru_p): Likewise.
10182         (dead_or_predicable): Likewise.
10183         * dwarf2out.c (debug_str_hash_forced): New.
10184         (find_AT_string): Add comment.
10185         (gen_label_for_indirect_string): New.
10186         (get_debug_string_label): New.
10187         (AT_string_form): Use it.
10188         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
10189         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
10190         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
10191         several operations that cannot be represented with DWARF opcodes.
10192         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
10193         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
10194         (dwarf2out_var_location): Take during-call mark into account.
10195         (output_indirect_string): Update comment.  Output if there are
10196         label and references.
10197         (prune_indirect_string): New.
10198         (prune_unused_types): Call it if debug_str_hash_forced.
10199         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
10200         (dw_long_long_const): Remove.
10201         (struct dw_val_struct): Change val_long_long type to rtx.
10202         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
10203         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
10204         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
10205         component instead of HOST_BITS_PER_LONG.
10206         (output_loc_operands): Likewise.  For const8* assert
10207         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
10208         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
10209         rather than HOST_BITS_PER_LONG is >= 64.
10210         (add_AT_long_long): Remove val_hi and val_lo arguments, add
10211         val_const_double.
10212         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
10213         HOST_BITS_PER_LONG for dw_val_class_long_long.
10214         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
10215         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
10216         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
10217         DW_OP_stack_value.
10218         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
10219         Handle DW_OP_implicit_value.
10220         (extract_int): Move prototype earlier.
10221         (mem_loc_descriptor): For SUBREG punt if inner
10222         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
10223         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
10224         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
10225         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
10226         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
10227         instead of Pmode size.
10228         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
10229         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
10230         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
10231         (concat_loc_descriptor, concatn_loc_descriptor,
10232         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
10233         (add_location_or_const_value_attribute): Likewise.  For single
10234         location loc_lists attempt to use add_const_value_attribute
10235         for constant decls.  Add DW_AT_const_value even if
10236         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
10237         in its expression.
10238         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
10239         (control_flow_insn_p): Likewise.
10240         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
10241         (separate_decls_in_region_debug_bind): New.
10242         (separate_decls_in_region): Process debug bind stmts afterwards.
10243         * recog.c (verify_changes): Handle debug insns.
10244         (extract_insn): Likewise.
10245         (peephole2_optimize): Skip debug insns.
10246         * dse.c (scan_insn): Skip debug insns.
10247         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
10248         Pass it on.
10249         (setup_id_for_insn): Handle debug insns.
10250         (maybe_tidy_empty_bb): Adjust whitespace.
10251         (tidy_control_flow): Skip debug insns.
10252         (sel_remove_insn): Adjust for debug insns.
10253         (sel_estimate_number_of_insns): Skip debug insns.
10254         (create_insn_rtx_from_pattern): Handle debug insns.
10255         (create_copy_of_insn_rtx): Likewise.
10256         * sel-sched-.h (sel_bb_end): Declare.
10257         (sel_bb_empty_or_nop_p): New.
10258         (get_all_loop_exits): Use it.
10259         (_eligible_successor_edge_p): Likewise.
10260         (return_nop_to_pool): Adjust.
10261         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
10262         * ira-lives.c (process_bb_node_lives): Skip debug insns.
10263         * gimple-pretty-print.c (dump_gimple_debug): New.
10264         (dump_gimple_stmt): Use it.
10265         (dump_bb_header): Skip gimple debug stmts.
10266         * regmove.c (optimize_reg_copy_1): Discount debug insns.
10267         (fixup_match_2): Likewise.
10268         (regmove_backward_pass): Likewise.  Simplify combined
10269         replacement.  Handle debug insns.
10270         * function.c (instantiate_virtual_regs): Handle debug insns.
10271         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
10272         * print-rtl.h: Include cselib.h.
10273         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
10274         * df.h (df_inns_rescan_debug_internal): Declare.
10275         * gcse.c (alloc_hash_table): Estimate n_insns.
10276         (cprop_insn): Don't regard debug insns as changes.
10277         (bypass_conditional_jumps): Skip debug insns.
10278         (one_pre_gcse_pass): Adjust.
10279         (one_code_hoisting_pass): Likewise.
10280         (compute_ld_motion_mems): Skip debug insns.
10281         (one_cprop_pass): Adjust.
10282         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
10283         (if_convertible_stmt_p): Handle debug stmts.
10284         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
10285         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
10286         * ira-build.c (create_bb_allocnos): Skip debug insns.
10287         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
10288         (has_single_use): Likewise.
10289         (single_imm_use): Likewise.
10290         (num_imm_uses): Likewise.
10291         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
10292         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
10293         (create_outofssa_var_map): Likewise.
10294         * lower-subreg.c (adjust_decomposed_uses): New.
10295         (resolve_debug): New.
10296         (decompose_multiword_subregs): Use it.
10297         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
10298         * emit-rtl.c: Include params.h.
10299         (cur_debug_insn_uid): Define.
10300         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
10301         (copy_rtx_if_shared_1): Handle debug insns.
10302         (reset_used_flags): Likewise.
10303         (set_used_flags): LIkewise.
10304         (get_max_insn_count): New.
10305         (next_nondebug_insn): New.
10306         (prev_nondebug_insn): New.
10307         (make_debug_insn_raw): New.
10308         (emit_insn_before_noloc): Handle debug insns.
10309         (emit_jump_insn_before_noloc): Likewise.
10310         (emit_call_insn_before_noloc): Likewise.
10311         (emit_debug_insn_before_noloc): New.
10312         (emit_insn_after_noloc): Handle debug insns.
10313         (emit_jump_insn_after_noloc): Likewise.
10314         (emit_call_insn_after_noloc): Likewise.
10315         (emit_debug_insn_after_noloc): Likewise.
10316         (emit_insn_after): Take loc from earlier non-debug insn.
10317         (emit_jump_insn_after): Likewise.
10318         (emit_call_insn_after): Likewise.
10319         (emit_debug_insn_after_setloc): New.
10320         (emit_debug_insn_after): New.
10321         (emit_insn_before): Take loc from later non-debug insn.
10322         (emit_jump_insn_before): Likewise.
10323         (emit_call_insn_before): Likewise.
10324         (emit_debug_insn_before_setloc): New.
10325         (emit_debug_insn_before): New.
10326         (emit_insn): Handle debug insns.
10327         (emit_debug_insn): New.
10328         (emit_jump_insn): Handle debug insns.
10329         (emit_call_insn): Likewise.
10330         (emit): Likewise.
10331         (init_emit): Take min-nondebug-insn-uid into account.
10332         Initialize cur_debug_insn_uid.
10333         (emit_copy_of_insn_after): Handle debug insns.
10334         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
10335         location of single rhs in place.
10336         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
10337         (floor_sdiv_adjust): New.
10338         (cell_sdiv_adjust): New.
10339         (cell_udiv_adjust): New.
10340         (round_sdiv_adjust): New.
10341         (round_udiv_adjust): New.
10342         (wrap_constant): Moved from cselib.
10343         (unwrap_constant): New.
10344         (expand_debug_expr): New.
10345         (expand_debug_locations): New.
10346         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
10347         debug bind stmts.
10348         (gimple_expand_cfg): Expand debug locations.
10349         * cselib.c: Include tree-pass.h.
10350         (struct expand_value_data): New.
10351         (cselib_record_sets_hook): New.
10352         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
10353         (cselib_clear_table): Move, and implemnet in terms of...
10354         (cselib_reset_table_with_next_value): ... this.
10355         (cselib_get_next_unknown_value): New.
10356         (discard_useless_locs): Don't discard preserved values.
10357         (cselib_preserve_value): New.
10358         (cselib_preserved_value_p): New.
10359         (cselib_preserve_definitely): New.
10360         (cselib_clear_preserve): New.
10361         (cselib_preserve_only_values): New.
10362         (new_cselib_val): Take rtx argument.  Dump it in details.
10363         (cselib_lookup_mem): Adjust.
10364         (expand_loc): Take regs_active in struct.  Adjust.  Silence
10365         dumps unless details are requested.
10366         (cselib_expand_value_rtx_cb): New.
10367         (cselib_expand_value_rtx): Rename and reimplment in terms of...
10368         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
10369         without details.  Copy more subregs.  Try to resolve values
10370         using a callback.  Wrap constants.
10371         (cselib_subst_to_values): Adjust.
10372         (cselib_log_lookup): New.
10373         (cselib_lookup): Call it.
10374         (cselib_invalidate_regno): Don't count preserved values as useless.
10375         (cselib_invalidate_mem): Likewise.
10376         (cselib_record_set): Likewise.
10377         (struct set): Renamed to cselib_set, moved to cselib.h.
10378         (cselib_record_sets): Adjust.  Call hook.
10379         (cselib_process_insn): Reset table when it would be cleared.
10380         (dump_cselib_val): New.
10381         (dump_cselib_table): New.
10382         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
10383         (remove_forwarder_block): Support moving debug stmts.
10384         * cselib.h (cselib_record_sets_hook): Declare.
10385         (cselib_expand_callback): New type.
10386         (cselib_expand_value_rtx_cb): Declare.
10387         (cselib_reset_table_with_next_value): Declare.
10388         (cselib_get_next_unknown_value): Declare.
10389         (cselib_preserve_value): Declare.
10390         (cselib_preserved_value_p): Declare.
10391         (cselib_preserve_only_values): Declare.
10392         (dump_cselib_table): Declare.
10393         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
10394         (try_crossjump_to_edge): Likewise.
10395         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
10396         dominated blocks when debug stmts are present.
10397         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
10398         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
10399         (set_var_live_on_entry): Likewise.
10400         * loop-invariant.c (find_invariants_bb): Skip debug insns.
10401         * cfglayout.c (curr_location, last_location): Make static.
10402         (set_curr_insn_source_location): Don't avoid bouncing.
10403         (get_curr_insn_source_location): New.
10404         (get_curr_insn_block): New.
10405         (duplicate_insn_chain): Handle debug insns.
10406         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
10407         into debug stmts.
10408         * common.opt (fcompare-debug): Move to sort order.
10409         (fdump-unnumbered-links): Likewise.
10410         (fvar-tracking-assignments): New.
10411         (fvar-tracking-assignments-toggle): New.
10412         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
10413         because of debug stmts.
10414         (mark_stmt_if_obviously_necessary): Mark debug stmts.
10415         (eliminate_unnecessary_stmts): Walk dominated blocks before
10416         dominators.
10417         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
10418         * ira.c (memref_used_between_p): Skip debug insns.
10419         (update_equiv_regs): Likewise.
10420         * sched-deps.c (sd_lists_size): Accept empty list.
10421         (sd_init_insn): Mark debug insns.
10422         (sd_finish_insn): Unmark them.
10423         (sd_add_dep): Reject non-debug deps on debug insns.
10424         (fixup_sched_groups): Give debug insns group treatment.
10425         Skip debug insns.
10426         (sched_analyze_reg): Don't mark debug insns for sched before call.
10427         (sched_analyze_2): Handle debug insns.
10428         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
10429         insns.
10430         (deps_analyze_insn): Handle debug insns.
10431         (deps_start_bb): Skip debug insns.
10432         (init_deps): Initialize last_debug_insn.
10433         * tree-ssa.c (target_for_debug_bind): New.
10434         (find_released_ssa_name): New.
10435         (propagate_var_def_into_debug_stmts): New.
10436         (propagate_defs_into_debug_stmts): New.
10437         (verify_ssa): Skip debug bind stmts without values.
10438         (warn_uninialized_vars): Skip debug stmts.
10439         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
10440         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
10441         (rtx_equal_p): Likewise.
10442         * ira-costs.c (scan_one_insn): Skip debug insns.
10443         (process_bb_node_for_hard_reg_moves): Likewise.
10444         * rtl.h (DEBUG_INSN_P): New.
10445         (NONDEBUG_INSN_P): New.
10446         (MAY_HAVE_DEBUG_INSNS): New.
10447         (INSN_P): Accept debug insns.
10448         (RTX_FRAME_RELATED_P): Likewise.
10449         (INSN_DELETED_P): Likewise
10450         (PAT_VAR_LOCATION_DECL): New.
10451         (PAT_VAR_LOCATION_LOC): New.
10452         (PAT_VAR_OCATION_STATUS): New.
10453         (NOTE_VAR_LOCATION_DECL): Reimplement.
10454         (NOTE_VAR_LOCATION_LOC): Likewise.
10455         (NOTE_VAR_LOCATION_STATUS): Likewise.
10456         (INSN_VAR_LOCATION): New.
10457         (INSN_VAR_LOCATION_DECL): New.
10458         (INSN_VAR_LOCATION_LOC): New.
10459         (INSN_VAR_LOCATION_STATUS): New.
10460         (gen_rtx_UNKNOWN_VAR_LOC): New.
10461         (VAR_LOC_UNKNOWN_P): New.
10462         (NOTE_DURING_CALL_P): New.
10463         (SCHED_GROUP_P): Accept debug insns.
10464         (emit_debug_insn_before): Declare.
10465         (emit_debug_insn_before_noloc): Declare.
10466         (emit_debug_insn_beore_setloc): Declare.
10467         (emit_debug_insn_after): Declare.
10468         (emit_debug_insn_after_noloc): Declare.
10469         (emit_debug_insn_after_setloc): Declare.
10470         (emit_debug_insn): Declare.
10471         (make_debug_insn_raw): Declare.
10472         (prev_nondebug_insn): Declare.
10473         (next_nondebug_insn): Declare.
10474         (delegitimize_mem_from_attrs): Declare.
10475         (get_max_insn_count): Declare.
10476         (wrap_constant): Declare.
10477         (unwrap_constant): Declare.
10478         (get_curr_insn_source_location): Declare.
10479         (get_curr_insn_block): Declare.
10480         * tree-inline.c (insert_debug_decl_map): New.
10481         (processing_debug_stmt): New.
10482         (remap_decl): Don't create new mappings in debug stmts.
10483         (remap_gimple_op_r): Don't add references in debug stmts.
10484         (copy_tree_body_r): Likewise.
10485         (remap_gimple_stmt): Handle debug bind stmts.
10486         (copy_bb): Skip debug stmts.
10487         (copy_edges_for_bb): Likewise.
10488         (copy_debug_stmt): New.
10489         (copy_debug_stmts): New.
10490         (copy_body): Copy debug stmts at the end.
10491         (insert_init_debug_bind): New.
10492         (insert_init_stmt): Take id.  Skip and emit debug stmts.
10493         (setup_one_parameter): Remap variable earlier, register debug mapping.
10494         (estimate_num_insns): Skip debug stmts.
10495         (expand_call_inline): Preserve debug_map.
10496         (optimize_inline_calls): Check for no debug_stmts left-overs.
10497         (unsave_expr_now): Preserve debug_map.
10498         (copy_gimple_seq_and_replace_locals): Likewise.
10499         (tree_function_versioning): Check for no debug_stmts left-overs.
10500         Init and destroy debug_map as needed.  Split edges unconditionally.
10501         (build_duplicate_type): Init and destroy debug_map as needed.
10502         * tree-inline.h: Include gimple.h instead of pointer-set.h.
10503         (struct copy_body_data): Add debug_stmts and debug_map.
10504         * sched-int.h (struct ready_list): Add n_debug.
10505         (struct deps): Add last_debug_insn.
10506         (DEBUG_INSN_SCHED_P): New.
10507         (BOUNDARY_DEBUG_INSN_P): New.
10508         (SCHEDULE_DEBUG_INSN_P): New.
10509         (sd_iterator_cond): Accept empty list.
10510         * combine.c (create_log_links): Skip debug insns.
10511         (combine_instructions): Likewise.
10512         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
10513         return value is always unshared.
10514         (struct rtx_subst_pair): New.
10515         (auto_adjust_pair): New.
10516         (propagate_for_debug_subst): New.
10517         (propagate_for_debug): New.
10518         (try_combine): Skip debug insns.  Propagate removed defs into
10519         debug insns.
10520         (next_nonnote_nondebug_insn): New.
10521         (distribute_notes): Use it.  Skip debug insns.
10522         (distribute_links): Skip debug insns.
10523         * tree-outof-ssa.c (set_location_for_edge): Likewise.
10524         * resource.c (mark_target_live_regs): Likewise.
10525         * var-tracking.c: Include cselib.h and target.h.
10526         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
10527         MO_VAL_SET.
10528         (micro_operation_type_name): New.
10529         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
10530         (struct micro_operation_def): Update comments.
10531         (decl_or_value): New type.  Use instead of decls.
10532         (struct emit_note_data_def): Add vars.
10533         (struct attrs_def): Use decl_or_value.
10534         (struct variable_tracking_info_def): Add permp, flooded.
10535         (struct location_chain_def): Update comment.
10536         (struct variable_part_def): Use decl_or_value.
10537         (struct variable_def): Make var_part a variable length array.
10538         (valvar_pool): New.
10539         (scratch_regs): New.
10540         (cselib_hook_called): New.
10541         (dv_is_decl_p): New.
10542         (dv_is_value_p): New.
10543         (dv_as_decl): New.
10544         (dv_as_value): New.
10545         (dv_as_opaque): New.
10546         (dv_onepart_p): New.
10547         (dv_pool): New.
10548         (IS_DECL_CODE): New.
10549         (check_value_is_not_decl): New.
10550         (dv_from_decl): New.
10551         (dv_from_value): New.
10552         (dv_htab_hash): New.
10553         (variable_htab_hash): Use it.
10554         (variable_htab_eq): Support values.
10555         (variable_htab_free): Free from the right pool.
10556         (attrs_list_member, attrs_list_insert): Use decl_or_value.
10557         (attrs_list_union): Adjust.
10558         (attrs_list_mpdv_union): New.
10559         (tie_break_pointers): New.
10560         (canon_value_cmp): New.
10561         (unshare_variable): Return possibly-modified slot.
10562         (vars_copy_1): Adjust.
10563         (var_reg_decl_set): Adjust.  Split out of...
10564         (var_reg_set): ... this.
10565         (get_init_value): Adjust.
10566         (var_reg_delete_and_set): Adjust.
10567         (var_reg_delete): Adjust.
10568         (var_regno_delete): Adjust.
10569         (var_mem_decl_set): Split out of...
10570         (var_mem_set): ... this.
10571         (var_mem_delete_and_set): Adjust.
10572         (var_mem_delete): Adjust.
10573         (val_store): New.
10574         (val_reset): New.
10575         (val_resolve): New.
10576         (variable_union): Adjust.  Speed up merge of 1-part vars.
10577         (variable_canonicalize): Use unshared slot.
10578         (VALUED_RECURSED_INTO): New.
10579         (find_loc_in_1pdv): New.
10580         (struct dfset_merge): New.
10581         (insert_into_intersection): New.
10582         (intersect_loc_chains): New.
10583         (loc_cmp): New.
10584         (canonicalize_loc_order_check): New.
10585         (canonicalize_values_mark): New.
10586         (canonicalize_values_star): New.
10587         (variable_merge_over_cur): New.
10588         (variable_merge_over_src): New.
10589         (dataflow_set_merge): New.
10590         (dataflow_set_equiv_regs): New.
10591         (remove_duplicate_values): New.
10592         (struct dfset_post_merge): New.
10593         (variable_post_merge_new_vals): New.
10594         (variable_post_merge_perm_vals): New.
10595         (dataflow_post_merge_adjust): New.
10596         (find_mem_expr_in_1pdv): New.
10597         (dataflow_set_preserve_mem_locs): New.
10598         (dataflow_set_remove_mem_locs): New.
10599         (dataflow_set_clear_at_call): New.
10600         (onepart_variable_different_p): New.
10601         (variable_different_p): Use it.
10602         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
10603         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
10604         if not needed.
10605         (track_loc_p): Pass it true.
10606         (struct count_use_info): New.
10607         (find_use_val): New.
10608         (replace_expr_with_values): New.
10609         (log_op_type): New.
10610         (use_type): New, partially split out of...
10611         (count_uses): ... this.  Count new micro-ops.
10612         (count_uses_1): Adjust.
10613         (count_stores): Adjust.
10614         (count_with_sets): New.
10615         (VAL_NEEDS_RESOLUTION): New.
10616         (VAL_HOLDS_TRACK_EXPR): New.
10617         (VAL_EXPR_IS_COPIED): New.
10618         (VAL_EXPR_IS_CLOBBERED): New.
10619         (add_uses): Adjust.  Generate new micro-ops.
10620         (add_uses_1): Adjust.
10621         (add_stores): Generate new micro-ops.
10622         (add_with_sets): New.
10623         (find_src_status): Adjust.
10624         (find_src_set_src): Adjust.
10625         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
10626         Handle new micro-ops.  Canonicalize value equivalances.
10627         (vt_find_locations): Compute total size of hash tables for
10628         dumping.  Perform merge for var-tracking-assignments.  Don't
10629         disregard single-block loops.
10630         (dump_attrs_list): Handle decl_or_value.
10631         (dump_variable): Take variable.  Deal with decl_or_value.
10632         (dump_variable_slot): New.
10633         (dump_vars): Use it.
10634         (dump_dataflow_sets): Adjust.
10635         (set_slot_part): New, extended to support one-part variables
10636         after splitting out of...
10637         (set_variable_part): ... this.
10638         (clobber_slot_part): New, split out of...
10639         (clobber_variable_part): ... this.
10640         (delete_slot_part): New, split out of...
10641         (delete_variable_part): .... this.
10642         (check_wrap_constant): New.
10643         (vt_expand_loc_callback): New.
10644         (vt_expand_loc): New.
10645         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
10646         EMIT_NOTE_AFTER_CALL_INSN.
10647         (emit_notes_for_differences_1): Adjust.  Handle values.
10648         (emit_notes_for_differences_2): Likewise.
10649         (emit_notes_for_differences): Adjust.
10650         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
10651         Adjust.  Handle new micro-ops.
10652         (vt_add_function_parameters): Adjust.  Create and bind values.
10653         (vt_initialize): Adjust.  Initialize scratch_regs and
10654         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
10655         operations.  Move some code to count_with_sets and add_with_sets.
10656         (delete_debug_insns): New.
10657         (vt_debug_insns_local): New.
10658         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
10659         cselib.
10660         (var_tracking_main): If var-tracking-assignments is enabled
10661         but var-tracking isn't, delete debug insns and leave.  Likewise
10662         if we exceed limits or fail the stack adjustments tests, and
10663         after all var-tracking processing.
10664         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
10665         (dataflow_set): Add traversed_vars.
10666         (value_chain, const_value_chain): New typedefs.
10667         (value_chain_pool, value_chains): New variables.
10668         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
10669         add_value_chains, add_cselib_value_chains, remove_value_chain,
10670         remove_value_chains, remove_cselib_value_chains): New functions.
10671         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
10672         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
10673         static inlines.
10674         (shared_hash_find_slot_unshare, shared_hash_find_slot,
10675         shared_hash_find_slot_noinsert, shared_hash_find): Update.
10676         (dst_can_be_shared): New variable.
10677         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
10678         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
10679         different from set->vars, look up slot again instead of using the
10680         passed in slot.
10681         (dataflow_set_init): Initialize traversed_vars.
10682         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
10683         lookup if set->vars is shared.  Don't keep slot cleared before
10684         calling unshare_variable.  Unshare set->vars if needed.  Adjust
10685         unshare_variable callers.  Clear dst_can_be_shared if needed.
10686         Even ->refcount == 1 vars must be unshared if set->vars is shared
10687         and var needs to be modified.
10688         (dataflow_set_union): Set traversed_vars during canonicalization.
10689         (VALUE_CHANGED, DECL_CHANGED): Define.
10690         (set_dv_changed, dv_changed_p): New static inlines.
10691         (track_expr_p): Clear DECL_CHANGED.
10692         (dump_dataflow_sets): Set it.
10693         (variable_was_changed): Call set_dv_changed.
10694         (emit_note_insn_var_location): Likewise.
10695         (changed_variables_stack): New variable.
10696         (check_changed_vars_1, check_changed_vars_2): New functions.
10697         (emit_notes_for_changes): Do nothing if changed_variables is
10698         empty.  Traverse changed_variables with check_changed_vars_1,
10699         call check_changed_vars_2 on each changed_variables_stack entry.
10700         (emit_notes_in_bb): Add SET argument.  Just clear it at the
10701         beginning, use it instead of local &set, don't destroy it at the end.
10702         (vt_emit_notes): Call dataflow_set_clear early on all
10703         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
10704         computed set, dataflow_set_clear also VTI(bb)->in when we are
10705         done with the basic block.  Initialize changed_variables_stack,
10706         free it afterwards.  If ENABLE_CHECKING verify that after noting
10707         differences to an empty set value_chains hash table is empty.
10708         (vt_initialize): Initialize value_chains and value_chain_pool.
10709         (vt_finalize): Delete value_chains htab, free value_chain_pool.
10710         (variable_tracking_main): Call dump_dataflow_sets before calling
10711         vt_emit_notes, not after it.
10712         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
10713         (propagate_var_def_into_debug_stmts): Declare.
10714         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
10715         (df_set_note): Reject debug insns.
10716         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
10717         add notes to debug insns.
10718         (df_note_bb_compute): Adjust.  Likewise.
10719         (df_simulate_uses): Skip debug insns.
10720         (df_simulate_initialize_backwards): Likewise.
10721         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
10722         (subst_stack_regs_pat): Reject debug insns.
10723         (convert_regs_1): Handle debug insns.
10724         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
10725         (print-rtl.o): Depend on cselib.h.
10726         (cselib.o): Depend on TREE_PASS_H.
10727         (var-tracking.o): Depend on cselib.h and TARGET_H.
10728         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
10729         (init_ready_list): Skip boundary debug insns.
10730         (add_branch_dependences): Skip debug insns.
10731         (free_block_dependencies): Check for blocks with only debug insns.
10732         (compute_priorities): Likewise.
10733         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
10734         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
10735         all callers.
10736         (gimple_build_debug_bind_stat): New.
10737         (empty_body_p): Skip debug stmts.
10738         (gimple_has_side_effects): Likewise.
10739         (gimple_rhs_has_side_effects): Likewise.
10740         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
10741         (gimple_build_debug_bind_stat): Declare.
10742         (gimple_build_debug_bind): Define.
10743         (is_gimple_debug): New.
10744         (gimple_debug_bind_p): New.
10745         (gimple_debug_bind_get_var): New.
10746         (gimple_debug_bind_get_value): New.
10747         (gimple_debug_bind_get_value_ptr): New.
10748         (gimple_debug_bind_set_var): New.
10749         (gimple_debug_bind_set_value): New.
10750         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
10751         (gimple_debug_bind_reset_value): New.
10752         (gimple_debug_bind_has_value_p): New.
10753         (gsi_next_nondebug): New.
10754         (gsi_prev_nondebug): New.
10755         (gsi_start_nondebug_bb): New.
10756         (gsi_last_nondebug_bb): New.
10757         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
10758         (print_insn): Handle DEBUG_INSN.
10759         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
10760         of first insn prevail.
10761         (first_stmt): Skip debug stmts.
10762         (first_non_label_stmt): Likewise.
10763         (last_stmt): Likewise.
10764         (has_zero_uses_1): New.
10765         (single_imm_use_1): New.
10766         (verify_gimple_debug): New.
10767         (verify_types_in_gimple_stmt): Handle debug stmts.
10768         (verify_stmt): Likewise.
10769         (debug_loop_num): Skip debug stmts.
10770         (remove_edge_and_dominated_blocks): Remove dominators last.
10771         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
10772         (linearize_expr): Likewise.
10773         * config/i386/i386.c (ix86_delegitimize_address): Call
10774         default implementation.
10775         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
10776         (group_barrier_needed): Skip debug insns.
10777         (emit_insn_group_barriers): Likewise.
10778         (emit_all_insn_group_barriers): Likewise.
10779         (ia64_variable_issue): Handle debug insns.
10780         (ia64_dfa_new_cycle): Likewise.
10781         (final_emit_insn_group_barriers): Skip debug insns.
10782         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
10783         def cfa without frame.
10784         (process_set): Likewise.
10785         (process_for_unwind_directive): Pass frame on.
10786         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
10787         (rs6000_delegitimize_address): New.
10788         (rs6000_debug_adjust_cost): Handle debug insns.
10789         (is_microcoded_insn): Likewise.
10790         (is_cracked_insn): Likewise.
10791         (is_nonpipeline_insn): Likewise.
10792         (insn_must_be_first_in_group): Likewise.
10793         (insn_must_be_last_in_group): Likewise.
10794         (force_new_group): Likewise.
10795         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
10796         contains only debug insns.
10797         (rtl_merge_blocks): Skip debug insns.
10798         (purge_dead_edges): Likewise.
10799         (rtl_block_ends_with_call_p): Skip debug insns.
10800         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
10801         (mark_reg_dependencies): Skip debug insns.
10802         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
10803         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
10804         * tree-ssa-threadedge.c
10805         (record_temporary_equivalences_from_stmts): Skip debug stmts.
10806         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
10807         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
10808         (copyprop_hardreg_forward_1): Handle debug insns.
10809         * reload1.c (reload): Skip debug insns.  Replace unassigned
10810         pseudos in debug insns with their equivalences.
10811         (eliminate_regs_in_insn): Skip debug insns.
10812         (emit_input_reload_insns): Skip debug insns at first, adjust
10813         them later.
10814         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
10815         (get_indirect_ref_operands): Pass opf_no_vops on.
10816         (get_expr_operands): Likewise.  Skip debug stmts.
10817         (parse_ssa_operands): Scan debug insns with opf_no_vops.
10818
10819 2009-09-01  Richard Henderson  <rth@redhat.com>
10820
10821         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
10822         stmt_ends_pp_p statements at least once.
10823         * tree-vrp.c (vrp_initialize): Likewise.
10824         (vrp_visit_stmt): Be prepared for non-interesting stmts.
10825
10826 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
10827
10828         PR bootstrap/41205
10829         Fix AIX bootstrap after PR debug/30161
10830         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
10831         that is a GNU extension.
10832         (tmpl_value_parm_die_table): Move the definition of this global
10833         outside #ifdef DWARF2_DEBUGGING_INFO region.
10834
10835 2009-09-01  Richard Guenther  <rguenther@suse.de>
10836
10837         * tree.c (tree_expr_size): New function.
10838         * tree.h (tree_expr_size): Declare.
10839         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
10840         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
10841         * langhooks.c (lhd_expr_size): Remove.
10842         * langhooks.h (struct lang_hooks): Remove expr_size.
10843         * explow.c (expr_size): Use tree_expr_size.
10844         (int_expr_size): Likewise.
10845         * langhooks-def.h (lhd_expr_size): Remove.
10846         (LANG_HOOKS_EXPR_SIZE): Likewise.
10847         (LANG_HOOKS_INITIALIZER): Adjust.
10848
10849 2009-09-01  Richard Guenther  <rguenther@suse.de>
10850
10851         * tree-flow.h (mark_addressable): Move declaration ...
10852         * tree.h (mark_addressable): ... here.
10853         * stmt.c (expand_asm_operands): Use mark_addressable, not
10854         lang_hooks.mark_addressable.
10855         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
10856         LANG_HOOKS_MARK_ADDRESSABLE.
10857         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
10858         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
10859
10860 2009-08-31  Chris Demetriou  <cgd@google.com>
10861
10862         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
10863         vectorize if not TARGET_SSE2.
10864
10865 2009-08-31  DJ Delorie  <dj@redhat.com>
10866
10867         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
10868         registers if no coprocessor is enabled.
10869
10870 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
10871
10872         PR debug/30161
10873         * cgraph.h (cgraph_get_node): Declare ...
10874         * cgraph.c (cgraph_get_node): ... new function.
10875         * dwarf2out.c (gen_generic_params_dies,
10876         generic_parameter_die, tree_add_const_value_attribute_for_decl,
10877         make_ith_pack_parameter_name,
10878         append_entry_to_tmpl_value_parm_die_table,
10879         gen_remaining_tmpl_value_param_die_attribute): New functions.
10880         (gen_subprogram_die): Generate debug info for template parameters
10881         if debug info level is higher than DINFO_LEVEL_TERSE.
10882         Use tree_add_const_value_attribute_for_decl instead of
10883         tree_add_const_value_attribute.
10884         (gen_const_die): Use tree_add_const_value_attribute_for_decl
10885         instead of tree_add_const_value_attribute.
10886         (gen_struct_or_union_type_die): Generate debug
10887         info for template parameters if debug info level is higher than
10888         DINFO_LEVEL_TERSE.
10889         (tree_add_const_value_attribute): Handle integral and pointer
10890         constants. Update comment.
10891         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
10892         (dwarf_attr_name): Support DW_AT_GNU_template_name.
10893         (reference_to_unused): Fix thinko. Remove redundant predicates from
10894         tests.
10895         (tree_add_const_value_attribute): Make this work for constant
10896         expressions only.
10897         tree_add_const_value_attribute_for_decl is to be used for variable
10898         DECLs now.
10899         (add_location_or_const_value_attribute): Use
10900         tree_add_const_value_attribute_for_decl now.
10901         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
10902         DW_TAG_template_value_param DIEs after function DIEs have been
10903         emitted.
10904         * langhooks.h (lang_hooks_for_types): Add
10905         get_argument_pack_elems.
10906         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
10907         (lang_hooks): Added get_innermost_generic_parms,
10908         get_innermost_generic_args.
10909         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
10910         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
10911         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
10912         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
10913
10914 2009-08-31  DJ Delorie  <dj@redhat.com>
10915
10916         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
10917         it once we start generating the prologue or epilogue.
10918         (mep_call_saves_register): If the frame is locked, re-use
10919         cached values.
10920         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
10921         (mep_expand_prologue): Call it.
10922         (mep_expand_epilogue): Likewise.
10923         (mep_start_function): Use the same logic as mep_expand_prologue.
10924         (mep_pass_by_reference): Make logic more readable.
10925         (mep_return_in_memory): Zero-sized objects are passed in memory.
10926         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
10927
10928 2009-08-31  Richard Guenther  <rguenther@suse.de>
10929
10930         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10931         to query if the memory regions for memmove overlap.
10932         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10933         asserts on pointers, instead deal with odd trees.
10934         (ptr_derefs_may_alias_p): Likewise.
10935         (refs_may_alias_p_1): Constructor bases also never alias.
10936
10937 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
10938
10939         * doc/install.texi (Final install): Adjust reference on where to
10940         order printed manuals.
10941
10942 2009-08-30  Olivier Hainque  <hainque@adacore.com>
10943
10944         * dwarf2out.c (switch_to_frame_table_section): Move
10945         definition prior to first use.
10946
10947 2009-08-30  Richard Guenther  <rguenther@suse.de>
10948
10949         PR tree-optimization/41186
10950         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
10951         (ao_ref_init_from_ptr_and_size): New function.
10952         (ref_maybe_used_by_call_p_1): Be more precise tracking
10953         used ranges for builtin functions.
10954         (ref_maybe_used_by_call_p): Adjust.
10955         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
10956         ranges for builtin functions.
10957         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
10958
10959 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
10960
10961         PR target/41081
10962         * fwprop.c (get_reg_use_in): Delete.
10963         (free_load_extend): New function.
10964         (forward_propagate_subreg): Use it.
10965
10966 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10967
10968         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
10969
10970 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
10971
10972         PR/41184
10973         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
10974         padding.
10975
10976 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
10977
10978         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
10979         fini or fini_array section.
10980
10981 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10982
10983         * graphite-dependences.c (graphite_legal_transform_bb): Call
10984         pbb_remove_duplicate_pdrs.
10985         * graphite-poly.c (can_collapse_pdr): Removed.
10986         (pdr_find_duplicate): Removed.
10987         (can_collapse_pdrs): New.
10988         (pbb_remove_duplicate_pdrs): New.
10989         (new_poly_dr): Do not look for duplicates.
10990         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
10991         (PBB_PDR_DUPLICATES_REMOVED): New.
10992         (pbb_remove_duplicate_pdrs): Declared.
10993
10994 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10995
10996         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
10997         the strides by multiplying by PDR_NB_REFS.
10998         * graphite-poly.c (can_collapse_pdr): New.
10999         (pdr_find_duplicate): New.
11000         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
11001         Initialize PDR_NB_REFS.
11002         * graphite-poly.h (struct poly_dr): Add field nb_refs.
11003         (PDR_NB_REFS): New.
11004         (new_poly_dr): Number of subscripts is a graphite_dim_t.
11005
11006 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11007
11008         PR middle-end/40965
11009         * graphite-poly.c (apply_poly_transforms): Remove legality test before
11010         any transform.
11011
11012 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11013
11014         * graphite-dependences.c (pddr_original_scattering): Return NULL
11015         for read-read dependence relations.
11016         * graphite-poly.h (enum poly_dr_type): Fix comment.
11017         (pdr_read_p): New.
11018         (pdr_write_p): New.
11019         (pdr_may_write_p): New.
11020
11021 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11022
11023         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
11024         (struct poly_dr): Same.
11025         (new_poly_dr): Same.
11026         * graphite-poly.c (new_poly_dr): Same.
11027         * graphite-dependences.c (dot_deps): Disable call to system.
11028
11029 2009-08-28  Cary Coutant  <ccoutant@google.com>
11030
11031         PR debug/41063
11032         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
11033         struct/union/enum types local to a function.
11034
11035 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11036             Sebastian Pop  <sebastian.pop@amd.com>
11037
11038         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
11039         pbb_strip_mine_time_depth.  Changed the implementation so that
11040         transformation is expressed as a transformation on
11041         time (scatttering) dimensions.  Also, ensures that the 2d+1
11042         scheduling format is preserved.
11043         (pbb_strip_mine_profitable_p): Profitability is based on the
11044         iteration number of a given time (scattering) dimension,
11045         and not on a original loop depth dimension.
11046         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
11047         (pbb_do_strip_mine): Call psct_dynamic_dim.
11048         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
11049         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
11050         (pbb_nb_dynamic_scattering_transform): New.
11051         (psct_dynamic_dim): New.
11052
11053 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11054
11055         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11056         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11057         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
11058         * graphite-interchange.c (build_linearized_memory_access): Same.
11059         (memory_stride_in_loop): Same.
11060
11061 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11062
11063         * graphite-dependences.c (pddr_original_scattering): New.
11064         (graphite_legal_transform_dr): Call pddr_original_scattering.
11065         (dot_deps_1): New.
11066         (dot_deps): New.
11067         * graphite-dependences.h (dot_deps): Declared.
11068         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
11069         (print_pdr): Print PDR_ID.
11070         * graphite-poly.h (struct poly_dr): Add field id.
11071         (PDR_ID): New.
11072         (pbb_index): New.
11073         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
11074
11075 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11076
11077         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
11078         not delete the original dependence relation.
11079
11080 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11081
11082         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
11083         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
11084         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
11085         (free_poly_ddr): New.
11086         (pddr_is_empty): New.
11087         (dependence_polyhedron_1): Now returns a poly_ddr_p.
11088         (dependence_polyhedron): Same.  Remove useless gcc_assert.
11089         Remove fprintfs.
11090         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
11091         (graphite_carried_dependence_level_k): Call pddr_is_empty.
11092         * graphite-dependences.h (enum poly_dependence_kind): New.
11093         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
11094         (PDRP_SOURCE): Renamed PDDR_SOURCE.
11095         (PDRP_SINK): Renamed PDDR_SINK.
11096         (PDRP_DDP): Renamed PDDR_DDP.
11097         (PDDR_KIND): New.
11098         (free_poly_ddr): Declared.
11099         * graphite-poly.c (new_scop): Use the new hash function names.
11100         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
11101         into original_pddrs.
11102         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
11103
11104 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11105
11106         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
11107         bounds with LT_EXPR to make niter analysis more precise on code
11108         generated by Graphite.
11109
11110 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11111
11112         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
11113         (graphite_legal_transform_bb): Same.
11114         (poly_drs_may_alias_p): Same.
11115
11116 2009-08-28  Richard Guenther  <rguenther@suse.de>
11117
11118         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
11119
11120 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11121
11122         * config/i386/netware.c: Include langhooks.h.
11123         (i386_nlm_encode_section_info): Simplify.
11124         (netware_override_options): Delete.
11125         * config/i386/netware.h (netware_override_options): Delete
11126         declaration.
11127         (OVERRIDE_OPTIONS): Delete definition.
11128         (SUBTARGET_OVERRIDE_OPTIONS): Define.
11129         (ASM_COMMENT_START): Define.
11130         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
11131
11132 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11133
11134         * configure.ac: For in-tree ld, do a plain version check to
11135         determine whether comdat groups are supported.
11136         * configure: Regenerate.
11137
11138 2009-08-28  Olivier Hainque  <hainque@adacore.com>
11139
11140         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
11141         always defined.  Reflect definition or absence of such for
11142         COLLECT_EXPORT_LIST.  Readability helper.
11143         (scanfilter): New enum, to help control what symbols
11144         are to be considered or ignored by scan_prog_file.
11145         (enum pass): Rename as "scanpass", moved together with scanfilter
11146         prior to scan_prog_file's prototype.
11147         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
11148         Group prototype with the scanpass/scanfilter definitions, factorize
11149         head comments for the several implementations at the prototype.
11150         (main): Reorganize the first pass link control to let AIX
11151         drag only the needed frame tables in executables.  Prevent
11152         frame tables collection during the scan aimed at static ctors.
11153         Pre-link and scan for frame tables later to compensate.
11154         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
11155         A C statement to issue assembly directives that create a reference
11156         to the given DWARF table identifier label from the current function
11157         section.
11158         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
11159         to differentiate first time section entry.  Only emit a .data
11160         tables start identifier label the first time around.
11161         (switch_to_frame_table_section): New function.  Helper for
11162         output_call_frame_info to switch possibly BACK into the eh_frame
11163         or the debug_frame section depending on FOR_EH.
11164         (output_call_frame_info): Use helper to first enter the proper
11165         frame section.
11166         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
11167         emit a link to the frame table start label from each function
11168         section.
11169         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
11170         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
11171         * config/rs6000/rs6000-protos.h: Declare it.
11172         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
11173
11174 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11175
11176         * config/sh/sh.c (split_branches): Check the result of
11177         next_active_insn.
11178
11179 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
11180
11181         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
11182         using -pthread -fopenmp
11183
11184 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
11185
11186         * doc/service.texi (service directory): Update URL.
11187
11188 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
11189
11190         PR rtl-optimization/40861
11191         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
11192         extract word from a multi-word subreg for negative byte positions.
11193
11194 2009-08-27  Tristan Gingold  <gingold@adacore.com>
11195             Douglas B Rupp  <rupp@gnat.com>
11196
11197         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
11198         (SECTION_VMS_OVERLAY): Define.
11199         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
11200         attribute.
11201         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
11202         for common_object.
11203         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
11204         common_object declarations.
11205         (ia64_section_type_flags): Set section flag for common_object.
11206         * config/ia64/ia64-protos.h
11207         (ia64_vms_output_aligned_decl_common): Declare.
11208         (ia64_vms_elf_asm_named_section): Declare.
11209
11210 2009-08-27  Michael Matz  <matz@suse.de>
11211
11212         * expr.c (expand_expr_real_2): New function taking exploded
11213         unary or binary expression, split out from ...
11214         (expand_expr_real_1): ... here.  Move over all unary/binary
11215         switch parts to above function, in particular these codes:
11216         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
11217         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
11218         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
11219         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
11220         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
11221         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
11222         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
11223         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
11224         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
11225         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
11226         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
11227         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
11228         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
11229         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
11230         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
11231         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
11232         VEC_PACK_FIX_TRUNC_EXPR.
11233         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
11234         full expression.
11235
11236 2009-08-27  Richard Guenther  <rguenther@suse.de>
11237
11238         * gengtype.c (main): Handle uint64_t.
11239         * ipa-utils.c (get_base_var): Indent properly.
11240         * tree-ssa-live.c (debug_scope_block): New function.
11241         * tree-flow.h (debug_scope_block): Declare.
11242         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
11243         * basic-block.h (enum profile_status): Rename to
11244         enum profile_status_d.
11245         (x_profile_status): Adjust type.
11246
11247 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
11248
11249         PR debug/41170
11250         * dwarf2out.c (get_context_die): Declare this static function.
11251         (gen_type_die_with_usage): Make sure a DIE is a generated for
11252         the context of a typedef.
11253
11254 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
11255
11256         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
11257         switch.
11258
11259 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
11260
11261         * config/mips/mips-protos.h (mips_output_sync): Declare.
11262         (mips_sync_loop_insns): Likewise.
11263         (mips_output_sync_loop): Replace first two parameters with an rtx.
11264         * config/mips/mips.c (mips_multi_member): New structure.
11265         (mips_multi_members): New variable.
11266         (mips_multi_start): New function.
11267         (mips_multi_add): Likewise.
11268         (mips_multi_add_insn): Likewise.
11269         (mips_multi_add_label): Likewise.
11270         (mips_multi_last_index): Likewise.
11271         (mips_multi_copy_insn): Likewise.
11272         (mips_multi_set_operand): Likewise.
11273         (mips_multi_write): Likewise.
11274         (mips_print_operand_punctuation): Remove '%|' and '%-'.
11275         (mips_init_print_operand_punct): Update accordingly.
11276         (mips_start_ll_sc_sync_block): New function.
11277         (mips_end_ll_sc_sync_block): Likewise.
11278         (mips_output_sync): Likewise.
11279         (mips_sync_insn1_template): Likewise.
11280         (mips_sync_insn2_template): Likewise.
11281         (mips_get_sync_operand): Likewise.
11282         (mips_process_sync_loop): Likewise.
11283         (mips_output_sync_loop): Use mips_process_sync_loop.
11284         (mips_sync_loop_insns): New function.
11285         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
11286         (MIPS_COMPARE_AND_SWAP_12): Likewise.
11287         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
11288         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
11289         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
11290         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
11291         (MIPS_SYNC_OLD_OP_12): Likewise.
11292         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
11293         (MIPS_SYNC_NEW_OP_12): Likewise.
11294         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
11295         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
11296         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
11297         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
11298         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
11299         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
11300         * config/mips/mips.md (sync_mem): New attribute.
11301         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
11302         (sync_exclusive_mask, sync_required_oldval): Likewise.
11303         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
11304         (sync_release_barrier): Likewise.
11305         (length): Handle sync loops.
11306         (sync): Use mips_output_sync.
11307         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
11308         (sync_compare_and_swap<mode>): Set the new sync_* attributes
11309         and use mips_output_sync_loop.
11310         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
11311         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
11312         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
11313         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
11314         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
11315         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
11316         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
11317         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
11318         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
11319
11320 2009-08-26  Richard Guenther  <rguenther@suse.de>
11321
11322         PR middle-end/41163
11323         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
11324         the types to not match.
11325         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
11326         verification.
11327         * tree-ssa.c (useless_type_conversion_p): Conversions to
11328         pointers to unprototyped functions are useless.
11329
11330 2009-08-26  Richard Guenther  <rguenther@suse.de>
11331
11332         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
11333         whole-program condition, prepare to be called for non-globals.
11334         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
11335         params build a representative with known type and track its fields.
11336
11337 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
11338
11339         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
11340         clearing by a taken branch.
11341         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
11342         effectively after bbro pass.
11343         (sync_nand<mode>): Ditto.
11344         (sync_old_<fetchop_name><mode>): Ditto.
11345         (sync_old_nand<mode>): Ditto.
11346         (sync_new_<fetchop_name><mode>): Dito.
11347         (sync_new_nand<mode>): Ditto.
11348         (sync_compare_and_swap<mode>_1): Ditto.
11349         (*sync_compare_and_swap<mode>): Ditto.
11350         (sync_lock_test_and_set<mode>_1): Ditto.
11351         ("sync_lock_test_and_set<mode>): Ditto.
11352
11353 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
11354
11355         * hwint.h (HOST_LONG_FORMAT): New macro
11356         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
11357         Use HOST_PTR_PRINTF.
11358         * system.h (HOST_PTR_PRINTF): Resurrect old macro
11359         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
11360         (HOST_PTR_PRINTF): Document.
11361
11362 2009-08-25 Jan Hubicka  <jh@suse.cz>
11363
11364         * config/i386/bmmintrin.h: Replace by #error.
11365
11366         Revert:
11367         Michael Meissner  <michael.meissner@amd.com>
11368         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11369         Tony Linthicum  <tony.linthicum@amd.com>
11370
11371         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
11372         (TARGET_ROUND): New macro for the round/ptest instructions which
11373         are shared between SSE4.1 and SSE5.
11374         (OPTION_MASK_ISA_ROUND): Ditto.
11375         (OPTION_ISA_ROUND): Ditto.
11376         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
11377         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
11378
11379         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
11380         (-mfused-madd): New switch to give users control over whether the
11381         compiler optimizes to use the multiply/add SSE5 instructions.
11382
11383         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
11384         (ix86_handle_option): Turn off 3dnow if -msse5.
11385         (override_options): Add SSE5 support.
11386         (print_operand): %Y prints comparison codes for SSE5 com/pcom
11387         instructions.
11388         (ix86_expand_sse_movcc): Add SSE5 support.
11389         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
11390         vector type to the next largest size.
11391         (ix86_expand_sse5_pack): New function to use pperm to pack a
11392         vector type to the next smallest size.
11393         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
11394         (IX86_BUILTIN_FMADDSD): Ditto.
11395         (IX86_BUILTIN_FMADDPS): Ditto.
11396         (IX86_BUILTIN_FMADDPD): Ditto.
11397         (IX86_BUILTIN_FMSUBSS): Ditto.
11398         (IX86_BUILTIN_FMSUBSD): Ditto.
11399         (IX86_BUILTIN_FMSUBPS): Ditto.
11400         (IX86_BUILTIN_FMSUBPD): Ditto.
11401         (IX86_BUILTIN_FNMADDSS): Ditto.
11402         (IX86_BUILTIN_FNMADDSD): Ditto.
11403         (IX86_BUILTIN_FNMADDPS): Ditto.
11404         (IX86_BUILTIN_FNMADDPD): Ditto.
11405         (IX86_BUILTIN_FNMSUBSS): Ditto.
11406         (IX86_BUILTIN_FNMSUBSD): Ditto.
11407         (IX86_BUILTIN_FNMSUBPS): Ditto.
11408         (IX86_BUILTIN_FNMSUBPD): Ditto.
11409         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
11410         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
11411         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
11412         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
11413         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
11414         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
11415         (IX86_BUILTIN_PPERM): Ditto.
11416         (IX86_BUILTIN_PERMPS): Ditto.
11417         (IX86_BUILTIN_PERMPD): Ditto.
11418         (IX86_BUILTIN_PMACSSWW): Ditto.
11419         (IX86_BUILTIN_PMACSWW): Ditto.
11420         (IX86_BUILTIN_PMACSSWD): Ditto.
11421         (IX86_BUILTIN_PMACSWD): Ditto.
11422         (IX86_BUILTIN_PMACSSDD): Ditto.
11423         (IX86_BUILTIN_PMACSDD): Ditto.
11424         (IX86_BUILTIN_PMACSSDQL): Ditto.
11425         (IX86_BUILTIN_PMACSSDQH): Ditto.
11426         (IX86_BUILTIN_PMACSDQL): Ditto.
11427         (IX86_BUILTIN_PMACSDQH): Ditto.
11428         (IX86_BUILTIN_PMADCSSWD): Ditto.
11429         (IX86_BUILTIN_PMADCSWD): Ditto.
11430         (IX86_BUILTIN_PHADDBW): Ditto.
11431         (IX86_BUILTIN_PHADDBD): Ditto.
11432         (IX86_BUILTIN_PHADDBQ): Ditto.
11433         (IX86_BUILTIN_PHADDWD): Ditto.
11434         (IX86_BUILTIN_PHADDWQ): Ditto.
11435         (IX86_BUILTIN_PHADDDQ): Ditto.
11436         (IX86_BUILTIN_PHADDUBW): Ditto.
11437         (IX86_BUILTIN_PHADDUBD): Ditto.
11438         (IX86_BUILTIN_PHADDUBQ): Ditto.
11439         (IX86_BUILTIN_PHADDUWD): Ditto.
11440         (IX86_BUILTIN_PHADDUWQ): Ditto.
11441         (IX86_BUILTIN_PHADDUDQ): Ditto.
11442         (IX86_BUILTIN_PHSUBBW): Ditto.
11443         (IX86_BUILTIN_PHSUBWD): Ditto.
11444         (IX86_BUILTIN_PHSUBDQ): Ditto.
11445         (IX86_BUILTIN_PROTB): Ditto.
11446         (IX86_BUILTIN_PROTW): Ditto.
11447         (IX86_BUILTIN_PROTD): Ditto.
11448         (IX86_BUILTIN_PROTQ): Ditto.
11449         (IX86_BUILTIN_PROTB_IMM): Ditto.
11450         (IX86_BUILTIN_PROTW_IMM): Ditto.
11451         (IX86_BUILTIN_PROTD_IMM): Ditto.
11452         (IX86_BUILTIN_PROTQ_IMM): Ditto.
11453         (IX86_BUILTIN_PSHLB): Ditto.
11454         (IX86_BUILTIN_PSHLW): Ditto.
11455         (IX86_BUILTIN_PSHLD): Ditto.
11456         (IX86_BUILTIN_PSHLQ): Ditto.
11457         (IX86_BUILTIN_PSHAB): Ditto.
11458         (IX86_BUILTIN_PSHAW): Ditto.
11459         (IX86_BUILTIN_PSHAD): Ditto.
11460         (IX86_BUILTIN_PSHAQ): Ditto.
11461         (IX86_BUILTIN_FRCZSS): Ditto.
11462         (IX86_BUILTIN_FRCZSD): Ditto.
11463         (IX86_BUILTIN_FRCZPS): Ditto.
11464         (IX86_BUILTIN_FRCZPD): Ditto.
11465         (IX86_BUILTIN_CVTPH2PS): Ditto.
11466         (IX86_BUILTIN_CVTPS2PH): Ditto.
11467         (IX86_BUILTIN_COMEQSS): Ditto.
11468         (IX86_BUILTIN_COMNESS): Ditto.
11469         (IX86_BUILTIN_COMLTSS): Ditto.
11470         (IX86_BUILTIN_COMLESS): Ditto.
11471         (IX86_BUILTIN_COMGTSS): Ditto.
11472         (IX86_BUILTIN_COMGESS): Ditto.
11473         (IX86_BUILTIN_COMUEQSS): Ditto.
11474         (IX86_BUILTIN_COMUNESS): Ditto.
11475         (IX86_BUILTIN_COMULTSS): Ditto.
11476         (IX86_BUILTIN_COMULESS): Ditto.
11477         (IX86_BUILTIN_COMUGTSS): Ditto.
11478         (IX86_BUILTIN_COMUGESS): Ditto.
11479         (IX86_BUILTIN_COMORDSS): Ditto.
11480         (IX86_BUILTIN_COMUNORDSS): Ditto.
11481         (IX86_BUILTIN_COMFALSESS): Ditto.
11482         (IX86_BUILTIN_COMTRUESS): Ditto.
11483         (IX86_BUILTIN_COMEQSD): Ditto.
11484         (IX86_BUILTIN_COMNESD): Ditto.
11485         (IX86_BUILTIN_COMLTSD): Ditto.
11486         (IX86_BUILTIN_COMLESD): Ditto.
11487         (IX86_BUILTIN_COMGTSD): Ditto.
11488         (IX86_BUILTIN_COMGESD): Ditto.
11489         (IX86_BUILTIN_COMUEQSD): Ditto.
11490         (IX86_BUILTIN_COMUNESD): Ditto.
11491         (IX86_BUILTIN_COMULTSD): Ditto.
11492         (IX86_BUILTIN_COMULESD): Ditto.
11493         (IX86_BUILTIN_COMUGTSD): Ditto.
11494         (IX86_BUILTIN_COMUGESD): Ditto.
11495         (IX86_BUILTIN_COMORDSD): Ditto.
11496         (IX86_BUILTIN_COMUNORDSD): Ditto.
11497         (IX86_BUILTIN_COMFALSESD): Ditto.
11498         (IX86_BUILTIN_COMTRUESD): Ditto.
11499         (IX86_BUILTIN_COMEQPS): Ditto.
11500         (IX86_BUILTIN_COMNEPS): Ditto.
11501         (IX86_BUILTIN_COMLTPS): Ditto.
11502         (IX86_BUILTIN_COMLEPS): Ditto.
11503         (IX86_BUILTIN_COMGTPS): Ditto.
11504         (IX86_BUILTIN_COMGEPS): Ditto.
11505         (IX86_BUILTIN_COMUEQPS): Ditto.
11506         (IX86_BUILTIN_COMUNEPS): Ditto.
11507         (IX86_BUILTIN_COMULTPS): Ditto.
11508         (IX86_BUILTIN_COMULEPS): Ditto.
11509         (IX86_BUILTIN_COMUGTPS): Ditto.
11510         (IX86_BUILTIN_COMUGEPS): Ditto.
11511         (IX86_BUILTIN_COMORDPS): Ditto.
11512         (IX86_BUILTIN_COMUNORDPS): Ditto.
11513         (IX86_BUILTIN_COMFALSEPS): Ditto.
11514         (IX86_BUILTIN_COMTRUEPS): Ditto.
11515         (IX86_BUILTIN_COMEQPD): Ditto.
11516         (IX86_BUILTIN_COMNEPD): Ditto.
11517         (IX86_BUILTIN_COMLTPD): Ditto.
11518         (IX86_BUILTIN_COMLEPD): Ditto.
11519         (IX86_BUILTIN_COMGTPD): Ditto.
11520         (IX86_BUILTIN_COMGEPD): Ditto.
11521         (IX86_BUILTIN_COMUEQPD): Ditto.
11522         (IX86_BUILTIN_COMUNEPD): Ditto.
11523         (IX86_BUILTIN_COMULTPD): Ditto.
11524         (IX86_BUILTIN_COMULEPD): Ditto.
11525         (IX86_BUILTIN_COMUGTPD): Ditto.
11526         (IX86_BUILTIN_COMUGEPD): Ditto.
11527         (IX86_BUILTIN_COMORDPD): Ditto.
11528         (IX86_BUILTIN_COMUNORDPD): Ditto.
11529         (IX86_BUILTIN_COMFALSEPD): Ditto.
11530         (IX86_BUILTIN_COMTRUEPD): Ditto.
11531         (IX86_BUILTIN_PCOMEQUB): Ditto.
11532         (IX86_BUILTIN_PCOMNEUB): Ditto.
11533         (IX86_BUILTIN_PCOMLTUB): Ditto.
11534         (IX86_BUILTIN_PCOMLEUB): Ditto.
11535         (IX86_BUILTIN_PCOMGTUB): Ditto.
11536         (IX86_BUILTIN_PCOMGEUB): Ditto.
11537         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
11538         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
11539         (IX86_BUILTIN_PCOMEQUW): Ditto.
11540         (IX86_BUILTIN_PCOMNEUW): Ditto.
11541         (IX86_BUILTIN_PCOMLTUW): Ditto.
11542         (IX86_BUILTIN_PCOMLEUW): Ditto.
11543         (IX86_BUILTIN_PCOMGTUW): Ditto.
11544         (IX86_BUILTIN_PCOMGEUW): Ditto.
11545         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
11546         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
11547         (IX86_BUILTIN_PCOMEQUD): Ditto.
11548         (IX86_BUILTIN_PCOMNEUD): Ditto.
11549         (IX86_BUILTIN_PCOMLTUD): Ditto.
11550         (IX86_BUILTIN_PCOMLEUD): Ditto.
11551         (IX86_BUILTIN_PCOMGTUD): Ditto.
11552         (IX86_BUILTIN_PCOMGEUD): Ditto.
11553         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
11554         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
11555         (IX86_BUILTIN_PCOMEQUQ): Ditto.
11556         (IX86_BUILTIN_PCOMNEUQ): Ditto.
11557         (IX86_BUILTIN_PCOMLTUQ): Ditto.
11558         (IX86_BUILTIN_PCOMLEUQ): Ditto.
11559         (IX86_BUILTIN_PCOMGTUQ): Ditto.
11560         (IX86_BUILTIN_PCOMGEUQ): Ditto.
11561         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
11562         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
11563         (IX86_BUILTIN_PCOMEQB): Ditto.
11564         (IX86_BUILTIN_PCOMNEB): Ditto.
11565         (IX86_BUILTIN_PCOMLTB): Ditto.
11566         (IX86_BUILTIN_PCOMLEB): Ditto.
11567         (IX86_BUILTIN_PCOMGTB): Ditto.
11568         (IX86_BUILTIN_PCOMGEB): Ditto.
11569         (IX86_BUILTIN_PCOMFALSEB): Ditto.
11570         (IX86_BUILTIN_PCOMTRUEB): Ditto.
11571         (IX86_BUILTIN_PCOMEQW): Ditto.
11572         (IX86_BUILTIN_PCOMNEW): Ditto.
11573         (IX86_BUILTIN_PCOMLTW): Ditto.
11574         (IX86_BUILTIN_PCOMLEW): Ditto.
11575         (IX86_BUILTIN_PCOMGTW): Ditto.
11576         (IX86_BUILTIN_PCOMGEW): Ditto.
11577         (IX86_BUILTIN_PCOMFALSEW): Ditto.
11578         (IX86_BUILTIN_PCOMTRUEW): Ditto.
11579         (IX86_BUILTIN_PCOMEQD): Ditto.
11580         (IX86_BUILTIN_PCOMNED): Ditto.
11581         (IX86_BUILTIN_PCOMLTD): Ditto.
11582         (IX86_BUILTIN_PCOMLED): Ditto.
11583         (IX86_BUILTIN_PCOMGTD): Ditto.
11584         (IX86_BUILTIN_PCOMGED): Ditto.
11585         (IX86_BUILTIN_PCOMFALSED): Ditto.
11586         (IX86_BUILTIN_PCOMTRUED): Ditto.
11587         (IX86_BUILTIN_PCOMEQQ): Ditto.
11588         (IX86_BUILTIN_PCOMNEQ): Ditto.
11589         (IX86_BUILTIN_PCOMLTQ): Ditto.
11590         (IX86_BUILTIN_PCOMLEQ): Ditto.
11591         (IX86_BUILTIN_PCOMGTQ): Ditto.
11592         (IX86_BUILTIN_PCOMGEQ): Ditto.
11593         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
11594         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
11595         (enum multi_arg_type): New enum for describing the various SSE5
11596         intrinsic argument types.
11597         (bdesc_multi_arg): New table for SSE5 intrinsics.
11598         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
11599         (ix86_expand_multi_arg_builtin): New function for creating SSE5
11600         intrinsics.
11601         (ix86_expand_builtin): Add SSE5 intrinsic support.
11602         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
11603         operand instructions.
11604         (ix86_expand_sse5_multiple_memory): New function to split the
11605         second memory reference from SSE5 instructions.
11606         (type_has_variadic_args_p): Delete in favor of stdarg_p.
11607         (ix86_return_pops_args): Use stdarg_p to determine if the function
11608         has variable arguments.
11609         (ix86_setup_incoming_varargs): Ditto.
11610         (x86_this_parameter): Ditto.
11611
11612         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
11613         declaration.
11614         (ix86_expand_sse5_pack): Ditto.
11615         (ix86_sse5_valid_op_p): Ditto.
11616         (ix86_expand_sse5_multiple_memory): Ditto.
11617
11618         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
11619         constant for SSE5 support.
11620         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
11621         (UNSPEC_SSE5_TRUEFALSE): Ditto.
11622         (UNSPEC_SSE5_PERMUTE): Ditto.
11623         (UNSPEC_SSE5_ASHIFT): Ditto.
11624         (UNSPEC_SSE5_LSHIFT): Ditto.
11625         (UNSPEC_FRCZ): Ditto.
11626         (UNSPEC_CVTPH2PS): Ditto.
11627         (UNSPEC_CVTPS2PH): Ditto.
11628         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
11629         (PCOM_TRUE): Ditto.
11630         (COM_FALSE_S): Ditto.
11631         (COM_FALSE_P): Ditto.
11632         (COM_TRUE_S): Ditto.
11633         (COM_TRUE_P): Ditto.
11634         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
11635         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
11636         types.
11637         (memory attribute): Ditto.
11638         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11639         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
11640         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11641         (floor<mode>2): Ditto.
11642         (ceil<mode>2): Ditto.
11643         (btrunc<mode>2): Ditto.
11644         (nearbyintdf2): Ditto.
11645         (nearbyintsf2): Ditto.
11646         (sse_setccsf): Disable if SSE5.
11647         (sse_setccdf): Ditto.
11648         (sse5_setcc<mode>): New support for SSE5 conditional move.
11649         (sse5_pcmov_<mode>): Ditto.
11650
11651         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
11652         (SSEMODEF4): Ditto.
11653         (SSEMODEF2P): Ditto.
11654         (ssemodesuffixf4): New mode attribute for SSE5.
11655         (ssemodesuffixf2s): Ditto.
11656         (ssemodesuffixf2c): Ditto.
11657         (sserotatemax): Ditto.
11658         (ssescalarmode): Ditto.
11659         (sse_maskcmpv4sf3): Disable if SSE5.
11660         (sse_maskcmpv2df3): Ditto.
11661         (sse_vmmaskcmpv4sf3): Ditto.
11662         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
11663         (sse5_vmfmadd<mode>4): Ditto.
11664         (sse5_fmsub<mode>4): Ditto.
11665         (sse5_vmfmsub<mode>4): Ditto.
11666         (sse5_fnmadd<mode>4): Ditto.
11667         (sse5_vmfnmadd<mode>4): Ditto.
11668         (sse5_fnmsub<mode>4): Ditto.
11669         (sse5_vmfnmsub<mode>4): Ditto.
11670         (sse5i_fmadd<mode>4): Ditto.
11671         (sse5i_fmsub<mode>4): Ditto.
11672         (sse5i_fnmadd<mode>4): Ditto.
11673         (sse5i_fnmsub<mode>4): Ditto.
11674         (sse5i_vmfmadd<mode>4): Ditto.
11675         (sse5i_vmfmsub<mode>4): Ditto.
11676         (sse5i_vmfnmadd<mode>4): Ditto.
11677         (sse5i_vmfnmsub<mode>4): Ditto.
11678         (mulv16qi3): Add SSE5 support.
11679         (mulv4si3): Ditto.
11680         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
11681         (sse2_mulv4si3): Disable if SSE5.
11682         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
11683         (sse4_1_roundps): Ditto.
11684         (sse4_1_roundsd): Ditto.
11685         (sse4_1_roundss): Ditto.
11686         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
11687         be generated.
11688         (sse_maskcmpsf3): Ditto.
11689         (sse_vmmaskcmpv4sf3): Ditto.
11690         (sse2_maskcmpv2df3): Ditto.
11691         (sse2_maskcmpdf3): Ditto.
11692         (sse2_vmmaskcmpv2df3): Ditto.
11693         (sse2_eq<mode>3): Ditto.
11694         (sse2_gt<mode>3): Ditto.
11695         (sse5_pcmov_<mode>): Add SSE5 support.
11696         (vec_unpacku_hi_v16qi): Ditto.
11697         (vec_unpacks_hi_v16qi): Ditto.
11698         (vec_unpacku_lo_v16qi): Ditto.
11699         (vec_unpacks_lo_v16qi): Ditto.
11700         (vec_unpacku_hi_v8hi): Ditto.
11701         (vec_unpacks_hi_v8hi): Ditto.
11702         (vec_unpacku_lo_v8hi): Ditto.
11703         (vec_unpacks_lo_v8hi): Ditto.
11704         (vec_unpacku_hi_v4si): Ditto.
11705         (vec_unpacks_hi_v4si): Ditto.
11706         (vec_unpacku_lo_v4si): Ditto.
11707         (vec_unpacks_lo_v4si): Ditto.
11708         (sse5_pmacsww): New SSE5 intrinsic insn.
11709         (sse5_pmacssww): Ditto.
11710         (sse5_pmacsdd): Ditto.
11711         (sse5_pmacssdd): Ditto.
11712         (sse5_pmacssdql): Ditto.
11713         (sse5_pmacssdqh): Ditto.
11714         (sse5_pmacsdqh): Ditto.
11715         (sse5_pmacsswd): Ditto.
11716         (sse5_pmacswd): Ditto.
11717         (sse5_pmadcsswd): Ditto.
11718         (sse5_pmadcswd): Ditto.
11719         (sse5_pcmov_<move>): Conditional move support on SSE5.
11720         (sse5_phaddbw): New SSE5 intrinsic insn.
11721         (sse5_phaddbd): Ditto.
11722         (sse5_phaddbq): Ditto.
11723         (sse5_phaddwd): Ditto.
11724         (sse5_phaddwq): Ditto.
11725         (sse5_phadddq): Ditto.
11726         (sse5_phaddubw): Ditto.
11727         (sse5_phaddubd): Ditto.
11728         (sse5_phaddubq): Ditto.
11729         (sse5_phadduwd): Ditto.
11730         (sse5_phadduwq): Ditto.
11731         (sse5_phaddudq): Ditto.
11732         (sse5_phsubbw): Ditto.
11733         (sse5_phsubwd): Ditto.
11734         (sse5_phsubdq): Ditto.
11735         (sse5_pperm): Ditto.
11736         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
11737         (sse5_pperm_zero_v16qi_v8hi): Ditto.
11738         (sse5_pperm_sign_v8hi_v4si): Ditto.
11739         (sse5_pperm_zero_v8hi_v4si): Ditto.
11740         (sse5_pperm_sign_v4si_v2di): Ditto.
11741         (sse5_pperm_sign_v4si_v2di): Ditto.
11742         (sse5_pperm_pack_v2di_v4si): Ditto.
11743         (sse5_pperm_pack_v4si_v8hi): Ditto.
11744         (sse5_pperm_pack_v8hi_v16qi): Ditto.
11745         (sse5_perm<mode>): New SSE5 intrinsic insn.
11746         (rotl<mode>3): Ditto.
11747         (sse5_rotl<mode>3): Ditto.
11748         (sse5_ashl<mode>3): Ditto.
11749         (sse5_lshl<mode>3): Ditto.
11750         (sse5_frcz<mode>2): Ditto.
11751         (sse5s_frcz<mode>2): Ditto.
11752         (sse5_cvtph2ps): Ditto.
11753         (sse5_cvtps2ph): Ditto.
11754         (sse5_vmmaskcmp<mode>3): Ditto.
11755         (sse5_com_tf<mode>3): Ditto.
11756         (sse5_maskcmp<mode>3): Ditto.
11757         (sse5_maskcmp_uns<mode>3): Ditto.
11758         (sse5_maskcmp_uns2<mode>3): Ditto.
11759         (sse5_pcom_tf<mode>3): Ditto.
11760
11761         * config/i386/predicates.md (sse5_comparison_float_operator):
11762         New predicate to match the comparison operators supported by
11763         the SSE5 com instruction.
11764         (ix86_comparison_int_operator): New predicate to match just the
11765         signed int comparisons.
11766         (ix86_comparison_uns_operator): New predicate to match just the
11767         unsigned int comparisons.
11768
11769         * doc/invoke.texi (-msse5): Add documentation.
11770         (-mfused-madd): Ditto.
11771
11772         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
11773
11774         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
11775         mmintrin-common.h.
11776         (x86_64-*-*): Ditto.
11777
11778         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
11779
11780         * config/i386/bmmintrin.h: New file, provide common x86 compiler
11781         intrinisics for SSE5.
11782
11783         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
11784         mmintrin-common.h.
11785
11786         * config/i386/mmintrin-common.h: New file, to contain common
11787         instructions between SSE4.1 and SSE5.
11788
11789         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
11790         FOREACH_FUNCTION_ARGS to iterate over the argument list.
11791         (gen_regparm_prefix): Ditto.
11792
11793         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
11794         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
11795         prototype_p to determine if a function is prototyped.
11796
11797 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
11798
11799         * c-common.c (c_common_reswords) add the alignof keyword,
11800         with same RID as __alignof and __alignof__
11801
11802 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
11803
11804         * hooks.h (hook_bool_const_int_const_int_true): Declare.
11805         * hooks.c (hook_bool_const_int_const_int_true): New function.
11806         * target.h (struct gcc_target): Add can_eliminate field.
11807         * target-def.h (TARGET_CAN_ELIMINATE): Define.
11808         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
11809         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
11810         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
11811         (elim_table): Revise comment.
11812         * system.h (CAN_ELIMINATE): Poison.
11813         * defaults.h (CAN_ELIMINATE): Remove.
11814         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
11815
11816         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
11817         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
11818         Define macro.
11819         (alpha_vms_can_eliminate): Declare as static, change return type to
11820         bool.
11821         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
11822
11823         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
11824         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
11825         (arm_can_eliminate): New function.
11826
11827         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
11828         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
11829         (avr_can_eliminate): Declare as static.
11830         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
11831
11832         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
11833         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
11834         (bfin_can_eliminate): New function.
11835
11836         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
11837         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
11838         (crx_can_eliminate): New function.
11839
11840         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
11841         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
11842         (fr30_can_eliminate): New function.
11843
11844         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
11845         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
11846         (frv_can_eliminate): New function.
11847
11848         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
11849         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
11850         (h8300_can_eliminate): New function.
11851
11852         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
11853         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
11854         (i386_can_eliminate): Declare as static, change return type to bool.
11855         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
11856
11857         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
11858         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
11859         (ia64_can_eliminate): New function.
11860
11861         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
11862         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
11863         (iq2000_can_eliminate): New function.
11864
11865         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
11866         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
11867         (m32r_can_eliminate): New function.
11868
11869         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
11870         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
11871         (m68hc11_can_eliminate): New function.
11872
11873         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
11874         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
11875         (m68k_can_eliminate): New function.
11876
11877         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
11878         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
11879         (mep_can_eliminate): New function.
11880
11881         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
11882         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
11883         (mips_can_eliminate): New function.
11884
11885         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
11886         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
11887         (rs6000_can_eliminate): New function.
11888
11889         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
11890         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
11891         (s390_can_eliminate): Declare as static.
11892         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
11893
11894         * config/score/score.h (CAN_ELIMINATE): Remove macro.
11895         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
11896         (score_can_eliminate): New function.
11897
11898         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
11899         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
11900         (sparc_can_eliminate): Declare as static.
11901         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
11902
11903         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
11904         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
11905         (xstormy16_can_eliminate): New function.
11906
11907         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
11908         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
11909         (v850_can_eliminate): New function.
11910
11911 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
11912
11913         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
11914         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
11915         (*movdfcc_ext[1234]): Disable for IEEE mode.
11916
11917 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
11918
11919         * gimplify.c (prepare_gimple_addressable): New static function.
11920         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
11921         it addressable.
11922         (gimplify_addr_expr): Invoke it similarly on the operand instead of
11923         manually fiddling with it.
11924
11925 2009-08-25  Michael Matz  <matz@suse.de>
11926
11927         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
11928         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
11929         full expression.
11930         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
11931         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
11932         (do_jump): Split out code for simple binary comparisons into ...
11933         (do_jump_1): ... this, taking the individual operands and code.
11934         Change callers to helper function above accordingly.
11935         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
11936         comparisons.
11937
11938 2009-08-25  Michael Matz  <matz@suse.de>
11939
11940         * expr.h (struct separate_ops, sepops): New type for passing
11941         around an exploded simple expression.
11942         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
11943         Use this structure instead of expression tree.
11944         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
11945         expression, only its type.
11946         (expand_vec_cond_expr): Take type and individual operands instead
11947         of full expression.
11948         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
11949         expand_vec_shift_expr): Change prototype accordingly.
11950         * tree-vect-stmts.c (vectorizable_condition): Change call of
11951         expand_vec_cond_expr_p to pass only type.
11952         * expr.c (do_store_flags): Change prototype and implementation
11953         to take an exploded expression.
11954         (expand_expr_real_1): New local ops initialized with details
11955         of the full expression.  Use it instead of full
11956         expression in calls to do_store_flags, expand_vec_cond_expr,
11957         expand_widen_pattern_expr and expand_vec_shift_expr.
11958
11959 2009-08-25  Michael Matz  <matz@suse.de>
11960
11961         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
11962         treeop2 initialized with first three operands of the full expression.
11963         Substitute all TREE_OPERAND (exp, [012]) calls with them.
11964
11965 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
11966
11967         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
11968         (__gthread_objc_condition_allocate): Mark arguments as unused.
11969         (__gthread_objc_condition_deallocate): Likewise.
11970         (__gthread_objc_condition_wait): Likewise.
11971         (__gthread_objc_condition_broadcast): Likewise.
11972         (__gthread_objc_condition_signal): Likewise.
11973         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
11974         (__gthread_objc_thread_id): Likewise.
11975
11976 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
11977
11978         PR middle-end/41149
11979         * tree-pretty-print.c (print_call_name): Print the correct call name
11980         for procedure pointer components.
11981
11982 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
11983
11984         * config/ia64/ia64.c (ia64_promote_function_mode): Call
11985         default_promote_function_mode when not VMS.
11986
11987 2009-08-24  Olivier Hainque  <hainque@adacore.com>
11988
11989         * convert.c (convert_to_integer): Don't assume an input pointer is
11990         POINTER_SIZE wide.  Fetch from the type instead.
11991
11992 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11993
11994         * configure.ac (AC_PREREQ): Bump to 2.64.
11995
11996 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
11997
11998         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
11999         (process_command): Don't search standard_exec_prefix_1 and
12000         standard_exec_prefix_2.
12001
12002 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12003
12004         * config/arm/arm.c (output_return_instruction): Handle for
12005         unified syntax.
12006
12007 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12008
12009         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
12010
12011 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12012
12013         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
12014         (*arm_movdf_vfp): Likewise.
12015
12016 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12017
12018         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
12019         (vashr<mode>3): Rename from ashr<mode>3.
12020         (vlshr<mode>3): Rename from lshr<mode>3.
12021
12022 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
12023
12024         PR/40786
12025         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
12026         (check_format_info_main): Use scalar_identify_flag.
12027         (check_format_types): Check for scalar size identity if
12028         scalar_identify_flag is set.
12029         (printf_length_specs): Extend by new field.
12030         (asm_fprintf_length_specs): Likewise.
12031         (gcc_diag_length_specs): Likewise.
12032         (scanf_length_specs): Likewise.
12033         (strfmon_length_specs): Likewise.
12034         (gcc_gfc_length_specs): Likewise.
12035         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
12036         (ms_printf_flag_specs): Likewise.
12037         * c-format.h (format_length_info): Add new member scalar_identity_flag.
12038
12039 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
12040
12041         PR target/40718
12042         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
12043         (*call_value_pop_1): Ditto.
12044         (*sibcall_pop_1): New insn pattern.
12045         (*sibcall_value_pop_1): Ditto.
12046
12047 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12048
12049         PR target/41081
12050         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
12051         ashrsi3_64): New.
12052
12053 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12054
12055         PR target/41081
12056         * fwprop.c (try_fwprop_subst): Allow multiple sets.
12057         (get_reg_use_in): New function.
12058         (forward_propagate_subreg): Propagate through subreg of zero_extend
12059         or sign_extend.
12060
12061 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12062
12063         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
12064         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
12065
12066 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12067
12068         * configure.ac: Remove --with-datarootdir, --with-docdir,
12069         --with-htmldir switches.  No need to call AC_SUBST for
12070         datarootdir, docdir, htmldir any more.
12071         * configure: Regenerate.
12072         * doc/install.texi (Configuration): Document --datarootdir,
12073         --docdir, --htmldir, --pdfdir; update documentation for
12074         --infodir, --mandir.
12075         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
12076         M4 to 1.4.6.
12077
12078         * aclocal.m4: Regenerate.
12079         * config.in: Regenerate.
12080         * configure: Regenerate.
12081
12082 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
12083             Olivier Hainque  <hainque@adacore.com>
12084
12085         * config/ia64/ia64.c: Include libfuncs.h.
12086         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
12087         (ia64_expand_call): Use reg 25 on VMS.
12088         (ia64_initialize_trampoline): Fix for VMS ABI.
12089         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
12090         (ia64_function_arg): Initialize reg 25 on VMS.
12091         Fix OpenVMS ABI issues for varargs.
12092         For OpenVMS, emit the Argument Information register set in the
12093         incoming/sibcall case as well.
12094         (ia64_arg_type): New function.
12095         (ia64_function_arg_advance): Keep track of cum->words.
12096         Fix OpenVMS ABI issues for varargs.
12097         (ia64_function_value): On VMS, promote mode of non-aggregate types.
12098         (ia64_override_options): Set flag_no_common on VMS.
12099         (ia64_init_builtins): Disable FWRITE builtin.
12100         (ia64_asm_output_external): Call DO_CRTL_NAMES.
12101         (ia64_vms_init_libfuncs): Add decc$ routines.
12102         (ia64_vms_valid_pointer_mode): New function.
12103         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
12104         (ia64_promote_function_mode): New function
12105         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
12106         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
12107         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12108         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
12109         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
12110         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
12111         Suppress trailing '#' if VALUE is numeric.
12112         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
12113         ia64_promote_function_mode.
12114         (TARGET_VALID_POINTER_MODE): Define.
12115
12116 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12117
12118         PR target/40671
12119         * config/rs6000/rs6000.c (rs6000_override_options): Use
12120         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
12121
12122         PR target/41145
12123         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
12124         reporting of vector + decimal/boolean/complex error.
12125
12126 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
12127
12128         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
12129         __vector double TYPE_DECL.
12130
12131 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
12132
12133         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
12134         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
12135         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
12136         to pointer to enum machine_mode.  Update all callers as needed.
12137
12138 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
12139
12140         * config/alpha/alpha.md (exception_receiver): Emit alternative
12141         GP load sequence if flag_reorder_blocks_and_partition is set.
12142         (*exception_receiver_2): Also enable when
12143         flag_reorder_blocks_and_partition is set.
12144
12145 2009-08-20  Matt Rice  <ratmice@gmail.com>
12146             Diego Novillo  <dnovillo@google.com>
12147
12148         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
12149         tree-ssa-sccvn.h.
12150
12151 2009-08-20  Richard Guenther  <rguenther@suse.de>
12152
12153         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
12154         * c-tree.h (c_dup_lang_specific_decl): Remove.
12155         (struct lang_decl, struct lang_type): Move definitions ...
12156         * c-lang.h: ... here.  New file.
12157         * c-decl.c: Include c-lang.h.
12158         (c_dup_lang_specific_decl): Remove.
12159         * c-typeck.c: Include c-lang.h.
12160         * Makefile.in (c-decl.o): Add c-lang.h dependency.
12161         (c-typeck.o): Likewise.
12162         * c-config-lang.in (gtfiles): Add c-lang.h.
12163         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
12164         like c-tree.h.
12165
12166 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
12167
12168         * config/alpha/alpha.c (alpha_end_function): Do not clear
12169         crtl->emit structure and free insn locators if cfun->is_thunk is true,
12170         this is now handled in generic code.
12171
12172 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12173
12174         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
12175         (s390_z10_fix_long_loop_prediction): New function.
12176         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
12177         (s390_reorg): Walk over the INSNs and invoke
12178         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
12179
12180 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12181
12182         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
12183         "*brx_64bit", "*brx_31bit"): New patterns.
12184         * config/s390/s390.c ('E'): New output modifier.
12185
12186 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12187             Richard Earnshaw  <richard.earnshaw@arm.com>
12188
12189         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
12190         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
12191
12192 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12193
12194         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
12195         patterns.
12196         * pa.c (emit_move_sequence): Check if address of operand1 is valid
12197         for mode mode of operand0 when doing secondary reload for SAR.
12198
12199 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12200
12201         PR middle-end/41123
12202         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
12203         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
12204
12205 2009-08-19  Jason Merrill  <jason@redhat.com>
12206
12207         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
12208         supported template depth in C++0x.
12209
12210 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12211
12212         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
12213         free_after_compilation.
12214         * config/score/score7.c (score7_output_mi_thunk): Likewise.
12215         * config/score/score3.c (score3_output_mi_thunk): Likewise.
12216         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
12217         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12218         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12219         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12220         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12221
12222 2009-08-19  Ian Lance Taylor  <iant@google.com>
12223
12224         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
12225         of (plus (mult (neg B) C) A).
12226
12227 2009-08-18  Michael Matz  <matz@suse.de>
12228
12229         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
12230         instead of comparing TYPE_MAIN_VARIANT for equality.
12231         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
12232         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
12233         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
12234         * gimplify.c (goa_lhs_expr_p): Ditto and use
12235         STRIP_USELESS_TYPE_CONVERSION.
12236
12237 2009-08-18  Michael Matz  <matz@suse.de>
12238
12239         * tree-ssa-structalias.c (create_variable_info_for): Also mark
12240         first field in a struct.
12241         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
12242
12243 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
12244
12245         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
12246         locators before emit_insn is called.  Remove assert that
12247         cfun->is_thunk.
12248         (alpha_end_function): Clear crtl->emit structure and free insn
12249         locators if cfun->is_thunk is true.
12250
12251 2009-08-18  Jason Merrill  <jason@redhat.com>
12252
12253         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
12254         type if available.
12255         * configure.ac: Test for it.
12256         * configure, config.in: Regenerate.
12257         * doc/install.texi: Document --enable-gnu-unique-object.
12258
12259 2009-08-18  Richard Guenther  <rguenther@suse.de>
12260
12261         PR middle-end/41094
12262         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
12263         pow(x,y*z) only if x is nonnegative.
12264
12265 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
12266
12267         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
12268         on jumps.
12269
12270         PR target/40971
12271         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
12272         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
12273
12274 2009-08-17  DJ Delorie  <dj@redhat.com>
12275
12276         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
12277         * config/m32c/prologue.md (epilogue_freit): New.
12278         (fset_b): New.
12279         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
12280         (bank_switch_p): Likewise.
12281         (fast_interrupt_p): Likewise.
12282         (interrupt_p): Likewise.
12283         (m32c_conditional_register_usage): Round memregs size up.
12284         (need_to_save): We only need to save $a0 when we use ENTER.
12285         (interrupt_p): Check for fast_interrupt too.
12286         (bank_switch_p): New.
12287         (fast_interrupt_p): New.
12288         (m32c_attribute_table): Add bank_switch and fast_interrupt.
12289         (m32c_emit_prolog): Support bank switching and fast interrupts.
12290         * doc/extend.texi (Function Attributes): Add bank_switch and
12291         fast_interrupt.
12292
12293 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
12294
12295         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
12296         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
12297
12298 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
12299
12300         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
12301         (menu): Add IA-64/VMS Options.
12302         (IA-64/VMS Options): Likewise.
12303
12304 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12305
12306         PR target/38599
12307         * config/mips/mips.md (*lwxs): Use :P for pointer values.
12308
12309 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12310
12311         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
12312         (mips_pop_asm_switch): Likewise.
12313         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
12314         with...
12315         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12316         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
12317         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
12318         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
12319         instead of set_noreorder.
12320         (mips_output_function_prologue): Use the new functions.
12321         (mips_output_function_epilogue): Likewise.
12322         (mips_need_noat_wrapper_p): New function, split out from...
12323         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
12324         Use mips_push_asm_switch and mips_pop_asm_switch.
12325         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
12326         and mips_pop_asm_switch.
12327         (ASM_OUTPUT_REG_POP): Likewise.
12328         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
12329         Use mips_pop_asm_switch.
12330         (mips_asm_switch): New structure.
12331         (set_noreorder, set_nomacro): Replace with...
12332         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12333         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
12334         instead of set_nomacro.
12335         (fix_truncsfsi2_macro): Likewise.
12336         (cprestore): Likewise.
12337         (hazard): Use mips_noreorder instead of set_noreorder.
12338         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
12339
12340 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
12341
12342         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
12343         from prev_active_insn.
12344
12345 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
12346
12347         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
12348         * config/avr/avr.c (avr_override_options): Initialize
12349         avr_current_arch variable.
12350         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
12351         __AVR_HAVE_16BIT_SP__ according to the device type.
12352         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
12353         TARGET_TINY_STACK.
12354         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
12355         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
12356
12357 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
12358
12359         PR debug/37801
12360         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
12361         generating inlined subroutine die only. We shouldn't be
12362         called for anything else.
12363         (gen_block_die): Don't generate inline subroutine debug info for
12364         abstract blocks.
12365
12366 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12367
12368         * graphite-poly.c (print_pbb): Print PBB index.
12369
12370 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12371
12372         PR middle-end/40981
12373         * graphite-interchange.c (ppl_max_for_le): Moved...
12374         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
12375         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
12376         ppl_Pointset_Powerset_C_Polyhedron_maximize.
12377         * graphite-ppl.h (ppl_max_for_le): Declared.
12378
12379 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
12380
12381         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
12382         supported on all platforms.
12383         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
12384         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
12385         * c-pragma.c: Likewise.
12386         * target-def.h (TARGET_INITIALIZER): Remove
12387         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12388         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12389
12390 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12391
12392         * config/ia64/fde-vms.c: New file.
12393         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
12394         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
12395         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
12396         (uw_frame_state_for): Only register a personality routine if it is
12397         known to be compatible with our expectations.
12398         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
12399         Declare unw_table_entry stack variable and
12400         mod all calls to _Unwind_FindTableEntry to add arg.
12401         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
12402         (_Unwind_FindTableEntry): Add arg to prototype.
12403
12404 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
12405
12406         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
12407         field 'signal_pfs_loc'.
12408         (uw_frame_state_for): Remove duplicate code dealing with leaf
12409         procedures without unwind info.
12410         If in the frame after unwinding through a signal handler, restore
12411         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
12412         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
12413         'pfs_loc' to the AR.PFS location in the signal context; instead
12414         set 'signal_pfs_loc'.
12415         Manually generate the unwind info for the AR.PFS register.
12416         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
12417         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
12418         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
12419         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
12420         instead set 'signal_pfs_loc'.
12421         Remove code preventing the AR.PFS register from being restored
12422         from the signal context.
12423
12424 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12425             Tristan Gingold  <gingold@adacore.com>
12426
12427         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
12428         * config/ia64/t-vms: New file.
12429         * config/ia64/vms64.h: New file.
12430         * config/ia64/vms.h: New file.
12431         * config/ia64/vms-crtinit.asm: New file.
12432         * config/ia64/vms_symvec_libgcc_s.opt: New file.
12433         * config/ia64/vms-unwind.h: New file.
12434
12435 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12436
12437         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
12438         TFmode compares.
12439
12440 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12441
12442         PR middle-end/30789
12443         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
12444         Move declaration...
12445         * real.h (do_mpc_arg2): ... here.
12446         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
12447         and RDIV_EXPR.
12448
12449 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
12450
12451         * final.c (add_debug_prefix_map): Don't use GC memory for
12452         old_prefix and new_prefix.
12453
12454 2009-08-14  Richard Guenther  <rguenther@suse.de>
12455
12456         * ipa-prop.c (compute_complex_pass_through): If we cannot
12457         compute a non-varying offset for IPA_JF_ANCESTOR punt.
12458
12459 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12460
12461         * c-lex.c (c_lex_with_flags): Increase size of local variable
12462         to avoid memory clobber.
12463
12464 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
12465
12466         PR target/40934
12467         * config/i386/i386.c (ix86_fp_comparison_strategy):
12468         Only enable/disable sahf at function granularity.
12469
12470 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
12471
12472         PR rtl-optimization/41064
12473         * reload1.c (reload_as_needed): Don't call extract_insn
12474         for known invalid replacements after calling
12475         validate_replace_rtx_group and verify_changes.
12476
12477 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12478
12479         PR target/41019
12480         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
12481         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
12482         ix86_expand_fp_vcond.
12483         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
12484         Assert that operation is supported by ix86_expand_int_vcond.
12485         (vcondu<SSEMODE124C8:mode>): Ditto.
12486
12487 2009-08-13  DJ Delorie  <dj@redhat.com>
12488
12489         * config/i386/djgpp-stdint.h: New.
12490         * config.gcc (djgpp): Use it.
12491
12492 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12493
12494         * config/sh/sh.c (sh_override_options): When flag_exceptions or
12495         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
12496
12497 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12498
12499         * tree-ssa-loop-prefetch.c
12500         (prune_ref_by_group_reuse): Enhance probabilistic analysis
12501         for long-stride pruning.
12502         (compute_miss_rate): New function to compute the probability
12503         that two memory references access different cache lines.
12504
12505 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
12506
12507         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
12508
12509 2009-08-13  Richard Guenther  <rguenther@suse.de>
12510
12511         PR middle-end/41047
12512         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
12513         use the constant pointer type.
12514         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
12515         of CV qualifiers on the target pointer type.
12516         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
12517         conversion check before restrict check.
12518
12519 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12520
12521         PR target/41029
12522         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
12523
12524 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12525
12526         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
12527
12528 2009-08-12  Richard Guenther  <rguenther@suse.de>
12529
12530         PR tree-optimization/41011
12531         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
12532         and reference constructing.
12533
12534 2009-08-12  Xinliang David Li  <davidxl@google.com>
12535
12536         PR tree-optimization/41012
12537         * tree-flow.h : New external interface.
12538         * gimple-low.c (check_call_arg): Change to public function.
12539         Remove argument mismatch check in lowering.
12540         * tree-inline.h (tree_can_inline_p): Interface change.
12541         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
12542         into this function.
12543         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
12544         Call change to tree_can_inline_p function.
12545         (cgraph_decide_inlining_incrementally): Ditto.
12546
12547 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
12548
12549         PR tree-optimization/41031
12550         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
12551         on the partition variable rather than promote_mode on the source
12552         type.  Assert that the partition variable's type has the same
12553         mode as the source value's.
12554
12555 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
12556
12557         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
12558         for for_return == 2.
12559         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
12560         comments.
12561         * calls.c (expand_call): Fix typo.
12562         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
12563         and PARM_DECL.
12564         * stmt.c (expand_value_return): Use promote_function_mode to copy out
12565         of pseudo.
12566         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
12567         * config/cris/cris.c (cris_promote_function_mode): Likewise.
12568         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
12569         * config/pa/pa.c (pa_promote_function_mode): Likewise.
12570
12571 2009-08-12  Andrew Haley  <aph@redhat.com>
12572
12573         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
12574
12575 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12576
12577         PR bootstrap/40103
12578         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12579
12580 2009-08-12  Richard Guenther  <rguenther@suse.de>
12581
12582         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
12583         * gimplify.c (gimplify_modify_expr): Do not use
12584         lang_hooks.types_compatible_p.
12585         * tree-ssa.c (useless_type_conversion_p): For aggregates
12586         just return false if the canonical types differ.
12587
12588 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12589
12590         PR middle-end/40980
12591         * sese.c (convert_for_phi_arg): New.
12592         (add_guard_exit_phis): Use convert_for_phi_arg.
12593
12594 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12595
12596         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
12597         unknown subscript upper bounds.
12598
12599 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12600             Pranav Garg  <pranav.garg2107@gmail.com>
12601
12602         * graphite-interchange.c (gather_access_strides): Removed.
12603         (ppl_max_for_le): New.
12604         (build_linearized_memory_access): New.
12605         (memory_stride_in_loop): New.
12606         (pbb_interchange_profitable_p): Reimplemented.
12607         * graphite-ppl.h (ppl_new_id_map): New.
12608         (ppl_interchange): New.
12609
12610 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12611
12612         * graphite-interchange.c (compute_subscript): Removed.
12613         (compute_array_size_cstr): Removed.
12614         (compute_array_size_poly): Removed.
12615         (compute_array_size): Removed.
12616         (gather_access_strides_poly): Removed.
12617         (gather_access_strides): Empty.
12618
12619 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12620
12621         * graphite-dependences.c (dependence_polyhedron_1): Replace
12622         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
12623         (graphite_legal_transform_dr): Same.
12624         (graphite_carried_dependence_level_k): Same.
12625         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
12626         Initialize PDR_NB_SUBSCRIPTS.
12627         (print_pdr_access_layout): Replace pdr_nb_subscripts with
12628         PDR_NB_SUBSCRIPTS.
12629         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
12630         (PDR_NB_SUBSCRIPTS): New.
12631         (pdr_nb_subscripts): Removed.
12632         (pdr_dim): Simplified.
12633         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
12634         with PDR_NB_SUBSCRIPTS.
12635
12636 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12637
12638         * graphite-interchange.c (compute_array_size): Remove use of
12639         PDR_DATA_CONTAINER.
12640         * graphite-poly.c (new_poly_dr): Remove argument data_container.
12641         Do not initialize PDR_DATA_CONTAINER.
12642         (print_pdr): Do not print PDR_DATA_CONTAINER.
12643         * graphite-poly.h (struct poly_dr): Remove data_container field.
12644         (PDR_DATA_CONTAINER): Removed.
12645         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
12646         PDR_DATA_CONTAINER.
12647         (build_poly_dr): Same.
12648
12649 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
12650             Sebastian Pop  <sebastian.pop@amd.com>
12651
12652         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
12653         copy of the dependence polyhedron.  Free the temporary objects.
12654         (graphite_carried_dependence_level_k): Free unused objects before
12655         returning.
12656
12657 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12658
12659         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
12660         Early return without analyzing the data dependences if no
12661         transform has been done.  Call restore_scattering if the transform
12662         is not legal.
12663         (graphite-interchange.c): Same.
12664         * graphite-poly.c (print_scattering_function): Test for
12665         PBB_TRANSFORMED.
12666         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
12667         (apply_poly_transforms): Do not gcc_assert that
12668         the transform is legal.
12669         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
12670         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
12671         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
12672         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
12673         * graphite-poly.h (struct poly_scattering): New.
12674         (struct poly_bb): Add original, transformed, and saved fields.
12675         Remove transformed_scattering, original_scattering,
12676         nb_local_variables and nb_scattering_transform fields.
12677         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
12678         (poly_scattering_new): New.
12679         (poly_scattering_free): New.
12680         (poly_scattering_copy): New.
12681         (store_scattering_pbb): New.
12682         (store_scattering): New.
12683         (restore_scattering_pbb): New.
12684         (restore_scattering): New.
12685         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
12686         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
12687
12688 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12689
12690         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
12691         (print_scop): Same.
12692
12693 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12694
12695         * Makefile.in (graphite.o): Depends on PREDICT_H.
12696         * graphite.c: Include predict.h.
12697         (graphite_finalize): Call tree_estimate_probability.
12698         * predict.c (predict_loops): Do not call scev_initialize and
12699         scev_finalize.
12700         (tree_estimate_probability_bb): New.
12701         (tree_estimate_probability): Do not initialize loops: move that
12702         code to the driver.  Call tree_estimate_probability_bb.
12703         (tree_estimate_probability_driver): New.
12704         (pass_profile): Use tree_estimate_probability_driver.
12705         * predict.h (tree_estimate_probability): Declared.
12706
12707 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12708
12709         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
12710         * graphite-dependences.c (graphite_legal_transform): Add time to
12711         TV_GRAPHITE_DATA_DEPS.
12712         (dependency_between_pbbs_p): Same.
12713         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
12714
12715 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
12716
12717         PR rtl-optimization/41033
12718         * alias.c (nonoverlapping_component_refs_p): Punt when strict
12719         aliasing is disabled.
12720
12721 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12722
12723         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
12724         si_mask_operand, and_load_operand, low_bitmask_operand,
12725         and_reg_operand, and_operand): New predicates.
12726         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
12727         * config/mips/mips.c (and_operands_ok): New function.
12728         * config/mips/mips-protos.h (and_operands_ok): Declare it.
12729         * config/mips/mips.md (move_type): Add ext_ins and logical.
12730         (type): Handle them.
12731         (and<mode>3): Use and_reg_operand as the second operand's predicate.
12732         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
12733         shift_shift.  Remove commutative constraint modifier.
12734         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
12735         shift_shift.
12736         (*clear_upper32_dext): Remove define_insn_and_split.
12737         (*clear_upper32): Turn this define_insn_and_split ...
12738         (splitter for ANDing register with 0xffff_ffff): .. into this.
12739
12740 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12741
12742         * combine.c (try_widen_shift_mode): Factor out code to check if an
12743         integer constant is a low-order bitmask from here ...
12744         * rtlanal.c (low_bitmask_len): ... to here.
12745         * rtl.h (low_bitmask_len): Declare.
12746
12747 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
12748
12749         PR target/8603
12750         * config/alpha/alpha.md (addsi3): Remove expander.
12751         (addsi3): Rename from *addsi3_internal insn pattern.
12752         (subsi3): Remove expander.
12753         (subsi3): Rename from *subsi3_internal insn pattern.
12754
12755 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
12756
12757         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
12758         FWRITE_UNLOCKED.
12759
12760 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
12761             Eric Botcazou  <botcazou@adacore.com>
12762             Douglas B Rupp  <rupp@gnat.com>
12763
12764         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
12765         that records that fit in 64 bits are returned by immediate value,
12766         as required by OpenVMS Calling Standard.
12767         (function_value): Adjust for above modification.
12768         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
12769         virtual_incoming_args_rtx as base object, not next_arg.
12770         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
12771
12772 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12773
12774         * reload.c (find_reloads_subreg_address): Check the original
12775         req_equiv_mem address to detect the case where an address is
12776         not valid in the outer mode.
12777
12778 2009-08-11  Richard Guenther  <rguenther@suse.de>
12779
12780         PR bootstrap/40788
12781         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
12782
12783 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
12784
12785         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
12786         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
12787
12788 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
12789             Douglas B Rupp  <rupp@gnat.com>
12790
12791         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
12792         PT_STACK when frame_pointer_needed on OpenVMS.
12793         (alpha_pv_save_size, alpha_using_fp): Remove.
12794         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
12795         with proper processing for PT_NULL.
12796         (alpha_vms_initial_elimination_offset): New function. Support for
12797         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
12798         (alpha_sa_size): Force procedure type to PT_STACK when
12799         frame_pointer_needed on OpenVMS.
12800         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
12801         (alpha_using_fp): Likewise.
12802         (alpha_vms_can_eliminate): Add prototype.
12803         (alpha_vms_initial_elimination_offset): Likewise.
12804         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
12805         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
12806
12807 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
12808             Douglas B Rupp  <rupp@gnat.com>
12809
12810         * config/alpha/alpha.c (common_object_handler): New function.
12811         (vms_attribute_table): Declare a single attribute "common_object".
12812         (vms_output_aligned_decl_common): New global function.
12813         (SECTION_VMS_OVERLAY): Delete.
12814         (SECTION_VMS_GLOBAL): Likewise.
12815         (SECTION_VMS_INITIALIZE): Likewise.
12816         (vms_asm_named_section): Remove support for above flags.
12817         (vms_section_type_flags): Delete.
12818         (TARGET_SECTION_TYPE_FLAGS): Likewise.
12819         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
12820         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
12821         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
12822
12823 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12824
12825         PR target/41015
12826         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
12827         (sub_ddmmss): Likewise.
12828
12829 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
12830
12831         PR bootstrap/41018
12832         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
12833         year.
12834
12835 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12836
12837         PR target/37053
12838         * reload1.c (reload_as_needed): Use cancel_changes to completely
12839         undo a failed replacement attempt.
12840
12841 2009-08-10  Richard Guenther  <rguenther@suse.de>
12842
12843         PR middle-end/41006
12844         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
12845         (useless_type_conversion_p): ... here.  Require pointer targets
12846         to be compatible.
12847
12848 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
12849
12850         PR c++/40866
12851         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
12852         loose the original type of the statement list.
12853
12854 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12855
12856         * config/alpha/alpha.c: Include libfuncs.h
12857         (avms_asm_output_extern): New function.
12858         (alpha_init_libfuncs): Init some decc libfuncs.
12859         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
12860         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
12861         (DO_CRTL_NAMES): Define.
12862         (LIB_SPEC): Remove.
12863         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
12864         (LONG_TYPE_SIZE): Define.
12865         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
12866         (SUBTARGET_SWITCHES): Define malloc64 switch.
12867         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
12868         (MASK_RETURN_ADDR): Define.
12869         doc/invoke.texi (mmalloc64): Document switch.
12870
12871 2009-08-09  Olivier Hainque  <hainque@adacore.com>
12872             Douglas B Rupp  <rupp@gnat.com>
12873
12874         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
12875         uses_condition_handler.
12876         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
12877         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
12878         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
12879         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
12880         (code_for_builtin): New insn codes for the new alpha_builtins.
12881         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
12882         (alpha_sa_size): Account for uses_condition_handler.
12883         (alpha_expand_prologue): Likewise.
12884         (alpha_start_function): Likewise.
12885         (alpha_expand_epilogue): Likewise.
12886         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
12887         establish/revert expanders.
12888         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
12889         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
12890         New expander, resorting to the alpha.c associated function.
12891         (builtin_revert_vms_condition_handler): Likewise.
12892         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
12893         __gcc_shell_handler, the static VMS condition handler used as
12894         an indirection wrapper to the current dynamically established
12895         handler.
12896         * config/alpha/vms-unwind.h: Complete rewrite.
12897         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
12898         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
12899
12900 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
12901             Douglas B Rupp  <rupp@gnat.com>
12902
12903         * config/alpha/alpha.c (alpha_links): Add 'target' field.
12904         (alpha_need_linkage): Handle aliases.  Return function symbol.
12905         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
12906         Use ultimate alias target for the linkage name.
12907         * config/alpha/alpha.md (movmemdi): Use the symbol returned
12908         by alpha_need_linkage for the function symbol.
12909         (setmemdi): Likewise.
12910
12911 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12912
12913         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
12914         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
12915         (ASM_WEAKEN_LABEL): Define.
12916         (CRT_CALL_STATIC_FUNCTION): Define.
12917         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
12918         (ENDFILE_SPEC): Define.
12919         (INIT_SECTION_ASM_OP): Define.
12920         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
12921         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
12922         crtend.o crtendS.o.
12923         (MULTILIB_OSDIRNAMES): Define.
12924         (shlib_version): Define.
12925         (SHLIB_EXT): Define.
12926         (SHLIB_OBJS): Define.
12927         (SHLIB_NAME): Define.
12928         (SHLIB_MULTILIB): Define.
12929         (SHLIB_INSTALL): Define.
12930         (SHLIB_SYMVEC): Define.
12931         (SHLIB_SYMVECX2): Define.
12932         (SHLIB_LINK): Define.
12933
12934 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12935
12936         * config/alpha/alpha.c (alpha_initialize_trampoline):
12937         Initialize VMS trampoline IAW ABI for bounded procedure calls.
12938         (alpha_start_function): Emit transfer address on nested functions
12939         for VMS trampoline call.
12940         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
12941         since no longer used.
12942         * config/alpha/vms-tramp.asm: Remove.
12943         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
12944         since now only data initialized at runtime.
12945
12946 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12947
12948         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
12949         (LINK_GCC_C_SEQUENCE_SPEC): Define.
12950         (MD_EXEC_PREFIX): Remove, no longer used.
12951         (MD_STARTFILE_PREFIX): Likewise.
12952         (INCLUDE_DEFAULTS): Likewise.
12953         * config/alpha/t-vms:
12954         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
12955
12956 2009-08-09  Richard Guenther  <rguenther@suse.de>
12957
12958         PR tree-optimization/41016
12959         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
12960         (operand_precision): Remove.
12961         (integral_operand_p): Likewise.
12962         (recognize_single_bit_test): Adjust.
12963
12964 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12965
12966         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
12967         operation overflows.  Likewise non-cast unary arithmetic.
12968         If one arm of a conditional expression is always taken,
12969         inhibit evaluation warnings for the other arm.  Likewise inhibit
12970         evaluation warnings for the second && or || operand if the first
12971         operand is enough to determine the result.
12972         * c-typeck.c (build_conditional_expr): Apply the same inhibition
12973         rules here.
12974         (build_binary_op): Prevent duplicate evaluation warnings.
12975
12976 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12977
12978         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
12979         and destination have different modes, Use promote_mode to
12980         determine the signedness of the conversion.  Assert that the
12981         promoted source mode matches the destination mode.  Don't pass
12982         the destination and destination mode to expand_expr if the source
12983         mode is different.  Simplify conversion logic.
12984
12985 2009-08-09  Ira Rosen  <irar@il.ibm.com>
12986
12987         PR tree-optimization/41008
12988         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
12989         from condition only in case it's a comparison. Adjust checks.
12990
12991 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
12992
12993         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
12994         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
12995         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
12996         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
12997         (dump_cand): Handle them.
12998         (struct iv_cand): New members COST_STEP and AINC_USE.
12999         (stmt_after_increment): Likewise.
13000         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
13001         callers changed.  Use gimple_uid comparison instead of scanning.
13002         (add_candidate_1): When looking for identical candidates, take
13003         AINC_USE into account.  Set it for new candidates.
13004         (force_expr_to_var_cost): Cast target_spill_cost to int.
13005         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
13006         All callers changed.  Check for availability of autoinc addressing
13007         modes, both in general for a given mode, and in the specific use case.
13008         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
13009         changed.
13010         (get_computation_cost): Likewise.
13011         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
13012         add_autoinc_candidates): New static functions.
13013         (add_candidate): Call add_autoinc_candidates for candidates based on
13014         a USE_ADDRESS use.
13015         (find_iv_candidates): Call set_autoinc_for_original_candidates.
13016         (determine_use_iv_cost_address): If we have an autoinc candidate at
13017         the matching use, verify autoinc is possible and subtract the cost
13018         of the candidate's step from the cost.
13019         (determine_iv_cost): Record the cost of the increment in the COST_STEP
13020         member of the candidate.
13021         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
13022         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
13023
13024 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13025
13026         * config.build (ia64-hp-*vms*): New target.
13027         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13028         with ia64-hp-*vms*.
13029         * config.gcc (ia64-hp-*vms*): New target.
13030         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13031         with ia64-hp-*vms*.
13032         * config.host (ia64-hp-*vms*): New target.
13033         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13034         with ia64-hp-*vms*.
13035
13036 2009-08-08  Richard Guenther  <rguenther@suse.de>
13037
13038         PR tree-optimization/40991
13039         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
13040
13041 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
13042
13043         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
13044         mode check.  Do truncations in an integer mode.
13045         (force_to_mode): Handle subregs for all mode types.  Only do
13046         arithmetic simplifications on integer modes.
13047
13048 2009-08-07  Richard Guenther  <rguenther@suse.de>
13049
13050         PR tree-optimization/40999
13051         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
13052         (maybe_fold_reference): Lookup constant initializers.
13053         (fold_gimple_assign): Likewise.
13054
13055 2009-08-07  Richard Guenther  <rguenther@suse.de>
13056
13057         * tree-ssa.c (useless_type_conversion_p_1): Only for types
13058         that require structural equality defer to the langhook.
13059
13060 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13061
13062         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
13063         comments.
13064         (struct ipa_pass_through_data): New type.
13065         (struct ipa_ancestor_jf_data): New type.
13066         (union jump_func_value): Removed field formal_id, added fields
13067         pass_through and ancestor.
13068         (struct ipa_param_call_note): Changed type of formal_id to int from
13069         unsigned.
13070         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
13071         operations jump functions and ancestor jump functions.
13072         (compute_complex_pass_through): New function.
13073         (compute_scalar_jump_functions): Call compute_complex_pass_through,
13074         reflect changes in the jump function strucutre.
13075         (update_jump_functions_after_inlining): Ignore complex pass-through
13076         and ancestor jump functions.
13077         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
13078         polynomial pass-through with operation jump functions.
13079
13080 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
13081
13082         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
13083         fde->dw_fde_begin as begin label instead of hot/cold label.
13084         Use LLSDAC label instead of LLSDA for second section lsda.
13085         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
13086         label instead of LLSDA if it is true.
13087         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
13088         callers.
13089         * except.c (add_call_site, dw2_size_of_call_site_table): Add
13090         SECTION argument.  Use it as index into crtl->eh.call_site_record
13091         array.
13092         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
13093         use it to determine how to print table entries instead of using
13094         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
13095         label instead of normal begin label as base.
13096         (sjlj_assign_call_site_values): Adjust add_call_site caller.
13097         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
13098         ensure no EH range spans between sections and that landing pads
13099         are always in the corresponding section.
13100         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
13101         for crtl->eh.call_site_record being an array rather than scalar.
13102         (output_one_function_exception_table): New function, copied
13103         from output_function_exception_table.  Adjust
13104         dw2_size_of_call_site_table, dw2_output_call_site_table
13105         callers.  For SECOND section use *C suffixed labels.
13106         (output_function_exception_table): Call
13107         output_one_function_exception_table and, when doing hot/cold
13108         partitioning, also another time for the second section.
13109         * opts.c: Include except.h.
13110         (decode_options): Allow -freorder-blocks-and-partition with
13111         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
13112         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
13113         * function.h (struct rtl_eh): Change call_site_record from
13114         scalar into array of 2 elements.
13115
13116 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13117
13118         * ipa-prop.c (count_formal_params_1): New function.
13119         (ipa_get_vector_of_formal_parms): New function.
13120         (get_vector_of_formal_parm_types): New function.
13121         (ipa_modify_formal_parameters): New function.
13122         (ipa_modify_call_arguments): New function.
13123         (index_in_adjustments_multiple_times_p): New function.
13124         (ipa_combine_adjustments): New function.
13125         (ipa_dump_param_adjustments): New function.
13126         * ipa-prop.h (struct ipa_parm_adjustment): New type.
13127         (ipa_get_vector_of_formal_parms): Declare.
13128         (ipa_modify_formal_parameters): Declare.
13129         (ipa_modify_call_arguments): Declare.
13130         (ipa_combine_adjustments): Declare.
13131         (ipa_dump_param_adjustments): Declare.
13132         (build_ref_for_offset): Declare.
13133         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
13134         * tree-sra.c: Include ipa-prop.c.
13135         (build_ref_for_offset): Make public.
13136
13137 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
13138
13139         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
13140
13141 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
13142
13143         * gcc/doc/extend.texi (__builtin_extract_return_address)
13144         (__builtin_frob_return_address): Document.
13145
13146 2009-08-06  Paul Brook  <paul@codesourcery.com>
13147
13148         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
13149         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
13150         implementation on ARMv6-M.
13151
13152 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13153
13154         * doc/extend.texi (pcs): Document new attribute for ARM.
13155
13156 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13157
13158         * arm.c (pcs_attribute_args): Comment out unsupported attribute
13159         variants.
13160
13161 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13162
13163         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
13164         warning ().
13165
13166 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13167
13168         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
13169
13170 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13171
13172         Merge ARM/hard_vfp_branch to trunk.
13173
13174         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
13175
13176         * arm.c (libcall_eq): New function.
13177         (libcall_hash): New function.
13178         (add_libcall): New function.
13179         (arm_libcall_uses_aapcs_base): New function.
13180         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
13181         libcalls using the base PCS.
13182         (arm_init_cumulative_args): Likewise.
13183
13184         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
13185
13186         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
13187         Use base ABI for conversion libfuncs between HFmode and SFmode.
13188
13189         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13190
13191         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
13192         V4SImode as representatives of all 64-bit and 128-bit vector
13193         types.  Allow vector types without vector modes.
13194         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
13195         without vector modes like BLKmode.
13196         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
13197         BLKmode.  Avoid unsupported vector modes or TImode moves for
13198         non-TARGET_NEON.
13199         (aapcs_vfp_allocate_return_reg): Likewise.
13200         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
13201         V8QImode if TARGET_NEON || TARGET_IWMMXT.
13202
13203         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13204
13205         * config/arm/arm.c (arm_handle_pcs_attribute): New.
13206         (arm_get_pcs_model): Pass attribute arguments to
13207         arm_pcs_from_attribute.
13208         (arm_init_cumulative_args): Use base AAPCS for conversions from
13209         floating-point types to DImode.
13210         (arm_attribute_table): Add pcs attribute.
13211         (arm_handle_pcs_attribute): New.
13212         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
13213         conversions from floating-point types to DImode, also declare them
13214         to use base AAPCS and declare functions they call to use base
13215         AAPCS and their RTABI names.
13216
13217         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13218
13219         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
13220         -mfloat-abi=hard not being supported for VFP.
13221
13222         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
13223
13224         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
13225         SYMBOL_REF to hard_libcall_value.
13226
13227         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13228             Richard Earnshaw  <rearnsha@arm.com>
13229
13230         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
13231         has been put on the stack, all remaining co-processory arguments for
13232         that co-processor also go on the stack.
13233
13234         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13235
13236         * config/arm/arm.c (arm_return_in_memory): Handle returning
13237         vectors of suitable size in registers also for AAPCS case.
13238
13239         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
13240
13241         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
13242
13243         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
13244
13245         ARM Hard-VFP calling convention
13246         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
13247         * target.h (gcc_target): Add libcall_value to table of call hooks.
13248         * targhooks.h (default_libcall_value): Default implementation.
13249         * targhooks.c (default_libcall_value): Likewise.
13250         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
13251         * optabs.c (expand_unop): Use it.
13252         * expr.h (hard_libcall_value): Pass the function RTX through.
13253         * calls.c (emit_library_call_value_1): Update call to
13254         hard_libcall_value.
13255         * explow.c (hard_libcall_value): Use new target hook.
13256         * config/arm/arm.c: Include cgraph.h
13257         (TARGET_FUNCTION_VALUE): Override default hook.
13258         (arm_pcs_default): New variable.
13259         (arm_override_options): Don't fault hard calling convention with VFP.
13260         Add support for AAPCS variants.
13261         (arm_function_value): Make static.  Handle AAPCS variants.
13262         (arm_libcall_value): New function.
13263         (arm_apply_result_size): Handle VFP registers in results.
13264         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
13265         conventions.
13266         (pcs_attribute_args): New variable.
13267         (arm_pcs_from_attribute): New function.
13268         (arm_get_pcs_model): New function.
13269         (aapcs_vfp_cum_init): New function.
13270         (aapcs_vfp_sub_candidate): New function.
13271         (aapcs_vfp_is_return_candidate): New function.
13272         (aapcs_vfp_is_call_candidate): New function.
13273         (aapcs_vfp_allocate): New function.
13274         (aapcs_vfp_allocate_return_reg): New function.
13275         (aapcs_vfp_advance): New function.
13276         (aapcs_cp_arg_layout): New variable.
13277         (aapcs_select_call_coproc): New function.
13278         (aapcs_select_return_coproc): New function.
13279         (aapcs_allocate_return_reg): New function.
13280         (aapcs_libcall_value): New function.
13281         (aapcs_layout_arg): New function.
13282         (arm_init_cumulative_args): Initialize AAPCS args data.
13283         (arm_function_arg): Handle AAPCS variants using new interface.
13284         (arm_arg_parital_bytes): Likewise.
13285         (arm_function_arg_advance): New function.
13286         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
13287         calling conventions.
13288         (arm_setup_incoming_varargs): Handle new AAPCS args data.
13289         * arm.h (NUM_VFP_ARG_REGS): Define.
13290         (LIBCALL_VALUE): Update.
13291         (FUNCTION_VALUE): Delete.
13292         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
13293         (arm_pcs): New enum.
13294         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
13295         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
13296         (FUNCTION_ARG_REGNO_P): Add VFP regs.
13297         * arm-protos.h (arm_function_arg_advance): Add.
13298         (aapcs_libcall_value): Add.
13299         (arm_function_value): Delete.
13300
13301 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
13302             H.J. Lu  <hongjiu.lu@intel.com>
13303
13304         PR target/40957
13305         * config/i386/i386.c (standard_sse_mode_p): Remove.
13306         (standard_sse_constant_p): Return 2 for integer mode
13307         vector_all_ones_operand when SSE2 is enabled.
13308         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
13309         (ix86_expand_vector_move): Do not check for negative values from
13310         standard_sse_constant_p.
13311
13312 2009-08-06  Richard Guenther  <rguenther@suse.de>
13313
13314         * tree-ssa.c (useless_type_conversion_p_1): Make function and
13315         array type comparisons frontend independent.
13316         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
13317         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
13318         out array reference lower bound and element size operands.
13319         (ao_ref_init_from_vn_reference): Properly compute the offset
13320         for ARRAY_RANGE_REF.
13321         (vn_reference_fold_indirect): Fill out array reference lower
13322         bound and element size operands.
13323         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
13324         a non gimple valued reference operand which can happen for
13325         array reference lower bound or element size.
13326         (create_component_ref_by_pieces_1): Properly generate the
13327         element size operand for array references.
13328
13329 2009-08-06  Richard Guenther  <rguenther@suse.de>
13330
13331         PR tree-optimization/40964
13332         * tree.c (iterative_hash_host_wide_int): Export.
13333         * tree.h (iterative_hash_host_wide_int): Declare.
13334         * tree-ssa-structalias.c (heapvar_map): New struct.
13335         (heapvar_map_eq): New function.
13336         (heapvar_map_hash): Likewise.
13337         (heapvar_lookup): Adjust.
13338         (heapvar_insert): Likewise.
13339         (make_constraint_from_heapvar): Allow multiple heap variables
13340         per decl at different offsets.
13341         (init_alias_heapvars): Adjust.
13342
13343 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
13344
13345         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
13346         * mips_output_sync_loop (mips_output_sync_loop): Only emit
13347         trailing sync if TARGET_SYNC_AFTER_SC.
13348
13349 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
13350
13351         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
13352         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
13353         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
13354         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
13355         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
13356         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
13357         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
13358         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
13359         test_and_set_12): Rewrite calls to mips_output_sync_loop.
13360         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
13361         the prototype declaration match the definition.
13362         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
13363         instructions explicitly.  Add barrier_before and operands
13364         parameters.
13365         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
13366         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
13367         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
13368         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
13369         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
13370         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
13371
13372 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
13373
13374         * tree-ssa-alias.c: Fix intervals to use [) syntax.
13375
13376 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
13377             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
13378
13379         PR target/40906
13380         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
13381         source operand.
13382
13383 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
13384
13385         PR rtl-optimization/40924
13386         * dse.c (canon_address): Before calling cselib_expand_value_rtx
13387         make sure canon_rtx (mem_address) isn't simpler than
13388         canon_rtx (expanded_mem_address).
13389
13390 2009-08-05  Li Feng  <nemokingdom@gmail.com>
13391
13392         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
13393         for each poly_bb_p.
13394         (build_scop_drs): Build alias set for each SCoP.
13395
13396 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
13397
13398         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
13399         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
13400         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
13401         (MIPS_ARCH_FLOAT_SPEC): Likewise.
13402         (BASE_DRIVER_SELF_SPECS): Likewise.
13403
13404 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
13405
13406         * tree-ssa-alias.c: Fix some comment typos.
13407
13408 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13409
13410         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
13411         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
13412
13413 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
13414
13415         PR c/39902
13416         * simplify-rtx.c (simplify_binary_operation_1): Disable
13417         simplifications for decimal float operations.
13418
13419 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
13420
13421         PR middle-end/40943
13422         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
13423         operand of INDIRECT_REF.
13424
13425 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
13426
13427         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
13428         constants referencing TLS symbols.
13429
13430 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13431
13432         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
13433         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
13434
13435 2009-08-03  Richard Guenther  <rguenther@suse.de>
13436
13437         * tree.c (make_vector_type): Build a main variant first,
13438         get the canonical one and then build the variant.
13439         * tree-ssa.c (useless_type_conversion_p_1): Handle
13440         fixed-point types.
13441         (useless_type_conversion_p): Conversions to pointers to
13442         incomplete record types are useless.
13443
13444 2009-08-03  Richard Guenther  <rguenther@suse.de>
13445
13446         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
13447         file will be created.
13448         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
13449         * toplev.c (compile_file): Adjust comment.
13450
13451 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
13452
13453         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
13454         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
13455         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13456         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13457         (sh_promote_function_mode): Fix typo.
13458
13459 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
13460
13461         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
13462
13463 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13464
13465         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
13466         declaration arguments.
13467
13468 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
13469
13470         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
13471         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
13472         (ix86_split_ashl): Ditto.
13473         (ix86_expand_vector_init_one_nonzero): Ditto.
13474         (ix86_expand_vector_set): Ditto.
13475         (ix86_expand_reduc_v4sf): Ditto.
13476
13477 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
13478
13479         * explow.c (promote_function_mode): Remove assert.
13480         * config/sh/sh.c (sh_promote_function_mode): Declare.
13481
13482 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13483
13484         * config/pa/pa.c (pa_promote_function_mode): Declare.
13485         Change to static.  Fix promote_mode call.
13486
13487         * gthr-dce.h (CONST_CAST2): Define if not defined.
13488         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
13489
13490         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
13491
13492 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
13493
13494         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13495         now write-only variable unsignedp.
13496         (expand_expr_real_1): Use promote_decl_mode.
13497         * expr.h (promote_function_mode, promote_decl_mode): New.
13498         (promote_mode): Remove last argument.
13499         * function.c (assign_temp): Drop last argument of promote_mode.
13500         (assign_parm_find_data_types): Use promote_function_mode.
13501         (assign_parm_setup_reg): Likewise.
13502         (expand_function_end): Use promote_function_mode.
13503         * calls.c (initialize_argument_information): Use promote_function_mode.
13504         (precompute_arguments): Use promote_mode instead of checking if
13505         only PROMOTE_FUNCTION_MODE is defined.
13506         (expand_call): When making sibcall decisions, use promote_function_mode.
13507         Below, remove an if for targetm.calls.promote_function_return and
13508         and use promote_function_mode.
13509         (emit_library_call_value_1): Use promote_function_mode, fix bug
13510         where promote_mode was passed FOR_CALL == 0 for a return value in an
13511         assertion.
13512         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13513         * explow.c (promote_function_mode, promote_decl_mode): New.
13514         (promote_mode): Keep only the FOR_CALL == 0 case.
13515         * combine.c (setup_incoming_promotion): Remove test of
13516         promote_function_args.  Use promote_function_mode.
13517         * stmt.c (expand_value_return): Use promote_decl_mode.
13518         (expand_decl): Use promote_decl_mode.
13519
13520         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13521         now write-only variable unsignedp.
13522         (expand_expr_real_1): Use promote_decl_mode.
13523         * expr.h (promote_function_mode, promote_decl_mode): New.
13524         (promote_mode): Remove last argument.
13525         * function.c (assign_temp): Drop last argument of promote_mode.
13526         (assign_parm_find_data_types): Use promote_function_mode.
13527         (assign_parm_setup_reg): Likewise.
13528         (expand_function_end): Use promote_function_mode.
13529         * calls.c (initialize_argument_information): Use promote_function_mode.
13530         (precompute_arguments): Use promote_mode instead of checking if
13531         only PROMOTE_FUNCTION_MODE is defined.
13532         (expand_call): When making sibcall decisions, use promote_function_mode.
13533         Below, remove an if for targetm.calls.promote_function_return and
13534         and use promote_function_mode.
13535         (emit_library_call_value_1): Use promote_function_mode, fix bug
13536         where promote_mode was passed FOR_CALL == 0 for a return value in an
13537         assertion.
13538         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13539         * explow.c (promote_function_mode, promote_decl_mode): New.
13540         (promote_mode): Keep only the FOR_CALL == 0 case.
13541         * combine.c (setup_incoming_promotion): Remove test of
13542         promote_function_args.  Use promote_function_mode.
13543         * stmt.c (expand_value_return): Use promote_decl_mode.
13544         (expand_decl): Use promote_decl_mode.
13545
13546         * explow.c (promote_function_mode): Just call the target hook.
13547         * targhooks.c (default_promote_function_mode,
13548         default_promote_function_mode_always_promote): New.
13549         * targhooks.h (default_promote_function_mode,
13550         default_promote_function_mode_always_promote): Declare.
13551         * target.h (promote_function_args, promote_function_return): Remove.
13552         (promote_function_mode): New.
13553         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
13554         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13555         (TARGET_PROMOTE_FUNCTION_MODE): New.
13556         (TARGET_CALLS): Adjust.
13557         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
13558         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
13559
13560         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
13561         * config/s390/s390.c (s390_promote_function_mode): ... here,
13562         with pointer handling.
13563         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13564         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13565
13566         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
13567         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
13568         with pointer handling.
13569         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13570         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13571
13572         * config/sh/sh-protos.h (sh_promote_function_mode): New.
13573         * config/sh/sh.c (sh_promote_function_mode): New.
13574         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13575         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13576
13577         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
13578         * config/cris/cris.c (cris_promote_function_mode): ... here.
13579         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13580         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13581
13582         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
13583         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
13584         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13585         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13586
13587         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
13588         * config/arm/arm.c (arm_promote_function_mode): ... here, without
13589         complex type handling.
13590         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13591         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13592
13593         * config/pa/pa.c (pa_promote_function_mode): New.
13594         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13595         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13596
13597         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
13598         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13599         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
13600         * config/xtensa/xtensa.c: Likewise.
13601         * config/stormy16/stormy16.c: Likewise.
13602         * config/iq2000/iq2000.c: Likewise.
13603         * config/rs6000/rs6000.c: Likewise.
13604         * config/picochip/picochip.c: Likewise.
13605         * config/arc/arc.c: Likewise.
13606         * config/mcore/mcore.c: Likewise.
13607         * config/score/score.c: Likewise.
13608         * config/mips/mips.c: Likewise.
13609         * config/bfin/bfin.c: Likewise.
13610         * config/ia64/ia64.c: Likewise (disabled though).
13611
13612         * config/frv/frv.h: Remove pointless remark.
13613
13614         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13615         TARGET_PROMOTE_FUNCTION_ARGS,
13616         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13617         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13618
13619 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
13620
13621         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
13622         -floop-parallelize-all.
13623         * toplev.c (process_options): Rename flag_graphite_force_parallel to
13624         flag_loop_parallelize_all.
13625         * tree-ssa-loop.c (gate_graphite_transforms): Same.
13626         * graphite.c (graphite_transform_loops): Same.
13627         * common.opt: Same.
13628         * graphite-poly.c (apply_poly_transforms): Same.
13629
13630 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
13631
13632         PR tree-optimization/40914
13633         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
13634         if set, then check the delta field of the PMF record.
13635         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
13636         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
13637         call is stored in the delta.
13638
13639 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
13640
13641         * config/mips/mips.md (*clear_upper32_dext): New pattern.
13642
13643 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
13644
13645         * config/i386/bsd.h (ASM_BYTE): New define.
13646         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
13647         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
13648         .byte.  Use fputs or putc instead of fprintf where appropriate.
13649         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
13650         fputs or putc instead of fprintf where appropriate.
13651         * config/i386/i386elf.h: Ditto.
13652         * config/i386/sysv4.h: Ditto.
13653
13654         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13655         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
13656         (*tls_global_dynamic_64): Ditto.
13657
13658 2009-07-31  Christian Bruel  <christian.bruel@st.com>
13659
13660         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
13661
13662 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13663
13664         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
13665         Remove dead code for MINUS.
13666
13667 2009-07-31  Anthony Green  <green@moxielogic.com>
13668
13669         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
13670         $r12 in prologue.
13671         (moxie_expand_epilogue): Ditto for epilogue.
13672         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
13673         incoming arguments.
13674         (moxie_function_arg): Ditto.
13675         (moxie_pass_by_reference): Ditto.
13676         (moxie_arg_partial_bytes): Ditto.
13677         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
13678         (FUNCTION_ARG_ADVANCE) Ditto.
13679         (REG_PARM_STACK_SPACE) Ditto.
13680         (FUNCTION_ARG_REGNO_P) Dito.
13681
13682         * config.gcc: Add moxie linux config support.
13683         * gcc/config/moxie/uclinux.h: New file.
13684
13685 2009-07-31  DJ Delorie  <dj@redhat.com>
13686
13687         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
13688         (UNSPECV_SP_SWITCH_E): New.
13689         (sp_switch_1): Change to an unspec.
13690         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
13691         replace $r15.
13692         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
13693         reference the new stack's address
13694
13695 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13696
13697         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
13698         graphite-clast-to-gimple.o, graphite-dependences.o,
13699         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13700         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
13701         (graphite-blocking.o,
13702         graphite-clast-to-gimple.o, graphite-dependences.o,
13703         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13704         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
13705         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
13706         * cfgloop.h (struct loop): Add can_be_parallel field.
13707         * common.opt (fgraphite-identity): Moved up.
13708         (fgraphite-force-parallel): New flag.
13709         * graphite.c: Rewrite.
13710         * graphite.h: Rewrite.
13711         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
13712         after Graphite.
13713         * toplev.c (graphite_out_file): New file descriptor.
13714         (graphite_in_file): New.
13715         (process_options): flag_graphite_force_parallel cannot be used without
13716         Graphite.
13717         * tree-ssa-loop.c: Include toplev.h.
13718         (gate_graphite_transforms): Enable flag_graphite for
13719         flag_graphite_force_parallel.
13720
13721 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13722
13723         * ChangeLog.graphite: New.
13724         * graphite-blocking.c: New.
13725         * graphite-clast-to-gimple.c: New.
13726         * graphite-clast-to-gimple.h: New.
13727         * graphite-dependences.c: New.
13728         * graphite-dependences.h: New.
13729         * graphite-interchange.c: New.
13730         * graphite-poly.c: New.
13731         * graphite-poly.h: New.
13732         * graphite-ppl.c: New.
13733         * graphite-ppl.h: New.
13734         * graphite-scop-detection.c: New.
13735         * graphite-scop-detection.h: New.
13736         * graphite-sese-to-poly.c: New.
13737         * graphite-sese-to-poly.h: New.
13738         * sese.c: New.
13739         * sese.h: New.
13740
13741 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13742
13743         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
13744         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
13745
13746 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13747
13748         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
13749         (scev_is_linear_expression): Return false if the evolution is not
13750         affine multivariate.
13751
13752 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13753
13754         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
13755         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
13756
13757 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13758
13759         * tree-data-ref.c (debug_data_references): New.
13760         (debug_data_reference): New.
13761         * tree-data-ref.h (debug_data_references): Declared.
13762         (debug_data_reference): Declared.
13763
13764 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13765
13766         * tree-data-ref.c (stmt_simple_memref_p: Removed.
13767         * tree-data-ref.h (scop_p): Removed.
13768         (struct data_reference): Remove field scop.
13769         (DR_SCOP): Removed.
13770         (stmt_simple_memref_p): Removed.
13771
13772 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13773
13774         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
13775         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
13776         basic block empty.
13777
13778 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13779
13780         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
13781
13782 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13783
13784         * doc/invoke.texi (-fgraphite-identity): Documented.
13785
13786 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13787
13788         * tree-scalar-evolution.c: Fix comment.
13789         (instantiate_scev_1): Return unknow from scev instantiation if the
13790         result is not above instantiate_below.
13791
13792 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13793
13794         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
13795         static anymore.  Instantiate the symbols that may have been introduced
13796         by chrec_apply.
13797         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
13798         Declared.
13799
13800 2009-07-30  DJ Delorie  <dj@redhat.com>
13801
13802         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
13803         .vliw directive to VLIW sections.
13804
13805 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13806
13807         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
13808         New variables.
13809         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
13810         (AUTOHEADER): New variable.
13811         ($(srcdir)/cstamp-h.in): Use it.
13812
13813 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
13814             Pat Haugen  <pthaugen@us.ibm.com>
13815             Revital Eres <ERES@il.ibm.com>
13816
13817         * config/rs6000/vector.md (VEC_F): Add VSX support.
13818         (VEC_A): Ditto.
13819         (VEC_N): Ditto.
13820         (mov<mode>): Ditto.
13821         (vector_load_<mode>): Ditto.
13822         (vector_store_<mode>): Ditto.
13823         (vector GPR move split): Ditto.
13824         (vec_reload_and_plus_<mptrsize>): Ditto.
13825         (vec_reload_and_reg_<mptrsize>): Ditto.
13826         (add<mode>3): Ditto.
13827         (sub<mode>3): Ditto.
13828         (mul<mode>3): Ditto.
13829         (neg<mode>2): Ditto.
13830         (abs<mode>2): Ditto.
13831         (smin<mode>3): Ditto.
13832         (smax<mode>3): Ditto.
13833         (vector_eq<mode>): Ditto.
13834         (vector_gt<mode>): Ditto.
13835         (vector_ge<mode>): Ditto.
13836         (vector_gtu<mode>): Ditto.
13837         (vector_select_<mode>_uns): Ditto.
13838         (vector_eq_<mode>_p): Ditto.
13839         (vector_gt_<mode>_p): Ditto.
13840         (vector_ge_<mode>_p): Ditto.
13841         (vector_gtu_<mode>_p): Ditto.
13842         (cr6_test_for_zero): Ditto.
13843         (cr6_test_for_zero_reverse): Ditto.
13844         (cr6_test_for_lt): Ditto.
13845         (cr6_test_for_lt_reverse): Ditto.
13846         (xor<mode>3): Ditto.
13847         (ior<mode>3): Ditto.
13848         (and<mode>3): Ditto.
13849         (one_cmpl<mode>2): Ditto.
13850         (nor<mode>2): Ditto.
13851         (andc<mode>2): Ditto.
13852         (float<VEC_int<mode>2): Ditto.
13853         (unsigned_float<VEC_int><mode>2): Ditto.
13854         (fix_trunc<mode><VEC_int>2): Ditto.
13855         (fixuns_trunc<mode><VEC_int>2): Ditto.
13856         (vec_init<mode>):
13857         (vec_set<mode>): Ditto.
13858         (vec_extract<mode>): Ditto.
13859         (vec_interleave_highv4sf): Ditto.
13860         (vec_interleave_lowv4sf): Ditto.
13861         (vec_realign_load_<mode>): Ditto.
13862         (vec_shl_<mode>): Ditto.
13863         (vec_shr_<mode>): Ditto.
13864         (div<mode>3): New patterns for VSX.
13865         (vec_interleave_highv2df): Ditto.
13866         (vec_interleave_lowv2df): Ditto.
13867         (vec_pack_trunc_v2df): Ditto.
13868         (vec_pack_sfix_trunc_v2df): Ditto.
13869         (vec_pack_ufix_trunc_v2df): Ditto.
13870         (vec_unpacks_hi_v4sf): Ditto.
13871         (vec_unpacks_lo_v4sf): Ditto.
13872         (vec_unpacks_float_hi_v4si): Ditto.
13873         (vec_unpacks_float_lo_v4si): Ditto.
13874         (vec_unpacku_float_hi_v4si): Ditto.
13875         (vec_unpacku_float_lo_v4si): Ditto.
13876         (movmisalign<mode>): Ditto.
13877         (vector_ceil<mode>2): New patterns for vectorizing math library.
13878         (vector_floor<mode>2): Ditto.
13879         (vector_btrunc<mode>2): Ditto.
13880         (vector_copysign<mode>3): Ditto.
13881
13882         * config/rs6000/predicates.md (easy_vector_constant_msb): New
13883         predicate for setting the high bit in each word, used for copysign.
13884
13885         * config/rs6000/ppc-asm.h (f19): Whitespace.
13886         (f32-f63): Define if VSX.
13887         (v0-v31): Define if Altivec.
13888         (vs0-vs63): Define if VSX.
13889
13890         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
13891
13892         * config/rs6000/power7.md: New file, provide tuning parameters for
13893         -mcpu=power7.
13894
13895         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
13896         (rs6000_cpu_cpp_builtins): Ditto.
13897         (altivec_overloaded_builtins): Ditto.
13898         (altivec_resolve_overloaded_builtin): Ditto.
13899
13900         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
13901         debug switch to disable vectorizing simple math builtin
13902         functions.
13903
13904         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
13905         Vectorize simple math builtin functions.
13906         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
13907         hook to vectorize math builtins.
13908         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
13909         (rs6000_builtin_conversion): Add VSX/power7 support.
13910         (rs6000_builtin_vec_perm): Ditto.
13911         (vsplits_constant): Add support for loading up a vector constant
13912         with just the high bit set in each part.
13913         (rs6000_expand_vector_init): Add VSX/power7 support.
13914         (rs6000_expand_vector_set): Ditto.
13915         (rs6000_expand_vector_extract): Ditto.
13916         (rs6000_emit_move): Ditto.
13917         (bdesc_3arg): Ditto.
13918         (bdesc_2arg): Ditto.
13919         (bdesc_1arg): Ditto.
13920         (rs6000_expand_ternop_builtin): Ditto.
13921         (altivec_expand_builtin): Ditto.
13922         (rs6000_expand_unop_builtin): Ditto.
13923         (rs6000_init_builtins): Ditto.
13924         (altivec_init_builtins): Ditto.
13925         (builtin_function_type): Ditto.
13926         (rs6000_common_init_builtins): Ditto.
13927         (rs6000_handle_altivec_attribute); Ditto.
13928         (rs6000_mangle_type): Ditto.
13929         (rs6000_vector_mode_supported_p): Ditto.
13930         (rs6000_mode_dependent_address): Altivec addresses with AND -16
13931         are mode dependent.
13932
13933         * config/rs6000/vsx.md: New file for VSX support.
13934
13935         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
13936         identifing values with just the most significant bit set.
13937         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
13938         vectorized builtins.
13939
13940         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
13941         (UNSPEC_VRFIM): Delete.
13942         (splitter for loading up vector with most significant bit): New
13943         splitter for vectorizing copysign.
13944         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
13945         vectorizing simple math functions.
13946         (altivec_vrfip): Add support for vectorizing simple math functions.
13947         (altivec_vrfim): Ditto.
13948         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
13949
13950         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
13951         (power7.md, vsx.md): Include for power7 support.
13952         (copysigndf3): Use VSX instructions if -mvsx.
13953         (negdf2_fpr): Ditto.
13954         (absdf2_fpr): Ditto.
13955         (nabsdf2_fpr): Ditto.
13956         (adddf3_fpr): Ditto.
13957         (subdf3_fpr): Ditto.
13958         (muldf3_fpr): Ditto.
13959         (divdf3_fpr): Ditto.
13960         (fix_truncdfdi2_fpr): Ditto.
13961         (cmpdf_internal1): Ditto.
13962         (fred, fred_fpr): Convert into expander/insn to add VSX support.
13963         (btruncdf2, btruncdf2_fpr): Ditto.
13964         (ceildf2, ceildf2_fpr): Ditto.
13965         (floordf2, floordf2_fpr): Ditto.
13966         (floatdidf2, floatdidf2_fpr): Ditto.
13967         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
13968         (fmsubdf4_fpr): Ditto.
13969         (fnmadddf4_fpr_1): Ditto.
13970         (fnmadddf4_fpr_2): Ditto.
13971         (fnmsubdf4_fpr_1): Ditto.
13972         (fnmsubdf4_fpr_2): Ditto.
13973         (fixuns_truncdfdi2): Add expander for VSX support.
13974         (fix_truncdfdi2): Ditto.
13975         (fix_truncdfsi2): Ditto.
13976         (ftruncdf2): Ditto.
13977         (btruncsf2): Whitespace.
13978         (movdf_hardfloat32): Add support for VSX registers.
13979         (movdf_softfloat32): Ditto.
13980         (movdf_hardfloat64): Ditto.
13981         (movdf_hardfloat64_mfpgpr): Ditto.
13982         (movdf_softfloat64): Ditto.
13983         (movti splitters): Add check for vector registers supporting
13984         TImode in the future.
13985         (bpermd): Add power7 bpermd instruction.
13986
13987         * config/rs6000/altivec.h (vec_div): Define if VSX.
13988         (vec_mul): Ditto.
13989         (vec_msub): Ditto.
13990         (vec_nmadd): Ditto.
13991         (vec_nearbyint): Ditto.
13992         (vec_rint): Ditto.
13993         (vec_sqrt): Ditto.
13994         (all predicates): Use the generic builtin function, and not the V4SF
13995         specific function so that the predicates will work with VSX's V2DF.
13996         (vec_all_*): Ditto.
13997         (vec_any_*): Ditto.
13998
13999         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
14000         Document new VSX functions and types.
14001
14002         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
14003         switches.
14004
14005         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
14006         "wa", and "j" constraints.  Modify "v" to talk about Altivec
14007         instead of just vector.
14008
14009 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
14010
14011         PR debug/26475
14012         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
14013         location for phi arguments.
14014         (rewrite_update_phi_arguments): Find locations for reaching defs.
14015         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
14016         Add location to add_phi_arg calls.
14017         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
14018         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
14019         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
14020         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
14021         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
14022         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
14023         * tree-phinodes.c (make_phi_node): Initialize location.
14024         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
14025         (add_phi_arg): Add location parameter.
14026         (remove_phi_arg_num): Move location when moving phi argument.
14027         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
14028         location.
14029         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
14030         slpeel_update_phi_nodes_for_guard1,
14031         slpeel_update_phi_nodes_for_guard2,
14032         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
14033         vect_loop_versioning): Set locations.
14034         * tree-parloops.c (create_phi_for_local_result,
14035         transform_to_exit_first_loop, create_parallel_loop): Add locations.
14036         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
14037         * tree-vect-loop.c (get_initial_def_for_induction,
14038         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
14039         locations.
14040         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
14041         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
14042         (gimple_phi_arg_set_location): New.  Set locus.
14043         (gimple_phi_arg_has_location): New.  Check for locus.
14044         (redirect_edge_var_map_location): New.  Return locus from var_map.
14045         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
14046         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
14047         combining PHI arguments.
14048         (cond_store_replacement): Set location.
14049         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
14050         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
14051         scop_add_exit_phis_edge): Add locations.
14052         * tree-cfgcleanup.c (remove_forwarder_block,
14053         remove_forwarder_block_with_phi): Add locations.
14054         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
14055         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
14056         locations.
14057         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
14058         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
14059         flush_pending_stmts): Add source location.
14060         * lambda-code.c (perfect_nestify): Maintain location stack with argument
14061         stack to preserve locations.
14062         * tree-vect-stmts.c (vectorizable_load): Add location.
14063         * tree-inline.c (copy_phis_for_bb): Copy locus.
14064         (setup_one_parameter): Add call locus to inlined parameter stmts.
14065         (initialize_inlined_parameters): Pass in call location as parameter
14066         assignment locus.
14067         (tree_function_versioning): Pass location to setup_one_parameter.
14068         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
14069         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
14070         copy and edge lists.
14071         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
14072         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
14073         locus parameter and override the stmt default if provided.
14074         (new_elim_graph, clear_elim_graph, delete_elim_graph,
14075         elim_graph_add_edge, elim_graph_remove_succ_edge,
14076         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
14077         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
14078         eliminate_phi):  Add locus info in elimination graph for each edge and
14079         value copy.
14080         (insert_backedge_copies): Copy locus if present.
14081         * tree-flow.h (struct _edge_var_map): Add locus field.
14082         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
14083         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
14084         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
14085         locations.
14086         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
14087
14088 2009-07-30  Martin Jambor  <mjambor@suse.cz>
14089
14090         PR tree-optimization/40570
14091         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
14092         use inlining loops.
14093
14094 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
14095
14096         * ssa-loop-manip.c: Include langhooks.h.
14097         (rewrite_phi_with_iv): New.
14098         (rewrite_all_phi_nodes_with_iv): New.
14099         (canonicalize_loop_ivs): Move here from tree-parloops.c.
14100         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
14101         * tree-parloops.c (loop_parallel_p): Move out all conditions
14102         except dependency check.
14103         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
14104         (gen_parallel_loop): Call canonicalize_loop_ivs without
14105         reduction_list argument.
14106         (build_new_reduction): New.
14107         (gather_scalar_reductions): New.
14108         (try_get_loop_niter): New.
14109         (try_create_reduction_list): New.
14110         (parallleize_loops): Change the parallel conditions check.
14111         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
14112         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
14113
14114 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
14115
14116         * opt-functions.awk (opt_args): Allow argument to be enclosed in
14117         curly braces.
14118         * doc/options.texi (Option properties):  Mention new quoting syntax.
14119
14120 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14121
14122         * config/alpha/alpha.c (alpha_start_function):
14123         Handle VMS_DEBUG_MAIN_POINTER
14124         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
14125         * doc/invoke.texi: Document -mdebug-main switch.
14126
14127 2009-07-29  Richard Henderson  <rth@redhat.com>
14128
14129         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
14130         (cgraph_create_edge_including_clones): Likewise.
14131         * tree-inline.c (copy_bb): Operate on the correct edges
14132         when updating the callgraph.
14133
14134 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14135
14136         * config/alpha/vms-cc.c: Deleted.
14137         * config/alpha/vms-ld.c: Deleted.
14138         * config/alpha/t-vms64: Moved to config/vms
14139         * config/alpha/vms-crt0-64.c: Moved to config/vms
14140         * config/alpha/vms-crt0.c: Moved to config/vms
14141         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
14142         * config/alpha/vms-psxcrt0.c: Moved to config/vms
14143         * config/alpha/xm-vms.h: Moved to config/vms
14144         * config/alpha/x-vms: Moved to config/vms
14145         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
14146         config/vms/t-vms.
14147         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
14148         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
14149         (version): Set.
14150         * config/vms/t-vms64: Moved here from config/alpha
14151         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
14152         (argc,argv,envp): Enforce 32bit malloc'ing.
14153         * config/vms/vms-psxcrt0-64.c: Likewise.
14154         * config/vms/vms-crt0.c: Moved here from config/alpha.
14155         * config/vms/vms-psxcrt0.c: Likewise.
14156         * config/vms/vms-crtl-64.h: New file.
14157         * config/vms/vms-crtl.h: New file.
14158         * config/vms/vms.opt: New file.
14159         * config/vms/xm-vms64.h: New file.
14160         * config/vms/xm-vms.h: Moved here from config/alpha.
14161         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
14162         Set.
14163         * config/vms/x-vms: Moved here from config/alpha.
14164         (version, VMS_EXTRA_PARTS): Moved to t-vms.
14165         (vms-ld.o, vms-cc.o): Removed.
14166         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
14167
14168 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14169
14170         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
14171         correct stack (obvious VMS fix).
14172
14173 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14174
14175         * dwarf2out.c (output_file_names): Output VMS style file name, size,
14176         date, version info if VMS_DEBUGGING_INFO defined.
14177         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
14178         size, date calculating code moved here.
14179
14180 2009-07-29  Paul Brook  <paul@codesourcery.com>
14181
14182         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
14183         do_push/do_pop.
14184
14185 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
14186
14187         PR target/40577
14188         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
14189         to DImode when generating insq_le insn.
14190
14191 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14192
14193         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
14194         New macro set for VMS_DEBUGGGING_INFO.
14195         (AT_string_form): Use it.
14196
14197 2009-07-28  DJ Delorie  <dj@redhat.com>
14198
14199         * config/mep/mep.c (vtext_section): New.
14200         (vftext_section): New.
14201         (ftext_section): New.
14202         (mep_select_section): Add support for functions.
14203         (mep_unique_section): Likewise.
14204         (mep_asm_init_sections): Likewise.
14205         (mep_encode_section_info): Remove it from here.
14206
14207         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
14208
14209 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
14210
14211         * tree.h (TREE_DEPRECATED): Document it is used for types too.
14212         (TYPE_VECTOR_OPAQUE): Use default_def_flag
14213
14214 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14215
14216         * dwarf2out.c (output_file_names): Test new macro
14217         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
14218         (add_comp_dir_attribute): Likewise.
14219
14220 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
14221
14222         * config/i386/mingw-w64.h (LINK_SPEC): Add
14223         separating space between commands.
14224
14225 2009-07-28  Jan Hubicka  <jh@suse.cz>
14226
14227         PR tree-optimization/40759
14228         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
14229         for renaming.
14230
14231 2009-07-27  DJ Delorie  <dj@redhat.com>
14232
14233         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
14234         types are dword-aligned.
14235         (mep_expand_va_start): Likewise.
14236
14237 2009-07-27  Olivier Hainque  <hainque@adacore.com>
14238             Douglas B Rupp  <rupp@gnat.com>
14239
14240         * convert.c (convert_to_pointer): Don't assume the target
14241         pointer type is POINTER_SIZE long. Fetch its precision instead.
14242
14243 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
14244
14245         * system.h (fopen): Undefine if macro.
14246
14247 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
14248
14249         * dwarf2out.c (output_cfi_p): Removed.
14250         (output_cfis): New function.
14251         (output_fde): New function, split from output_call_frame_info.
14252         (output_call_frame_info): Use it.
14253         (dwarf2out_switch_text_section): Use output_cfis.
14254
14255 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14256
14257         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
14258         TARGET_BI_ARCH is specified without enabling SJLJ.
14259         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
14260         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
14261
14262 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
14263
14264         * arm.md (negdi2): Use DImode if forcing a value into a register.
14265
14266 2009-07-26  Ira Rosen  <irar@il.ibm.com>
14267
14268         PR tree-optimization/40801
14269         * tree-vect-stmts.c (vectorizable_call): Get previous copy
14270         of vector operand from the previous copy of vector statement.
14271         Pass the correct definition type value to
14272         vect_get_vec_def_for_stmt_copy().
14273
14274 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14275
14276         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
14277         const char ** conversion.
14278
14279 2009-07-25 David Daney <ddaney@caviumnetworks.com>
14280
14281         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
14282         fancy_abort() if !ENABLE_ASSERT_CHECKING.
14283         (gcc_unreachable): Invoke __builtin_unreachable() if
14284         !ENABLE_ASSERT_CHECKING.
14285
14286 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14287
14288         PR rtl-optimization/40445
14289         * emit-rtl.c (next_nonnote_insn_bb): New function.
14290         * rtl.h (next_nonnote_insn_bb): Declare new function.
14291         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
14292         with no successors that is the successor of the ENTRY_BLOCK.
14293         Continue from the top after removing an empty fallthrough block.
14294         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
14295         of next_nonnote_insn.
14296
14297 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14298
14299         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
14300
14301 2009-07-25  Martin Jambor  <mjambor@suse.cz>
14302
14303         * c-common.c (c_common_attribute_table): New element for noclone.
14304         (handle_noclone_attribute): New function. Forward-declare.
14305         * tree-inline.c (tree_versionable_function_p): Check for noclone
14306         attribute.
14307         * doc/extend.texi (Labels as Values): Document need for noclone.
14308         (Function Attributes): Document noclone attribute.
14309
14310 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
14311
14312         PR rtl-optimization/34999
14313         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
14314         and dw_fde_switched_cold_to_hot fields.
14315         (output_cfi_p): New function.
14316         (output_call_frame_info): If fde->dw_fde_switched_sections,
14317         output 2 FDEs instead of one with corrupted header.
14318         (dwarf2out_do_cfi_startproc): New function.
14319         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
14320         and fde->dw_fde_switched_cold_to_hot.
14321         (dwarf2out_switch_text_section): Compute
14322         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
14323         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
14324         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
14325         Otherwise, compute fde->dw_fde_switch_cfi.
14326
14327 2009-07-24  Cary Coutant  <ccoutant@google.com>
14328
14329         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
14330
14331 2009-07-24  Cary Coutant  <ccoutant@google.com>
14332
14333         * cfghooks.c (split_block): Copy discriminator to new block.
14334         * tree-cfg.c (assign_discriminator): Check location of last
14335         instruction in block as well as first.
14336
14337 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
14338
14339         * config/i386/linux.c: Use fputs or putc instead of fprintf
14340         where appropriate.
14341         * config/i386/gas.h: Ditto.
14342         * config/i386/x86-64.h: Ditto.
14343         * config/i386/att.h: Ditto.
14344
14345 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14346
14347         * expmed.c (emit_store_flag): Use a recursive call to optimize the
14348         xor case.
14349
14350 2009-07-24  Martin Jambor  <mjambor@suse.cz>
14351
14352         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
14353         (ipa_push_func_to_list_1): Declare.
14354         (ipa_push_func_to_list): New function.
14355
14356         * ipa-prop.c (ipa_push_func_to_list_1): New function.
14357         (ipa_init_func_list): Call ipa_push_func_to_list_1.
14358         (ipa_push_func_to_list): Removed.
14359         (ipa_pop_func_from_list): Clear node_enqueued flag.
14360
14361 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14362
14363         * config/s390/s390.c (override_options): Default
14364         max-unrolled-insns to 100 for z10 tuning.
14365
14366 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
14367
14368         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
14369         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
14370         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
14371         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
14372         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
14373         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
14374         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
14375
14376 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14377
14378         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
14379         use default set in mingw32.h header.
14380         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
14381         64-bit /mingw/include path.
14382         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
14383         path.
14384
14385 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
14386
14387         PR rtl-optimization/40209
14388         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
14389
14390 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14391
14392         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
14393         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
14394         with the rest of string where appropriate.  Use fputs or putc
14395         instead of fprintf where appropriate.
14396
14397 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
14398             Pat Haugen  <pthaugen@us.ibm.com>
14399             Revital Eres <ERES@il.ibm.com>
14400
14401         * config/rs6000/vector.md: New file.  Move most of the vector
14402         expander support here from altivec.md to allow for the VSX vector
14403         unit in the future.  Add support for secondary_reload patterns.
14404         Rewrite the patterns for vector comparison, and vector comparison
14405         predicate instructions so that the RTL expresses the desired
14406         behavior, instead of using unspec.
14407
14408         * config/rs6000/constraints.md ("f" constraint): Use
14409         rs6000_constraints to hold the precalculated register class.
14410         ("d" constraint): Ditto.
14411         ("wd" constraint): New constraint for VSX.
14412         ("wf" constraint): Ditto.
14413         ("ws" constraint): Ditto.
14414         ("wa" constraint): Ditto.
14415         ("wZ" constraint): Ditto.
14416         ("j" constraint): Ditto.
14417
14418         * config/rs6000/predicates.md (vsx_register_operand): New
14419         predicate for VSX.
14420         (vfloat_operand): New predicate for vector.md.
14421         (vint_operand): Ditto.
14422         (vlogical_operand): Ditto.
14423         (easy_fp_constant): If VSX, 0.0 is an easy constant.
14424         (easy_vector_constant): Add VSX support.
14425         (altivec_indexed_or_indirect_operand): New predicate for
14426         recognizing Altivec style memory references with AND -16.
14427
14428         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
14429         for vector secondary reload support.
14430         (rs6000_vector_reg_class): Delete, replacing it with
14431         rs6000_constraints.
14432         (rs6000_vsx_reg_class): Ditto.
14433         (rs6000_constraints): New array to hold the register classes of
14434         each of the register constraints that can vary at runtime.
14435         (builtin_mode_to_type): New static array for builtin function type
14436         creation.
14437         (builtin_hash_table): New static hash table for builtin function
14438         type creation.
14439         (TARGET_SECONDARY_RELOAD): Define target hook.
14440         (TARGET_IRA_COVER_CLASSES): Ditto.
14441         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
14442         registers are 128 bits if VSX memory reference instructions are used.
14443         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
14444         unit is being used.
14445         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
14446         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
14447         Print several of the scheduling related parameters.
14448         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
14449         rs6000_constraints instead of rs6000_vector_reg_class.  Move
14450         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
14451         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
14452         Altivec.  Add VSX support.  Setup for secondary reload support on
14453         Altivec/VSX registers.
14454         (rs6000_override_options): Make power7 set the scheduling groups
14455         like the power5.  Add support for new debug switches to override
14456         the scheduling defaults.  Temporarily disable -mcpu=power7 from
14457         setting -mvsx.  Add support for debug switches -malways-hint,
14458         -msched-groups, and -malign-branch-targets.
14459         (rs6000_buitlin_conversion): Add support for returning unsigned
14460         vector conversion functions to fix regressions due to stricter
14461         type checking.
14462         (rs6000_builtin_mul_widen_even): Ditto.
14463         (rs6000_builtin_mul_widen_odd): Ditto.
14464         (rs6000_builtin_vec_perm): Ditto.
14465         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
14466         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
14467         to zero a register.
14468         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
14469         generated upstream.
14470         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
14471         VSX types for bit operations.  Changes to accomidate vector.md.
14472         (bdesc_2arg): Ditto.
14473         (bdesc_1arg): Ditto.
14474         (struct builtin_description_predicates): Rewrite predicate
14475         handling so that RTL describes the operation, instead of passing
14476         the instruction to be used as a string argument.
14477         (bdesc_altivec_preds): Ditto.
14478         (altivec_expand_predicate_builtin): Ditto.
14479         (altivec_expand_builtin): Ditto.
14480         (rs6000_expand_ternop_builtin): Use a switch instead of an if
14481         statement for vsldoi support.
14482         (altivec_expand_ld_builtin): Change to use new names from vector.md.
14483         (altivec_expand_st_builtin): Ditto.
14484         (paired_expand_builtin): Whitespace changes.
14485         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
14486         builtin_mode_to_type table for secondary reload.  Call
14487         builtin_function_type to build random builtin functions.
14488         (altivec_init_builtins): Change to use builtin_function_type to
14489         create builtin function types dynamically as we need them.
14490         (builtin_hash_function): New support for hashing the tree types
14491         for builtin function as we need it, rather than trying to build
14492         all of the trees that we need.  Add initial preliminary VSX support.
14493         (builtin_function_type): Ditto.
14494         (builtin_function_eq): Ditto.
14495         (builtin_hash_struct): Ditto.
14496         (rs6000_init_builtins): Ditto.
14497         (rs6000_common_init_builtins): Ditto.
14498         (altivec_init_builtins): Ditto.
14499         (rs6000_common_init_builtins): Ditto.
14500         (enum reload_reg_type): New enum for simplifing reg classes.
14501         (rs6000_reload_register_type): Simplify register classes into GPR,
14502         Vector, and other registers.  Altivec and VSX addresses in reload.
14503         (rs6000_secondary_reload_inner): Ditto.
14504         (rs6000_ira_cover_classes): New target hook, that returns the
14505         appropriate cover classes, based on -mvsx being used or not.
14506         (rs6000_secondary_reload_class): Add VSX support.
14507         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
14508         (get_vsel_insn): Ditto.
14509         (rs6000_emit_vector_compare): Rewrite vector conditional support
14510         so that where we can, we use RTL operators, instead of blindly use
14511         UNSPEC.
14512         (rs6000_emit_vector_select): Ditto.
14513         (rs6000_emit_vector_cond_expr): Ditto.
14514         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
14515         (create_TOC_reference): Add -mdebug=addr support.
14516         (emit_frame_save): VSX loads/stores need register indexed addressing.
14517
14518         * config/rs6000/rs6000.md: Include vector.md.
14519
14520         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
14521
14522         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14523         support for V2DI, V2DF in logical, permute, select operations.
14524
14525         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
14526         switch for vsx/power7.
14527         (-mvsx-scalar-memory): Ditto.
14528         (-mvsx-align-128): Ditto.
14529         (-mallow-movmisalign): Ditto.
14530         (-mallow-df-permute): Ditto.
14531         (-msched-groups): Ditto.
14532         (-malways-hint): Ditto.
14533         (-malign-branch-targets): Ditto.
14534
14535         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
14536         hook instead.
14537         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
14538         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
14539         (rs6000_vector_reg_class): Delete.
14540         (rs6000_vsx_reg_class): Ditto.
14541         (enum rs6000_reg_class_enum): New enum for the constraints that
14542         vary based on target switches.
14543         (rs6000_constraints): New array to hold the register class for all
14544         of the register constraints that vary based on the switches used.
14545         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
14546         (enum rs6000_builtins): Add unsigned varients for the builtin
14547         declarations returned by target hooks for expanding multiplies,
14548         select, and permute operations.  Add VSX builtins.
14549         (enum rs6000_builtin_type_index): Add entries for VSX.
14550         (V2DI_type_node): Ditto.
14551         (V2DF_type_node): Ditto.
14552         (unsigned_V2DI_type_node): Ditto.
14553         (bool_long_type_node): Ditto.
14554         (intDI_type_internal_node): Ditto.
14555         (uintDI_type_internal_node): Ditto.
14556         (double_type_internal_node): Ditto.
14557
14558         * config/rs6000/altivec.md (whole file): Move all expanders to
14559         vector.md from altivec.md.  Rename insn matching functions to be
14560         altivec_foo.
14561         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
14562         (altivec_vcmp*): Ditto.
14563         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
14564         (VM): New iterator for moves that includes the VSX types.
14565         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
14566         (altivec_vperm_<mode>_uns): New, for unsigned types.
14567         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
14568         (altivec_eq<mode>): Ditto.
14569         (altivec_gt<mode>): Ditto.
14570         (altivec_gtu<mode>): Ditto.
14571         (altivec_eqv4sf): Ditto.
14572         (altivec_gev4sf): Ditto.
14573         (altivec_gtv4sf): Ditto.
14574         (altivec_vcmpbfp_p): Ditto.
14575
14576 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
14577
14578         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
14579         unsigned HWI.
14580
14581 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14582
14583         PR target/40832
14584         * config/i386/i386.c (output_387_ffreep): Rewrite to use
14585         ASM_SHORT instead of .word.
14586         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
14587         instead of .word in asm template.
14588
14589 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
14590
14591         PR target/37488
14592         * ira-lives.c (bb_has_abnormal_call_pred): New function.
14593         (process_bb_node_lives): Use it.
14594
14595         * ira.c (setup_cover_and_important_classes): Don't setup
14596         ira_important_class_nums.  Add cover classes to the end of
14597         important classes.
14598         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
14599         New.
14600         (find_reg_class_closure): Use reorder_important_classes.
14601
14602         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
14603
14604         * config/i386/i386.c (i386_ira_cover_classes): New function.
14605         (TARGET_IRA_COVER_CLASSES): Redefine.
14606
14607         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
14608         importance of order of cover classes in the array.
14609
14610 2009-07-22  Diego Novillo  <dnovillo@google.com>
14611
14612         * tree-pass.h (TDF_EH): Define.
14613         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14614         contains TDF_EH, print the EH region number holding GS.
14615         * tree-dump.c (dump_options): Add "eh".
14616         * doc/invoke.texi: Document it.
14617
14618 2009-07-22  Doug Kwan  <dougkwan@google.com>
14619
14620         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
14621
14622 2009-07-22  Michael Matz  <matz@suse.de>
14623
14624         PR tree-optimization/35229
14625         PR tree-optimization/39300
14626
14627         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
14628         (inhibit_phi_insertion): New function.
14629         (insert_into_preds_of_block): Call it for REFERENCEs.
14630         (init_pre): Initialize and finalize scalar evolutions.
14631         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
14632
14633 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
14634
14635         * config/i386/predicates.md (zero_extended_scalar_load_operand):
14636         Use CONST_VECTOR_NUNITS to determine number of elements.
14637
14638 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
14639
14640         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
14641         (U, W): Constraints are now deprecated and will be removed if we
14642         run out of letters.
14643         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
14644         the file.
14645         ("prefetch"): Add the stcmh instruction for prefetching.
14646         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
14647         changes.
14648         (s390_short_displacement): Return always true if compiling for
14649         machines not providing the long displacement facility.
14650         (s390_mem_constraint): Support the new constraint letter Z.
14651         (s390_check_qrst_address): New function.
14652
14653 2009-07-21  DJ Delorie  <dj@redhat.com>
14654
14655         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
14656         alone too.
14657
14658 2009-07-21  Jason Merrill  <jason@redhat.com>
14659
14660         * c-common.c (max_tinst_depth): Increase default to 1024.
14661
14662 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14663
14664         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
14665         (vec_unpacku_float_lo_v4si): Ditto.
14666
14667 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14668
14669         PR target/40811
14670         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
14671         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
14672         (builtin_description): Add __builtin_ia32_cvtudq2ps.
14673         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
14674
14675 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
14676
14677         PR tree-optimization/40813
14678         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
14679         it.
14680
14681 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14682
14683         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
14684         with a NOP_EXPR if needed.
14685
14686 2009-07-21  Paul Brook <paul@codesourcery.com>
14687
14688         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
14689         Terminate debug dump with newline.
14690
14691 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14692
14693         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
14694         Cast "1" to unsigned HOST_WIDE_INT.
14695         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
14696         deposit length to the maximum length - lsb.  Extend length if
14697         HOST_BITS_PER_WIDE_INT is 32.
14698
14699 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
14700
14701         * cgraph.h (constant_pool_htab): New function.
14702         (constant_descriptor_tree): Move from varasm.c.
14703         * varasm.c (constant_pool_htab): New function.
14704         (constant_descriptor_tree): Move to cgraph.h.
14705
14706 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
14707
14708         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
14709
14710 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
14711
14712         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
14713         $(VARRAY_H).
14714
14715 2009-07-20  Xinliang David Li  <davidxl@google.com>
14716
14717         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
14718
14719 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
14720
14721         * config/mips/mips.md (move_type): Add arith.
14722         (type): Handle arith.
14723         (zero_extendsidi2): Rename this into ...
14724         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
14725         (zero_extendsidi2): New expander.
14726         (*zero_extendsidi2_dext): New pattern.
14727
14728 2009-07-20  Nick Clifton  <nickc@redhat.com>
14729
14730         * config.gcc (mips64-*-*): Add definition of tm_defines in order
14731         to set MIPS_ABI_DEFAULT.
14732         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
14733
14734 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
14735
14736         * tree-object-size.c (addr_object_size): Handle unions with
14737         array in it as last field of structs in __bos (, 1) as __bos (, 0).
14738
14739         PR tree-optimization/40792
14740         * tree.c (build_function_type_skip_args): Remove bogus assert.
14741
14742 2009-07-20  Jan Hubicka  <jh@suse.cz>
14743             Martin Jambor  <mjambor@suse.cz>
14744
14745         * cgraph.h (combined_args_to_skip): New field.
14746         * cgraph.c (cgraph_create_virtual_clone): Properly handle
14747         combined_args_to_skip and args_to_skip.
14748         * tree-inline.c (update_clone_info): New function.
14749         (tree_function_versioning): Call update_clone_info.
14750         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
14751         functions.
14752         (cgraph_materialize_all_clones): More extensive dumping, working
14753         with combined_args_to_skip rather than args_to_skip.
14754
14755 2009-07-20  Ira Rosen  <irar@il.ibm.com>
14756
14757         * tree-vectorizer.h (vectorizable_condition): Add parameters.
14758         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
14759         (get_initial_def_for_reduction): Likewise.
14760         (vectorizable_reduction): Skip the check of first operand in case
14761         of COND_EXPR. Add check that it is outer loop vectorization if
14762         nested cycle was detected. Call vectorizable_condition() for
14763         COND_EXPR. If reduction epilogue cannot be created do not fail for
14764         nested cycles (if it is not double reduction). Assert that there
14765         is only one type in the loop in case of COND_EXPR. Call
14766         vectorizable_condition() to vectorize COND_EXPR.
14767         * tree-vect-stmts.c (vectorizable_condition): Update comment.
14768         Add parameters. Allow nested cycles if called from
14769         vectorizable_reduction(). Use reduction vector variable if provided.
14770         (vect_analyze_stmt): Call vectorizable_reduction() before
14771         vectorizable_condition().
14772         (vect_transform_stmt): Update call to vectorizable_condition().
14773
14774 2009-07-20  Christian Bruel  <christian.bruel@st.com>
14775
14776         * config/sh/sh.opt (-mfmovd): Resurrect and document.
14777         * doc/invoke.texi (-mfmovd): Likewise.
14778         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
14779
14780 2009-07-20  Jan Hubicka  <jh@suse.cz>
14781
14782         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
14783         when handling SSA name.
14784
14785 2009-07-19  Jan Hubicka  <jh@suse.cz>
14786
14787         PR tree-optimization/40676
14788         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
14789         virtual PHIs in empty BBs.
14790
14791 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14792
14793         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
14794         re-expanded the compound use gen_lowpart instead to convert to the
14795         desired mode.
14796
14797 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14798
14799         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
14800         OUTER_CONST arguments.
14801         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
14802         the new wider mode will be masked off.
14803         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
14804
14805 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14806
14807         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
14808         high-order bits are zero.
14809
14810 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14811
14812         * combine.c (simplify_shift_const_1): Split code to determine
14813         shift_mode into ...
14814         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
14815         new bits shifted in are identical to the old sign bit.
14816
14817 2009-07-18  Richard Guenther  <rguenther@suse.de>
14818
14819         PR c/40787
14820         * gimplify.c (gimplify_call_expr): Reject code using results from
14821         functions returning void.
14822
14823 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14824
14825         * doc/md.texi: Document the new PowerPC "es" constraint.
14826         Document that "m" can include automodified addresses on this target,
14827         and explain how %U must be used.  Extend the "Q" and "Z" documentation
14828         to suggest "es" as well as "m".
14829         * config/rs6000/constraints.md (es): New memory constraint.
14830         (Q, Z): Update strings to match new documentation.
14831
14832 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14833
14834         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
14835         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
14836         * config/rs6000/predicates.md (volatile_mem_operand): Use
14837         offsettable_nonstrict_memref_p.
14838         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
14839         (*floatunssidf2_internal): Likewise.
14840         (*fix_truncdfsi2_internal): Likewise.
14841         (*fix_trunctfsi2_internal): Likewise.
14842
14843 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
14844
14845         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
14846         atmega32u2 devices.
14847         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14848
14849 2009-07-17  Richard Guenther  <rguenther@suse.de>
14850
14851         PR c/40401
14852         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
14853         (pass_warn_unused_result): Likewise.
14854         (TODO_set_props): Remove.
14855         * omp-low.c (diagnose_omp_structured_block_errors): Change to
14856         run as a pass.
14857         (pass_diagnose_omp_blocks): Define.
14858         * c-decl.c (pop_file_scope): Do not finalize the CU here.
14859         (c_gimple_diagnostics_recursively): Remove.
14860         (finish_function): Do not call it.
14861         (c_write_global_declarations): Continue after errors.
14862         Finalize the CU here.
14863         * c-gimplify.c (c_genericize): Do not gimplify here.
14864         * c-common.c (c_warn_unused_result): Move ...
14865         * tree-cfg.c (do_warn_unused_result): ... here.
14866         (run_warn_unused_result): New function.
14867         (gate_warn_unused_result): New function.
14868         (pass_warn_unused_result): New pass.
14869         * c-common.h (c_warn_unused_result): Remove.
14870         * flags.h (flag_warn_unused_result): Declare.
14871         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
14872         * opts.c (flag_warn_unused_result): Initialize to false.
14873         * toplev.c (compile_file): Add comment.
14874         * omp-low.c (create_omp_child_function): Do not register
14875         the function with the frontend.
14876         (diagnose_omp_structured_block_errors): Prepare to be
14877         called as optimization pass.
14878         (gate_diagnose_omp_blocks): New function.
14879         (pass_diagnose_omp_blocks): New pass.
14880         * cgraph.h (cgraph_optimize): Remove.
14881         (cgraph_analyze_function): Likewise.
14882         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
14883         * cgraphunit.c (cgraph_lower_function): Lower nested functions
14884         before their parents here.
14885         (cgraph_finalize_function): Not here.
14886         (cgraph_analyze_function): Gimplify functions here.
14887         (cgraph_finalize_compilation_unit): Continue after errors.
14888         Optimize the callgraph from here.
14889         (cgraph_optimize): Make static.
14890         * langhooks.c (write_global_declarations): Finalize the CU.
14891         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
14892         (gimplify_function_tree): Assert we gimplify only once.
14893         Set PROP_gimple_any property.
14894         * tree-nested.c (gimplify_all_functions): New function.
14895         (lower_nested_functions): Gimplify all nested functions.
14896         * gimple.h (diagnose_omp_structured_block_errors): Remove.
14897         * passes.c (init_optimization_passes): Add pass_warn_unused_result
14898         and pass_diagnose_omp_blocks after gimplification.  Do not
14899         set TODO_set_props on all_lowering_passes.
14900         (execute_one_pass): Do not handle TODO_set_props.
14901         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
14902         (gimplify.o): Add tree-pass.h dependency.
14903         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
14904         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
14905         (unsave_r): Likewise.
14906         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
14907         temporary variable.
14908
14909 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
14910
14911         * doc/service.texi (Service): Restore previously removed link,
14912         which isn't broken after all.
14913
14914 2009-07-17  Richard Guenther  <rguenther@suse.de>
14915
14916         PR tree-optimization/40321
14917         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
14918         PHI nodes to the maximal set.
14919         (make_values_for_phi): Add PHI arguments to the maximal set.
14920         (execute_pre): Dump PHI_GEN and the maximal set.
14921
14922 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
14923
14924         PR c++/40780
14925         * gimplify.c (gimplify_conversion): Don't change non-conversions into
14926         VIEW_CONVERT_EXPR.
14927
14928 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
14929
14930         * doc/extend.texi (Nested Functions): Replace broken link with
14931         textual reference.
14932         * doc/service.texi (Service): Remove broken link.
14933
14934 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
14935
14936         PR bootstrap/40781
14937         * builtins.c (expand_builtin_memcmp): Use loc instead of
14938         EXPR_LOCATION (exp).
14939         (expand_builtin_strncmp): Likewise.
14940
14941 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
14942             Manuel López-Ibáñez  <manu@gcc.gnu.org>
14943
14944         PR 40435
14945         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
14946         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
14947         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
14948         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
14949         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
14950         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
14951         tree-inline.c, c-common.c, c-common.h, gimple.c,
14952         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
14953         convert.c: Add location argument to fold_{unary,binary,ternary},
14954         fold_build[123], build_call_expr, build_size_arg,
14955         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
14956         fold_build1_initializer, fold_build2_initializer,
14957         fold_build3_initializer, fold_build_call_array,
14958         fold_build_call_array_initializer, fold_single_bit_test,
14959         omit_one_operand, omit_two_operands, invert_truthvalue,
14960         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
14961         combine_comparisons, fold_builtin_*, fold_call_expr,
14962         build_range_check, maybe_fold_offset_to_address, round_up,
14963         round_down.
14964
14965 2009-07-16  Jason Merrill  <jason@redhat.com>
14966
14967         PR libstdc++/37907
14968         * c-common.c (c_common_reswords): Add __is_standard_layout
14969         and __is_trivial.
14970         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
14971         * doc/implement-cxx.texi: New.
14972         * doc/gcc.texi: Include it.
14973
14974 2009-07-16  DJ Delorie  <dj@redhat.com>
14975
14976         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
14977         compares that may be indirectly affected by previous instructions.
14978
14979 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14980
14981         * builtins.c (do_mpc_arg2): New.
14982         (fold_builtin_2): Fold builtin cpow.
14983         * real.h (HAVE_mpc_pow): New.
14984
14985 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
14986
14987         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
14988         comparison to skip unprofitable schedule
14989
14990 2009-07-16  Simon Baldwin  <simonb@google.com>
14991
14992         * gcc.c (option_map): New flag -no-canonical-prefixes.
14993         * (display_help): Print help text for new flag.
14994         * (process_command): Move options translation and language specifics
14995         and handle new flag early.  Use it to set a function pointer to a
14996         prefix builder.  Replace make_relative_prefix calls with calls to
14997         the function pointed to.  Ignore new flag in regular options handling.
14998         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
14999
15000 2009-07-15  DJ Delorie  <dj@redhat.com>
15001
15002         * config/mep/mep.md (sibcall_internal): Change register to avoid
15003         argument registers.
15004         (sibcall_value_internal): Likewise.
15005
15006 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
15007
15008         PR rtl-optimization/40710
15009         * resource.c (mark_target_live_regs): Reset DF problem to LR.
15010
15011 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
15012
15013         * config/mips/mips.md (*extenddi_truncate<mode>,
15014         *extendsi_truncate<mode>): Change type attribute to move_type
15015         with shift_shift.  Split out code handling exts from here ...
15016         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
15017         pattern.
15018         (*extendhi_truncateqi): Change type attribute to move_type with
15019         shift_shift.  Split out code handling exts from here ...
15020         (*extendhi_truncateqi_exts): ... to this new pattern.
15021
15022 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
15023
15024         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
15025         instead of "and" with inverted sign bit mask value.  Use
15026         "nonimmediate_operand" for operand 1 and operand 2 predicate.
15027         Allocate registers only for operand 4 and operand 5.
15028
15029 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
15030
15031         PR middle-end/40747
15032         * fold-const.c (fold_cond_expr_with_comparison): When folding
15033         < and <= to MIN, make sure the MIN uses the same type as the
15034         comparison's operands.
15035
15036 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
15037
15038         * arm.md (ior_xor): New code iterator.
15039         (split for ior/xor with shift and zero-extend): New split pattern.
15040         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
15041
15042 2009-07-15  Richard Guenther  <rguenther@suse.de>
15043
15044         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
15045         offset member.
15046
15047 2009-07-15  Richard Guenther  <rguenther@suse.de>
15048
15049         PR middle-end/40753
15050         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
15051
15052 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15053
15054         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
15055         handle 2.6.30 kernel.
15056
15057 2009-07-15  DJ Delorie  <dj@redhat.com>
15058
15059         * config/mep/mep.md (sibcall_internal): Change register to allow
15060         for 24-bit addresses.
15061         (sibcall_value_internal): Likewise.
15062
15063 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15064
15065         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
15066         that are enabled/disabled by the flags introduced by a previous patch.
15067
15068 2009-07-14  DJ Delorie  <dj@redhat.com>
15069
15070         * config/mep/mep.md (sibcall_internal): Include non-toggling
15071         non-jmp case.
15072         (sibcall_value_internal): Likewise.
15073
15074 2009-07-14  Taras Glek  <tglek@mozilla.com>
15075             Rafael Espindola  <espindola@google.com>
15076
15077         * doc/sourcebuild.texi: Document install-plugin target.
15078         * configure.ac: Added install-plugin target to language makefiles.
15079         * configure: Regenerate.
15080         * Makefile.in (install-plugin): Install more headers,
15081         depend on lang.install-plugin.
15082
15083 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15084
15085         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
15086         translation.
15087
15088 2009-07-14  DJ Delorie  <dj@redhat.com>
15089
15090         * config/mep/mep.c (mep_vliw_jmp_match): New function.
15091         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
15092         * config/mep/mep.md (sibcall_internal): Change test from
15093         mep_vliw_mode_match to mep_vliw_jmp_match.
15094         (sibcall_value_internal): Likewise.
15095
15096 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
15097
15098         * config/i386/sse.md (copysign<mode>3): New expander.
15099         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
15100         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
15101         Use ix86_build_const_vector.
15102         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
15103         IX86_BUILTIN_CPYSGNPD.
15104         (builtin_description): Add __builtin_ia32_copysignps and
15105         __builtin_ia32_copysignpd.
15106         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
15107         and BUILT_IN_COPYSIGNF.
15108
15109 2009-07-13  Jason Merrill  <jason@redhat.com>
15110
15111         * builtins.c (can_trust_pointer_alignment): New fn.
15112         (get_pointer_alignment): Factor it out from here.
15113         * tree.h: Declare it.
15114
15115 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
15116
15117         * config/rs6000/predicates.md (offsettable_mem_operand): Test
15118         RTX_AUTOINC class.
15119
15120 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
15121
15122         PR debug/40705
15123         PR c++/403057
15124         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
15125
15126 2009-07-14  Richard Guenther  <rguenther@suse.de>
15127             Andrey Belevantsev <abel@ispras.ru>
15128
15129         PR middle-end/40745
15130         * cfgexpand.c (partition_stack_vars): Do not bother to update
15131         alias information when not optimizing.
15132
15133 2009-07-14  Richard Guenther  <rguenther@suse.de>
15134             Andrey Belevantsev <abel@ispras.ru>
15135
15136         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
15137         (pt_solution_set): Likewise.
15138         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
15139         * tree-ssa-structalias.c (pt_solution_set): New function.
15140         * final.c (rest_of_clean_state): Free SSA data structures.
15141         * print-rtl.c (print_decl_name): Remove.
15142         (print_mem_expr): Implement in terms of print_generic_expr.
15143         * alias.c (ao_ref_from_mem): New function.
15144         (rtx_refs_may_alias_p): Likewise.
15145         (true_dependence): Query alias-export info.
15146         (canon_true_dependence): Likewise.
15147         (write_dependence_p): Likewise.
15148         * tree-dfa.c (get_ref_base_and_extent): For void types leave
15149         size unknown.
15150         * emit-rtl.c (component_ref_for_mem_expr): Remove.
15151         (mem_expr_equal_p): Use operand_equal_p.
15152         (set_mem_attributes_minus_bitpos): Do not use
15153         component_ref_for_mem_expr.
15154         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
15155         (update_alias_info_with_stack_vars): Likewise.
15156         (partition_stack_vars): Call update_alias_info_with_stack_vars.
15157         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
15158         explicitly nor clear stmt operands.
15159         Free the decl-to-pointer map.
15160         * tree-optimize.c (execute_free_datastructures): Do not free
15161         SSA data structures here.
15162         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
15163         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
15164         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
15165         dependencies.
15166         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
15167
15168 2009-07-13  DJ Delorie  <dj@redhat.com>
15169
15170         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
15171         unrolling at the right iteration count.
15172
15173         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
15174         calculations.
15175
15176 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15177
15178         * haifa-sched.c (rank_for_schedule): Introduced flags to
15179         enable/disable individual scheduling heuristics.
15180         * common.opt: Introduced flags to enable/disable individual
15181         heuristics in the scheduler.
15182         * doc/invoke.texi: Introduced flags to enable/disable individual
15183         heuristics in the scheduler.
15184
15185 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
15186
15187         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
15188         config/i386/mingw-tls.c.
15189         * config/i386/mingw-tls.c: Removed.
15190
15191 2009-07-13  Ira Rosen  <irar@il.ibm.com>
15192
15193         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
15194         checks access only relevant statements.
15195         (vectorizable_reduction): Likewise.
15196
15197 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
15198
15199         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
15200         just for 32-bit case.
15201
15202 2009-07-12  Jan Hubicka  <jh@suse.cz>
15203
15204         PR tree-optimization/40585
15205         * except.c (expand_resx_expr): When there already is resume
15206         instruction, produce linked list.
15207         (build_post_landing_pads): Assert that resume is empty.
15208         (connect_post_landing_pads): Handle resume lists.
15209         (dump_eh_tree): Dump resume list.
15210
15211 2009-07-12  Ira Rosen  <irar@il.ibm.com>
15212
15213         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
15214         with additional argument.
15215         * tree-vectorizer.h (enum vect_def_type): Add
15216         vect_double_reduction_def.
15217         (vect_is_simple_reduction): Add argument.
15218         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
15219         indentation.
15220         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
15221         vect_is_simple_reduction with additional argument.
15222         (vect_analyze_loop_operations): Handle exit phi nodes in case of
15223         double reduction.
15224         (reduction_code_for_scalar_code): Handle additional codes by
15225         returning ERROR_MARK for them. Fix comment and indentation.
15226         (vect_is_simple_reduction): Fix comment, add argument to specify
15227         double reduction. Detect double reduction.
15228         (get_initial_def_for_induction): Fix indentation.
15229         (get_initial_def_for_reduction): Fix comment and indentation.
15230         Handle double reduction. Create initial definitions that do not
15231         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
15232         (vect_create_epilog_for_reduction): Fix comment, add argument to
15233         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
15234         epilogue result extraction. Create double reduction phi node and
15235         replace relevant uses.
15236         (vectorizable_reduction): Call vect_is_simple_reduction with
15237         additional argument. Fix indentation. Update epilogue code treatment
15238         according to the changes in reduction_code_for_scalar_code. Check
15239         for double reduction. Call vect_create_epilog_for_reduction with
15240         additional argument.
15241         * tree-vect-stmts.c (process_use): Handle double reduction, update
15242         documentation.
15243         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
15244         (vect_get_vec_def_for_operand): Likewise.
15245
15246 2009-07-12  Danny Smith  <dansmister@gmail.com>
15247
15248         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
15249         dllexport if !TREE_PUBLIC.
15250         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
15251
15252 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
15253
15254         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
15255         (avr_extra_arch_macro) Remove declatation.
15256         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
15257         (avr_extra_arch_macro) Declare as static.
15258         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
15259
15260 2009-07-11  Jan Hubicka  <jh@suse.cz>
15261
15262         PR middle-end/48388
15263         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
15264
15265 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
15266
15267         PR debug/40713
15268         * dwarf2out.c (dw_fde_struct): Add in_std_section and
15269         cold_in_std_section bits.
15270         (dwarf2out_begin_prologue): Initialize them.
15271         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
15272         if already covered by text_section or cold_text_section range.
15273
15274         PR rtl-optimization/40667
15275         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
15276         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
15277         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
15278         * config/i386/i386.c (ix86_minimum_alignment): New function.
15279         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
15280         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
15281         * emit-rtl.c (gen_reg_rtx): Likewise.
15282         * function.c (assign_parms): Likewise.  If nominal_type needs
15283         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
15284         rather than passed_type's alignment.
15285
15286         PR target/40668
15287         * function.c (assign_parm_setup_stack): Adjust
15288         MEM_OFFSET (data->stack_parm) if promoted_mode is different
15289         from nominal_mode on big endian.
15290
15291 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
15292
15293         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
15294
15295 2009-07-10  DJ Delorie  <dj@redhat.com>
15296
15297         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
15298
15299 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
15300
15301         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
15302         attribute.
15303         (thumb2_cbnz): Likewise.
15304
15305 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
15306
15307         PR target/39079
15308         * config.gcc (supported_defaults): Add synci.
15309         (with_synci): Add validation.
15310         (all_defaults): Add synci.
15311         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
15312         ISA_HAS_SYNCI.
15313         (synci): Same.
15314         * config/mips/mips.opt (msynci): New option.
15315         * config/mips/mips.c (mips_override_options): Warn on use of
15316         -msynci for targets that do now support it.
15317         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
15318         msynci.
15319         * gcc/doc/invoke.texi (-msynci): Document the new option.
15320         * doc/install.texi (--with-synci): Document the new option.
15321
15322 2009-07-10  Richard Guenther  <rguenther@suse.de>
15323
15324         PR tree-optimization/40496
15325         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
15326         the PHI result with a compatible type.
15327
15328 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15329
15330         PR 25509
15331         PR 40614
15332         * c.opt (Wunused-result): New.
15333         * doc/invoke.texi: Document it.
15334         * c-common.c (c_warn_unused_result): Use it.
15335
15336 2009-07-09  DJ Delorie  <dj@redhat.com>
15337
15338         * targhooks.c (default_target_can_inline_p): Rename from
15339         default_target_option_can_inline_p.
15340         * targhooks.h (default_target_can_inline_p): Likewise.
15341         * target-def.h (TARGET_CAN_INLINE_P): Rename from
15342         TARGET_OPTION_CAN_INLINE_P.
15343         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
15344         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
15345         (mep_target_can_inline_p): Rename from
15346         mep_target_option_can_inline_p.
15347
15348         PR target/40626
15349         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
15350         registers used to pass vectors.
15351
15352         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
15353
15354 2009-07-09  Tom Tromey  <tromey@redhat.com>
15355
15356         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
15357         * config/mmix/mmix.c: Include dwarf2.h.
15358         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
15359         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
15360         * config/sh/sh.c: Include dwarf2.h.
15361         * config/i386/i386.c: Include dwarf2.h.
15362         * Makefile.in (DWARF2_H): Remove 'elf'.
15363         * except.c: Include dwarf2.h.
15364         * unwind-dw2.c: Include dwarf2.h.
15365         * dwarf2out.c: Include dwarf2.h.
15366         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
15367         * unwind-dw2-fde.c: Include dwarf2.h.
15368         * dwarf2asm.c: Include dwarf2.h.
15369
15370 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15371
15372         * haifa-sched.c (insn_finishes_cycle_p): New static function.
15373         (max_issue): Use it.
15374         * sched-int.h (struct sched_info: insn_finishes_block_p): New
15375         scheduler hook.
15376         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
15377         (region_sched_info): Update.
15378         * sched-ebb.c (ebb_sched_info): Update.
15379         * modulo-sched.c (sms_sched_info): Update.
15380         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
15381
15382 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15383
15384         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
15385
15386 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
15387
15388         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
15389
15390 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
15391
15392         PR middle-end/40692
15393         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
15394         arg1 with arg01 if arg1 is already INTEGER_CST.
15395
15396 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15397
15398         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
15399         Transform (and (truncate)) into (truncate (and)).
15400
15401 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15402
15403         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
15404         creating LHS paradoxical subregs.  Fix surrounding returns to
15405         use NULL_RTX rather than 0.
15406
15407 2009-07-08  DJ Delorie  <dj@redhat.com>
15408
15409         * config/mep/mep.c (mep_option_can_inline_p): New.
15410         (TARGET_OPTION_CAN_INLINE_P): Define.
15411
15412 2009-07-08  Mark Wielaard  <mjw@redhat.com>
15413
15414         PR debug/40659
15415         * dwarf2out.c (add_data_member_location_attribute): When we have
15416         only a constant offset don't emit a new location description using
15417         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
15418         dwarf_version > 2.
15419
15420 2009-07-08  Richard Henderson  <rth@redhat.com>
15421
15422         PR target/38900
15423         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
15424         (enum reg_class): Add CLOBBERED_REGS.
15425         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
15426         * config/i386/i386.c (ix86_conditional_register_usage): Moved
15427         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
15428         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
15429         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
15430         force 64-bit sibcalls into R11.
15431         * config/i386/constraints.md (U): New constraint.
15432         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
15433         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
15434         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
15435
15436 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
15437
15438         * basic-block.h (dump_regset, debug_regset): Remove duplicate
15439         prototypes.
15440         * c-objc-common.h (c_initialize_diagnostics): Ditto.
15441         * ebitmap.h (dump_ebitmap): Ditto.
15442         * optabs.h (optab_libfunc): Ditto.
15443         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
15444         * tree-flow.h (vect_can_force_dr_alignment_p,
15445         get_vectype_for_scalar_type): Ditto.
15446         (vectorize_loops): Move prototype to ...
15447         * tree-vectorizer.h: ... here. Also, adjust comment.
15448         (vect_set_verbosity_level): Remove duplicate prototype.
15449         * tree-ssa-loop.c: Include tree-vectorizer.h.
15450         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
15451
15452 2009-07-08  Nick Clifton  <nickc@redhat.com>
15453
15454         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
15455         forward slash.
15456
15457 2009-07-08  DJ Delorie  <dj@redhat.com>
15458
15459         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
15460         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
15461         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
15462         written to.
15463         * config/mep/intrinsics.md: Regenerated.
15464         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
15465         registers when asm() or calls are detected.
15466
15467 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15468
15469         PR c++/31246
15470         * gimplify.c (gimplify_expr): Propagate no_warning flag when
15471         gimplifying.
15472         * gimple (gimple_build_call_from_tree): Likewise.
15473         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
15474         no_warning flag before warning.
15475
15476 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15477
15478         * tree.c (set_expr_locus): Remove.
15479         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
15480         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
15481         EXPR_LOCATION.
15482         * gimplify.c (internal_get_tmp_var): Likewise.
15483         (gimplify_call_expr): Likewise.
15484         (gimplify_one_sizepos): Likewise.
15485
15486 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
15487
15488         PR debug/40666
15489         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
15490         to variables for debugging purposes.
15491
15492 2009-06-23  Mark Loeser  <mark@halcy0n.com>
15493
15494         PR build/40010
15495         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
15496
15497 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15498
15499         * pretty-print.c (pp_base_format): Remove %J.
15500         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15501         gcc_cxxdiag_char_table): Likewise.
15502         (init_dynamic_diag_info): Likewise.
15503
15504 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15505
15506         * pretty-print.c (pp_base_format): Remove %H.
15507         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15508         gcc_cxxdiag_char_table): Likewise.
15509         (init_dynamic_diag_info): Likewise.
15510         * config/mep/mep.c (mep_select_section): Likewise.
15511
15512 2009-07-07  Duncan Sands  <baldrick@free.fr>
15513
15514         * final.c (pass_clean_state): Give the pass a name.
15515         * passes.c (pass_rest_of_compilation): Likewise.
15516         * tree-optimize.c (pass_all_optimizations): Likewise.
15517
15518 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
15519
15520         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
15521         an extra 'decl' for error_at.
15522
15523 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
15524
15525         PR middle-end/40669
15526         * tree-tailcall.c (adjust_return_value_with_ops,
15527         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
15528         if it has complex or vector type.
15529
15530 2009-07-07  Olivier Hainque  <hainque@adacore.com>
15531
15532         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
15533         pthread symbols.
15534
15535 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
15536
15537         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
15538
15539 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15540
15541         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
15542         * c-decl.c: Likewise.
15543         * function.c: Likewise.
15544         * varasm.c: Likewise.
15545         * tree-ssa.c: Likewise.
15546         * c-common.c: Likewise.
15547         * tree-cfg.c: Likewise.
15548         * config/spu/spu.c: Likewise.
15549         * config/ia64/ia64.c: Likewise.
15550         * config/v850/v850.c: Likewise.
15551
15552 2009-07-06  DJ Delorie  <dj@redhat.com>
15553
15554         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
15555         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
15556         unspecified accesses to control registers.
15557         * config/mep/intrinsics.md: Regenerate.
15558         * config/mep/intrinsics.h: Regenerate.
15559         * config/mep/mep-intrin.h: Regenerate.
15560
15561 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15562
15563         * c-lex.c: Replace %H by an explicit location. Update all calls.
15564         * c-common.c: Likewise.
15565         * c-decl.c: Likewise.
15566         * c-typeck.c: Likewise.
15567         * fold-const.c: Likewise.
15568         * gimplify.c: Likewise.
15569         * stmt.c: Likewise.
15570         * tree-cfg.c: Likewise.
15571         * tree-ssa-loop-niter.c: Likewise.
15572         * tree-vrp.c: Likewise.
15573         * value-prof.c: Likewise.
15574
15575 2009-07-06  Diego Novillo  <dnovillo@google.com>
15576
15577         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
15578         if it has one.  Handle cases where VAR does not have an
15579         annotation or cfun is NULL.
15580
15581 2009-07-06  Diego Novillo  <dnovillo@google.com>
15582
15583         * tree.c: Include debug.h.
15584         (initialize_tree_contains_struct): New.
15585         (init_ttree): Call it.
15586         (tree_node_structure_for_code): Factor out of ...
15587         (tree_node_structure): ... here.
15588         * treestruct.def (TS_PHI_NODE): Remove.
15589         (TS_GIMPLE_STATEMENT): Remove.
15590
15591 2009-07-06  Diego Novillo  <dnovillo@google.com>
15592
15593         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
15594         (debug_tree_chain): Handle cycles.
15595
15596 2009-07-06  Nick Clifton  <nickc@redhat.com>
15597             DJ Delorie  <dj@redhat.com>
15598
15599         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15600         __FMOVD_ENABLED__ is defined.
15601         * config/sh/sh.h
15602         (TARGET_FMOVD): Provide a default definition.
15603         (MASK_FMOVD): Likewise.
15604         (TARGET_CPU_CPP_BUILTINS): Define
15605         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15606         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15607         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
15608         (split for DF load from memory into register): Also handle
15609         MEMs which consist of REG+DISP addressing.
15610         (split for DF store from register to memory): Likewise.
15611         (movsf_ie): Always use single fp_mode.
15612         * config/sh/sh.c (sh_override_options): Do not automatically
15613         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15614         that to the -mfmovd command line switch.
15615         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15616         (fldi_ok): Always allow.
15617         * config/sh/sh.opt (mfmovd): Remove this switch.
15618         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15619
15620 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
15621             Kaz Kojima  <kkojima@gcc.gnu.org>
15622
15623         PR rtl-optimization/30807
15624         * postreload.c (reload_combine): For every new use of REG_SUM,
15625         record the use of BASE.
15626
15627 2009-07-06  Jan Hubicka  <jh@suse.cz>
15628
15629         * params.def: Revert my accidental commit at 2009-06-30.
15630
15631 2009-07-04  Ian Lance Taylor  <iant@google.com>
15632
15633         PR target/40636
15634         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
15635         EXPORTED_CONST.
15636         (mingw_format_attribute_overrides): Likewise.
15637
15638 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
15639
15640         PR debug/40596
15641         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
15642         don't check cfa.reg.  Instead of cfa.indirect use
15643         fde && fde->drap_reg != INVALID_REGNUM test.
15644
15645 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
15646
15647         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
15648
15649 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
15650
15651         PR target/40587
15652         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
15653
15654 2009-07-03  Richard Guenther  <rguenther@suse.de>
15655
15656         PR tree-optimization/40640
15657         * tree-switch-conversion.c (build_arrays): Perform arithmetic
15658         in original type.
15659
15660 2009-07-03  Jan Hubicka  <jh@suse.cz>
15661
15662         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
15663         for size, reduce amount of inlining.
15664
15665 2009-07-03  Richard Guenther  <rguenther@suse.de>
15666
15667         PR middle-end/34163
15668         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
15669         if t +- x is known to not overflow and the conversion widens the
15670         operation.
15671         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
15672
15673 2009-07-03  Jan Hubicka  <jh@suse.cz>
15674
15675         * ipa-pure-const.c (analyze): Update loop optimizer init.
15676         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
15677         try_remove_empty_loop, remove_empty_loops): Remove.
15678         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
15679         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
15680         to mark regular loops as neccesary.
15681         (degenerate_phi_p): New function.
15682         (propagate_necessity, remove_dead_phis): Use it.
15683         (forward_edge_to_pdom): Likewise.
15684         (eliminate_unnecessary_stmts): Take care to remove uses of results of
15685         virtual PHI nodes that became unreachable.
15686         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
15687         * tree-flow.h (remove_empty_loops): Remove.
15688         * passes.c (init_optimization_passes): Remove.
15689
15690 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
15691
15692         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
15693         can_create_pseudo_p.
15694         (*fix_trunc<mode>_i387_1): Ditto.
15695         (*floathi<mode>2_1): Ditto.
15696         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
15697         (*fistdi2_1): Ditto.
15698         (*fist<mode>2_1): Ditto.
15699         (frndintxf2_floor): Ditto.
15700         (*fist<mode>2_floor_1): Ditto.
15701         (frndintxf2_ceil): Ditto.
15702         (*fist<mode>2_ceil_1): Ditto.
15703         (frndintxf2_trunc): Ditto.
15704         (frndintxf2_mask_pm): Ditto.
15705         (fxam<mode>2_i387_with_temp): Ditto.
15706         * config/i386/sse.md (mulv16qi3): Ditto.
15707         (*sse2_mulv4si3): Ditto.
15708         (mulv2di3): Ditto.
15709         (sse4_2_pcmpestr): Ditto.
15710         (sse4_2_pcmpistr): Ditto.
15711
15712 2009-07-03  Jan Hubicka  <jh@suse.cz>
15713
15714         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
15715         (mark_stmt_necessary): Set it.
15716         (mark_operand_necessary): Set it.
15717         (mark_control_dependent_edges_necessary): Set it.
15718         (mark_virtual_phi_result_for_renaming): New function.
15719         (get_live_post_dom): New function.
15720         (forward_edge_to_pdom): New function.
15721         (remove_dead_stmt): Fix handling of control dependences.
15722         (tree_dce_init): Init new bitmap.
15723         (tree_dce_done): Free it.
15724
15725 2009-07-02  Richard Guenther  <rguenther@suse.de>
15726
15727         PR bootstrap/40617
15728         * tree-ssa-structalias.c (new_var_info): Initialize
15729         is_restrict_var.
15730
15731 2009-07-02  Jan Hubicka  <jh@suse.cz>
15732
15733         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
15734         local.
15735
15736 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
15737
15738         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
15739         instead of recomputing it.  Adjust calls.
15740         (emit_store_flag): Adjust recursive calls.
15741
15742 2009-07-02  Richard Guenther  <rguenther@suse.de>
15743
15744         * tree-ssa-live.c (remove_unused_locals): Do not remove
15745         heap variables.
15746         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
15747         of DECL_EXTERNAL for HEAP variables.
15748         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
15749         HEAP variables.  Do not adjust RESTRICT vars.
15750         (find_what_var_points_to): Nobody cares if something
15751         points to READONLY.
15752
15753 2009-07-02  Ben Elliston  <bje@au.ibm.com>
15754
15755         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
15756         pc_low and pc_high declarations to the top of the function.
15757
15758 2009-07-01  DJ Delorie  <dj@redhat.com>
15759
15760         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
15761         registers as fixed.
15762         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
15763         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
15764         unspecified accesses to control registers.
15765         * config/mep/intrinsics.md: Regenerate.
15766         * config/mep/intrinsics.h: Regenerate.
15767         * config/mep/mep-intrin.h: Regenerate.
15768
15769 2009-07-01  Anthony Green  <green@moxielogic.com>
15770
15771         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
15772         instruction when possible.
15773         (moxie_expand_prologue): Ditto.  Also, save an instruction and
15774         some complexity by popping off of $r12 instead of $sp.
15775         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
15776         operands.
15777
15778 2009-07-01  Richard Henderson  <rth@redhat.com>
15779
15780         PR bootstrap/40347
15781         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
15782         contained no insns, reposition note before last insn.
15783
15784 2009-07-01  Richard Henderson  <rth@redhat.com>
15785
15786         PR debug/40431
15787         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
15788         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
15789
15790 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
15791
15792         PR bootstrap/40558
15793         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
15794         darwin9 for printing reg addresses with %y.
15795
15796 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15797
15798         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
15799         truncation from operands in binary operations.
15800
15801 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15802
15803         Revert:
15804         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
15805         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
15806         subreg of op0 to the original op0.
15807
15808         * expmed.c (store_bit_field_1): Use a temporary as the destination
15809         instead of a paradoxical subreg when we need to truncate the result.
15810
15811 2009-07-01  DJ Delorie  <dj@redhat.com>
15812
15813         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
15814         names to VLIW variants.
15815         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
15816         * config/mep/intrinsics.md: Regenerate.
15817         * config/mep/intrinsics.h: Regenerate.
15818         * config/mep/mep-intrin.h: Regenerate.
15819
15820 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
15821
15822         PR debug/40462
15823         * jump.c (returnjump_p): Revert last patch.
15824         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
15825
15826 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15827
15828         PR target/40575
15829         * pa.md (casesi32p): Use jump table label to determine the offset
15830         of the jump table.
15831         (casesi64p): Likewise.
15832
15833         * pa.c (forward_branch_p): Return bool type.  Use instruction
15834         addresses when available.  Assert that INSN has a jump label.
15835         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
15836         have a jump label.
15837
15838 2009-07-01  Richard Guenther  <rguenther@suse.de>
15839
15840         PR tree-optimization/19831
15841         * tree-ssa-dce.c (propagate_necessity): Calls to functions
15842         that only act as barriers do not make any previous stores necessary.
15843         * tree-ssa-structalias.c (handle_lhs_call): Delay making
15844         HEAP variables global, do not add a constraint from nonlocal.
15845         (find_func_aliases): Handle escapes through return statements.
15846         (compute_points_to_sets): Make escaped HEAP variables global.
15847
15848 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15849
15850         PR bootstrap/40597
15851         * expmed.c (emit_store_flag): Perform a conversion if necessary,
15852         after reducing a DImode cstore to SImode.
15853
15854 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15855
15856         * expr.c (expand_expr_real_1): Reinstate fallthrough to
15857         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
15858
15859 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
15860
15861         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
15862         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
15863         to 0.
15864         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
15865         and umod_optab if TARGET_BSD_DIVMOD.
15866         * config/vax/lib1funcs.asm: New file.
15867         * config/vax/t-linux: New file.
15868         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
15869
15870 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
15871
15872         PR c++/40566
15873         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
15874         to type arguments that have void type.
15875
15876         PR debug/40573
15877         * dwarf2out.c (gen_formal_parameter_die): Call
15878         equate_decl_number_to_die if node is different from origin.
15879
15880 2009-06-30  Anthony Green  <green@moxielogic.com>
15881
15882         Clean up moxie port for --enable-build-with-cxx.
15883         * config/moxie/moxie.c (moxie_function_value): First two
15884         parameters are const_tree, not tree.
15885         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
15886         (REG_CLASS_NAMES): Ditto.
15887         (REGNO_REG_CLASS): Ditto.
15888         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
15889         (moxie_function_value): Fix constyness of arguments.
15890
15891 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
15892
15893         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
15894         finalize_size_functions before further processing.
15895         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
15896         (variable_size): Call self_referential_size on size expressions
15897         that contain a PLACEHOLDER_EXPR.
15898         (size_functions): New static variable.
15899         (copy_self_referential_tree_r): New static function.
15900         (self_referential_size): Likewise.
15901         (finalize_size_functions): New global function.
15902         * tree.c: Include tree-inline.h.
15903         (push_without_duplicates): New static function.
15904         (find_placeholder_in_expr): New global function.
15905         (substitute_in_expr) <tcc_declaration>: Return the replacement object
15906         on equality.
15907         <tcc_expression>: Likewise.
15908         <tcc_vl_exp>: If the replacement object is a constant, try to inline
15909         the call in the expression.
15910         * tree.h (finalize_size_functions): Declare.
15911         (find_placeholder_in_expr): Likewise.
15912         (FIND_PLACEHOLDER_IN_EXPR): New macro.
15913         (substitute_placeholder_in_expr): Update comment.
15914         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
15915         is true.
15916         (copy_tree_body_r): Likewise.
15917         (copy_tree_body): New static function.
15918         (maybe_inline_call_in_expr): New global function.
15919         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
15920         (maybe_inline_call_in_expr): Declare.
15921         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
15922         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
15923         GIMPLE_H.
15924
15925 2009-06-30  Richard Guenther  <rguenther@suse.de>
15926
15927         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
15928         continue walking.
15929         (propagate_necessity): Do not mark reaching defs of stores
15930         as necessary.
15931
15932 2009-06-30  Jan Hubicka  <jh@suse.cz>
15933
15934         * cfgloopanal.c (check_irred): Move into ...
15935         (mark_irreducible_loops): ... here; return true if ireducible
15936         loops was found.
15937         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
15938         (analyze_function): Try to prove loop finiteness.
15939         * cfgloop.h (mark_irreducible_loops): Update prototype.
15940         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
15941
15942 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
15943
15944         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
15945
15946 2009-06-30  Ira Rosen  <irar@il.ibm.com>
15947
15948         PR tree-optimization/40542
15949         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
15950         types.
15951
15952 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15953
15954         PR tree-optimization/40582
15955         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
15956         than useless_type_conversion_p.
15957         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
15958         proper place.
15959
15960 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15961
15962         PR middle-end/40554
15963         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
15964
15965 2009-06-30  Richard Guenther  <rguenther@suse.de>
15966
15967         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
15968         use ao_ref references.
15969         (walk_aliased_vdefs): Likewise.
15970         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
15971         * tree-ssa-dce.c (struct ref_data): Remove.
15972         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
15973         (mark_aliased_reaching_defs_necessary): Adjust.
15974         (mark_all_reaching_defs_necessary_1): Likewise.
15975
15976 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
15977
15978         PR boostrap/40597
15979         * expmed.c (emit_cstore): New name of emit_store_flag_1.
15980         (emit_store_flag_1): Extract from emit_store_flag, adjust
15981         calls to (what now is) emit_cstore.
15982         (emit_store_flag): Call emit_store_flag_1 and also use it
15983         for what used to be recursive calls.
15984
15985 2009-06-30  Wei Guozhi  <carrot@google.com>
15986
15987         PR/40416
15988         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
15989         if the target bb post dominates from bb.
15990         * config/i386/i386.c (memory_address_length): Check existence of base
15991         register before using it.
15992
15993 2009-06-30  Nick Clifton  <nickc@redhat.com>
15994             DJ Delorie  <dj@redhat.com>
15995
15996         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15997         __FMOVD_ENABLED__ is defined.
15998         * config/sh/sh.h
15999         (TARGET_FMOVD): Provide a default definition.
16000         (MASK_FMOVD): Likewise.
16001         (TARGET_CPU_CPP_BUILTINS): Define
16002         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16003         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16004         two fmov instructions depending upon whether TARGET_FMOVD is
16005         enabled.
16006         (split for DF load from memory into register): Also handle
16007         MEMs which consist of REG+DISP addressing.
16008         (split for DF store from register to memory): Likewise.
16009         * config/sh/sh.opt (mfmovd): Remove this switch.
16010         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16011         * config/sh/sh.c (sh_override_options): Do not automatically
16012         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16013         that to the -mfmovd command line switch.
16014
16015         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
16016         the SH4 and SH4A.
16017         (fldi_ok): Always allow.
16018         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
16019
16020 2009-06-29  DJ Delorie  <dj@redhat.com>
16021
16022         * doc/install.texi (mep-x-elf): Correct chip's full name.
16023
16024 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
16025
16026         * doc/extend.texi: Fix typo.
16027
16028 2009-06-29  Tom Tromey  <tromey@redhat.com>
16029
16030         * dwarf2.h: Remove.
16031         * Makefile.in (DWARF2_H): New variable.
16032         (except.o): Use it.
16033         (dwarf2out.o): Likewise.
16034         (dwarf2asm.o): Likewise.
16035         * config/i386/t-i386: Use DWARF2_H.
16036         * except.c: Include elf/dwarf2.h.
16037         * unwind-dw2.c: Include elf/dwarf2.h.
16038         * dwarf2out.c: Include elf/dwarf2.h.
16039         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
16040         <dtprel>: New field.
16041         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
16042         (size_of_loc_descr): Likewise.
16043         (output_loc_operands_raw): Likewise.
16044         (output_loc_operands): Handle new dtprel field.
16045         (loc_checksum): Update.
16046         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
16047         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
16048         * unwind-dw2-fde.c: Include elf/dwarf2.h.
16049         * dwarf2asm.c: Include elf/dwarf2.h.
16050         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
16051         * config/mmix/mmix.c: Include elf/dwarf2.h.
16052         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
16053         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
16054         * config/sh/sh.c: Include elf/dwarf2.h.
16055         * config/i386/i386.c: Include elf/dwarf2.h.
16056
16057 2009-06-29  DJ Delorie  <dj@redhat.com>
16058
16059         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
16060
16061         * doc/extend.texi: Add MeP attributes and pragmas.
16062         * doc/invoke.text: Add MeP Options.
16063         * doc/contrib.texi: Add MeP contribution.
16064         * doc/md.texi: Add MeP constraints.
16065         * doc/install.texi: Add MeP target.
16066
16067 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
16068
16069         * target.h (struct gcc_target): Add frame_pointer_required field.
16070         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
16071         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
16072         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
16073         hook.
16074         * reload1.c (update_eliminables): (Ditto.).
16075         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
16076         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16077         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
16078
16079         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
16080
16081         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
16082         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16083         (arm_frame_pointer_required): New function.
16084
16085         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
16086         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16087         (avr_frame_pointer_required_p): Declare as static.
16088         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
16089
16090         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
16091         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16092         (bfin_frame_pointer_required): Make as static, change return type
16093         to bool.
16094         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
16095
16096         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
16097         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16098         (cris_frame_pointer_required): New function.
16099
16100         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
16101
16102         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
16103         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16104         (fr30_frame_pointer_required): New function.
16105
16106         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
16107         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16108         (frv_frame_pointer_required): Make as static, change return type
16109         to bool.
16110         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
16111
16112         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
16113         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16114         (ix86_frame_pointer_required): Make as static, change return type to
16115         bool.
16116         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
16117
16118         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
16119         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16120
16121         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
16122
16123         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
16124
16125         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
16126
16127         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
16128         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16129         (mips_frame_pointer_required): Make as static.
16130         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
16131
16132         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
16133         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16134         (mmix_frame_pointer_required): Mew function.
16135
16136         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
16137         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16138
16139         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
16140
16141         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
16142
16143         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
16144
16145         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
16146         (CAN_ELIMINATE): Redefine.
16147         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16148         (sparc_frame_pointer_required): New function.
16149         (sparc_can_eliminate): New function.
16150         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
16151
16152         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
16153         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16154
16155         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
16156         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16157         (xtensa_frame_pointer_required): Make as static, change return type
16158         to bool.
16159         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
16160         Remove.
16161
16162 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
16163
16164         * doc/plugins.texi: Document PLUGIN_START_UNIT.
16165         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
16166         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
16167         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
16168         (register_callback): Handle PLUGIN_START_UNIT.
16169         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
16170
16171 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
16172
16173         * tree.c (process_call_operands): Propagate TREE_READONLY from the
16174         operands.
16175         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
16176         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
16177
16178 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
16179
16180         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
16181         move cost.
16182
16183 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
16184
16185         * doc/extend.texi (Additional Floating Types): __float128 is also
16186         supported on i386 targets.
16187
16188 2009-06-29  Richard Guenther  <rguenther@suse.de>
16189
16190         PR middle-end/14187
16191         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
16192         flag.
16193         (pt_solutions_same_restrict_base): Declare.
16194         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
16195         flag.
16196         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
16197         (make_constraint_from, make_copy_constraint): Move earlier.
16198         (make_constraint_from_heapvar): New function.
16199         (make_constraint_from_restrict): Likewise.
16200         (handle_lhs_call): Use it.
16201         (find_func_aliases): Use it to track conversions to restrict
16202         qualified pointers.
16203         (struct fieldoff): Add only_restrict_pointers flag.
16204         (push_fields_onto_fieldstack): Initialize it.
16205         (create_variable_info_for): Track global restrict qualified pointers.
16206         (intra_create_variable_infos): Use make_constraint_from_heapvar.
16207         Track restrict qualified pointer arguments.
16208         (set_uids_in_ptset): Use varinfo is_global_var flag.
16209         (find_what_var_points_to): Set the vars_contains_restrict flag.
16210         Always create the points-to solution for sets including restrict tags.
16211         (pt_solutions_same_restrict_base): New function.
16212         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
16213         qualified pointers use pt_solutions_same_restrict_base as
16214         additional source for disambiguation.
16215
16216 2009-06-29  Richard Guenther  <rguenther@suse.de>
16217
16218         PR middle-end/38212
16219         * alias.c (find_base_decl): Remove.
16220         (get_deref_alias_set_1): Remove restrict handling.
16221         * c-common.c (c_apply_type_quals_to_decl): Do not set
16222         DECL_POINTER_ALIAS_SET.
16223         * gimplify.c (find_single_pointer_decl_1): Remove.
16224         (find_single_pointer_decl): Likewise.
16225         (internal_get_tmp_var): Remove restrict handling.
16226         (gimple_regimplify_operands): Likewise.
16227         * omp-low.c (expand_omp_atomic_pipeline): Do not set
16228         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
16229         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
16230         * tree.c (restrict_base_for_decl): Remove.
16231         (init_ttree): Do not allocate it.
16232         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
16233         LABEL_DECL_UID for label decls.
16234         (copy_node_stat): Do not copy restrict information.
16235         (decl_restrict_base_lookup): Remove.
16236         (decl_restrict_base_insert): Likewise.
16237         (print_restrict_base_statistics): Likewise.
16238         (dump_tree_statistics): Do not call print_restrict_base_statistics.
16239         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
16240         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
16241         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
16242         (LABEL_DECL_UID): Adjust.
16243         (DECL_BASED_ON_RESTRICT_P): Remove.
16244         (DECL_GET_RESTRICT_BASE): Likewise.
16245         (SET_DECL_RESTRICT_BASE): Likewise.
16246         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
16247
16248         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
16249         instead of DECL_POINTER_ALIAS_SET.
16250         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
16251         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
16252         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
16253
16254 2009-06-29  Richard Guenther  <rguenther@suse.de>
16255
16256         PR tree-optimization/40579
16257         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
16258         the IL to simplify has constants that overflowed.
16259
16260 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
16261
16262         PR tree-optimization/40550
16263         * tree-vect-generic.c (expand_vector_operations_1): Compute in
16264         vector_compute_type only when the size of vector_compute_type is
16265         less than the size of type.
16266
16267 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
16268
16269         * fold-const.c (contains_label_1): Fix comments.
16270         (contains_label_p): Do not walk trees multiple time.
16271
16272 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16273
16274         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
16275         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
16276         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
16277         ix86_fp_comparison_operator.
16278         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
16279         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
16280         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
16281         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
16282         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
16283         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
16284         (related splits): Change predicate to ix86_fp_comparison_operator.
16285         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
16286         instead of ix86_fp_comparison_codes.
16287         (ix86_trivial_fp_comparison_operator,
16288         ix86_fp_comparison_operator): New.
16289         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
16290         (ix86_expand_compare): Eliminate last two parameters.
16291         (ix86_fp_jump_nontrivial_p): Kill.
16292         * config/i386/i386.c (put_condition_code): Eliminate call to
16293         ix86_fp_comparison_codes and subsequent assertion.
16294         (ix86_fp_comparison_codes): Eliminate.
16295         (ix86_fp_swap_condition): New.
16296         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
16297         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
16298         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
16299         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
16300         and ix86_fp_swap_condition.
16301         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
16302         Use ix86_fp_comparison_strategy.
16303         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
16304         (ix86_fp_jump_nontrivial_p): Eliminate.
16305         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
16306         call to ix86_expand_compare.
16307         (ix86_split_fp_branch, ix86_expand_setcc,
16308         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
16309         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
16310
16311 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16312
16313         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
16314         related to jump_clobbers.
16315         * config/arm/arm.md (conds): Remove jump_clob case.
16316         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
16317         splits): Change comparison_operator to arm_comparison_operator.
16318         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
16319         Eliminate.
16320
16321 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16322
16323         * dojump.c (do_compare_rtx_and_jump): Try swapping the
16324         condition for floating point modes.
16325         * expmed.c (emit_store_flag_1): Move here a bigger part
16326         of emit_store_flag.
16327         (emit_store_flag): Try swapping the condition for floating point
16328         modes.
16329         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
16330
16331 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16332
16333         * expr.c (expand_expr_real_1): Just use do_store_flag.
16334         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
16335         emit_store_flag_force.
16336         * expmed.c (emit_store_flag_force): Copy here trick
16337         previously in expand_expr_real_1.  Try reversing the comparison.
16338         (emit_store_flag_1): Work if target is NULL.
16339         (emit_store_flag): Work if target is NULL, using the result mode
16340         from the comparison.  Use split_comparison, restructure final part
16341         to simplify conditionals.
16342
16343 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16344
16345         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
16346         * dojump.c (do_jump): Change handling of floating-point
16347         ops to use just do_compare_and_jump.
16348         (split_comparison): New.
16349         (do_compare_rtx_and_jump): Add here logic coming previously
16350         in do_jump, using split_comparison.
16351
16352 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
16353
16354         PR target/40489
16355         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
16356
16357 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16358
16359         * tree-ssa-alias.c: Fix unintentional commit.
16360
16361 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16362
16363         * passes.c (execute_one_pass): Fix unintentional commit.
16364
16365 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16366
16367         * df-problems.c (df_set_seen, df_unset_seen): Delete.
16368         (df_rd_local_compute, df_md_local_compute): Inline them.
16369
16370         (df_md_scratch): New.
16371         (df_md_alloc, df_md_free): Allocate/free it.
16372         (df_md_local_compute): Only include live registers in init.
16373         (df_md_transfer_function): Prune the in-set computed by
16374         the confluence function, and the gen-set too.
16375
16376 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16377
16378         PR rtl-optimization/26854
16379         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
16380         * df-problems.c (df_rd_add_problem): Fix comment.
16381         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
16382         df_md_simulate_artificial_defs_at_top,
16383         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
16384         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
16385         df_md_transfer_function, df_md_init, df_md_confluence_0,
16386         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
16387         problem_MD, df_md_add_problem): New.
16388         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
16389         df_md_get_bb_info): New.
16390         (DF_LAST_PROBLEM_PLUS1): Adjust.
16391
16392         * Makefile.in (fwprop.o): Include domwalk.h.
16393         * fwprop.c: Include domwalk.h.
16394         (reg_defs, reg_defs_stack): New.
16395         (bitmap_only_bit_between): Remove.
16396         (process_defs): New.
16397         (process_uses): Use reg_defs and local_md instead of
16398         bitmap_only_bit_between and local_rd.
16399         (single_def_use_enter_block): New, from build_single_def_use_links.
16400         (single_def_use_leave_block): New.
16401         (build_single_def_use_links): Remove code moved to
16402         single_def_use_enter_block, invoke domwalk.
16403         (use_killed_between): Adjust comment.
16404
16405 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16406
16407         * bitmap.h (bitmap_ior_and_into): New.
16408         * bitmap.c (bitmap_ior_and_into): New.
16409
16410 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16411
16412         * domwalk.h (struct dom_walk_data): Remove all callbacks except
16413         before_dom_children_before_stmts and after_dom_children_after_stmts.
16414         Rename the two remaining callbacks to just before_dom_children and
16415         after_dom_children. Remove other GIMPLE statement walking bits.
16416         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
16417         * graphite.c: Do not include domwalk.h.
16418         * tree-into-ssa.c (interesting_blocks): New global.
16419         (struct mark_def_sites_global_data): Remove it and names_to_rename.
16420         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
16421         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
16422         now that they're not domwalk callbacks.
16423         (rewrite_initialize_block): Rename to...
16424         (rewrite_enter_block): ... this, place after called functions.  Test
16425         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
16426         (rewrite_finalize_block): Rename to...
16427         (rewrite_leave_block): ... this, place after called functions.
16428         (rewrite_update_init_block): Rename to...
16429         (rewrite_update_enter_block): ... this, place after called functions.
16430         Test interesting_blocks, call rewrite_update_stmt and
16431         rewrite_update_phi_arguments.
16432         (rewrite_update_fini_block): Rename to...
16433         (rewrite_leave_block): ... this, place after called functions.
16434         (rewrite_blocks): Remove last argument, simplify initialization of
16435         walk_data.
16436         (mark_def_sites_initialize_block): Rename to...
16437         (mark_def_sites_block): ... this, call mark_def_sites.
16438         (mark_def_sites_blocks): Remove argument, simplify initialization of
16439         walk_data.
16440         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
16441         (update_ssa): Likewise.
16442         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
16443         callback.
16444         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
16445         (dom_opt_initialize_block): Rename to...
16446         (dom_opt_enter_block): ... this, place after called functions.  Walk
16447         statements here, inline propagate_to_outgoing_edges.
16448         (dom_opt_finalize_block): Rename to...
16449         (dom_opt_leave_block): ... this, place after called functions.
16450         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
16451         domwalk callback.
16452         (dse_enter_block, dse_record_phi): New.
16453         (dse_record_phis): Delete.
16454         (dse_finalize_block): Rename to...
16455         (dse_leave_block): ... this.
16456         (tree_ssa_dse): Simplify initialization of walk_data.
16457         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
16458         Adjust initialization of walk_data.
16459         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
16460         * tree-ssa-loop-phiopt.c (get_non_trapping):
16461         Adjust initialization of walk_data.
16462         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
16463         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
16464         it's not a domwalk callback.
16465         (uncprop_initialize_block): Rename to...
16466         (dse_enter_block): ... this, call uncprop_into_successor_phis.
16467         (dse_finalize_block): Rename to...
16468         (dse_leave_block): ... this.
16469         (tree_ssa_uncprop): Simplify initialization of walk_data.
16470         * Makefile.in: Adjust dependencies.
16471
16472 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
16473
16474         * arm.md (casesi): Fix test for Thumb1.
16475         (thumb1_casesi_internal_pic): Likewise.
16476         (thumb1_casesi_dispatch): Likewise.
16477
16478 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
16479
16480         * config/arm/arm-cores.def: Added core cortex-m0.
16481         * config/arm/arm-tune.md: Regenerated.
16482         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
16483
16484 2009-06-26  DJ Delorie  <dj@redhat.com>
16485
16486         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
16487
16488         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
16489         the scheduler doesn't tag jump insns.
16490
16491 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
16492
16493         * c-decl.c (merge_decls): Re-indent.
16494
16495 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
16496
16497         PR c/39902
16498         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
16499         Special-case decimal float constants.
16500
16501 2009-06-26  Richard Henderson  <rth@redhat.com>
16502
16503         * function.h (struct function): Add cannot_be_copied_reason,
16504         and cannot_be_copied_set.
16505         * tree-inline.c (has_label_address_in_static_1): Rename from
16506         inline_forbidden_p_2; don't set inline_forbidden_reason here.
16507         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
16508         don't set inline_forbidden_reason.
16509         (copy_forbidden): New function, split out of inline_forbidden_p.
16510         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
16511         (inline_forbidden_p): Use copy_forbidden.
16512         (tree_versionable_function_p): Likewise.
16513         (inlinable_function_p): Merge into tree_inlinable_function_p.
16514         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
16515         * ipa-cp.c (ipcp_versionable_function_p): New function.
16516         (ipcp_cloning_candidate_p): Use it.
16517         (ipcp_node_modifiable_p): Likewise.
16518
16519 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
16520
16521         * builtins.c (expand_builtin_alloca): Handle builtin alloca
16522         that is marked not to be inlined. Remove flag_mudflap use.
16523         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
16524         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
16525
16526 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
16527
16528         PR bootstrap/40338
16529         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
16530         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
16531
16532 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
16533
16534         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
16535         shared libgcc.
16536         (__mingwthr_remove_key_dtor): Likewise.
16537
16538 2009-06-26  Richard Guenther  <rguenther@suse.de>
16539
16540         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
16541
16542 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
16543
16544         PR middle-end/40525
16545         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
16546         try the non-cond_exec path also.
16547
16548 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16549
16550         PR target/40468
16551         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
16552         (output_cbranch): Use new functions.
16553         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
16554         Likewise.
16555
16556 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
16557             Pat Haugen  <pthaugen@us.ibm.com>
16558             Revital Eres <ERES@il.ibm.com>
16559
16560         * config/rs6000/rs6000.c (print_operand): Correct lossage message
16561         for %c error.  Add %x support to print VSX registers as a unified
16562         register set, instead of separate float and altivec registers.
16563         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
16564         %y case, and add support for VSX pre-modify addresses.
16565         (output_toc): Add assert for CONST containing an integer constant
16566         in the PLUS case.
16567         (rs6000_adjust_cost): Add POWER7 support.
16568         (insn_must_be_first_in_group): Ditto.
16569         (insn_must_be_last_in_group): Ditto.
16570         (rs6000_emit_popcount): Ditto.
16571         (rs6000_vector_mode_supported_p): Ditto.
16572
16573         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
16574         Change some of the functions called by macros to being called
16575         through a pointer, so debug functions can be inserted if
16576         -mdebug=addr or -mdebug=cost.
16577         (rs6000_preferred_reload_class_ptr): Ditto.
16578         (rs6000_secondary_reload_class_ptr): Ditto.
16579         (rs6000_secondary_memory_needed_ptr): Ditto.
16580         (rs6000_cannot_change_mode_class_ptr): Ditto.
16581         (rs6000_secondary_reload_inner): Ditto.
16582         (rs6000_legitimize_reload_address): Ditto.
16583         (rs6000_legitimize_reload_address_ptr): Ditto.
16584         (rs6000_mode_dependent_address): Ditto.
16585         (rs6000_mode_dependent_address_ptr): Ditto.
16586
16587         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
16588         function to return true if the mode allows reg + integer
16589         addresses.
16590         (virtual_stack_registers_memory_p): New function to return true if
16591         the address refers to a virtual stack register.
16592         (rs6000_legitimate_offset_address_p): Move code to say whether a
16593         mode supports reg+int addressing to reg_offset_addressing_ok_p and
16594         call it.
16595         (rs6000_legitimate_address_p): Add checks for modes that only can
16596         do reg+reg addressing.  Start adding VSX support.
16597         (rs6000_legitimize_reload_address): Ditto.
16598         (rs6000_legitimize_address): Ditto.
16599         (rs6000_debug_legitimate_address_p): New debug functions for
16600         -mdebug=addr and -mdebug=cost.
16601         (rs6000_debug_rtx_costs): Ditto.
16602         (rs6000_debug_address_costs): Ditto.
16603         (rs6000_debug_adjust_cost): Ditto.
16604         (rs6000_debug_legitimize_address): Ditto.
16605         (rs6000_legitimize_reload_address_ptr): Point to call normal
16606         function or debug function.  Make functions called via pointer
16607         static.
16608         (rs6000_mode_dependent_address_ptr): Ditto.
16609         (rs6000_secondary_reload_class_ptr): Ditto.
16610         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
16611         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
16612         into a friendlier error.
16613         (rs6000_init_builtins): Add initial VSX support.
16614         (rs6000_adjust_cost): Fix some spacing issues.
16615
16616         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16617         (REG_CLASS_NAMES): Ditto.
16618         (REG_CLASS_CONTENTS): Ditto.
16619         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
16620         pointer, to add -mdebug=addr support.
16621         (CANNOT_CHANGE_MODE_CLASS): Ditto.
16622         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
16623         -mdebug=addr support.
16624         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
16625         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
16626         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
16627
16628         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
16629         16-bit values.
16630         (bswapsi*): Set attribute types for load/store.  Add combiner
16631         patterns to eliminate zero extend on 64-bit.
16632         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
16633         stdbrx if the hardware supports those instructions.
16634
16635 2009-06-25  Ian Lance Taylor  <iant@google.com>
16636
16637         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
16638         (Link Options): Document -static-libstdc++.
16639
16640 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16641
16642         PR target/38731
16643         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
16644         DATA_ALIGNMENT instead.
16645
16646 2009-06-25  Richard Guenther  <rguenther@suse.de>
16647
16648         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
16649         indirect references against the callused/escaped solutions.
16650         (call_may_clobber_ref_p_1): Likewise.
16651
16652 2009-06-25  Martin Jambor  <mjambor@suse.cz>
16653
16654         PR tree-optimization/40493
16655         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
16656         (enum unscalarized_data_handling): New type.
16657         (handle_unscalarized_data_in_subtree): Return what has been done.
16658         (load_assign_lhs_subreplacements): Handle left flushes differently.
16659         (sra_modify_assign): Use unscalarized_data_handling, simplified
16660         condition determining whether to remove the statement.
16661
16662 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
16663
16664         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
16665         excerpt - @ should be doubled for texinfo.
16666
16667 2009-06-24  Ian Lance Taylor  <iant@google.com>
16668
16669         * config/arc/arc.c: Include "df.h".
16670         (arc_attribute_table): Make static.  Move higher in file.
16671         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
16672         (output_shift): Initialize n later to avoid warning.
16673         * config/arm/arm.c (arm_attribute_table): Make static.  Move
16674         higher in file.
16675         * config/avr/avr.c (avr_attribute_table): Make static.  Move
16676         higher in file.
16677         (reg_class_tab): Change array type from int to enum reg_class.
16678         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
16679         LABEL_REF.
16680         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
16681         (lshrhi3_out): Likewise.
16682         (class_likely_spilled_p): Change return type to bool.
16683         (avr_rtx_costs): Use local code variable with enum type.
16684         * config/avr/avr.md (movmemhi): Use add_reg_note.
16685         (andhi3, andsi3): Don't use AS2 with "and".
16686         (iorhi3, iorsi3): Don't use AS2 with "or".
16687         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
16688         * config/crx/crx.c: Include "df.h".
16689         (crx_attribute_table): Make static.
16690         * config/m32r/m32r.c: Include "df.h".
16691         (m32r_attribute_table): Make static.  Move higher in file.
16692         (pop): Use add_reg_note.
16693         (block_move_call): Change 0 to LCT_NORMAL in function call.
16694         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
16695         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
16696         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
16697         declare, not just when TREE_CODE is defined.
16698         * config/m68hc11/m68hc11.c: Include "expr.h".
16699         (m68hc11_attribute_table): Make static.  Move higher in file.
16700         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
16701         function call.
16702         (m68hc11_register_indirect_p): Likewise.
16703         (m68hc11_function_arg_padding): Change return type to enum
16704         direction.
16705         (emit_move_after_reload): Use add_reg_note.
16706         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
16707         (m68hc11_split_logical): Likewise.
16708         (m68hc11_rtx_costs): Add local code_and outer_code variables with
16709         enum type.
16710         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
16711         to VOIDmode in function call.
16712         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
16713         tree is defined.
16714         (m68hc11_split_logical): Update declaration.
16715         (m68hc11_function_arg_padding): Update declaration.
16716         * config/mcore/mcore.c (regno_reg_class): Change form array of int
16717         to array of enum reg_class.
16718         (mcore_attribute_table): Make static.  Move higher in file.
16719         (mcore_rtx_costs): Add cast to enum type.
16720         * config/mcore/mcore.h (regno_reg_class): Update declaration.
16721         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
16722         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
16723         in file.
16724         * config/sh/predicates.md (trapping_target_operand): Rename and to
16725         and_expr.
16726         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
16727         higher in file.
16728         * config/spu/spu.c (spu_attribute_table): Make static.  Move
16729         higher in file.
16730         * config/v850/v850.c (v850_attribute_table): Make static.  Move
16731         higher in file.
16732         (v850_rtx_costs): Use local code with enum type.
16733         (expand_epilogue): Add cast.
16734         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
16735
16736 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
16737
16738         PR target/40515
16739         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
16740         -m2a-single-only and -m2a-nofpu.
16741         * config/sh/sh.opt: Document m2a generates FPU code.
16742
16743 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
16744
16745         * defaults.h (CAN_ELIMINATE): Provide default.
16746         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
16747         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
16748         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
16749         * config/spu/spu.h (CAN_ELIMINATE): Delete.
16750         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
16751         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
16752         * config/cris/cris.h (CAN_ELIMINATE): Delete.
16753         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
16754         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
16755         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
16756
16757 2009-06-24  DJ Delorie  <dj@redhat.com>
16758
16759         * mep-ext-cop.cpu: Fix copyright notice.
16760         * mep-default: Fix copyright notice.
16761         * mep-core: Fix copyright notice.
16762         * mep: Fix copyright notice.
16763         * mep-ivc2: Fix copyright notice.
16764         * mep-c5: Fix copyright notice.
16765
16766 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
16767
16768         * doc/contrib.texi (Contributors):
16769
16770 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16771
16772         PR middle-end/40501
16773         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
16774         src and dst operands if necessary.
16775
16776 2009-06-23  DJ Delorie  <dj@redhat.com>
16777
16778         Add MeP port.
16779         * config.gcc: Add mep support.
16780         * recog.c: Resurrect validate_replace_rtx_subexp().
16781         * recog.h: Likewise.
16782         * config/mep/: Add new port:
16783         * config/mep/constraints.md: New file.
16784         * config/mep/default.h: New file.
16785         * config/mep/intrinsics.h: New file.
16786         * config/mep/intrinsics.md: New file.
16787         * config/mep/ivc2-template.h: New file.
16788         * config/mep/mep-c5.cpu: New file.
16789         * config/mep/mep-core.cpu: New file.
16790         * config/mep/mep-default.cpu: New file.
16791         * config/mep/mep-ext-cop.cpu: New file.
16792         * config/mep/mep-intrin.h: New file.
16793         * config/mep/mep-ivc2.cpu: New file.
16794         * config/mep/mep-lib1.asm: New file.
16795         * config/mep/mep-lib2.c: New file.
16796         * config/mep/mep-pragma.c: New file.
16797         * config/mep/mep-protos.h: New file.
16798         * config/mep/mep-tramp.c: New file.
16799         * config/mep/mep.c: New file.
16800         * config/mep/mep.cpu: New file.
16801         * config/mep/mep.h: New file.
16802         * config/mep/mep.md: New file.
16803         * config/mep/mep.opt: New file.
16804         * config/mep/predicates.md: New file.
16805         * config/mep/t-mep: New file.
16806
16807 2009-06-23  Ian Lance Taylor  <iant@google.com>
16808
16809         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
16810         from loose_warn into c_loose_warn and from strict_warn into
16811         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
16812         --enable-build-with-cxx.  Set and substitute
16813         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
16814         * Makefile.in (CXXFLAGS): New variable.
16815         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
16816         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
16817         the default is the same as $(STRICT_WARN).
16818         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
16819         (CXX): New variable.
16820         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
16821         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
16822         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
16823         (HOST_LIBS): New variable.
16824         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
16825         (ALL_CXXFLAGS): New variable.
16826         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
16827         * doc/install.texi (Configuration): Document
16828         --enable-build-with-cxx, --with-stage1-ldflags,
16829         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
16830         * configure: Rebuild.
16831
16832 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16833
16834         * config/arm/arm.c (arm_override_options): Fix braces and formatting
16835         from previous commit.
16836
16837 2009-06-23  Ian Lance Taylor  <iant@google.com>
16838
16839         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
16840
16841 2009-06-23  Ian Lance Taylor  <iant@google.com>
16842
16843         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
16844         with ATTRIBUTE_UNUSED.
16845
16846 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
16847             Pat Haugen  <pthaugen@us.ibm.com>
16848             Revital Eres  <eres@il.ibm.com>
16849
16850         * config.in (HAVE_AS_POPCNTD): Add default definition.
16851         (HAVE_AS_LWSYNC): Ditto.
16852
16853         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
16854         release number.
16855         (gcc_cv_as_powerpc_cmpb): Ditto.
16856         (gcc_cv_as_powerpc_dfp): Ditto.
16857         (gcc_cv_as_powerpc_vsx): Ditto.
16858         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
16859         supporting the popcntd/lwsync instructions.
16860         (gcc_cv_as_powerpc_lwsync): Ditto.
16861         * configure: Regenerate.
16862
16863         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
16864         -mcpu=native and -mcpu=power7.
16865         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
16866
16867         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
16868         a variable instead of a mask to reduce the number of mask bits.
16869         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
16870         (-mbit-word): Ditto.
16871         (-mregnames): Ditto.
16872         * config/rs6000/rs6000.opt (-mupdate): Ditto.
16873         (-mfused-madd): Ditto.
16874
16875         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
16876         2.06 instructions.
16877         (-mvsx): New switch for VSX instructions.
16878         (-misel): Move from a variable to a mask to allow it to be set by
16879         -mcpu=.
16880
16881         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
16882         function declaration to an array declaration.
16883         (rs6000_hard_regno_nregs): New external array declaration.
16884
16885         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
16886         files included by rs6000.md.
16887
16888         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
16889         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
16890
16891         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
16892         a target mask.
16893         (rs6000_debug_reg): New -mdebug= variables.
16894         (rs6000_debug_addr): Ditto.
16895         (rs6000_debug_cost): Ditto.
16896         (rs6000_pmode): New variable to hold Pmode.
16897         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
16898         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
16899         calculated at compiler start.
16900         (rs6000_hard_regno_nregs): Change function to an array which holds
16901         HARD_REGNO_NREGS calculated at compiler start.
16902         (rs6000_explicit_options): Delete isel field.
16903         (rs6000_vector_unit): New array to hold which vector unit
16904         supports arithmetic options for a given type.
16905         (rs6000_vector_mem): New array to hold which vector unit supports
16906         memory reference operations for a given type.
16907         (rs6000_vector_align): New array to given the alignment of each
16908         vector type.
16909         (power7_cost): New basic costs for power7.
16910         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
16911         (rs6000_hard_regno_nregs_internal): New function, moved from
16912         HARD_REGNO_NREGS, to calculate the number of registers each hard
16913         register takes for each type.
16914         (rs6000_debug_reg_print): New function for -mdebug=reg support.
16915         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
16916         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
16917         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
16918         unit information here so it is calculated once at compiler startup
16919         time.
16920         (rs6000_override_options): Make -misel a target mask.  Add more
16921         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
16922         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
16923         -mdebug=cost.
16924         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
16925         (rs6000_handle_option): Move -misel from variable to target mask.
16926         (rs6000_builtin_mask_for_load): Add VSX support.
16927         (rs6000_conditional_register_usage): Ditto.
16928         (USE_ALTIVEC_FOR_ARG_P): Ditto.
16929         (function_arg_boundary): Ditto.
16930         (rs6000_expand_builtin): Ditto.
16931         (def_builtin): Make abort message a little friendlier.
16932         (rs6000_emit_int_cmove): Add support for 64-bit isel.
16933
16934         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
16935         assembler support the popcntd instruction instead of a vsx
16936         instruction to enable power7 support.
16937         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
16938         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
16939         option to the assembler if -mcpu=native.
16940         (ASM_CPU_NATIVE_SPEC): Ditto.
16941         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
16942         ISA 2.06 features.
16943         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
16944         the lwsync instruction.
16945         (enum processor_type): Add PROCESSOR_POWER7.
16946         (rs6000_debug_reg): New -mdebug= options.
16947         (rs6000_debug_addr): Ditto.
16948         (rs6000_debug_cost): Ditto.
16949         (rs6000_isel): Delete.
16950         (enum rs6000_vector): New enum to say what vector unit we have.
16951         (VECTOR_UNIT_*): New macros to say which vector unit has
16952         arithmetic operations for a given type.
16953         (VECTOR_MEM_*): New macros to say which vector unit has memory
16954         operations for a given type.
16955         (TARGET_LDBRX): Whether the machine supports the ldbrx
16956         instruction.
16957         (TARGET_ISEL): Delete, -misel moved to be a mask.
16958         (TARGET_ISEL64): New macro for 64-bit isel support.
16959         (UNITS_PER_VSX_WORD): New macro.
16960         (POINTER_SIZE): Move to be an external variable, rather than
16961         calculating whether we are generating 32 ot 64-bit code.
16962         (Pmode): Ditto.
16963         (STACK_BOUNDARY): Add VSX support.
16964         (LOCAL_ALIGNMENT): Ditto.
16965         (SLOW_UNALIGNED_ACCESS): Ditto.
16966         (VSX_REGNO_P): New macro for VSX support.
16967         (VFLOAT_REGNO_P): Ditto.
16968         (VINT_REGNO_P): Ditto.
16969         (VLOGICAL_REGNO_P): Ditto.
16970         (VSX_VECTOR_MODE): Ditto.
16971         (VSX_SCALAR_MODE): Ditto.
16972         (VSX_MODE): Ditto.
16973         (VSX_MOVE_MODE): Ditto.
16974         (VSX_REG_CLASS_P): Ditto.
16975         (HARD_REGNO_NREGS): Instead of calling a function, use an array
16976         lookup.
16977         (UNITS_PER_SIMD_WORD): Add VSX support.
16978         (MODES_TIEABLE_P): Ditto.
16979         (STARTING_FRAME_OFFSET): Ditto.
16980         (STACK_DYNAMIC_OFFSET): Ditto.
16981         (EPILOGUE_USES): Ditto.
16982         (REGNO_REG_CLASS): Move to array lookup.
16983         (CLASS_MAX_NREGS): Ditto.
16984         (rs6000_vector_reg_class): Add declaration.
16985         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
16986         overlap with the floating point and Altivec registers.
16987
16988         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
16989
16990         * config/rs6000/driver-rs6000.c (asm_names): New static array to
16991         give the appropriate asm switches if -mcpu=native.
16992         (host_detect_local_cpu): Add support for "asm".
16993         (host_detect_local_cpu): Follow GNU code guidelines for name.
16994
16995         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
16996         -mbit-word to a variable instead of being a target mask.
16997
16998         * config/rs6000/sync.md (lwsync): If the assembler supports it,
16999         emit the lwsync instruction instead of emitting the instruction as
17000         an integer constant.
17001
17002         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
17003         fixuns_trundfsi2, move expander into rs6000.md.
17004
17005         * config/rs6000/rs6000.md (cpu): Add power7.
17006         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
17007         (logical predicate patterns): Change the single instruction
17008         primitives that set CR0 to be fast_compare instead of compare.
17009         (norsi*): Ditto.
17010         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
17011         (popcntddi2): Ditto.
17012         (popcount<mode>): Ditto.
17013         (floating multiply/add insns): Name the floating point
17014         multiply/add insns.
17015         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
17016         (isel_unsigned_<mode>): Ditto.
17017         (fixuns_trundfsi2): Move expander here from spe.md.
17018         (smindi3): Define if we have -misel on 64-bit systems.
17019         (smaxdi3): Ditto.
17020         (umindi3): Ditto.
17021         (umaxdi3): Ditto.
17022
17023 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
17024
17025         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
17026         extra_objs.
17027         * config/avr/avr.c (avr_current_device): New variable.
17028         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
17029         (avr_arch, mcu_type_s): Move to avr.h.
17030         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
17031         default_data_section_start fields.
17032         (avr_arch): Moved from avr.c.
17033         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
17034         library_name fields.
17035         (avr_current_device, avr_mcu_types, avr_arch_types,
17036         avr_device_to_arch, avr_device_to_data_start,
17037         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
17038         (EXTRA_SPEC_FUNCTIONS): Define.
17039         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
17040         options mapping. Use device_to_arch and device_to_data_start insted.
17041         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
17042         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
17043         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
17044         * config/avr/driver-avr.c: New file.
17045         * config/avr/avr-devices.c: New file.
17046
17047 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
17048
17049         * var-tracking.c (unshare_variable): Force initialized to
17050         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
17051         (set_variable_part): Likewise.
17052         (struct variable_union_info): Remove pos_src field.
17053         (vui_vec, vui_allocated): New variables.
17054         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
17055         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
17056         == 1 use a simpler sorting algorithm.  Compute pos field right
17057         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
17058         Avoid quadratic comparison if !flag_var_tracking_uninit.
17059         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
17060         unshare_variable unconditionally.
17061         (dataflow_set_different_2): Removed.
17062         (dataflow_set_different): Don't traverse second hash table.
17063         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
17064         unconditionally to var_reg_set or var_mem_set.
17065         (emit_notes_in_bb): Likewise.
17066         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
17067         unshare_variable.
17068         (emit_note_insn_var_location): Don't set initialized to
17069         VAR_INIT_STATUS_INITIALIZED early.
17070         (vt_finalize): Free vui_vec if needed, clear vui_vec and
17071         vui_allocated.
17072         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
17073
17074         * tree-object-size.c (addr_object_size): Instead of checking
17075         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
17076         are no FIELD_DECLs following it.
17077
17078 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
17079
17080         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
17081         order to match bswaps with signed source operands.
17082
17083 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17084
17085         * sdbout.c (sdbout_one_type): Fix braces in switch.
17086
17087 2009-06-23  Richard Guenther  <rguenther@suse.de>
17088
17089         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
17090         member.
17091         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
17092         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
17093         var_callused, callused_tree, var_storedanything, storedanything_tree,
17094         var_integer, integer_tree): Remove global variables.
17095         (new_var_info): Do not pass new id, append the new var to the
17096         global variable vector.
17097         (do_ds_constraint): Use is_global_var member of the variable-info.
17098         (new_scalar_tmp_constraint_exp): Adjust.
17099         (create_function_info_for): Likewise.
17100         (create_variable_info_for): Likewise.
17101         (find_what_var_points_to): Remove dead code.
17102         (init_base_vars): Simplify.
17103         (compute_points_to_sets): Adjust.
17104
17105 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17106
17107         * combine.c (try_combine): Dump information about the insns we're
17108         combining.
17109
17110 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17111
17112         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
17113         check when calling force_to_mode on TRUNCATE's operand.
17114
17115 2009-06-22  Ian Lance Taylor  <iant@google.com>
17116
17117         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
17118
17119 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17120
17121         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
17122
17123 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17124
17125         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
17126         override library linkage flags such as -static-libgcc or
17127         -shared-libgcc.
17128
17129 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17130
17131         * config/m68k/m68k-devices.def: Add line for MCF5221x.
17132
17133 2009-06-22  Ian Lance Taylor  <iant@google.com>
17134
17135         * config/linux.opt: Put mglibc ahead of muclibc.
17136
17137         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
17138         for duplicate decls.
17139
17140 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17141
17142         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
17143
17144 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17145
17146         PR objc/28050
17147         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
17148         instead of NULL if a parser error occurs.
17149
17150 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17151
17152         * dwarf2out.c (dwarf2_debug_hooks): Initialize
17153         non-DWARF2_DEBUGGING_INFO version.
17154
17155 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
17156
17157         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
17158         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
17159
17160         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
17161         (LIBGCC2_TF_CEXT): Define.
17162         (TF_SIZE): Define.
17163
17164 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17165
17166         PR target/40463
17167         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
17168
17169 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17170
17171         * config/arm/arm.c (arm_override_options): Disable
17172         -mcaller-super-interworking and -mcallee-super-interworking.
17173         * doc/invoke.texi (ARM Options): Document this.
17174
17175 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
17176
17177         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
17178         * config/arm/constraints.md (j): New constraint for movw operands.
17179         (N): Remove thumb2 meaning.
17180         * config/arm/arm.md (*arm_movw): Delete.
17181         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
17182         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
17183         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
17184
17185 2009-06-22  Martin Jambor  <mjambor@suse.cz>
17186
17187         PR tree-optimization/40492
17188         * tree-sra.c (sra_modify_assign): Pass zero offsets to
17189         build_ref_for_offset.
17190
17191 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
17192
17193         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
17194         JUMP_TABLE_DATA_P predicates where applicable.
17195         * auto-inc-dec.c: Ditto.
17196         * builtins.c: Ditto.
17197         * caller-save.c: Ditto.
17198         * calls.c: Ditto.
17199         * cfgcleanup.c: Ditto.
17200         * cfglayout.c: Ditto.
17201         * cfgrtl.c: Ditto.
17202         * combine.c: Ditto.
17203         * combine-stack-adj.c: Ditto.
17204         * cse.c: Ditto.
17205         * cselib.c: Ditto.
17206         * dbxout.c: Ditto.
17207         * df-scan.c: Ditto.
17208         * dse.c: Ditto.
17209         * dwarf2asm.c: Ditto.
17210         * dwarf2out.c: Ditto.
17211         * emit-rtl.c: Ditto.
17212         * except.c: Ditto.
17213         * explow.c: Ditto.
17214         * expmed.c: Ditto.
17215         * expr.c: Ditto.
17216         * final.c: Ditto.
17217         * function.c: Ditto.
17218         * fwprop.c: Ditto.
17219         * gcse.c: Ditto.
17220         * genpreds.c: Ditto.
17221         * genrecog.c: Ditto.
17222         * ifcvt.c: Ditto.
17223         * ira-costs.c: Ditto.
17224         * ira-lives.c: Ditto.
17225         * jump.c: Ditto.
17226         * loop-iv.c: Ditto.
17227         * lower-subreg.c: Ditto.
17228         * modulo-sched.c: Ditto.
17229         * optabs.c: Ditto.
17230         * postreload.c: Ditto.
17231         * print-rtl.c: Ditto.
17232         * recog.c: Ditto.
17233         * reginfo.c: Ditto.
17234         * regmove.c: Ditto.
17235         * reload1.c: Ditto.
17236         * reload.c: Ditto.
17237         * reorg.c: Ditto.
17238         * rtlanal.c: Ditto.
17239         * rtl.c: Ditto.
17240         * sched-vis.c: Ditto.
17241         * sdbout.c: Ditto.
17242         * sel-sched-ir.c: Ditto.
17243         * simplify-rtx.c: Ditto.
17244         * targhooks.c: Ditto.
17245         * var-tracking.c: Ditto.
17246         * vmsdbgout.c: Ditto.
17247
17248 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17249
17250         * Makefile.in (install-plugin): Always use DESTDIR.
17251
17252 2009-06-22  Olivier Hainque  <hainque@adacore.com>
17253
17254         * config/pa/pa.c (output_call): Don't optimize post call jumps
17255         into return address adjustments if the call may throw.
17256
17257 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
17258
17259         * arm.c (thumb1_output_casesi): New function.
17260         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
17261         optimizing for size or PIC.
17262         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
17263         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
17264         (casesi): Handle Thumb-1 when optimizing for size or PIC.
17265         (thumb1_casesi_internal_pic): New expand rule.
17266         (thumb1_casesi_dispatch): New pattern.
17267         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
17268         thumb-1 mode.
17269         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
17270         in the text seciton when PIC or optimizing for size.
17271         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
17272         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
17273         preservation properties of code.
17274         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
17275         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
17276         (__gnu_thumb1_case_si): New function.
17277         * t-arm (LIB1ASMSRC): Define here.
17278         (LIB1ASMFUNCS): Add some common functions.
17279         * t-arm-elf (LIB1ASMSRC): Delete.
17280         (LIB1ASMFUNCS): Append to existing set.
17281         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17282         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17283         * t-symbian (LIB1ASMFUNCS): Likewise.
17284         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17285         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17286
17287 2009-06-21  Richard Guenther  <rguenther@suse.de>
17288
17289         PR tree-optimization/38729
17290         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
17291         to loops with a single exit if -fno-expensive-optimizations.
17292
17293 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
17294
17295         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
17296         (dataflow_set): Change vars type from htab_t to shared_hash.
17297         (shared_hash_pool, empty_shared_hash): New variables.
17298         (vars_clear): Removed.
17299         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
17300         shared_hash_find_slot_unshare, shared_hash_find_slot,
17301         shared_hash_find_slot_noinsert, shared_hash_find): New
17302         static inlines.
17303         (shared_hash_unshare, shared_hash_destroy): New functions.
17304         (unshare_variable): Unshare set->vars if shared, use
17305         shared_hash_htab.
17306         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
17307         (get_init_value, find_src_set_src, dump_dataflow_set,
17308         clobber_variable_part, emit_notes_for_differences): Use
17309         shared_hash_htab.
17310         (dataflow_set_init): Remove second argument, set vars to
17311         empty_shared_hash instead of creating a new htab.
17312         (dataflow_set_clear): Call shared_hash_destroy and set vars
17313         to empty_shared_hash instead of calling vars_clear.
17314         (dataflow_set_copy): Don't call vars_copy, instead just share
17315         the src htab with dst.
17316         (variable_union): Use shared_hash_*, use initially NO_INSERT
17317         lookup if set->vars is shared.  Don't keep slot cleared before
17318         calling unshare_variable.  Unshare set->vars if needed.
17319         Even ->refcount == 1 vars must be unshared if set->vars is shared
17320         and var needs to be modified.
17321         (variable_canonicalize): New function.
17322         (dataflow_set_union): If dst->vars is empty, just share src->vars
17323         with dst->vars and traverse with variable_canonicalize to canonicalize
17324         and unshare what is needed.
17325         (dataflow_set_different): If old_set and new_set use the same shared
17326         htab, they aren't different.  If number of htab elements is different,
17327         htabs are different.  Use shared_hash_*.
17328         (dataflow_set_destroy): Call shared_hash_destroy instead of
17329         htab_delete.
17330         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
17331         second argument to dataflow_set_init.
17332         (vt_initialize): Likewise.  Initialize shared_hash_pool and
17333         empty_shared_hash, move bb in/out initialization afterwards.
17334         Use variable_htab_free instead of NULL as changed_variables del hook.
17335         (variable_was_changed): Change type of second argument to pointer to
17336         dataflow_set.  When inserting var into changed_variables, bump
17337         refcount.  Unshare set->vars if set is shared htab and slot needs to
17338         be cleared.
17339         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
17340         lookup if set->vars is shared.  Unshare set->vars if needed.
17341         Even ->refcount == 1 vars must be unshared if set->vars is shared
17342         and var needs to be modified.  Adjust variable_was_changed caller.
17343         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
17344         vars must be unshared if set->vars is shared and var needs to be
17345         modified.  Adjust variable_was_changed caller.
17346         (emit_note_insn_var_location): Don't pool_free var.
17347         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
17348         instead of 1.
17349         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
17350         free_alloc_pool on shared_hash_pool.
17351
17352 2009-06-20  Anthony Green  <green@moxielogic.com>
17353
17354         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
17355         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
17356
17357 2009-06-20  Richard Guenther  <rguenther@suse.de>
17358
17359         * tree-ssa-structalias.c (find_func_aliases): For memset use
17360         a constraint from NULL if we memset to zero.
17361         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
17362         we explicitly handle that do not read from memory.
17363         (call_may_clobber_ref_p_1): Properly handle builtins that may
17364         set errno.
17365
17366 2009-06-20  Richard Guenther  <rguenther@suse.de>
17367
17368         PR tree-optimization/40495
17369         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
17370         (new_scalar_tmp_constraint_exp): New function.
17371         (process_constraint): Do not create temporary decls.
17372         (process_all_all_constraints): Likewise.
17373         (handle_const_call): Likewise.
17374         (create_function_info_for): Do not set decl.
17375
17376 2009-06-19  Ian Lance Taylor  <iant@google.com>
17377
17378         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
17379         (rs6000_attribute_table): Make static; move before use.
17380
17381 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
17382
17383         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
17384         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
17385         Propagate the TREE_READONLY flag without overwriting it.
17386         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
17387         Propagate the TREE_READONLY flag onto the result.
17388         (process_call_operands): Move around.  Use correct constant value.
17389
17390 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17391
17392         PR target/40482
17393         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
17394         * config/arm/arm.md: Likewise.
17395
17396 2009-06-19  Ian Lance Taylor  <iant@google.com>
17397
17398         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
17399         to GIMPLE_ERROR_MARK.
17400
17401         * c-typeck.c (build_conditional_expr): Add op1_original_type and
17402         op2_original_type parameters.  Warn about using different enum types.
17403         * c-parser.c (c_parser_conditional_expression): Pass original
17404         types to build_conditional_expr.
17405         * c-tree.h (build_conditional_expr): Update declaration.
17406
17407 2009-06-19  Ian Lance Taylor  <iant@google.com>
17408
17409         * config/i386/i386.c (ix86_function_specific_save): Test that
17410         fields match values, rather than testing the values are in a
17411         certain range.
17412
17413 2009-06-19  Richard Guenther  <rguenther@suse.de>
17414
17415         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
17416         ADDR_EXPR pointers.
17417         (ptr_derefs_may_alias_p): Likewise.
17418         (ptr_deref_may_alias_ref_p_1): New function.
17419         (ptr_deref_may_alias_ref_p): Likewise.
17420         (ref_maybe_used_by_call_p_1): Handle builtins that are not
17421         covered by looking at the ESCAPED solution.
17422         (call_may_clobber_ref_p_1): Likewise.
17423         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
17424         Handle NULL_TREE offset.  Do not produce redundant constraints.
17425         (process_all_all_constraints): New helper function.
17426         (do_structure_copy): Use it.
17427         (handle_lhs_call): Likewise.
17428         (find_func_aliases): Handle some builtins with pointer arguments
17429         and/or return values explicitly.
17430
17431 2009-06-19  Ian Lance Taylor  <iant@google.com>
17432
17433         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
17434
17435 2009-06-19  Ian Lance Taylor  <iant@google.com>
17436
17437         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
17438
17439 2009-06-19  Ian Lance Taylor  <iant@google.com>
17440
17441         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
17442         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
17443         version.
17444
17445         * c-decl.c (finish_decl): If -Wc++-compat, warn about
17446         uninitialized const.
17447
17448 2009-06-19  Ian Lance Taylor  <iant@google.com>
17449
17450         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
17451         all uses.
17452
17453         * c-decl.c (in_struct, struct_types): Remove.
17454         (struct c_binding): Add in_struct field.
17455         (c_binding_ptr): Define type, along with VEC.
17456         (struct c_struct_parse_info): Define.
17457         (struct_parse_info): New static variable.
17458         (bind): Initialize in_struct field.
17459         (start_struct): Remove enclosing_in_struct and
17460         enclosing_struct_types parameters.  Add
17461         enclosing_struct_parse_info parameter.  Change all callers.  Set
17462         struct_parse_info rather than in_struct and struct_types.
17463         (grokfield): If -Wc++-compat and there is a symbol binding for the
17464         field name, set the in_struct flag and push it on the
17465         struct_parse_info->fields vector.
17466         (warn_cxx_compat_finish_struct): New static function.
17467         (finish_struct): Remove enclosing_in_struct and
17468         enclosing_struct_types parameters.  Add
17469         enclosing_struct_parse_info parameter.  Change all callers.  Don't
17470         set C_TYPE_DEFINED_IN_STRUCT here.  Call
17471         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
17472         parameter.  Only push on struct_types if warn_cxx_compat.
17473         (finish_enum): Only push on struct_types if warn_cxx_compat.
17474         (declspecs_add_type): Add loc parameter.  Change all callers.
17475         Change all error calls to error_at.  Pass loc, not input_location,
17476         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
17477         defined in a struct.  If -Wc++-compat and parsing a struct, record
17478         that a typedef name was used.
17479         * c-parser.c (c_parser_declspecs): Get location to pass to
17480         declspecs_add_type.
17481         (c_parser_struct_or_union_specifier): Update calls to start_struct
17482         and finish_struct.
17483         * c-tree.h (struct c_struct_parse_info): Declare.
17484         (finish_struct, start_struct): Update declarations.
17485         (declspecs_add_type): Update declaration.
17486
17487 2009-06-19  Ian Lance Taylor  <iant@google.com>
17488
17489         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
17490         variable with an anonymous type.
17491
17492 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17493
17494         * see.c: Remove for real.
17495
17496 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17497
17498         * optabs.h (enum optab_index): Add new OTI_significand.
17499         (significand_optab): Define corresponding macro.
17500         * optabs.c (init_optabs): Initialize significand_optab.
17501         * genopinit.c (optabs): Implement significand_optab using
17502         significand?f2 patterns.
17503         * builtins.c (expand_builtin_mathfn): Handle
17504         BUILT_IN_SIGNIFICAND{,F,L}.
17505         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
17506         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
17507
17508         * config/i386/i386.md (significandxf2, significand<mode>2): New
17509         expanders to implement significandf, significand and significandl
17510         built-ins as inline x87 intrinsics.
17511
17512 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
17513
17514         * config/avr/avr.c (avr_override_options): Remove setting value of
17515         PARAM_INLINE_CALL_COST.
17516
17517 2009-06-18  Richard Henderson  <rth@redhat.com>
17518
17519         PR 40488
17520         * tree-pass.h (TDF_ASMNAME): New.
17521         * tree-dump.c (dump_options): Add asmname.
17522         * doc/invoke.texi: Document it.
17523
17524         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
17525         (dump_decl_name): ...here.
17526         (dump_function_name): New flags arg; mind TDF_ASMNAME.
17527         (dump_generic_node): Update dump_function_name calls.
17528         (print_call_name): New flags arg; update all dump calls.
17529         * diagnostic.h (print_call_name): Update.
17530         * gimple-pretty-print.c (dump_gimple_call): Update.
17531
17532 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
17533
17534         PR target/40470
17535         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
17536
17537 2009-06-18  Diego Novillo  <dnovillo@google.com>
17538
17539         * doc/plugins.texi: Document plugin_is_GPL_compatible.
17540         * plugin.c (str_license): Declare.
17541         (try_init_one_plugin): Assert that the symbol
17542         'plugin_is_GPL_compatible' exists.
17543
17544 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
17545
17546         * see.c: Remove.
17547         * Makefile.in (OBJS-common): Remove see.o.
17548         (see.o): Remove.
17549         * common.opt (fsee): Mark as preserved for backward compatibility.
17550         * opts.c (common_handle_option): Add OPT_fsee to the backward
17551         compatibility section.
17552         * passes.c (init_optimization_passes, pass_see): Remove pass.
17553         * timevar.def (TV_SEE): Remove.
17554         * tree-pass.h (pass_see): Remove declaration.
17555         * doc/invoke.texi (-fsee): Remove documentation.
17556
17557 2009-06-18  Martin Jambor  <mjambor@suse.cz>
17558
17559         * tree-sra.c: Include statistics.h
17560         (sra_stats): New variable.
17561         (sra_initialize): Clear sra_stats.
17562         (create_access_replacement): Increment sra_stats.replacements.
17563         (get_access_replacement): Do not return twice.
17564         (analyze_all_variable_accesses): Increment statistics counter by the
17565         number of scalarized aggregates.
17566         (generate_subtree_copies): Increment sra_stats.subtree_copies.
17567         (sra_modify_expr): Increment sra_stats.exprs.
17568         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
17569         (sra_modify_assign): Increment sra_stats.exprs,
17570         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
17571         (perform_intra_sra): Update statistics counters.
17572         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
17573
17574 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17575
17576         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
17577         (arm_scalar_mode_supported_p): New function.
17578
17579 2009-06-18  Paul Brook  <paul@codesourcery.com>
17580             Sandra Loosemore  <sandra@codesourcery.com>
17581
17582         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
17583         (__extendhfsf2, __truncsfhf2): Define.
17584         * config/arm/fp16.c: New file.
17585         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
17586         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
17587
17588 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17589
17590         * doc/extend.texi (Half-Precision): New section.
17591         * doc/invoke.texi (Option Summary): List -mfp16-format.
17592         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
17593         * config/arm/arm.opt (mfp16-format=): New.
17594         * config/arm/arm.c: Include intl.h.
17595         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
17596         (TARGET_INVALID_RETURN_TYPE): Redefine.
17597         (TARGET_PROMOTED_TYPE): Redefine.
17598         (TARGET_CONVERT_TO_TYPE): Redefine.
17599         (arm_fp16_format): Define.
17600         (all_fpus): Add entry for neon-fp16.
17601         (fp_model_for_fpu): Likewise.
17602         (struct fp16_format): Declare.
17603         (all_fp16_formats): Define.
17604         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
17605         functions.
17606         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
17607         and no ldrh.
17608         (arm_legitimate_index_p): Treat HFmode like HImode.
17609         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
17610         (coproc_secondary_reload_class): Special-case HFmode.
17611         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
17612         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
17613         (arm_init_fp16_builtins): New.
17614         (arm_init_builtins): Call it.
17615         (arm_invalid_parameter_type): New.
17616         (arm_invalid_return_type): New.
17617         (arm_promoted_type): New.
17618         (arm_convert_to_type).
17619         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
17620         format.
17621         (arm_emit_fp16_const): New function.
17622         (arm_mangle_type): Mangle __fp16 as "Dh".
17623         * config/arm/arm.h (TARGET_VFPD32): Make it know about
17624         FPUTYPE_NEON_FP16.
17625         (TARGET_NEON_FP16): New.
17626         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
17627         (enum fputype): Add FPUTYPE_NEON_FP16.
17628         (enum arm_fp16_format_type): Declare.
17629         (arm_fp16_format): Declare.
17630         (LARGEST_EXPONENT_IS_NORMAL): Define.
17631         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
17632         * config/arm/arm-modes.def (HFmode): Define.
17633         * config/arm/vfp.md (*movhf_vfp): New.
17634         (extendhfsf2): New.
17635         (truncsfhf2): New.
17636         * config/arm/arm.md (fpu): Add neon_fp16.
17637         (floatsihf2, floatdihf2): New.
17638         (fix_trunchfsi2, fix_trunchfdi2): New.
17639         (truncdfhf2): New.
17640         (extendhfdf2): New.
17641         (movhf): New.
17642         (*arm32_movhf): New.
17643         (*thumb1_movhf): New.
17644         (consttable_2): Add check for HFmode constants.
17645         (consttable_4): Handle HFmode constants.
17646
17647 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
17648
17649         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
17650
17651 2009-06-17  Olivier Hainque  <hainque@adacore.com>
17652
17653         * collect2.c (main): Use CONST_CAST2 to perform char ** to
17654         const char ** conversion in AIX specific section.
17655
17656 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
17657
17658         * config/i386/i386.c (ix86_special_builtin_type): Remove
17659         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
17660         (bdesc_special_args): Updated.
17661         (ix86_init_mmx_sse_builtins): Likewise.
17662         (ix86_expand_special_args_builtin): Likewise.
17663
17664 2009-06-17  Richard Henderson  <rth@redhat.com>
17665
17666         * tree-pretty-print.c (maybe_dump_asm_name): New.
17667         (dump_decl_name): Use it.
17668         (PRINT_FUNCTION_NAME): Merge into...
17669         (dump_function_name): ... here.  Use maybe_dump_asm_name.
17670
17671 2009-06-17  Cary Coutant  <ccoutant@google.com>
17672
17673         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
17674         Change caller.
17675         * debug.c (struct gcc_debug_hooks): Change placeholder for
17676         source_line hook.
17677         (debug_nothing_int_charstar_int): Replaced by...
17678         (debug_nothing_int_charstar_int_bool): ...this.
17679         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
17680         source_line prototype.
17681         (debug_nothing_int_charstar_int): Replaced by...
17682         (debug_nothing_int_charstar_int_bool): ...this.
17683         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
17684         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
17685         Output is_stmt operand when necessary.
17686         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
17687         (notice_source_line): Add is_stmt parameter.
17688         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
17689         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
17690         Change callers.
17691         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
17692         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
17693
17694 2009-06-17  Ian Lance Taylor  <iant@google.com>
17695
17696         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
17697         Change all uses.
17698         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
17699         call uses.
17700
17701 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
17702
17703         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
17704         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
17705         tree_strip_sign_nop_conversions and
17706         tree_ssa_strip_useless_type_conversions rather than stripping
17707         the operations here.
17708         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
17709         Declare them.
17710         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
17711         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
17712         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
17713         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
17714         functions.
17715
17716 2009-06-17  Michael Eager  <eager@eagercon.com>
17717
17718         * config/rs6000/constraints.md (register_constraint "d"): New.
17719         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
17720         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
17721         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
17722         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
17723         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
17724         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
17725         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
17726         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
17727         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
17728         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
17729         __fctiwz): Same.
17730         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
17731         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
17732         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
17733         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
17734         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
17735         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
17736         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
17737         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
17738         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
17739         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
17740         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
17741         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
17742         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
17743         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
17744
17745 2009-06-16  Ian Lance Taylor  <iant@google.com>
17746
17747         * profile.c (total_num_never_executed): Don't define.
17748         (compute_branch_probabilities): Don't count or print
17749         num_never_executed.
17750         (init_branch_prob): Don't set total_num_never_executed.
17751         (end_branch_prob): Don't print total_num_never_executed.
17752
17753 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
17754
17755         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
17756
17757 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
17758
17759         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
17760         (nabstd2_fpr): Same.
17761
17762 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
17763
17764         * expr.c (expand_assignment): Change complex type check.
17765
17766 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
17767
17768         * doc/plugins.texi (Building GCC plugins): Added new section.
17769
17770 2009-06-17  Ian Lance Taylor  <iant@google.com>
17771
17772         * c-pch.c (get_ident): Don't set size of templ array.
17773         (pch_init): Don't set size of partial_pch array.
17774
17775         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
17776         string constant to intialize an array whose size is the length of
17777         the string.
17778
17779 2009-06-17  Richard Guenther  <rguenther@suse.de>
17780
17781         PR tree-optimization/40389
17782         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
17783         to addressable types.
17784         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
17785
17786 2009-06-17  Richard Guenther  <rguenther@suse.de>
17787
17788         PR middle-end/40460
17789         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
17790         if there is no evolution of left in the loop bail out.
17791         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
17792         chrec_fold_multiply.
17793
17794 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
17795             Janis Johnson  <janis187@us.ibm.com>
17796
17797         PR target/39254
17798         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
17799         for the symbol ref of a constant that is the source of a move
17800         - nor for any other not-obvious-label-ref constants.
17801
17802 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
17803
17804         * plugin.c (position_pass): Skip newly inserted pass during list
17805         traversal to avoid repeated insertion.
17806
17807 2009-06-16  Ian Lance Taylor  <iant@google.com>
17808
17809         * vec.h (VEC_stack_alloc): Define different version if
17810         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
17811         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
17812         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
17813         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
17814
17815 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
17816
17817         * config.gcc (extra_headers): Add ia32intrin.h for x86.
17818
17819         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
17820         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
17821         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
17822         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
17823         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
17824         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17825         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17826         (bdesc_special_args): Add __builtin_ia32_rdtsc and
17827         __builtin_ia32_rdtscp.
17828         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
17829         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
17830         and __builtin_ia32_rorhi.
17831         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
17832         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17833         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17834         (ix86_expand_args_builtin): Likewise.
17835         (ix86_expand_special_args_builtin): Likewise.
17836
17837         * config/i386/i386.md (UNSPECV_RDTSCP): New.
17838         (UNSPECV_RDTSC): Likewise.
17839         (UNSPECV_RDPMC): Likewise.
17840         (*bsr): Renamed to ...
17841         (bsr): This
17842         (*bsr_rex64): Renamed to ...
17843         (bsr_rex64): This.
17844         (rdpmc): New.
17845         (*rdpmc): Likewise.
17846         (*rdpmc_rex64): Likewise.
17847         (rdtsc): Likewise.
17848         (*rdtsc): Likewise.
17849         (*rdtsc_rex64): Likewise.
17850         (rdtscp): Likewise.
17851         (*rdtscp): Likewise.
17852         (*rdtscp_rex64): Likewise.
17853
17854         * config/i386/ia32intrin.h: New.
17855
17856         * config/i386/x86intrin.h: Include <ia32intrin.h>.
17857
17858 2009-06-16  Ian Lance Taylor  <iant@google.com>
17859
17860         * ira-build.c (copy_info_to_removed_store_destinations):
17861         Initialize parent_a.
17862
17863 2009-06-16  Ian Lance Taylor  <iant@google.com>
17864
17865         * c-decl.c (grokdeclarator): Change size_varies to bool.
17866
17867 2009-06-16  Ian Lance Taylor  <iant@google.com>
17868
17869         * sel-sched.c: Make forward declarations of move_op_hooks and
17870         fur_hooks explicitly extern.
17871
17872 2009-06-16  Ian Lance Taylor  <iant@google.com>
17873
17874         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
17875         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
17876
17877 2009-06-16  Ian Lance Taylor  <iant@google.com>
17878
17879         * resource.c (mark_referenced_resources): Change
17880         include_delayed_effects parameter to bool.  Change all callers.
17881         (mark_end_of_function_resources): Likewise.
17882         * reorg.c (insn_references_resource_p): Likewise.
17883         (insn_sets_resource_p): Likewise.
17884         * resource.h (mark_referenced_resources): Update declaration.
17885         (mark_end_of_function_resources): Update declaration.
17886
17887 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17888
17889         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
17890
17891 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17892
17893         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
17894         GCC can bootstrap on AIX with GNU Binutils 2.20.
17895
17896 2009-06-16  Ian Lance Taylor  <iant@google.com>
17897
17898         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
17899
17900 2009-06-16  Ian Lance Taylor  <iant@google.com>
17901
17902         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
17903         inline, not extern inline.
17904         (exact_log2): Likewise.
17905         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
17906         test CLZ_HWI.
17907         (exact_log2): Likewise, but don't test CTZ_HWI.
17908
17909 2009-06-16  Ian Lance Taylor  <iant@google.com>
17910
17911         * bitmap.c (bitmap_clear): Don't declare as inline.
17912         * gimple.c (gimplify_assign): Likewise.
17913         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
17914         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
17915         (sched_scan_info): Remove duplicate definition.
17916
17917 2009-06-16  Ian Lance Taylor  <iant@google.com>
17918
17919         * c-common.c (skip_evaluation): Don't define.
17920         (c_inhibit_evaluation_warnings): Define global variable.
17921         (overflow_warning): Check c_inhibit_evaluation_warnings rather
17922         than skip_evaluation.
17923         (convert_and_check, warn_for_div_by_zero): Likewise.
17924         * c-common.h (skip_evaluation): Don't declare.
17925         (c_inhibit_evaluation_warnings): Declare.
17926         * c-parser.c (c_parser_typeof_specifier): Set
17927         c_inhibit_evaluation_warnings rather than skip_evaluation.
17928         (c_parser_conditional_expression): Likewise.
17929         (c_parser_binary_expression): Likewise.
17930         (c_parser_sizeof_expression): Likewise.
17931         (c_parser_alignof_expression): Likewise.
17932         * c-typeck.c (build_indirect_ref): Check
17933         c_inhibit_evaluation_warnings rather than skip_evaluation.
17934         (build_conditional_expr, build_binary_op): Likewise.
17935
17936 2009-06-16  Richard Guenther  <rguenther@suse.de>
17937
17938         * tree-ssa-alias.c (is_escape_site): Remove.
17939         * tree-ssa-alias.h (enum escape_type): Remove.
17940         (is_escape_site): Likewise.
17941         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
17942         via casts and asms without deferring to is_escape_site.
17943
17944 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
17945
17946         PR middle-end/40446
17947         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
17948         use gen_lowpart if op0 has complex mode.
17949
17950 2009-06-16  Richard Guenther  <rguenther@suse.de>
17951
17952         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
17953         variables add them to ESCAPED.
17954         (find_func_aliases): Do not make all indirectly stored values escaped.
17955
17956 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
17957
17958         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
17959         make_decl_one_only.
17960
17961 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17962
17963         PR tree-optimization/40432
17964         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
17965         check whether we need to force gimple register operand.
17966
17967 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17968
17969         PR tree-optimization/40413
17970         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
17971         build_ref_for_offset.
17972         (propagate_subacesses_accross_link): Fix a typo in a comment.
17973
17974 2009-06-16  Ira Rosen  <irar@il.ibm.com>
17975
17976         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
17977         with additional parameter.
17978         * tree-vectorizer.h (enum vect_def_type): Add new value
17979         vect_nested_cycle.
17980         (enum vect_relevant): Add comments.
17981         (vect_is_simple_reduction): Add new argument.
17982         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
17983         Detect nested cycles.
17984         (vect_is_simple_reduction): Update documentation, add an argument to
17985         distinguish inner-loop reduction from nested cycle, detect nested
17986         cycles, fix printings and indentation, don't swap operands in case
17987         of nested cycle.
17988         (get_initial_def_for_reduction): Handle subtraction.
17989         (vect_create_epilog_for_reduction): Add new argument to specify
17990         reduction variable.
17991         (vect_finalize_reduction): Handle subtraction, fix comments.
17992         (vectorizable_reduction): Handle nested cycles. In case of nested
17993         cycle keep track of the reduction variable position. Call
17994         vect_is_simple_reduction with additional parameter. Use original
17995         statement code in reduction epilogue for nested cycle. Call
17996         vect_create_epilog_for_reduction with additional parameter.
17997         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
17998         inner-loop vectorization.
17999         (vect_recog_widen_sum_pattern): Likewise.
18000         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
18001         and reductions.
18002         (vect_mark_stmts_to_be_vectorized): Likewise.
18003         (vect_get_vec_def_for_operand): Handle nested cycles.
18004
18005 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18006
18007         * doc/invoke.texi (Debugging Options): Fix option index entries
18008         for -fdump-statistics, -frandom-seed add entries for
18009         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
18010         (FRV Options): Fix entries for -mTLS, -mtls.
18011         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
18012         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
18013         (M68hc1x Options): Fix @itemx for -mnominmax.
18014         (MCore Options): Fix entry for -mno-lsim.
18015         (MMIX Options): Fix entry for -mabi=mmixware.
18016         (PDP-11 Options): Fix entry for -mbcopy-builtin.
18017
18018 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
18019
18020         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
18021         Mention the plugin mode of gengtype.
18022         * doc/gty.texi (Source Files Containing Type Information): Likewise.
18023         * gengtype.c: Updated copyright.
18024         (plugin_files, nb_plugin_files) Added new static variables.
18025         (measure_input_list) Care about plugin_files.
18026         (write_rtx_next): Added early return in plugin mode.
18027         (create_file): Updated copyright year in generated file. Added
18028         asserts.
18029         (oprintf): Added early return if NULL outf.
18030         (get_output_file_with_visibility): Care of plugin_files.
18031         (get_output_file_name): May return null.
18032         (write_local): Added early return.
18033         (put_mangled_filename): Ditto.
18034         (finish_root_table): Added check for base_files.
18035         (write_roots): Care about null when plugins.
18036         (main): Added plugin mode.
18037
18038 2009-06-15  Ian Lance Taylor  <iant@google.com>
18039
18040         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
18041         * gcov.c (read_count_file): Add braces around variables declared
18042         before label.
18043
18044         * c.opt (Wjump-misses-init): New warning.
18045         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
18046         -Wall and -Wc++-compat if not already set.
18047         (c_common_post_options): Clear warn_jump_misses_init if it was not
18048         set.
18049         * c-decl.c (struct c_binding): Change type field to a union with
18050         new label field.  Make it the first field in the struct.  Update
18051         references to type to use u.type instead.
18052         (struct c_spot_bindings): Define.
18053         (struct c_goto_bindings): Define.
18054         (c_goto_bindings_p): Define, along with VECs.
18055         (struct c_label_vars): Define.
18056         (struct c_scope): Add has_label_bindings field.
18057         (bind_label, set_spot_bindings): New static functions.
18058         (decl_jump_unsafe, update_spot_bindings): New static functions.
18059         (update_label_decls): New static function.
18060         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
18061         Update binding u.label field to shadowed field.
18062         (c_binding_start_stmt_expr): New function.
18063         (c_binding_end_stmt_expr): New function.
18064         (pushdecl): Don't call c_begin_vm_scope.
18065         (make_label): Add defining and p_label_vars parameters.  Change
18066         all callers.
18067         (lookup_label): Correct test for whether a label has not yet been
18068         defined.  Call bind_label rather than bind.
18069         (warn_about_goto): New static function.
18070         (lookup_label_for_goto): New function.
18071         (declare_label): Call bind_label rather than bind.
18072         (check_earlier_gotos): New static function.
18073         (define_label): Don't give errors about jumping into statement
18074         expressions or scopes of variably modified types.  Call
18075         set_spot_bindings and check_earlier_gotos.  Call bind_label
18076         instead of bind.  Don't set label_context_stack_se or
18077         label_context_stack_vm.
18078         (c_get_switch_bindings): New function.
18079         (c_release_switch_bindings): New function.
18080         (c_check_switch_jump_warnings): New function.
18081         (start_function): Don't set label_context_stack_se or
18082         label_context_stack_vm.
18083         (finish_function): Likewise.
18084         * c-typeck.c (label_context_stack_se): Don't define.
18085         (label_context_stack_vm): Don't define.
18086         (c_finish_goto_label): Call lookup_label_for_goto rather than
18087         lookup_label.  Don't give errors about jumping into a statement
18088         expression or the scope of a variably modified type.  Don't set
18089         label_context_stack_se or label_context_stack_vm.
18090         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
18091         fields.  Add bindings field.
18092         (c_start_case): Don't set deleted fields.  Set bindings field.
18093         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
18094         or blocked_vm.  Call c_check_switch_jump_warnings.
18095         (c_finish_case): Don't test blocked_stmt_expr field.  Call
18096         c_release_switch_bindings.
18097         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
18098         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18099         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
18100         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
18101         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18102         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
18103         (c_begin_vm_scope, c_end_vm_scope): Don't define.
18104         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
18105         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
18106         (C_DECL_UNJUMPABLE_VM): Don't define.
18107         (C_DECL_UNDEFINABLE_VM): Don't define.
18108         (struct c_label_list): Don't define.
18109         (struct c_label_context_se): Don't define.
18110         (struct c_label_context_vm): Don't define.
18111         (struct c_spot_bindings): Declare.
18112         (c_bindings_start_stmt_expr): Declare.
18113         (c_bindings_end_stmt_expr): Declare.
18114         (lookup_label_for_goto): Declare.
18115         (c_get_switch_bindings, c_release_switch_bindings): Declare.
18116         (c_check_switch_jump_warnings): Declare.
18117         (label_context_stack_se, label_context_stack_vm): Don't declare.
18118         (c_finish_goto_label): Update declaration.
18119         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
18120         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
18121         (Warning Options): Document -Wjump-misses-init.
18122
18123 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
18124
18125         * tree-object-size.c (addr_object_size): Fix a pasto in the last
18126         change.
18127
18128 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18129
18130         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
18131
18132 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18133
18134         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
18135
18136 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18137
18138         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
18139
18140 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18141
18142         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
18143         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
18144         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
18145         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
18146         * dwarf2asm.c (dw2_force_const_mem): Update call to
18147         make_decl_one_only.
18148         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
18149         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
18150         * langhooks.c (lhd_comdat_group): Remove.
18151         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
18152         * tree.h (DECL_COMDAT_GROUP): New.
18153         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
18154         (tree_decl_with_vis): Add comdat_group. Remove one_only.
18155         (make_decl_one_only): Change signature.
18156         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
18157         make_decl_one_only.
18158         (make_decl_one_only): Change signature.
18159         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
18160
18161 2009-06-15  Richard Guenther  <rguenther@suse.de>
18162
18163         PR middle-end/40439
18164         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
18165
18166 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18167
18168         * tree-ssa-math-opts.c: Remove extra divide.
18169
18170 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18171
18172         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
18173
18174 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18175
18176         * passes.c: Add bswap pass.
18177         * tree-pass.h: Add pass_optimize_bswap declaration.
18178         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
18179         Include rtl.h, expr.h and optabs.h for optab_handler check.
18180         (struct symbolic_number, pass_optimize_bswap): New definition.
18181         (do_shift_rotate, verify_symbolic_number_p): New functions.
18182         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
18183         (gate_optimize_bswap): New function.
18184         * tree.c (widest_int_cst_value): New function.
18185         * tree.h (widest_int_cst_value): Prototype added.
18186
18187 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
18188
18189         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
18190         REG_EQUAL/REG_EQUIV notes.
18191
18192 2009-06-14  Richard Guenther  <rguenther@suse.de>
18193
18194         PR middle-end/40389
18195         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
18196         has its address taken if NRV was applied and it is addressable.
18197         * tree-ssa-structalias.c (get_constraint_for_address_of): New
18198         function split out from ...
18199         (get_constraint_for_1): ... here.
18200         (handle_rhs_call): Use it to mark the return slot escaped if
18201         it is addressable and NRV was applied.
18202
18203 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18204
18205         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
18206         Change first argument type to location_t.
18207         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
18208         Do not set input_location.
18209         Use loc instead of input_location throughout.
18210
18211 2009-06-13  Richard Guenther  <rguenther@suse.de>
18212
18213         PR tree-optimization/40421
18214         * tree-predcom.c (should_unroll_loop_p): Remove.
18215         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
18216
18217 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
18218
18219         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18220         Add location argument.
18221
18222 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18223
18224         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
18225         build_decl.
18226         * config/s390/s390.c (s390_build_builtin_va_list): Same.
18227         (s390_gimplify_va_arg): Pass location to create_artificial_label.
18228         * config/spu/spu-protos.h: Add location to
18229         spu_resolve_overloaded_builtin.
18230         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
18231         spu_build_builtin_va_list.
18232         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
18233         argument.  Pass location to build_function_call_vec.
18234         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
18235         build_decl.
18236         (emit_fpu_switch): Same.
18237         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
18238         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
18239         to build_decl and create_artificial_label.
18240         (xtensa_gimplify_va_arg_expr): Same.
18241         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
18242         (xstormy16_gimplify_va_arg_expr): Same.
18243         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
18244         * config/arm/arm.c (arm_build_builtin_va_list): Same.
18245         * config/mips/mips.c (mips_build_builtin_va_list): Same.
18246         (mips16_build_function_stub): Same.
18247         (mips16_build_call_stub): Same.
18248
18249 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
18250
18251         PR target/40327
18252         * arm/constraints.md (Pa, Pb): New constraints.
18253         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
18254         split pattern to deal with them.
18255
18256 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
18257
18258         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
18259         fix index entry for -Xpreprocessor.
18260
18261 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18262
18263         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18264         Add location argument to build_decl call.
18265         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
18266         (rs6000_init_builtins): Same.
18267         (spe_init_builtins): Same.
18268         (rs6000_gimplify_va_arg): Add location argument to
18269         create_artificial_label call.
18270
18271 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
18272
18273         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
18274         * combine-stack-adj.c (pass_stack_adjustments): Use it.
18275         * Makefile.in: Fix GGC dependency for gcse.o.
18276
18277 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18278
18279         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
18280         * gimple-pretty-print.c (dump_gimple_stmt): Same.
18281         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
18282         created.
18283         * c-parser.c (c_parser_binary_expression): Use current column while
18284         building binary operations.
18285         * common.opt (fshow-column): Enable by default.
18286         * tree-vrp.c (check_array_ref): Use warning_at.
18287         (check_array_bounds): Use location from call back if expr has no
18288         location.
18289         * tree.h: Add location argument to maybe_fold_*.
18290         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
18291         (maybe_fold_offset_to_array_ref): Add location argument and use it.
18292         (maybe_fold_offset_to_component_ref): Same.
18293         (maybe_fold_offset_to_reference): Same.
18294         (maybe_fold_offset_to_address): Same.
18295         (maybe_fold_stmt_indirect): Same.
18296         (maybe_fold_stmt_addition): Same.
18297         (fold_stmt_r): Pass location to maybe_fold_*.
18298         (fold_gimple_assign): Same.
18299         * c-tree.h: Add location argument to finish_decl,
18300         default_function_array_conversion, store_init_value.
18301         * c-decl.c (define_label): Use error_at.
18302         (c_make_fname_decl): Pass location to finish_decl.
18303         (finish_decl): New location argument.
18304         (build_compound_literal): Pass location to store_init_value.
18305         (grokdeclarator): Pass location to finish_decl.
18306         (grokfield): Same.
18307         * c-typeck.c (array_to_pointer_conversion): New location argument.
18308         (function_to_pointer_conversion): Same.
18309         (default_function_array_conversion): Same.
18310         (parser_build_unary_op): Pass location to overflow_warning.
18311         (parser_build_binary_op): Same.  Use warning_at.
18312         (build_unary_op): Pass location to array_to_pointer_conversion.
18313         (build_c_cast): Pass location to digest_init.
18314         (build_modify_expr): New location argument.
18315         (convert_for_assignment): Same.
18316         (store_init_value): Same.
18317         (digest_init): Same.
18318         (output_init_element): Pass location to digest_init and
18319         array_to_pointer_conversion.
18320         (c_finish_return): Pass location to convert_for_assignment.
18321         * gimplify.c (gimplify_conversion): Pass location to
18322         maybe_fold_offset_to_address.
18323         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
18324         to maybe_fold_stmt_addition.
18325         * c-omp.c (c_finish_omp_atomic): Pass new location to
18326         build_modify_expr.
18327         (c_finish_omp_for): Same.
18328         * c-common.c (overflow_warning): New argument.
18329         * c-common.h: New argument to build_modify_expr, overflow_warning.
18330         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
18331         finish_decl.
18332         (c_parser_initializer): Pass location to
18333         default_function_array_conversion.
18334         (c_parser_initelt): Same.
18335         (c_parser_initval): Same.
18336         (c_parser_asm_operands): Same.
18337         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
18338         (c_parser_conditional_expression): Same.
18339         (c_parser_binary_expression): Add location info to stack.  Use it.
18340         (c_parser_unary_expression): Pass location to
18341         default_function_array_conversion, parser_build_unary_op,
18342         build_indirect_ref, c_parser_postfix_expression_after_primary.
18343         (c_parser_postfix_expression_after_primary): New location argument.
18344         Use it.
18345         (c_parser_expression_conv): Pass location to
18346         default_function_array_conversion.
18347         (c_parser_expr_list): Same.
18348         (c_parser_omp_atomic): Same.
18349         (c_parser_omp_for_loop): Same.
18350         * c-tree.h (struct c_declarator): Add comment to id_loc.
18351         (build_array_declarator): New argument.
18352         * c-decl.c (build_array_declarator): Add location argument.
18353         (grokdeclarator): Set id_loc for cdk_array.
18354         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
18355         build_array_declarator.
18356         * tree.c (build_omp_clause): Add location argument.
18357         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
18358         (OMP_CLAUSE_LOCATION): New macro.
18359         (struct tree_omp_clause): Add location field.
18360         (build_omp_clause): Add argument.
18361         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
18362         build_omp_clause.
18363         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
18364         (cp_parser_omp_clause_collapse): Same.
18365         (cp_parser_omp_clause_default): Same.
18366         (cp_parser_omp_clause_if): Same.
18367         (cp_parser_omp_clause_nowait): Same.
18368         (cp_parser_omp_clause_num_threads): Same.
18369         (cp_parser_omp_clause_ordered): Same.
18370         (cp_parser_omp_clause_schedule): Same.
18371         (cp_parser_omp_clause_untied): Same.
18372         (cp_parser_omp_for_loop): Same.
18373         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18374         * c-tree.h (c_start_case): Add location argument.
18375         (c_process_expr_stmt): Same.
18376         (c_finish_goto_*): Same.
18377         * tree-parloops.c (initialize_reductions): Pass location to
18378         build_omp_clause.
18379         (create_parallel_loop): Same.
18380         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
18381         (gfc_trans_omp_reduction_list): Same.
18382         (gfc_trans_omp_clauses): Same.
18383         (gfc_trans_omp_do): Same.
18384         * c-typeck.c (c_finish_goto_label): Same.
18385         (c_finish_goto_ptr): New location argument.
18386         (c_start_case): Same.
18387         (emit_side_effect_warnings): Same.
18388         (c_process_expr_stmt): Same.
18389         (c_finish_stmt_expr): Same.
18390         (c_finish_omp_clauses): Use error_at instead of error.
18391         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
18392         build_omp_clause.
18393         * c-omp.c (c_split_parallel_clauses): New location argument.
18394         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
18395         to build_omp_clause.
18396         (convert_local_reference_stmt): Same.
18397         (convert_gimple_call): Same.
18398         * c-common.h (c_split_parallel_clauses): New argument.
18399         * c-parser.c (c_parser_statement_after_labels): Pass location to
18400         c_finish_goto_label.
18401         (c_parser_switch_statement): Pass location to c_start_case.
18402         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
18403         and c_process_expr_stmt.
18404         (c_parser_omp_variable_list): Add location argument.
18405         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
18406         (c_parser_omp_clause_default): Same.
18407         (c_parser_omp_clause_if): Same.
18408         (c_parser_omp_clause_num_threads): Same.
18409         (-c_parser_omp_clause_ordered): Same.
18410         (c_parser_omp_clause_reduction): Pass location to
18411         c_parser_omp_variable_list.
18412         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
18413         (c_parser_omp_clause_untied): Same.
18414         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
18415         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18416
18417         * c-tree.h (check_for_loop_decls, undeclared_variable,
18418         build_component_ref, build_array_ref, build_external_ref,
18419         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
18420         build_conditional_expr, build_compound_expr, c_cast_expr,
18421         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
18422         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
18423         argument.
18424         * c-semantics.c (build_stmt): Same.
18425         (build_case_label): Same.
18426         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
18427         (undeclared_variable): New argument.
18428         (make_label): Same.
18429         (lookup_label): Pass location on down.
18430         (define_label): Same.
18431         (finish_decl): Same.
18432         (build_compound_literal): Same.
18433         (finish_struct): Same.
18434         (finish_function): Do not set location here.
18435         (check_for_loop_decls): New argument.
18436         * tree.c (save_expr): Set location.
18437         (build_empty_stmt): New argument.
18438         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
18439         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
18440         * builtins.c (gimplify_va_arg_expr): Use locations.
18441         (expand_builtin_sync_operation): Same.
18442         * c-typeck.c (build_component_ref): New argument.
18443         (build_array_ref): Same.
18444         (build_external_ref): Same.
18445         (c_expr_sizeof_expr): Same.
18446         (c_expr_sizeof_type): Same.
18447         (parser_build_unary_op): Same.
18448         (build_conditional_expr): Same.
18449         (build_compound_expr): Pass location on down.
18450         (build_compound_expr): New argument.
18451         (build_c_cast): Same.
18452         (c_cast_expr): Same.
18453         (build_asm_expr): Same.
18454         (c_finish_return): Same.
18455         (c_process_expr_stmt): Pass location on down.
18456         (c_finish_stmt_expr): New argument.
18457         (push_clenaup): Same.
18458         (c_finish_omp_parallel): Same.
18459         (c_finish_omp_task): Same.
18460         * gimplify.c (gimplify_call_expr): Pass location on down.
18461         * c-omp.c (c_finish_omp_master): New argument.
18462         (c_finish_omp_critical): Same.
18463         (c_finish_omp_ordered): Same.
18464         (c_finish_omp_barrier): Same.
18465         (-c_finish_omp_taskwait): Same.
18466         (c_finish_omp_atomic): Same.
18467         (c_finish_omp_flush): Same.
18468         * tree-inline.c (copy_tree_body_r): Pass location on down.
18469         (inline_forbidden_p): Remove use of input_location.
18470         * c-gimplify.c (c_build_bind_expr): New argument.
18471         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
18472         (c_sizeof_or_alignof_type): New argument.
18473         (c_alignof_expr): Same.
18474         (build_va_arg): Same.
18475         (c_add_case_label): Same.
18476         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
18477         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
18478         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
18479         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
18480         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
18481         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
18482         New argument.
18483         * stub-objc.c (objc_build_selector_expr): Same.
18484         (objc_build_throw_stmt): Same.
18485         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
18486         (c_parser_initelt): Same.
18487         (c_parser_compound_statement): Same.
18488         (c_parser_compound_statement_nostart): Same.
18489         (c_parser_label): Same.
18490         (c_parser_statement_after_labels): Same.
18491         (c_parser_if_body): Same.
18492         (c_parser_else_body): Same.
18493         (c_parser_if_statement): Same.
18494         (c_parser_switch_statement): Same.
18495         (c_parser_while_statement): Same.
18496         (c_parser_do_statement): Same.
18497         (c_parser_for_statement): Same.
18498         (c_parser_asm_statement): Same.
18499         (c_parser_conditional_expression): Same.
18500         (c_parser_binary_expression): Same.
18501         (c_parser_cast_expression): Same.
18502         (c_parser_unary_expression): Same.
18503         (c_parser_sizeof_expression): Same.
18504         (c_parser_alignof_expression): Same.
18505         (c_parser_postfix_expression): Same.
18506         (c_parser_expression): Same.
18507         (c_parser_objc_receiver): Same.
18508         (c_parser_omp_variable_list): Same.
18509         (c_parser_omp_structured_block): Same.
18510         (c_parser_omp_atomic): New argument.
18511         (c_parser_omp_barrier): Same.
18512         (c_parser_omp_critical): Same.
18513         (c_parser_omp_flush): Pass location on down.
18514         (c_parser_omp_for_loop): New argument.
18515         (c_parser_omp_for): Same.
18516         (c_parser_omp_master): Same.
18517         (c_parser_omp_ordered): Same.
18518         (c_parser_omp_sections_scope): Same.
18519         (c_parser_omp_sections): Same.
18520         (c_parser_omp_parallel): Same.
18521         (c_parser_omp_single): Same.
18522         (c_parser_omp_task): Same.
18523         (c_parser_omp_taskwait): Pass location on down.
18524         (c_parser_omp_construct): Same.
18525         (c_parser_omp_threadprivate): Same.
18526         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
18527         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
18528         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
18529         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
18530         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
18531         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
18532         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
18533         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
18534         config/i386/i386.c, stmt.c:
18535         Add location argument to the following function definitions and/or
18536         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
18537         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
18538         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
18539         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
18540         do_case, c_finish_bc_stmt, build_compound_literal,
18541         build_function_call.
18542         * c-decl.c (build_compound_literal): Add location argument.
18543         Make all diagnostic calls use location.
18544         (start_struct): Same.
18545         (finish_struct): Same.
18546         (start_enum): Same.
18547         (build_enumerator): Same.
18548         (start_function): Same.
18549         (grokdeclarator): Make all diagnostic calls use location.
18550         (store_parm_decls_oldstyle): Same.
18551         * c-typeck.c (build_function_call): Add location argument.
18552         Make all diagnostic calls use location.
18553         (do_case): Same.
18554         (c_finish_bc_stmt): Same.
18555         * tree-nested.c (get_trampoline_type): Add argument.
18556         Pass location to build_decl.
18557         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
18558         * rtl.h (RTL_LOCATION): New.
18559         * c-common.c (c_add_case_label): Add location argument.
18560         Make all diagnostic calls use location.
18561         * c-common.h: Add location argument to make_fname_decl, do_case,
18562         c_add_case_label, build_function_call, resolve_overloaded_builtin.
18563         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
18564         Set it appropriately for every case.  Pass enum_loc to start_enum
18565         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
18566         parser_xref_tag.
18567         (c_parser_struct_or_union_specifier): Save location.  Use it for
18568         start_struct, finish_struct, and parser_xref_tag.
18569
18570 2009-06-12  Ian Lance Taylor  <iant@google.com>
18571
18572         * fold-const.c (fold_unary): Rename local variable and to and_expr.
18573
18574         * c-opts.c (c_common_handle_option): For -Wc++-compat set
18575         cpp_opts->warn_cxx_operator_names.
18576
18577 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18578
18579         PR tree-opt/38865
18580         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
18581         is returns NULL and OP is a VCE, look through the VCE.
18582
18583 2009-06-12  Ian Lance Taylor  <iant@google.com>
18584
18585         PR bootstrap/40430
18586         * collect2.c (main): Use CONST_CAST2 in code inside #if
18587         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
18588
18589 2009-06-12  Joey Ye  <joey.ye@intel.com>
18590
18591         PR middle-end/39146
18592         * cfgexpand.c (get_decl_align_unit): Update
18593         max_used_stack_slot_alignment with align instead of
18594         stack_alignment_needed.
18595
18596         * function.c (assign_stack_local_1): Update
18597         max_used_stack_slot_alignment with alignment_in_bits instead
18598         of stack_alignment_needed.
18599         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
18600         here.
18601
18602 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
18603
18604         * dwarf2out.c (last_var_location_insn): New variable.
18605         (dwarf2out_end_epilogue): Clear last_var_location_insn.
18606         (dwarf2out_var_location): Don't record anything after last real
18607         insn.  Only change labels if there were any real instructions
18608         in between last note and this one, or if changed sections.
18609
18610 2009-06-11  Richard Henderson  <rth@redhat.com>
18611
18612         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
18613         note when storing the frame pointer in a register.
18614         (FRP): Don't redefine to nothing for epilogue.
18615         (alpha_expand_epilogue): Mark register and sp restores.
18616         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18617
18618         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
18619         when gen_lowpart is needed.
18620
18621 2009-06-11  Richard Henderson  <rth@redhat.com>
18622
18623         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
18624
18625         * dwarf2out.c (need_data_align_sf_opcode): New.
18626         (div_data_align): Move earlier.
18627         (def_cfa_1, reg_save): Use it.
18628
18629 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
18630
18631         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
18632         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
18633         (ix86_handle_option): Handle OPT_mcrc32.
18634         (ix86_target_string): Add -mcrc32.
18635         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
18636
18637         * config/i386/i386.h (TARGET_CRC32): New.
18638
18639         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
18640         (sse4_2_crc32di): Likewise.
18641
18642         * config/i386/i386.opt (mcrc32): New.
18643
18644         * doc/invoke.texi: Document -mcrc32.
18645
18646 2009-06-11  Richard Henderson  <rth@redhat.com>
18647
18648         * common.opt (gdwarf-): Accept a version number.
18649         * doc/invoke.texi (gdwarf-): Update docs.
18650         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
18651         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
18652         version level, and record it.
18653
18654         * dwarf2.h (DW_CIE_VERSION): Remove.
18655         * dwarf2out.c (DWARF_VERSION): Remove.
18656         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
18657         (output_call_frame_info): Use CIE version 3 for dwarf3,
18658         or if the return register column is out of range for version 1.
18659         (dwarf_stack_op_name): Add all dwarf3 values.
18660         (DEBUG_PUBTYPES_SECTION): New.
18661         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
18662         encoding change for dwarf3.
18663         (output_die) [dw_val_class_die_ref]: Likewise.
18664         (output_compilation_unit_header): Emit correct version for dwarf3.
18665         (output_line_info): Likewise.
18666         (output_pubnames): Update for DWARF_VERSION removal.
18667         (output_aranges): Likewise.
18668         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
18669         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
18670         (dwarf2out_finish): Likewise.
18671
18672 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18673
18674         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
18675         in r148403.
18676
18677 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18678
18679         PR c/39252
18680         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
18681         * builtins.c (expand_builtin_unreachable): New function.
18682         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
18683         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
18684         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
18685         successors.
18686         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
18687         searching for missing barriers.
18688
18689 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18690
18691         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
18692         when -fprofile-generate* was passed.
18693         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18694
18695 2009-06-11  Anthony Green  <green@moxielogic.com>
18696
18697         * config/moxie/moxie.md: Define length attribute for all instructions.
18698         (rCC): Define.
18699         (*b<cond:code>): Support limited branch ranges for new PC-relative
18700         branch instructions.
18701         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
18702
18703 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
18704
18705         * config/i386/i386.c (min_insn_size): Use get_attr_length
18706         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
18707         For __asm return 0.
18708
18709         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
18710         instead of emit_insn_before.
18711
18712 2009-06-10  Ian Lance Taylor  <iant@google.com>
18713
18714         PR bootstrap/40408
18715         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
18716         GIMPLE_SWITCH.
18717
18718 2009-06-10  Revital Eres  <eres@il.ibm.com>
18719
18720         * passes.c (init_optimization_passes): Reschedule
18721         predictive-commoning pass before complete unroll pass.
18722
18723 2009-06-10  Martin Jambor  <mjambor@suse.cz>
18724
18725         * cgraph.c (cgraph_node_can_be_local_p): New function.
18726         (cgraph_make_node_local): New function.
18727         * cgraph.h (cgraph_node_can_be_local_p): Declare.
18728         (cgraph_make_node_local): Declare.
18729
18730 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
18731
18732         * tree.h (tree_base): Add packed_flag and user_align fields.
18733         Decrease size of spare field.
18734         (TYPE_USER_ALIGN): Use user_align from tree_base.
18735         (DECL_USER_ALIGN): Likewise.
18736         (TYPE_PACKED): Use packed_flag from tree_base.
18737         (DECL_PACKED): Likewise.
18738         (tree_type): Delete packed_flag and user_align fields.  Widen
18739         precision field.  Widen mode field and shuffle fields to align
18740         mode on an 8-bit boundary.
18741         (tree_decl_common): Delete decl_flag_1 and user_align fields.
18742         Renumber decl_flag_* fields.  Fix comments.  Widen
18743         decl_common_unused field.
18744         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
18745         (DECL_EXTERNAL): Likewise.
18746         (DECL_BIT_FIELD): Likewise.
18747         (DECL_NONADDRESSABLE_P): Likewise.
18748         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
18749         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
18750
18751 2009-06-10  Ian Lance Taylor  <iant@google.com>
18752
18753         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
18754         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
18755         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
18756         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
18757         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
18758         DEF_VEC_ALLOC_FUNC_P.
18759         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
18760         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
18761         DEF_VEC_ALLOC_FUNC_O.
18762         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
18763         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
18764         DEF_VEC_ALLOC_FUNC_I.
18765         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
18766         (vec_stack_p_reserve_exact_1): Declare.
18767         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
18768         (vec_stack_free): Declare.
18769         (VEC_stack_alloc): Define.
18770         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
18771         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
18772         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
18773         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
18774         for void_p.
18775         (stack_vecs): New static variable.
18776         (vec_stack_p_reserve_exact_1): New function.
18777         (vec_stack_o_reserve_1): New static function.
18778         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
18779         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
18780         (vec_stack_free): New function.
18781         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
18782         (VEC_df_ref_stack_alloc): Define.
18783         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
18784         DEF_VEC_ALLOC_P_STACK.
18785         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
18786         (struct df_collection_rec): Change _vec fields to VEC.  Remove
18787         _use fields.
18788         (df_free_collection_rec): Adjust for new fields.
18789         (df_insn_rescan): Use new df_collection_rec fields.
18790         (df_notes_rescan, df_canonize_collection_rec): Likewise.
18791         (df_ref_create_structure, df_ref_record): Likewise.
18792         (df_get_conditional_uses, df_get_call_refs): Likewise.
18793         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
18794         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
18795         (df_record_exit_block_uses, df_bb_verify): Likewise.
18796         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
18797         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
18798         Remove count parameter.  Change return type to void.  Change all
18799         callers.
18800         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
18801         Remove count parameter.  Change return type to void.  Change all
18802         callers.
18803         (df_install_refs): Change old_vec parameter to VEC.  Remove count
18804         parameter.  Change all callers.
18805         (df_install_mws): Change old_vec parameter to VEC.  Remove count
18806         parameter.  Change all callers.
18807         (df_refs_verify): Change new_rec parameter to VEC.  Change call
18808         callers.
18809         (df_mws_verify): Likewise.
18810
18811 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
18812
18813         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
18814
18815 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
18816
18817         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
18818
18819 2009-06-10  Anthony Green  <green@moxielogic.com>
18820
18821         * config/moxie/crti.asm: New file.
18822         * config/moxie/crtn.asm: New file.
18823         * config/moxie/moxie.c: New file.
18824         * config/moxie/moxie.h: New file.
18825         * config/moxie/sfp-machine.h: New file.
18826         * config/moxie/moxie-protos.h: New file.
18827         * config/moxie/t-moxie: Created.
18828         * config/moxie/t-moxie-softfp: Created.
18829         * config/moxie/moxie.md: Created.
18830         * config/moxie/constraints.md: Created.
18831         * config.gcc: Add moxie support.
18832         * doc/md.texi (Machine Constraints): Add moxie constraints.
18833         * doc/contrib.texi (Contributors): Mention moxie port.
18834         * doc/install.texi (Specific): Mention the moxie port.
18835
18836 2009-06-09  Ian Lance Taylor  <iant@google.com>
18837
18838         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
18839         compiling with C++.
18840         * optabs.c (optab_table): Only use designated initializers if
18841         HAVE_DESIGNATED_INITIALIZERS is defined.
18842         (convert_optab_table): Likewise.
18843         (init_optabs): Always call init_insn_codes if
18844         HAVE_DESIGNATED_INITIALIZERS is not defined.
18845
18846 2009-06-09  Ian Lance Taylor  <iant@google.com>
18847
18848         * targhooks.c (default_builtin_vectorized_function): Change fn
18849         parameter to unsigned int.
18850         (default_builtin_vectorized_conversion): Change code parameter to
18851         unsigned int.
18852         (default_builtin_reciprocal): Change fn parameter to unsigned int.
18853         * targhooks.h: Update declarations.
18854         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
18855         parameter to unsigned int.
18856
18857         * c-typeck.c (comptypes_check_enum_int): New static function.
18858         (comptypes_internal): Add enum_and_int_p parameter.  Change all
18859         callers.
18860         (comp_target_types): Add location parameter.  Change all callers.
18861         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
18862         Change all callers.
18863         (function_types_compatible_p, type_lists_compatible_p): Likewise.
18864         (build_conditional_expr): Add colon_loc parameter.  Change all
18865         callers.
18866         (convert_for_assignment): Add location parameter.  Change all callers.
18867         * c-parser.c (c_parser_conditional_expression): Pass location of
18868         colon to build_conditional_expr.
18869         * c-tree.h (build_conditional_expr): Update declaration.
18870
18871 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18872
18873         * graphite.c: Revert previous patch.
18874
18875 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18876
18877         PR bootstrap/40103
18878         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
18879
18880 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18881
18882         * tree-ssa-loop-prefetch.c
18883         (loop_prefetch_arrays): Fixed a portability problem in printf format
18884         string.
18885
18886 2009-06-09  Martin Jambor  <mjambor@suse.cz>
18887
18888         PR tree-optimization/40351
18889         * tree-sra.c (propagate_subacesses_accross_link): Check that a
18890         refrence to a potential artifical subaccess can be constructed.
18891
18892 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18893
18894         * config/sh/sh-protos.h (sh_optimization_options): Declare.
18895         (sh_override_options): Likewise.
18896         * config/sh/sh.c: Include params.h.
18897         (sh_optimization_options): New.
18898         (sh_override_options): Likewise.
18899         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
18900         (OVERRIDE_OPTIONS): Use sh_override_options.
18901
18902 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18903
18904         * dwarf2out.c (emit_cfa_remember): New variable.
18905         (add_fde_cfi): If emit_cfa_remember, recurse to add
18906         DW_CFA_remember_state first.
18907         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
18908         instead just set emit_cfa_remember.
18909
18910 2009-06-08  Jan Hubicka  <jh@suse.cz>
18911
18912         PR debug/40126
18913         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
18914
18915 2009-06-08  Jan Hubicka  <jh@suse.cz>
18916
18917         PR middle-end/39834
18918         * cgraphunit.c (save_inline_function_body): Do not copy transform
18919         hooks for saved inline bodies.
18920         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
18921         for given function.
18922
18923 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
18924
18925         * jump.c (returnjump_p): Handle delayed branches.  Add missing
18926         function comment.
18927
18928 2009-06-08  Jan Hubicka  <jh@suse.cz>
18929
18930         PR middle-end/40102
18931         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
18932         original node might've been modified.
18933         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
18934
18935 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18936
18937         * tree-object-size.c (addr_object_size): Add OSI argument.
18938         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
18939         (compute_builtin_object_size, expr_object_size): Adjust callers.
18940         (plus_stmt_object_size): Call addr_object_size instead of
18941         compute_builtin_object_size.
18942
18943 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18944             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18945
18946         * tree-ssa-loop-prefetch.c
18947         (gather_memory_references): Introduced a counter for the number of
18948         memory references.
18949         (anything_to_prefetch_p): Introduced a counter for the number of
18950         prefetches.
18951         (is_loop_prefetching_profitable): New function with a cost model
18952         for prefetching.
18953         (loop_prefetch_arrays): Use the new cost model to determine if
18954         prefetching is profitable.
18955         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
18956         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18957         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
18958         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18959         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
18960         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18961
18962 2009-06-08  Michael Matz  <matz@suse.de>
18963
18964         PR debug/40012
18965         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
18966         partitions use the same.
18967         (expand_one_var): Deal with DECL_RTL sometimes begin set also
18968         for basevars of SSA_NAMEs.
18969         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
18970         to not expand them twice.
18971         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
18972         multiple places.
18973
18974 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
18975
18976         * common.opt (fcompare-debug=, fcompare-debug-second): New.
18977         (fdump-final-insns=, gtoggle): New.
18978         * doc/invoke.texi: Document them.
18979         * final.c (rest_of_clean_state): Dump final insn stream.
18980         * gcc.c (invoke_as): Hook in -fcompare-debug.
18981         (static_spec_functions): Add compare-debug-dump-opt,
18982         compare-debug-self-opt and compare-debug-auxbase-opt.
18983         (compare_debug, compare_debug_second, compare_debug_opt): New.
18984         (switches_debug_check, n_switches_debug_check): New.
18985         (debug_auxbase_opt, debug_check_temp_file): New.
18986         (process_command): Handle -fno-compare-debug, -fcompare-debug and
18987         -fcompare-debug=*.
18988         (do_self_spec): Handle arguments after switches.
18989         (do_spec_1): Add .gk extension to temp file basenames for compare.
18990         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
18991         (cc1_options): Use it instead of normal auxbase computation for
18992         the second compare-debug compilation.
18993         (compare_files): New.
18994         (main): Set up and implement compare debug mode.
18995         (compare_debug_dump_opt_spec_function): New.
18996         (compare_debug_self_opt_spec_function): New.
18997         (compare_debug_auxbase_opt_spec_function): New.
18998         * toplev.c (process_options): Handle flag_gtoggle,
18999         flag_dump_final_insns.
19000         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
19001         during -fcompare-debug-second compilation.
19002
19003 2009-06-07  Ian Lance Taylor  <iant@google.com>
19004
19005         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
19006         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
19007
19008         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
19009         with no default node.  Change warning with %H to warning_at.
19010         Don't clear warn_switch around case checking.
19011         * doc/invoke.texi (Warning Options): Clarify distinction between
19012         -Wswitch and -Wswitch-enum.
19013
19014 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19015
19016         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
19017
19018 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19019
19020         * gbl-ctors.h: Add header guard.
19021
19022 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19023
19024         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
19025         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
19026         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
19027         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
19028         prototypes for removed functions.
19029         (expressions_equal_p): Move to ...
19030         * tree-ssa-sccvn.h: ... here and ...
19031         * matrix-reorg.c: ... adjust includes.
19032
19033 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19034
19035         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
19036
19037 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19038
19039         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
19040         (finish_function): Remove erroneous whitespace.
19041
19042 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19043
19044         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
19045         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
19046
19047 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19048
19049         * errors.c (internal_error): Commentary typo fix.
19050         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
19051         * tree-ssa-pre.c: Ditto.
19052
19053 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19054
19055         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
19056         them is supposed to hold actual statements.
19057
19058 2009-06-06  Ian Lance Taylor  <iant@google.com>
19059
19060         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
19061         empty statements can now have attributes.
19062
19063 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
19064
19065         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
19066         * config/mips/mips.md: Ditto.
19067
19068 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19069
19070         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
19071         _RELOCATABLE.
19072         (__eabi_uconvert): Likewise.
19073
19074 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19075
19076         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
19077         CFI_* definitions with IN_GCC.
19078
19079 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
19080
19081         * xcoffout.h (xcoffout_source_line): Update prototype.
19082
19083 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19084
19085         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
19086         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
19087
19088 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19089
19090         PR middle-end/40340
19091         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
19092         inlined_function_outer_scope_p blocks for artificial inlines
19093         even at -g0/-g1.
19094         * tree.c (tree_nonartificial_location): Rewrite using
19095         block_nonartificial_location.
19096
19097 2009-06-05  Revital Eres  <eres@il.ibm.com>
19098             Leehod Baruch  <leehod@il.ibm.com>
19099
19100         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
19101         (expand_expr_real_1): Remove comment.
19102         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
19103         Vectorize misaligned access when the target supports it.
19104         (vect_supportable_dr_alignment): Check for unaligned access support.
19105         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
19106         and remove asset.
19107
19108 2009-06-05  Julian Brown  <julian@codesourcery.com>
19109
19110         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
19111         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
19112
19113 2009-06-05  Richard Guenther  <rguenther@suse.de>
19114
19115         PR bootstrap/40350
19116         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
19117         as possibly unused.
19118
19119 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19120
19121         * config/s390/s390.c (global_not_special_regno_p): New static inline.
19122         (save_gprs): Don't tell unwinder when a global register is saved.
19123         (s390_emit_epilogue): Emit needed epilogue unwind info.
19124
19125 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19126
19127         * dwarf2out.c (deferred_asm_name): New.
19128         (add_name_and_src_coords_attributes): Defer creation of
19129         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
19130         computed yet.
19131         (move_linkage_attr): New.
19132         (dwarf2out_finish): Revisit deferrals and emit attributes at the
19133         right place.
19134
19135 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19136
19137         * tree-nested.c (finalize_nesting_tree_1): Declare the
19138         frame_decl in the binding tree.
19139
19140 2009-06-04  Cary Coutant  <ccoutant@google.com>
19141
19142         * basic-block.h (struct basic_block_def): Add discriminator field.
19143         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
19144         callers.
19145         * debug.c (do_nothing_debug_hooks): Add additional entry.
19146         (debug_nothing_int_charstar_int): New function.
19147         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
19148         (debug_nothing_int_charstar_int): New declaration.
19149         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
19150         discriminator value in .loc directive.
19151         * final.c (last_discriminator): New variable.
19152         (discriminator): New variable.
19153         (final_start_function): Initialize above variables, pass current
19154         discriminator to debug hook.
19155         (notice_source_line): Check for discriminator change.
19156         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
19157         * sdbout.c (sdbout_source_line): New parameter.
19158         * tree-cfg.c (struct locus_discrim_map): New structure type.
19159         (discriminator_per_locus): New hash table.
19160         (build_gimple_cfg): Allocate and free discriminator hash table.
19161         (make_edges): Call assign_discriminator.
19162         (locus_map_hash): New function.
19163         (locus_map_eq): New function.
19164         (next_discriminator_for_locus): New function.
19165         (same_line_p): New function.
19166         (assign_discriminator): New function.
19167         (make_cond_expr_edges): Call assign_discriminator.
19168         (make_gimple_switch_edges): Likewise.
19169         (first_non_label_stmt): New function.
19170         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
19171         all callers.
19172         * xcoffout.c (xcoffout_source_line): Add new parameter.
19173
19174         * configure.ac (gcc_cv_as_discriminator): New configury check for
19175         gas support for discriminator.
19176         * configure: Regenerate.
19177         * config.in: Regenerate.
19178
19179 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19180
19181         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
19182         val after checking for integers.
19183
19184 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
19185
19186         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
19187         X64_REGPARM_MAX.
19188         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
19189         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
19190         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
19191         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
19192         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
19193         X64_SSE_REGPARM_MAX.
19194         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
19195         X64_SSE_REGPARM_MAX.
19196
19197 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19198
19199         * gcc.c (report_times_to_file): New.
19200         (execute): Implement it.
19201         (process_command): Support -time=.
19202         * doc/invoke.texi: Document it.
19203
19204 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19205
19206         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
19207         that have value exprs.
19208
19209 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19210
19211         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
19212         declarations for constants until...
19213         (dw2_output_indirect_constant_1): ... this point.
19214
19215 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
19216
19217         PR target/10242
19218         * arm.md (arm_addsi3): Don't try to split an add with an
19219         eliminable register until after reload has completed.
19220
19221 2009-06-03  Ian Lance Taylor  <iant@google.com>
19222
19223         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
19224         * genattrtab.c (write_length_unit_log): Likewise.
19225         * genchecksum.c (dosum): Likewise.
19226         * gengtype.c (write_rtx_next): Likewise.
19227         (finish_root_table, write_roots): Likewise.
19228         * gimple.c (gimple_ops_offset_): Likewise.
19229         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
19230         * config/arc/arc.c (arc_attribute_table): Likewise.
19231         * config/arm/arm.c (arm_attribute_table): Likewise.
19232         * config/avr/avr.c (avr_attribute_table): Likewise.
19233         * config/crx/crx.c (crx_attribute_table): Likewise.
19234         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
19235         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
19236         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
19237         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
19238         * config/sh/sh.c (sh_attribute_table): Likewise.
19239         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
19240         * config/spu/spu.c (spu_attribute_table): Likewise.
19241         * config/v850/v850.c (v850_attribute_table): Likewise.
19242
19243         * config/alpha/alpha.c (vms_attribute_table): Make static.
19244         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
19245         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
19246         * config/mips/mips.c (mips_attribute_table): Likewise.
19247
19248         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
19249         $(SYSTEM_H).
19250         (cc1-checksum.o): Likewise.
19251
19252 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
19253
19254         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
19255
19256 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
19257
19258         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
19259         insn if it is changing sp.  Use gen_add3_insn instead of
19260         conditionally gen_addsi3 and gen_adddi3.
19261         (offset_below_red_zone_p): New static inline function.
19262         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
19263         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
19264         * config/rs6000/ppc-asm.h: Include auto-host.h.
19265         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
19266         CFI_RESTORE): Define.
19267         * config/rs6000/crtresxgpr.asm: Add unwind info.
19268         * config/rs6000/crtresxfpr.asm: Likewise.
19269         * config/rs6000/crtresgpr.asm: Likewise.
19270         * config/rs6000/crtresfpr.asm: Likewise.
19271         * config/rs6000/crtsavgpr.asm: Likewise.
19272         * config/rs6000/crtsavfpr.asm: Likewise.
19273
19274         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
19275         argument of DWARF2_FRAME_REG_OUT macros.
19276
19277 2009-06-03  Julian Brown  <julian@codesourcery.com>
19278
19279         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
19280         words or less (including TImode) in core registers.
19281
19282 2009-06-03  Richard Guenther  <rguenther@suse.de>
19283
19284         PR middle-end/40328
19285         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
19286
19287 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
19288
19289         * statistics.c (statistics_counter_event): Do not record event
19290         in pass dump if its number == -1.
19291         (curr_statistics_hash): Add assert that we never get passes
19292         with static number == -1.
19293
19294 2009-06-03  Richard Guenther  <rguenther@suse.de>
19295             Andrey Belevantsev  <abel@ispras.ru>
19296
19297         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
19298         non-BLKmode arrays addressable.
19299
19300 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
19301
19302         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
19303         * config/m68k/m68k.h: ... here.
19304
19305 2009-06-03  Martin Jambor  <mjambor@suse.cz>
19306
19307         PR tree-optimization/40323
19308         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
19309         assignment.
19310
19311 2009-06-03  Richard Guenther  <rguenther@suse.de>
19312
19313         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19314         consistently.
19315
19316 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
19317
19318         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
19319         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
19320         JUMP_TABLE_DATA_P where applicable.
19321         * config/sh/sh.c: Ditto.
19322         * config/sh/sh.h: Ditto.
19323         * config/sh/sh.md: Ditto.
19324         * config/sh/symbian.c: Ditto.
19325
19326 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
19327
19328         * config/i386/driver-i386.c (describe_cache): Optimize
19329         concatenation of strings.  Use snprintf instead of sprintf.
19330         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
19331         target when not compiling with GCC.
19332
19333 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
19334
19335         * config/sh/sh.c: Revert last change.
19336         (sh_expand_epilogue): Emit a blockage insn before the frame
19337         pointer adjustment unconditionally.
19338
19339 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19340
19341         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
19342         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
19343         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
19344         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
19345         to COLLECT_GCC_OPTIONS.
19346
19347 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19348
19349         * collect2.c (target_system_root): New variable.
19350         (main): Handle --sysroot=.
19351         (ignore_library): Strip the sysroot from the library path.
19352
19353 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19354
19355         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
19356         (collect2.o): Depend on collect2-aix.h.
19357         (collect2-aix.o): New rule.
19358         * collect2-aix.h: New file.
19359         * collect2-aix.c: Likewise.
19360         * collect2.c: Include collect2-aix.h.  Don't undefine
19361         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
19362         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
19363         Use TARGET_AIX_VERSION instead of _AIX51.
19364         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
19365         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
19366         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
19367         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
19368         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
19369
19370 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19371
19372         * collect2.c (ignore_library): Avoid premature post-increment
19373         and null deference.
19374
19375 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19376
19377         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
19378         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
19379         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
19380         CROSS_DIRECTORY_STRUCTURE too.
19381         (LINK_LIBG_SPEC): Likewise.
19382         (LIB_SPEC): Add %R to sysroot paths.
19383         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
19384         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
19385         * config/rs6000/aix51.h: As for aix43.h.
19386         * config/rs6000/aix52.h: Likewise.
19387         * config/rs6000/aix53.h: Likewise.
19388         * config/rs6000/aix61.h: Likewise.
19389         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
19390         to the beginning of sysroot paths.
19391
19392 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19393
19394         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
19395         INSN_LISTs that are out of the REG_NOTE range.
19396
19397 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19398
19399         * loop-unroll.c (struct iv_to_split): Add pointer to next.
19400         (struct var_to_expand): Likewise.
19401         (struct opt_info): Add head and tail for linked lists of the above.
19402         (analyze_insn_to_expand_var): Initialize next.
19403         (analyze_iv_to_split_insn): Likewise.
19404         (analyze_insns_in_loop): Create linked lists.
19405         (allocate_basic_variable): Simplify for use without hash table.
19406         (insert_var_expansion_initialization): Likewise, make it type-safer.
19407         (combine_var_copies_in_loop_exit): Likewise.
19408         (apply_opt_in_copies): Walk lists rather than hash tables.
19409         (release_var_copies): Simplified and inlined by hand into...
19410         (free_opt_info): ... this function.
19411
19412 2009-06-02  Richard Guenther  <rguenther@suse.de>
19413
19414         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19415         for field decls.
19416
19417 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19418
19419         * cfgexpand.c (gimple_expand_cfg): Discard the source location
19420         only for builtins that are not overridden.
19421
19422 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19423
19424         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
19425         label string.
19426
19427 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19428
19429         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
19430
19431 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19432
19433         * combine.c (move_deaths): Compare LUIDs within the same BB only.
19434
19435 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19436
19437         * common.opt (fdump-unnumbered-links): New.
19438         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
19439         * print-rtl.c (flag_dump_unnumbered_links): New.
19440         (print_rtx): Test it.
19441
19442 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
19443
19444         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
19445         push/pop multiple to 8-byte alignment.
19446
19447 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
19448
19449         * config/i386/i386.c (queued_cfa_restores): New static variable.
19450         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
19451         functions.
19452         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
19453         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
19454         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
19455         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
19456         note unconditionally.
19457         (ix86_emit_restore_regs_using_mov): Likewise.
19458         (ix86_emit_restore_sse_regs_using_mov): Likewise.
19459         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
19460         it through to ix86_emit_restore_reg_using_pop.
19461         (ix86_emit_leave): Add RED_OFFSET argument.  Call
19462         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
19463         instead of adding REG_CFA_OFFSET note unconditionally.
19464         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
19465         the above functions.  Call ix86_add_queued_cfa_restore_notes when
19466         needed.
19467
19468         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
19469         force output of the label even for dwarf2out_do_cfi_asm.
19470         (add_fde_cfi): If -g2 and above and cfi might change CFA,
19471         force creation of CFI label and chain DW_CFA_set_loc jumping to it
19472         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
19473         caller.
19474         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
19475         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
19476         dwarf2out_cfi_label callers.
19477         * tree.h (dwarf2out_cfi_label): Adjust prototype.
19478         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
19479         Adjust dwarf2out_cfi_label callers.
19480         * config/vax/vax.c (vax_output_function_prologue): Likewise.
19481
19482         * config/i386/i386.h (struct machine_cfa_state,
19483         struct machine_function): Guard with ifndef USED_FOR_TARGET
19484         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
19485
19486         PR other/40024
19487         * emutls.c (__emutls_get_address): Change arr->size to mean number
19488         of allocated arr->data entries instead of # of slots + 1.
19489
19490         PR middle-end/40316
19491         * recog.c (peep2_reinit_state): New function.
19492         (peephole2_init_state): Use it at the end of a basic block and also
19493         when seeing a RTX_FRAME_RELATED_P insn.
19494
19495 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
19496
19497         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
19498         fixuns_truncrfdi2): New.
19499         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
19500         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
19501         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
19502         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
19503         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
19504         *recip_approx): Remove.
19505         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
19506         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
19507         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
19508         move to div.md.
19509         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
19510         setf_exp_rf): New.
19511
19512 2009-06-01  Ian Lance Taylor  <iant@google.com>
19513
19514         * attribs.c (register_attribute): Use CONST_CAST.
19515         * collect2.c (main): Use CONST_CAST2.
19516         (scan_prog_file): Likewise.
19517         * gcc.c (process_command, main): Likewise.
19518         * toplev.c (toplev_main): Likewise.
19519
19520         * c-typeck.c (handle_warn_cast_qual): New static function,
19521         partially broken out of build_c_cast.
19522         (build_c_cast): Call handle_warn_cast_qual.
19523         * doc/invoke.texi (Warning Options): Document new effect of
19524         -Wcast-qual.
19525
19526 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
19527
19528         * diagnostic.c (diagnostic_build_prefix): Always print columns.
19529         (diagnostic_report_current_module): Print columns.
19530         * common.opt (flag_show_column): Enable by default.
19531
19532 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
19533
19534         * alias.c (find_base_term): Check for NULL term before returning.
19535
19536 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19537
19538         Revert due to PR40320:
19539         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19540         * calls.c (emit_library_call_value_1): Don't force_operand for move
19541         and push insns.
19542
19543 2009-06-01  Olivier Hainque  <hainque@adacore.com>
19544             Eric Botcazou  <ebotcazou@adacore.com>
19545
19546         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
19547         to be processed as a bitfield for constructor output purposes.
19548         * output.h (initializer_constant_valid_for_bitfield_p): Declare
19549         new function.
19550         * varasm.c (oc_local_state): New type, output_constructor
19551         local state to support communication with helpers.
19552         (oc_outer_state): New type, output_constructor outer state of
19553         relevance in recursive calls.
19554         (output_constructor_array_range): New output_constructor helper,
19555         extracted code for an array range element.
19556         (output_constructor_regular_field): New output_constructor helper,
19557         extracted code for an element that is not a bitfield.
19558         (output_constructor_bitfield): New output_constructor helper,
19559         extracted code for a bitfield element.  Accept an OUTER state
19560         argument for recursive processing.  Recurse on record or array
19561         CONSTRUCTOR values, possibly past noop conversions.
19562         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
19563         VALUE is a valid constant-valued expression for use in a static
19564         bit-field initializer.
19565         (output_constructor): Rework to use helpers.  Accept and honor an
19566         OUTER state argument for recursive calls.  Return total size.  Be
19567         prepared for nested constructors initializing bitfields.
19568         (output_constant): Feed OUTER in calls to output_constructor.
19569
19570 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19571
19572         * calls.c (emit_library_call_value_1): Don't force_operand for move
19573         and push insns.
19574
19575 2009-06-01  Nick Clifton  <nickc@redhat.com>
19576
19577         * doc/invoke.texi (IA-64 Options): Fix typo.
19578
19579 2009-06-01  Ira Rosen  <irar@il.ibm.com>
19580
19581         PR tree-optimization/39129
19582         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
19583         printed message.
19584         (vect_do_peeling_for_loop_bound): Use
19585         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19586         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19587         (vect_loop_versioning): Likewise.
19588         (vect_create_cond_for_alias_checks): Fix indentation.
19589         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
19590         macros.
19591         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
19592         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
19593         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
19594         "control flow in loop".
19595         (vect_estimate_min_profitable_iters): Use
19596         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19597         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19598         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
19599         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
19600         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
19601         statement belongs to a group of strided accesses with the exact code
19602         check.
19603         (vectorizable_load): Likewise.
19604         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
19605         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19606
19607 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
19608
19609         * config/freebsd-stdint.h: New file.
19610         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
19611         Add freebsd-stdint.h to tm_file.
19612
19613 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19614
19615         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19616         (thumb2_extendhidi2): Likewise.
19617
19618 2009-05-31  Ian Lance Taylor  <iant@google.com>
19619
19620         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
19621
19622 2009-05-31  Ian Lance Taylor  <iant@google.com>
19623
19624         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
19625         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
19626         (ipa-reference.o): Depend upon gt-ipa-reference.h.
19627
19628 2009-05-31  Jason Merrill  <jason@redhat.com>
19629
19630         * tree-pretty-print.c (print_call_name): Take the callee, not the
19631         call itself.  Make non-static.  Use dump_function_name for functions.
19632         (dump_generic_node): Adjust.
19633         * diagnostic.h: Declare print_call_name.
19634         * gimple-pretty-print.c (dump_gimple_call): Use it.
19635
19636 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19637
19638         * config/sh/sh.md (ashldi3_std): New define_expand.
19639         (ashldi3): Use it.
19640
19641 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19642
19643         PR target/40313
19644         * config/sh/sh.c: Include debug.h.
19645         (sh_expand_epilogue): Emit a blockage insn before the frame
19646         pointer adjustment also when dwarf2out_do_frame returns true.
19647
19648 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
19649
19650         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
19651         (thumb2_extendqidi2): New pattern.
19652
19653 2009-05-31  Ira Rosen  <irar@il.ibm.com>
19654
19655         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
19656         mark phis for renaming.
19657         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
19658         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19659         Call mark_sym_for_renaming.
19660         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
19661         * tree-vect-loop.c (vect_transform_loop): Remove
19662         vect_memsyms_to_rename initialization and a call to
19663         mark_set_for_renaming.
19664
19665 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
19666
19667         PR middle-end/40304
19668         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
19669         frame related even if !set_cfa && style < 0.
19670
19671 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
19672
19673         * config/i386/mingw-tls.c: New file.
19674         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
19675         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
19676         defining _WIN32 but not __CYGWIN__.
19677
19678 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19679
19680         * configure.ac: Add MPC support.
19681
19682         * config.in, configure: Regenerate.
19683
19684 2009-05-29  Richard Henderson  <rth@redhat.com>
19685
19686         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
19687         NOTE_INSN_BASIC_BLOCK.
19688         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
19689         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
19690         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
19691         to be deleted.
19692         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
19693         add in_use field.
19694         (add_cfi): Disable check redefining cfa away from drap.
19695         (lookup_cfa_1): Add remember argument; handle remember/restore.
19696         (lookup_cfa): Pass remember argument.
19697         (cfa_remember): New.
19698         (compute_barrier_args_size_1): Remove sibcall check.
19699         (dwarf2out_frame_debug_def_cfa): New.
19700         (dwarf2out_frame_debug_adjust_cfa): New.
19701         (dwarf2out_frame_debug_cfa_offset): New.
19702         (dwarf2out_frame_debug_cfa_register): New.
19703         (dwarf2out_frame_debug_cfa_restore): New.
19704         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
19705         (dwarf2out_begin_epilogue): New.
19706         (dwarf2out_frame_debug_restore_state): New.
19707         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
19708         DW_CFA_restore_state.
19709         (output_cfi_directive): Likewise.
19710         (convert_cfa_to_fb_loc_list): Likewise.
19711         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
19712         * dwarf2out.h: Update.
19713         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
19714         (copy_insn_1): Early out for null.
19715         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
19716         and dwarf2out_frame_debug_restore_state.
19717         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
19718         (prologue_insn_hash, epilogue_insn_hash): New.
19719         (free_after_compilation): Adjust freeing accordingly.
19720         (record_insns): Create hash table if needed; push insns into
19721         hash instead of array.
19722         (maybe_copy_epilogue_insn): New.
19723         (contains): Search hash table instead of array.
19724         (sibcall_epilogue_contains): Remove.
19725         (thread_prologue_and_epilogue_insns): Split eh_return insns
19726         and mark them as epilogues.
19727         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
19728         scanning in terms of basic blocks.
19729         * insn-notes.def (CFA_RESTORE_STATE): New.
19730         * jump.c (returnjump_p_1): Accept EH_RETURN.
19731         (eh_returnjump_p_1, eh_returnjump_p): New.
19732         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
19733         CFA_REGISTER, CFA_RESTORE): New.
19734         * rtl.def (EH_RETURN): New.
19735         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
19736
19737         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
19738         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
19739
19740         * config/i386/i386.c (gen_push): Update cfa state.
19741         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
19742         add a CFA_ADJUST_CFA note.
19743         (ix86_dwarf_handle_frame_unspec): Remove.
19744         (ix86_expand_prologue): Update cfa state.
19745         (ix86_emit_restore_reg_using_pop): New.
19746         (ix86_emit_restore_regs_using_pop): New.
19747         (ix86_emit_leave): New.
19748         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
19749         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
19750         * config/i386/i386.h (struct machine_cfa_state): New.
19751         (ix86_cfa_state): New.
19752         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
19753         (eh_return_internal): Merge from eh_return_<mode>,
19754         use eh_return rtx, split w/ epilogue.
19755
19756 2009-05-29  Ian Lance Taylor  <iant@google.com>
19757
19758         * builtins.c (validate_gimple_arglist): Don't use va_arg with
19759         enum type.
19760         * calls.c (emit_library_call_value_1): Likewise.
19761
19762         * c-typeck.c (c_build_va_arg): New function.
19763         * c-tree.h (c_build_va_arg): Declare.
19764         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
19765         instead of build_va_arg.
19766
19767 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
19768
19769         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
19770         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
19771         (ptr_difference_cost): Use affine combinations to compute it.
19772         (difference_cost): Likewise.
19773         (get_computation_cost_at): Compute more accurate cost for addresses
19774         if the ratio is a multiplier allowed in addresses.
19775         For non-addresses, consider that an additional offset or symbol is
19776         added only once.
19777
19778 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19779
19780         * config/i386/i386.c (ix86_decompose_address): Avoid useless
19781         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
19782
19783         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
19784         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
19785         (prefix_rex): For UNIT_MMX don't imply the prefix by default
19786         if MODE_DI.
19787         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
19788         to 1 for TYPE_SSE{IADD1,CVT1}.
19789         (prefix_vex_imm8): Removed.
19790         (length_vex): Only pass 1 as second argument to
19791         ix86_attr_length_vex_default if prefix_extra is 0.
19792         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
19793         (length): For prefix vex computation use length_immediate
19794         attribute instead of prefix_vex_imm8.
19795         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
19796         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
19797         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
19798         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
19799         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
19800         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
19801         a space in between the operands.
19802         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
19803         if one operand is 0xff and the other one si, di, bp or sp.
19804         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
19805         other one si, di, bp or sp.
19806         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
19807         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
19808         type and mode attributes.
19809         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
19810         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
19811         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
19812         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
19813         prefix_data16 attribute iff MODE_DF.
19814         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
19815         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
19816         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
19817         constm128_operand in length_immediate computation.
19818         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
19819         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
19820         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
19821         length_immediate attribute to 1.
19822         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
19823         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
19824         for certain alternatives.
19825         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
19826         prefix_data16 attribute if MODE_V1DF.
19827         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
19828         length_immediate to 1.
19829         (set_got_rex64, set_rip_rex64): Remove length attribute, set
19830         length_address to 4, set mode attribute to MODE_DI.
19831         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
19832         (fxam<mode>2_i387): Set length attribute to 4.
19833         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
19834         *prefetch_3dnow_rex): Override length_address attribute.
19835         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
19836         attributes.
19837         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
19838         (constm128_operand): Removed.
19839         * config/i386/i386.c (memory_address_length): For
19840         disp && !index && !base in 64-bit mode account for SIB byte if
19841         print_operand_address can't optimize disp32 into disp32(%rip)
19842         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
19843         for fs: or gs: segment.
19844         (ix86_attr_length_immediate_default): When checking if shortform
19845         is possible, truncate immediate to the length of the non-shortened
19846         immediate.
19847         (ix86_attr_length_address_default): Ignore MEM_P operands
19848         with X constraint.
19849         (ix86_attr_length_vex_default): Only check for DImode on
19850         GENERAL_REG_P operands.
19851         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
19852         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
19853         (sse_cvttps2pi): Clear prefix_rep attribute.
19854         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
19855         attribute.
19856         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
19857         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
19858         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
19859         iff operand 2 is const_int_operand.
19860         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
19861         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
19862         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
19863         instead of vex.
19864         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
19865         prefix_data16.
19866         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
19867         prefix_data16 attribute for movlpd and movhpd instructions.
19868         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
19869         length_immediate for shufpd instruction.
19870         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
19871         (avx_cmpp<avxmodesuffixf2c><mode>3,
19872         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
19873         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
19874         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
19875         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
19876         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
19877         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
19878         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
19879         prefix_data16 attribute for the first alternative to 1.
19880         (*avx_loadlps): Override length_immediate for the first alternative.
19881         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
19882         attributes for second alternative.
19883         (*vec_concatv2sf_sse4_1): Override length_immediate and
19884         prefix_data16 attributes for second alternative.
19885         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
19886         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
19887         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
19888         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
19889         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
19890         prefix_data16 and length_immediate to 1.
19891         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
19892         to 1.
19893         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
19894         prefix_extra attribute for variants that don't have 0f prefix alone.
19895         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
19896         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
19897         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
19898         *sse4_1_pextrd): Set length_immediate to 1.
19899         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
19900         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
19901         to 1.
19902         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
19903         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
19904         length_immediate to 1 for second alternative.
19905         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
19906         prefix_extra and length_immediate attributes for the first
19907         alternative.
19908         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
19909         first alternative.
19910         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
19911         to 1 for the first and third alternative.
19912         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
19913         alternative.
19914         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
19915         attribute.
19916         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
19917         attribute to 0.
19918         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
19919         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
19920         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
19921         *avx_psign<mode>3): Set prefix_extra attribute to 1.
19922         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
19923         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
19924         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
19925         ssse3_psign<mode>3): Override prefix_rex attribute.
19926         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
19927         (ssse3_palignrti): Override length_immediate to 1.
19928         (ssse3_palignrdi): Override length_immediate to 1, override
19929         prefix_rex attribute.
19930         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
19931         (sse4a_extrqi): Override length_immediate to 2.
19932         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
19933         (sse4a_insertq): Override prefix_data16 to 0.
19934         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
19935         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
19936         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
19937         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
19938         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
19939         and length_immediate to 1.
19940         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
19941         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
19942         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
19943         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
19944         and length_immediate to 1.
19945         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
19946         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
19947         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
19948         avx_ptest256): Override prefix_extra to 1.
19949         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
19950         Override prefix_data16 and length_immediate to 1.
19951         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
19952         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
19953         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
19954         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
19955         prefix_data16 to 0 and prefix_extra to 2.
19956         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
19957         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
19958         attribute.
19959         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
19960         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
19961         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
19962         and prefix_extra to 2.
19963         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
19964         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
19965         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
19966         avx_vpermilvar<mode>3,
19967         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
19968         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
19969         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
19970         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
19971         Override prefix_extra to 1.
19972         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
19973         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
19974         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
19975         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
19976         prefix_extra and length_immediate to 1.
19977         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
19978         modrm to 0.
19979         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
19980         to 1 for the first alternative.
19981         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
19982         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
19983         cases.
19984         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
19985         *movv2sf_internal_avx, *movv2sf_internal): Override
19986         prefix_rep attribute for certain alternatives.
19987         (*mov<mode>_internal): Override prefix_rep or prefix_data16
19988         attributes for certain alternatives.
19989         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
19990         attributes for certain alternatives.
19991         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
19992         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
19993         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
19994         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
19995         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
19996         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
19997         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
19998         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
19999         length_immediate to 1 if operand 2 is const_int_operand.
20000         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
20001         *vec_extractv2si_1): Set length_immediate attribute to 1.
20002         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
20003         using old 3DNOW insn rather than SSE/3DNOW_A.
20004         (mmx_emms, mmx_femms): Clear modrm attribute.
20005
20006 2009-05-29  Martin Jambor  <mjambor@suse.cz>
20007
20008         * tree-sra.c:  New implementation of SRA.
20009
20010         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
20011         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
20012         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
20013         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
20014         (SRA_MAX_STRUCTURE_COUNT): Removed.
20015         (SRA_FIELD_STRUCTURE_RATIO): Removed.
20016         * doc/invoke.texi (sra-max-structure-size): Removed.
20017         (sra-field-structure-ratio): Removed.
20018
20019 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20020
20021         PR middle-end/40291
20022         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
20023         before expansion.
20024
20025 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
20026
20027         PR rtl-optimization/40101
20028         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
20029         seqno.  Adjust comment.
20030         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
20031         inserting bookkeeping before a jump, the jump is not scheduled.
20032         When no positive seqno found, provide a value.  Add comment.
20033
20034 2009-05-29  Richard Guenther  <rguenther@suse.de>
20035
20036         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
20037         short-cutting on the first component.
20038
20039 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20040
20041         PR middle-end/39958
20042         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
20043         for trees other than decls/types.
20044
20045 2009-05-29  Richard Guenther  <rguenther@suse.de>
20046
20047         * tree-ssa-operands.c (get_expr_operands): Do not handle
20048         INDIRECT_REFs in the handled-component case.  Remove
20049         unused get_ref_base_and_extent case.
20050         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
20051         tree_low_cst and host_integerp where possible.
20052         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
20053         codes for equivalence.
20054         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
20055
20056 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
20057
20058         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
20059         to tmake_file for i[34567]86-*-cygwin*.
20060
20061 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20062
20063         PR target/40017
20064         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
20065         (altivec_categorize_keyword, init_vector_keywords,
20066         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
20067         similar to bool.
20068
20069 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
20070
20071         * tree.c (handle_dll_attribute): Check if node is
20072         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
20073
20074 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
20075
20076         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
20077         component.
20078         (thumb2_zero_extendqidi2): Likewise.
20079
20080 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20081
20082         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
20083         instead of gen_movrt.
20084         * config/sh/sh.md (movrt): Remove.
20085
20086 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
20087
20088         * doc/invoke.texi (IA-64 Options):
20089         Add -msdata, -mfused-madd, -mno-inline-float-divide,
20090         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
20091         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
20092         -msched-prefer-non-control-spec-insns,
20093         -msched-stop-bits-after-every-cycle,
20094         -msched-count-spec-in-critical-path,
20095         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
20096         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
20097         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
20098         and -msched-spec-verbose.
20099
20100 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
20101
20102         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
20103         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
20104         error if used.
20105         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
20106
20107 2009-05-28  Richard Guenther  <rguenther@suse.de>
20108
20109         * tree-ssa-alias.c (ao_ref_init): New function.
20110         (ao_ref_base): Likewise.
20111         (ao_ref_base_alias_set): Likewise.
20112         (ao_ref_alias_set): Likewise.
20113         (refs_may_alias_p_1): Change signature.
20114         (refs_may_alias_p): Adjust.
20115         (refs_anti_dependent_p): Likewise.
20116         (refs_output_dependent_p): Likewise.
20117         (call_may_clobber_ref_p_1): Change signature.
20118         (call_may_clobber_ref_p): Adjust.
20119         (stmt_may_clobber_ref_p_1): New function split out from ...
20120         (stmt_may_clobber_ref_p): ... here.
20121         (maybe_skip_until): Adjust signature.
20122         (get_continuation_for_phi): Likewise.
20123         (walk_non_aliased_vuses): Likewise.
20124         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
20125         (ao_ref_init): Declare.
20126         (ao_ref_base): Likewise.
20127         (ao_ref_alias_set): Likewise.
20128         (stmt_may_clobber_ref_p_1): Likewise.
20129         (walk_non_aliased_vuses): Adjust.
20130         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
20131         (get_ref_from_reference_ops): remove.
20132         (vn_reference_lookup_2): Adjust signature.
20133         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
20134         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
20135         (vn_reference_lookup): Adjust.
20136         (vn_reference_insert): Likewise.
20137         (vn_reference_insert_pieces): Adjust signature.
20138         (visit_reference_op_call): Adjust.
20139         * tree-ssa-pre.c (get_expr_type): Simplify.
20140         (phi_translate_1): Adjust.
20141         (compute_avail): Likewise.
20142         (translate_vuse_through_block): Do not re-build trees.
20143         (value_dies_in_block_x): Likewise.
20144         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
20145         fields.
20146         (vn_reference_lookup_pieces): Adjust declaration.
20147         (vn_reference_insert_pieces): Likewise.
20148
20149 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
20150
20151         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
20152         with checking disabled.
20153
20154 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
20155
20156         PR target/37216
20157
20158         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
20159         macro definition for support of three-operand format aligned
20160         .comm directive in assembler on cygwin/pe/mingw target OS.
20161         * configure:  Regenerate.
20162         * config.h:  Regenerate.
20163
20164         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
20165         aligned form of .comm directive if -mpe-aligned-commons is in effect.
20166         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
20167
20168         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
20169         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
20170
20171 2009-05-28  Ira Rosen  <irar@il.ibm.com>
20172
20173         PR tree-optimization/40254
20174         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
20175         in analysis of basic blocks.
20176
20177 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
20178
20179         PR middle-end/33699
20180         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
20181         * target-def.h (TARGET_CONST_ANCHOR): New macro.
20182         (TARGET_INITIALIZER): Use it.
20183         * cse.c (CHEAPER): Move it up to the other macros.
20184         (insert): Rename this ...
20185         (insert_with_costs): ... to this.  Add cost parameters.  Update
20186         function comment.
20187         (insert): New function.  Call insert_with_costs.
20188         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
20189         find_reg_offset_for_const, try_const_anchors): New functions.
20190         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
20191         when using a const-anchor.  Call insert_const_anchors.
20192         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
20193         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
20194
20195 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20196
20197         * tree-inline.c (remap_decls): Enable nonlocalized variables
20198         when not optimizing.
20199
20200 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20201
20202         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
20203         Simplify other tests involving optimize.
20204
20205 2009-05-27  Tom Tromey  <tromey@redhat.com>
20206
20207         * unwind-dw2.c (_Unwind_DebugHook): New function.
20208         (uw_install_context): Call _Unwind_DebugHook.
20209
20210 2009-05-27  Tom Tromey  <tromey@redhat.com>
20211
20212         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
20213
20214 2009-05-27  Ian Lance Taylor  <iant@google.com>
20215
20216         * Makefile.in (LINKER, LINKER_FLAGS): Define.
20217         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
20218         (ALL_LINKERFLAGS): Define.
20219         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
20220         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20221         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
20222         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20223         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
20224         $(LINKER_FOR_BUILD).
20225         (build/gcov-iov$(build_exeext)): Likewise.
20226
20227 2009-05-27  Julian Brown  <julian@codesourcery.com>
20228
20229         * gcse.c (target.h): Include.
20230         (can_assign_to_reg_without_clobbers_p): Check that the target allows
20231         copy of argument to a pseudo register.
20232
20233 2009-05-27  Diego Novillo  <dnovillo@google.com>
20234
20235         * tree-ssa-live.c (dump_scope_block): Document arguments.
20236         (dump_scope_blocks): Document.
20237         (debug_scope_blocks): New.
20238         * tree-flow.h (debug_scope_blocks): Declare.
20239
20240 2009-05-21  Denis Chertykov  <denisc@overta.ru>
20241
20242         * doc/contrib.texi (Contributors): Add myself to the list.
20243
20244 2009-05-27  Olivier Hainque  <hainque@adacore.com>
20245
20246         * expr.c (target_align): New function.  Alignment the TARGET of an
20247         assignment may be assume to have.
20248         (highest_pow2_factor_for_target): Use it instead of relying on
20249         immediate tree attributes of TARGET, not necessarily honored when
20250         intermediate bitfields are involved.
20251
20252 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
20253
20254         PR target/40266
20255         * config/i386/driver-i386.c (host_detect_local_cpu): Support
20256         AVX, SSE4, AES, PCLMUL and POPCNT.
20257
20258 2009-05-27  Diego Novillo  <dnovillo@google.com>
20259
20260         * tree-pretty-print.c (dump_location): New.
20261         (dump_generic_node): Call it.
20262         Factor code to handle BLOCK nodes ...
20263         (dump_block_node): ... here.
20264
20265 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
20266
20267         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
20268         with it.
20269         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
20270         included.
20271         * gcc-plugin.h: Include config.h and system.h.
20272         (IN_GCC): Define if not defined.
20273
20274 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
20275
20276         PR middle-end/40249
20277         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
20278         with -fno-inline.
20279
20280 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
20281
20282         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
20283         applicable.
20284         * config/m32r/m32r.h: Ditto.
20285         * config/m32r/m32r.md: Ditto.
20286         * config/m32r/predicates.md: Ditto.
20287
20288 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
20289
20290         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
20291
20292 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
20293
20294         * doc/plugins.texi
20295         (Loading plugins): typo.
20296         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
20297         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20298         (Interacting with the GCC Garbage Collector): Added new section.
20299         (Giving information about a plugin): Added new section for
20300         PLUGIN_INFO.
20301         * ggc.h (ggc_register_root_tab): Added declaration.
20302         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
20303         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
20304         (register_callback): Improved comment in declaration.
20305         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
20306         (extra_root_vec) Added static variable for dynamic roots registration.
20307         (ggc_register_root_tab) Added new routine.
20308         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
20309         PLUGIN_GGC_MARKING event.
20310         * ggc-zone.c: Include plugin.h.
20311         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20312         * ggc-page.c: Include plugin.h.
20313         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20314         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
20315         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
20316         (register_callback): check lack of callbacks for
20317         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
20318         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
20319         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
20320         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20321         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
20322         dependency on plugin.h.
20323         (plugin.o): Added dependency on ggc.h...
20324
20325 2009-05-26  Richard Guenther  <rguenther@suse.de>
20326
20327         PR middle-end/40248
20328         Revert
20329         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20330         with mismatched comparison modes.
20331
20332         * expr.c (expand_expr_real_1): Expand the operand of a
20333         VIEW_CONVERT_EXPR in its natural mode.
20334
20335 2009-05-26  Ian Lance Taylor  <iant@google.com>
20336
20337         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
20338         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
20339         (ALL_COMPILERFLAGS): Define.
20340         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
20341         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20342         (collect2$(exeext), collect2.o): Likewise.
20343         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
20344         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
20345         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
20346         (libbackend.o, intl.o, cppdefault.o): Likewise.
20347         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20348         (build/%.o): Use $(COMPILER_FOR_BUILD).
20349         (build/gen%$(build_exeext)): Likewise.
20350         (build/gcov-iov$(build_exeext)): LIkewise.
20351         * config/t-darwin (darwin.o): Use $(COMPILER).
20352         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
20353         * config/t-sol2 (sol2-c.o): Likewise.
20354         (sol2.o): Likewise.
20355         * config/t-vxworks (vxworks.o): Likewise.
20356         * config/x-darwin (host-darwin.o): Likewise.
20357         * config/x-hpux (host-hpux.o): Likewise.
20358         * config/x-linux (host-linux.o): Likewise.
20359         * config/x-solaris (host-solaris.o): Likewise.
20360         * config/alpha/x-alpha (driver-alpha.o): Likewise.
20361         * config/arm/t-arm (arm-c.o): Likewise.
20362         * config/arm/t-pe (pe.o): Likewise.
20363         * config/arm/t-wince-pe (pe.o): Likewise.
20364         * config/i386/t-cygming (winnt.o): Likewise.
20365         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
20366         * config/i386/t-cygwin (cygwin1.o): Likewise.
20367         (cygwin2.o): Likewise.
20368         * config/i386/t-i386 (i386-c.o): Likewise.
20369         * config/i386/t-interix (winnt.o): Likewise.
20370         * config/i386/t-netware (netware.o): Likewise.
20371         * config/i386/t-nwld (nwld.o): Likewise.
20372         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
20373         * config/i386/x-i386 (driver-i386.o): Likewise.
20374         * config/i386/x-cygwin (host-cygwin.o): Likewise.
20375         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
20376         * config/ia64/t-ia64 (ia64-c.o): Likewise.
20377         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
20378         * config/mips/x-native (driver-native.o): Likewise.
20379         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
20380         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
20381         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
20382         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
20383         * config/score/t-score-elf (score7.o): Likewise.
20384         (score3.o): Likewise.
20385         * config/sh/t-sh (sh-c.o): Likewise.
20386         * config/sh/t-symbian (sh-c.o): Likewise.
20387         (symbian.o): Likewise.
20388         * config/spu/t-spu-elf (spu-c.o): Likewise.
20389         * config/v850/t-v850 (v850-c.o): Likewise.
20390         * config/v850/t-v850e (v850-c.o): Likewise.
20391
20392 2009-05-26  Richard Guenther  <rguenther@suse.de>
20393
20394         PR tree-optimization/40122
20395         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
20396         VECTOR_CSTs if possible.
20397         (fold_gimple_assign): Likewise.
20398
20399 2009-05-26  Richard Guenther  <rguenther@suse.de>
20400
20401         PR middle-end/40252
20402         * fold-const.c (fold_binary): Use the correct types for building
20403         rotates.
20404
20405 2009-05-26  Richard Guenther  <rguenther@suse.de>
20406
20407         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
20408         redundant calls to merge_alias_info.
20409         (bump_vector_ptr): Likewise.
20410         * tree-ssa-copy.c (merge_alias_info): Remove.
20411         (replace_exp_1): Remove call to merge_alias_info.
20412         (propagate_tree_value): Likewise.
20413         (fini_copy_prop): Propagate points-to info.
20414         * tree-flow.h (merge_alias_info): Remove.
20415
20416 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
20417
20418         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
20419
20420 2009-05-25  Jan Hubicka  <jh@suse.cz>
20421
20422         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20423         * cgraph.h (struct inline_summary): New filed self_wize,
20424         size_inlining_benefit, self_time and time_inlining_benefit.
20425         (struct cgraph_global_info): Replace insns by time ans size fields.
20426         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20427         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20428         (ipcp_update_callgraph): Do not touch function bodies.
20429         * ipa-inline.c: Include except.h
20430         (MAX_TIME): New constant.
20431         (overall_insns): Remove.
20432         (leaf_node_p): New.
20433         (overall_size, max_benefit): New static variables.
20434         (cgraph_estimate_time_after_inlining): New function.
20435         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20436         (cgraph_clone_inlined_nodes): Update size.
20437         (cgraph_mark_inline_edge): Update size.
20438         (cgraph_estimate_growth): Use size info.
20439         (cgraph_check_inline_limits): Check size.
20440         (cgraph_default_inline_p): Likewise.
20441         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20442         (cgraph_decide_recursive_inlining): Check size.
20443         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20444         and times.
20445         (cgraph_decide_inlining): Likewise.
20446         (cgraph_decide_inlining_incrementally): Likewise; honor
20447         PARAM_EARLY_INLINING_INSNS.
20448         (likely_eliminated_by_inlining_p): New predicate.
20449         (estimate_function_body_sizes): New function.
20450         (compute_inline_parameters): Use it.
20451         * except.c (must_not_throw_labels): New function.
20452         * except.h (must_not_throw_labels): Declare.
20453         * tree-inline.c (init_inline_once): Kill inlining_weigths
20454         * tree-ssa-structalias.c: Avoid uninitialized warning.
20455         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20456         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20457         (PARAM_INLINE_CALL_COST): Remove.
20458         (PARAM_EARLY_INLINING_INSNS): New.
20459
20460 2009-05-25  Richard Guenther  <rguenther@suse.de>
20461
20462         PR tree-optimization/36327
20463         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
20464         callback for reference translation or lookup at the point of may-defs.
20465         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
20466         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
20467         for union COMPONENT_REFs.
20468         (vn_reference_lookup_3): New callback.  Lookup from memset
20469         and CONSTRUCTOR assignment, translate through struct copies.
20470         (vn_reference_lookup_pieces): Make sure to not free the
20471         passed operands array.  Adjust walk_non_aliased_vuses call.
20472         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
20473         make sure we do not leak memory.
20474
20475 2009-05-25  Richard Guenther  <rguenther@suse.de>
20476
20477         * tree-ssa-alias.h (dump_points_to_solution): Declare.
20478         * tree-inline.c (expand_call_inline): Reset the escaped and
20479         callused solutions.
20480         * tree-ssa-structalias.c (pass_build_ealias): New.
20481         * tree-pass.h (pass_build_ealias): Declare.
20482         * passes.c (init_optimization_passes): Add PTA during
20483         early optimizations.
20484         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
20485         and CALLUSED solutions.
20486         (dump_points_to_solution): New function, split out from ...
20487         (dump_points_to_info_for): ... here.
20488         * tree-parloops.c (parallelize_loops): Reset the escaped and
20489         callused solutions.
20490
20491 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20492
20493         PR bootstrap/40027
20494         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
20495         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
20496
20497 2009-05-25  Ira Rosen  <irar@il.ibm.com>
20498
20499         PR tree-optimization/40238
20500         * tree-vect-stmts.c (vect_init_vector): Insert initialization
20501         statements after basic block's labels.
20502         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
20503         to free the allocated memory.
20504
20505 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
20506
20507         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
20508         return address with a USE.
20509
20510 2009-05-24  Richard Guenther  <rguenther@suse.de>
20511
20512         PR middle-end/40233
20513         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
20514         array type from the main variant of the inner type.
20515
20516 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
20517
20518         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
20519         definition to bool (from int) to un-break build.
20520         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
20521
20522 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
20523
20524         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
20525         discard_stmt_changes): Delete.
20526         * tree-ssa-operands.c (scb_stack): Delete.
20527         (init_ssa_operands): Do not initialize it.
20528         (fini_ssa_operands): Do not free it.
20529         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
20530
20531         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
20532         update_stmt, remove the others.  Fix comments.
20533         * tree-dfa.c (optimize_stack_restore): Likewise.
20534         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
20535         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
20536         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
20537         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
20538         Likewise.
20539         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
20540         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
20541         (dom_opt_finalize_block): Likewise, adjusting access to
20542         stmts_to_rescan.
20543         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
20544         (stmts_to_rescan): Change item type to gimple.
20545         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
20546
20547 2009-05-24  Ira Rosen  <irar@il.ibm.com>
20548
20549         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
20550         * tree-pass.h (pass_slp_vectorize): New pass.
20551         * params.h (SLP_MAX_INSNS_IN_BB): Define.
20552         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
20553         * tree-vectorizer.c (timevar.h): Include.
20554         (user_vect_verbosity_level): Declare.
20555         (vect_location): Fix comment.
20556         (vect_set_verbosity_level): Update user_vect_verbosity_level
20557         instead of vect_verbosity_level.
20558         (vect_set_dump_settings): Add an argument. Ignore user defined
20559         verbosity if dump flags require higher level of verbosity. Print to
20560         stderr only for loop vectorization.
20561         (vectorize_loops): Update call to vect_set_dump_settings.
20562         (execute_vect_slp): New function.
20563         (gate_vect_slp): Likewise.
20564         (struct gimple_opt_pass pass_slp_vectorize): New.
20565         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
20566         access its members.
20567         (vec_info_for_bb): New function.
20568         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
20569         (VECTORIZATION_ENABLED): New macro.
20570         (SLP_ENABLED, SLP_DISABLED): Likewise.
20571         (vect_is_simple_use): Add bb_vec_info argument.
20572         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
20573         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
20574         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
20575         vect_schedule_slp, vect_analyze_slp): Likewise.
20576         (vect_analyze_stmt): Add slp_tree argument.
20577         (find_bb_location): Declare.
20578         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20579         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
20580         (vect_analyze_loop_operations, vect_analyze_loop,
20581         get_initial_def_for_induction, vect_create_epilog_for_reduction,
20582         vect_finalize_reduction, vectorizable_reduction,
20583         vectorizable_live_operation, vect_transform_loop): Likewise.
20584         * tree-data-ref.c (dr_analyze_innermost): Update comment,
20585         skip evolution analysis if analyzing a basic block.
20586         (dr_analyze_indices): Likewise.
20587         (initialize_data_dependence_relation): Skip the test whether the
20588         object is invariant for basic blocks.
20589         (compute_all_dependences): Skip dependence analysis for data
20590         references in basic blocks.
20591         (find_data_references_in_stmt): Don't fail in case of invariant
20592         access in basic block.
20593         (find_data_references_in_bb): New function.
20594         (find_data_references_in_loop): Move code to
20595         find_data_references_in_bb and add a call to it.
20596         (compute_data_dependences_for_bb): New function.
20597         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
20598         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
20599         that STEP is 0.
20600         (vect_analyze_data_ref_dependence): Check for interleaving in case of
20601         unknown dependence in basic block and fail in case of dependence in
20602         basic block.
20603         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
20604         dependence instances from either loop or basic block vectorization
20605         info.
20606         (vect_compute_data_ref_alignment): Check if it is loop vectorization
20607         before calling nested_in_vect_loop_p.
20608         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
20609         dependence instances from either loop or basic block vectorization
20610         info.
20611         (vect_verify_datarefs_alignment): Likewise.
20612         (vect_enhance_data_refs_alignment): Adjust function calls.
20613         (vect_analyze_data_refs_alignment): Likewise.
20614         (vect_analyze_group_access): Fix printing. Skip different checks if
20615         DR_STEP is 0. Keep strided stores either in loop or basic block
20616         vectorization data structure. Fix indentation.
20617         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20618         basic blocks.
20619         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
20620         dependence instances from either loop or basic block vectorization
20621         info.
20622         (vect_analyze_data_refs): Update comment. Call
20623         compute_data_dependences_for_bb to analyze basic blocks.
20624         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
20625         case of loop vectorization. In case of basic block vectorization use
20626         data-ref itself as a base.
20627         (vect_create_data_ref_ptr): In case of basic block vectorization:
20628         don't advance the pointer, add new statements before the current
20629         statement.  Adjust function calls.
20630         (vect_supportable_dr_alignment): Support only aligned accesses in
20631         basic block vectorization.
20632         * common.opt (ftree-slp-vectorize): New flag.
20633         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
20634         (vect_pattern_recog_1): Likewise.
20635         * tree-vect-stmts.c (process_use): Likewise.
20636         (vect_init_vector): Add new statements in the beginning of the basic
20637         block in case of basic block SLP.
20638         (vect_get_vec_def_for_operand): Adjust function calls.
20639         (vect_finish_stmt_generation): Likewise.
20640         (vectorizable_call): Add assert that it is loop vectorization, adjust
20641         function calls.
20642         (vectorizable_conversion, vectorizable_assignment): Likewise.
20643         (vectorizable_operation): In case of basic block SLP, take
20644         vectorization factor from statement's type and skip the relevance
20645         check. Adjust function calls.
20646         (vectorizable_type_demotion): Add assert that it is loop
20647         vectorization, adjust function calls.
20648         (vectorizable_type_promotion): Likewise.
20649         (vectorizable_store): Check for outer loop only in case of loop
20650         vectorization. Adjust function calls. For basic blocks, skip the
20651         relevance check and don't advance pointers.
20652         (vectorizable_load): Likewise.
20653         (vectorizable_condition): Add assert that it is loop vectorization,
20654         adjust function calls.
20655         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
20656         that it is not reduction, get vector type, call only supported
20657         functions, skip loop specific parts.
20658         (vect_transform_stmt): Check for outer loop only in case of loop
20659         vectorization.
20660         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
20661         (vect_is_simple_use): Fix comment, add new argument, fix conditions
20662         for external definition.
20663         * passes.c (pass_slp_vectorize): New pass.
20664         * tree-vect-slp.c (find_bb_location): New function.
20665         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
20666         check for patterns only in loops.
20667         (vect_build_slp_tree): Add argument, adjust function calls, fail in
20668         case of multiple types in basic block SLP.
20669         (vect_mark_slp_stmts_relevant): New function.
20670         (vect_supported_load_permutation_p): Fix comment.
20671         (vect_analyze_slp_instance): Add argument. In case of basic block
20672         SLP, take vectorization factor from statement's type, check that
20673         unrolling factor is 1. Adjust function call. Save SLP instance in
20674         either loop or basic block vectorization structure. Return FALSE,
20675         if SLP failed.
20676         (vect_analyze_slp): Add argument. Get strided stores groups from
20677         either loop or basic block vectorization structure. Return FALSE
20678         if basic block SLP failed.
20679         (new_bb_vec_info): New function.
20680         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
20681         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
20682         (vect_schedule_slp): Add argument. Get SLP instances from either
20683         loop or basic block vectorization structure. Set vectorization factor
20684         to be 1 for basic block SLP.
20685         (vect_slp_transform_bb): New function.
20686         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
20687
20688 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
20689
20690         * final.c (shorten_branches): Do not align labels for jump tables.
20691         (final_scan_insn): Use JUMP_TABLE_DATA_P.
20692
20693 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
20694
20695         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
20696         Remove outdated reference to flow.c and fix nits.
20697         * doc/gccint.texi: Tweak RTL description.
20698         * doc/rtl.texi: Likewise.
20699
20700 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
20701
20702         * config/avr/avr.c: Change my email address.
20703         * config/avr/avr.h: Likewise.
20704         * config/avr/avr.md: Likewise.
20705         * config/avr/avr-protos.h: Likewise.
20706         * config/avr/libgcc.S: Likewise.
20707
20708 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
20709
20710         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
20711         (spu_split_load, spu_split_store): Change return type to int.
20712         (spu_split_convert): Declare.
20713         * config/spu/predicates.md (spu_mem_operand): Remove.
20714         (spu_mov_operand): Update.
20715         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
20716         * config/spu/spu.c (regno_aligned_for_load): Remove.
20717         (reg_aligned_for_addr, spu_expand_load): Define.
20718         (spu_expand_extv): Reimplement and handle MEM.
20719         (spu_expand_insv): Handle MEM.
20720         (spu_sched_reorder): Handle insn's with length 0.
20721         (spu_legitimate_address_p): Reimplement.
20722         (store_with_one_insn_p): Return TRUE for any mode with size
20723         larger than 16 bytes.
20724         (address_needs_split): Define.
20725         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
20726         operands.
20727         (spu_convert_move): Define.
20728         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
20729         (spu_split_store): Change all MEM's to TImode.
20730         (spu_init_expanders): Preallocate registers that correspond to
20731         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
20732         mark_reg_pointer.
20733         (spu_split_convert): Define.
20734         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
20735         (_move<mode>, _movdi, _movti): Update predicate and condition.
20736         (load, store): Change to define_split.
20737         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
20738         extend<mode>ti2.
20739         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
20740         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
20741         define_insn_and_split of lshr<mode>3.
20742         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
20743         (<v>ashr<mode>3_imm): Define.
20744         (extv, extzv, insv): Allow MEM operands.
20745         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
20746         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
20747         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
20748         (_spu_convert2): Change to define_insn_and_split and remove the
20749         corresponding define_peephole2.
20750         (stack_protect_set, stack_protect_test, stack_protect_test_si):
20751         Change predicates to memory_operand.
20752
20753 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20754
20755         * config/arm/thumb2.md: Add 16-bit multiply instructions.
20756
20757 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20758
20759         PR tree-optimization/40219
20760         * tree.c (iterative_hash_expr): Make sure the builtin function is
20761         a normal builtin function and not a front end or back end builtin
20762         before indexing into the built_in_decls array.
20763
20764 2009-05-22  Richard Guenther  <rguenther@suse.de>
20765
20766         PR middle-end/38964
20767         * alias.c (write_dependence_p): Do not use TBAA for answering
20768         anti-dependence or output-dependence.
20769         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
20770         (emit_pointer_definition): Remove.
20771         (emit_alias_warning): Likewise.
20772         (find_what_var_points_to): Remove TBAA pruning code.
20773         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
20774         violations.
20775         (compute_points_to_sets): Remove code computing the set of
20776         dereferenced pointers.
20777         * tree-data-ref.c (dr_may_alias_p): Properly use the split
20778         oracle for querying anti and output dependencies.
20779         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
20780         if TBAA may be applied.
20781         (refs_anti_dependent_p): New function.
20782         (refs_output_dependent_p): Likewise.
20783         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
20784         (refs_output_dependent_p): Likewise.
20785         * doc/tree-ssa.texi (Memory model): New section.
20786         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20787         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20788         * cfgexpand.c (expand_gimple_basic_block): Do not handle
20789         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
20790         * expr.c (expand_expr_real_1): Likewise.
20791         * gimple-low.c (lower_stmt): Likewise.
20792         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
20793         (dump_gimple_cdt): Remove.
20794         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20795         (gimple_size): Likewise.
20796         (walk_gimple_op): Likewise.
20797         (is_gimple_stmt): Likewise.
20798         (walk_stmt_load_store_addr_ops): Likewise.
20799         (gimple_build_cdt): Remove.
20800         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20801         * gimple.h (gimple_cdt_new_type): Remove.
20802         (gimple_cdt_new_type_ptr): Likewise.
20803         (gimple_cdt_set_new_type): Likewise.
20804         (gimple_cdt_location): Likewise.
20805         (gimple_cdt_location_ptr): Likewise.
20806         (gimple_cdt_set_location): Likewise.
20807         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20808         * tree-cfg.c (remove_useless_stmts_1): Do not handle
20809         GIMPLE_CHANGE_DYNAMIC_TYPE.
20810         (verify_types_in_gimple_stmt): Likewise.
20811         * tree-inline.c (estimate_num_insns): Likewise.
20812         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
20813         (copy_decl_to_var): Likewise.
20814         (copy_result_decl_to_var): Likewise.
20815         * tree-pretty-print.c (dump_generic_node): Do not handle
20816         CHANGE_DYNAMIC_TYPE_EXPR.
20817         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
20818         * tree-ssa-operands.c (get_expr_operands): Likewise.
20819         * tree-ssa-structalias.c (struct variable_info): Remove
20820         no_tbaa_pruning member.
20821         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
20822         (unify_nodes): Do not copy it.
20823         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20824         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
20825         (set_uids_in_ptset): Do not check it.
20826         (find_what_var_points_to): Likewise.
20827         (compute_tbaa_pruning): Remove.
20828         (compute_points_to_sets): Do not call it.
20829         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20830         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20831         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
20832         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
20833         (DECL_NO_TBAA_P): Likewise.
20834         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
20835         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
20836         (expand_omp_atomic_pipeline): Do not set it.
20837         * print-tree.c (print_node): Do not dump it.
20838         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20839         redundant check.
20840
20841 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
20842
20843         PR target/39856
20844         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
20845         for clobber.
20846
20847 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20848
20849         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
20850         non-external.
20851
20852 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20853
20854         * Makefile.in (bversion.h, s-bversion): New targets.
20855         (TOPLEV_H): Add bversion.h.
20856         * toplev.h: Include "bversion.h".
20857         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
20858         the __format__ attribute only if compiling with the same version
20859         of GCC as the sources (the "build version").
20860
20861 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20862
20863         * c-format.c (handle_format_attribute): Fix comment typo.
20864
20865 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
20866
20867         PR target/37846
20868         * config/ia64/ia64.opt (mfused-madd): New.
20869         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
20870         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
20871         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
20872         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
20873         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
20874         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
20875         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
20876         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
20877         instruction if !TARGET_FUSED_MADD.
20878         (fpma, fpms): Remove colon from name.
20879
20880 2009-05-22  Richard Guenther  <rguenther@suse.de>
20881
20882         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
20883         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
20884         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
20885         TARGET_MEM_REF.
20886         (create_expression_by_pieces): Only convert if necessary.
20887         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
20888         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
20889
20890 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
20891
20892         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
20893         regular pattern from a template and rename it ...
20894         (*extzv_truncsi_exts): ... to this.
20895
20896 2009-05-21  Richard Guenther  <rguenther@suse.de>
20897
20898         * cgraph.h (struct cgraph_node): Remove inline_decl member.
20899         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
20900         (cgraph_default_inline_p): Likewise.
20901         (cgraph_decide_inlining_incrementally): Likewise.
20902
20903 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
20904             Uros Bizjak  <ubizjak@gmail.com>
20905
20906         * config/i386/cpuid.h (bit_MOVBE): New.
20907
20908         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
20909
20910         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
20911         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
20912         (ix86_handle_option): Handle OPT_mmovbe.
20913         (ix86_target_string): Add -mmovbe.
20914         (pta_flags): Add PTA_MOVBE.
20915         (processor_alias_table): Add PTA_MOVBE to "atom".
20916         (override_options): Handle PTA_MOVBE.
20917
20918         * config/i386/i386.h (TARGET_MOVBE): New.
20919
20920         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
20921         (*bswapsi_movbe): New.
20922         (*bswapdi_movbe): Likewise.
20923         (bswapdi2): Renamed to ...
20924         (*bswapdi_1): This.
20925         (bswapdi2): New expander.
20926
20927         * config/i386/i386.opt (mmovbe): New.
20928
20929         * doc/invoke.texi: Document -mmovbe.
20930
20931 2009-05-21  Taras Glek  <tglek@mozilla.com>
20932
20933         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
20934         * gcc-plugin.h (plugin_init): Updated signature.
20935         * gcc-plugin.h (plugin_name_args): Moved to this header.
20936         * doc/plugins.texi (plugin_init): Updated documention to reflect
20937         API change.
20938         * doc/plugins.texi (plugin_name_args): Added to documention.
20939
20940 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
20941
20942         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
20943         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
20944
20945 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
20946
20947         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
20948         JUMP_TABLE_DATA_P predicates where applicable.
20949         * config/i386/predicates.md: Ditto.
20950         * config/i386/sse.md: Ditto.
20951
20952 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
20953
20954         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
20955         operand2 -128 override length_immediate attribute to 1.
20956         * config/i386/predicates.md (constm128_operand): New predicate.
20957
20958         * config/i386/i386.c (memory_address_length): Handle %r12
20959         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
20960         also check REGNO.
20961         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
20962         mode look through optional ZERO_EXTEND and SUBREG.
20963         * config/i386/i386.md (R12_REG): New define_constant.
20964         (prefix_data16): For sse unit set also for MODE_TI insns.
20965         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
20966         insns set if operand 1 is ext_QIreg_operand.
20967         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
20968         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
20969         immediate.
20970         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
20971         mode from MODE_DI to MODE_SI.
20972         (movdi_1_rex64): Override modrm and length_immediate attributes
20973         only for movabs (TYPE_IMOV, alternative 2).
20974         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
20975         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
20976         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
20977         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
20978         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
20979         prefix_rex attribute if DImode.
20980         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
20981         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
20982         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
20983         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
20984         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
20985         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
20986         Likewise.  For TYPE_IMOV clear length_immediate attribute.
20987         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
20988         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
20989         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
20990         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
20991         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
20992         or one operand TYPE_ISHIFT.
20993         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
20994         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
20995         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
20996         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
20997         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
20998         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
20999         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
21000         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
21001         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
21002         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
21003         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
21004         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
21005         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
21006         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
21007         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
21008         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
21009         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
21010         set mode attribute, don't override length attribute.
21011         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
21012         to 1.
21013         (return_internal_long): Set length attribute to 2 instead of 1.
21014         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
21015         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
21016         prefix_rex attribute.
21017         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
21018         New predicates.
21019         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
21020
21021 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21022
21023         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
21024
21025 2009-05-20  Ian Lance Taylor  <iant@google.com>
21026
21027         * tree.c (build_tree_list_vec_stat): New function.
21028         (ctor_to_vec): New function.
21029         (build_nt_call_vec): New function.
21030         (build_call_array): Change args to be a const pointer.
21031         (build_call_vec): New function.
21032         * tree.h (build_nt_call_vec): Declare.
21033         (build_tree_list_vec_stat): Declare.
21034         (build_tree_list_vec): Define.
21035         (build_call_array): Update declaration.
21036         (build_call_vec): Declare.
21037         (ctor_to_vec): Declare.
21038         * c-common.c (tree_vector_cache): New static variable.
21039         (make_tree_vector): New function.
21040         (release_tree_vector): New function.
21041         (make_tree_vector_single): New function.
21042         (make_tree_vector_copy): New function.
21043         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
21044         (make_tree_vector_single, make_tree_vector_copy): Declare.
21045         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
21046         (c_parser_expr_list): Don't manage cache here, instead call
21047         make_tree_vector.
21048         (c_parser_release_expr_list): Remove static function.
21049         (c_parser_vec_to_tree_list): Remove static function.
21050         (c_parser_attributes): Call build_tree_list_vec instead of
21051         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
21052         c_parser_release_expr_list.
21053         (c_parser_postfix_expression_after_primary): Likewise.
21054         (c_parser_objc_keywordexpr): Likewise.
21055
21056 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
21057
21058         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
21059         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
21060         TARGET_CONVERT_TO_TYPE.
21061         * hooks.c (hook_tree_const_tree_null): Define.
21062         * hooks.h (hook_tree_const_tree_null): Declare.
21063         * target.h (struct gcc_target):  Add invalid_parameter_type,
21064         invalid_return_type, promoted_type, and convert_to_type fields.
21065         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
21066         (TARGET_INVALID_RETURN_TYPE): Define.
21067         (TARGET_PROMOTED_TYPE): Define.
21068         (TARGET_CONVERT_TO_TYPE): Define.
21069         (TARGET_INITIALIZER): Update for new fields.
21070         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
21071         (grokparms): Check targetm.invalid_parameter_type.
21072         * c-typeck.c (default_conversion): Check targetm.promoted_type.
21073         * c-convert.c (convert): Check targetm.convert_to_type.
21074
21075 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
21076
21077         * config/mips/mips.md (*extenddi_truncate<mode>,
21078         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
21079         defintions.
21080         (*extendhi_truncateqi): New define_insn_and_sptit.
21081
21082 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
21083
21084         PR middle-end/40204
21085         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
21086         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
21087
21088 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
21089
21090         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
21091         the operand of VIEW_CONVERT_EXPR.
21092
21093 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
21094
21095         * config/i386/driver-i386.c (host_detect_local_cpu): Check
21096         extended family and model for Intel processors.  Support Intel Atom.
21097
21098 2009-05-20  Olivier Hainque  <hainque@adacore.com>
21099
21100         * gstab.h (stab_code_type): Define, to be used instead of the
21101         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
21102         notice.
21103         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
21104         occurrences by stab_code_type.
21105         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
21106
21107 2009-05-20  Martin Jambor  <mjambor@suse.cz>
21108
21109         * tree-flow.h (insert_edge_copies_seq): Undeclare.
21110         (sra_insert_before): Likewise.
21111         (sra_insert_after): Likewise.
21112         (sra_init_cache): Likewise.
21113         (sra_type_can_be_decomposed_p): Likewise.
21114         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
21115         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
21116         (sra_insert_before): Likewise.
21117         (sra_insert_after): Likewise.
21118         (sra_init_cache): Likewise.
21119         (insert_edge_copies_seq): Made static and moved upwards.
21120
21121         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
21122         case.
21123
21124         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
21125
21126         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
21127         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
21128         simple copies.
21129
21130 2009-05-20  Richard Guenther  <rguenther@suse.de>
21131
21132         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21133         with mismatched comparison modes.
21134
21135 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21136
21137         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
21138         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
21139         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
21140         with shifts for Thumb2.
21141         (orsi_notsi): New for orn.
21142         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
21143         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
21144         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
21145         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
21146         Don't invert remainder for IOR.
21147
21148 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
21149
21150         PR tree-optimization/40087
21151         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
21152         number_of_iterations_ne): Rename never_infinite argument.
21153         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
21154         number_of_iterations_le): Handle pointer-type ivs when
21155         exit_must_be_taken is false.
21156         (number_of_iterations_cond):  Do not always assume that
21157         exit_must_be_taken if the control variable is a pointer.
21158
21159 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21160
21161         * c-typeck.c (build_binary_op): Allow % on integal vectors.
21162         * doc/extend.texi (Vector Extension): Document that % is allowed too.
21163
21164 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
21165
21166         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
21167         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
21168
21169 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21170
21171         PR c/40172
21172         * c.opt (Wlogical-op): Disabled by default.
21173         * c-opt (c_common_post_options): Do not enable Wlogical-op with
21174         Wextra.
21175         * doc/invoke.texi (Wlogical-op): Likewise.
21176
21177 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
21178
21179         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
21180         into CASE_CONVERT.
21181         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
21182         Propagate the type of the first operand.
21183         <ASSERT_EXPR>: Simplify.
21184         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
21185         Rewrite using the RHS code as discriminant.
21186         <NOP_EXPR>: Turn into CASE_CONVERT.
21187         <PLUS_EXPR>: Propagate the type of the first operand.
21188
21189 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
21190
21191         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
21192         (ia64_dconst_0_375): New.
21193         * config/ia64/ia64.c (ia64_override_options): Remove
21194         -minline-sqrt-min-latency warning.
21195         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
21196         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
21197         * config/ia64/ia64.md (*sqrt_approx): Remove.
21198         (sqrtsf2): Remove #if 0.
21199         (sqrtsf2_internal_thr): Rewrite and move to div.md.
21200         (sqrtdf): Remove assert.
21201         (sqrtdf2_internal_thr): Rewrite and move to div.md.
21202         (sqrtxf2): Remove #if 0.
21203         (sqrtxf2_internal_thr): Rewrite and move to div.md.
21204         * div.md (sqrt_approx_rf): New.
21205         (sqrtsf2_internal_thr): New implementation.
21206         (sqrtsf2_internal_lat): New.
21207         (sqrtdf2_internal_thr: New implementation.
21208         (sqrtxf2_internal): New implementation.
21209
21210 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21211             Hans-Peter Nilsson  <hp@axis.com>
21212
21213         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
21214         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
21215         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
21216         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
21217         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
21218         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
21219         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
21220         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
21221         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
21222         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
21223         * c-common.c: ...from here.
21224
21225 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21226
21227         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
21228
21229 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21230
21231         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
21232
21233 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21234
21235         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
21236         assignments with memcpy calls.
21237         (add_fdes): Likewise.
21238         (binary_search_unencoded_fdes): Likewise.
21239         (linear_search_fdes): Eliminate type puns.
21240
21241 2009-05-19  Richard Guenther  <rguenther@suse.de>
21242
21243         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
21244         not falsely claim to have propagated into all uses.
21245
21246 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21247
21248         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
21249         version to v3.0.
21250
21251 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21252
21253         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
21254         * config/sh/sh.c (sh_legitimate_address_p): Make static.
21255         (TARGET_LEGITIMATE_ADDRESS_P): New.
21256         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21257         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21258
21259 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
21260
21261         PR debug/40109
21262         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
21263         child of the containing namespace's DIE.
21264
21265 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
21266
21267         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
21268         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
21269         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
21270         extend patterns.
21271
21272 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
21273
21274         PR target/39942
21275         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
21276         gen_align with gen_pad.
21277         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
21278         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
21279
21280         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
21281         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
21282
21283         * config/i386/i386.md (align): Renamed to ...
21284         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
21285         ASM_OUTPUT_MAX_SKIP_PAD.
21286
21287 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
21288
21289         * config.gcc: Fix variable syntax.
21290
21291         PR target/39531
21292         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
21293         before calling exact_log2.
21294         (output_iorsi3): Likewise.
21295         (output_xorsi3): Likewise.
21296
21297 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21298
21299         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
21300         for the none zero constant operand except for EQ and NE
21301         comprisons even when the first operand is R0.
21302
21303 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
21304
21305         * config/s390/2064.md: Remove trailing whitespaces.
21306         * config/s390/2084.md: Likewise.
21307         * config/s390/constraints.md: Likewise.
21308         * config/s390/fixdfdi.h: Likewise.
21309         * config/s390/libgcc-glibc.ver: Likewise.
21310         * config/s390/s390-modes.def: Likewise.
21311         * config/s390/s390-protos.h: Likewise.
21312         * config/s390/s390.c: Likewise.
21313         * config/s390/s390.h: Likewise.
21314         * config/s390/s390.md: Likewise.
21315         * config/s390/tpf-unwind.h: Likewise.
21316
21317 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21318
21319         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
21320
21321 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21322
21323         M68K TLS support.
21324         * configure.ac (m68k-*-*): Check if binutils support TLS.
21325         * configure: Regenerate.
21326         * config/m68k/predicates.md (symbolic_operand): Extend comment.
21327         * config/m68k/constraints.md (Cu): New constraint.
21328         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
21329         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
21330         (movsi): Handle TLS symbols.
21331         (addsi3_5200): Handle XTLS symbols, indent.
21332         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
21333         (m68k_tls_reference_p): Declare.
21334         (m68k_legitimize_address): Declare.
21335         (m68k_unwrap_symbol): Declare.
21336         * config/m68k/m68k.opt (mxtls): New option.
21337         * config/m68k/m68k.c (ggc.h): Include.
21338         (m68k_output_dwarf_dtprel): Implement hook.
21339         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
21340         (m68k_expand_prologue): Load GOT pointer when function needs it.
21341         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
21342         (m68k_legitimate_constant_address_p): Same.
21343         (m68k_decompose_address): Handle TLS references.
21344         (m68k_get_gp): New static function.
21345         (enum m68k_reloc): New contants.
21346         (TLS_RELOC_P): New macro.
21347         (m68k_wrap_symbol): New static function.
21348         (m68k_unwrap_symbol): New function.
21349         (m68k_final_prescan_insn_1): New static function.
21350         (m68k_final_prescan_insn): New function.
21351         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
21352         functions.
21353         (legitimize_pic_address): Handle TLS references..
21354         (m68k_tls_get_addr, m68k_get_tls_get_addr)
21355         (m68k_libcall_value_in_a0_p)
21356         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
21357         (m68k_call_m68k_read_tp): Helper variables and functions for ...
21358         (m68k_legitimize_tls_address): Handle TLS references.
21359         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
21360         New functions.
21361         (m68k_legitimize_address): Handle TLS symbols.
21362         (m68k_get_reloc_decoration): New static function.
21363         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
21364         UNSPEC_RELOC32.
21365         (m68k_output_dwarf_dtprel): Implement hook.
21366         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
21367         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
21368         m68k_call_* routines.
21369         (sched_attr_op_type): Handle TLS symbols.
21370         (gt-m68k.h): Include.
21371         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21372         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
21373
21374 2009-05-18  Martin Jambor  <mjambor@suse.cz>
21375
21376         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
21377         (visit_store_addr_for_mod_analysis): New function.
21378         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
21379         (determine_cst_member_ptr): Use gimple_assign_single_p.
21380         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
21381         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
21382         operands.  Don't check number of operands of a NOP_EXPR.
21383
21384 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
21385
21386         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
21387
21388 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21389
21390         PR c/40172
21391         * c-common.c (warn_logical_operator): Don't warn if one of
21392         expression isn't always true or false.
21393
21394 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
21395
21396         * config/i386/biarch32.h: New file.
21397         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
21398
21399 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
21400
21401         * config/mips/mips.md (*zero_extend<mode>_trunchi,
21402         *zero_extend<mode>_truncqi): Merge these into ...
21403         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
21404         Name the pattern following this as *zero_extendhi_truncqi.
21405
21406 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
21407
21408         PR middle-end/39301
21409         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
21410         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
21411         (output_info): Make field HOST_WIDEST_INT.
21412         (print_statistics): Use HOST_WIDEST_INT_PRINT.
21413         (dump_bitmat_statistics): Same.
21414
21415 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21416
21417         * config.gcc (use_gcc_stdint):  Set to wrap.
21418         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21419         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21420         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21421         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21422         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21423         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21424         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21425         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21426
21427 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
21428
21429         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
21430         tune_64.
21431         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
21432         Move definitions earlier.
21433         (OPT_ARCH64, OPT_ARCH32): Define.
21434         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
21435         and tune_64.
21436
21437 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21438
21439         PR target/40153
21440         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
21441         implies.
21442
21443 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21444
21445         * arm.md (movdi2): Copy non-reg values to DImode registers.
21446
21447 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
21448
21449         PR target/39942
21450         * final.c (label_to_max_skip): New function.
21451         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
21452         CODE_LABEL_NUMBER <= max_labelno.
21453         * output.h (label_to_max_skip): New prototype.
21454         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
21455         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
21456         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
21457         Handle CODE_LABELs with >= 16 byte alignment or with
21458         max_skip == (1 << align) - 1.
21459         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
21460         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
21461
21462         PR target/39942
21463         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
21464         .p2align 3 if MAX_SKIP is smaller than 7.
21465         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
21466
21467 2009-05-15  Ian Lance Taylor  <iant@google.com>
21468
21469         * alias.c (struct alias_set_entry_d): Rename from struct
21470         alias_set_entry.  Change all uses.
21471         * except.c (struct call_site_record_d): Rename from struct
21472         call_site_record.  Change all uses.
21473         * except.h (struct eh_region_d): Rename from struct eh_region.
21474         Change all uses.
21475         * gcse.c (struct hash_table_d): Rename from struct hash_table.
21476         Change all uses.
21477         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
21478         ivtype_map_elt.  Change all uses.
21479         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
21480         Change all uses.
21481         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
21482         * graphite.h (struct name_tree_d): Rename from struct name_tree.
21483         Change all uses.
21484         (struct sese_d): Rename from struct sese.  Change all uses.
21485         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
21486         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
21487         * optabs.h (struct optab_d): Rename from struct optab.  Change all
21488         uses.
21489         (struct convert_optab_d): Rename from struct convert_optab.
21490         Change all uses.
21491         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
21492         ipa_opt_pass.  Change all uses.
21493         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
21494         all uses.
21495
21496         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
21497         defined as a typedef.
21498         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
21499         defined as a tag.
21500
21501 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21502
21503         PR 16302
21504         * fold-const.c (make_range,build_range_check,merge_ranges): Move
21505         declaration to...
21506         (merge_ranges): Returns bool.
21507         * tree.h (make_range): .. to here.
21508         (build_range_check): Likewise.
21509         (merge_ranges): Likewise. Renamed from merge_ranges.
21510         * c-typeck.c (parser_build_binary_op): Update calls to
21511         warn_logical_operator.
21512         * c-common.c (warn_logical_operator): Add new warning.
21513         * c-common.h (warn_logical_operator): Update declaration.
21514
21515 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21516
21517         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
21518
21519 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21520
21521         * doc/install.texi: Document MPC requirements, flags etc.
21522
21523         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
21524         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
21525         Evaluate constant arguments.
21526         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
21527         (fold_builtin_1): Likewise, also evaluate constant arguments.
21528         Remove superfluous break.
21529         (do_mpc_ckconv): New.
21530         * real.h: Include mpc.h.
21531         * toplev.c (print_version): Output MPC version info if available.
21532
21533 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21534
21535         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
21536
21537 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
21538
21539         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
21540         only once.
21541
21542 2009-05-15  Jan Hubicka  <jh@suse.cz>
21543
21544         * doc/invoke.texi (max-early-inliner-iterations): New flag.
21545         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
21546         (try_inline): Fix return value.
21547         (cgraph_decide_inlining_incrementally): Honor new value.
21548         (cgraph_early_inlining): Handle indirect inlining.
21549         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
21550
21551 2009-05-15  Jan Hubicka  <jh@suse.cz>
21552
21553         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
21554         * cgraphunit.c (cgraph_finalize_function): Set it.
21555         (cgraph_expand_function): Use it.
21556
21557 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21558
21559         * real.c (encode_ieee_half): Define.
21560         (decode_ieee_half): Define.
21561         (ieee_half_format): Define.
21562         (arm_half_format): Define.
21563         * real.h (ieee_half_format): Declare.
21564         (arm_half_format): Declare.
21565
21566 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21567
21568         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
21569         swapped, and reversed optabs exist before trying to use them.
21570
21571 2009-05-15  Paul Brook  <paul@codesourcery.com>
21572             Sandra Loosemore  <sandra@codesourcery.com>
21573
21574         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
21575         loads.  Allow PRE_DEC.
21576         (output_move_neon): Handle PRE_DEC.
21577         (arm_print_operand): Add 'A' for neon structure loads.
21578         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
21579         * config/arm/neon.md (neon_mov): Update comment.
21580         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
21581         calls.
21582         (Um): New constraint.
21583
21584 2009-05-15  Jan Hubicka  <jh@suse.cz>
21585
21586         Revert the following patch until testsuite fallout is fixed:
21587         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21588         * cgraph.h (struct inline_summary): New filed self_wize,
21589         size_inlining_benefit, self_time and time_inlining_benefit.
21590         (struct cgraph_global_info): Replace insns by time ans size fields.
21591         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21592         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21593         (ipcp_update_callgraph): Do not touch function bodies.
21594         * ipa-inline.c: Include except.h
21595         (MAX_TIME): New constant.
21596         (overall_insns): Remove
21597         (overall_size, max_benefit): New static variables.
21598         (cgraph_estimate_time_after_inlining): New function.
21599         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21600         (cgraph_clone_inlined_nodes): Update size.
21601         (cgraph_mark_inline_edge): Update size.
21602         (cgraph_estimate_growth): Use size info.
21603         (cgraph_check_inline_limits): Check size.
21604         (cgraph_default_inline_p): Likewise.
21605         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21606         (cgraph_decide_recursive_inlining): Check size.
21607         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21608         and times.
21609         (cgraph_decide_inlining): Likewise.
21610         (cgraph_decide_inlining_incrementally): Likewise; honor
21611         PARAM_EARLY_INLINING_INSNS.
21612         (likely_eliminated_by_inlining_p): New predicate.
21613         (estimate_function_body_sizes): New function.
21614         (compute_inline_parameters): Use it.
21615         * except.c (must_not_throw_labels): New function.
21616         * except.h (must_not_throw_labels): Declare.
21617         * tree-inline.c (init_inline_once): Kill inlining_weigths
21618         * tree-ssa-structalias.c: Avoid uninitialized warning.
21619         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21620         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21621         (PARAM_INLINE_CALL_COST): Remove.
21622         (PARAM_EARLY_INLINING_INSNS): New.
21623
21624 2009-05-15  Richard Guenther  <rguenther@suse.de>
21625
21626         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
21627         not TODO_update_ssa.
21628
21629 2009-05-15  Richard Guenther  <rguenther@suse.de>
21630
21631         PR tree-optimization/39999
21632         * gimple.h (gimple_expr_type): Use the expression type looking
21633         through useless conversions.
21634         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
21635         (vn_nary_op_insert_stmt): Likewise.
21636         (simplify_binary_expression): Likewise.
21637
21638 2009-05-15  Richard Guenther  <rguenther@suse.de>
21639
21640         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21641         New options, enabled by default.
21642         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21643         Document.
21644         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
21645         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
21646         * tree-ssa-structalias.c (gate_tree_pta): New function.
21647         (pass_build_alias): Use it.
21648
21649 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
21650
21651         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
21652         recurse on an invariant address if a conversion from a pointer
21653         type to a wider integer type is involved.
21654
21655 2009-05-15  Jan Hubicka  <jh@suse.cz>
21656
21657         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21658         * cgraph.h (struct inline_summary): New filed self_wize,
21659         size_inlining_benefit, self_time and time_inlining_benefit.
21660         (struct cgraph_global_info): Replace insns by time ans size fields.
21661         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21662         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21663         (ipcp_update_callgraph): Do not touch function bodies.
21664         * ipa-inline.c: Include except.h
21665         (MAX_TIME): New constant.
21666         (overall_insns): Remove
21667         (overall_size, max_benefit): New static variables.
21668         (cgraph_estimate_time_after_inlining): New function.
21669         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21670         (cgraph_clone_inlined_nodes): Update size.
21671         (cgraph_mark_inline_edge): Update size.
21672         (cgraph_estimate_growth): Use size info.
21673         (cgraph_check_inline_limits): Check size.
21674         (cgraph_default_inline_p): Likewise.
21675         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21676         (cgraph_decide_recursive_inlining): Check size.
21677         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21678         and times.
21679         (cgraph_decide_inlining): Likewise.
21680         (cgraph_decide_inlining_incrementally): Likewise; honor
21681         PARAM_EARLY_INLINING_INSNS.
21682         (likely_eliminated_by_inlining_p): New predicate.
21683         (estimate_function_body_sizes): New function.
21684         (compute_inline_parameters): Use it.
21685         * except.c (must_not_throw_labels): New function.
21686         * except.h (must_not_throw_labels): Declare.
21687         * tree-inline.c (init_inline_once): Kill inlining_weigths
21688         * tree-ssa-structalias.c: Avoid uninitialized warning.
21689         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21690         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21691         (PARAM_INLINE_CALL_COST): Remove.
21692         (PARAM_EARLY_INLINING_INSNS): New.
21693         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
21694         (inline-call-cost): Remove.
21695         (early-inlining-insns): New.
21696
21697 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
21698
21699         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
21700         for bounds.
21701         (print_int_cst_bounds_in_octal_p): Likewise.
21702         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
21703         with subtypes.
21704         * dwarf2out.c (base_type_die): Likewise.
21705         (is_subrange_type): Delete.
21706         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
21707         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
21708         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
21709         if the destination type is boolean.
21710         (build_range_check): Do not special-case subtypes.
21711         (fold_sign_changed_comparison): Likewise.
21712         (fold_unary): Likewise.
21713         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
21714         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
21715         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
21716         * tree.c (subrange_type_for_debug_p): New predicate based on the
21717         former is_subrange_type.
21718         * tree.h (subrange_type_for_debug_p): Declare.
21719         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
21720         (convert_affine_scev): Remove call to above function.
21721         (chrec_convert_aggressive): Likewise.
21722         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
21723         false for conversions involving subtypes.
21724         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
21725         (vrp_val_min): Likewise.
21726         (needs_overflow_infinity): Likewise.
21727         (extract_range_from_unary_expr): Likewise.
21728
21729 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
21730
21731         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21732         * config/frv/frv.c: Likewise.
21733         * config/s390/s390.c: Likewise.
21734         * config/sparc/sparc.h: Likewise.
21735         * config/i386/i386.h: Likewise.
21736         * config/i386/i386.c: Likewise.
21737         * config/crx/crx.c: Likewise.
21738         * config/m68hc11/m68hc11.h: Likewise.
21739         * config/iq2000/iq2000.c: Likewise.
21740         * config/mn10300/mn10300.h: Likewise.
21741         * config/mn10300/mn10300.c: Likewise.
21742         * config/m68k/m68k.c: Likewise.
21743         * config/rs6000/rs6000.c: Likewise.
21744         * config/rs6000/xcoff.h: Likewise.
21745         * config/rs6000/linux64.h: Likewise.
21746         * config/rs6000/sysv4.h: Likewise.
21747         * config/score/score3.c: Likewise.
21748         * config/score/score7.c: Likewise.
21749         * config/score/score.c: Likewise.
21750         * config/arm/arm.md: Likewise.
21751         * config/mips/mips.c: Likewise.
21752         * config/mips/mips.md: Likewise.
21753         * config/bfin/bfin.h: Likewise.
21754         * config/pa/pa.c: Likewise.
21755         * config/pa/constraints.md: Likewise.
21756
21757         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
21758         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
21759         * config/pdp11/pdp11.h: Use memory_address_p instead.
21760
21761 2009-05-14  Ian Lance Taylor  <iant@google.com>
21762
21763         * passes.c (finish_optimization_passes): Change i to int.
21764         * plugin.c (plugins_active_p): Change event to int.
21765         (dump_active_plugins): Likewise.
21766         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
21767         Add cast.
21768         * tree.c (tree_range_check_failed): Change c to unsigned int.
21769         (omp_clause_range_check_failed): Likewise.
21770         (build_common_builtin_nodes): Change mode to int.  Add cast.
21771         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
21772         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
21773
21774         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
21775         ++ or -- with a variable of enum type.
21776
21777 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21778
21779         PR driver/40144
21780         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
21781
21782 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21783
21784         * store-motion.c: Do not include params.h
21785         * Makefile.in: Fix dependencies for various files.
21786
21787 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21788
21789         * auto-inc-dec.c: Fix pass description, remove apparent
21790         accidental duplication.
21791
21792 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
21793
21794         PR middle-end/40147
21795         * ipa-utils.h (memory_identifier_string): Moved to ...
21796         * tree.h (memory_identifier_string): Here.  Add GTY(()).
21797
21798 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21799
21800         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
21801         in the former documentation of...
21802         (GO_IF_LEGITIMATE_ADDRESS): ... this.
21803         * ira-conflicts.c (get_dup_num): Use address_operand.
21804         * targhooks.c (default_legitimate_address_p): New.
21805         * targhooks.h (default_legitimate_address_p): New.
21806         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
21807         Call hook.
21808         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
21809         * target.h (struct target): Add legitimate_address_p.
21810         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
21811         (TARGET_INITIALIZER): Include it.
21812
21813         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21814         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
21815         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
21816         (TARGET_LEGITIMATE_ADDRESS_P): New.
21817
21818         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21819         (REG_OK_STRICT_P): Delete.
21820         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
21821         (frv_legitimate_address_p_1): ... this.
21822         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
21823         (frv_legitimate_address_p_1): ... the renamed old
21824         frv_legitimate_address_p.
21825         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
21826         (TARGET_LEGITIMATE_ADDRESS_P): New.
21827
21828         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21829         * config/s390/s390-protos.h (legitimate_address_p): Remove.
21830         * config/s390/s390.c (legitimate_address_p): Rename to...
21831         (s390_legitimate_address_p): ... this, make static.
21832         (legitimize_address): Adjust call.
21833         (TARGET_LEGITIMATE_ADDRESS_P): New.
21834         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
21835
21836         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21837         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
21838         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
21839         (TARGET_LEGITIMATE_ADDRESS_P): New.
21840
21841         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21842         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
21843         * config/spu/spu.c (spu_legitimate_address): Rename to...
21844         (spu_legitimate_address_p): ... this, make static.
21845         (TARGET_LEGITIMATE_ADDRESS_P): New.
21846
21847         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21848         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
21849         * config/sparc/sparc.c (legitimate_address_p): Rename to...
21850         (sparc_legitimate_address_p): ... this, make static and return bool.
21851         (legitimize_address): Adjust call.
21852         (TARGET_LEGITIMATE_ADDRESS_P): New.
21853
21854         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21855         * config/i386/i386-protos.h (legitimate_address_p): Remove.
21856         * config/i386/i386.c (legitimate_address_p): Rename to...
21857         (ix86_legitimate_address_p): ... this, make static.
21858         (constant_address_p): Move after it, adjust call.
21859         (TARGET_LEGITIMATE_ADDRESS_P): New.
21860
21861         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21862         * config/avr/avr-protos.h (legitimate_address_p): Remove.
21863         * config/avr/avr.c (legitimate_address_p): Rename to...
21864         (avr_legitimate_address_p): ... this, make static.
21865         (legitimize_address): Adjust call.
21866         (TARGET_LEGITIMATE_ADDRESS_P): New.
21867
21868         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21869         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
21870         * config/crx/crx.c (crx_legitimate_address_p): Make static.
21871         (TARGET_LEGITIMATE_ADDRESS_P): New.
21872
21873         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21874         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
21875         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
21876         (TARGET_LEGITIMATE_ADDRESS_P): New.
21877
21878         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21879         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
21880         Remove.
21881         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
21882         Make static.
21883         (TARGET_LEGITIMATE_ADDRESS_P): New.
21884
21885         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21886         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
21887         Remove.
21888         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
21889         Rename to...
21890         (m68hc11_legitimate_address_p): ... this, make static.
21891         (go_if_legitimate_address_internal): Rename to...
21892         (m68hc11_legitimate_address_p_1): ... this.
21893         (legitimize_address): Adjust call.
21894         (TARGET_LEGITIMATE_ADDRESS_P): New.
21895
21896         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21897         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
21898         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
21899         (TARGET_LEGITIMATE_ADDRESS_P): New.
21900
21901         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21902         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
21903         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
21904         (mn10300_legitimate_address_p): ... this, make static.
21905         (TARGET_LEGITIMATE_ADDRESS_P): New.
21906
21907         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21908         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
21909         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
21910         (TARGET_LEGITIMATE_ADDRESS_P): New.
21911
21912         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21913         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
21914         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
21915         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21916         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
21917         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
21918         (rs6000_legitimate_address_p): ... this, make static.
21919         (TARGET_LEGITIMATE_ADDRESS_P): New.
21920         (REG_MODE_OK_FOR_BASE_P): Delete.
21921         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
21922
21923         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21924         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
21925         Delete.
21926         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
21927         static, adjust types.
21928         (TARGET_LEGITIMATE_ADDRESS_P): New.
21929
21930         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21931         * config/score/score.c (score_address_p): Rename to...
21932         (score_legitimate_address_p): ... this.
21933         (TARGET_LEGITIMATE_ADDRESS_P): New.
21934         * config/score/score3.c (score3_address_p): Rename to...
21935         (score3_legitimate_address_p): ... this.
21936         * config/score/score7.c (score7_address_p): Rename to...
21937         (score7_legitimate_address_p): ... this.
21938
21939         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
21940         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
21941         GO_IF_LEGITIMATE_ADDRESS): Delete.
21942         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
21943         thumb2_legitimate_address_p): Delete.
21944         (arm_legitimate_address_p): Rename to...
21945         (arm_legitimate_address_outer_p): ... this.
21946         * config/arm/constraints.md ("Uq"): Adjust call.
21947         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
21948         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
21949         to...
21950         (arm_legitimate_address_outer_p): ... this.
21951         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
21952         static.
21953         (TARGET_LEGITIMATE_ADDRESS_P): New.
21954
21955         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21956         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
21957         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
21958         (TARGET_LEGITIMATE_ADDRESS_P): New.
21959
21960         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21961         * config/vax/vax-protos.h (legitimate_address_p): Remove.
21962         * config/vax/vax.c (legitimate_address_p): Rename to...
21963         (vax_legitimate_address_p): ... this, make static.
21964         (TARGET_LEGITIMATE_ADDRESS_P): New.
21965
21966         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21967         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
21968         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
21969         (TARGET_LEGITIMATE_ADDRESS_P): New.
21970
21971         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21972         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
21973         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
21974         (mmix_legitimate_address_p): ... this, make static.
21975         (TARGET_LEGITIMATE_ADDRESS_P): New.
21976
21977         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21978         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
21979         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
21980         (TARGET_LEGITIMATE_ADDRESS_P): New.
21981
21982 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21983
21984         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
21985         of MODE_COMPLEX_INT.
21986
21987 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21988
21989         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
21990         LCT_NORMAL in function call.
21991         * mips-tdump.c (print_file_desc): Add cast to enum type.
21992         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
21993         (mark_stabs): Add casts to enum types.
21994         (parse_stabs_common): Add casts to enum types.
21995
21996 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
21997
21998         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
21999         Check for invalid values of LETTER.
22000
22001 2009-05-13  Taras Glek  <tglek@mozilla.com>
22002
22003         * attribs.c (register_attribute): moved out attribute registration
22004         into register_attribute.
22005         * doc/plugins.texi: Documented register_attribute and
22006         PLUGIN_ATTRIBUTES.
22007         * gcc-plugin.h: Added forward decl for register_attribute.
22008         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
22009         * plugin.c (register_callback, invoke_plugin_callbacks): Added
22010         PLUGIN_ATTRIBUTES boilerplate.
22011
22012 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
22013
22014         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
22015         values even in sentinel and empty entries.
22016         (ms_printf_flag_specs):  Likewise.
22017         (ms_scanf_flag_specs):  Likewise.
22018         (ms_strftime_flag_specs):  Likewise.
22019         (ms_print_char_table):  Likewise.
22020         (ms_scan_char_table):  Likewise.
22021         (ms_time_char_table):  Likewise.
22022
22023 2009-05-13  Doug Kwan  <dougkwan@google.com>
22024
22025         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
22026
22027 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22028
22029         * config/mips/mips.md (store): Add attributes for QI and HI.
22030         Update comment.
22031         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
22032         (truncdi<mode>2): ... this new pattern.
22033
22034 2009-05-13  Brad Hards  <bradh@kde.org>
22035
22036         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
22037
22038 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
22039             Ben Elliston <bje@au.ibm.com>
22040
22041         PR middle-end/40035
22042         * dse.c (check_mem_read_rtx): Guard against width == -1.
22043
22044 2009-05-13  Michael Matz  <matz@suse.de>
22045
22046         PR middle-end/39976
22047         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
22048         (trivially_conflicts_p): New function.
22049         (insert_backedge_copies): Use it.
22050
22051 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
22052
22053         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
22054         (handle_stdc_pragma): Use new enum constant names.
22055         (handle_pragma_float_const_decimal64): Ditto.
22056
22057 2009-05-13  Ian Lance Taylor  <iant@google.com>
22058
22059         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
22060         tree.def.
22061
22062 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
22063
22064         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
22065         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
22066         multilibs.
22067         * config/m68k/m68k.h (FL_UCLINUX): Define.
22068
22069 2009-05-13  Jan Hubicka  <jh@suse.cz>
22070
22071         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
22072
22073 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22074
22075         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
22076         unless -fschedule-insns is specified.
22077
22078 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22079
22080         PR target/39561
22081         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
22082         TARGET_EXPAND_CBRANCHDI4.
22083         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
22084         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
22085         (cmpeqdi): Fix comment.
22086
22087 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22088
22089         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
22090         (sh_legitimate_address_p): Likewise.
22091         * config/sh/sh.c (sh_legitimate_index_p): New.
22092         (sh_legitimate_address_p): Likewise.
22093         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
22094         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
22095         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
22096         (MAYBE_BASE_REGISTER_RTX_P): New macro.
22097         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
22098         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
22099         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
22100         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
22101         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
22102
22103 2009-05-12  Jan Hubicka  <jh@suse.cz>
22104
22105         * tree-inline.c (estimate_operator_cost): Add operands;
22106         when division happens by constant, it is cheap.
22107         (estimate_num_insns): Loads and stores are not having cost of 0;
22108         EH magic stuff is cheap; when computing runtime cost of switch,
22109         use log2 base of amount of its cases; builtin_expect has cost of 0;
22110         compute cost for moving return value of call.
22111         (init_inline_once): Initialize time_based flags.
22112         * tree-inline.h (eni_weights_d): Add time_based flag.
22113
22114 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22115
22116         * df-core.c: Update head documentation.
22117
22118 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22119
22120         PR bootstrap/40118
22121         * rs6000.c (rs6000_generate_compare): Use op1b instead of
22122         shadowing exisiting variable op1.
22123
22124 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
22125
22126         PR target/37179
22127         * config/i386/driver-i386.c (processor_signatures): New enum.
22128         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
22129         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
22130         processor signature to detect geode processor.
22131
22132 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22133
22134         Revert:
22135
22136         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22137
22138         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22139         causes spurious differences between trunk and cond-optab branch.
22140
22141 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22142
22143         * dojump.c (compare_from_rtx): Delete.
22144         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
22145         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
22146         if the comparison does not satisfy the predicate; test predicates for
22147         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
22148         further if one existing pattern fails.
22149         * expr.h (compare_from_rtx): Delete.
22150         (prepare_operand): Declare it.
22151         * optabs.c: Change "lib call" to "libcall" throughout.
22152         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
22153         HAVE_conditional_trap, emit_cmp_insn): Delete.
22154         (can_compare_p): Delete cmp_optab case.
22155         (prepare_float_lib_cmp): Return an rtx and a machine mode.
22156         Accept other parameters by value.
22157         (prepare_operand): Make non-static.
22158         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
22159         other parameters by value.  Try to widen operands here based on
22160         an optab_methods argument and looking at cbranch_optab.
22161         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
22162         loop.  Use cbranch_optab directly.
22163         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
22164         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
22165         assertion.
22166         (emit_conditional_move, emit_conditional_add): Inline what's needed
22167         of compare_from_rtx, using new prepare_cmp_insn for the rest.
22168         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
22169         with COMPARE.  Move cmov_optab and cstore_optab above
22170         with cbranch_optab, move cmp_optab down with ucmp_optab,
22171         remove tst_otpab.  Do not initialize trap_rtx.
22172         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
22173         for trap code.  Do not check HAVE_conditional_trap.  Use
22174         prepare_cmp_insn.  Accept no predicate for operand 3.
22175         * optabs.h (OTI_cmp): Mark as used only for libcalls.
22176         (OTI_ctrap, ctrap_optab): New.
22177         (tst_optab): Delete.
22178         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
22179         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
22180         with lookup of ctrap_optab.
22181         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
22182         Delete.
22183         (ctrap_optab): New.
22184
22185         * combine.c (combine_simplify_rtx, simplify_set): Do not
22186         special case comparing against zero for cc0 machines.
22187         * simplify-rtx.c (simplify_binary_operation_1): Never remove
22188         COMPARE on cc0 machines.
22189         (simplify_relational_operation): Return a new expression when
22190         a COMPARE could be removed.
22191         * final.c (final_scan_insn): Compare cc_status values
22192         against LHS of a (compare FOO (const_int 0)) cc0 source.
22193         Also check if cc_status.value is the full compare.
22194
22195         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
22196         (cstoreMM4): Document.
22197         (conditional_trap): Document ctrapMM4 instead.
22198         (sync_compare_and_swapMM): Refer to cbranchcc4.
22199         (Dependent Patterns): Eliminate obsolete information referring to
22200         the old jump optimization phase.
22201         (Canonicalization): Include cbranchcc4 case, omit canonicalization
22202         of compares with 0 on cc0 machines.
22203         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
22204         avoiding references to cc0.  Remove text about storing operands
22205         in cmpMM.
22206         * doc/tm.texi (Condition Codes): Include blurb on different
22207         condition code representations, separate into subsections for
22208         CC0, MODE_CC and conditional execution.
22209
22210         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
22211         alpha_emit_setcc): Accept operands and a machine mode.
22212         * config/alpha/alpha.c (alpha_emit_conditional_branch):
22213         Get code/op0/op1 from operands, use machine mode argument
22214         instead of alpha_compare.fp_p.  Emit the branch here.
22215         (alpha_emit_setcc): Likewise, and return boolean.
22216         (alpha_emit_conditional_move): Likewise.  Assert that
22217         cmp_op_mode == cmp_mode, and simplify accordingly.
22218         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
22219         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
22220         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
22221         Delete.
22222         (stack probe test): Use cbranchdi4.
22223         * config/alpha/predicates.md (alpha_cbranch_operator): New.
22224
22225         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
22226         * config/arc/arc.h (movsicc, movsfcc): Use it.
22227         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
22228         (cbranchsi4, cstoresi4): New.
22229         (cmpsi, bCC and sCC expanders): Remove.
22230
22231         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
22232         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
22233         * config/arm/predicates.md (arm_comparison_operator): Only include
22234         floating-point operators if there is a hardware floating-point unit.
22235         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
22236         deferring to cbranch_cc and cstore_cc respectively.
22237         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
22238         cbranch_cc, cstore_cc): New.
22239         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
22240         arm_compare_op1.
22241         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
22242
22243         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
22244         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
22245         as an argument.
22246         (adjust_insn_length): Adjust calls.
22247         (avr_reorg): Handle (compare (foo) (const_int 0)).
22248         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
22249         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
22250         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
22251         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
22252         (bCC): Remove.
22253         (cbranchqi4, cbranchhi4, cbranchsi4): New.
22254         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
22255
22256         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
22257         (cbranchsi4, cstorebi4, cstoresi4): New.
22258         (movbisi): This insn is duplicate, split it to zero_extend.
22259         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
22260         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
22261         (bfin_optimize_loop): Use cbranch expander.
22262         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
22263         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
22264         (bfin_bimode_comparison_operator): ... this.
22265         (bfin_direct_comparison_operator): New.
22266
22267         * config/cris/cris.c (cris_normal_notice_update_cc): Look
22268         inside (compare FOO (const_int 0)).
22269         (cris_rtx_costs): Handle ZERO_EXTRACT.
22270         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
22271         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
22272         (*tstdi_v32): Delete.
22273         (*cmpdi_non_v32): Add M alternative for operand 1.
22274         (cmpsi, cmp<mode>): Make private.
22275         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
22276         with COMPARE.
22277         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
22278
22279         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
22280         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
22281         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
22282         (cc_reg_operand): New.
22283         (any_cond): Delete.
22284         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
22285         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
22286         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
22287         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
22288         crx_expand_scond): Delete.
22289
22290         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
22291         (cbranchsi4): New.
22292         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
22293         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
22294
22295         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
22296         cstoresi4, cstoresf4, cstoredf4): New.
22297         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
22298         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22299         Receive the entire operands array.
22300         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
22301         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
22302         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22303         Get test/op0/op1 from the operands array.
22304         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
22305
22306         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
22307         (h8300_expand_store): New.
22308         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
22309         (const_int 0)).
22310         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
22311         (h8300_expand_store): New.
22312         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
22313         or do not try to produce (set (cc0) REG).
22314         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
22315         change a compare into a move to a scratch register.  Disable some
22316         peepholes when comparing with zero.
22317         (tstsi, tsthi, tstsi, cmpqi): Make private.
22318         (cmphi): Delete.
22319         (bCC, sCC): Delete.
22320         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
22321         cstoresi4): New.
22322
22323         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
22324         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
22325         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
22326         (ix86_emit_i387_log1p): Use cbranchxf2.
22327         (ix86_expand_setcc): Return void.
22328         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
22329         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
22330         cmp<MODEF>, cmpcc): Remove.
22331         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
22332         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
22333         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
22334         (sCC and bCC expanders): Remove.
22335         (stack_protect_test): Use cbranchcc4.
22336
22337         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
22338         Delete.
22339         (ia64_expand_compare): Accept three rtx by reference and return void.
22340         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
22341         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
22342         from *expr.  Update *expr with the BImode comparison to do.
22343         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
22344         cmptf, bCC, sCC, conditional_trap): Delete.
22345         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
22346         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
22347         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
22348         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
22349         * config/ia64/predicates.md (ia64_cbranch_operator): New.
22350
22351         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
22352         type of last argument.
22353         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
22354         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
22355         use machine mode argument instead of branch_type.  Remove dead
22356         code for floating-point comparisons.
22357         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
22358         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
22359         Remove.
22360         (cbranchsi4, cstoresi4): New.
22361         * config/iq2000/predicates.md (reg_or_const_operand): New.
22362
22363         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
22364         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
22365         (b<code>_op): Rewrite to...
22366         (bcc_op): ... this, using match_operator.
22367         (s<code>_op): Rewrite to...
22368         (scc_op): ... this, using match_operator.
22369         (s<code>_24_op): Rewrite to...
22370         (scc_op_24): ... this, using match_operator.
22371         (s<code>_<mode>): Rewrite to...
22372         (cstore<mode>4): ... this, using match_operator.
22373         (s<code>_<mode>_24): Rewrite to...
22374         (cstore<mode>4_24): ... this, using match_operator.
22375         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
22376         m32c_unpend_compare, m32c_expand_scc): Delete.
22377         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
22378         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
22379         (m32c_expand_movcc): Change NE to EQ if necessary.
22380         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
22381
22382         * config/m32r/m32r-protos.h (gen_cond_store): New.
22383         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
22384         (gen_cond_store): New, from sCC patterns.
22385         (m32r_expand_block_move): Use cbranchsi4.
22386         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
22387         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
22388         (cbranchsi4, cstoresi4): New.
22389
22390         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
22391         Delete.
22392         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
22393         (m68hc11_notice_update_cc): Look into a compare with 0.
22394         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
22395         Delete.
22396         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
22397         cmphi, cmpqi, bCC): Delete.
22398         (cbranchsi4, cbranchhi4, cbranchqi4): New.
22399         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
22400         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
22401         sets with COMPARE.
22402
22403         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
22404         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
22405         * config/m68k/constraints.md (H): New.
22406         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
22407         the define_insn below.
22408         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
22409         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
22410         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
22411         patterns): Wrap RHS with COMPARE.
22412         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
22413         (*cmpdi_internal): Name this pattern.
22414         (cmpdi): Change to define_insn.
22415         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
22416         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
22417         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
22418         predicate.
22419         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
22420         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
22421         (conditional_trap): Change to...
22422         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
22423         (*conditional_trap): Use the ordered_comparison_operator and
22424         const1_operand predicates.
22425         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
22426         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
22427         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
22428         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
22429
22430         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
22431         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
22432         (mcore_gen_compare): New.
22433         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
22434         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
22435         (mcore_gen_compare): ... this.
22436         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
22437         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
22438         (stack probe pattern): Use cbranchsi4.
22439
22440         * config/mips/predicates.md (mips_cstore_operator): New.
22441         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
22442         * config/mips/mips.md (any_cond): Delete.
22443         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
22444         always succeed.
22445         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
22446         fixuns_truncsfdi2): Use cbranch patterns.
22447         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
22448         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
22449         Adjust call to mips_expand_conditional_branch.
22450         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
22451         cstore<GPR:mode>4.
22452         * config/mips/mips-protos.h (mips_expand_conditional_branch,
22453         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
22454         * config/mips/mips.c (cmp_operands): Delete.
22455         (mips_emit_compare): Get comparison operands from *op0/*op1.
22456         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
22457         that it succeeds.  Use op0/op1 instead of cmp_operands.
22458         (mips_expand_conditional_branch, mips_expand_conditional_move,
22459         mips_expand_conditional_trap): Likewise.
22460         (mips_block_move_loop): Use cbranch patterns.
22461         * config/mips/mips.h (cmp_operands): Delete.
22462
22463         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
22464         (mmix_gen_compare_reg): Just return a register in the right CC mode.
22465         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
22466         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
22467         (*cmpcc_folded): Rename to...
22468         (*cmpdi_folded): this.
22469         (*cmpcc): Rename to...
22470         (*cmps): ... this.
22471         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
22472         (bCC): Remove.
22473         (cbranchdi4): New.
22474         (cbranchdf4): New.  Handle invalid comparisons here.
22475         * config/mmix/predicates.md (float_comparison_operator): New.
22476
22477         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
22478         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
22479         * config/mn10300/mn10300.md (tst): Delete.
22480         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
22481         Name these patterns and wrap RHS in a compare.
22482         (*cmpsi): Make this pattern private.  Include tst.
22483         (*cmpsf): Make this pattern private.
22484         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
22485         (compare with zero peepholes): Likewise.
22486         (bCC): Remove.
22487         (cbranchsi4, cbranchsf4): New.
22488         (casesi): Use cbranchsi4.
22489
22490         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
22491         hppa_branch_type): Delete.
22492         (return_addr_rtx): Use cbranchsi4.
22493         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
22494         Emit CCFPmode comparison here.
22495         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
22496         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
22497         hppa_branch_type): Delete.
22498         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
22499         (movsicc, movdicc): Remove references to hppa_compare_op0,
22500         hppa_compare_op1 and compare_from_rtx.
22501         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
22502         (casesi): Use cbranchsi4.
22503
22504         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
22505         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
22506         * config/pdp11/pdp11.md (register_or_const0_operand): New.
22507         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
22508         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
22509         (bCC): Delete.
22510         (cbranchdf4, cbranchhi4, cbranchqi4): New.
22511         (*branch, *branch_inverted): New.
22512
22513         * config/picochip/picochip.md (cbranchhi4): Use
22514         ordered_comparison_operator.
22515         (cmphi, bCC): Remove.
22516
22517         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
22518         (trap_comparison_operator): Delete.
22519         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
22520         rs6000_emit_cbranch): Accept mode and operands.
22521         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
22522         rs6000_compare_fp_p): Delete.
22523         (rs6000_generate_compare): Accept mode and comparison.  Extract code
22524         and op0/op1 from there.  Replace references to rs6000_compare_op0
22525         and rs6000_compare_op1.
22526         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
22527         extract result from passed operands.
22528         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
22529         extract loc from passed operands.
22530         (rs6000_emit_cmove): Likewise.
22531         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
22532         rs6000_compare_fp_p): Delete.
22533         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
22534         (cbranch<GPR>4, cbranch<FP>4): New.
22535         (cstore<mode>4): New.  Consolidate here all choices about when to use
22536         portable or specialized sCC sequences.
22537         (stack_protect_test): Use cbranchsi4.
22538         (conditional_trap): Replace with ctrap<GPR>4.
22539         (conditional trap insn): Replace trap_comparison_operator with
22540         ordered_comparison_operator.
22541
22542         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
22543         (s390_emit_prologue): Use ctrap.
22544         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
22545         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
22546         New predicates replacing...
22547         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
22548         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
22549         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
22550         (add<mode>cc): Do not use s390_compare_op0/op1.
22551         (s<code>): Change to...
22552         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
22553         (seq): Change to...
22554         (cstorecc4): ... this.  Handle EQ or NE equally.
22555         (*sne): Un-privatize for use in cstorecc4.
22556         (b<code>): Change to...
22557         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
22558         (conditional_trap): Replace with...
22559         (ctrap<GPR>4, ctrap<FP>4): ... these.
22560         (stack_protect): Use cbranchcc4.
22561
22562         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
22563         * config/score/score-protos.h (score_gen_cmp): Delete.
22564         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
22565         (score_block_move-loop): Use cbranchsi4.
22566         * config/score/score.md (cbranchsi4): New.
22567         (cmpsi, bCC): Delete.
22568         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
22569         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22570         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
22571         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22572         * config/score/score3.h (score3_gen_cmp): Delete.
22573         * config/score/score7.h (score7_gen_cmp): Delete.
22574
22575         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
22576         (sh_emit_scc_to_t): ... this.  Return void.
22577         (from_compare): Rename to...
22578         (sh_emit_compare_and_branch): ... this.
22579         (sh_emit_compare_and_set): New.
22580         (sh_expand_t_scc): Accept operands.
22581         * config/sh/predicates.md (sh_float_comparison_operator): New.
22582         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
22583         (prepare_scc_operands): Rename to...
22584         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
22585         arguments.
22586         (sh_emit_cheap_store_flag): New.
22587         (sh_emit_set_t_insn): New.
22588         (from_compare): Rename to...
22589         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
22590         handling of TARGET_SH2E floating point to avoid recursive call.
22591         Generate branch here.
22592         (sh_emit_compare_and_set): New.
22593         (sh_expand_t_scc): Get op0/op1 from arguments.
22594         (sh_emit_cheap_store_flag): New.
22595         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
22596         cases.
22597         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
22598         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
22599         (movsicc, movdicc): Do nothing when it recreated operands from
22600         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
22601         prepare_scc_operands (now sh_emit_scc_to_t).
22602         (udivdi3): Use cstoresi4.
22603         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
22604         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
22605         (cbranchint4_media, cbranchfp4_media): New.
22606         (casesi): Use cbranchdi4.
22607         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
22608         Delete.
22609         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
22610         (movnegt): Remove second operand.
22611         (cbranchsf4, cbranchdf4): New.
22612         (stack_protect): Use cbranchdi4/cbranchsi4.
22613
22614         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22615         (gen_compare_reg): Accept comparison, extract part of it to...
22616         (gen_compare_reg_1): ... this.
22617         (gen_compare_operator): Delete.
22618         (gen_v9_scc): Accept separate destination, comparison code and arms.
22619         Do not use sparc_compare_op0/sparc_compare_op1.
22620         (emit_scc_insn, emit_conditional_branch_insn): New.
22621         (emit_v9_brxx): Make static.  Remove useless assertion.
22622         (sparc_emit_float_lib_cmp): Return RTL instead of calling
22623         emit_cmp_insn.
22624         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
22625         * config/sparc/sparc-protos.h (gen_compare_reg,
22626         sparc_emit_float_lib_cmp): Adjust prototype.
22627         (emit_scc_insn, emit_conditional_branch_insn): New.
22628         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
22629         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
22630         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
22631         iterators to the top.
22632         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
22633         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
22634         snedi_special_trunc): Delete.
22635         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
22636         and snedi_special_trunc.
22637         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
22638         cbranchdi4, cbranch<F:mode>4): New.
22639         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
22640         here.  Use gen_compare_reg instead of gen_compare_operator.
22641         (conditional_trap): Replace with...
22642         (ctrapsi4, ctrapdi4): ... this.
22643         (stack_protect_test): Use cbranchcc4.
22644
22645         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
22646         argument to rtx.
22647         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
22648         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
22649         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
22650         from operands[0] or operands[3] depending on is_set.
22651         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
22652         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
22653         cmpdf, bCC), sCC: Remove.
22654         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
22655         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
22656         cstoredf4): New.
22657         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
22658         spu_emit_branch_or_set.
22659
22660         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
22661         Add two arguments.
22662         * config/stormy16/stormy16.h (xstormy16_compare_op0,
22663         xstormy16_compare_op1): Delete.
22664         * config/stormy16/stormy16.c (xstormy16_compare_op0,
22665         xstormy16_compare_op1): Delete.
22666         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
22667         Adjust calls.
22668         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
22669         (cmphi, cmpsi, bCC): Remove.
22670
22671         * config/v850/v850.md (tstsi, cmpsi): Fold into...
22672         (*cmpsi): ... this one.
22673         (cbranchsi4, cstoresi4): New.
22674         (bCC expanders): Delete.
22675         (sCC insns): Fold into...
22676         (*setcc): ... this one.
22677         (casesi): Do not use gen_cmpsi and gen_bgtu.
22678         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
22679         (movsicc): Simplify.
22680         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
22681
22682         * config/vax/vax-protos.h (cond_name): New.
22683         (vax_output_conditional_branch): Remove.
22684         * config/vax/vax.c (cond_name): New.
22685         (vax_output_conditional_branch): Remove.
22686         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
22687         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
22688         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
22689         (bit<VAXint>): Wrap source with (compare).
22690         (b<code> and following unnamed pattern): Rename to *branch and
22691         *branch_reversed.  Change macroization to match_operator.
22692         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
22693
22694         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
22695         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
22696         Change last argument to machine_mode.
22697         (xtensa_expand_scc): Add machine_mode argument.
22698         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
22699         (gen_conditional_move, xtensa_expand_conditional_branch,
22700         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
22701         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
22702         Adjust operand numbers.
22703         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
22704         Delete.
22705         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
22706         (cmpsi, cmpsf, b<code>, s<code>): Delete.
22707         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
22708
22709 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22710
22711         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22712         causes spurious differences between trunk and cond-optab branch.
22713
22714 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22715
22716         PR target/37137
22717         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
22718
22719 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22720
22721         * tree.c (iterative_hash_pointer): Delete.
22722         (iterative_hash_expr): Short-circuit handling of NULL pointer.
22723         Hash UIDs and versions of SSA names.  Don't special-case built-in
22724         function declarations.
22725
22726 2009-05-11  Ian Lance Taylor  <iant@google.com>
22727
22728         PR bootstrap/40103
22729         * graphite.c: Force -Wc++-compat to only be a warning before
22730         #including "cloog/cloog.h".
22731
22732 2009-05-11  Martin Jambor  <mjambor@suse.cz>
22733
22734         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
22735
22736 2009-05-11  Jan Hubicka  <jh@suse.cz>
22737
22738         * tree-ssa-loop-ivcanon.c: Include target.h
22739         (struct loop_size): new structure.
22740         (constant_after_peeling): New predicate.
22741         (tree_estimate_loop_size): New function.
22742         (estimated_unrolled_size): Rewrite for new estimates.
22743         (try_unroll_loop_completely): Use new estimates.
22744         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
22745
22746 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22747
22748         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
22749         libcpp interface change.
22750         (spu_macro_to_expand): Likewise.
22751
22752 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
22753
22754         PR tree-optimization/40026
22755         * gimplify.c (gimplify_init_constructor): Change initial conditional
22756         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
22757         optimize_compound_literals_in_ctor.
22758
22759 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
22760
22761         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
22762         New devices.
22763         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
22764
22765 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
22766
22767         * tree-vect-data-refs.c (vect_analyze_group_access): Use
22768         HOST_WIDE_INT for gap.
22769
22770 2009-05-11  Ira Rosen  <irar@il.ibm.com>
22771
22772         PR tree-optimization/40074
22773         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
22774         account in group size and step comparison.
22775
22776 2009-05-11  Richard Guenther  <rguenther@suse.de>
22777
22778         * passes.c (init_optimization_passes): Strip now incorrect comment.
22779         (execute_function_todo): Do not set PROP_alias.
22780         * tree-pass.h (PROP_alias): Remove.
22781         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
22782         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
22783         * tree-nrv.c (pass_return_slot): Likewise.
22784         * tree-object-size.c (pass_object_sizes): Likewise.
22785         * tree-ssa-dom.c (pass_dominator): Likewise.
22786         (pass_phi_only_cprop): Likewise.
22787         * tree-ssa-dse.c (pass_dse): Likewise.
22788         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
22789         (pass_cselim): Likewise.
22790         * tree-ssa-pre.c (pass_pre): Likewise.
22791         (pass_fre): Likewise.
22792         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
22793         * tree-ssa-sink.c (pass_sink_code): Likewise.
22794         * tree-stdarg.c (pass_stdarg): Likewise.
22795         * tree-tailcall.c (pass_tail_calls): Likewise.
22796         * tree-vrp.c (pass_vrp): Likewise.
22797
22798 2009-05-10  Ian Lance Taylor  <iant@google.com>
22799
22800         * basic-block.h (enum profile_status): Break out of struct
22801         control_flow_graph.
22802         * cgraph.h (struct inline_summary): Break out of struct
22803         cgraph_local_info.
22804         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
22805         of struct cgraph_order_sort.
22806         * combine.c (enum undo_kind): New enum, broken out of struct undo.
22807         * cse.c (struct branch_path): Break out of struct
22808         cse_basic_block_data.
22809         * except.h (enum eh_region_type): Break out of struct eh_region.
22810         * gcc.c (enum add_del): Break out of struct modify_target.
22811         * genrecog.c (enum decision_type): Break out of struct decision_test.
22812         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
22813         ggc_pch_data.
22814         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
22815         * regmove.c (enum match_use): New enum, broken out of struct match.
22816         * sched-int.h (enum post_call_group): New enum, broken out of
22817         struct deps.
22818         (struct deps_reg): Break out of struct deps.
22819         * target.h (struct asm_int_op): Break out of struct gcc_target.
22820         * tree-eh.c (struct goto_queue_node): Break out of struct
22821         leh_tf_state.
22822         * tree-inline.h (enum copy_body_cge_which): Break out of
22823         copy_body_data.
22824         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
22825
22826         * c-decl.c (in_struct, struct_types): New static variables.
22827         (pushtag): Add loc parameter.  Change all callers.
22828         (lookup_tag): Add ploc parameter.  Change all callers.
22829         (check_compound_literal_type): New function.
22830         (parser_xref_tag): Add loc parameter.  Change all callers.  If
22831         -Wc++-compat, warn about struct/union/enum types defined within a
22832         struct or union.
22833         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
22834         and loc parameters.  Change all callers.  Change error calls to
22835         error_at, using loc.  For a redefinition, if the location of the
22836         original definition is known, report it.  Set in_struct and
22837         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
22838         (finish_struct): Add new parameters enclosing_in_struct and
22839         enclosing_struct_types.  Change all callers.  Set
22840         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
22841         in the struct.  If in a struct, add this struct to struct_types.
22842         (start_enum): Add loc parameter.  Change all callers.  Use
22843         error_at for errors, using loc.  For a redefinition, if the
22844         location of the original definition is known, report it.  If in a
22845         struct, add this enum type to struct_types.  If -Wc++-compat warn
22846         if in sizeof, typeof, or alignof.
22847         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
22848         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
22849         (c_parser_enum_specifier): Get enum location for start_enum.
22850         (c_parser_struct_or_union_specifier): Get struct location for
22851         start_struct.  Save in_struct and struct_types status between
22852         start_struct and finish_struct.
22853         (c_parser_cast_expression): Get location of cast.
22854         (c_parser_alignof_expression): Get location of type.
22855         (c_parser_postfix_expression): Likewise.
22856         (c_parser_postfix_expression_after_paren_type): Add type_loc
22857         parameter.  Change all callers.  Call check_compound_literal_type.
22858         Use type_loc for error about variable size type.
22859         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
22860         of an enum constant from an enum type defined in a struct or union.
22861         (c_cast_expr): Add loc parameter.  Change all callers.  If
22862         -Wc++-compat, warn about defining a type in a cast.
22863         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
22864         (start_enum, start_struct, finish_struct): Update declarations.
22865         (parser_xref_tag, c_cast_expr): Update declarations.
22866         (check_compound_literal_type): Declare.
22867
22868 2009-05-11  Ben Elliston  <bje@au.ibm.com>
22869
22870         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
22871         for recent libcpp interface change.
22872         (rs6000_macro_to_expand): Likewise.
22873
22874 2009-05-10  Michael Matz  <matz@suse.de>
22875
22876         PR target/40031
22877         * config/arm/arm.c (require_pic_register): Emit on entry edge,
22878         not at entry of function.
22879
22880 2009-05-10  Richard Guenther  <rguenther@suse.de>
22881
22882         PR tree-optimization/40081
22883         Revert
22884         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22885         using the main variant of the element type.  Do not fiddle with
22886         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22887
22888         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
22889         structs with volatile fields.
22890
22891 2009-05-10  Jan Hubicka  <jh@suse.cz>
22892
22893         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
22894         (estimate_move_cost): Assert that it does not get called for
22895         VOID_TYPE_P.
22896         (estimate_num_insns): Skip VOID types in argument handling.
22897         (optimize_inline_calls): Delete unreachable blocks and verify that
22898         callgraph is valid.
22899
22900 2009-05-10  Jan Hubicka  <jh@suse.cz>
22901
22902         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
22903         * cgraph.c (cgraph_mark_address_taken_node): New function.
22904         (dump_cgraph_node): Dump new flag.
22905         * cgraph.h (struct cgraph_node): Add address_taken.
22906         (cgraph_mark_address_taken_node): New function.
22907         * ipa.c (cgraph_postorder): Prioritize functions with address taken
22908         since new direct calls can be born.
22909
22910 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22911
22912         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
22913         tok->val.node.node.
22914
22915 2009-05-10  Jan Hubicka  <jh@suse.cz>
22916
22917         PR middle-end/40084
22918         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
22919         argument; rewrite.
22920         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
22921         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
22922         * tree-inline.c (copy_bb): Set frequency correctly.
22923         (fold_marked_statements): Update call to
22924         cgraph_update_edges_for_call_stmt.
22925
22926 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22927
22928         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
22929         identifiers in diagnostics.
22930         * config/arm/arm.c (arm_handle_fndecl_attribute,
22931         arm_handle_isr_attribute): Likewise.
22932         * config/avr/avr.c (avr_handle_progmem_attribute,
22933         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
22934         * config/bfin/bfin.c (handle_int_attribute,
22935         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
22936         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
22937         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
22938         Likewise.
22939         * config/darwin.c (darwin_handle_kext_attribute,
22940         darwin_handle_weak_import_attribute): Likewise.
22941         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
22942         h8300_handle_eightbit_data_attribute,
22943         h8300_handle_tiny_data_attribute): Likewise.
22944         * config/i386/i386.c (ix86_handle_cconv_attribute,
22945         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
22946         * config/i386/winnt.c (ix86_handle_shared_attribute,
22947         ix86_handle_selectany_attribute): Likewise.
22948         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
22949         * config/m32c/m32c.c (function_vector_handler): Likewise.
22950         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
22951         m68hc11_handle_fntype_attribute): Likewise.
22952         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
22953         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
22954         * config/mips/mips.c (mips_insert_attributes,
22955         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
22956         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
22957         rs6000_handle_struct_attribute): Likewise.
22958         * config/sh/sh.c (sh_insert_attributes,
22959         sh_handle_resbank_handler_attribute,
22960         sh_handle_interrupt_handler_attribute,
22961         sh2a_handle_function_vector_handler_attribute,
22962         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
22963         Likewise.
22964         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
22965         * config/spu/spu.c (spu_handle_fndecl_attribute,
22966         spu_handle_vector_attribute): Likewise.
22967         * config/stormy16/stormy16.c
22968         (xstormy16_handle_interrupt_attribute): Likewise.
22969         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
22970         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
22971
22972 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22973
22974         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
22975         (pp_translate_identifiers): New.
22976         (pp_identifier): Only conditionally translate identifier to locale
22977         character set.
22978         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
22979         (pp_base_tree_identifier): Only conditionally translate identifier
22980         to locale character set.
22981         * c-pretty-print.c (M_): Define.
22982         (pp_c_type_specifier, pp_c_primary_expression): Mark English
22983         fragments for conditional translation with M_.
22984         * tree-pretty-print.c (maybe_init_pretty_print): Disable
22985         identifier translation.
22986
22987 2009-05-10  Richard Guenther  <rguenther@suse.de>
22988
22989         PR tree-optimization/40081
22990         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22991         using the main variant of the element type.  Do not fiddle with
22992         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22993
22994 2009-05-09  Jan Hubicka  <jh@suse.cz>
22995
22996         PR middle-end/40080
22997         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
22998         indirect calls; verify cgraph afterwards.
22999
23000 2009-05-09  Jan Hubicka  <jh@suse.cz>
23001
23002         PR bootstrap/40082
23003         * ipa.c (update_inlined_to_pointer): New function.
23004         (cgraph_remove_unreachable_nodes): Use it.
23005
23006 2009-05-09  Jan Hubicka  <jh@suse.cz>
23007
23008         * tree-eh.c (struct leh_state): Remove prev_try.
23009         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
23010         not track prev_try.
23011         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
23012         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
23013         remove_eh_handler_and_replace, foreach_reachable_handler,
23014         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
23015         * except.h (struct eh_region): Remove eh_region_u_cleanup.
23016         (gen_eh_region_cleanup): Update prototype.
23017
23018 2009-05-09  Jan Hubicka  <jh@suse.cz>
23019
23020         PR middle-end/40043
23021         * except.c (copy_eh_region): Always set prev_try.
23022         (redirect_eh_edge_to_label): Find outer try.
23023         (foreach_reachable_handler): When looking for prev try
23024         handle case where previous try is not going to be taken.
23025
23026 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23027
23028         PR tree-optimization/40049
23029         * tree-vect-stmts.c (vectorizable_operation): If the machine has
23030         only vector/vector shifts, convert the type of the constant to the
23031         appropriate type to avoid building incorrect trees, which
23032         eventually have problems with garbage collection.
23033
23034 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23035
23036         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
23037         -1 for complex floating-point types if honoring signed zeros.
23038
23039 2009-05-08  Jan Hubicka  <jh@suse.cz>
23040
23041         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
23042         argument; handle correctly when profile is absent.
23043         (build_cgraph_edges): Update.
23044         (rebuild_cgraph_edges): Update.
23045         * cgraph.c: Do not include varray.h.
23046         (cgraph_set_call_stmt_including_clones): New function.
23047         (cgraph_create_edge_including_clones): Likewise
23048         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
23049         (cgraph_update_edges_for_call_stmt): Handle clones.
23050         (cgraph_remove_node): Handle clone tree.
23051         (cgraph_remove_node_and_inline_clones): New function.
23052         (dump_cgraph_node): Dump clone tree.
23053         (cgraph_clone_node): Handle clone tree.
23054         (clone_function_name): Bring here from tree-inline.c.
23055         (cgraph_create_virtual_clone): New function.
23056         * cgraph.h (ipa_replace_map): Move here from ipa.h.
23057         (cgraph_clone_info): New function.
23058         (strut cgraph_node): Add clone_info and new clone tree pointers.
23059         (cgraph_remove_node_and_inline_clones,
23060         cgraph_set_call_stmt_including_clones,
23061         cgraph_create_edge_including_clones,
23062         cgraph_create_virtual_clone): Declare.
23063         (cgraph_function_versioning): Use VEC argument.
23064         (compute_call_stmt_bb_frequency): Update prototype.
23065         (cgraph_materialize_all_clones): New function.
23066         * ipa-cp.c (ipcp_update_cloned_node): Remove.
23067         (ipcp_create_replace_map): Update to VECtors.
23068         (ipcp_update_callgraph): Use virtual clones.
23069         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
23070         (ipcp_update_profiling): Do not update local profiling.
23071         (ipcp_insert_stage): Use VECtors and virtual clones.
23072         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
23073         (clone_of_p): New function.
23074         (cgraph_preserve_function_body_p): Use clone tree.
23075         (cgraph_optimize): Materialize clones.
23076         (cgraph_function_versioning): Update for VECtors.
23077         (save_inline_function_body): Use clone tree.
23078         (cgraph_materialize_clone): New function.
23079         (cgraph_materialize_all_clones): Likewise.
23080         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
23081         * ipa.c: Include gimple.h.
23082         (cgraph_remove_unreachable_nodes): Use clone tree.
23083         * ipa-prop.c (ipa_note_param_call): Update call to
23084         compute_call_stmt_bb_frequencycall.
23085         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
23086         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
23087         (copy_bb): Handle updating of clone tree; add new edge when new call
23088         appears.
23089         (expand_call_inline): Be strict about every call having edge.
23090         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
23091         (delete_unreachable_blocks_update_callgraph): New function.
23092         (tree_function_versioning): Use VECtors; always remove unreachable
23093         blocks and fold conditionals.
23094         * tree-inline.h: Do not include varray.h.
23095         (tree_function_versioning): Remove.
23096         * Makefile.in (GTFILES): Remove tree-inline.c
23097         * passes.c (do_per_function): Do only functions having body.
23098         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
23099         tree.
23100
23101 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
23102             Andrew Morrow  <acm@google.com>
23103
23104         PR c/36892
23105         * c-common.c (c_common_attribute_table): Permit deprecated
23106         attribute to take an optional argument.
23107         (handle_deprecated_attribute): If the optional argument to
23108         __attribute__((deprecated)) is not a string ignore the attribute
23109         and emit a warning.
23110
23111         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
23112         * c-typeck.c (build_component_ref): Likewise.
23113         (build_external_ref): Likewise.
23114
23115         * toplev.c (warn_deprecated_use): Add an attribute argument.
23116         Emit the message associated with __attribute__((deprecated)).
23117
23118         * toplev.h (warn_deprecated_use): Updated.
23119
23120         * doc/extend.texi: Document new optional parameter to
23121         __attribute__((deprecated))
23122
23123 2009-05-08  Michael Eager <eager@eagercon.com>
23124
23125         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
23126         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
23127
23128 2009-05-08  Richard Guenther  <rguenther@suse.de>
23129
23130         PR tree-optimization/40062
23131         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
23132         Avoid exponential behavior.
23133
23134 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23135
23136         PR rtl-optimization/33928
23137         PR 26854
23138         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
23139         process_uses, build_single_def_use_links): New.
23140         (update_df): Update use_def_ref.
23141         (forward_propagate_into): Use get_def_for_use instead of use-def
23142         chains.
23143         (fwprop_init): Call build_single_def_use_links and let it initialize
23144         dataflow.
23145         (fwprop_done): Free use_def_ref.
23146         (fwprop_addr): Eliminate duplicate call to df_set_flags.
23147         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
23148         df_rd_simulate_one_insn): New.
23149         (df_rd_bb_local_compute_process_def): Update head comment.
23150         (df_chain_create_bb): Use the new RD simulation functions.
23151         * df.h (df_rd_simulate_artificial_defs_at_top,
23152         df_rd_simulate_one_insn): New.
23153         * opts.c (decode_options): Enable fwprop at -O1.
23154         * doc/invoke.texi (-fforward-propagate): Document this.
23155
23156 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23157
23158         PR c/24581
23159         * c-typeck.c (build_binary_op): Handle arithmetic between one real
23160         and one complex operand specially.
23161         * tree-complex.c (some_nonzerop): Do not identify a real value as
23162         zero if flag_signed_zeros.
23163
23164 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23165
23166         PR rtl-optimization/33928
23167         * loop-invariant.c (record_use): Fix && vs. || mishap.
23168
23169 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23170
23171         PR rtl-optimization/33928
23172         * loop-invariant.c (struct use): Add addr_use_p.
23173         (struct def): Add n_addr_uses.
23174         (struct invariant): Add cheap_address.
23175         (create_new_invariant): Set cheap_address.
23176         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
23177         (record_uses): Pass df_ref to record_use.
23178         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
23179         used only as such.
23180
23181 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
23182
23183         * config/sh/sh.c: Do not include c-pragma.h.
23184
23185 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23186
23187         * config/spu/spu.c: Remove include of c-common.h.
23188
23189 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
23190
23191         PR c/39037
23192         * c-common.h (mark_valid_location_for_stdc_pragma,
23193         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
23194         clear_float_const_decimal64, float_const_decimal64_p): New.
23195         * c.opt (Wunsuffixed-float-constants): New.
23196         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
23197         unsuffixed float constant, handle new warning.
23198         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
23199         * c-decl.c (c_scope): New flag float_const_decimal64.
23200         (set_float_const_decimal64, clear_float_const_decimal64,
23201         float_const_decimal64_p): New.
23202         (push_scope): Set new flag.
23203         * c-parser.c (c_parser_translation_unit): Mark when it's valid
23204         to use STDC pragmas.
23205         (c_parser_external_declaration): Ditto.
23206         (c_parser_compound_statement_nostart): Ditto.
23207         * c-pragma.c (valid_location_for_stdc_pragma,
23208         mark_valid_location_for_stdc_pragma,
23209         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
23210         handle_pragma_float_const_decimal64): New.
23211         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
23212         * cp/semantics.c (valid_location_for_stdc_pragma_p,
23213         set_float_const_decimal64, clear_float_const_decimal64,
23214         float_const_decimal64_p): New dummy functions.
23215         * doc/extend.texi (Decimal Float): Remove statement that the
23216         pragma, and suffix for double constants, are not supported.
23217         * doc/invoke.texi (Warning Options): List new option.
23218         (-Wunsuffixed-float-constants): New.
23219
23220 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
23221
23222         * config/i386/i386.c: Do not include c-common.h.
23223
23224 2009-05-07  Mark Heffernan  <meheff@google.com>
23225
23226         * doc/invoke.texi (Debugging Options): Document change of debugging
23227         dump location.
23228         * opts.c (decode_options): Make dump_base_name relative to
23229         aux_base_name directory.
23230
23231 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
23232
23233         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
23234         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
23235
23236 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
23237
23238         * Makefile.in (install-plugin): Simplify a bit.
23239
23240 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
23241
23242         * Makefile.in (OBJS-common): Add regcprop.o.
23243         (regcprop.o): New.
23244         * timevar.def (TV_CPROP_REGISTERS): New.
23245         * regrename.c (regrename_optimize): Return 0.
23246         (rest_of_handle_regrename): Delete.
23247         (pass_rename_registers): Point to regrename_optimize.
23248         (struct value_data_entry, struct value_data,
23249         kill_value_one_regno, kill_value_regno, kill_value,
23250         set_value_regno, init_value_data, kill_clobbered_value,
23251         kill_set_value, kill_autoinc_value, copy_value,
23252         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
23253         replace_oldest_value_reg, replace_oldest_value_addr,
23254         replace_oldest_value_mem, copyprop_hardreg_forward_1,
23255         debug_value_data, validate_value_data): Move...
23256         * regcprop.c: ... here.
23257         (rest_of_handle_cprop): Delete.
23258         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
23259
23260 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
23261
23262         PR middle-end/40057
23263         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
23264         GEN_INT for 1 << bitnum.
23265         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
23266         build_int_cst_type.
23267
23268 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
23269
23270         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
23271         Remove wrong description of "nand" operation.
23272
23273 2009-05-06  Richard Guenther  <rguenther@suse.de>
23274             Adam Nemet  <anemet@caviumnetworks.com>
23275
23276         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
23277         comment.  Add that if LHS is not a gimple register, then RHS1 has
23278         to be a single object (GIMPLE_SINGLE_RHS).
23279
23280 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
23281
23282         * expr.c (get_def_for_expr): Move it up in the file.
23283         (store_field): When expanding a bit-field store, look at the
23284         defining gimple stmt for the masking conversion.
23285
23286 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
23287
23288         PR middle-end/39986
23289         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
23290         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
23291         32-bit memcpy into long.
23292
23293 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
23294
23295         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
23296         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
23297         new_reg_loc_descr.
23298         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
23299         instead of appending DW_OP_deref*.
23300
23301 2009-05-06  Michael Matz  <matz@suse.de>
23302
23303         PR middle-end/40021
23304         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
23305         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
23306
23307 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
23308
23309         * Makefile.in (install-plugin): Fix srcdir handling.
23310
23311 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
23312
23313         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
23314         when processing for not_regs_needed bitmap.
23315         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
23316         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
23317         handling it for rhs.
23318
23319 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23320
23321         * config/i386/i386.md (unnamed inc/dec peephole): Use
23322         optimize_insn_for_size_p instead of optimize_size.
23323         * config/i386/predicates.md (incdec_operand): Likewise.
23324         (aligned_operand): Likewise.
23325         * config/i386/sse.md (divv8sf3): Likewise.
23326         (sqrtv8sf2): Likewise.
23327
23328 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23329
23330         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
23331
23332         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
23333
23334 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23335
23336         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
23337         ssemodesuffixf2c with avxmodesuffixf2c.
23338
23339 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
23340
23341         PR c/40032
23342         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
23343
23344 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
23345
23346         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
23347         (struct tree_base): Adjust spacing for 8 bit boundaries.
23348         (struct tree_decl_common): Add decl_by_reference_flag bit.
23349         (DECL_BY_REFERENCE): Adjust.
23350         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
23351         print DECL_BY_REFERENCE bit.
23352         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
23353         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
23354         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
23355         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
23356         unconditionally.
23357
23358         PR middle-end/39666
23359         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
23360         range of the type, but default label is missing, add it with one
23361         of the existing labels instead of adding a new label for it.
23362
23363 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
23364
23365         * dwarf.h: Remove.
23366
23367 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
23368
23369         * Makefile.in (enable_plugin, plugin_includedir): New.
23370         (install): Depend on install-plugin.
23371         (PLUGIN_HEADERS): New.
23372         (install-plugin): New.
23373         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
23374
23375 2009-05-05  Richard Guenther  <rguenther@suse.de>
23376
23377         PR tree-optimization/40022
23378         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
23379         the only vuse.
23380         (phivn_valid_p): Fix tuplification error, simplify.
23381         (phiprop_insert_phi): Add dumps.
23382         (propagate_with_phi): Simplify.
23383
23384 2009-05-05  Richard Guenther  <rguenther@suse.de>
23385
23386         PR middle-end/40023
23387         * builtins.c (gimplify_va_arg_expr): Properly build the address.
23388
23389 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
23390
23391         * tree.h (strip_float_extensions): Remove duplicate declaration.
23392         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
23393         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
23394         block_ultimate_origin): Rearrange the declarations line to match the
23395         comment that indicates the .c file which the functions are defined.
23396         (dwarf2out_*, set_decl_rtl): Add comment.
23397         (get_base_address): Adjust comment.
23398         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
23399         declarations line and add comment.
23400         (is_builtin_name): Add blank after function name, for clarity.
23401
23402 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23403
23404         * attribs.c (decl_attributes): Use %qE for identifiers in
23405         diagnostics.
23406         * cgraphunit.c (verify_cgraph_node): Translate function names to
23407         locale character set in diagnostics.
23408         * coverage.c (get_coverage_counts): Use %qE for identifiers in
23409         diagnostics.
23410         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
23411         Document that functions are named in UTF-8.
23412         * expr.c (expand_expr_real_1): Translate function names to locale
23413         character set in diagnostics.
23414         * gimplify.c (omp_notice_variable, omp_is_private,
23415         gimplify_scan_omp_clauses): Use %qE for identifiers in
23416         diagnostics.
23417         * langhooks.c (lhd_print_error_function): Translate function names
23418         to locale character set.
23419         * langhooks.h (decl_printable_name): Document that return value is
23420         in internal character set.
23421         * stmt.c: Include pretty-print.h
23422         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
23423         diagnostics.
23424         (resolve_operand_name_1): Translate named operand name to locale
23425         character set.
23426         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
23427         diagnostics.
23428         * toplev.c (announce_function): Translate function names to locale
23429         character set.
23430         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
23431         (default_tree_printer): Use pp_identifier or translate identifiers
23432         to locale character set.  Mark "<anonymous>" for translation.
23433         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
23434         for identifiers in diagnostics.
23435         * tree.c (handle_dll_attribute): Use %qE for identifiers in
23436         diagnostics.
23437         * varasm.c (output_constructor): Use %qE for identifiers in
23438         diagnostics.
23439
23440 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
23441
23442         * configure.ac: use ` ` instead of $()
23443         * configure: Regenerate.
23444
23445 2009-05-05  Ben Elliston  <bje@au.ibm.com>
23446
23447         * config/pa/linux-atomic.c: Eliminate conditional include of
23448         errno.h on non-LP64 systems to simplify build requirements.
23449
23450 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23451
23452         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
23453         diagnostics.
23454         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
23455         and pass value to identifier_to_locale.
23456         (warn_variable_length_array): Make name a tree.
23457         (grokdeclarator): Separate diagnostic texts for named and unnamed
23458         declarators.  Use %qE for named declarators.
23459         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
23460         diagnostics.
23461         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
23462         identifiers in diagnostics.
23463         * c-typeck.c (push_member_name, start_init): Pass identifiers to
23464         identifier_to_locale.  Mark "anonymous" strings for translation.
23465
23466 2009-05-04  Michael Eager <eager@eagercon.com>
23467
23468         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
23469         address for DImode/DFmode only if double-precision FP regs.
23470
23471 2009-05-04  Michael Eager <eager@eagercon.com>
23472
23473         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
23474         TARGET_SINGLE_FLOAT check.
23475
23476 2009-05-04  Michael Eager <eager@eagercon.com>
23477
23478         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
23479
23480 2009-05-04  Michael Eager <eager@eagercon.com>
23481
23482         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
23483         * config/rs6000/t-xilinx: New
23484
23485 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
23486
23487         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
23488         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
23489         * gcc/explow.c (memory_address): Use target hook.
23490         * gcc/targhooks.c (default_legitimize_address): New.
23491         * gcc/targhooks.h (default_legitimize_address): New.
23492         * gcc/target.h (legitimize_address): New.
23493         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
23494         (TARGET_INITIALIZER): Include it.
23495         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
23496
23497         * config/bfin/bfin-protos.h (legitimize_address): Remove.
23498         * config/bfin/bfin.c (legitimize_address): Remove.
23499         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
23500         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
23501         Remove.
23502         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
23503         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
23504
23505         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
23506         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
23507         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
23508         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
23509         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
23510         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
23511         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
23512         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
23513         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
23514         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
23515         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
23516         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
23517         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
23518         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
23519         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
23520         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
23521         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
23522         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
23523         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
23524         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
23525         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
23526         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
23527         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
23528
23529         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
23530         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
23531         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
23532         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
23533         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
23534         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
23535         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
23536         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
23537         (thumb_legitimize_address): Delete.
23538         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
23539         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
23540         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
23541         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
23542         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
23543         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
23544         Delete.
23545         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
23546         Delete.
23547
23548         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
23549         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
23550         * config/m32r/m32r.c (m32r_legitimize_address): New.
23551         * config/m68k/m68k.c (m68k_legitimize_address): New.
23552         * config/score/score.c (score_legitimize_address): Standardize.
23553         * config/score/score3.c (score3_legitimize_address): Standardize.
23554         * config/score/score3.h (score3_legitimize_address): Adjust.
23555         * config/score/score7.c (score7_legitimize_address): Standardize.
23556         * config/score/score7.h (score7_legitimize_address): Adjust.
23557         * config/sh/sh.c (sh_legitimize_address): New.
23558         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
23559
23560         * gcc/config/s390/s390.c (legitimize_address): Rename to...
23561         (s390_legitimize_address): ... this.
23562         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
23563         (sparc_legitimize_address): ... this.
23564         * gcc/config/i386/i386.c (legitimize_address): Rename to...
23565         (ix86_legitimize_address): ... this.
23566         * gcc/config/avr/avr.c (legitimize_address): Rename to...
23567         (avr_legitimize_address): ... this.
23568         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
23569         (mn10300_legitimize_address): ... this.
23570         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
23571         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
23572         (alpha_expand_mov): Adjust call.
23573
23574         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
23575         * config/spu/spu.c (spu_legitimize_address): Likewise.
23576         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
23577         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
23578
23579 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23580
23581         * intl.c (locale_encoding, locale_utf8): New.
23582         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
23583         * intl.h (locale_encoding, locale_utf8): Declare.
23584         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
23585         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
23586         New.
23587         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
23588         argument.
23589         (pp_tree_identifier): Define to call pp_base_tree_identifier.
23590         (pp_base_tree_identifier): Declare as function.
23591         (identifier_to_locale): Declare.
23592         * Makefile.in (pretty-print.o): Update dependencies.
23593         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
23594
23595 2009-05-04  Richard Guenther  <rguenther@suse.de>
23596
23597         PR middle-end/40015
23598         * builtins.c (fold_builtin_memory_op): Do not decay to element
23599         type if the size matches the whole array.
23600
23601 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23602
23603         * expmed.c (synth_mult): When trying out a shift, pass the result
23604         of a signed shift.
23605
23606 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23607
23608         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
23609         (shiftsub1_cost): New.
23610         (init_expmed): Compute shiftsub1_cost.
23611         (synth_mult): Optimize multiplications by constants of the form
23612         -(2^^m-1) for some constant positive integer m.
23613
23614 2009-05-03  Richard Guenther  <rguenther@suse.de>
23615
23616         PR c/39983
23617         * c-typeck.c (array_to_pointer_conversion): Do not built
23618         ADDR_EXPRs of arrays of pointer-to-element type.
23619         * c-gimplify.c (c_gimplify_expr): Revert change fixing
23620         up wrong ADDR_EXPRs after-the-fact.
23621         * c-common.c (strict_aliasing_warning): Strip pointer
23622         conversions for obtaining the original type.
23623         * builtins.c (fold_builtin_memset): Handle array types.
23624         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
23625         and array types
23626
23627 2009-05-03  Richard Guenther  <rguenther@suse.de>
23628
23629         PR middle-end/23329
23630         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
23631         Do not lose casts from array types with unknown extent to array
23632         types with known extent.
23633         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
23634         alias set compatibility.
23635
23636 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23637
23638         * flags.h (extra_warnings): Delete.
23639         * toplev.c (process_options): Handle Wuninitialized here.
23640         * opts.c (extra_warnings): Delete.
23641         (set_Wextra): Delete.
23642         (common_handle_option): -Wextra can be handled automatically.
23643         * c-opts.c (c_common_handle_option): Delete obsolete code.
23644         (c_common_post_options): Simplify comment.
23645         * common.opt (W): Add Var.
23646         (Wextra): Add Var.
23647         (Wuninitialized): Initialize to -1.
23648
23649 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
23650             Richard Guenther  <rguenther@suse.de>
23651
23652         * expr.c (get_def_for_expr): New function.
23653         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
23654         SSA rather than trees.
23655         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
23656         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
23657
23658 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
23659
23660         * c-common.c (reswords): Add _Imaginary.
23661         * c-common.c (enum rid): Add RID_IMAGINARY.
23662
23663 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
23664
23665         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
23666         Patch by Richard Guenther.
23667
23668 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
23669
23670         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
23671         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
23672         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
23673         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
23674         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
23675         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
23676         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
23677         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
23678         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
23679         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
23680         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
23681         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
23682         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
23683         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
23684         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
23685         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
23686         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
23687         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
23688
23689 2009-05-02  Richard Guenther  <rguenther@suse.de>
23690
23691         PR tree-optimization/39940
23692         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
23693         doing so.
23694
23695 2009-05-02  Richard Guenther  <rguenther@suse.de>
23696
23697         PR middle-end/40001
23698         * tree-ssa.c (execute_update_addresses_taken): Properly check
23699         if we can mark a variable DECL_GIMPLE_REG_P.
23700         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
23701         back to the end of the function.
23702         (is_gimple_reg_type): Remove complex type special casing.
23703         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
23704         if not optimizing.
23705
23706 2009-05-02  Ben Elliston  <bje@au.ibm.com>
23707
23708         * doc/collect2.texi (Collect2): Document search path behaviour
23709         when configured with --with-ld.
23710
23711 2009-05-02  Jan Hubicka  <jh@suse.cz>
23712
23713         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
23714         parameter; update callers.
23715         (coalesce_cost_edge): EH edges are costier because they needs
23716         splitting even if not critical and even more costier when there are
23717         multiple EH predecestors.
23718
23719 2009-05-02  Jan Hubicka  <jh@suse.cz>
23720
23721         * except.c (remove_eh_handler_and_replace): Handle updating after
23722         removing TRY blocks.
23723
23724 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
23725
23726         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
23727
23728 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
23729
23730         * varasm.c: Do not include c-pragma.h.
23731         * attribs.c: Do not incude c-common.h.
23732
23733 2009-05-01  Michael Matz  <matz@suse.de>
23734
23735         * calls.c (initialize_argument_information): Handle SSA names like
23736         decls with a non MEM_P DECL_RTL.
23737
23738 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23739
23740         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
23741         * ipa-utils.c: Likewise.
23742         * ipa-type-escape.c: Likewise.
23743         * cgraphunit.c Do not include c-common.h.
23744         * ipa-pure-const.c: Likewise.
23745         * tree-if-conv.c: Likewise.
23746         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
23747         * ipa-struct-reorg.c: Likewise.
23748         * tree-nomudflap.c: Likewise.
23749         * tree-ssa-structalias.c: Likewise.
23750
23751 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23752
23753         * store-motion.c: Many cleanups to make this pass a first-class
23754         citizen instead of an appendix to gcse load motion.  Add TODO list
23755         to make this pass faster/cleaner/better.
23756
23757         (struct ls_expr): Post gcse.c-split cleanups.
23758         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
23759         "stores" field to "avail_stores".
23760         (pre_ldst_mems): Rename to store_motion_mems.
23761         (pre_ldst_table): Rename to store_motion_mems_table.
23762         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
23763         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
23764         (ldst_entry): Rename to st_expr_entry, update users.
23765         (free_ldst_entry): Rename to free_st_expr_entry, update users.
23766         (free_ldst_mems): Rename to free_store_motion_mems, update users.
23767         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
23768         update caller.
23769         (first_ls_expr): Rename to first_st_expr, update users.
23770         (next_ls_expr): Rename to next_st_expr, update users.
23771         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
23772         fields properly for store motion instead of names inherited from load
23773         motion in gcse.c.
23774         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
23775         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
23776         are done with it.
23777
23778         (ae_kill): Rename to st_kill, update users.
23779         (ae_gen): Rename to st_avloc, update users.
23780         (transp): Rename to st_transp, update users.
23781         (pre_insert_map): Rename to st_insert_map, update users.
23782         (pre_delete_map): Rename to st_delete_map, update users.
23783         (insert_store, build_store_vectors, free_store_memory,
23784         one_store_motion_pass): Update for abovementioned changes.
23785
23786         (gcse_subst_count, gcse_create_count): Remove.
23787         (one_store_motion_pass): New statistics counters "n_stores_deleted"
23788         and "n_stores_created", local variables.
23789
23790         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
23791         use for_each_rtx.
23792
23793         (regvec, compute_store_table_current_insn): Remove.
23794         (reg_set_info, reg_clear_last_set): Remove.
23795         (compute_store_table): Use DF caches instead of local dataflow
23796         solvers.
23797
23798 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
23799
23800         * c-objc-common.c (c_tree_printer): Print identifiers with
23801         pp_identifier, not pp_string.  Mark "({anonymous})" for
23802         translation.
23803         * c-pretty-print.c (pp_c_ws_string): New.
23804         (pp_c_cv_qualifier, pp_c_type_specifier,
23805         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
23806         pp_c_storage_class_specifier, pp_c_function_specifier,
23807         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
23808         pp_c_primary_expression, pp_c_postfix_expression,
23809         pp_c_unary_expression, pp_c_shift_expression,
23810         pp_c_relational_expression, pp_c_equality_expression,
23811         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
23812         use pp_string and pp_c_ws_string in place of pp_identifier and
23813         pp_c_identifier for non-identifiers.  Mark English strings for
23814         translation.
23815         * c-pretty-print.h (pp_c_ws_string): Declare.
23816
23817 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
23818             Roland McGrath <roland@redhat.com>
23819
23820         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
23821         (ENABLE_LD_BUILDID): New configuration option.
23822         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
23823         (LINK_BUILDID_SPEC): New macro.
23824         (init_spec): If defined, prepend it between LINK_EH_SPEC and
23825         link_spec.
23826         * doc/install.texi: Document --enable-linker-build-id option.
23827         * configure: Rebuild.
23828         * config.in: Rebuild.
23829
23830 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
23831
23832         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
23833         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
23834         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
23835         MIPS_GP_SAVE_AREA_SIZE.
23836         * config/mips/mips.c (struct mips_frame_info): Update comment
23837         before arg_pointer_offset and hard_frame_pointer_offset.
23838         (mips_compute_frame_info): Update diagram before function: to
23839         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
23840         indicate the position of frame_pointer_rtx with -fstack-protector and
23841         to show args_size.  Don't allocate cprestore area for leaf functions
23842         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
23843         cprestore_size.
23844         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
23845
23846 2009-04-30  Michael Matz  <matz@suse.de>
23847
23848         PR tree-optimization/39955
23849         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
23850
23851 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
23852
23853         * ira.c (setup_cover_and_important_classes):  Use safe macro
23854         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
23855         directly.
23856         * genpreds.c (write_tm_preds_h):  Output suitable definition of
23857         REG_CLASS_FOR_CONSTRAINT.
23858
23859 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23860
23861         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
23862         instead of an int.
23863         * bitmap.c (bitmap_descriptor): Likewise.
23864         * ggc-common.c (loc_descriptor): Likewise.
23865         * varray.c (varray_descriptor): Likewise.
23866         * vec.c (vec_descriptor): Likewise.
23867
23868 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
23869
23870         * Makefile.in (dce.o): Add $(EXCEPT_H).
23871         * dce.c: Include except.h and delete redundant vector definitions.
23872         (deletable_insn_p): Return false for non-call insns that can throw
23873         if DF is running.
23874
23875 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
23876
23877         * gcse.c (ae_gen): Remove.
23878         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
23879         and make non-static function to make it available in store-motion.c.
23880         Update call sites with search-and-replace.
23881         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
23882         extract_mentioned_regs, extract_mentioned_regs_helper,
23883         find_moveable_store, compute_store_table, load_kills_store, find_loads,
23884         store_killed_in_insn, store_killed_after, store_killed_before,
23885         build_store_vectors, insert_insn_start_basic_block, insert-store,
23886         remove_reachable_equiv_notes, replace_store_insn, delete_store,
23887         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
23888         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
23889         * store-motion.c: ...new file.  Also copy data structures from gcse.c
23890         and clean up to remove parts not used by store motion.
23891         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
23892         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
23893
23894 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23895
23896         PR target/38571
23897         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
23898         when optimizing for size.
23899
23900 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
23901
23902         * gcse.c (gcse_constant_p): Fix typo in last change.
23903
23904 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23905
23906         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
23907
23908 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
23909
23910         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
23911
23912 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
23913
23914         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
23915         CONST_HIGH_PART result.
23916
23917 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
23918
23919         * config/avr/avr.c (initial_elimination_offset): Rename to
23920         avr_initial_elimination_offset.
23921         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
23922         change return type to bool.
23923         (avr_can_eliminate): New function.
23924         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
23925         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
23926         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
23927         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
23928         avr_initial_elimination_offset.
23929         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
23930         (avr_initial_elimination_offset): Define.
23931
23932 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
23933             Steven Bosscher  <steven@gcc.gnu.org>
23934
23935         PR rtl-optimization/39938
23936         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
23937         * cfgrtl.c: Include insn-attr.h.
23938         (rest_of_pass_free_cfg): New function.
23939         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
23940         * resource.c (init_resource_info): Remove call to df_analyze.
23941
23942 2009-04-29  Richard Guenther  <rguenther@suse.de>
23943
23944         PR target/39943
23945         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
23946         allow conversion to signed integers.
23947
23948 2009-04-29  Richard Guenther  <rguenther@suse.de>
23949
23950         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
23951         shifts of floating point vectors if the shift amount is
23952         a constant multiple of the element size.
23953
23954 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23955             Michael Matz  <matz@suse.de>
23956
23957         PR middle-end/39927
23958         PR bootstrap/39929
23959         * tree-outof-ssa.c (emit_partition_copy): New function.
23960         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
23961         insert_part_to_rtx_on_edge): Perform the partition base var
23962         copy using emit_partition_copy.
23963         (insert_value_copy_on_edge): Convert constants to the right mode.
23964         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
23965         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
23966
23967 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23968
23969         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
23970         scan backwards to try to find a constant to initialize it.
23971
23972         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
23973         insn before the loop_end instruction, don't look past labels.
23974
23975 2009-04-29  Richard Guenther  <rguenther@suse.de>
23976
23977         PR middle-end/39937
23978         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
23979         loose type conversions.
23980         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
23981         stmts only if there are no uses of its definition.
23982
23983 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23984
23985         * config/bfin/bfin.h (splitting_loops): Declare.
23986         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
23987         Reorder bit definitions to be ascending.
23988         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
23989         * config/bfin/bfin.c (splitting_loops): New variable.
23990         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
23991         (struct loop_info): Remove members INIT and LOOP_INIT.
23992         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
23993         the LSETUP sequence.  Allow LC to be loaded from any register, but
23994         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
23995         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
23996         set to 1.
23997         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
23998         of reload_completed.
23999
24000         From Jie Zhang:
24001         * config/bfin/bfin.md (movsi_insn): Refine constraints.
24002
24003 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
24004
24005         * Makefile.in (PLUGIN_VERSION_H): New.
24006         (OBJS-common): Remove plugin-version.o.
24007         (plugin.o): Depend on (PLUGIN_VERSION_H).
24008         (plugin-version.o): Remove.
24009         * configure: Regenerate
24010         * configure.ac: Create plugin-version.h.
24011         * gcc-plugin.h (plugin_gcc_version): Remove.
24012         (plugin_default_version_check): Change signature.
24013         * plugin-version.c: Remove.
24014         * plugin.c: Include plugin-version.h.
24015         (str_plugin_gcc_version_name): Remove.
24016         (try_init_one_plugin): Pass gcc version to plugin_init.
24017         (plugin_default_version_check): Both gcc and plugin versions are now
24018         arguments.
24019
24020 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24021
24022         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
24023         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
24024         Remove special case testing for last insn of inner loops. Don't fail
24025         if the loop ends with a jump, emit an extra nop instead.
24026
24027         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
24028         DREGS rather than comparing directly.  Remove code that tries to
24029         account for latencies.
24030
24031 2009-04-29  Richard Guenther  <rguenther@suse.de>
24032
24033         PR tree-optimization/39941
24034         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
24035         eliminating an indirect call.
24036
24037 2009-04-29  Richard Guenther  <rguenther@suse.de>
24038
24039         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
24040         parameter.  Allow invariants as base if !require_lvalue.
24041         (verify_gimple_assign_single): Adjust.
24042
24043 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24044
24045         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
24046         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
24047         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
24048         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
24049         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
24050         a VEC_SELECT.
24051         * config/bfin/bfin.c (bfin_expand_builtin,
24052         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
24053
24054 2009-04-28  Richard Guenther  <rguenther@suse.de>
24055
24056         * tree-vect-loop.c (get_initial_def_for_induction): Use
24057         correct types for pointer increment.
24058
24059 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24060
24061         * toplev.c (print_version): Update GMP version string calculation.
24062
24063 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
24064
24065         PR rtl-optimization/39938
24066         * resource.c (init_resource_info): Add call to df_analyze.
24067
24068 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24069
24070         * config/alpha/alpha.md (usegp): Cast the result of
24071         alpha_find_lo_sum_using_gp to enum attr_usegp.
24072         * config/alpha/alpha.c (override_options): Remove end-of-structure
24073         marker element from cpu_table.  Use array size of cpu_table to handle
24074         -mcpu and -mtune options.
24075         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
24076
24077 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
24078
24079         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
24080         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
24081         tune_32 and tune_64.
24082         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
24083         support on PowerPC.
24084         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
24085         * config/rs6000/option-defaults.h: ... here.  New file.
24086         (OPT_64, OPT_32): Define.
24087         (MASK_64BIT): Define to 0 if not already defined.
24088         (OPT_ARCH64, OPT_ARCH32): Define.
24089         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
24090         and tune_64.
24091
24092 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24093
24094         * config/arm/arm.c (arm_override_options): Emit error on using
24095         fpa with AAPCS.
24096
24097 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24098
24099         PR rtl-optimization/39914
24100         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24101         registers for allocnos created from user-defined variables only
24102         when not optimizing.
24103
24104 2009-04-28  Richard Guenther  <rguenther@suse.de>
24105
24106         PR middle-end/39937
24107         * fold-const.c (fold_binary): Use distribute_real_division only
24108         on float types.
24109
24110 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
24111
24112         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
24113         add hpux-stdint.h to tm_file.
24114         (hppa[12]*-*-hpux11*): Ditto.
24115         (ia64*-*-hpux*): Ditto.
24116         * config/hpux-stdint.h: New.
24117         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
24118         __STDC_EXT__ for all compiles.
24119         * config/pa/pa-hpux.h: Ditto.
24120         * config/pa/pa-hpux10.h: Ditto.
24121         * config/pa/pa-hpux11.h: Ditto.
24122
24123 2009-04-28  Catherine Moore  <clm@codesourcery.com>
24124
24125         * debug.h (set_name): Add comment.
24126
24127 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
24128
24129         PR target/39929
24130         * config/darwin.c (machopic_gen_offset): Check
24131         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
24132         * config/arm/arm.c (require_pic_register): Likewise.
24133
24134 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
24135
24136         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
24137         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
24138         m32c_promote_prototypes): Delete.
24139
24140 2009-04-28  Michael Matz  <matz@suse.de>
24141
24142         PR middle-end/39922
24143         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
24144         constants.
24145
24146 2009-04-28  Richard Guenther  <rguenther@suse.de>
24147
24148         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
24149
24150 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24151
24152         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
24153         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
24154         * config/arm/arm-tune.md: Regenerate.
24155
24156 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
24157
24158         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
24159         block if there are complex incoming edges.
24160         (sel_merge_blocks): Remove useless assert.
24161         (sel_redirect_edge_and_branch): Check that edge was redirected.
24162         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
24163         (sel_find_rgns): Delete declaration.
24164         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
24165         the region when it is not a preheader.
24166
24167 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24168
24169         PR c/39323
24170         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
24171
24172 2009-04-28  Richard Guenther  <rguenther@suse.de>
24173
24174         * tree.h (SSA_NAME_VALUE): Remove.
24175         (struct tree_ssa_name): Remove value_handle member.
24176         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
24177         array for jump threading.
24178         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
24179         SSA_NAME_VALUEs.
24180         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
24181         * tree-flow.h (threadedge_initialize_values): Declare.
24182         (threadedge_finalize_values): Likewise.
24183         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
24184         (SSA_NAME_VALUE): Define.
24185         (threadedge_initialize_values): New function.
24186         (threadedge_finalize_values): Likewise.
24187         * tree-ssa-dom.c (ssa_name_values): New global variable.
24188         (SSA_NAME_VALUE): Define.
24189         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
24190
24191 2009-04-28  Ira Rosen  <irar@il.ibm.com>
24192
24193         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
24194         Use REPORT_VECTORIZED_LOCATIONS instead
24195         REPORT_VECTORIZED_LOOPS.
24196         * tree-vectorizer.c (vect_verbosity_level): Make static.
24197         (vect_loop_location): Rename to vect_location.
24198         (vect_set_verbosity_level): Update comment.
24199         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
24200         and vect_location.
24201         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
24202         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
24203         instead REPORT_UNVECTORIZED_LOOPS.
24204         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
24205         and vect_loop_def to vect_external_def and vect_internal_def.
24206         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
24207         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
24208         REPORT_UNVECTORIZED_LOCATIONS.
24209         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
24210         and vect_used_in_loop and to vect_unused_in_scope and
24211         vect_used_in_scope.
24212         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
24213         (vect_verbosity_level): Remove declaration.
24214         (vect_analyze_operations): Likewise.
24215         (vect_analyze_stmt): Declare.
24216         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
24217         REPORT_UNVECTORIZED_LOCATIONS.
24218         (vect_get_loop_niters): Fix indentation.
24219         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
24220         (vect_analyze_loop_operations): New function.
24221         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
24222         vect_analyze_operations.
24223         (vect_is_simple_reduction): Use new names.
24224         (vectorizable_live_operation, vect_transform_loop): Likewise.
24225         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
24226         to specify whether the data references can be a part of interleaving
24227         chain.
24228         (vect_analyze_data_ref_dependence): Use new names.
24229         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
24230         (vect_create_addr_base_for_vector_ref): Remove redundant code.
24231         * tree-vect-patterns.c (widened_name_p): Use new names.
24232         (vect_recog_dot_prod_pattern): Likewise.
24233         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
24234         (process_use, vect_mark_stmts_to_be_vectorized,
24235         vect_model_simple_cost, vect_model_store_cost,
24236         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
24237         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
24238         vectorizable_operation, vectorizable_type_demotion,
24239         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
24240         vectorizable_condition): Likewise.
24241         (vect_analyze_operations): Split into vect_analyze_loop_operations
24242         and ...
24243         (vect_analyze_stmt): ... new function.
24244         (new_stmt_vec_info): Use new names.
24245         (vect_is_simple_use): Use new names and fix comment.
24246         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
24247         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
24248
24249 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24250
24251         PR target/39911
24252         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
24253         and integer modes for x87 operands.  Do not ICE for unsupported size,
24254         generate error instead.  Generate error for unsupported operand types.
24255         ['z']: Do not handle HImode memory operands specially.  Warning
24256         for floating-point operands.  Fallthru to 'Z' for unsupported operand
24257         types.  Do not ICE for unsupported size, generate error instead.
24258         (output_387_binary_op): Use %Z to output operands.
24259         (output_fp_compare): Ditto.
24260         (output_387_reg_move): Ditto.
24261
24262 2009-04-28  Ben Elliston  <bje@au.ibm.com>
24263
24264         PR c++/35652
24265         Revert:
24266
24267         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24268
24269         * builtins.c (c_strlen): Do not warn here.
24270         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
24271         * c-common.c (pointer_int_sum): Take an explicit location.
24272         Warn about offsets out of bounds.
24273         * c-common.h (pointer_int_sum): Adjust declaration.
24274
24275 2009-04-27  Ian Lance Taylor  <iant@google.com>
24276
24277         * collect2.c (is_ctor_dtor): Change type of ret field in struct
24278         names to symkind.
24279         * dce.c (run_fast_df_dce): Change type of old_flags to int.
24280         * df-core.c (df_set_flags): Change return type to int.  Change
24281         type of old_flags to int.
24282         (df_clear_flags): Likewise.
24283         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
24284         (df_get_conditional_uses): Likewise.
24285         * df.h (df_set_flags, df_clear_flags): Update declarations.
24286         * dwarf2out.c (struct indirect_string_node): Change type of form
24287         field to enum dwarf_form.
24288         (AT_string_form): Change return type to enum dwarf_form.
24289         * fixed-value.c (fixed_compare): Add cast to enum type.
24290         * fwprop.c (update_df): Change 0 to VOIDmode.
24291         * gensupport.c: Change 0 to UNKNOWN.
24292         * gimple.h (gimple_cond_code): Add cast to enum type.
24293         * haifa-sched.c (reemit_notes): Add cast to enum type.
24294         * hooks.c (hook_int_void_no_regs): Remove function.
24295         * hooks.h (hook_int_void_no_regs): Remove declaration.
24296         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
24297         * predict.c (combine_predictions_for_insn): Add casts to enum type.
24298         * real.c (real_arithmetic): Add cast to enum type.
24299         (real_compare): Likewise.
24300         * target.h (struct gcc_target): Change return type of
24301         branch_target_register_class to enum reg_class.
24302         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
24303         default_branch_target_register_class.
24304         * targhooks.c (default_branch_target_register_class): New function.
24305         * targhooks.h (default_branch_target_register_class): Declare.
24306         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
24307         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
24308         cast to int.
24309         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
24310         ERROR_MARK.
24311         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
24312         vect_uninitialized_def.  Change 0 to ERROR_MARK.
24313         * tree-vect-stmts.c (supportable_widening_operation): Don't
24314         initialize icode1 and icode2.
24315         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
24316         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
24317         and to STD_C89.
24318         (cmn_err_flag_specs): Change 0 to STD_C89.
24319         (cmn_err_char_table): Likewise.
24320         * config/arm/arm.c (get_arm_condition_code): Change type of code
24321         to enum arm_cond_code.
24322         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
24323         (IWMMXT_BUILTIN2): Likewise.
24324         (neon_builtin_type_bits): Don't define typedef.
24325         (neon_builtin_datum): Change type of bits field to int.
24326         (arm_expand_neon_args): Add cast to enum type.
24327         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
24328         TLS_MODEL_NONE.
24329         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
24330         casts to enum type.
24331         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
24332         MIPS_FP_COND_f.
24333         * config/mips/mips.md (jal_macro): Return enum constant.
24334         (single_insn): Likewise.
24335         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
24336         CODE_FOR_nothing.
24337         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
24338         casts to enum type.
24339         * config/s390/s390.c (s390_tune_flags): Change type to int.
24340         (s390_arch_flags): Likewise.
24341         (s390_handle_arch_option): Change flags field of struct pta to int.
24342         * config/s390/s390.h (s390_tune_flags): Update declaration.
24343         (s390_arch_flags): Likewise.
24344         * config/sh/sh.c (prepare_move_operands): Compare
24345         tls_symbolic_operand result with enum constant.
24346         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
24347         (sh_expand_prologue): Add cast to enum type.
24348         (sh_expand_epilogue): Likewise.
24349         (tls_symbolic_operand): Change return type to enum tls_model.
24350         (fpscr_set_from_mem): Add cast to enum type.
24351         (legitimize_pic_address): Compare tls_symbolic_operand result with
24352         enum constant.
24353         (sh_target_reg_class): Change return type to enum reg_class.
24354         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
24355         PROCESSOR_xxx.
24356         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
24357         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
24358         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
24359         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
24360         (delayed_branch, tls_call_delay): Likewise.
24361         (eligible_for_sibcall_delay): Likewise.
24362         (eligible_for_return_delay): Likewise.
24363         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
24364         (spu_expand_builtin_1): Likewise.
24365
24366         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
24367         for all types of conversions.
24368         (output_init_element): Issue -Wc++-compat warning if needed when
24369         initializing a bitfield with enum type.
24370         * c-parser.c (c_parser_expression): Set original_type to
24371         original_type of right hand operand of comma operator.
24372
24373 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24374
24375         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
24376         grammar nits.
24377         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
24378         * doc/cpp.texi (Standard Predefined Macros)
24379         (Implementation-defined behavior): Likewise.
24380         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
24381         * doc/gimple.texi (GIMPLE Exception Handling)
24382         (@code{GIMPLE_ASSIGN}): Likewise.
24383         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
24384         * doc/invoke.texi (Warning Options, Optimize Options)
24385         (AVR Options, Darwin Options): Likewise.
24386         (Optimize Options): Reformulate -fwhole-program description.
24387         * doc/loop.texi (Lambda): Likewise.
24388         * doc/md.texi (Output Template, Define Constraints)
24389         (Standard Names, Insn Splitting): Likewise.
24390         * doc/options.texi (Option properties): Likewise.
24391         * doc/passes.texi (Tree-SSA passes): Likewise.
24392         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
24393         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
24394         (File Names and DBX): Likewise.
24395         * doc/trouble.texi (Incompatibilities): Likewise.
24396
24397 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24398
24399         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
24400         instruction is correct.
24401
24402 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24403
24404         Allow non-constant arguments to conversion intrinsics.
24405         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
24406         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
24407         * spu.c (print_operand): Handle 'v' and 'w'.
24408         (exp2_immediate_p, spu_gen_exp2): Define.
24409         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
24410         spu_convtf_1): Update parameter descriptions.
24411         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
24412         * constraints.md ('v', 'w'): New.
24413         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
24414         Remove.
24415         (i2f, I2F): New define_mode_attr.
24416         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
24417         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
24418         fixuns_truncv4sfv4si2):  Update to use mode attribute.
24419         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
24420         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
24421         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
24422         patterns for combine.
24423
24424 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
24425
24426         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
24427         (cprop, hoist, pre, store_motion): New debug counters.
24428         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
24429         is not an RTL pass anymore.
24430         (pass_profiling): Remove extern decl for pass removed in 2005.
24431         (pass_gcse, pass_jump_bypass): Remove.
24432         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
24433         to 0 for clean state.
24434         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
24435         * cse.c (gate_handle_cse_after_global_opts,
24436         rest_of_handle_cse_after_global_opts): New functions.
24437         (pass_cse_after_global_opts): New pass, does local CSE.
24438         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
24439         (TV_CPROP): New timevar.
24440         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
24441         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
24442         (gcse_main, recompute_all_luids): Remove.
24443         (compute_hash_table_work): Call max_reg_num instead of reading
24444         max_gcse_regno.
24445         (cprop_jump): Don't set run_jump_opt_after_gcse.
24446         (constprop_register): Always allow to alter jumps.
24447         (cprop_insn): Likewise.
24448         (do_local_cprop): Likewise.
24449         (local_cprop_pass): Likewise.  Return non-zero if something changed.
24450         (cprop): Remove function, fold interesting bits into one_cprop_pass.
24451         (find_implicit_sets): Add note about missed optimization opportunity.
24452         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
24453         pass_rtl_cprop execute function.
24454         Don't bother tracking the pass number, each pass gets its own dumpfile
24455         now anyway.
24456         Always allow to alter jumpsand bypass jumps.
24457         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
24458         will just find no suitable set.
24459         (pre_edge_insert): Fix dumping, this function is for PRE only.
24460         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
24461         pass_rtl_pre execute function.
24462         (hoist_code): Return non-zero if something changed.  Keep track of
24463         substitutions and insertions for statistics gathering similar to PRE.
24464         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
24465         called from the pass_rtl_hoist execute function.  Show pass statistics.
24466         (compute_store_table): Use max_reg_num directly instead of using the
24467         formerly global max_gcse_regno.
24468         (build_store_vectors): Likewise.
24469         (replace_store_insn): Fix dumping.
24470         (store_motion): Rename to ...
24471         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
24472         pass, called from the pass_rtl_store_motion execute function.  Keep
24473         track of substitutions and insertions for statistics gathering similar
24474         to PRE.
24475         (bypass_jumps): Remove, fold interesting bits into ...
24476         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
24477         from the pass_rtl_cprop execute function.
24478         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
24479         pass_jump_bypass): Remove.
24480         (gate_handle_gcse, rest_of_handle_gcse): Remove.
24481         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
24482         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
24483         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
24484         (gate_rtl_store_motion, execute_rtl_store_motion,
24485         pass_rtl_store_motion): New.
24486         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
24487         make it clear that -fcse-skip-blocks is a no-op for backward compat.
24488         * passes.c (init_optimization_passes): Remove pass_gcse and
24489         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
24490         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
24491         instead of pass_jump_bypass.
24492
24493 2009-04-27  Richard Guenther  <rguenther@suse.de>
24494
24495         PR middle-end/39928
24496         * gimplify.c (gimplify_expr): If we are required to create
24497         a temporary make sure it ends up as register.
24498
24499 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
24500
24501         PR target/39903
24502         * config/i386/i386.c (construct_container): Don't call
24503         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
24504         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
24505
24506 2009-04-27  Michael Matz  <matz@suse.de>
24507
24508         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
24509         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
24510         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
24511         (dump_replaceable_exprs): Take a bitmap.
24512         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
24513         array.
24514         (expand_gimple_basic_block): Likewise.
24515         * tree-ssa-ter.c (struct temp_expr_table_d): Make
24516         replaceable_expressions member a bitmap.
24517         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
24518         (mark_replaceable): Likewise.
24519         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
24520         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
24521
24522 2009-04-27  Richard Guenther  <rguenther@suse.de>
24523
24524         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
24525         (verify_stmts): Dispatch to gimple/type verification code.
24526         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
24527         issue with call argument types.
24528
24529 2009-04-27  Michael Matz  <matz@suse.de>
24530
24531         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
24532         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
24533         to above.
24534
24535 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
24536             Eric Botcazou  <ebotcazou@adacore.com>
24537
24538         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
24539         a label's basic block.
24540         (mark_target_live_regs): Tidy and rework obsolete comments.
24541         Change back DF problem to LIVE.  If a label starts a basic block,
24542         assume that all registers that used to be live then still are.
24543         (init_resource_info): If a label starts a basic block, set its
24544         BLOCK_FOR_INSN accordingly.
24545         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
24546
24547 2009-04-27  Richard Guenther  <rguenther@suse.de>
24548
24549         * tree-flow-inline.h (function_ann): Remove.
24550         (get_function_ann): Likewise.
24551         * tree-dfa.c (create_function_ann): Remove.
24552         * tree-flow.h (struct static_var_ann_d): Remove.
24553         (struct function_ann_d): Likewise.
24554         (union tree_ann_d): Remove fdecl member.
24555         (function_ann_t): Remove.
24556         (function_ann, get_function_ann, create_function_ann): Remove
24557         declarations.
24558
24559 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
24560
24561         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
24562
24563 2009-04-27  Jan Hubicka  <jh@suse.cz>
24564
24565         * ipa-pure-const.c (struct funct_state_d): New fields
24566         state_previously_known, looping_previously_known; remove
24567         state_set_in_source.
24568         (analyze_function): Use new fields.
24569         (propagate): Avoid assumption that state_set_in_source imply
24570         nonlooping.
24571
24572         * tree-ssa-loop-niter.c (finite_loop_p): New function.
24573         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
24574         * cfgloop.h (finite_loop_p): Declare.
24575
24576 2009-04-26  Michael Matz  <matz@suse.de>
24577
24578         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
24579
24580 2009-04-26  Michael Matz  <matz@suse.de>
24581
24582         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
24583         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
24584         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
24585         pass_mark_used_blocks): Remove.
24586         * tree-optimize.c (pass_free_datastructures,
24587         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
24588         * passes.c (init_optimization_passes): Don't call
24589         pass_mark_used_blocks, remove dead code.
24590
24591 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
24592
24593         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
24594         * tree-ssa-live.h (register_ssa_partition): Likewise.
24595
24596 2009-04-26  Michael Matz  <matz@suse.de>
24597
24598         Expand from SSA.
24599         * builtins.c (fold_builtin_next_arg): Handle SSA names.
24600         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
24601         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
24602         SSA names.
24603         (compare_pairs): Swap cost comparison.
24604         (coalesce_ssa_name): Don't use change_partition_var.
24605         * tree-nrv.c (struct nrv_data): Add modified member.
24606         (finalize_nrv_r): Set it.
24607         (tree_nrv): Use it to update statements.
24608         (pass_nrv): Require PROP_ssa.
24609         * tree-mudflap.c (mf_decl_cache_locals,
24610         mf_build_check_statement_for): Use make_rename_temp.
24611         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
24612         * alias.c (find_base_decl): Handle SSA names.
24613         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24614         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24615         * rtl.h (set_reg_attrs_for_parm): Declare.
24616         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24617         to "optimized", remove unused locals at finish.
24618         (execute_free_datastructures): Make global, call
24619         delete_tree_cfg_annotations.
24620         (execute_free_cfg_annotations): Don't call
24621         delete_tree_cfg_annotations.
24622
24623         * ssaexpand.h: New file.
24624         * expr.c (toplevel): Include ssaexpand.h.
24625         (expand_assignment): Handle SSA names the same as register variables.
24626         (expand_expr_real_1): Expand SSA names.
24627         * cfgexpand.c (toplevel): Include ssaexpand.h.
24628         (SA): New global variable.
24629         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
24630         (SSAVAR): New macro.
24631         (set_rtl): New helper function.
24632         (add_stack_var): Deal with SSA names, use set_rtl.
24633         (expand_one_stack_var_at): Likewise.
24634         (expand_one_stack_var): Deal with SSA names.
24635         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
24636         before unique numbers.
24637         (expand_stack_vars): Use set_rtl.
24638         (expand_one_var): Accept SSA names, add asserts for them, feed them
24639         to above subroutines.
24640         (expand_used_vars): Expand all partitions (without default defs),
24641         then only the local decls (ignoring those expanded already).
24642         (expand_gimple_cond): Remove edges when jumpif() expands an
24643         unconditional jump.
24644         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
24645         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
24646         SSA name.
24647         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
24648         members of SA; deal with PARM_DECL partitions here; expand
24649         all PHI nodes, free tree datastructures and SA.  Commit instructions
24650         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
24651         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
24652         info and statements at start, collect garbage at finish.
24653         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
24654         (VAR_ANN_PARTITION) Remove.
24655         (change_partition_var): Don't declare.
24656         (partition_to_var): Always return SSA names.
24657         (var_to_partition): Only accept SSA names.
24658         (register_ssa_partition): Only check argument.
24659         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
24660         member.
24661         (delete_var_map): Don't free it.
24662         (var_union): Only accept SSA names, simplify.
24663         (partition_view_init): Mark only useful SSA names as used.
24664         (partition_view_fini): Only deal with SSA names.
24665         (change_partition_var): Remove.
24666         (dump_var_map): Use ssa_name instead of partition_to_var member.
24667         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
24668         basic blocks.
24669         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
24670         (struct _elim_graph): New member const_dests; nodes member vector of
24671         ints.
24672         (set_location_for_edge): New static helper.
24673         (create_temp): Remove.
24674         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
24675         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
24676         (new_elim_graph): Allocate const_dests member.
24677         (clean_elim_graph): Truncate const_dests member.
24678         (delete_elim_graph): Free const_dests member.
24679         (elim_graph_size): Adapt to new type of nodes member.
24680         (elim_graph_add_node): Likewise.
24681         (eliminate_name): Likewise.
24682         (eliminate_build): Don't take basic block argument, deal only with
24683         partition numbers, not variables.
24684         (get_temp_reg): New static helper.
24685         (elim_create): Use it, deal with RTL temporaries instead of trees.
24686         (eliminate_phi): Adjust all calls to new signature.
24687         (assign_vars, replace_use_variable, replace_def_variable): Remove.
24688         (rewrite_trees): Only do checking.
24689         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
24690         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
24691         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
24692         contains_tree_r, MAX_STMTS_IN_LATCH,
24693         process_single_block_loop_latch, analyze_edges_for_bb,
24694         perform_edge_inserts): Remove.
24695         (expand_phi_nodes): New global function.
24696         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
24697         functions, initialize new parameter, remember partitions having a
24698         default def.
24699         (finish_out_of_ssa): New global function.
24700         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
24701         don't reset in_ssa_p here, don't disable TER when mudflap.
24702         (pass_del_ssa): Remove.
24703         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
24704         partition members.
24705         (execute_free_datastructures): Declare.
24706         * Makefile.in (SSAEXPAND_H): New variable.
24707         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
24708         * basic-block.h (commit_one_edge_insertion): Declare.
24709         * passes.c (init_optimization_passes): Move pass_nrv and
24710         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
24711         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
24712         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
24713         (redirect_branch_edge): Deal with super block when expanding, split
24714         out jump patching itself into ...
24715         (patch_jump_insn): ... here, new static helper.
24716
24717 2009-04-26  Michael Matz  <matz@suse.de>
24718
24719         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
24720         beyond num_ssa_names.
24721         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
24722         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
24723
24724 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24725
24726         PR inline-asm/39543
24727         * fwprop.c (forward_propagate_asm): New function.
24728         (forward_propagate_and_simplify): Propagate also into __asm, if it
24729         doesn't increase the number of referenced registers.
24730
24731         PR c/39889
24732         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
24733
24734 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24735
24736         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
24737         note_nonlocal_vla_type for nonlocal VLAs.
24738         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
24739         contains_remapped_vars, remap_vla_decls): New functions.
24740         (convert_nonlocal_reference_stmt): If not optimizing, call
24741         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
24742         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
24743         if it wasn't found in var_map.
24744         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
24745         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
24746         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
24747         declare_vars.
24748         * gimplify.c (nonlocal_vlas): New variable.
24749         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
24750         referenced VLAs.
24751         (gimplify_body): Create and destroy nonlocal_vlas.
24752
24753         * dwarf2out.c (loc_descr_plus_const): New function.
24754         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
24755         mem_loc_descriptor, loc_descriptor_from_tree_1,
24756         descr_info_loc, gen_variable_die): Use it.
24757
24758         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
24759         !TREE_STATIC VAR_DECLs.
24760         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
24761         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
24762         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
24763         DECL_BY_REFERENCE is valid.
24764         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
24765         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
24766         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
24767         Copy DECL_BY_REFERENCE.
24768         (struct nesting_copy_body_data): New type.
24769         (nesting_copy_decl): New function.
24770         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
24771         if they have variable length.
24772
24773 2009-04-26  Michael Matz  <matz@suse.de>
24774
24775         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
24776         mark new temporaries for renaming.
24777
24778 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24779
24780         PR c/39581
24781         * c-decl.c (global_bindings_p): Return negative value.
24782         (c_variable_size): New.  Based on variable_size from
24783         stor-layout.c.
24784         (grokdeclarator): Call c_variable_size not variable_size.
24785
24786 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
24787
24788         * config/i386/i386.c (print_operand) ['z']: Fix typo.
24789
24790 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
24791
24792         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
24793         Redefine it to just use mingw/include.
24794         (ASM_SPEC): Rules for -m32 and -m64.
24795         (LINK_SPEC): Use Likewise.
24796         (SPEC_32): New define.
24797         (SPEC_64): Likewise.
24798         (SUB_LINK_SPEC): Likewise.
24799         (MULTILIB_DEFAULTS): New define.
24800         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
24801         Add multilib options.
24802         (MULTILIB_DIRNAMES): Likewise.
24803         (MULTILIB_OSDIRNAMES): Likewise.
24804         (LIBGCC): Likewise.
24805         (INSTALL_LIBGCC): Likewise.
24806
24807 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24808
24809         PR c/39556
24810         * c-tree.h (enum c_inline_static_type): New.
24811         (record_inline_static): Declare.
24812         * c-decl.c (struct c_inline_static, c_inline_statics,
24813         record_inline_static, check_inline_statics): New.
24814         (pop_file_scope): Call check_inline_statics.
24815         (start_decl): Call record_inline_static instead of pedwarning
24816         directly for static in inline function.
24817         * c-typeck.c (build_external_ref): Call record_inline_static
24818         instead of pedwarning directly for static referenced in inline
24819         function.
24820
24821 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
24822
24823         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
24824         not new but only being rescanned.
24825         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
24826         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
24827         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
24828         record_set_info, compute_set, grealloc): Remove.
24829         (recompute_all_luids): New function.
24830         (gcse_main): Don't compute sets, and don't do related memory
24831         allocations/free-ing.  If something changed before the end of the
24832         pass, update LUIDs using recompute_all_luids.
24833         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
24834         (free_gcse_mem): Don't free it either.
24835         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
24836         Use the df insn LUIDs.
24837         (load_killed_in_block): Likewise.
24838         (compute_hash_table_work): Don't compute reg_set_in_block.
24839         (compute_transp): Use DF_REG_DEF_CHAINs.
24840         (local_cprop_pass): Don't use compute_sets and related functions.
24841         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
24842         Use get_max_uid() instead of max_cuid.
24843         (insert_insn_end_basic_block, pre_insert_copy_insn,
24844         update_ld_motion_stores): Don't try to
24845         keep reg_set tables up to date.
24846         (pre_insert_copies): Use df insn LUIDs.
24847         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
24848         (reg_set_info): Don't use extra bitmap argument.
24849         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
24850         information to compute regs_set_in_block.
24851         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
24852         (bypass_jumps): Don't use compute_sets and friends.
24853
24854 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24855
24856         PR testsuite/39710
24857         * opts.c (undocumented_msg): Do not leave blank even with
24858         ENABLE_CHECKING.
24859
24860 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24861
24862         * c-decl.c (build_enumerator): Allow values folding to integer
24863         constants but not integer constant expressions with a pedwarn if
24864         pedantic.
24865
24866 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24867
24868         PR c/39582
24869         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
24870         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
24871         type is an integer constant.
24872
24873 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24874
24875         PR target/39897
24876         * config/i386/i386.c (print_operand) ['z']: Revert handling of
24877         HImode operands.
24878
24879 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24880
24881         PR c/39564
24882         * c-decl.c (grokdeclarator): Diagnose declarations of functions
24883         with variably modified return type and no storage class
24884         specifiers, except for the case of nested functions.  Distinguish
24885         extern declarations of functions with variably modified return
24886         types from those of objects with variably modified types.
24887
24888 2009-04-25  Jan Hubicka  <jh@suse.cz>
24889
24890         * tree.c (list_equal_p): New function.
24891         * tree.h (list_equal_p): Declare.
24892         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24893         basic_block_def, basic_block, const_basic_block): New.
24894         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
24895         (redirect_eh_edge): New function.
24896         (make_eh_edge_update_phi): EH edges are not abnormal.
24897         * except.c: Include tree-flow.h.
24898         (list_match): New function.
24899         (eh_region_replaceable_by_p): New function.
24900         (replace_region): New function.
24901         (hash_type_list): New function.
24902         (hash_eh_region): New function.
24903         (eh_regions_equal_p): New function.
24904         (merge_peers): New function.
24905         (remove_unreachable_regions): Verify EH tree when checking;
24906         merge peers.
24907         (copy_eh_region_1): New function.
24908         (copy_eh_region): New function.
24909         (push_reachable_handler): New function.
24910         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
24911         regions without label but with live RESX.
24912         * except.h (redirect_eh_edge_to_label): New.
24913         * tree-flow.h (redirect_eh_edge): New.
24914         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24915         basic_block_def, basic_block, const_basic_block): Remove.
24916         * Makefile.in (except.o): Add dependency on tree-flow.h
24917         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
24918         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
24919         Remove.
24920
24921 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
24922
24923         PR bootstrap/39645
24924         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
24925         on the destination of memcpy.
24926
24927 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
24928
24929         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
24930         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
24931         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
24932
24933 2009-04-25  Jan Hubicka  <jh@suse.cz>
24934
24935         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
24936         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
24937         to be reached by different label than left.
24938         (update_eh_edges): Update comment; remove edge_to_remove if possible
24939         and return true if suceeded.
24940         (cleanup_empty_eh): Accept sharing map; handle shared regions.
24941         (cleanup_eh): Compute sharing map.
24942         * except.c (remove_eh_handler_and_replace): Add argument if we should
24943         update regions.
24944         (remove_unreachable_regions): Update for label sharing.
24945         (label_to_region_map): Likewise.
24946         (get_next_region_sharing_label): New function.
24947         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
24948         prev_try pointers.
24949         (remove_eh_handler): Update.
24950         (remove_eh_region_and_replace_by_outer_of): New function.
24951         * except.h (struct eh_region): Add next_region_sharing_label.
24952         (remove_eh_region_and_replace_by_outer_of,
24953         get_next_region_sharing_label): Declare.
24954         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
24955
24956 2009-04-25  Jan Hubicka  <jh@suse.cz>
24957
24958         * tree-cfg.c (split_critical_edges): Split also edges where we can't
24959         insert code even if they are not critical.
24960
24961 2009-04-25  Jan Hubicka  <jh@suse.cz>
24962
24963         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24964         (gimple_can_remove_branch_p): EH edges won't remove branch by
24965         redirection.
24966         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
24967         updating of non-abnormal EH edges.
24968         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24969         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
24970         (split_critical_edges): Split also edges where emitting code on them
24971         will lead to splitting later.
24972
24973 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24974             H.J. Lu  <hongjiu.lu@intel.com>
24975
24976         PR target/39590
24977         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
24978         the configured assembler supports fildq and fistpq mnemonics.
24979         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
24980         * configure: Regenerated.
24981         * config.in: Ditto.
24982
24983         * config/i386/i386.c (print_operand): Handle 'Z'.
24984         ['z']: Remove handling of special fild/fist suffixes.
24985         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
24986         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
24987         suffix of fild insn.
24988         (*floatsi<mode>2_vector_mixed): Ditto.
24989         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
24990         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
24991         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
24992         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
24993         * config/i386/gas.h (GAS_MNEMONICS): Remove.
24994
24995 2009-04-25  Ben Elliston  <bje@au.ibm.com>
24996
24997         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
24998         the source of a set operation.
24999
25000 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
25001
25002         * target.h (struct gcc_target): Add case_values_threshold field.
25003         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
25004         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
25005         * targhooks.c (default_case_values_threshold): New function.
25006         * targhooks.h (default_case_values_threshold): Declare function.
25007         * stmt.c (expand_case): Use case_values_threshold target hook.
25008         * expr.h (case_values_threshold): Remove declartation.
25009         * expr.c (case_values_threshold): Remove function.
25010         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
25011
25012         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
25013         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25014         (avr_case_values_threshold): Declare as static.
25015         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
25016
25017         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
25018         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25019         (mn10300_case_values_threshold): New function.
25020
25021 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25022
25023         * ira.c (setup_cover_and_important_classes): Add enum cast.
25024
25025 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
25026
25027         * genpreds.c (write_enum_constraint_num): Output definition of
25028         CONSTRAINT_NUM_DEFINED_P macro.
25029         * ira.c (setup_cover_and_important_classes): Use
25030         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
25031
25032 2009-04-24  DJ Delorie  <dj@redhat.com>
25033
25034         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
25035         __SH2A_SINGLE_ONLY__ also.
25036
25037 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
25038
25039         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
25040         (movdf_internal): Ditto.
25041         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
25042         SFmode and DFmode constants.
25043         (ia64_print_operand): Add 'G' format for printing
25044         floating point constants.
25045
25046 2009-04-24  Richard Guenther  <rguenther@suse.de>
25047
25048         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
25049         from unsigned additions.
25050
25051 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
25052
25053         * c-typeck.c (set_init_index): Allow array designators that are
25054         not integer constant expressions with a pedwarn if pedantic.
25055
25056 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25057
25058         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
25059         zero if no overlap in nonzero bits between the operands.
25060
25061 2009-04-24  Ian Lance Taylor  <iant@google.com>
25062
25063         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
25064         (record_dead_and_set_regs): Likewise.
25065         * df.h (struct df_mw_hardreg): Change flags field to int.
25066         (struct df_base_ref): Likewise.
25067         (struct df): Change changeable_flags field to int.
25068         * df-scan.c (df_defs_record): Change clobber_flags to int.
25069         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
25070         constants rather than #define macros.
25071         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
25072         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
25073         (enum dwarf_calling_convention): Likewise.
25074         (enum dwarf_line_number_x_ops): Likewise.
25075         (enum dwarf_call_frame_info): Likewise.
25076         (enum dwarf_source_language): Likewise.
25077         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
25078         (add_calling_convention_attribute): Likewise.
25079         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
25080         (combine_comparisons): Change compcode to int.  Add cast to enum type.
25081         * genrecog.c (maybe_both_true_2): Change c to int.
25082         (write_switch): Likewise.  Add cast to enum type.
25083         * gimplify.c (gimplify_omp_for): Handle return values from
25084         gimplify_expr using MIN rather than bitwise or.
25085         (gimplify_expr): Add cast to enum type.
25086         * ipa-prop.c (update_jump_functions_after_inlining): Change
25087         IPA_BOTTOM to IPA_JF_UNKNOWN.
25088         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
25089         Add casts to enum type.
25090         (setup_cover_and_important_classes): Change cl to int.  Add casts
25091         to enum type.
25092         (setup_class_translate): Change cl and mode to int.
25093         (ira_init_once): Change mode to int.
25094         (free_register_move_costs): Likewise.
25095         (setup_prohibited_mode_move_regs): Add casts to enum type.
25096         * langhooks.c (add_builtin_function_common): Rework assertion that
25097         value fits bitfield.
25098         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
25099         * omega.c (omega_do_elimination): Avoid math on enum types.
25100         * optabs.c (expand_vec_shift_expr): Remove casts to int.
25101         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
25102         int local to handle integral_argment value.
25103         * regmove.c (try_auto_increment): Change PUT_MODE to
25104         PUT_REG_NOTE_KIND.
25105         * reload.c (push_secondary_reload): Add casts to enum type.
25106         (secondary_reload_class, find_valid_class): Likewise.
25107         * reload1.c (emit_input_reload_insns): Likewise.
25108         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
25109         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
25110         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
25111         constant.
25112         * tree.c (build_common_builtin_nodes): Add casts to enum type.
25113         * tree-complex.c (complex_lattice_t): Typedef to int rather than
25114         enum type.
25115         (expand_complex_libcall): Add casts to enum type.
25116         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
25117         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
25118         with ERROR_MARK, not NUM_TREE_CODES.
25119         (vect_create_epilog_for_reduction): Likewise.
25120         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
25121         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
25122         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
25123         enum machine_mode.
25124         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
25125         vect_unused_in_loop.  Change 0 to loop_vect.
25126         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
25127         * var-tracking.c (get_init_value): Change return type to enum
25128         var_init_status.
25129         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
25130         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
25131         arm_fp_model.
25132         (arm_override_options): Add casts to enum type.
25133         (arm_emit_tls_decoration): Likewise.
25134         * config/i386/i386.c (ix86_function_specific_restore): Add casts
25135         to enum type.
25136         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
25137         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
25138         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
25139         enum type.
25140         * config/s390/s390.c (code_for_builtin_64): Change to array of
25141         enum insn_code.
25142         (code_for_builtin_31): Likewise.
25143         (s390_expand_builtin): Change code_for_builtin to enum insn_code
25144         const *.
25145         * config/sparc/sparc.c (sparc_override_options): Change value
25146         field in struct code_model to enum cmodel.  In initializer change
25147         0 to NULL and add cast to enum type.
25148
25149         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
25150         Change all callers.  Issue a -Wc++-compat warning using
25151         lhs_origtype if necessary.
25152         (convert_for_assignment): Issue -Wc++-compat warnings about
25153         invalid conversions to enum type on assignment.
25154         * c-common.h (build_modify_expr): Update declaration.
25155
25156 2009-04-24  Nick Clifton  <nickc@redhat.com>
25157
25158         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
25159         (function_arg_advance): Likewise.
25160         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
25161         5th alternative.
25162
25163 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25164
25165         * config/s390/constraints.md ('I', 'J'): Fix condition.
25166
25167 2009-04-24  Diego Novillo  <dnovillo@google.com>
25168
25169         * gengtype-parse.c (parse_error): Add newline after message.
25170
25171 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25172
25173         * config/i386/sse.md (avxmodesuffixs): Removed.
25174         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
25175         (*avx_pinsr<ssevecsize>): This.
25176
25177 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25178
25179         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
25180         follow chains of regs with a single definition, and allow expressions
25181         that are function_invariant_p.
25182         (simple_rhs_p): Allow expressions that are function_invariant_p.
25183
25184 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
25185
25186         PR middle-end/39867
25187         * fold-const.c (fold_cond_expr_with_comparison): When folding
25188         > and >= to MAX, make sure the MAX uses the same type as the
25189         comparison's operands.
25190
25191 2009-04-24  Nick Clifton  <nickc@redhat.com>
25192
25193         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
25194         addressing for DImode accesses.
25195         (frv_print_operand_address): Handle PLUS case.
25196         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
25197
25198 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
25199
25200         PR rtl-optimization/39794
25201         * alias.c (canon_true_dependence): Add x_addr argument.
25202         * rtl.h (canon_true_dependence): Adjust prototype.
25203         * cse.c (check_dependence): Adjust canon_true_dependence callers.
25204         * cselib.c (cselib_invalidate_mem): Likewise.
25205         * gcse.c (compute_transp): Likewise.
25206         * dse.c (scan_reads_nospill): Likewise.
25207         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
25208         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
25209         canon_base_addr of the group, plus optional offset.
25210         (struct group_info): Rename canon_base_mem to
25211         canon_base_addr.
25212         (get_group_info): Set canon_base_addr to canon_rtx of base, not
25213         canon_rtx of base_mem.
25214
25215 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
25216
25217         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
25218         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
25219
25220 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25221
25222         * config/spu/spu-builtins.h: Delete file.
25223
25224         * config/spu/spu.h (enum spu_builtin_type): Move here from
25225         spu-builtins.h.
25226         (struct spu_builtin_description): Likewise.  Add GTY marker.
25227         Do not use enum spu_function_code or enum insn_code.
25228         (spu_builtins): Add extern declaration.
25229
25230         * config/spu/spu.c: Do not include "spu-builtins.h".
25231         (enum spu_function_code, enum spu_builtin_type_index,
25232         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
25233         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
25234         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
25235         unsigned_V2DI_type_node): Move here from spu-builtins.h.
25236         (spu_builtin_types): Make static.  Add GTY marker.
25237         (spu_builtins): Add extern declaration with GTY marker.
25238         Include "gt-spu.h".
25239
25240         * config/spu/spu-c.c: Do not include "spu-builtins.h".
25241         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
25242         Check programmatically whether all parameters are scalar.
25243
25244         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
25245
25246 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
25247
25248         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
25249         assignment from the constructor either if the target is volatile.
25250
25251 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
25252
25253         * config/arm/arm.md (insv): Do not share operands[0].
25254
25255 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
25256
25257         * config/vxlib-tls.c (active_tls_threads): Delete.
25258         (delete_hook_installed): New.
25259         (tls_delete_hook): Don't delete the delete hook.
25260         (tls_destructor): Delete it here.
25261         (__gthread_set_specific): Adjust installing the delete hook.
25262         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
25263         __gthread_leave_tsd_dtor_context.
25264
25265 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
25266
25267         * c-format.c (gcc_tdiag_char_table): Add support for %E.
25268
25269 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
25270
25271         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
25272         enum type.
25273         (alpha_rtx_costs): Ditto.
25274         (emit_unlikely_jump): Use add_reg_note.
25275         (emit_frame_store_1): Ditto.
25276         (alpha_expand_prologue): Ditto.
25277         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25278         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
25279
25280 2009-04-23  Nick Clifton  <nickc@redhat.com>
25281
25282         * config/v850/v850.md (epilogue): Remove suppressed code.
25283         (return): Rename to return_simple and remove test of frame size.
25284         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
25285         to gen_return_simple.
25286
25287 2009-04-22  Jing Yu  <jingyu@google.com>
25288
25289         PR testsuite/39781
25290         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
25291
25292 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25293
25294         PR C/31499
25295         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
25296         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
25297         value is a VECTOR_CST, the element type is the element type of the
25298         vector.
25299
25300 2009-04-22  DJ Delorie  <dj@redhat.com>
25301
25302         * config/m32c/m32c.h: Update GTY annotations to new syntax.
25303
25304 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
25305
25306         * alias.c (find_base_term): Move around LO_SUM case, so that
25307         CONST falls through into PLUS/MINUS handling.
25308
25309         PR c/39855
25310         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
25311         into 0, use omit_one_operand.
25312
25313 2009-04-23  Ben Elliston  <bje@au.ibm.com>
25314
25315         * config/rs6000/linux-unwind.h (get_regs): Remove type
25316         puns. Change the type of `pc' to an array of unsigned ints and
25317         update all users.  Constify frame24.
25318
25319 2009-04-22  DJ Delorie  <dj@redhat.com>
25320
25321         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
25322         declarations before code.
25323         (current_function_special_page_vector): Likewise.
25324         (m32c_expand_insv): Silence a warning.
25325
25326 2009-04-21  Taras Glek  <tglek@mozilla.com>
25327
25328         * alias.c: Update GTY annotations to new syntax.
25329         * basic-block.h: Likewise.
25330         * bitmap.h: Likewise.
25331         * c-common.h: Likewise.
25332         * c-decl.c: Likewise.
25333         * c-parser.c: Likewise.
25334         * c-pragma.c: Likewise.
25335         * c-tree.h: Likewise.
25336         * cfgloop.h: Likewise.
25337         * cgraph.h: Likewise.
25338         * config/alpha/alpha.c: Likewise.
25339         * config/arm/arm.h: Likewise.
25340         * config/avr/avr.h: Likewise.
25341         * config/bfin/bfin.c: Likewise.
25342         * config/cris/cris.c: Likewise.
25343         * config/darwin.c: Likewise.
25344         * config/frv/frv.c: Likewise.
25345         * config/i386/i386.c: Likewise.
25346         * config/i386/i386.h: Likewise.
25347         * config/i386/winnt.c: Likewise.
25348         * config/ia64/ia64.h: Likewise.
25349         * config/iq2000/iq2000.c: Likewise.
25350         * config/mips/mips.c: Likewise.
25351         * config/mmix/mmix.h: Likewise.
25352         * config/pa/pa.c: Likewise.
25353         * config/pa/pa.h: Likewise.
25354         * config/rs6000/rs6000.c: Likewise.
25355         * config/s390/s390.c: Likewise.
25356         * config/sparc/sparc.c: Likewise.
25357         * config/xtensa/xtensa.c: Likewise.
25358         * cselib.h: Likewise.
25359         * dbxout.c: Likewise.
25360         * dwarf2out.c: Likewise.
25361         * except.c: Likewise.
25362         * except.h: Likewise.
25363         * fixed-value.h: Likewise.
25364         * function.c: Likewise.
25365         * function.h: Likewise.
25366         * gimple.h: Likewise.
25367         * integrate.c: Likewise.
25368         * optabs.c: Likewise.
25369         * output.h: Likewise.
25370         * real.h: Likewise.
25371         * rtl.h: Likewise.
25372         * stringpool.c: Likewise.
25373         * tree-data-ref.c: Likewise.
25374         * tree-flow.h: Likewise.
25375         * tree-scalar-evolution.c: Likewise.
25376         * tree-ssa-address.c: Likewise.
25377         * tree-ssa-alias.h: Likewise.
25378         * tree-ssa-operands.h: Likewise.
25379         * tree.c: Likewise.
25380         * tree.h: Likewise.
25381         * varasm.c: Likewise.
25382         * varray.h: Likewise.
25383         * vec.h: Likewise.
25384         * coretypes.h: Do not define GTY macro if it is already defined.
25385         * doc/gty.texi: Update GTY documentation to new syntax.
25386         * gengtype-lex.l: Enforce attribute-like syntax for GTY
25387         annotations on structs.
25388         * gengtype-parse.c: Likewise.
25389
25390 2009-04-22  Mark Heffernan  <meheff@google.com>
25391
25392         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
25393
25394 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25395
25396         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
25397         where appropriate.
25398
25399 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25400
25401         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
25402         the same as a PLUS without a shift.  Increase the cost of a
25403         CONST_INT in MULT.
25404
25405 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25406
25407         * Makefile.in: Update dependencies.
25408         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
25409         * errors.h: Remove bogus comment about compatibility.
25410         (warning): Update declaration.
25411         * genautomata.c: Update all calls to warning.
25412         * gimple.c: Do not include errors.h. Include toplev.h.
25413         * tree-ssa-structalias.c: Do not include errors.h.
25414         * omega.c: Likewise.
25415         * tree-ssa-reassoc.c: Likewise.
25416         * config/spu/spu-c.c: Likewise.
25417         * config/spu/t-spu-elf: Update dependencies.
25418
25419 2009-04-22  Richard Guenther  <rguenther@suse.de>
25420
25421         PR tree-optimization/39824
25422         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
25423         make sure the types are compatible.
25424
25425 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25426
25427         PR c++/14875
25428         * c-common.c (c_parse_error): Take a token_flags parameter.
25429         Use token_type for the token type instead.
25430         Pass token_flags to cpp_type2name.
25431         * c-common.h (c_parse_error): Update declaration.
25432         * c-parser.c (c_parser_error): Pass 0 as token flags.
25433
25434 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
25435
25436         PR rtl-optimization/39580
25437         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
25438
25439 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25440
25441         * function.c (expand_function_end): Do not emit a jump to the "naked"
25442         return label for fall-through returns.
25443         * except.c (sjlj_emit_function_exit): Always place the call to the
25444         unregister function at the location installed by expand_function_end.
25445
25446 2009-04-22  Richard Guenther  <rguenther@suse.de>
25447
25448         PR tree-optimization/39845
25449         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
25450         (gen_inbound_check): Likewise.
25451
25452 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
25453
25454         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
25455         padding for PPC.
25456         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
25457         * config/vxlib.c (__gthread_once): Add race guard for PPC.
25458
25459 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25460
25461         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
25462         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
25463         shift counts to avoid out-of-bounds array accesses.
25464
25465 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25466
25467         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
25468         (Pmode): Move above.
25469
25470 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
25471
25472         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
25473         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
25474         GET_CODE macro.  Use IN_RANGE macro where appropriate.
25475         * config/alpha/alpha.h: Ditto.
25476         * config/alpha/alpha.md: Ditto.
25477         * config/alpha/constraints.md: Ditto.
25478         * config/alpha/predicates.md: Ditto.
25479
25480 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25481
25482         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
25483         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25484         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25485         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25486         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25487         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25488         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25489         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25490         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25491         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25492         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25493         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25494         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25495         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25496         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25497         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25498         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25499         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25500         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25501         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25502         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25503         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25504         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25505         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25506         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25507         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25508         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25509
25510 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
25511
25512         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
25513         references from comments.
25514         * cfgbuild.c (count_basic_blocks): Delete.
25515         (find_basic_blocks_1): Delete.
25516         (find_basic_blocks): Delete.
25517         * except.c (finish_eh_generation): Make static.  Move comment from
25518         except.h here.  Remove find_basic_blocks references from comments.
25519         * except.h (finish_eh_generation): Delete.
25520         * basic-block.h (find_basic_blocks): Delete.
25521         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
25522
25523 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
25524
25525         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
25526         (sdbout_parms):  Likewise.
25527
25528 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
25529
25530         * config/sh/sh.c (prepare_cbranch_operands): Use
25531         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
25532         (expand_cbranchdi4): Likewise.
25533         (from_compare): Add cast to enum type.
25534         (expand_cbranchsi4): Use add_reg_note.
25535         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
25536         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
25537         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
25538         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25539         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
25540         instead of CODE_FOR_nothing.
25541         (cbranchdi4): Likewise.  Fix the order of arguments for
25542         gen_rtx_fmt_ee.
25543         (push_fpscr): Use add_reg_note.
25544         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
25545         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
25546
25547 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
25548
25549         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
25550         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25551         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25552         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
25553         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
25554         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
25555         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
25556         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
25557         config/alpha/x-vms, config/arc/t-arc,
25558         config/arm/README-interworking, config/arm/arm-c.c,
25559         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
25560         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
25561         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
25562         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
25563         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
25564         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
25565         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
25566         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
25567         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
25568         config/cris/t-elfmulti, config/crx/t-crx,
25569         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
25570         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
25571         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
25572         config/h8300/t-h8300, config/i386/athlon.md,
25573         config/i386/darwin-libgcc.10.4.ver,
25574         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
25575         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
25576         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
25577         config/i386/t-linux64, config/i386/t-nwld,
25578         config/i386/t-rtems-i386, config/i386/t-sol2-10,
25579         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
25580         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
25581         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
25582         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
25583         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
25584         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
25585         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
25586         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
25587         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
25588         config/m68k/t-uclinux, config/mcore/t-mcore,
25589         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
25590         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
25591         config/mips/crtn.asm, config/mips/irix-crti.asm,
25592         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
25593         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
25594         config/mips/mips-fixed.md, config/mips/sb1.md,
25595         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
25596         config/mips/t-iris6, config/mips/t-isa3264,
25597         config/mips/t-libgcc-mips16, config/mips/t-linux64,
25598         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
25599         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
25600         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
25601         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
25602         config/mn10300/t-linux, config/mn10300/t-mn10300,
25603         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
25604         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
25605         config/picochip/libgccExtras/clzsi2.asm,
25606         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
25607         config/rs6000/darwin-libgcc.10.4.ver,
25608         config/rs6000/darwin-libgcc.10.5.ver,
25609         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
25610         config/rs6000/t-aix43, config/rs6000/t-aix52,
25611         config/rs6000/t-darwin, config/rs6000/t-fprules,
25612         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
25613         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25614         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25615         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25616         config/rs6000/t-rtems, config/rs6000/t-spe,
25617         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25618         config/score/t-score-elf, config/sh/divcost-analysis,
25619         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
25620         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
25621         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
25622         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
25623         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
25624         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
25625         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
25626         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
25627         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
25628         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
25629         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
25630         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
25631         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
25632         limitx.h, version.c, xcoff.h: Add copyright and license notices.
25633         * config/h8300/genmova.sh: Include copyright and license notices
25634         in generated output.
25635         * config/h8300/mova.md: Regenerate.
25636         * doc/install.texi2html: Include word "Copyright" in copyright
25637         notice and use name "Free Software Foundation, Inc.".
25638         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25639         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25640         ChangeLog-2007, ChangeLog-2008: Correct dates.
25641
25642 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
25643
25644         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
25645         NE_EXPR operations as well.
25646         * c-parser.c (c_parser_condition): Do not set location information on
25647         the condition.
25648         (c_parser_conditional_expression): Likewise.
25649         (c_parser_binary_expression): Set location information on operators.
25650         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
25651         TRUTH_NOT_EXPR has been folded.
25652         * fold-const.c (fold_truth_not_expr): Copy location information from
25653         the incoming expression to the outgoing one.
25654         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
25655         recursive calls on the LHS of the operator but pass that of the
25656         operator to recursive calls on the RHS of the operator.  Set it
25657         on the COND_EXPR.
25658         (shortcut_cond_expr): Set the locus of the operator on the second
25659         COND_EXPR and that of the expression on the first in degenerate cases.
25660         Pass the locus of the expression to calls to shortcut_cond_r.
25661         Set the locus of the 'then' block on the associated jump, if any.
25662         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
25663         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
25664         expression to call to gimplify_boolean_expr.
25665
25666 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
25667
25668         * config.gcc: Add additional configuration for
25669         i686-w64-mingw* and x86_64-w64-mingw* triplet.
25670         * config/i386/mingw-w64.h: New mingw-w64 specific header.
25671         (CPP_SPEC): Redefine for allowing -municode option.
25672         (STARTFILE_SPEC): Likewise.
25673         * config/i386/t-mingw-w64: New.
25674         * config/i386/mingw-w64.opt: New.
25675         (municode): Add new target option.
25676         * doc/invoke.texi (municode): Add documentation for new option.
25677
25678 2009-04-21  Ian Lance Taylor  <iant@google.com>
25679
25680         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25681         Correct test for number of arguments.
25682         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
25683
25684 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
25685
25686         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
25687         argument of emit_library_call.
25688
25689 2009-04-21  Richard Guenther  <rguenther@suse.de>
25690
25691         PR middle-end/39829
25692         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
25693         inside VIEW_CONVERT_EXPRs.
25694
25695 2009-04-21  Martin Jambor  <mjambor@suse.cz>
25696
25697         * tree-switch-conversion.c (build_constructors): Split a long line.
25698         (constructor_contains_same_values_p): New function.
25699         (build_one_array): Create assigns of constants if possible, do not
25700         call mark_sym_for_renaming, call update_stmt.
25701         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
25702         make_rename_temp.  Do not call mark_symbols_for_renaming, call
25703         update_stmt.
25704         (gen_def_assigns): Do not call mark_symbols_for_renaming or
25705         find_new_referenced_vars, call update_stmt.
25706         (gen_inbound_check): Use create_tmp_var and create ssa names manually
25707         instead of calling make_rename_temp.  Do not call
25708         find_new_referenced_vars or mark_symbols_for_renaming, call
25709         update_stmt.
25710
25711 2009-04-21  Richard Guenther  <rguenther@suse.de>
25712
25713         PR tree-optimization/39827
25714         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
25715         (tree_ssa_phiprop): Pass the correct array size.
25716
25717 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
25718
25719         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
25720
25721 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25722
25723         PR 16202
25724         * c-typeck.c (lvalue_p): Move declaration ...
25725         * c-common.h (lvalue_p): ... to here.
25726         * c-common.c (candidate_equal_p): New.
25727         (add_tlist): Use it.
25728         (merge_tlist): Use it.
25729         (warn_for_collisions_1): Likewise.
25730         (warning_candidate_p): Accept more candidates.
25731         (verify_tree): A warning candidate can be an expression. Use
25732         candidate_equal_p.
25733
25734 2009-04-21  Ben Elliston  <bje@au.ibm.com>
25735
25736         PR target/5267
25737         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
25738         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
25739         options.  Remove -mcall-solaris documentation.
25740
25741 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25742
25743         PR c++/13358
25744         * doc/invoke.texi (-Wlong-long): Update description.
25745         * c-lex (interpret_integer): Only warn if there was no previous
25746         overflow and -Wlong-long is enabled.
25747         * c-decl.c (declspecs_add_type): Drop redundant flags.
25748         * c.opt (Wlong-long): Init to -1.
25749         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
25750         and front-end warn_long_long. Wlong-long only depends on other
25751         flags if it is uninitialized.
25752         * c-parser.c (disable_extension_diagnostics): warn_long_long is
25753         the same for CPP and FE.
25754         (restore_extension_diagnostics): Likewise.
25755
25756 2009-04-20  Ian Lance Taylor  <iant@google.com>
25757
25758         Fix enum conversions which are invalid in C++:
25759         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
25760         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
25761         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
25762         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
25763         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
25764         (dbxout_parms): Likewise.
25765         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
25766         (df_clear_flags): Likewise.
25767         * df-problems.c (df_rd_bb_local_compute_process_def): Change
25768         top_flag parameter to int.
25769         (df_chain_create_bb_process_use): Likewise.
25770         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
25771         Remove cast.
25772         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
25773         (df_ref_create_structure, df_def_record_1): Likewise.
25774         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
25775         (df_notes_rescan): Change 0 to VOIDmode in function call.
25776         (df_get_call_refs, df_insn_refs_collect): Likewise.
25777         (df_bb_regs_collect): Likewise.
25778         (df_entry_block_defs_collect): Likewise.
25779         (df_exit_block_uses_collect): Likewise.
25780         * df.h: Update declarations.
25781         * double-int.c (double_int_divmod): Add cast to enum type.
25782         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
25783         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
25784         (based_loc_descr): Likewise.
25785         (loc_descriptor_from_tree_1): Change first_op and second_op to
25786         enum dwarf_location_atom.  Add cast to enum type.
25787         * expmed.c (init_expmed): Change 0 to SET in function call.
25788         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
25789         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
25790         (do_store_flag): Likewise.
25791         * fixed-value.h (struct fixed_value): Change mode to enum
25792         machine_mode.
25793         * function.c (assign_parms): Change 0 to VOIDmode in function call.
25794         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
25795         function call.
25796         (insert_insn_decl, insert_decl, insert_state): Likewise.
25797         (automata_list_finish): Likewise.
25798         * genrecog.c (process_define_predicate): Add cast to enum type.
25799         * gensupport.c (init_predicate_table): Add cast to enum type.
25800         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
25801         function call.
25802         (gimple_build_call_1, gimple_build_label): Likewise.
25803         (gimple_build_goto, gimple_build_asm_1): Likewise.
25804         (gimple_build_switch_1, gimple_build_cdt): Likewise.
25805         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
25806         (enum fallback): Rename from enum fallback_t.
25807         (fallback_t): Typedef as int.
25808         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
25809         GSI_SAME_STMT in function call.
25810         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
25811         enum type.
25812         (setup_reg_class_relations): Likewise.
25813         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
25814         (setup_prohibited_class_mode_regs): Add cast to enum type.
25815         (setup_prohibited_mode_move_regs): Likewise.
25816         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
25817         (record_address_regs): Change i to enum reg_class.
25818         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
25819         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
25820         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
25821         (GET_MODE_2XWIDER_MODE): Likewise.
25822         (GET_CLASS_NARROWEST_MODE): Likewise.
25823         * omp-low.c (expand_omp_for): Add cast to enum type.
25824         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
25825         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
25826         * postreload.c (reload_cse_simplify_operands): Change rclass local
25827         to enum reg_class.
25828         * predict.c (combine_predictions_for_insn): Change best_predictor
25829         and predictor to enum br_predictor.
25830         (combine_predictions_for_bb): Likewise.
25831         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
25832         use SET_PREDICT_EXPR_OUTCOME.
25833         * real.c (real_arithmetic): Change icode to code in function call.
25834         * reginfo.c (init_move_cost): Add casts to enum type.
25835         (init_reg_sets_1, init_fake_stack_mems): Likewise.
25836         * regmove.c (regclass_compatible_p): Change class0 and class1 to
25837         enum reg_class.
25838         * reload.c (find_valid_class): Add casts to enum type.
25839         (push_reload): Change 0 to NO_REGS in function call.
25840         (find_reloads): Change this_alternative to array of enum
25841         reg_class.  Remove some now-unnecessary casts.
25842         (make_memloc): Change 0 to VOIDmode in function call.
25843         * reload1.c (reload): Change 0 to VOIDmode in function call.
25844         (eliminate_regs_1, elimination_effects): Likewise.
25845         (eliminate_regs_in_insn): Likewise.
25846         (emit_input_reload_insns): Add cast to enum type.
25847         (delete_output_reload): Change 0 to VOIDmode in function call.
25848         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
25849         to enum type in function call.
25850         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
25851         (SET_PREDICT_EXPR_OUTCOME): Define.
25852         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
25853         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
25854         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
25855         (dump_function): Likewise.
25856         * tree-dump.h: Update declarations.
25857         * tree-pass.h: Update declarations.
25858         * varasm.c (assemble_integer): Change mclass to enum mode_class.
25859         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
25860         enum type.
25861         (arm_rtx_costs_1): Correct parenthesization.
25862         (arm_rtx_costs): Add casts to enum type.
25863         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
25864         (vfp_emit_fstmd): Use add_rg_note.
25865         (emit_multi_reg_push, emit_sfm): Likewise.
25866         (thumb_set_frame_pointer): Likewise.
25867         (arm_expand_prologue): Likewise.
25868         (arm_regno_class): Change return type to enum reg_class.
25869         (thumb1_expand_prologue): Use add_reg_note.
25870         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
25871         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
25872         in function call.
25873         * config/arm/gentune.sh: Add cast to enum type.
25874         * config/arm/arm-tune.md: Rebuild.
25875         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
25876         (ix86_split_fp_branch, predict_jump): Likewise.
25877         (ix86_expand_multi_arg_builtin): Change sub_code from enum
25878         insn_code to enum rtx_code.
25879         (ix86_builtin_vectorized_function): Add cast to enum type.
25880         * config/i386/i386.md (truncdfsf2): Change slot to enum
25881         ix86_stack_slot.
25882         (truncxf<mode>2, isinf<mode>2): Likewise.
25883         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
25884         enum type.
25885         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
25886         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
25887         (insert_bundle_state): Change 1 to INSERT in function call.
25888         (ia64_add_bundle_selector_before): Likewise.
25889         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
25890         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
25891         (restore_stack_nonlocal): Likewise.
25892         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
25893         function call.
25894         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
25895         function call.
25896         (mips_rtx_costs): Likewise.
25897         (mips_override_options): Add casts to enum type.
25898         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
25899         in function call.
25900         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
25901         (store_reg, set_reg_plus_d): Likewise.
25902         (hppa_expand_prologue, hppa_profile_hook): Likewise.
25903         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
25904         cast to enum type.
25905         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
25906         function call.
25907         (emit_unlikely_jump): Use add_reg_note.
25908         (rs6000_emit_allocate_stack): Likewise.
25909         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
25910         (output_toc): Change 1 to INSERT in function call.
25911         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
25912         (rs6000_initialize_trampoline): Likewise.
25913         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
25914         function call.
25915         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
25916         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
25917         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
25918         (save_gprs): Use add_reg_note.
25919         (s390_emit_prologue): Likewise.
25920         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25921         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
25922         (sparc_fold_builtin): Add cast to enum type.
25923         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
25924         enum insn_code.
25925         (spu_expand_prologue): Use add_reg_note.
25926         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
25927
25928 2009-04-20  Ian Lance Taylor  <iant@google.com>
25929
25930         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
25931         (c_parser_postfix_expression_after_primary): Get VEC for list of
25932         arguments.  Get original types of arguments.  Call
25933         build_function_call_vec.
25934         (cached_expr_list_1, cached_expr_list_2): New static variables.
25935         (c_parser_expr_list): Change return type to VEC *.  Add
25936         p_orig_types parameter.  Change all callers.
25937         (c_parser_release_expr): New static function.
25938         (c_parser_vec_to_tree_list): New static function.
25939         * c-typeck.c (build_function_call): Rewrite to build a VEC and
25940         call build_function_call_vec.
25941         (build_function_call_vec): New function, based on old
25942         build_function_call.
25943         (convert_arguments): Remove nargs and argarray parameters.  Change
25944         values to a VEC.  Add origtypes parameter.
25945         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
25946         (convert_for_assignment): Add origtype parameter.  Change all
25947         callers.  If warn_cxx_compat, check for conversion to an enum
25948         type when calling a function.
25949         (store_init_value): Add origtype parameter.  Change all callers.
25950         (digest_init): Likewise.
25951         (struct init_node): Add origtype field.
25952         (add_pending_init): Add origtype parameter.  Change all callers.
25953         (output_init_element): Likewise.
25954         (output_pending_init_elements): Pass origtype from init_node to
25955         output_init_element.
25956         (process_init_element): Pass origtype from c_expr to
25957         output_init_element.
25958         (c_finish_return): Add origtype parameter.  Change all callers.
25959         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
25960         caller.
25961         (sync_resolve_params): Likewise.
25962         (sync_resolve_return): Change params to first_param.  Change caller.
25963         (resolve_overloaded_builtins): Change params to VEC *.  Change
25964         callers.  Save first parameter around call to build_function_call_vec.
25965         * c-decl.c (finish_decl): Add origtype parameter.  Change all
25966         callers.  Call build_function_call_vec rather than
25967         build_function_call for cleanup.
25968         * c-tree.h: Update declarations.
25969         * c-common.h: Update declarations.
25970         * stub-objc.c (objc_rewrite_function_call): Change parameter from
25971         params to first_param.
25972         * target.h (struct gcc_target): Change resolve_overloaded_builtin
25973         params parameter from tree to void *.
25974         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25975         Change arglist parameter to have type void *, and to be a pointer
25976         to a VEC.
25977         * config/rs6000/rs6000-protos.h
25978         (altivec_resolve_overloaded_builtin): Update declaration.
25979         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
25980         fnargs parameter to have type void *, and to be a pointer to a
25981         VEC.  Call build_function_call_vec instead of
25982         build_function_call.
25983         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
25984
25985 2009-04-20  Joey Ye  <joey.ye@intel.com>
25986             Xuepeng Guo  <xuepeng.guo@intel.com>
25987             H.J. Lu  <hongjiu.lu@intel.com>
25988
25989         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
25990
25991         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
25992         (IX86_LEA_PRIORITY): Likewise.
25993         (distance_non_agu_define): New function.
25994         (distance_agu_use): Likewise.
25995         (ix86_lea_for_add_ok): Likewise.
25996         (ix86_dep_by_shift_count): Likewise.
25997
25998         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
25999         should split for LEA.
26000
26001         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
26002         function.
26003         (ix86_dep_by_shift_count): Likewise.
26004
26005 2009-04-20  Richard Guenther  <rguenther@suse.de>
26006
26007         * expr.c (handled_component_p): Move ...
26008         * tree.h (handled_component_p): ... here.
26009         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
26010         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
26011         and REALPART_EXPR to be in one group.
26012
26013 2009-04-20  Richard Guenther  <rguenther@suse.de>
26014
26015         * basic-block.h (get_all_dominated_blocks): Declare.
26016         * dominance.c (get_all_dominated_blocks): New function.
26017         * tree-cfg.c (get_all_dominated_blocks): Remove.
26018         (remove_edge_and_dominated_blocks): Adjust.
26019         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
26020         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
26021         instead of recursing.
26022
26023 2009-04-20  Doug Kwan  <dougkwan@google.com>
26024
26025         * cgraph.h (cgraph_node_ptr): New type for vector functions.
26026         (struct cgraph_node_set_def): New type.
26027         (cgraph_node_set) New type. Also declare vector functions.
26028         (struct cgraph_node_set_element_def): New type.
26029         (cgraph_node_set_element): Ditto.
26030         (cgraph_node_set_iterator): New iterator type.
26031         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
26032         cgraph_node_set_remove, dump_cgraph_node_set,
26033         debug_cgraph_node_set): New prototypes.
26034         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
26035         cgraph_node_set_size): New inlines.
26036         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
26037         including cgraph.h.
26038         (struct ipa_opt_pass): Add struct cgraph_node_set_def
26039         argument to function 'write_summary'.
26040         * ipa.c: Include ggc.h.
26041         (hash_cgraph_node_set_element,
26042         eq_cgraph_node_set_element, cgraph_node_set_new,
26043         cgraph_node_set_add, cgraph_node_set_remove,
26044         cgraph_node_set_find, dump_cgraph_node_set,
26045         debug_cgraph_node_set): New functions.
26046         * Makefile.in (ipa.o): Add dependency on GGC_H.
26047
26048 2009-04-20  Ira Rosen  <irar@il.ibm.com>
26049
26050         PR tree-optimization/39675
26051         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
26052         check of the return code of vect_schedule_slp. Check that
26053         stmt_vec_info still exists for the statement, before checking its
26054         vectorization type.
26055
26056 2009-04-20  Michael Matz  <matz@suse.de>
26057
26058         * Makefile.in (generated_files): Take out $(simple_generated_c).
26059
26060 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
26061
26062         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
26063         (UINTPTR_TYPE):  Likewise.
26064
26065 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26066
26067         PR c/37481
26068         * c-typeck.c (digest_init): Check for initializing an array with a
26069         string literal.
26070
26071 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26072
26073         PR c/19771
26074         * c-semantics.c (pop_stmt_list): Propagate
26075         STATEMENT_LIST_HAS_LABEL to parent statement list.
26076
26077 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
26078
26079         * config/mips/mips.h (mips_tune_attr): New macro.
26080         * config/mips/mips.md (cpu): Use it.
26081
26082 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26083
26084         PR c/38243
26085         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
26086         declaring a tag.
26087
26088 2009-04-19  Diego Novillo  <dnovillo@google.com>
26089
26090         * toplev.c (compile_file): Move call to coverage_finish ...
26091         * cgraphunit.c (ipa_passes): ... here.
26092         Call cgraph_process_new_functions.
26093         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
26094         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
26095
26096 2009-04-19  Jan Hubicka  <jh@suse.cz>
26097
26098         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
26099         cfun.
26100         (dump_cgraph_node): Dump can throw external flag.
26101         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
26102
26103 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26104
26105         PR c/32061
26106         PR c++/36954
26107         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
26108         * common.opt (Wlogical-op): Move from here...
26109         * c.opt (Wlogical-op): ... to here.
26110         * c-typeck.c (parser_build_binary_op): Update call to
26111         warn_logical_operator.
26112         * c-opts.c (c_common_post_options): Enable warn_logical_op with
26113         extra_warnings.
26114         * c-common.c (warn_logical_op): Update.
26115         * c-common.h (warn_logical_op): Update declaration.
26116
26117 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
26118
26119         * tree.c (protected_set_expr_location): Fix formatting.
26120
26121 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26122
26123         PR c/27676
26124         * c-typeck.c (readonly_warning): new.
26125         (build_unary_op, build_modify_expr): Use readonly_warning for
26126         storing into something readonly but not const-qualified.
26127
26128 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26129
26130         PR c/22367
26131         * c-typeck.c (build_unary_op): Check for taking address of
26132         expression of type void.
26133
26134 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26135
26136         PR c/35210
26137         * c-typeck.c (build_function_call): Check for calling a function
26138         with qualified void return types.  Call require_complete_type when
26139         generating a trap.
26140
26141 2009-04-18  Jan Hubicka  <jh@suse.cz>
26142
26143         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
26144         Set nothrow flag.
26145         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
26146         can_throw_external flag.
26147         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
26148         * ipa-pure-const.c (ignore_edge): New function.
26149         (propagate): Compute order for NOTHROW computation; set NOTHROWs
26150         only over can_throw_external edges.
26151         (local_pure_const): Add nothrow flag.
26152         * ipa-utils.c (searchc): Add ignore_edge callback.
26153         (ipa_utils_reduced_inorder): Add ignore_edge callback.
26154         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
26155         (set_nothrow_function_flags): Update cgraph.
26156         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
26157
26158 2009-04-18  Richard Guenther  <rguenther@suse.de>
26159
26160         PR middle-end/39804
26161         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
26162         (fold_stmt): ... this and ...
26163         (fold_stmt_inplace): ... this.
26164         (fold_stmt_1): Fold references in calls and asms.
26165         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
26166
26167 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26168
26169         * tree-vrp.c (ssa_name_nonzero_p): Remove.
26170         * tree.h: Remove the prototype for ssa_name_nonzero_p.
26171
26172 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26173
26174         * tree.c (function_args_count): Remove.
26175         * tree.h: Remove the prototype for function_args_count.
26176
26177 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26178
26179         * tree-iterator.c (expr_only): Remove.
26180         * tree.h: Remove the prototype for expr_only.
26181
26182 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26183
26184         * reginfo.c (cannot_change_mode_set_regs): Remove.
26185         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
26186
26187 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
26188
26189         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
26190         whether operands 0 and 1 overlaps.
26191
26192 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26193
26194         PR middle-end/36902
26195         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
26196         pointer. Use warning_at instead of warning.
26197         (search_for_addr_array): Likewise.
26198         (check_array_bounds): Likewise.
26199         (check_all_array_refs): Check that the incoming edge is not in the
26200         list of edges to be removed.
26201         (check_all_array_refs): Avoid the temporal pointer.
26202         (vrp_visit_cond_stmt): Fix typo.
26203         (simplify_switch_using_ranges): Handle the case where the switch
26204         index is an integer constant.
26205
26206 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
26207
26208         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
26209
26210 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26211
26212         * doc/extend.texi, doc/invoke.texi: Fix typos.
26213
26214 2009-04-17  Cary Coutant  <ccoutant@google.com>
26215
26216         * tree-flow-inline.h (get_lineno): Fix inverted test.
26217
26218 2009-04-17  Diego Novillo  <dnovillo@google.com>
26219
26220         * tree-ssa-pre.c (create_expression_by_pieces): Remove
26221         assertion for AVAIL_OUT.
26222
26223 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
26224
26225         PR target/38627
26226         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
26227         * config/sh/linux-atomic.asm: Likewise.
26228
26229 2009-04-17  Diego Novillo  <dnovillo@google.com>
26230
26231         * except.c (debug_eh_tree): New.
26232         (struct eh_region, struct eh_status): Move ...
26233         * except.h: ... here.
26234         (add_type_for_runtime): Declare extern.
26235         (lookup_type_for_runtime): Likewise.
26236         (debug_eh_tree): Declare.
26237         * Makefile.in (GTFILES): List except.h before except.c
26238
26239 2009-04-17  Diego Novillo  <dnovillo@google.com>
26240
26241         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
26242         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
26243         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
26244         (find_vars_r): ... here.
26245         * tree-flow.h (find_referenced_vars_in): Declare.
26246         * tree-ssa-pre.c (create_expression_by_pieces): Assert
26247         that AVAIL_OUT exists for BLOCK.
26248         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
26249         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
26250         (tree-parloops.o): Likewise.
26251
26252 2009-04-17  Simon Baldwin  <simonb@google.com>
26253
26254         * toplev.c (default_tree_printer): Add handling for %E format.
26255
26256 2009-04-17  Diego Novillo  <dnovillo@google.com>
26257
26258         * tree-pretty-print.c (dump_generic_node): Add break after
26259         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
26260         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
26261         FUNCTION_TYPE together.  Call print_struct_decl when printing
26262         structures and TDF_SLIM is not given.
26263         (print_struct_decl): Fix logic for detecting recursion.
26264
26265 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26266
26267         PR 31567
26268         * gcc.c (create_at_file): New.
26269         (compile_input_file_p): New.
26270         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
26271         * main.c (main): Update call to toplev_main.
26272         * toplev.c (toplev_main): Change signature. Call expandargv.
26273         * toplev.h (toplev_main): Change signature.
26274
26275 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26276
26277         * dwarf2out.c (field_byte_offset): Use the type size as the field size
26278         if the latter is not constant.
26279
26280 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
26281
26282         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
26283
26284 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26285
26286         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
26287         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
26288
26289 2009-04-17  Richard Guenther  <rguenther@suse.de>
26290
26291         * tree-ssa-structalias.c (get_constraint_for_component_ref):
26292         Handle component references view-converting an invariant address.
26293
26294 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
26295
26296         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
26297         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
26298         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
26299         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
26300         Use @deftypevr rather than @deftypevar.
26301
26302 2009-04-17  Richard Guenther  <rguenther@suse.de>
26303
26304         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
26305         (get_prop_source_stmt): Likewise.
26306         (can_propagate_from): Likewise.
26307
26308 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
26309
26310         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
26311         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
26312         (--with-multilib-list): Add default value.
26313         * configure: Regenerate.
26314         * Makefile.in (TM_ENDIAN_CONFIG): Define.
26315         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
26316         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
26317         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
26318         Don't add default cpu to multilib list unnecessarily, but do enable
26319         the relevant compiler option..
26320         Add support for --with-multilib-list=<blank> and
26321         --with-multilib-list=!<somelib> to supress unwanted multilibs.
26322         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
26323         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
26324         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
26325         TM_MULTILIB_CONFIG.
26326         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
26327         (MULTILIB_OSDIRNAMES): New variable.
26328         * config/sh/t-1e: Delete file.
26329         * config/sh/t-mlib-sh1: Delete file.
26330         * config/sh/t-mlib-sh2: Delete file.
26331         * config/sh/t-mlib-sh2a: Delete file.
26332         * config/sh/t-mlib-sh2a-nofpu: Delete file.
26333         * config/sh/t-mlib-sh2a-single: Delete file.
26334         * config/sh/t-mlib-sh2a-single-only: Delete file.
26335         * config/sh/t-mlib-sh2e: Delete file.
26336         * config/sh/t-mlib-sh3e: Delete file.
26337         * config/sh/t-mlib-sh4: Delete file.
26338         * config/sh/t-mlib-sh4-nofpu: Delete file.
26339         * config/sh/t-mlib-sh4-single: Delete file.
26340         * config/sh/t-mlib-sh4-single-only: Delete file.
26341         * config/sh/t-mlib-sh4a: Delete file.
26342         * config/sh/t-mlib-sh4a-nofpu: Delete file.
26343         * config/sh/t-mlib-sh4a-single: Delete file.
26344         * config/sh/t-mlib-sh4a-single-only: Delete file.
26345         * config/sh/t-mlib-sh4al: Delete file.
26346         * config/sh/t-mlib-sh5-32media: Delete file.
26347         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
26348         * config/sh/t-mlib-sh5-64media: Delete file.
26349         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
26350         * config/sh/t-mlib-sh5-compact: Delete file.
26351         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
26352         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
26353         * doc/install.texi (Options specification): Add
26354         --with-multilib-list and --with-endian.
26355
26356 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26357
26358         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
26359         REVISION_c.
26360         (OBJS-common): Add plugin-version.o.
26361         (plugin-version.o): New.
26362         * gcc-plugin.h (plugin_gcc_version): New.
26363         (plugin_default_version_check): New.
26364         (plugin_init_func, plugin_init): Add version argument.
26365         * plugin-version.c: New.
26366         * plugin.c (str_plugin_gcc_version_name): New.
26367         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
26368         pass it to the init function.
26369         (plugin_default_version_check): New.
26370
26371 2009-04-17  Richard Guenther  <rguenther@suse.de>
26372
26373         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
26374         for decl-vs-decl disambiguation.
26375
26376 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26377
26378         * config/s390/s390.h (s390_tune_attr): New macro definition.
26379         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
26380
26381 2009-04-17  Richard Guenther  <rguenther@suse.de>
26382
26383         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
26384         (fold_stmt_r): Likewise.
26385         (maybe_fold_reference): New function.
26386         (fold_gimple_assign): Handle cases fold_stmt_r did.
26387         (fold_stmt): Do not use fold_stmt_r.
26388         (fold_stmt_inplace): Likewise.
26389
26390 2009-04-17  Richard Guenther  <rguenther@suse.de>
26391
26392         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
26393         (record_equivalences_from_stmt): Remove useless checks and
26394         simplifications.
26395         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
26396         the type is already suitable.
26397
26398 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
26399
26400         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
26401
26402 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
26403
26404         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
26405         (CMPtype): Define as __gcc_CMPtype.
26406
26407 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
26408
26409         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
26410         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
26411
26412 2009-04-17  Richard Guenther  <rguenther@suse.de>
26413
26414         PR tree-optimization/39746
26415         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
26416         special-casing for builtins and static variable use/def.
26417         (call_may_clobber_ref_p_1): Likewise.
26418
26419 2009-04-16  Ian Lance Taylor  <iant@google.com>
26420
26421         * df.h: Include "timevar.h".
26422         (struct df_problem): Change tv_id field to timevar_id_t.
26423         * tree-pass.h: Include "timevar.h".
26424         (struct opt_pass): Change tv_id field to timevar_id_t.
26425         * timevar.h (timevar_id_t): Define TV_NONE.
26426         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
26427         TV_NONE rather than tv_id != 0.
26428         (execute_one_pass): Likewise.
26429         * Makefile.in (DF_H): Add $(TIMEVAR_H).
26430         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
26431         dependencies to $(TREE_PASS_H).
26432         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
26433         to TV_NONE.
26434         (pass_branch_target_load_optimize2): Likewise.
26435         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
26436         (pass_outof_cfg_layout_mode): Likewise.
26437         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
26438         (pass_rebuild_cgraph_edges): Likewise.
26439         (pass_remove_cgraph_callee_edges): Likewise.
26440         * df-core.c (pass_df_initialize_opt): Likewise.
26441         (pass_df_initialize_no_opt): Likewise.
26442         (pass_df_finish): Likewise.
26443         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
26444         * except.c (pass_set_nothrow_function_flags): Likewise.
26445         (pass_convert_to_eh_region_ranges): Likewise.
26446         * final.c (pass_compute_alignments): Likewise.
26447         * function.c (pass_instantiate_virtual_regs): Likewise.
26448         (pass_init_function): Likewise.
26449         (pass_leaf_regs): Likewise.
26450         (pass_match_asm_constraints): Likewise.
26451         * gimple-low.c (pass_lower_cf): Likewise.
26452         (pass_mark_used_blocks): Likewise.
26453         * init-regs.c (pass_initialize_regs): Likewise.
26454         * integrate.c (pass_initial_value_sets): Likewise.
26455         * ira.c (pass_ira): Likewise.
26456         * jump.c (pass_cleanup_barriers): Likewise.
26457         * omp-low.c (pass_expand_omp): Likewise.
26458         (pass_lower_omp): Likewise.
26459         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
26460         * recog.c (pass_split_all_insns): Likewise.
26461         (pass_split_after_reload): Likewise.
26462         (pass_split_before_regstack): Likewise.
26463         (pass_split_before_sched2): Likewise.
26464         (pass_split_for_shorten_branches): Likewise.
26465         * reginfo.c (pass_reginfo_init): Likewise.
26466         (pass_subregs_of_mode_init): Likewise.
26467         (pass_subregs_of_mode_finish): Likewise.
26468         * passes.c (pass_postreload): Likewise.
26469         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
26470         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
26471         (pass_warn_function_return): Likewise.
26472         (pass_warn_function_noreturn): Likewise.
26473         * tree-complex.c (pass_lower_complex): Likewise.
26474         (pass_lower_complex_O0): Likewise.
26475         * tree-if-conv.c (pass_if_conversion): Likewise.
26476         * tree-into-ssa.c (pass_build_ssa): Likewise.
26477         * tree-mudflap.c (pass_mudflap_1): Likewise.
26478         (pass_mudflap_2): Likewise.
26479         * tree-nomudflap.c (pass_mudflap_1): Likewise.
26480         (pass_mudflap_2): Likewise.
26481         * tree-nrv.c (pass_return_slot): Likewise.
26482         * tree-object-size.c (pass_object_sizes): Likewise.
26483         * tree-optimize.c (pass_all_optimizations): Likewise.
26484         (pass_early_local_passes): Likewise.
26485         (pass_all_early_optimizations): Likewise.
26486         (pass_cleanup_cfg): Likewise.
26487         (pass_cleanup_cfg_post_optimizing): Likewise.
26488         (pass_free_datastructures): Likewise.
26489         (pass_free_cfg_annotations): Likewise.
26490         (pass_fixup_cfg): Likewise.
26491         (pass_init_datastructures): Likewise.
26492         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
26493         (pass_late_warn_uninitialized): Likewise.
26494         (pass_update_address_taken): Likewise.
26495         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
26496         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
26497         (pass_cse_sincos): Likewise.
26498         (pass_convert_to_rsqrt): Likewise.
26499         * tree-ssa-structalias.c (pass_build_alias): Likewise.
26500         * tree-stdarg.c (pass_stdarg): Likewise.
26501         * tree-tailcall.c (pass_tail_recursion): Likewise.
26502         (pass_tail_calls): Likewise.
26503         * tree-vect-generic.c (pass_lower_vector): Likewise.
26504         (pass_lower_vector_ssa): Likewise.
26505         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
26506
26507 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
26508
26509         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
26510         XLR entry.
26511         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
26512         Handle -march=xlr.
26513         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
26514         logical and signext.
26515
26516 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
26517
26518         PR target/39767
26519         * config/sh/predicates.md (arith_operand): Check if the operand
26520         of TRUNCATE is a REG.
26521
26522 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26523
26524         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
26525         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
26526
26527 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26528
26529         * tree-iterator.c (tsi_split_statement_list_after,
26530         tsi_split_statement_list_before): Remove.
26531         * tree-iterator.h: Remove the prototypes for
26532         tsi_split_statement_list_after and tsi_split_statement_list_before.
26533
26534 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26535
26536         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
26537         * tree-ssa-propagate.h: Remove the prototype for
26538         stmt_makes_single_load.
26539
26540 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26541
26542         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
26543         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
26544
26545 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26546
26547         * tree-iterator.c (EXPR_LAST_BODY): Remove.
26548
26549 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26550
26551         * except.c (eh_region_outer_p): Remove.
26552         * except.h: Remove the prototype for eh_region_outer_p.
26553
26554 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26555
26556         * function.c (current_function_assembler_name): Remove.
26557         * function.h: Remove the prototype for
26558         current_function_assembler_name.
26559
26560 2009-04-16  Ian Lance Taylor  <iant@google.com>
26561
26562         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
26563         (add_reg_note): Call alloc_reg_note.
26564         * rtl.h (alloc_reg_note): Declare.
26565         * combine.c (try_combine): Use alloc_reg_note.
26566         (recog_for_combine, move_deaths): Likewise.
26567         (distribute_notes): Use alloc_reg_note and add_reg_note.
26568         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
26569         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
26570         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
26571
26572 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
26573
26574         PR rtl-optimization/39762
26575         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
26576         ira_may_move_out_cost): Add comments about way of their usage.
26577         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
26578
26579         * ira-conflicts.c (process_regs_for_copy): Use function
26580         ira_get_register_move_cost instead of global
26581         ira_register_move_cost.
26582
26583         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
26584         color_pass, move_spill_restore, update_curr_costs): Ditto.
26585
26586         * ira-lives.c (process_single_reg_class_operands): Ditto.
26587
26588         * ira-emit.c (emit_move_list): Ditto.
26589
26590         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
26591         (record_reg_classes): Ditto.  Use functions
26592         ira_get_register_move_cost and ira_get_may_move_cost instead of
26593         global vars ira_register_move_cost, ira_may_move_out_cost and
26594         ira_may_move_in_cost.
26595         (record_address_regs): Don't call ira_init_register_move_cost.
26596         Use function ira_get_may_move_cost instead of global
26597         ira_may_move_in_cost.
26598         (process_bb_node_for_hard_reg_moves): Use function
26599         ira_get_register_move_cost instead of global ira_register_move_cost.
26600         (ira_costs): Don't call ira_init_register_move_cost.
26601
26602 2009-04-16  Richard Guenther  <rguenther@suse.de>
26603
26604         * tree-cfg.c (verify_gimple_assign_binary):
26605         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
26606         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
26607         (create_general_new_stmt): Note that this function is broken.
26608
26609 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26610
26611         * common.opt (fhelp): Add Var(help_flag).
26612         * gcc-plugin.h (plugin_info): Add help.
26613         * plugin.c (plugin_name_args): Add help.
26614         (register_plugin_info): Set plugin->help.
26615         (print_help_one_plugin): New.
26616         (print_plugins_help): New.
26617         * plugin.h (print_plugins_help): New.
26618         * toplev.c (toplev_main): Call print_plugins_help if needed.
26619
26620 2009-04-16  Richard Guenther  <rguenther@suse.de>
26621
26622         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
26623         (gimple_ior_addresses_taken_1): New function.
26624         (gimple_ior_addresses_taken): Likewise.
26625         * gimple.h (struct gimple_statement_with_ops_base): Remove
26626         addresses_taken member.
26627         (gimple_ior_addresses_taken): Declare.
26628         (gimple_addresses_taken, gimple_addresses_taken_ptr,
26629         gimple_set_addresses_taken): Remove.
26630         * ipa-reference.c (mark_address): New function.
26631         (scan_stmt_for_static_refs): Use it for marking addresses taken.
26632         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
26633         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
26634         (gimple_add_to_addresses_taken): Remove.
26635         (get_tmr_operands): Call mark_address_taken.
26636         (get_asm_expr_operands): Likewise.
26637         (get_expr_operands): Likewise.
26638         (build_ssa_operands): Do not clear the addresses_taken bitmap.
26639         (free_stmt_operands): Do not free it.
26640         * tree-ssa.c (delete_tree_ssa): Likewise.
26641         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
26642
26643 2009-04-16  Richard Guenther  <rguenther@suse.de>
26644
26645         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
26646         (walk_stmt_load_store_ops): Likewise.
26647         * gimple.c (get_base_loadstore): New function.
26648         (walk_stmt_load_store_addr_ops): Likewise.
26649         (walk_stmt_load_store_ops): Likewise.
26650         * ipa-pure-const.c (check_op): Simplify.
26651         (check_load, check_store): New functions.
26652         (check_stmt): Use walk_stmt_load_store_ops.
26653         * ipa-reference.c (mark_load): Adjust signature.
26654         (mark_store): Likewise.
26655         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
26656
26657 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26658
26659         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
26660         (plugin_info): New.
26661         * opts.c (common_handle_option): Don't call print_version.
26662         * plugin.c (plugin_name_args): Add version.
26663         (register_plugin_info): New.
26664         (register_callback): Handle PLUGIN_INFO.
26665         (try_init_one_plugin): New.
26666         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
26667         if failed to init.
26668         (finalize_one_plugin): New.
26669         (finalize_plugins): New.
26670         (print_one_plugin): New.
26671         (print_plugins_versions): New.
26672         * plugin.h (print_plugins_versions): New.
26673         (finalize_plugins): New.
26674         * toplev.c (compile_file): Don't call initialize_plugins.
26675         (print_version): Call print_plugins_versions.
26676         (toplev_main): Call initialize_plugins. Print version if needed.
26677         Call finalize_plugins.
26678
26679 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26680
26681         * common.opt (fversion): New.
26682         * gcc.c (print_version): New.
26683         (process_command): Don't print the version. Just set print_version.
26684         (main): Print version. Call subprocesses if print_version and
26685         verbose_flag are set.
26686         * opts.c (common_handle_option): Handle OPT_fversion.
26687
26688 2009-04-16  Richard Guenther  <rguenther@suse.de>
26689             Ira Rosen  <irar@il.ibm.com>
26690
26691         PR tree-optimization/39698
26692         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
26693         type of the reduction variable.  Only generate the def if
26694         it is needed.
26695
26696         * omp-low.c (expand_omp_for_generic): When converting to a pointer
26697         make sure to first convert to an integer of the same precision.
26698         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
26699         the type of the evolution correctly in computing the new
26700         induction variable base.
26701
26702 2009-04-16  Richard Guenther  <rguenther@suse.de>
26703
26704         PR middle-end/39625
26705         * tree-cfg.c (make_blocks): Split statements with to-be
26706         abnormal SSA names on the lhs.
26707
26708 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
26709
26710         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
26711         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
26712         * c-typeck.c (really_start_incremental_init): Likewise.
26713         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
26714         (TARGET_INITIALIZER): Remove it.
26715         * target.h (struct target): Remove vector_opaque_p.
26716         * tree.c (build_opaque_vector_type): New.
26717         * tree.h (TYPE_VECTOR_OPAQUE): New.
26718         (build_opaque_vector_type): Declare.
26719         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
26720         * config/rs6000/rs6000.c (build_opaque_vector_type,
26721         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
26722         (rs6000_init_builtins): Use build_opaque_vector_type for
26723         opaque_V4SI_type_node.
26724
26725 2009-04-15  Catherine Moore  <clm@codesourcery.com>
26726
26727         * debug.h (set_name):  Declare.
26728         * dwarf2out.c (dwarf2out_set_name): Declare.
26729         (dwarf2_debug_hooks): Add set_name.
26730         (find_AT_string): New.
26731         (add_AT_string): Call find_AT_string.
26732         (dwarf2out_set_name): New.
26733         * cp/decl.c (grokdeclarator): Call set_name.
26734         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
26735         * debug.c (do_nothing_debug_hooks):  Likewise.
26736         * dbxout.c (dbx_debug_hooks): Likewise.
26737         * sdbout.c (sdb_debug_hooks): Likewise.
26738
26739 2009-04-15  Michael Eager  <eager@eagercon.com>
26740
26741         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
26742         reg for single-precision FPU.
26743         * config/rs6000/rs6000.md (movsi_internal1): Only for
26744         !TARGET_SINGLE_FPU.
26745         (movsi_internal1_single): New. Add pattern to move SI values to/from
26746         single-precision FP regs.
26747
26748 2009-04-15  Richard Guenther  <rguenther@suse.de>
26749
26750         * omp-low.c (lower_rec_input_clauses): Build correct address
26751         expressions.
26752         (expand_omp_for_generic): Fix multiplication type.
26753         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
26754         (generate_memset_zero): Fix types.
26755         * tree-profile.c (prepare_instrumented_value): Correctly
26756         widen a pointer.
26757
26758 2009-04-15  Ian Lance Taylor  <iant@google.com>
26759
26760         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
26761         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
26762         for -Wall and for -Wc++-compat.
26763         (c_common_post_options): For C++, set warn_enum_compare if not
26764         already set.
26765         * c-tree.h (struct c_expr): Add field original_type.
26766         (build_external_ref): Update declaration.
26767         * c-parser.c (c_parser_braced_init): Set original_type.
26768         (c_parser_initelt): Likewise.
26769         (c_parser_expr_no_commas): Likewise.
26770         (c_parser_conditional_expression): Likewise.
26771         (c_parser_cast_expression): Likewise.
26772         (c_parser_unary_expression): Likewise.  Pull setting of
26773         original_code to top of function.
26774         (c_parser_sizeof_expression): Set original_type.
26775         (c_parser_alignof_expression): Likewise.
26776         (c_parser_postfix_expression): Likewise.  Pull setting of
26777         original_code to top of function.
26778         (c_parser_postfix_expression_after_paren_type): Set original_type.
26779         (c_parser_postfix_expression_after_primary): Likewise.
26780         (c_parser_expression): Likewise.
26781         * c-typeck.c (build_external_ref): Add type parameter.  Change all
26782         callers.
26783         (c_expr_sizeof_expr): Set original_type field.
26784         (parser_build_unary_op): Likewise.
26785         (parser_build_binary_op): Likewise.  Optionally warn about
26786         comparisons of enums of different types.
26787         (digest_init): Set original_type field.
26788         (really_start_incremental_init): Likewise.
26789         (push_init_level, pop_init_level): Likewise.
26790         * doc/invoke.texi (Warning Options): -Wenum-compare now
26791         supported in C.
26792
26793 2009-04-15  Richard Guenther  <rguenther@suse.de>
26794
26795         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
26796         out a necessary conversion.
26797         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
26798         names we didn't value number.
26799         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
26800
26801 2009-04-15  Richard Guenther  <rguenther@suse.de>
26802
26803         PR tree-optimization/39764
26804         * tree-ssa-ccp.c (get_value): Canonicalize value with
26805         canonicalize_float_value.
26806
26807 2009-04-15  Jan Hubicka  <jh@suse.cz>
26808
26809         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
26810         Wrong version of patch.
26811
26812 2009-04-15  Jan Hubicka  <jh@suse.cz>
26813
26814         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
26815
26816 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
26817
26818         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
26819         our distinct integral and vector types.
26820
26821 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
26822
26823         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
26824         * init.c (build_vtbl_address): Remove call to assemble_external.
26825
26826 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
26827
26828         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
26829         output for other floating point modes.
26830
26831 2009-04-14  Diego Novillo  <dnovillo@google.com>
26832
26833         * diagnostic.c (diagnostic_report_diagnostic): Do not
26834         warn about loaded plugins for DK_ERROR and DK_WARNING.
26835         * c-decl.c (declspecs_add_type): Move call to
26836         invoke_plugin_callbacks ...
26837         * c-parser.c (c_parser_declspecs): ... here.
26838         * plugin.c (dump_active_plugins): Tidy output.
26839
26840 2009-04-14  Diego Novillo  <dnovillo@google.com>
26841             Le-Chun Wu  <lcwu@google.com>
26842
26843         * configure.ac: Add --enable-plugin support.
26844         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
26845         * Makefile.in (PLUGIN_H): Define.
26846         Export ENABLE_PLUGIN and GMPINC to site.exp.
26847         Add PLUGINLIBS to link command.
26848         Add/modify dependencies for plugin.o and files including plugin.h.
26849         (plugin.o): New.
26850         * config.in: Regenerate.
26851
26852         * opts.c (common_handle_option): Handle OPT_fplugin_ and
26853         OPT_fplugin_arg_.
26854
26855 2009-04-14  Le-Chun Wu  <lcwu@google.com>
26856
26857         * tree-pass.h (register_one_dump_file): Add a prototype for
26858         register_one_dump_file.
26859         * toplev.c (compile_file): Call initialize_plugins.
26860         (do_compile): Call invoke_plugin_callbacks.
26861         (toplev_main): Call invoke_plugin_callbacks.
26862         * common.opt: Add -fplugin= and -fplugin-arg-.
26863         * gcc-plugin.h: New public header file for plugins to include.
26864         * plugin.c: New source file.
26865         * plugin.h: New internal header file.
26866         * passes.c (register_one_dump_file): Make it external.
26867
26868         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
26869
26870 2009-04-14  Diego Novillo  <dnovillo@google.com>
26871
26872         * doc/plugins.texi: New.
26873         * doc/gccint.texi: Add reference to Plugins chapter.
26874         * doc/invoke.texi: Document -fplugin and -fplugin-arg
26875         * diagnostic.c (diagnostic_report_diagnostic): Warn about
26876         loaded plugins, if any.
26877         * timevar.def (TV_PLUGIN_INIT): Define.
26878         (TV_PLUGIN_RUN): Define.
26879         * plugin.c: Include timevar.h
26880         (plugins_active_p): New.
26881         (dump_active_plugins): New.
26882         (debug_active_plugins): New.
26883
26884 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
26885
26886         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
26887         library paths.
26888         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
26889
26890 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
26891
26892         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
26893         the same as a minus without a shift.
26894
26895 2009-04-14  Nick Clifton  <nickc@redhat.com>
26896
26897         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
26898         comparisons with small integers will always produce a short
26899         branch.
26900
26901 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
26902
26903         Merge:
26904         2008-12-19  Diego Novillo  <dnovillo@google.com>
26905
26906         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
26907
26908 2009-04-14  Richard Guenther  <rguenther@suse.de>
26909
26910         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
26911         verification.
26912         (verify_gimple_assign_binary): Likewise.  Handle shifts and
26913         rotates correctly.
26914         (verify_gimple_phi): Print the mismatched argument position.
26915         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
26916         Fix types.
26917         (vect_update_init_of_dr): Likewise.
26918         * matrix-reorg.c (transform_access_sites): Do what the
26919         comment suggests.
26920         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
26921
26922 2009-04-13  Michael Eager  <eager@eagercon.com>
26923
26924         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
26925         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
26926         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
26927         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
26928         remove duplicate config
26929
26930 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
26931
26932         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
26933         file_name:line_number type locator of the call site.
26934
26935 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
26936
26937         * genautomata.c: Put blank after comma.
26938         (automaton_decls): New.
26939         (struct unit_usage): Add comments to member next.
26940         (store_alt_unit_usage): Keep the list ordered.
26941         (unit_present_on_list_p, equal_alternatives_p): New.
26942         (check_regexp_units_distribution): Check units distribution
26943         correctness correctly.
26944         (main): Don't write automata if error is found.  Return correct
26945         exit code.
26946
26947         * config/m68k/cf.md (cfv4_ds): Remove.
26948         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
26949         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
26950
26951         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
26952         power4-load-ext, power4-store, power4-store-update,
26953         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
26954         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
26955         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
26956         power4-sqrt, power4-isync): Modify reservation to make correct
26957         unit distribution to automata.
26958
26959         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
26960         power5-store-update, power5-two, power5-three, power5-lmul,
26961         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
26962
26963 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
26964
26965         * except.c (pass_set_nothrow_function_flags): Set name and add
26966         TODO_dump_func.
26967         (set_nothrow_function_flags): Mention in the dump file when
26968         changing a function to nothrow.
26969
26970 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
26971
26972         PR/39066
26973         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
26974         instead of unsigned long.
26975
26976 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26977
26978         * config/arm/arm.c (return_used_this_function): Remove.
26979         (arm_output_function_prologue): Remove use of
26980         return_used_this_function.
26981         (output_return_instruction): Replace use of
26982         return_used_this_function
26983         by cfun->machine->return_used_this_function.
26984         (arm_output_epilogue): Likewise.
26985         (arm_output_function_epilogue): Likewise.
26986         (thumb_unexpanded_epilogue): Likewise.
26987         * config/arm/arm.h (struct machine_function):
26988         New member return_used_this_function.
26989
26990 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
26991
26992         * doc/install.texi: Correct description of default directory for
26993         --with-gxx-include-dir.
26994
26995 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
26996
26997         * fold-const.c (build_range_check): Properly deal with enumeral and
26998         boolean base types.
26999
27000 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
27001
27002         * doc/invoke.texi (max_gcse_passes): Remove documentation.
27003         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
27004         * params.h (MAX_GCSE_PASSES): Remove.
27005         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
27006         in sequence.  Remove ability to run multiple passes.
27007         (bypass_jumps): Report run as third CPROP pass.
27008
27009 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
27010
27011         PR middle-end/39651
27012         * except.c (can_throw_external): Look at each insn in a SEQUENCE
27013         when deciding whether the whole SEQUENCE can throw.
27014
27015 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
27016
27017         PR target/39740
27018         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
27019         offseted label references.
27020
27021 2009-04-11  Jan Hubicka  <jh@suse.cz>
27022
27023         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
27024
27025 2009-04-11  Richard Guenther  <rguenther@suse.de>
27026
27027         PR middle-end/39732
27028         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
27029         return variables as TREE_ADDRESSABLE.
27030
27031 2009-04-11  Richard Guenther  <rguenther@suse.de>
27032
27033         PR tree-optimization/39713
27034         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
27035         reference trees have SSA_NAME operands.
27036
27037 2009-04-11  Richard Guenther  <rguenther@suse.de>
27038
27039         PR c/39712
27040         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
27041         address expressions.
27042
27043 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
27044
27045         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
27046         match changes in Cygwin 1.7
27047         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27048         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
27049
27050 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27051
27052         PR tree-optimization/39701
27053         * doc/invoke.texi (Optimization Options): Document change in
27054         meaning and initialization of -fdelete-null-pointer-checks.
27055
27056 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27057
27058         PR middle-end/39701
27059         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
27060
27061         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
27062         here.
27063
27064         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
27065
27066 2009-04-10  Chao-ying Fu  <fu@mips.com>
27067
27068         * doc/tm.texi (Instruction Output): Document
27069         TARGET_ASM_FINAL_POSTSCAN_INSN.
27070         * target.h (final_postscan_insn): New field in asm_out.
27071         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27072         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
27073         * final.c (final_scan_insn): Call
27074         targetm.asm_out.final_postscan_insn after outputting
27075         an asm macro and a normal instruction.
27076
27077         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
27078         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
27079         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
27080         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
27081         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27082
27083 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27084
27085         PR middle-end/39701
27086         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
27087         variables as non-NULL even with -fdelete-null-pointer-checks.
27088
27089 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27090
27091         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
27092
27093 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
27094
27095         PR target/39678
27096         * config/i386/i386.c (classify_argument): Handle SCmode with
27097         (bit_offset % 64) != 0.
27098
27099 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
27100
27101         * doc/invoke.texi (Optimize Options): Add cross-reference to
27102         -Q --help=optimizers examples.
27103
27104 2009-04-10  Ben Elliston  <bje@au.ibm.com>
27105
27106         PR target/36800
27107         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
27108         regalign for the reg == fpr and TDmode case.
27109
27110 2009-04-09  David Ayers  <ayers@fsfe.org>
27111
27112         PR objc/29200
27113         * objc/objc-act.c (warn_with_method): Remove helper function.
27114         (check_duplicates): Call warning and inform directly.
27115         (really_start_method): Likewise.
27116
27117 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27118
27119         * expmed.c (expand_divmod): Always use a comparison for a division
27120         by a large unsigned integer.
27121
27122         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
27123         for things others than variables or functions as nonzero.
27124
27125 2009-04-09  Nick Clifton  <nickc@redhat.com>
27126
27127         * unwind-compat.c: Change copyright header to refer to version
27128         3 of the GNU General Public License with version 3.1 of the
27129         GCC Runtime Library Exception and to point readers at the
27130         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
27131         * config/alpha/crtfastmath.c: Likewise.
27132         * config/alpha/linux-unwind.h: Likewise.
27133         * config/alpha/qrnnd.asm: Likewise.
27134         * config/alpha/vms-crt0-64.c: Likewise.
27135         * config/alpha/vms-crt0.c: Likewise.
27136         * config/alpha/vms-dwarf2.asm: Likewise.
27137         * config/alpha/vms-dwarf2eh.asm: Likewise.
27138         * config/alpha/vms-psxcrt0-64.c: Likewise.
27139         * config/alpha/vms-psxcrt0.c: Likewise.
27140         * config/alpha/vms_tramp.asm: Likewise.
27141         * config/arc/initfini.c: Likewise.
27142         * config/arc/lib1funcs.asm: Likewise.
27143         * config/arm/bpabi-v6m.S: Likewise.
27144         * config/arm/bpabi.S: Likewise.
27145         * config/arm/bpabi.c: Likewise.
27146         * config/arm/crti.asm: Likewise.
27147         * config/arm/crtn.asm: Likewise.
27148         * config/arm/ieee754-df.S: Likewise.
27149         * config/arm/ieee754-sf.S: Likewise.
27150         * config/arm/lib1funcs.asm: Likewise.
27151         * config/arm/libunwind.S: Likewise.
27152         * config/arm/linux-atomic.c: Likewise.
27153         * config/arm/mmintrin.h: Likewise.
27154         * config/arm/pr-support.c: Likewise.
27155         * config/arm/unaligned-funcs.c: Likewise.
27156         * config/arm/unwind-arm.c: Likewise.
27157         * config/arm/unwind-arm.h: Likewise.
27158         * config/avr/libgcc.S: Likewise.
27159         * config/bfin/crti.s: Likewise.
27160         * config/bfin/crtlibid.s: Likewise.
27161         * config/bfin/crtn.s: Likewise.
27162         * config/bfin/lib1funcs.asm: Likewise.
27163         * config/bfin/linux-unwind.h: Likewise.
27164         * config/cris/arit.c: Likewise.
27165         * config/cris/cris_abi_symbol.c: Likewise.
27166         * config/darwin-64.c: Likewise.
27167         * config/darwin-crt2.c: Likewise.
27168         * config/darwin-crt3.c: Likewise.
27169         * config/darwin.h: Likewise.
27170         * config/dbxelf.h: Likewise.
27171         * config/dfp-bit.c: Likewise.
27172         * config/dfp-bit.h: Likewise.
27173         * config/elfos.h: Likewise.
27174         * config/fixed-bit.c: Likewise.
27175         * config/fixed-bit.h: Likewise.
27176         * config/fp-bit.c: Likewise.
27177         * config/fp-bit.h: Likewise.
27178         * config/fr30/crti.asm: Likewise.
27179         * config/fr30/crtn.asm: Likewise.
27180         * config/fr30/lib1funcs.asm: Likewise.
27181         * config/freebsd-spec.h: Likewise.
27182         * config/frv/cmovd.c: Likewise.
27183         * config/frv/cmovh.c: Likewise.
27184         * config/frv/cmovw.c: Likewise.
27185         * config/frv/frvbegin.c: Likewise.
27186         * config/frv/frvend.c: Likewise.
27187         * config/frv/lib1funcs.asm: Likewise.
27188         * config/glibc-stdint.h: Likewise.
27189         * config/h8300/clzhi2.c: Likewise.
27190         * config/h8300/crti.asm: Likewise.
27191         * config/h8300/crtn.asm: Likewise.
27192         * config/h8300/ctzhi2.c: Likewise.
27193         * config/h8300/fixunssfsi.c: Likewise.
27194         * config/h8300/lib1funcs.asm: Likewise.
27195         * config/h8300/parityhi2.c: Likewise.
27196         * config/h8300/popcounthi2.c: Likewise.
27197         * config/i386/ammintrin.h: Likewise.
27198         * config/i386/att.h: Likewise.
27199         * config/i386/avxintrin.h: Likewise.
27200         * config/i386/biarch64.h: Likewise.
27201         * config/i386/bmmintrin.h: Likewise.
27202         * config/i386/cpuid.h: Likewise.
27203         * config/i386/cross-stdarg.h: Likewise.
27204         * config/i386/crtfastmath.c: Likewise.
27205         * config/i386/crtprec.c: Likewise.
27206         * config/i386/cygming-crtbegin.c: Likewise.
27207         * config/i386/cygming-crtend.c: Likewise.
27208         * config/i386/cygwin.asm: Likewise.
27209         * config/i386/emmintrin.h: Likewise.
27210         * config/i386/gmm_malloc.h: Likewise.
27211         * config/i386/gthr-win32.c: Likewise.
27212         * config/i386/i386.h: Likewise.
27213         * config/i386/immintrin.h: Likewise.
27214         * config/i386/linux-unwind.h: Likewise.
27215         * config/i386/linux64.h: Likewise.
27216         * config/i386/mm3dnow.h: Likewise.
27217         * config/i386/mmintrin-common.h: Likewise.
27218         * config/i386/mmintrin.h: Likewise.
27219         * config/i386/nmmintrin.h: Likewise.
27220         * config/i386/pmm_malloc.h: Likewise.
27221         * config/i386/pmmintrin.h: Likewise.
27222         * config/i386/smmintrin.h: Likewise.
27223         * config/i386/sol2-c1.asm: Likewise.
27224         * config/i386/sol2-ci.asm: Likewise.
27225         * config/i386/sol2-cn.asm: Likewise.
27226         * config/i386/sol2-gc1.asm: Likewise.
27227         * config/i386/tmmintrin.h: Likewise.
27228         * config/i386/unix.h: Likewise.
27229         * config/i386/w32-unwind.h: Likewise.
27230         * config/i386/wmmintrin.h: Likewise.
27231         * config/i386/x86-64.h: Likewise.
27232         * config/i386/x86intrin.h: Likewise.
27233         * config/i386/xmmintrin.h: Likewise.
27234         * config/ia64/crtbegin.asm: Likewise.
27235         * config/ia64/crtend.asm: Likewise.
27236         * config/ia64/crtfastmath.c: Likewise.
27237         * config/ia64/crti.asm: Likewise.
27238         * config/ia64/crtn.asm: Likewise.
27239         * config/ia64/fde-glibc.c: Likewise.
27240         * config/ia64/lib1funcs.asm: Likewise.
27241         * config/ia64/linux-unwind.h: Likewise.
27242         * config/ia64/quadlib.c: Likewise.
27243         * config/ia64/unwind-ia64.c: Likewise.
27244         * config/linux.h: Likewise.
27245         * config/m32c/m32c-lib1.S: Likewise.
27246         * config/m32c/m32c-lib2-trapv.c: Likewise.
27247         * config/m32c/m32c-lib2.c: Likewise.
27248         * config/m32r/initfini.c: Likewise.
27249         * config/m68hc11/larith.asm: Likewise.
27250         * config/m68hc11/m68hc11-crt0.S: Likewise.
27251         * config/m68k/cf.md: Likewise.
27252         * config/m68k/crti.s: Likewise.
27253         * config/m68k/crtn.s: Likewise.
27254         * config/m68k/lb1sf68.asm: Likewise.
27255         * config/m68k/linux-unwind.h: Likewise.
27256         * config/mcore/crti.asm: Likewise.
27257         * config/mcore/crtn.asm: Likewise.
27258         * config/mcore/lib1.asm: Likewise.
27259         * config/mips/linux-unwind.h: Likewise.
27260         * config/mips/loongson.h: Likewise.
27261         * config/mips/mips16.S: Likewise.
27262         * config/mmix/crti.asm: Likewise.
27263         * config/mmix/crtn.asm: Likewise.
27264         * config/pa/fptr.c: Likewise.
27265         * config/pa/hpux-unwind.h: Likewise.
27266         * config/pa/lib2funcs.asm: Likewise.
27267         * config/pa/linux-atomic.c: Likewise.
27268         * config/pa/linux-unwind.h: Likewise.
27269         * config/pa/milli64.S: Likewise.
27270         * config/pa/quadlib.c: Likewise.
27271         * config/pa/stublib.c: Likewise.
27272         * config/picochip/libgccExtras/adddi3.asm: Likewise.
27273         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
27274         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
27275         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
27276         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
27277         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
27278         * config/picochip/libgccExtras/divmod15.asm: Likewise.
27279         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
27280         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
27281         * config/picochip/libgccExtras/longjmp.asm: Likewise.
27282         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
27283         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
27284         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
27285         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
27286         * config/picochip/libgccExtras/setjmp.asm: Likewise.
27287         * config/picochip/libgccExtras/subdi3.asm: Likewise.
27288         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
27289         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
27290         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
27291         * config/rs6000/750cl.h: Likewise.
27292         * config/rs6000/altivec.h: Likewise.
27293         * config/rs6000/biarch64.h: Likewise.
27294         * config/rs6000/crtresfpr.asm: Likewise.
27295         * config/rs6000/crtresgpr.asm: Likewise.
27296         * config/rs6000/crtresxfpr.asm: Likewise.
27297         * config/rs6000/crtresxgpr.asm: Likewise.
27298         * config/rs6000/crtsavfpr.asm: Likewise.
27299         * config/rs6000/crtsavgpr.asm: Likewise.
27300         * config/rs6000/darwin-asm.h: Likewise.
27301         * config/rs6000/darwin-fallback.c: Likewise.
27302         * config/rs6000/darwin-fpsave.asm: Likewise.
27303         * config/rs6000/darwin-ldouble.c: Likewise.
27304         * config/rs6000/darwin-tramp.asm: Likewise.
27305         * config/rs6000/darwin-unwind.h: Likewise.
27306         * config/rs6000/darwin-vecsave.asm: Likewise.
27307         * config/rs6000/darwin-world.asm: Likewise.
27308         * config/rs6000/e500crtres32gpr.asm: Likewise.
27309         * config/rs6000/e500crtres64gpr.asm: Likewise.
27310         * config/rs6000/e500crtres64gprctr.asm: Likewise.
27311         * config/rs6000/e500crtrest32gpr.asm: Likewise.
27312         * config/rs6000/e500crtrest64gpr.asm: Likewise.
27313         * config/rs6000/e500crtresx32gpr.asm: Likewise.
27314         * config/rs6000/e500crtresx64gpr.asm: Likewise.
27315         * config/rs6000/e500crtsav32gpr.asm: Likewise.
27316         * config/rs6000/e500crtsav64gpr.asm: Likewise.
27317         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
27318         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
27319         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
27320         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
27321         * config/rs6000/eabi-ci.asm: Likewise.
27322         * config/rs6000/eabi-cn.asm: Likewise.
27323         * config/rs6000/eabi.asm: Likewise.
27324         * config/rs6000/linux-unwind.h: Likewise.
27325         * config/rs6000/linux64.h: Likewise.
27326         * config/rs6000/paired.h: Likewise.
27327         * config/rs6000/paired.md: Likewise.
27328         * config/rs6000/ppc64-fp.c: Likewise.
27329         * config/rs6000/ppu_intrinsics.h: Likewise.
27330         * config/rs6000/rs6000.h: Likewise.
27331         * config/rs6000/si2vmx.h: Likewise.
27332         * config/rs6000/sol-ci.asm: Likewise.
27333         * config/rs6000/sol-cn.asm: Likewise.
27334         * config/rs6000/spe.h: Likewise.
27335         * config/rs6000/spu2vmx.h: Likewise.
27336         * config/rs6000/sysv4.h: Likewise.
27337         * config/rs6000/tramp.asm: Likewise.
27338         * config/rs6000/vec_types.h: Likewise.
27339         * config/s390/linux-unwind.h: Likewise.
27340         * config/s390/tpf-unwind.h: Likewise.
27341         * config/score/crti.asm: Likewise.
27342         * config/score/crtn.asm: Likewise.
27343         * config/sh/crt1.asm: Likewise.
27344         * config/sh/crti.asm: Likewise.
27345         * config/sh/crtn.asm: Likewise.
27346         * config/sh/divtab-sh4-300.c: Likewise.
27347         * config/sh/divtab-sh4.c: Likewise.
27348         * config/sh/divtab.c: Likewise.
27349         * config/sh/lib1funcs-4-300.asm: Likewise.
27350         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
27351         * config/sh/lib1funcs.asm: Likewise.
27352         * config/sh/lib1funcs.h: Likewise.
27353         * config/sh/linux-atomic.asm: Likewise.
27354         * config/sh/linux-unwind.h: Likewise.
27355         * config/sh/shmedia.h: Likewise.
27356         * config/sh/sshmedia.h: Likewise.
27357         * config/sh/ushmedia.h: Likewise.
27358         * config/sparc/crtfastmath.c: Likewise.
27359         * config/sparc/linux-unwind.h: Likewise.
27360         * config/sparc/sol2-c1.asm: Likewise.
27361         * config/sparc/sol2-ci.asm: Likewise.
27362         * config/sparc/sol2-cn.asm: Likewise.
27363         * config/spu/divmodti4.c: Likewise.
27364         * config/spu/divv2df3.c: Likewise.
27365         * config/spu/float_disf.c: Likewise.
27366         * config/spu/float_unsdidf.c: Likewise.
27367         * config/spu/float_unsdisf.c: Likewise.
27368         * config/spu/float_unssidf.c: Likewise.
27369         * config/spu/mfc_multi_tag_release.c: Likewise.
27370         * config/spu/mfc_multi_tag_reserve.c: Likewise.
27371         * config/spu/mfc_tag_release.c: Likewise.
27372         * config/spu/mfc_tag_reserve.c: Likewise.
27373         * config/spu/mfc_tag_table.c: Likewise.
27374         * config/spu/multi3.c: Likewise.
27375         * config/spu/spu_internals.h: Likewise.
27376         * config/spu/spu_intrinsics.h: Likewise.
27377         * config/spu/spu_mfcio.h: Likewise.
27378         * config/spu/vec_types.h: Likewise.
27379         * config/spu/vmx2spu.h: Likewise.
27380         * config/stormy16/stormy16-lib2.c: Likewise.
27381         * config/svr4.h: Likewise.
27382         * config/sync.c: Likewise.
27383         * config/v850/lib1funcs.asm: Likewise.
27384         * config/vxlib-tls.c: Likewise.
27385         * config/vxlib.c: Likewise.
27386         * config/vxworks-dummy.h: Likewise.
27387         * config/xtensa/crti.asm: Likewise.
27388         * config/xtensa/crtn.asm: Likewise.
27389         * config/xtensa/ieee754-df.S: Likewise.
27390         * config/xtensa/ieee754-sf.S: Likewise.
27391         * config/xtensa/lib1funcs.asm: Likewise.
27392         * config/xtensa/lib2funcs.S: Likewise.
27393         * config/xtensa/linux-unwind.h: Likewise.
27394         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
27395         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
27396         * coretypes.h: Likewise.
27397         * crtstuff.c: Likewise.
27398         * defaults.h: Likewise.
27399         * dwarf2.h: Likewise.
27400         * emutls.c: Likewise.
27401         * gbl-ctors.h: Likewise.
27402         * gcov-io.h: Likewise.
27403         * ginclude/float.h: Likewise.
27404         * ginclude/iso646.h: Likewise.
27405         * ginclude/stdarg.h: Likewise.
27406         * ginclude/stdbool.h: Likewise.
27407         * ginclude/stddef.h: Likewise.
27408         * ginclude/stdfix.h: Likewise.
27409         * ginclude/stdint-gcc.h: Likewise.
27410         * ginclude/tgmath.h: Likewise.
27411         * gthr-aix.h: Likewise.
27412         * gthr-dce.h: Likewise.
27413         * gthr-gnat.c: Likewise.
27414         * gthr-gnat.h: Likewise.
27415         * gthr-lynx.h: Likewise.
27416         * gthr-mipssde.h: Likewise.
27417         * gthr-nks.h: Likewise.
27418         * gthr-posix.c: Likewise.
27419         * gthr-posix.h: Likewise.
27420         * gthr-posix95.h: Likewise.
27421         * gthr-rtems.h: Likewise.
27422         * gthr-single.h: Likewise.
27423         * gthr-solaris.h: Likewise.
27424         * gthr-tpf.h: Likewise.
27425         * gthr-vxworks.h: Likewise.
27426         * gthr-win32.h: Likewise.
27427         * gthr.h: Likewise.
27428         * libgcc2.c: Likewise.
27429         * libgcc2.h: Likewise.
27430         * libgcov.c: Likewise.
27431         * tsystem.h: Likewise.
27432         * typeclass.h: Likewise.
27433         * unwind-c.c: Likewise.
27434         * unwind-compat.h: Likewise.
27435         * unwind-dw2-fde-compat.c: Likewise.
27436         * unwind-dw2-fde-darwin.c: Likewise.
27437         * unwind-dw2-fde-glibc.c: Likewise.
27438         * unwind-dw2-fde.c: Likewise.
27439         * unwind-dw2-fde.h: Likewise.
27440         * unwind-dw2.c: Likewise.
27441         * unwind-dw2.h: Likewise.
27442         * unwind-generic.h: Likewise.
27443         * unwind-pe.h: Likewise.
27444         * unwind-sjlj.c: Likewise.
27445         * unwind.inc: Likewise.
27446         * config/arm/neon-gen.ml: Change generated copyright header to
27447         refer to version 3 of the GNU General Public License with
27448         version 3.1 of the GCC Runtime Library Exception and to point
27449         readers at the COPYING3 and COPYING3.RUNTIME files and the
27450         FSF's license web page.
27451         * config/arm/arm_neon.h: Regenerate.
27452
27453 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
27454
27455         * config/cris/cris.md: Change copyright header to refer to version
27456         3 of the GNU General Public License.
27457         * doc/install.texi2html: Change copyright header to refer to version
27458         3 of the GNU General Public License and to point readers at the
27459         COPYING3 file and the FSF's license web page.
27460         * config/vax/linux.h: Likewise.
27461
27462 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27463
27464         * config/i386/i386.md (cmpcc): New.
27465         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
27466         (sync_compare_and_swap_cc*): Delete.
27467
27468         * config/s390/s390.c (s390_compare_emitted): Remove.
27469         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
27470         s390_compare_emitted used to be handled.  Assert that modes match.
27471         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
27472         refer to sync_compare_and_swap_ccsi.
27473         * config/s390/s390.h (s390_compare_emitted): Remove.
27474         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
27475         instead of s390_compare_emitted.
27476         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
27477         instead of s390_compare_emitted.
27478         * config/s390/s390.md (cmpcc): New.
27479         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
27480         CC_REGNUM, do not pretend it's set.
27481         (sync_compare_and_swap_cc*): Delete.
27482         * config/s390/predicates.md (cc_reg_operand): New.
27483
27484         * expr.c (sync_compare_and_swap_cc): Delete.
27485         * optabs.h (sync_compare_and_swap_cc): Delete.
27486         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
27487         is being used with can_compare_p.
27488         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
27489         (find_cc_set): New.
27490         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
27491         look for a MODE_CC set instead.  Use emit_store_flag.
27492         (expand_compare_and_swap_loop): Likewise, with some additional
27493         complication to avoid a force_reg when useless.  Use
27494         emit_cmp_and_jump_insns.
27495         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
27496         * doc/md.texi (sync_compare_and_swap_cc): Merge with
27497         sync_compare_and_swap documentation.
27498
27499 2009-04-09  Jan Hubicka  <jh@suse.cz>
27500
27501         * except.c (find_prev_try): Break out from ....
27502         (duplicate_eh_regions): ... here; properly update prev_try pointers
27503         when duplication part of tree.
27504         (dump_eh_tree): Improve dumping.
27505         (verify_eh_region): New.
27506         (verify_eh_tree): Use it.
27507
27508 2009-04-06  Richard Guenther  <rguenther@suse.de>
27509
27510         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
27511         &ARRAY addresses by adjusting their types and prepending
27512         a conversion.
27513         * tree-cfg.c (verify_gimple_assign_single): Verify that
27514         addresses are correct.
27515
27516 2009-04-09  Richard Guenther  <rguenther@suse.de>
27517
27518         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
27519         indices into an array reference if possible.
27520         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
27521         Fold POINTER_PLUS_EXPR statements with invariant address.
27522
27523 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
27524
27525         PR target/39634
27526         * config.gcc (powerpc64-*-linux*): Always build biarch.
27527
27528 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
27529
27530         PR c/39613
27531         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
27532         it and pedwarn if this results in an INTEGER_CST.
27533
27534 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27535
27536         * doc/install.texi: Update minimum GMP version.  Remove obsolete
27537         text in MPFR section.
27538
27539 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
27540
27541         * dwarf2out.c (class_scope_p): New static inline.
27542         (class_or_namespace_scope_p): Use it.
27543         (gen_variable_die): Use DW_TAG_member tag for static data member
27544         declarations instead of DW_TAG_variable.
27545
27546         PR middle-end/39573
27547         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
27548         variables.
27549
27550 2009-04-08  Richard Guenther  <rguenther@suse.de>
27551
27552         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
27553         valueize random data.
27554
27555 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
27556
27557         * config.gcc (aix tm_file):  Add aix-stdint.h.
27558         (aix tm clause use_gcc_stdint):  Set to wrap.
27559         * config/rs6000/aix-stdint.h:  New file.
27560
27561 2009-04-08  Richard Guenther  <rguenther@suse.de>
27562
27563         PR middle-end/36291
27564         * tree-dfa.c (add_referenced_var): Do not recurse into
27565         global initializers.
27566         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
27567         exposed variables.
27568         (fold_const_aggregate_ref): Likewise.
27569
27570 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27571
27572         * recog.c (ordered_comparison_operator): New.
27573         * gensupport.c (std_preds): Add it.
27574         * doc/md.texi (Machine-Independent Predicates): Document it.
27575
27576 2009-04-08  Jan Hubicka  <jh@suse.cz>
27577
27578         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
27579         * function.h (rtl_eh): Remove exception_handler_label_map.
27580         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
27581         remove_exception_handler_label, for_each_eh_label_1): Remove.
27582         (rtl_remove_unreachable_regions): Remove.
27583         (convert_from_eh_region_ranges): Do not remove unreachable regions.
27584         (find_exception_handler_labels): Don't build the hashtable.
27585         (maybe_remove_eh_handler): Remove.
27586         (for_each_eh_label): Rewrite to walk the tree.
27587         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
27588         * except.h (maybe_remove_eh_handler): Remove.
27589         * passes.c (init_optimization_passes): Schedule second EH cleanup
27590         before out-of-ssa.
27591         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
27592         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
27593
27594 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27595
27596         * genoutput.c (validate_optab_operands): New.
27597         (gen_insn, gen_expand): Call it.
27598
27599         * genflags.c (gen_insn): Detect misused iterators.
27600         (main): Pass line_no to gen_insn, exit with status 1 on error.
27601
27602         * genextract.c (line_no): Make global.
27603         (VEC_safe_set_locstr): Change assertion to error message.
27604         (main): Exit with status 1 on error.
27605
27606 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
27607
27608         PR c/39614
27609         PR c/39673
27610         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27611         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27612         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
27613         * c-convert.c (convert): Do not call fold on results of conversion
27614         functions when the result is a C_MAYBE_CONST_EXPR.
27615         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27616         of __builtin_choose_expr.
27617         * c-typeck.c (remove_c_maybe_const_expr): New.
27618         (build_unary_op, build_conditional_expr, build_compound_expr,
27619         build_binary_op, c_objc_common_truthvalue_conversion): Call
27620         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
27621         integer operands.
27622
27623 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
27624
27625         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
27626         CODE to produce a new one. Add a prototype to use fold_convert_const
27627
27628 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
27629
27630         PR bootstrap/39660
27631         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
27632         mix declarations and code.
27633
27634 2009-04-08  Ben Elliston  <bje@au.ibm.com>
27635
27636         * gcc.c: Replace `CC' with `GCC' throughout.
27637
27638 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
27639
27640         * doc/invoke.texi: Document Atom support.
27641
27642 2009-04-07  Jason Merrill  <jason@redhat.com>
27643
27644         PR c++/25185
27645         * c-common.h, c-common.c: Add flag_pretty_templates.
27646         * c-opts.c (c_common_handle_option): Set it.
27647         * c.opt: Add -fno-pretty-templates.
27648         * doc/invoke.texi (C++ Dialect Options): Likewise.
27649
27650 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
27651
27652         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
27653         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
27654         (ia64_expand_builtin): Likewise.
27655
27656 2009-04-07  Martin Jambor  <mjambor@suse.cz>
27657
27658         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
27659         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
27660         ADDR_EXPRS are include too.
27661
27662 2009-04-07  Richard Guenther  <rguenther@suse.de>
27663
27664         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
27665         decls are only used if passes as parameters or if they are
27666         local statics and the call is not to a builtin.
27667         (call_may_clobber_ref_p_1): Likewise.
27668
27669 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27670
27671         * expr.c (do_store_flag): Remove last argument.  Simplify code
27672         to avoid duplication of tests already done by can_compare_p.
27673         (expand_expr_real_1): Adjust caller.
27674
27675 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27676
27677         * optabs.c (can_compare_p): Test the predicate of a
27678         cbranch and cstore pattern.
27679
27680 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27681
27682         * expr.c (convert_move): Use emit_store_flag instead of
27683         "emulating" it.
27684
27685 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27686
27687         * config/i386/i386.c (ix86_compare_emitted): Remove.
27688         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
27689         ix86_compare_op0 like ix86_compare_emitted used to be handled.
27690         * config/i386/i386.h (ix86_compare_emitted): Remove.
27691         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
27692         instead of ix86_compare_emitted.
27693         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
27694
27695 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
27696
27697         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
27698         Add t-sysroot-suffix to tmake_file.
27699         * config/print-sysroot-suffix.sh: New file.
27700         * config/t-sysroot-suffix: New file.
27701
27702 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27703
27704         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
27705         as the latter produces a warning when the target does not support
27706         infinity.
27707
27708 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27709
27710         * dfp.c: Replace type punning assignments with memcpy throughout.
27711         * Makefile.in (dfp.o-warn): Remove.
27712
27713 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
27714
27715         PR target/39634
27716         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
27717         Include soft-fp/t-softfp after rs6000/t-linux64.
27718
27719 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
27720
27721         * stor-layout.c (set_sizetype): Use the full precision of their
27722         machine mode for bitsize types.
27723
27724 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
27725
27726         * config/i386/i386.md: Revert 2 accidental checkins.
27727
27728 2009-04-06  Joey Ye  <joey.ye@intel.com>
27729             Xuepeng Guo  <xuepeng.guo@intel.com>
27730             H.J. Lu  <hongjiu.lu@intel.com>
27731
27732         Atom pipeline model, tuning and insn selection.
27733         * config.gcc (atom): Add atom config options and target.
27734
27735         * config/i386/atom.md: New.
27736
27737         * config/i386/i386.c (atom_cost): New cost.
27738         (m_ATOM): New macro flag.
27739         (initial_ix86_tune_features): Set m_ATOM.
27740         (x86_accumulate_outgoing_args): Likewise.
27741         (x86_arch_always_fancy_math_387): Likewise.
27742         (processor_target): Add Atom cost.
27743         (cpu_names): Add Atom cpu name.
27744         (override_options): Set Atom ISA.
27745         (ix86_issue_rate): New case PROCESSOR_ATOM.
27746         (ix86_adjust_cost): Likewise.
27747
27748         * config/i386/i386.h (TARGET_ATOM): New target macro.
27749         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
27750         (TARGET_OPT_AGU): New target option.
27751         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
27752         (processor_type): Add PROCESSOR_ATOM.
27753
27754         * config/i386/i386.md (cpu): Add new value "atom".
27755         (use_carry, movu): New attr.
27756         (atom.md): Include atom.md.
27757         (adddi3_carry_rex64): Set attr "use_carry".
27758         (addqi3_carry): Likewise.
27759         (addhi3_carry): Likewise.
27760         (addsi3_carry): Likewise.
27761         (*addsi3_carry_zext): Likewise.
27762         (subdi3_carry_rex64): Likewise.
27763         (subqi3_carry): Likewise.
27764         (subhi3_carry): Likewise.
27765         (subsi3_carry): Likewise.
27766         (x86_movdicc_0_m1_rex64): Likewise.
27767         (*x86_movdicc_0_m1_se): Likewise.
27768         (x86_movsicc_0_m1): Likewise.
27769         (*x86_movsicc_0_m1_se): Likewise.
27770         (*adddi_1_rex64): Emit add insn as much as possible.
27771         (*addsi_1): Likewise.
27772         (return_internal): Set atom_unit.
27773         (return_internal_long): Likewise.
27774         (return_pop_internal): Likewise.
27775         (*rcpsf2_sse): Set atom_sse_attr attr.
27776         (*qrt<mode>2_sse): Likewise.
27777         (*prefetch_sse): Likewise.
27778
27779         * config/i386/i386-c.c (ix86_target_macros_internal): New case
27780         PROCESSOR_ATOM.
27781         (ix86_target_macros_internal): Likewise.
27782
27783         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
27784         (*prefetch_sse_rex): Likewise.
27785         (sse_rcpv4sf2): Likewise.
27786         (sse_vmrcpv4sf2): Likewise.
27787         (sse_sqrtv4sf2): Likewise.
27788         (<sse>_vmsqrt<mode>2): Likewise.
27789         (sse_ldmxcsr): Likewise.
27790         (sse_stmxcsr): Likewise.
27791         (*sse_sfence): Likewise.
27792         (sse2_clflush): Likewise.
27793         (*sse2_mfence): Likewise.
27794         (*sse2_lfence): Likewise.
27795         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
27796         (<sse>_movup<ssemodesuffixf2c>): Likewise.
27797         (avx_movdqu<avxmodesuffix>): Likewise.
27798         (avx_lddqu<avxmodesuffix>): Likewise.
27799         (sse2_movntv2di): Change attr "type" to "ssemov".
27800         (sse2_movntsi): Likewise.
27801         (rsqrtv8sf2): Change attr "type" to "sseadd".
27802         (sse3_addsubv2df3): Set attr "atom_unit".
27803         (sse3_h<plusminus_insn>v4sf3): Likewise.
27804         (*sse2_pmaddwd): Likewise.
27805         (*vec_extractv2di_1_rex64): Likewise.
27806         (*vec_extractv2di_1_avx): Likewise.
27807         (sse2_psadbw): Likewise.
27808         (ssse3_phaddwv8hi3): Likewise.
27809         (ssse3_phaddwv4hi3): Likewise.
27810         (ssse3_phadddv4si3): Likewise.
27811         (ssse3_phadddv2si3): Likewise.
27812         (ssse3_phaddswv8hi3): Likewise.
27813         (ssse3_phaddswv4hi3): Likewise.
27814         (ssse3_phsubwv8hi3): Likewise.
27815         (ssse3_phsubwv4hi3): Likewise.
27816         (ssse3_phsubdv4si3): Likewise.
27817         (ssse3_phsubdv2si3): Likewise.
27818         (ssse3_phsubswv8hi3): Likewise.
27819         (ssse3_phsubswv4hi3): Likewise.
27820         (ssse3_pmaddubsw128): Likewise.
27821         (sse3_pmaddubsw: Likewise.
27822         (ssse3_palignrti): Likewise.
27823         (ssse3_palignrdi): Likewise.
27824
27825 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
27826
27827         * doc/install.texi (Specific): Fix two cross-references to MinGW.
27828
27829 2009-04-06  Richard Guenther  <rguenther@suse.de>
27830
27831         PR tree-optimization/28868
27832         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
27833         of which PHI results we inserted.
27834         (insert_into_preds_of_block): Record inserted PHIs.
27835         (eliminate): Eliminate redundant PHI nodes.
27836         (init_pre): Init inserted_phi_names.
27837
27838 2009-04-06  Richard Guenther  <rguenther@suse.de>
27839
27840         PR tree-optimization/39643
27841         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
27842         IMAGPART_EXPRs of complex constants.
27843         (execute_fold_all_builtins): If we folded a call queue
27844         TODO_update_address_taken.
27845
27846 2009-04-06  Jan Hubicka  <jh@suse.cz>
27847
27848         PR middle-end/39659
27849         * except.c (remove_unreachable_regions): Propagate may_contain_throw
27850         flag.
27851
27852 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
27853
27854         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
27855         delay slot.
27856         (ic_invalidate_array): Likewise.
27857
27858 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
27859
27860         * calls.c (emit_library_call_value_1): Fix a problem with parameter
27861         alignment for library calls.
27862
27863 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
27864
27865         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
27866         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
27867         * config/i386/mingw-stdint.h:  New file.
27868
27869 2009-04-05  Richard Guenther  <rguenther@suse.de>
27870
27871         PR tree-optimization/39648
27872         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
27873         our &A vs. &A[0] IL deficiencies.
27874
27875 2009-04-04  Jan Hubicka  <jh@suse.cz>
27876
27877         * except.c (sjlj_find_directly_reachable_regions): Be ready for
27878         removed toplevel regions.
27879         (sjlj_mark_call_sites): Likewise.
27880
27881 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
27882
27883         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
27884         (cygwin tm clause use_gcc_stdint):  Set to wrap.
27885         * config/i386/cygwin-stdint.h:  New file.
27886
27887 2009-04-04  Richard Guenther  <rguenther@suse.de>
27888
27889         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
27890         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
27891         single-argument PHIs if we are in loop-closed SSA form.
27892         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
27893         for the pre-condition.
27894         (slpeel_tree_peel_loop_to_edge): Likewise.
27895         (vect_build_loop_niters): Take an optional sequence to append stmts.
27896         (vect_generate_tmps_on_preheader): Likewise.
27897         (vect_do_peeling_for_loop_bound): Take extra guards for the
27898         pre-condition.
27899         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
27900         the cost model check.
27901         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
27902         guards if we are going to peel.  Do not apply versioning in that case.
27903         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
27904         (vect_do_peeling_for_loop_bound): Likewise.
27905         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
27906         loop bound only record extra pre-conditions, do not apply loop
27907         versioning.
27908
27909 2009-04-04  Richard Guenther  <rguenther@suse.de>
27910
27911         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
27912         renaming code.
27913
27914 2009-04-04  Jan Hubicka  <jh@suse.cz>
27915
27916         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
27917         last_basic_block for size of bb->index indexed array.
27918         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
27919         compute_out, link_btr_uses, build_btr_def_use_webs,
27920         build_btr_def_use_webs, migrate_btr_defs): Likewise.
27921
27922 2009-04-04  Jan Hubicka  <jh@suse.cz>
27923
27924         * except.c (remove_eh_handler_and_replace): Break out from ...
27925         (remove_eh_handler): ... here.
27926         (bring_to_root): New function.
27927         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
27928         handled ones, bring others to root of tree.
27929
27930 2009-04-04  Jan Hubicka  <jh@suse.cz>
27931
27932         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
27933         (all_phis_safe_to_merge): New function.
27934         (update_info): New structure.
27935         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
27936         (cleanup_empty_eh): Update SSA if possible.
27937
27938 2009-04-04  Richard Guenther  <rguenther@suse.de>
27939
27940         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
27941         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
27942         (append_vuse): Likewise.
27943
27944 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
27945
27946         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
27947         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
27948         instead of REG_UNSAVED for DW_CFA_undefined.
27949         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
27950         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
27951         outermost frame.
27952
27953 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
27954
27955         PR target/39501
27956         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
27957
27958 2009-04-04  Richard Guenther  <rguenther@suse.de>
27959
27960         PR tree-optimization/8781
27961         PR tree-optimization/37892
27962         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
27963         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
27964         (valueize_refs): Call it for *& valueizations.
27965         (shared_reference_ops_from_ref): Rename to ...
27966         (valueize_shared_reference_ops_from_ref): ... this and valueize.
27967         (shared_reference_ops_from_call): Rename to ...
27968         (valueize_shared_reference_ops_from_call): ... this and valueize.
27969         (vn_reference_lookup): Update.
27970         (visit_reference_op_call): Likewise.
27971         * tree-ssa-pre.c (phi_translate_1): Fold *&.
27972         (eliminate): Value-replace the call address in call statements.
27973
27974 2009-04-04  Richard Guenther  <rguenther@suse.de>
27975
27976         PR tree-optimization/39636
27977         * tree-ssa-forwprop.c
27978         (forward_propagate_addr_into_variable_array_index): Check for
27979         GIMPLE_ASSIGN before accessing the rhs code.
27980
27981 2009-04-03  Jason Merrill  <jason@redhat.com>
27982
27983         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
27984
27985 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
27986
27987         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
27988         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
27989         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
27990         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
27991         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
27992         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
27993         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
27994         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
27995         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
27996         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
27997         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
27998         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
27999         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
28000         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
28001         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
28002         Use fr_reg_or_fp01_operand instead of fr_register_operand
28003
28004         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
28005         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
28006         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
28007
28008 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
28009
28010         PR rtl-optimization/39607
28011         PR rtl-optimization/39631
28012
28013         Revert:
28014
28015         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28016         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28017         instead of DF_LR_OUT.
28018         * ira-lives.c (process_bb_node_lives): Ditto.
28019         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28020         instead of DF_LR_{OUT,IN}.
28021         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28022         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28023
28024 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
28025
28026         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
28027         (execute_lower_omp): Always run but take the short way out if -fopenmp
28028         is not given.
28029         (gate_lower_omp): Remove, forcing the pass manager to always run the
28030         pass and always set PROP_gimple_lomp.
28031         (pass_lower_omp): Remove gate function.
28032         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
28033         PROP_trees.  Instead, require it.
28034         * ipa-cp.c (pass_ipa_cp): Likewise.
28035         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
28036         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
28037         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
28038         and PROP_gimple_leh.
28039
28040 2009-04-03  Richard Guenther  <rguenther@suse.de>
28041
28042         PR middle-end/13146
28043         PR tree-optimization/23940
28044         PR tree-optimization/33237
28045         PR middle-end/33974
28046         PR middle-end/34093
28047         PR tree-optimization/36201
28048         PR tree-optimization/36230
28049         PR tree-optimization/38049
28050         PR tree-optimization/38207
28051         PR tree-optimization/38230
28052         PR tree-optimization/38301
28053         PR tree-optimization/38585
28054         PR middle-end/38895
28055         PR tree-optimization/38985
28056         PR tree-optimization/39299
28057         * tree-ssa-structalias.h: Remove.
28058         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
28059         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
28060         (struct vuse_element_d): Remove.
28061         (struct vuse_vec_d): Likewise.
28062         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
28063         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
28064         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
28065         VUSE_ELEMENT_VAR): Likewise.
28066         (struct voptype_d): Likewise.
28067         (NUM_VOP_FREE_BUCKETS): Likewise.
28068         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
28069         (struct stmt_operands_d): Remove.
28070         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
28071         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
28072         VDEF_NUM, VDEF_VECT): Likewise.
28073         (copy_virtual_operands): Remove.
28074         (operand_build_cmp): Likewise.
28075         (create_ssa_artificial_load_stmt): Likewise.
28076         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
28077         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
28078         vuse_index and mayuse_index members.  Pack and move done and iter_type
28079         members to the front.
28080         (SSA_OP_VMAYUSE): Remove.
28081         (SSA_OP_VIRTUAL_USES): Adjust.
28082         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
28083         (unlink_stmt_vdef): Declare.
28084         (add_to_addressable_set): Remove.
28085         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
28086         (vrp_visit_stmt): Likewise.
28087         * doc/tree-ssa.texi (Alias analysis): Update.
28088         * doc/invoke.texi (max-aliased-vops): Remove docs.
28089         (avg-aliased-vops): Likewise.
28090         * tree-into-ssa.c (syms_to_rename): Remove.
28091         (need_to_update_vops_p): Likewise.
28092         (need_to_initialize_update_ssa_p): Rename to ...
28093         (update_ssa_initialized_fn): ... this.  Track function we are
28094         initialized for.
28095         (symbol_marked_for_renaming): Simplify.
28096         (add_new_name_mapping): Do not set need_to_update_vops_p.
28097         (dump_currdefs): Use SYMS_TO_RENAME.
28098         (rewrite_update_stmt): Always walk all uses/defs.
28099         (dump_update_ssa): Adjust.
28100         (init_update_ssa): Take function argument.  Track what we are
28101         initialized for.
28102         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
28103         (create_new_def_for): Initialize for cfun, assert we are initialized
28104         for cfun.
28105         (mark_sym_for_renaming): Simplify.
28106         (mark_set_for_renaming): Do not initialize update-ssa.
28107         (need_ssa_update_p): Simplify.  Take function argument.
28108         (name_mappings_registered_p): Assert we ask for the correct function.
28109         (name_registered_for_update_p): Likewise.
28110         (ssa_names_to_replace): Likewise.
28111         (release_ssa_name_after_update_ssa): Likewise.
28112         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
28113         (dump_decl_set): Do not print a newline.
28114         (debug_decl_set): Do it here.
28115         (dump_update_ssa): And here.
28116         * tree-ssa-loop-im.c (move_computations): Adjust.
28117         (movement_possibility): Likewise.
28118         (determine_max_movement): Likewise.
28119         (gather_mem_refs_stmt): Likewise.
28120         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
28121         or NAME_MEMORY_TAG.
28122         * tree-complex.c (update_all_vops): Remove.
28123         (expand_complex_move): Adjust.
28124         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
28125         Simplify test for memory referencing statement.  Exclude
28126         non-invariant ADDR_EXPRs.
28127         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
28128         * tree-loop-distribution.c (generate_memset_zero): Adjust.
28129         (rdg_flag_uses): Likewise.
28130         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
28131         related code.
28132         (tree_optimize_tail_calls_1): Also split the
28133         edge from the entry block if we have degenerate PHI nodes in
28134         the first basic block.
28135         * tree.c (init_ttree): Remove memory-tag related code.
28136         (tree_code_size): Likewise.
28137         (tree_node_structure): Likewise.
28138         (build7_stat): Re-write to be build6_stat.
28139         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
28140         (SSA_VAR_P): Adjust.
28141         (struct tree_memory_tag): Remove.
28142         (struct tree_memory_partition_tag): Likewise.
28143         (union tree_node): Adjust.
28144         (build7): Re-write to be build6.
28145         * tree-pass.h (pass_reset_cc_flags): Remove.
28146         (TODO_update_address_taken): New flag.
28147         (pass_simple_dse): Remove.
28148         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
28149         * params.h (MAX_ALIASED_VOPS): Remove.
28150         (AVG_ALIASED_VOPS): Likewise.
28151         * omp-low.c (expand_omp_taskreg): Update SSA form.
28152         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
28153         aliases the lhs in a copy stmt.
28154         * tree-ssa-dse.c (struct address_walk_data): Remove.
28155         (memory_ssa_name_same): Likewise.
28156         (memory_address_same): Likewise.
28157         (get_kill_of_stmt_lhs): Likewise.
28158         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
28159         unused stores.  Look through PHI nodes into post-dominated regions.
28160         (dse_optimize_stmt): Simplify.  Properly remove stores.
28161         (tree_ssa_dse): Compute dominators.
28162         (execute_simple_dse): Remove.
28163         (pass_simple_dse): Likewise.
28164         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
28165         gimple_loaded_syms and gimple_stored_syms computation.
28166         * toplev.c (dump_memory_report): Dump alias and pta stats.
28167         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
28168         (vn_reference_eq): Likewise.
28169         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
28170         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
28171         valueize_vuses): Remove.
28172         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
28173         (get_def_ref_stmt_vuse): ... this.
28174         (vn_reference_lookup_2): New function.
28175         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
28176         walking equivalent vuses.  Simplify.
28177         (vn_reference_lookup): Likewise.
28178         (vn_reference_insert): Likewise.
28179         (vn_reference_insert_pieces): Likewise.
28180         (visit_reference_op_call): Simplify.
28181         (visit_reference_op_load): Likewise.
28182         (visit_reference_op_store): Likewise.
28183         (init_scc_vn): Remove shared_lookup_vuses initialization.
28184         (free_scc_vn): Remove shared_lookup_vuses freeing.
28185         (sort_vuses, sort_vuses_heap): Remove.
28186         (get_ref_from_reference_ops): Export.
28187         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
28188         vector with single vuse pointer.
28189         (vn_reference_lookup_pieces, vn_reference_lookup,
28190         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
28191         (shared_vuses_from_stmt): Remove.
28192         (get_ref_from_reference_ops): Declare.
28193         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
28194         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
28195         memory-tag related code.
28196         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
28197         (likely_value): Add comment, skip static-chain of call statements.
28198         (surely_varying_stmt_p): Adjust.
28199         (gimplify_and_update_call_from_tree): Likewise.
28200         (execute_fold_all_builtins): Do not rebuild alias info.
28201         (gimplify_and_update_call_from_tree): Properly update VOPs.
28202         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
28203         (copy_ref_info): Remove memory-tag related code.
28204         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
28205         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
28206         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
28207         computation.
28208         * tree-ssa-dom.c (gimple_p): Remove typedef.
28209         (eliminate_redundant_computations): Adjust.
28210         (record_equivalences_from_stmt): Likewise.
28211         (avail_expr_hash): Likewise.
28212         (avail_expr_eq): Likewise.
28213         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
28214         (stmt_makes_single_load): Likewise.
28215         (stmt_makes_single_store): Likewise.
28216         * tree-ssa-alias.c: Rewrite completely.
28217         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
28218         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
28219         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
28220         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
28221         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
28222         Remove public functions.
28223         (pass_reset_cc_flags): Remove.
28224         (pass_build_alias): Move ...
28225         * tree-ssa-structalias.c (pass_build_alias): ... here.
28226         * tree-ssa-alias.c (may_be_aliased): Move ...
28227         * tree-flow-inline.h (may_be_aliased): ... here.
28228         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
28229         count_uses_and_derefs): Move ...
28230         * gimple.c: ... here.
28231         * gimple.h (count_uses_and_derefs): Declare.
28232         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
28233         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
28234         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
28235         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
28236         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
28237         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
28238         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
28239         New functions.
28240         * tree-dfa.c (refs_may_alias_p): Move ...
28241         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
28242         * tree-ssa-alias.h: New file.
28243         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
28244         (statement_sink_location): Likewise.
28245         * opts.c (decode_options): Do not adjust max-aliased-vops or
28246         avg-aliased-vops values.
28247         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
28248         (TV_CALL_CLOBBER): Likewise.
28249         (TV_FLOW_SENSITIVE): Likewise.
28250         (TV_FLOW_INSENSITIVE): Likewise.
28251         (TV_MEMORY_PARTITIONING): Likewise.
28252         (TV_ALIAS_STMT_WALK): New timevar.
28253         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
28254         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
28255         (get_address_description): Remove memory-tag related code.
28256         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
28257         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
28258         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
28259         and immediate uses in statements.  Document.
28260         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
28261         (dump_symbols): Remove.
28262         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
28263         * alias.c (get_deref_alias_set): New function split out from ...
28264         (get_alias_set): ... here.
28265         * alias.h (get_deref_alias_set): Declare.
28266         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
28267         type parameter.  Remove restrict pointer handling.  Create a
28268         ref-all pointer in case type-based alias sets do not conflict.
28269         (vect_analyze_data_refs): Remove SMT related code.
28270         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
28271         (vectorizable_load): Likewise.
28272         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
28273         (DR_SYMBOL_TAG, DR_VOPS): Remove.
28274         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
28275         Ignore vops and SMTs.
28276         (dr_analyze_alias): Likewise..
28277         (free_data_ref): Likewise.
28278         (create_data_ref): Likewise.
28279         (analyze_all_data_dependences): Likewise.
28280         (get_references_in_stmt): Adjust.
28281         * tree-flow-inline.h (gimple_aliases_computed_p,
28282         gimple_addressable_vars, gimple_call_clobbered_vars,
28283         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
28284         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
28285         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
28286         gimple_mem_ref_stats): Remove.
28287         (gimple_vop): New function.
28288         (op_iter_next_use): Remove vuses and mayuses cases.
28289         (op_iter_next_def): Remove vdefs case.
28290         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
28291         (clear_and_done_ssa_iter): Do not set removed fields.
28292         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
28293         Assert we are not iterating over vuses or vdefs if not also
28294         iterating over uses or defs.
28295         (op_iter_init_use): Likewise.
28296         (op_iter_init_def): Likewise.
28297         (op_iter_next_vdef): Remove.
28298         (op_iter_next_mustdef): Likewise.
28299         (op_iter_init_vdef): Likewise.
28300         (compare_ssa_operands_equal): Likewise.
28301         (link_use_stmts_after): Handle vuse operand.
28302         (is_call_used): Use is_call_clobbered.
28303         (is_call_clobbered): Global variables are always call clobbered,
28304         query the call-clobbers bitmap.
28305         (mark_call_clobbered): Ignore global variables.
28306         (clear_call_clobbered): Likewise.
28307         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
28308         virtual operands sanity check.
28309         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
28310         Remove.
28311         (TARGET_MEM_REF): Remove TMR_TAG operand.
28312         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
28313         Remove call-clobber related code.
28314         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
28315         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
28316         partitions or escape reason.
28317         (get_single_def_stmt, get_single_def_stmt_from_phi,
28318         get_single_def_stmt_with_phi): Remove.
28319         (dump_referenced_vars): Tidy.
28320         (get_ref_base_and_extent): Allow bare decls.
28321         (collect_dfa_stats): Adjust.
28322         * graphite.c (rename_variables_in_stmt): Adjust.
28323         (graphite_copy_stmts_from_block): Likewise.
28324         (translate_clast): Likewise.
28325         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
28326         (EXPR_DIES): New.
28327         (translate_vuse_through_block): Use the oracle.
28328         (phi_translate_1): Adjust.
28329         (value_dies_in_block_x): Use the oracle.  Cache the outcome
28330         in EXPR_DIES.
28331         (valid_in_sets): Check if the VUSE for
28332         a REFERENCE is available.
28333         (eliminate): Do not remove stmts during elimination,
28334         instead queue and remove them afterwards.
28335         (do_pre): Do not rebuild alias info.
28336         (pass_pre): Run TODO_rebuild_alias before PRE.
28337         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
28338         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
28339         (mark_all_v_defs_stmt): Remove.
28340         (mark_all_v_defs_seq): Adjust.
28341         (sra_replace): Likewise.
28342         (scalarize_use): Likewise.
28343         (scalarize_copy): Likewise.
28344         (scalarize_init): Likewise.
28345         (scalarize_ldst): Likewise.
28346         (todoflags): Remove.
28347         (tree_sra): Do not rebuild alias info.
28348         (tree_sra_early): Adjust.
28349         (pass_sra): Run TODO_update_address_taken before SRA.
28350         * tree-predcom.c (set_alias_info): Remove.
28351         (prepare_initializers_chain): Do not call it.
28352         (mark_virtual_ops_for_renaming): Adjust.
28353         (mark_virtual_ops_for_renaming_list): Remove.
28354         (initialize_root_vars): Adjust.
28355         (initialize_root_vars_lm): Likewise.
28356         (prepare_initializers_chain): Likewise.
28357         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
28358         (may_propagate_copy_into_stmt): Likewise.
28359         (merge_alias_info): Do nothing for now.
28360         (propagate_tree_value_into_stmt): Adjust.
28361         (stmt_may_generate_copy): Likewise.
28362         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
28363         not mark symbols for renaming.
28364         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
28365         with the same statement, make sure to update the new pointed-to one.
28366         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
28367         call statements, do not mark symbols for renaming.
28368         (mark_operand_necessary): Dump something.
28369         (ref_may_be_aliased): New function.
28370         (mark_aliased_reaching_defs_necessary_1): New helper function.
28371         (mark_aliased_reaching_defs_necessary): Likewise.
28372         (mark_all_reaching_defs_necessary_1): Likewise.
28373         (mark_all_reaching_defs_necessary): Likewise.
28374         (propagate_necessity): Do not process virtual PHIs.  For
28375         non-aliased loads mark all reaching definitions as necessary.
28376         For aliased loads and stores mark the immediate dominating
28377         aliased clobbers as necessary.
28378         (visited): New global static.
28379         (perform_tree_ssa_dce): Free visited bitmap after propagating
28380         necessity.
28381         (remove_dead_phis): Perform simple dead virtual PHI removal.
28382         (remove_dead_stmt): Properly unlink virtual operands when
28383         removing stores.
28384         (eliminate_unnecessary_stmts): Schedule PHI removal after
28385         stmt removal.
28386         * tree-ssa-ter.c (is_replaceable_p): Adjust.
28387         (process_replaceable): Likewise.
28388         (find_replaceable_in_bb): Likewise.
28389         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
28390         based on the single gimple vop.
28391         (verify_flow_insensitive_alias_info): Remove.
28392         (verify_flow_sensitive_alias_info): Likewise.
28393         (verify_call_clobbering): Likewise.
28394         (verify_memory_partitions): Likewise.
28395         (verify_alias_info): Likewise.
28396         (verify_ssa): Adjust..
28397         (execute_update_addresses_taken): Export.  Update SSA
28398         manually.  Optimize only when optimizing.  Use a local bitmap.
28399         (pass_update_address_taken): Remove TODO_update_ssa, add
28400         TODO_dump_func.
28401         (pass_update_address_taken): Just use TODO_update_address_taken.
28402         (init_tree_ssa): Do not initialize addressable_vars.
28403         (verify_ssa): Verify new VUSE / VDEF properties.
28404         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
28405         Do not call verify_alias_info.
28406         (delete_tree_ssa): Clear the VUSE, VDEF operands.
28407         Do not free the loaded and stored syms bitmaps.  Reset the escaped
28408         and callused solutions.  Do not free addressable_vars.
28409         Remove memory-tag related code.
28410         (warn_uninitialized_var): Aliases are always available.
28411         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
28412         * lambda-code.c (can_put_in_inner_loop): Adjust.
28413         (can_put_after_inner_loop): Likewise.
28414         (perfect_nestify): Likewise.
28415         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
28416         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
28417         (vectorizable_conversion): Do not mark symbols for renaming.
28418         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
28419         (expand_call_inline): Unlink the calls virtual operands before
28420         replacing it.
28421         (tree_function_versioning): Do not call update_ssa if we are not
28422         updating clones.  Simplify.
28423         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
28424         (propagate_with_phi): Likewise..
28425         * tree-outof-ssa.c (create_temp): Remove memory tag and call
28426         clobber code.  Assert we are not aliased or global.
28427         * tree-flow.h: Include tree-ssa-alias.h
28428         (enum escape_type): Remove.
28429         (struct mem_sym_stats_d): Likewise.
28430         (struct mem_ref_stats_d): Likewise.
28431         (struct gimple_df): Add vop member.  Remove global_var,
28432         call_clobbered_vars, call_used_vars, addressable_vars,
28433         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
28434         escaped and callused members.
28435         (struct ptr_info_def): Remove all members, add points-to solution
28436         member pt.
28437         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
28438         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
28439         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
28440         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
28441         (tree-ssa-alias.o): Likewise.
28442         (toplev.o): Add tree-ssa-alias.h
28443         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
28444         * gimple.c (gimple_set_bb): Fix off-by-one error.
28445         (is_gimple_reg): Do not handle memory tags.
28446         (gimple_copy): Also copy virtual operands.
28447         Delay updating the statement.  Do not reset loaded and stored syms.
28448         (gimple_set_stored_syms): Remove.
28449         (gimple_set_loaded_syms): Likewise.
28450         (gimple_call_copy_skip_args): Copy the virtual operands
28451         and mark the new statement modified.
28452         * tree-ssa-structalias.c (may_alias_p): Remove.
28453         (set_uids_in_ptset): Take the alias set to prune with as
28454         parameter.  Fold in the alias test of may_alias_p.
28455         (compute_points_to_sets): Compute whether a ptr is dereferenced
28456         in a local sbitmap.
28457         (process_constraint): Deal with &ANYTHING on the lhs, reject all
28458         other ADDRESSOF constraints on the lhs.
28459         (get_constraint_for_component_ref): Assert that we don't get
28460         ADDRESSOF constraints from the base of the reference.
28461         Properly generate UNKNOWN_OFFSET for DEREF if needed.
28462         (struct variable_info): Remove collapsed_to member.
28463         (get_varinfo_fc): Remove.
28464         (new_var_info): Do not set collapsed_to.
28465         (dump_constraint): Do not follow cycles.
28466         (dump_constraint_graph): Likewise.
28467         (build_pred_graph): Likewise.
28468         (build_succ_graph): Likewise.
28469         (rewrite_constraints): Likewise.
28470         (do_simple_structure_copy): Remove.
28471         (do_rhs_deref_structure_copy): Remove.
28472         (do_lhs_deref_structure_copy): Remove.
28473         (collapse_rest_of_var): Remove.
28474         (do_structure_copy): Re-implement.
28475         (pta_stats): New global variable.
28476         (dump_pta_stats): New function.
28477         (struct constraint_expr): Make offset signed.
28478         (UNKNOWN_OFFSET): Define special value.
28479         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
28480         (solution_set_expand): New helper function split out from ...
28481         (do_sd_constraint): ... here.
28482         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
28483         (do_ds_constraint): Likewise.
28484         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
28485         and CALLUSED = *CALLUSED.
28486         (set_union_with_increment): Make inc argument signed.
28487         (type_safe): Remove.
28488         (get_constraint_for_ptr_offset): Handle unknown and negative
28489         constant offsets.
28490         (first_vi_for_offset): Handle offsets before start.  Bail
28491         out early for offsets beyond the variable extent.
28492         (first_or_preceding_vi_for_offset): New function.
28493         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
28494         Together with ESCAPED = *ESCAPED this properly computes reachability.
28495         (find_what_var_points_to): New function.
28496         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
28497         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
28498         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
28499         pt_solutions_intersect): New functions.
28500         (compute_call_used_vars): Remove.
28501         (compute_may_aliases): New main entry into PTA computation.
28502         * gimple.h (gimple_p): New typedef.
28503         (struct gimple_statement_base): Remove references_memory_p.
28504         (struct gimple_statement_with_memory_ops_base): Remove
28505         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
28506         members.
28507         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
28508         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
28509         gimple_set_references_memory): Remove.
28510         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
28511         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
28512         New functions.
28513         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
28514         (verify_expr): Allow RESULT_DECL.
28515         (gimple_duplicate_bb): Do not copy virtual operands.
28516         (gimple_duplicate_sese_region): Adjust.
28517         (gimple_duplicate_sese_tail): Likewise.
28518         (mark_virtual_ops_in_region): Remove.
28519         (move_sese_region_to_fn): Do not call it.
28520         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
28521         and pass_simple_dse.
28522         (execute_function_todo): Handle TODO_update_address_taken,
28523         call execute_update_addresses_taken for TODO_rebuild_alias.
28524         (execute_todo): Adjust.
28525         (execute_one_pass): Init dump files early.
28526         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
28527         call-clobbered.
28528         (create_general_new_stmt): Clear vops.
28529         * tree-ssa-reassoc.c (get_rank): Adjust.
28530         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
28531         symbols for renaming.
28532         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
28533         (PARAM_AVG_ALIASED_VOPS): Likewise.
28534         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
28535         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
28536         * tree-ssa-operands.c: Simplify for new virtual operand representation.
28537         (operand_build_cmp, copy_virtual_operands,
28538         create_ssa_artificial_load_stmt, add_to_addressable_set,
28539         gimple_add_to_addresses_taken): Remove public functions.
28540         (unlink_stmt_vdef): New function.
28541
28542 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28543
28544         * config.gcc (powerpc-*-linux*): Merge variants.
28545
28546 2009-04-02  Chao-ying Fu  <fu@mips.com>
28547             James Grosbach  <james.grosbach@microchip.com>
28548
28549         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
28550         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
28551         cop0_sp_offset.
28552         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
28553         keep_interrupts_masked_p, use_debug_exception_return_p.
28554         (mips_attribute_table): Add interrupt, use_shadow_register_set,
28555         keep_interrupts_masked, use_debug_exception_return.
28556         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
28557         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
28558         New functions.
28559         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
28560         (mips_print_operand): Process COP0 registers to print $0 .. $31
28561         correctly for GAS to process.
28562         (mips_interrupt_extra_call_saved_reg_p): New function.
28563         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
28564         extra registers.
28565         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
28566         (mips_compute_frame_info): Add supports for interrupt context that
28567         includes doubleword accumulators and COP0 registers.
28568         (mips_for_each_saved_acc): New function.
28569         (mips_for_each_saved_gpr_and_fpr): Change the function name from
28570         mips_for_each_saved_reg.
28571         (mips_save_reg): Save accumulators.
28572         (mips_kernel_reg_p): A new for_each_rtx callback.
28573         (mips_expand_prologue): Support interrupt handlers.
28574         (mips_restore_reg): Restore accumulators.
28575         (mips_expand_epilogue): Support interrupt handlers.
28576         (mips_can_use_return_insn): Return false for interrupt handlers.
28577         (mips_epilogue_uses): New function.
28578         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
28579         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
28580         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
28581         cop0_move): New instructions.
28582         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
28583         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
28584         defines.
28585         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
28586         New defines.
28587         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
28588         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
28589         interrupt handlers, we use K0 as the temporary register.
28590         (EPILOGUE_USES): Change to a function call.
28591         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
28592         handlers, we use K0 as the temporary register.
28593
28594         * doc/extend.texi (Function Attributes): Document interrupt,
28595         use_shadow_register_set, keep_interrupts_masked,
28596         use_debug_exception_return for MIPS attributes.
28597
28598 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28599
28600         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
28601         Remove a number of t-files from tmake_file.
28602         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
28603         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
28604         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
28605         target_prototype, not TARGET_PROTOTYPE.
28606         (LINK_OS_GNU_SPEC): Define.
28607         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
28608         and darwin-ldoubdle.c.
28609
28610 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
28611
28612         PR driver/39293
28613         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28614         (cpp_options): Ditto.
28615         (default_compilers): Ditto.
28616         (display_help): Ditto.
28617         (process_command): Ditto.
28618         (do_spec_1): Ditto.
28619         (set_input): Use lbasename instead of duplicate code.
28620         (save_temps_prefix): New static for -save-temps=obj.
28621         (save_temps_length): Ditto.
28622
28623         * doc/invoke.texi (-save-temps=obj): Document new variant to
28624         -save-temps switch.
28625
28626 2009-04-02  Jeff Law  <law@redhat.com>
28627
28628         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
28629         variable.
28630
28631 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28632
28633         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
28634         * configure: Regenerated.
28635
28636 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28637
28638         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
28639         share the argument list.
28640
28641 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28642
28643         Merge
28644
28645         2009-02-12  Diego Novillo  <dnovillo@google.com>
28646
28647         * varpool.c (debug_varpool): New.
28648         * cgraph.h (debug_varpool): Declare.
28649
28650 2009-04-02  Jan Hubicka  <jh@suse.cz>
28651
28652         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
28653         pass.
28654
28655 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28656
28657         * config/i386/i386.c (ix86_abi): Move initialization to ...
28658         (override_options): Here.
28659
28660 2009-04-02  Christian Bruel  <christian.bruel@st.com>
28661
28662         * config/sh/sh.c (sh_dwarf_register_span): New function.
28663         (TARGET_DWARF_REGISTER_SPAN): Define.
28664         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
28665
28666 2009-04-02  Ira Rosen  <irar@il.ibm.com>
28667
28668         PR tree-optimization/39595
28669         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
28670         interleaved loads group is not  greater than the SLP group size.
28671
28672 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28673
28674         * builtins.c (is_builtin_name): New.
28675         (called_as_built_in): Use is_builtin_name.
28676         * tree.h (is_builtin_name): New.
28677         * varasm.c (incorporeal_function_p): Use is_builtin_name
28678
28679 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
28680
28681         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
28682
28683 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
28684
28685         PR c++/26693
28686         * c-decl.c (clone_underlying_type): Move this ...
28687         * c-common.c (set_underlying_type): ... here.
28688         Also, make sure the function properly sets TYPE_STUB_DECL() on
28689         the newly created typedef variant type.
28690         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
28691         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
28692         points.
28693
28694 2009-04-02  Richard Guenther  <rguenther@suse.de>
28695
28696         PR tree-optimization/37221
28697         * tree-flow.h (degenerate_phi_result): Declare.
28698         * tree-ssa-dom.c (degenerate_phi_result): Export.
28699         * tree-scalar-evolution.c (analyze_initial_condition): If
28700         the initial condition is defined by a degenerate PHI node
28701         use the degenerate value.
28702
28703 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
28704
28705         PR rtl-optimization/39588
28706         * combine.c (merge_outer_ops): Do not set the constant when this
28707         is not necessary.
28708         (simplify_shift_const_1): Do not modify it either in this case.
28709
28710 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
28711
28712         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
28713         tuning is deprecated if -mtune value is set to an Itanium1 variant.
28714
28715 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
28716
28717         PR c/29027
28718         * c-lex.c (interpret_float): Default (no suffix) is double.
28719
28720 2009-04-1  Xinliang David Li  <davidxl@google.com>
28721
28722         * config/i386/i386.c (legitimate_constant_p): Recognize
28723         all one vector constant.
28724
28725 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28726
28727         * config/vax/vax.c: Add #includes to silence warnings.
28728         Change #include order to silence two warnings.
28729
28730 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28731
28732         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
28733         (ASM_SPEC): Pass -k to the assembler for PIC code.
28734
28735 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28736
28737         * config.gcc: Add vax-*-linux* to the switch.
28738         * config/vax/linux.h: New file. (TARGET_VERSION,
28739         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
28740
28741 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28742
28743         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
28744         Use predicate macros instead of GET_CODE() == foo.
28745         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
28746         ashlsi3, rotrsi3, <unnamed>): Likewise.
28747
28748 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28749
28750         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
28751         jbbccihi, jbbccisi): Remova trailing whitespace.
28752         * config/vax/constraints.md: Likewise.
28753         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
28754         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
28755         * config/vax/predicates.md: Likewise.
28756         * config/vax/vax.c (print_operand_address, vax_output_int_move,
28757         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
28758         * config/vax/vax.h: Likewise.
28759         * config/vax/vax.md (nonlocal_goto): Likewise.
28760
28761 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28762
28763         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
28764         (indirectable_address_p, adjacent_operands_p): Add spaces around
28765         braces.
28766         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
28767
28768 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28769
28770         * config/vax/vax.c (legitimate_constant_address_p,
28771         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
28772         index_term_p, reg_plus_index_p, legitimate_address_p,
28773         vax_mode_dependent_address_p): Update comments to match functions
28774         modified by the recent int->bool conversion.
28775
28776 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28777
28778         * config/vax/builtins.md: Update copyright message.
28779         * config/vax/constraints.md: Likewise.
28780         * config/vax/netbsd-elf.h: Likewise.
28781         * config/vax/predicates.md: Likewise.
28782         * config/vax/vax-protos.h: Likewise.
28783         * config/vax/vax.c: Likewise.
28784         * config/vax/vax.h: Likewise.
28785         * config/vax/vax.md: Likewise.
28786         * config/vax/vax.opt: Likewise.
28787
28788 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28789
28790         * config/vax/builtins.md (ffssi2, ffssi2_internal,
28791         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
28792         * config/vax/constraints.md (B, R): Likewise.
28793         * config/vax/predicates.md (external_memory_operand,
28794         nonimmediate_addsub_di_operand): Likewise.
28795         * config/vax/vax.c (vax_output_int_add): Likewise.
28796         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
28797         untyped_call): Likewise.
28798
28799 2009-04-01  Matt Thomas  <matt@3am-software.com>
28800
28801         * config/vax/predicates.md: New file.
28802         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
28803         external_const_operand, nonsymbolic_operand, external_memory_operand,
28804         indirect_memory_operand, indexed_memory_operand,
28805         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
28806         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
28807         predicate.
28808         * config/vax/constraints.md: New file.
28809         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
28810         New constraint.
28811         * config/vax/builtins.md: New file.
28812         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
28813         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
28814         jbbccisi): Define.
28815         * config/vax/vax.opt (mqmath): Add option.
28816         * config/vax/vax.md (isfx): Extend with DI.
28817         (VAXintQH, VAXintQHSD): Define.
28818         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
28819         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
28820         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
28821         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
28822         (movdi): Update constraints and use vax_output_int_move().
28823         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
28824         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
28825         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
28826         nonlocal_goto): New.
28827         (mov<mode>): Extend accepted operand types.
28828         (subdi3_old): Rename from subdi3, change update constraints and use
28829         a new implementation.
28830         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
28831         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
28832         MOVE_RATIO, CLEAR_RATIO): Define.
28833         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
28834         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
28835         (PRINT_OPERAND): Redefine using a function instead of inlined code.
28836         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
28837         (split_quadword_operands): Make static and really allow variable
28838         splitting.
28839         (print_operand_address): Update for PIC generation.
28840         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
28841         indexable_address_p, fixup_mathdi_operand,
28842         vax_expand_addsub_di_operands, adjacent_operands_p): New.
28843         (vax_float_literal, legitimate_constant_p,
28844         indirectable_constant_address_p, index_term_p,
28845         reg_plus_index_p): Return bool instead of int.
28846         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
28847         where needed.
28848         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
28849         generation.
28850         (vax_output_conditional_branch): Indent.
28851         (legitimate_constant_address_p, indirectable_constant_address_p,
28852         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
28853         vax_mode_dependent_address_p): Return bool instead of int, update for
28854         PIC generation.
28855         * config/vax/vax-protos.h (legitimate_constant_address_p,
28856         legitimate_constant_p, legitimate_address_p,
28857         vax_mode_dependent_address_p): Change declaration to bool.
28858         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
28859         vax_expand_addsub_di_operands, vax_output_int_subtract,
28860         vax_output_movmemsi): Declare.
28861         (split_quadword_operands, vax_float_literal): Delete declaration.
28862         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
28863         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
28864         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
28865         ASM_OUTPUT_DWARF_PCREL): Define.
28866         (ASM_SPEC): Change definition to allow PIC generation.
28867
28868 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
28869
28870         * doc/sourcebuild.texi: Update front-end requirements.
28871
28872 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28873
28874         PR target/39226
28875         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
28876         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
28877         (booldi3_internal3): Use boolean_or_operator instead of
28878         boolean_operator.
28879
28880 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
28881
28882         PR c/39605
28883         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
28884         declarator whose size is not an integer constant expression but
28885         folds to an integer constant, then treat it as a constant
28886         subsequently.
28887
28888 2009-04-01  Richard Guenther  <rguenther@suse.de>
28889
28890         * fold-const.c (fold_plusminus_mult_expr): Do not fold
28891         i * 4 + 2 to (i * 2 + 1) * 2.
28892
28893 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28894
28895         PR c/37772
28896         * c-parser.c (c_parser_asm_statement): Skip until close paren and
28897         return if c_parser_asm_string_literal returned NULL.
28898
28899 2009-04-01  Nick Clifton  <nickc@redhat.com>
28900
28901         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
28902         already defined.
28903         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
28904         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
28905         other typedefs to avoid conflicts with libgcc2.c.  Define labels
28906         to gain 16-bit bit-manipulation functions from libgcc2.c and then
28907         include it.
28908         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
28909         to gain 16-bit trapping arithmetic functions from libgcc2.c and
28910         then include it.
28911
28912 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
28913
28914         * varasm.c (default_function_rodata_section): Declare DOT as
28915         const char*.
28916
28917 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
28918             Andrey Galkin  <agalkin@hypercom.com>
28919
28920         PR/39492
28921         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
28922         Make object_name unique for each process.
28923
28924 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28925
28926         PR other/39591
28927         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
28928         addressable variables in the parallel that could go out of scope while
28929         running queued tasks.
28930
28931 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
28932
28933         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
28934         (CASE_VALUES_THRESHOLD): Redefine.
28935         * config/avr/avr.c (avr_override_options): Remove initialization of
28936         avr_case_values_threshold variable.
28937         (avr_case_values_threshold): Remove variable. Add new function.
28938         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
28939         * config/avr/avr.opt (mno-tablejump): Remove option.
28940         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
28941
28942 2009-04-01  DJ Delorie  <dj@redhat.com>
28943
28944         * varasm.c (default_function_rodata_section): Don't assume
28945         anything about where the first '.' in the section name is.
28946
28947 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
28948
28949         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
28950         rs6000_emit_stack_tie.
28951
28952 2009-03-31  Ian Lance Taylor  <iant@google.com>
28953
28954         * tree-eh.c (tree_remove_unreachable_handlers): Compare
28955         gimple_code with GIMPLE_RESX, not RESX.
28956
28957 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28958
28959         * c-common.c (c_get_ident): New.
28960         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
28961
28962 2009-04-01  Ben Elliston  <bje@au.ibm.com>
28963
28964         * config/rs6000/sysv4.opt (msdata): Improve option description.
28965
28966 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
28967
28968         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
28969         (divdf3_internal_lat): Remove.
28970         (divxf3_internal_lat): Remove.
28971         (divxf3_internal_thr): Remove.
28972         (divxf): Use divxf3_internal.
28973         * config/ia64/div.md (divsf3_internal_lat): New.
28974         (divdf3_internal_lat): New.
28975         (divxf3_internal): New.
28976
28977 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28978
28979         PR c/448
28980         * Makefile.in (USE_GCC_STDINT): Define.
28981         (stmp-int-hdrs): Install stdint.h if applicable.
28982         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
28983         if known.
28984         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
28985         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
28986         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28987         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28988         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28989         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28990         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28991         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28992         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28993         (c_common_nodes_and_builtins): Initialize
28994         underlying_wchar_type_node.  Do not initialize
28995         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
28996         nodes for new types.
28997         (c_stddef_cpp_builtins): Define macros for new types.
28998         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
28999         Remove.
29000         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
29001         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
29002         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
29003         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
29004         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
29005         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
29006         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
29007         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
29008         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
29009         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
29010         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
29011         int16_type_node, int32_type_node, int64_type_node,
29012         uint8_type_node, uint16_type_node, c_uint32_type_node,
29013         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
29014         int_least32_type_node, int_least64_type_node,
29015         uint_least8_type_node, uint_least16_type_node,
29016         uint_least32_type_node, uint_least64_type_node,
29017         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
29018         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
29019         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
29020         uintptr_type_node): Define.
29021         * c-cppbuiltin.c (builtin_define_constants,
29022         builtin_define_type_minmax): New.
29023         (builtin_define_stdint_macros): Define more macros.
29024         (c_cpp_builtins): Define more limit macros.
29025         (type_suffix): New.
29026         (builtin_define_type_max): Define in terms of
29027         builtin_define_type_minmax.  Remove is_long parameter.  All
29028         callers changed.
29029         * config.gcc (use_gcc_stdint): Define.
29030         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
29031         Add newlib-stdint.h for generic targets.
29032         * config/glibc-stdint.h, config/newlib-stdint.h,
29033         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
29034         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
29035         * config/score/score.h (UINTPTR_TYPE): Define.
29036         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
29037         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
29038         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29039         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29040         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29041         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29042         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29043         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29044         * config/spu/spu.h (STDINT_LONG32): Define.
29045         * configure.ac (use_gcc_stdint): Substitute.
29046         * configure: Regenerate.
29047         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
29048         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
29049         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
29050         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
29051         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
29052         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
29053         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
29054         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
29055         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
29056         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
29057         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
29058         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
29059         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
29060         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
29061         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
29062         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
29063         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
29064         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
29065         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
29066         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
29067         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
29068         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
29069         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29070         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29071         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29072         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29073         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29074         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29075         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
29076
29077 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
29078
29079         * loop-iv.c (suitable_set_for_replacement): Renamed from
29080         simplify_using_assignment; changed to return bool and to accept new
29081         args DEST and SRC.  Return true iff we find a source/destination pair
29082         that can be used to make a replacement, and fill SRC and DEST if so.
29083         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
29084         changed.
29085         (simplify_using_initial_values): Deal with altered regs here and track
29086         more precisely the effect they have on the validity of our expression.
29087
29088         * loop-iv.c (simplify_using_condition): A condition of the form
29089         (EQ REG CONST) can be used to simply make a substitution.
29090         (simplify_using_initial_values): Keep track of conditions we have seen
29091         and keep using them to simplify new expressions, while applying the
29092         same substitutions to them as to the expression.
29093
29094         * simplify-rtx.c (simplify_relational_operation_1): Simplify
29095         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
29096         GEU/LTU reversed.
29097
29098         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
29099         changed.  Use this when trying to improve the upper bound.
29100         Generate the comparison by using simplify_gen_relational.
29101
29102         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
29103
29104         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
29105         functions.
29106         (simplify_using_assignment, simplify_using_initial_values): Call
29107         replace_in_expr to make replacements.  Call replace_single_def_regs
29108         once on the initial version of the expression.
29109
29110 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29111
29112         PR target/27237
29113         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
29114
29115 2009-03-31  Richard Guenther  <rguenther@suse.de>
29116
29117         PR middle-end/31029
29118         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
29119         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
29120
29121 2009-03-31  Richard Guenther  <rguenther@suse.de>
29122
29123         * tree.h (div_if_zero_remainder): Declare.
29124         * fold-const.c (div_if_zero_remainder): Export.
29125         * tree-ssa-forwprop.c
29126         (forward_propagate_addr_into_variable_array_index): Handle
29127         constant array index addition outside of the variable index.
29128
29129 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29130
29131         PR target/39592
29132         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
29133         define_splits, floatunssi<mode>2): Require x87 conversions from
29134         DImode to be permitted.
29135
29136 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29137
29138         PR preprocessor/15638
29139         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
29140
29141 2009-03-31  Richard Guenther  <rguenther@suse.de>
29142
29143         PR middle-end/23401
29144         PR middle-end/27810
29145         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
29146         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
29147         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
29148         a separate statement.
29149         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
29150         (lookup_tmp_var): Likewise.
29151         (is_gimple_formal_tmp_or_call_rhs): Remove.
29152         (is_gimple_reg_or_call_rhs): Rename to ...
29153         (is_gimple_reg_rhs_or_call): ... this.
29154         (is_gimple_mem_or_call_rhs): Rename to ...
29155         (is_gimple_mem_rhs_or_call): ... this.
29156         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
29157         DECL_GIMPLE_REG_P only if is_formal is true.
29158         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
29159         for non-proper post-modify expression gimplification.
29160         (gimplify_self_mod_expr): For post-modify expressions gimplify
29161         the lvalue to a minimal lvalue.
29162         (rhs_predicate_for): Remove formal temp case.
29163         (gimplify_modify_expr_rhs): Likewise.
29164         (gimplify_addr_expr): Use is_gimple_reg.
29165         (gimplify_expr): Remove formal temp cases.
29166         (gimple_regimplify_operands): Likewise.
29167         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
29168         and FILTER_EXPR like constants.
29169         * gimple.c (walk_gimple_op): Fix val_only initialization, use
29170         is_gimple_reg.
29171         (is_gimple_formal_tmp_rhs): Remove.
29172         (is_gimple_reg_rhs): Remove special casing.
29173         (is_gimple_mem_rhs): Fix.
29174         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
29175         (is_gimple_formal_tmp_var): Remove.
29176         (is_gimple_formal_tmp_reg): Likewise.
29177         (is_gimple_min_lval): Allow invariant component ref parts.
29178         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
29179         is_gimple_formal_tmp_reg): Remove declarations.
29180         * tree-cfg.c (verify_expr): Verify that variables with address
29181         taken do not have DECL_GIMPLE_REG_P set.
29182         * tree-mudflap.c (mf_build_check_statement_for): Use
29183         force_gimple_operand instead of gimplify_expr.
29184
29185 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
29186
29187         * modulo-sched.c (sms_schedule_by_order): Pass the actual
29188         schedulable rows to compute_split_row.
29189
29190 2009-03-31  Ben Elliston  <bje@au.ibm.com>
29191
29192         PR target/31635
29193         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
29194         OPT_mvrsave.
29195
29196 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29197
29198         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
29199         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
29200         * configure: Regenerate.
29201         * config.in: Regenerate.
29202         * config/rs6000/rs6000.opt (mtls-markers): Add.
29203         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
29204         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
29205         (tls_ld_aix, tls_ld_sysv): Likewise.
29206         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
29207         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
29208
29209 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29210
29211         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
29212
29213 2009-03-30  Jan Hubicka  <jh@suse.cz>
29214
29215         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
29216         out of RESX.
29217         (tree_remove_unreachable_handlers): Cleanup EH predecestor
29218         detection and label handling.
29219
29220 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29221
29222         * ira-int.h (ira_allocno): Rename left_conflicts_num to
29223         left_conflicts_size.
29224         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
29225         ALLOCNO_LEFT_CONFLICTS_SIZE.
29226
29227         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
29228         remove_allocno_from_bucket_and_push,
29229         allocno_spill_priority_compare, push_allocnos_to_stack,
29230         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29231         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
29232         (setup_allocno_left_conflicts_num): Ditto.  Rename to
29233         setup_allocno_left_conflicts_size.
29234         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29235         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
29236         setup_allocno_left_conflicts_size instead of
29237         setup_allocno_left_conflicts_num.
29238
29239         * ira-build.c (ira_create_allocno): Use
29240         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
29241         ALLOCNO_LEFT_CONFLICTS_NUM.
29242
29243 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29244
29245         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
29246         instead of DF_LR_OUT.
29247
29248         * ira-lives.c (process_bb_node_lives): Ditto.
29249
29250         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
29251         instead of DF_LR_{OUT,IN}.
29252
29253         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
29254
29255         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
29256
29257 2009-03-30  Jan Hubicka  <jh@suse.cz>
29258
29259         * except.c (label_to_region_map): Fix thinko.
29260
29261 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
29262
29263         PR middle-end/38237
29264         * tree.h (tree_find_value): New declaration.
29265         * tree.c (tree_find_value): New function.
29266         * varasm.c (assemble_external): Avoid duplicate entries on lists.
29267
29268 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
29269
29270         PR debug/39563
29271         * c-decl.c (struct c_binding): Add locus field.
29272         (bind): Add locus argument, set locus field from it.
29273         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
29274         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
29275         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
29276         implicitly_declare, undeclared_variable, lookup_label,
29277         declare_label, c_make_fname_decl, c_builtin_function,
29278         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
29279         bind callers.
29280
29281 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
29282
29283         PR target/38781
29284         * config/i386/i386.c (classify_argument): Check total size of
29285         structure.
29286
29287 2009-03-30  Martin Jambor  <mjambor@suse.cz>
29288
29289         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
29290         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
29291         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
29292         respectively.
29293
29294         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
29295         seen_variable_array_ref while also traversing a union.
29296
29297         * tree-inline.c (optimize_inline_calls): Do not call
29298         cgraph_node_remove_callees.
29299         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
29300         (pass_remove_cgraph_callee_edges): New variable.
29301         * passes.c (init_optimization_passes): Add
29302         pass_remove_cgraph_callee_edges after early inlining and before all
29303         late intraprocedural passes.
29304
29305         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
29306
29307 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29308
29309         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
29310         Fix typos in names.
29311
29312 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29313
29314         * combine.c (simplify_comparison): Use have_insn_for.
29315         * dojump.c (do_jump): Likewise.
29316
29317 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29318
29319         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
29320         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
29321         sparc_compare_op0 like sparc_compare_emitted used to be handled.
29322         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
29323         instead of sparc_compare_emitted.
29324         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
29325         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
29326         instead of sparc_compare_emitted.
29327
29328 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29329
29330         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
29331         enter/exit cfglayout mode.
29332         (pass_partition_block): Require it.
29333         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
29334         (combine_instructions): Track basic blocks instead of labels.
29335         (update_cfg_for_uncondjump): New.
29336         (try_combine): Use it.  Update jumps after rescanning.
29337         (pass_combine): Require PROP_cfglayout.
29338         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
29339
29340 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29341
29342         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
29343         Provide/destroy PROP_cfglayout respectively.
29344         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
29345         * tree-pass.h (PROP_cfglayout): New.
29346
29347 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29348
29349         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
29350         fold_convert_const_fixed_from_fixed,
29351         fold_convert_const_fixed_from_int,
29352         fold_convert_const_fixed_from_real, fold_negate_const): Do not
29353         set TREE_CONSTANT_OVERFLOW.
29354         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
29355         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
29356
29357 2009-03-30  Ira Rosen  <irar@il.ibm.com>
29358
29359         * tree-vect-loop-manip.c: New file.
29360         * tree-vectorizer.c: Update documentation and included files.
29361         (vect_loop_location): Make extern.
29362         (rename_use_op): Move to tree-vect-loop-manip.c
29363         (rename_variables_in_bb, rename_variables_in_loop,
29364         slpeel_update_phis_for_duplicate_loop,
29365         slpeel_update_phi_nodes_for_guard1,
29366         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
29367         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
29368         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
29369         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
29370         find_loop_location): Likewise.
29371         (new_stmt_vec_info): Move to tree-vect-stmts.c.
29372         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
29373         get_vectype_for_scalar_type, vect_is_simple_use,
29374         supportable_widening_operation, supportable_narrowing_operation):
29375         Likewise.
29376         (bb_in_loop_p): Move to tree-vect-loop.c.
29377         (new_loop_vec_info, destroy_loop_vec_info,
29378         reduction_code_for_scalar_code, report_vect_op,
29379         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
29380         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
29381         (vect_supportable_dr_alignment): Likewise.
29382         * tree-vectorizer.h (tree-data-ref.h): Include.
29383         (vect_loop_location): Declare.
29384         Reorganize function declarations according to the new file structure.
29385         * tree-vect-loop.c: New file.
29386         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
29387         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
29388         * tree-vect-data-refs.c: New file.
29389         * tree-vect-patterns.c (timevar.h): Don't include.
29390         * tree-vect-stmts.c: New file.
29391         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
29392         tree-vect-slp.c, tree-vect-loop.c.
29393         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
29394         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
29395         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
29396         (tree-vect-analyze.o): Remove.
29397         (tree-vect-transform.o): Likewise.
29398         (tree-vect-data-refs.o): Add rule.
29399         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
29400         tree-vect-slp.o): Likewise.
29401         (tree-vect-patterns.o): Remove redundant dependencies.
29402         (tree-vectorizer.o): Likewise.
29403         * tree-vect-slp.c: New file.
29404
29405 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29406
29407         * optc-gen.awk: Warn if an option flag has multiple different
29408         help strings.
29409
29410 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
29411
29412         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
29413         -floop-block): Document dependences on PPL, CLooG and Graphite.
29414
29415 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29416
29417         PR rtl-optimization/323
29418         * c-common.c (c_fully_fold, convert_and_check,
29419         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
29420         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
29421         * c-common.def (EXCESS_PRECISION_EXPR): New.
29422         * c-cppbuiltin.c (builtin_define_float_constants): Define
29423         constants with enough digits for long double.
29424         * c-lex.c (interpret_float): Interpret constant with excess
29425         precision where appropriate.
29426         * c-opts.c (c_common_post_options): Set
29427         flag_excess_precision_cmdline.  Give an error for
29428         -fexcess-precision=standard for C++ for processors where the
29429         option is significant.
29430         * c-parser.c (c_parser_conditional_expression): Handle excess
29431         precision in condition.
29432         * c-typeck.c (convert_arguments): Handle arguments with excess
29433         precision.
29434         (build_unary_op): Move excess precision outside operation.
29435         (build_conditional_expr): Likewise.
29436         (build_compound_expr): Likewise.
29437         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
29438         (build_modify_expr): Handle excess precision in RHS.
29439         (convert_for_assignment): Handle excess precision in converted
29440         value.
29441         (digest_init, output_init_element, process_init_element): Handle
29442         excess precision in initializer.
29443         (c_finish_return): Handle excess precision in return value.
29444         (build_binary_op): Handle excess precision in operands and add
29445         excess precision as needed for operation.
29446         * common.opt (-fexcess-precision=): New option.
29447         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
29448         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
29449         For standard excess precision, output explicit conversion to and
29450         truncation from XFmode.
29451         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
29452         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
29453         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
29454         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
29455         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
29456         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
29457         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
29458         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
29459         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
29460         define_splits, sqrt<mode>2): Disable where appropriate for
29461         standard excess precision.
29462         * convert.c (convert_to_real): Do not shorten arithmetic to type
29463         for which excess precision would be used.
29464         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
29465         * doc/invoke.texi (-fexcess-precision=): Document option.
29466         (-mfpmath=): Correct index entry.
29467         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
29468         flag_excess_precision): New.
29469         * langhooks.c (lhd_post_options): Set
29470         flag_excess_precision_cmdline.
29471         * opts.c (common_handle_option): Handle -fexcess-precision=.
29472         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
29473         init_excess_precision): New.
29474         (lang_dependent_init_target): Call init_excess_precision.
29475         * tree.c (excess_precision_type): New.
29476         * tree.h (excess_precision_type): Declare.
29477
29478 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29479
29480         PR c/35235
29481         * c-typeck.c (build_component_ref): Do not copy qualifiers from
29482         non-lvalue to component.
29483
29484 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29485
29486         PR preprocessor/34695
29487         * Makefile.in (c-opts.o): Depend on c-tree.h.
29488         * c-common.c: Move down include of diagnostic.h.
29489         (done_lexing, c_cpp_error): New.
29490         * c-common.h (done_lexing): Declare.
29491         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
29492         (parse_in).
29493         * c-opts.c: Include c-tree.h.
29494         (c_common_init_options): Set preprocessor error callback.
29495         (c_common_handle_option): Do not set preprocessor
29496         inhibit_warnings, warnings_are_errors, warn_system_headers,
29497         pedantic_errors or inhibit_warnings flags.
29498         (c_common_post_options): Do not check cpp_errors (parse_in).
29499         (c_common_finish): Do not output dependencies if there were
29500         errors.  Do not check return value of cpp_finish.
29501         * c-ppoutput.c (pp_file_change): Set input_location.
29502         * c-tree.h (c_cpp_error): Declare.
29503         * diagnostic.c (diagnostic_set_info_translated): Also initialize
29504         override_column.
29505         (diagnostic_build_prefix): Check override_column.
29506         * diagnostic.h (diagnostic_info): Add override_column field.
29507         (diagnostic_override_column): Define.
29508
29509 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
29510
29511         * c-common.c (c_expand_expr, c_staticp): Remove.
29512         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
29513         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
29514         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
29515         * c-gimplify.c (gimplify_compound_literal_expr,
29516         optimize_compound_literals_in_ctor): Remove.
29517         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
29518         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
29519         * c-semantics.c (emit_local_var): Remove.
29520
29521         * langhooks-def.h (lhd_expand_expr): Remove.
29522         * langhooks.c (lhd_expand_expr): Remove.
29523         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
29524
29525         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
29526         handling from c-semantics.c; don't call into langhook.
29527         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
29528         * gimplify.c (gimplify_compound_literal_expr,
29529         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
29530         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
29531         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
29532         as was done in c-gimplify.c.
29533         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
29534         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
29535         Move from c-common.h.
29536         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
29537
29538         * tree.c (staticp): Do not call langhook.
29539         * langhooks.c (lhd_staticp): Delete.
29540         * langhooks-def.h (lhd_staticp): Delete prototype.
29541         (LANG_HOOKS_STATICP): Delete.
29542         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
29543
29544         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
29545         instead of DECL_STMTs.
29546
29547 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29548
29549         PR c/456
29550         PR c/5675
29551         PR c/19976
29552         PR c/29116
29553         PR c/31871
29554         PR c/35198
29555         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
29556         void_type_node.
29557         (fold_call_expr): Return a NOP_EXPR from folding rather than the
29558         contained expression.
29559         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
29560         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
29561         conditional expressions for C.
29562         (decl_constant_value_for_optimization): Move from
29563         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
29564         whether optimizing and that the expression is a VAR_DECL not of
29565         array type instead of doing such checks in the caller.  Do not
29566         check pedantic.  Call gcc_unreachable for C++.
29567         * c-common.def (C_MAYBE_CONST_EXPR): New.
29568         * c-common.h (c_fully_fold, c_save_expr,
29569         decl_constant_value_for_optimization): New prototypes.
29570         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
29571         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
29572         EXPR_INT_CONST_OPERANDS): Define.
29573         * c-convert.c (convert): Strip nops from expression.
29574         * c-decl.c (groktypename): Take extra parameters expr and
29575         expr_const_operands.  Update call to grokdeclarator.
29576         (start_decl): Update call to grokdeclarator.  Add statement for
29577         expressions used in type of decl.
29578         (grokparm): Update call to grokdeclarator.
29579         (push_parm_decl): Update call to grokdeclarator.
29580         (build_compound_literal): Add parameter non_const and build a
29581         C_MAYBE_COSNT_EXPR if applicable.
29582         (grokdeclarator): Take extra parameters expr and
29583         expr_const_operands.  Track expressions used in declaration
29584         specifiers and declarators.  Fold array sizes and track whether
29585         they are constant expressions and whether they are integer
29586         constant expressions.
29587         (parser_xref_tag): Set expr and expr_const_operands fields in
29588         return value.
29589         (grokfield): Update call to grokdeclarator.
29590         (start_function): Update call to grokdeclarator.
29591         (build_null_declspecs): Set expr and expr_const_operands fields in
29592         return value.
29593         (declspecs_add_type): Handle expressions in typeof specifiers.
29594         * c-parser.c (c_parser_declspecs): Set expr and
29595         expr_const_operands fields for declaration specifiers.
29596         (c_parser_enum_specifier): Likewise.
29597         (c_parser_struct_or_union_specifier): Likewise.
29598         (c_parser_typeof_specifier): Likewise.  Update call to
29599         groktypename.  Fold expression as needed.  Return expressions with
29600         type instead of adding statements.
29601         (c_parser_attributes): Update calls to c_parser_expr_list.
29602         (c_parser_statement_after_labels): Fold expression before passing
29603         to objc_build_throw_stmt.
29604         (c_parser_condition): Fold expression.
29605         (c_parser_asm_operands): Fold expression.
29606         (c_parser_conditional_expression): Use c_save_expr.  Update call
29607         to build_conditional_expr.
29608         (c_parser_alignof_expression): Update call to groktypename.
29609         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
29610         original_code.  Fold expression argument of va_arg.  Create
29611         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
29612         argument to va_arg.  Update calls to groktypename.  Fold array
29613         index for offsetof.  Verify that first argument to
29614         __builtin_choose_expr has integer type.
29615         (c_parser_postfix_expression_after_paren_type): Update calls to
29616         groktypename and build_compound_literal.  Handle expressions with
29617         side effects in type name.
29618         (c_parser_postfix_expression_after_primary): Update call to
29619         c_parser_expr_list.  Set original_code for calls to
29620         __builtin_constant_p.
29621         (c_parser_expr_list): Take extra parameter fold_p.  Fold
29622         expressions if requested.
29623         (c_parser_objc_type_name): Update call to groktypename.
29624         (c_parser_objc_synchronized_statement): Fold expression.
29625         (c_parser_objc_receiver): Fold expression.
29626         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
29627         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
29628         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
29629         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
29630         (struct c_typespec): Add elements expr and expr_const_operands.
29631         (struct c_declspecs): Add elements expr and expr_const_operands.
29632         (groktypename, build_conditional_expr, build_compound_literal):
29633         Update prototypes.
29634         (in_late_binary_op): Declare.
29635         * c-typeck.c (note_integer_operands): New function.
29636         (in_late_binary_op): New variable.
29637         (decl_constant_value_for_broken_optimization): Move to c-common.c
29638         and rename to decl_constant_value_for_optimization.
29639         (default_function_array_conversion): Do not strip nops.
29640         (default_conversion): Do not call
29641         decl_constant_value_for_broken_optimization.
29642         (build_array_ref): Do not fold result.
29643         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
29644         result when operand is a VLA.
29645         (c_expr_sizeof_type): Update call to groktypename.  Handle
29646         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
29647         result when operand names a VLA type.
29648         (build_function_call): Update call to build_compound_literal.
29649         Only fold result for calls to __builtin_* functions.  Strip
29650         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
29651         the function designator.
29652         (convert_arguments): Fold arguments.  Update call to
29653         convert_for_assignment.
29654         (build_unary_op): Handle increment and decrement of
29655         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
29656         decrement earlier.  Fold operand of increment and decrement.
29657         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
29658         built for integer operand.  Wrap returns that are INTEGER_CSTs
29659         without being integer constant expressions or that have integer
29660         constant operands without being INTEGER_CSTs.
29661         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
29662         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
29663         result is an integer constant expression or can be used in
29664         unevaluated parts of one and avoid folding and wrap as
29665         appropriate.  Fold operands before possibly doing -Wsign-compare
29666         warnings.
29667         (build_compound_expr): Wrap result for C99 if operands can be used
29668         in integer constant expressions.
29669         (build_c_cast): Update call to digest_init.  Do not ignore
29670         overflow from casting floating-point constants to integers.  Wrap
29671         results that could be confused with integer constant expressions,
29672         null pointer constants or floating-point constants.
29673         (c_cast_expr): Update call to groktypename.  Handle expressions
29674         included in type name.
29675         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
29676         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
29677         Update calls to convert_for_assignment.
29678         (convert_for_assignment): Take new parameter
29679         null_pointer_constant.  Do not strip nops or call
29680         decl_constant_value_for_broken_optimization.  Set
29681         in_late_binary_op for conversions to boolean.
29682         (store_init_value): Update call to digest_init.
29683         (digest_init): Take new parameter null_pointer_constant.  Do not
29684         call decl_constant_value_for_broken_optimization.  pedwarn for
29685         initializers not constant expressions.  Update calls to
29686         convert_for_assignment.
29687         (constructor_nonconst): New.
29688         (struct constructor_stack): Add nonconst element.
29689         (really_start_incremental_init, push_init_level, pop_init_level):
29690         Handle constructor_nonconst and nonconst element.
29691         (set_init_index): Call constant_expression_warning for array
29692         designators.
29693         (output_init_element): Fold value.  Set constructor_nonconst as
29694         applicable.  pedwarn for initializers not constant expressions.
29695         Update call to digest_init.  Call constant_expression_warning
29696         where constant initializers are required.
29697         (process_init_element): Use c_save_expr.
29698         (c_finish_goto_ptr): Fold expression.
29699         (c_finish_return): Fold return value.  Update call to
29700         convert_for_assignment.
29701         (c_start_case): Fold switch expression.
29702         (c_process_expr_stmt): Fold expression.
29703         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
29704         ensure statement expression is not evaluated in constant expression.
29705         (build_binary_op): Track whether results are integer constant
29706         expressions or may occur in such, disable folding and wrap results
29707         as applicable.  Fold operands for -Wsign-compare warnings unless
29708         in_late_binary_op.
29709         (c_objc_common_truthvalue_conversion): Handle results folded to
29710         integer constants that are not integer constant expressions.
29711         * doc/extend.texi: Document when typeof operands are evaluated,
29712         that condition of __builtin_choose_expr is an integer constant
29713         expression, and more about use of __builtin_constant_p in
29714         initializers.
29715
29716 2009-03-29  Richard Guenther  <rguenther@suse.de>
29717
29718         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
29719         propagate addresses of array references.
29720
29721 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
29722
29723         * regmove.c (perhaps_ends_bb_p): Remove.
29724         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
29725         from INSN and check that the main loop stays within that basic block.
29726         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
29727         (regmove_forward_pass): Split out from regmove_optimize.  Use
29728         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
29729         (regmove_backward_pass): Split out from regmove_optimize.  Use
29730         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
29731         (regmove_optimize): Simplify.
29732
29733 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29734
29735         PR target/39545
29736         * config/i386/i386.c (classify_argument): Ignore flexible array
29737         member in struct and warn ABI change.
29738
29739 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29740
29741         * config/i386/i386-protos.h (ix86_agi_dependent): New.
29742
29743         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
29744         (ix86_adjust_cost): Updated.
29745
29746 2009-03-29  Jan Hubicka  <jh@suse.cz>
29747
29748         PR middle-end/28850
29749         * tree-pass.h (pass_cleanup_eh): New function.
29750         (remove_unreachable_regions): Break code handling RTL
29751         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
29752         that can not be reached by runtime.
29753         (can_be_reached_by_runtime): New function.
29754         (label_to_region_map): New function.
29755         (num_eh_regions): New function.
29756         (rtl_remove_unreachable_regions): New function.
29757         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
29758         (remove_eh_region): New function.
29759         * except.h: Include sbitmap and vecprim.
29760         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
29761         num_eh_regions): Declare.
29762         * passes.c (init_optimization_passes): Schedule cleanup_eh.
29763         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
29764         * tree-eh.c (tree_remove_unreachable_handlers): New function.
29765         (tree_empty_eh_handler_p): New function.
29766         (cleanup_empty_eh): New function.
29767         (cleanup_eh): New function.
29768         (pass_cleanup_eh): New function.
29769
29770 2009-03-29  Jan Hubicka  <jh@suse.cz>
29771
29772         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
29773         for removed regions.
29774
29775 2009-03-29  Jan Hubicka  <jh@suse.cz>
29776
29777         * except.c (dump_eh_tree): Dump all datastructures.
29778
29779 2009-03-29  Jan Hubicka  <jh@suse.cz>
29780
29781         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
29782         (duplicate_eh_regions_1): Likewise.
29783         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
29784         vector; call EH verification.
29785         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29786         Be ready for region being removed.
29787
29788 2009-03-29  Jan Hubicka  <jh@suse.cz>
29789
29790         * bitmap.c (bitmap_last_set_bit): New function.
29791         * bitmap.h (bitmap_last_set_bit): Declare.
29792
29793 2009-03-29  David Ayers  <ayers@fsfe.org>
29794
29795         PR objc/27377
29796         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
29797         by calling objc_compare_types and surpress warnings about
29798         incompatible C pointers that are compatible ObjC pointers.
29799
29800 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
29801
29802         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
29803         call initialize_inline_failed.
29804         (initialize_inline_failed): Move it from here ...
29805         * cgraph.c (initialize_inline_failed): ... to here.
29806         (cgraph_create_edge): Call initialize_inline_failed rather than
29807         setting inline_failed directly.
29808
29809 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29810
29811         PR target/32542
29812         * sysv4.opt (msdata): Improve comment.
29813         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
29814         * sysv4.h (SVR4_ASM_SPEC): Likewise.
29815
29816 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29817
29818         PR target/30451
29819         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
29820         load and store attributes.
29821
29822 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29823
29824         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
29825         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
29826         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
29827         * doc/extend.texi (X86 Built-in Functions): Add index entries for
29828         __builtin_infq and __builtin_huge_valq.
29829
29830 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
29831
29832         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
29833         atmega8m1 devices.
29834         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
29835         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
29836
29837 2009-03-28  Xinliang David Li  <davidxl@google.com>
29838
29839         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
29840         (do_dbg_cnt): New function.
29841
29842 2009-03-28  Jan Hubicka  <jh@suse.cz>
29843
29844         Merge from pretty-ipa:
29845
29846         2009-03-27  Jan Hubicka  <jh@suse.cz>
29847
29848         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29849         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
29850         * passes.c (function_called_by_processed_nodes_p): New.
29851         * ipa-pure-const.c (check_call): Fix handling of operands.
29852         (analyze_function): Dump debug output for skipped bodies.
29853         (local_pure_const): Use function_called_by_processed_nodes_p.
29854         * dwarf2out.c (reference_to_unused): Use output.
29855         * passes.c (do_per_function_toporder): Likewise.
29856
29857         2008-11-12  Jan Hubicka  <jh@suse.cz>
29858
29859         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
29860         * ipa-pure-const.c (funct_state_d): Add can throw field; make
29861         state_set_in_source enum
29862         (check_decl): Ignore memory tags; do not set fake looping flags;
29863         dump diagnostics.
29864         (check_operand, check_tree, check_rhs_var, check_lhs_var,
29865         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
29866         (check_call, analyze_function): Rewrite.
29867         (check_stmt): New.
29868         (add_new_function): Update call of analyze_function.
29869         (generate_summary): Add call of analyze_function.
29870         (propagate): Propagate can_throw; handle state_set_in_source correctly.
29871         (local_pure_const): New function.
29872         (pass_local_pure_const): New pass.
29873         * ipa-inline.c (inline_transform): Set after_inlining.
29874         * tree-eh.c (stmt_can_throw_external): New.
29875         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
29876         work with aliasing built.
29877         * tree-flow.h (stmt_can_throw_external): New.
29878         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
29879         and local pure/const pass in early and late optimization queue.
29880
29881 2009-03-28  Martin Jambor  <mjambor@suse.cz>
29882
29883         * fold-const.c (get_pointer_modulus_and_residue): New parameter
29884         allow_func_align.
29885         (fold_binary): Allow function decl aligment consideration is the
29886         second argument is integer constant one.
29887         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
29888         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
29889         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
29890
29891 2009-03-28  Jan Hubicka  <jh@suse.cz>
29892
29893         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
29894         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
29895         * function.h (rtl_data): Add nothrow flag.
29896         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
29897         set DECL_NOTHROW for AVAILABLE functions.
29898
29899 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
29900
29901         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
29902         following vector keyword has expansion starting with pixel or bool
29903         keyword, expand vector to __vector and pixel or bool to __pixel or
29904         __bool.
29905
29906         PR c++/39554
29907         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
29908         warn_if_disallowed_function_p): Removed.
29909         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
29910         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
29911         warning_if_disallowed_function_p.
29912         * flags.h (warn_if_disallowed_function_p,
29913         warn_disallowed_functions): Removed.
29914         * common.opt (Wdisallowed-function-list=): Removed.
29915         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
29916
29917 2009-03-28  Richard Guenther  <rguenther@suse.de>
29918
29919         PR tree-optimization/38723
29920         * tree-ssa-pre.c (compute_avail): Add all default definitions to
29921         the entry block.
29922
29923 2009-03-28  Jan Hubicka  <jh@suse.cz>
29924
29925         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
29926         test introduced by my previous patch.
29927
29928 2009-03-28  Richard Guenther  <rguenther@suse.de>
29929
29930         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
29931         the PHIs value undefined.
29932
29933 2009-03-28  Jan Hubicka  <jh@suse.cz>
29934
29935         * tree-pass.h (pass_fixup_cfg): New pass.
29936         * ipa-inline.c (inline_transform): Set
29937         always_inline_functions_inlined/after_inlining.
29938         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
29939         (pass_fixup_cfg): New pass.
29940         * passes.c (init_optimization_passes): Add fixup_cfg.
29941
29942 2009-03-28  Richard Guenther  <rguenther@suse.de>
29943
29944         PR tree-optimization/38458
29945         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
29946         argument use the arguments copy-of value.
29947
29948 2009-03-28  Richard Guenther  <rguenther@suse.de>
29949
29950         PR tree-optimization/38180
29951         * tree-ssa-ccp.c (get_default_value): Simplify.
29952         (likely_value): Likewise.
29953         (surely_varying_stmt_p): Properly handle VOP case.
29954         (ccp_initialize): Likewise.
29955         (ccp_fold): Handle propagating through *&.
29956         (fold_const_aggregate_ref): Also handle decls.
29957
29958 2009-03-28  Jan Hubicka  <jh@suse.cz>
29959
29960         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29961         * cgraph.h (cgraph_node): Likewise.
29962         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
29963         (cgraph_reset_node): Use process flag.
29964         (cgraph_mark_functions_to_output): Likewise.
29965         (cgraph_expand_function): Likewise.
29966         (cgraph_expand_all_functions): Likewise.
29967         (cgraph_output_in_order): Likewise.
29968         * dwarf2out.c (reference_to_unused): Likewise.
29969         * passes.c do_per_function_toporder): Likewise.
29970
29971 2009-03-28  Jan Hubicka  <jh@suse.cz>
29972
29973         Bring from lto-branch:
29974
29975         2008-09-03  Doug Kwan  <dougkwan@google.com>
29976
29977         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
29978         enums instead of reason strings.
29979         * cgraph.c (cgraph_create_edge): Same.
29980         (cgraph_inline_failed_string): New function.
29981         * cgraph.h (cgraph_inline_failed_t): New enum type.
29982         (cgraph_inline_failed_string): New prototype.
29983         (struct cgraph_edge): Change type of INLINED_FAILED from constant
29984         char pointer to cgraph_inline_failed_t.
29985         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
29986         (cgraph_default_inline_p): Ditto.
29987         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
29988         to cgraph_inline_failed_t pointer.
29989         * cif-code.def: New file.
29990         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
29991         reason string.
29992         (cgraph_check_inline_limits): Change type of REASON to pointer to
29993         cgraph_inline_failed_t.  Replace reason strings with enums.
29994         (cgraph_default_inline_p): Ditto.
29995         (cgraph_recursive_inlining_p): Ditto.
29996         (update_caller_keys): Change type of FAILED_REASON to
29997         cgraph_inline_failed_t.
29998         (cgraph_set_inline_failed): Change type of REASON to pointer to
29999         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
30000         convert enums to strings for text output.
30001         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
30002         to be of type cgraph_inline_failed_t.  Replace reason strings with
30003         enums.  Call cgraph_inline_failed_string to covert enums
30004         to strings for text output.
30005         (cgraph_decide_inlining): Replace reason strings with enums.
30006         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
30007         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
30008         for text output.
30009         * tree-inline.c (expand_call_inline): Change type of REASON
30010         to cgraph_inline_failed_t.  Replace reason strings with enums.
30011         Call cgraph_inline_failed_string for text output.
30012         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
30013         (cgraph.o): Ditto.
30014
30015 2009-03-28  Jan Hubicka  <jh@suse.cz>
30016
30017         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
30018         cgraph_clone_node): Remove master clone handling.
30019         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30020         * cgraph.h (master_clone): Remove.
30021         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30022         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
30023         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
30024
30025 2009-03-28  Jan Hubicka  <jh@suse.cz>
30026
30027         * cgraph.c (cgraph_function_body_availability): Functions declared
30028         inline are always safe to assume that it is not going to be replaced.
30029
30030 2009-03-28  Richard Guenther  <rguenther@suse.de>
30031
30032         PR tree-optimization/38513
30033         * tree-ssa-pre.c (eliminate): Remove redundant stores.
30034         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
30035         EXC_PTR_EXPR and FILTER_EXPR.
30036         (get_ref_from_reference_ops): Likewise.
30037
30038 2009-03-28  Richard Guenther  <rguenther@suse.de>
30039
30040         PR tree-optimization/38968
30041         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
30042         Use FLOOR_MOD_EXPR to compute misalignment.
30043
30044 2009-03-28  Richard Guenther  <rguenther@suse.de>
30045
30046         PR tree-optimization/37795
30047         * tree.h (combine_comparisons): Declare.
30048         * fold-const.c (combine_comparisons): Export.
30049         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
30050         comparisons.
30051         (ifcombine_iforif): Use combine_comparisons.
30052
30053 2009-03-28  Jan Hubicka  <jh@suse.cz>
30054
30055         * tree-eh.c (inlinable_call_p): New function.
30056         (make_eh_edges): Use it.
30057         (verify_eh_edges): Use it.
30058         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
30059         * except.c (reachable_next_level): Add inlinable_function argument
30060         (sjlj_find_directly_reachable_regions): Update.
30061         (add_reachable_handler): Do not set saw_any_handlers.
30062         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
30063         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30064         Add new inlinable call parameter.
30065         (can_throw_internal, can_throw_external): Update.
30066         * except.h (can_throw_internal_1, can_throw_external_1,
30067         foreach_reachable_handler): Update declaration.
30068
30069 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
30070
30071         * config/arm/t-arm-coff, config/h8300/coff.h,
30072         config/i386/i386-aout.h, config/i386/i386-coff.h,
30073         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
30074         config/pdp11/2bsd.h, config/rs6000/aix41.h,
30075         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
30076         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
30077         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
30078         sys-types.h: Remove.
30079         * Makefile.in: Remove protoize and fixproto support and references
30080         in comments.
30081         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
30082         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
30083         Remove.
30084         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
30085         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
30086         unprotoize$(exeext).
30087         (rest.encap): Don't depend on $(STMP_FIXPROTO)
30088         (.PHONY): Don't depend on proto.
30089         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
30090         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
30091         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
30092         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
30093         build/gen-protos.o, build/scan.o, xsys-protos.h,
30094         build/fix-header$(build_exeext), build/fix-header.o,
30095         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
30096         stmp-install-fixproto): Remove.
30097         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
30098         SYSCALLS.c or fixproto files.
30099         (install-common): Don't install protoize.
30100         (install-headers-tar, install-headers-cpio, install-headers-cp):
30101         Don't depend on $(STMP_FIXPROTO).
30102         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
30103         install fixproto files or write out fixproto settings.
30104         (uninstall): Don't uninstall protoize.
30105         * config.gcc (use_fixproto): Remove.
30106         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
30107         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
30108         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
30109         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
30110         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
30111         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
30112         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
30113         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
30114         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
30115         * config/t-vxworks (STMP_FIXPROTO): Remove.
30116         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
30117         STMP_FIXPROTO): Remove.
30118         * config.in, configure: Regenerate.
30119         * crtstuff.c (gid_t, uid_t): Don't undefine.
30120         * doc/install.texi: Change m68k-coff to m68k-elf in example.
30121         (arm-*-coff, arm-*-aout: Remove target entries.
30122         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
30123         Remove mention of AIX 4.1.
30124         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
30125         * doc/invoke.texi (Running Protoize): Remove.
30126         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
30127         (Protoize Caveats): Remove.
30128         * tsystem.h: Update comments on headers assumed to exist.
30129
30130 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
30131
30132         * genautomata.c: Add a new year to the copyright.  Add a new
30133         reference.
30134         (struct insn_reserv_decl): Add comments for member bypass_list.
30135         (find_bypass): Remove.
30136         (insert_bypass): New.
30137         (process_decls): Use insert_bypass.
30138         (output_internal_insn_latency_func): Output all bypasses with the
30139         same input insn in one switch case.
30140
30141         * rtl.def (define_bypass): Describe bypass choice.
30142         * doc/md.texi (define_bypass): Ditto.
30143
30144 2009-03-27  Richard Guenther  <rguenther@suse.de>
30145
30146         * gimplify.c (mark_addressable): Export.
30147         * tree-flow.h (mark_addressable): Declare.
30148         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
30149         * tree-ssa.c (verify_phi_args): Verify that address taken
30150         variables have TREE_ADDRESSABLE set.
30151
30152 2009-03-27  Richard Guenther  <rguenther@suse.de>
30153
30154         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
30155         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
30156         Do not mark decls TREE_ADDRESSABLE.
30157         (build_fold_addr_expr): Adjust.
30158         (fold_addr_expr): Remove.
30159         (fold_unary): Use build_fold_addr_expr.
30160         (fold_comparison): Likewise.
30161         (split_address_to_core_and_offset): Likewise.
30162         * coverage.c (tree_coverage_counter_addr): Mark the array decl
30163         TREE_ADDRESSABLE.
30164         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
30165         (gimplify_modify_expr_to_memcpy): Mark source and destination
30166         addressable.
30167         * omp-low.c (create_omp_child_function): Mark the object decl
30168         TREE_ADDRESSABLE.
30169         (lower_rec_input_clauses): Mark the var we take the address of
30170         TREE_ADDRESSABLE.
30171         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
30172
30173 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30174
30175         PR middle-end/39315
30176         * cfgexpand.c (expand_one_stack_var_at): Change alignment
30177         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
30178
30179 2009-03-27  Richard Guenther  <rguenther@suse.de>
30180
30181         PR tree-optimization/39120
30182         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
30183         constraints.
30184         (handle_lhs_call): Process return constraints.  Add escape
30185         constraints if necessary.
30186         (handle_const_call): Fill out return constraints.  Make nested
30187         case more precise.  Avoid consttmp if possible.
30188         (handle_pure_call): Fill out return constraints.  Avoid
30189         callused if possible.
30190         (find_func_aliases): Simplify call handling.
30191
30192 2009-03-27  Richard Guenther  <rguenther@suse.de>
30193
30194         PR tree-optimization/39120
30195         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
30196         as a representative.
30197         (solve_graph): Do propagate CALLUSED.
30198         (handle_pure_call): Use a scalar constraint from CALLUSED for
30199         the return value.
30200         (find_what_p_points_to): CALLUSED shall not appear in poins-to
30201         solutions.
30202
30203 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30204
30205         PR c/39323
30206         * c-common.c (handle_aligned_attribute): Properly check alignment
30207         overflow.  Use (1U << i) instead of (1 << i).
30208
30209         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
30210
30211         * expr.h (get_mem_align_offset): Updated.
30212
30213         * tree.h (tree_decl_common): Change align to "unsigned int" and
30214         move it before pointer_alias_set.
30215
30216 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30217             Jakub Jelinek  <jakub@redhat.com>
30218
30219         PR target/38034
30220         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
30221         gr_register_operand with gr_reg_or_0_operand.
30222         (cmpxchg_rel_di): Likewise.
30223         (sync_lock_test_and_set<mode>): Likewise.
30224
30225 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30226
30227         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
30228         (true_regnum): Likewise.
30229
30230         * rtlanal.c (subreg_info): Moved to ...
30231         * rtl.h (subreg_info): Here.  New.
30232         (subreg_get_info): New.
30233
30234         * rtlanal.c (subreg_get_info): Make it extern.
30235
30236 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30237
30238         PR target/39472
30239         * config/i386/i386.c (ix86_abi): New.
30240         (override_options): Handle -mabi=.
30241         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
30242         (ix86_call_abi_override): Likewise.
30243         (init_cumulative_args): Likewise.
30244         (function_arg_advance): Likewise.
30245         (function_arg_64): Likewise.
30246         (function_arg): Likewise.
30247         (ix86_pass_by_reference): Likewise.
30248         (ix86_function_value_regno_p): Likewise.
30249         (ix86_build_builtin_va_list_abi): Likewise.
30250         (setup_incoming_varargs_64): Likewise.
30251         (is_va_list_char_pointer): Likewise.
30252         (ix86_init_machine_status): Likewise.
30253         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
30254         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
30255         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
30256         (ix86_function_abi): Make it static and return enum calling_abi.
30257         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
30258         with ix86_abi.
30259         (ix86_fn_abi_va_list): Updated.
30260
30261         * config/i386/i386.h (ix86_abi): New.
30262         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
30263         (CONDITIONAL_REGISTER_USAGE): Likewise.
30264         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
30265         (machine_function): Likewise.
30266
30267         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
30268         with ix86_abi.
30269         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
30270         (STACK_BOUNDARY): Likewise.
30271         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
30272
30273         * config/i386/i386.opt (mabi=): New.
30274
30275         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
30276         return enum calling_abi.
30277         (ix86_function_type_abi): Likewise.
30278         (ix86_function_abi): Removed.
30279
30280         * doc/invoke.texi: Document -mabi= option for x86.
30281
30282 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30283
30284         * builtins.c (real_dconstp): Delete.
30285         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
30286
30287 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
30288             Jakub Jelinek  <jakub@redhat.com>
30289
30290         PR debug/37959
30291         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
30292         (gen_subprogram_die): When a function is explicit, generate the
30293         DW_AT_explicit attribute.
30294         * langhooks.h (struct lang_hooks_for_decls): Add
30295         function_decl_explicit_p langhook.
30296         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
30297         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
30298
30299 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
30300
30301         * builtins.c (fold_builtin_memory_op): Optimize memmove
30302         into memcpy if we can prove source and destination don't overlap.
30303
30304         * tree-inline.c: Include gt-tree-inline.h.
30305         (clone_fn_id_num): New variable.
30306         (clone_function_name): New function.
30307         (tree_function_versioning): Use it.
30308         * Makefile.in (GTFILES): Add tree-inline.c.
30309
30310 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
30311
30312         * BASE-VER: Change to 4.5.0.
30313
30314 2009-03-27  Xinliang David Li  <davidxl@google.com>
30315
30316         PR tree-optimization/39557
30317         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
30318
30319 2009-03-27  Xinliang David Li  <davidxl@google.com>
30320
30321         PR tree-optimization/39548
30322         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
30323         candidate check.
30324
30325 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30326
30327         * c-common.c (pointer_int_sum): Use %wd on return from
30328         tree_low_cst.
30329
30330 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30331
30332         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
30333         on return from tree_low_cst.
30334
30335 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30336
30337         PR c++/36799
30338         * ginclude/stdarg.h (va_copy): Define also for
30339         __GXX_EXPERIMENTAL_CXX0X__.
30340
30341 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30342
30343         PR c++/35652
30344         * builtins.h (c_strlen): Do not warn here.
30345         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
30346         * c-common.c (pointer_int_sum): Take an explicit location.
30347         Warn about offsets out of bounds.
30348         * c-common.h (pointer_int_sum): Adjust declaration.
30349
30350 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30351
30352         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
30353         markup glitch.
30354
30355 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
30356
30357         PR c++/39554
30358         * opts.c (warn_if_disallowed_function_p): Don't assume
30359         get_callee_fndecl must return non-NULL.
30360
30361 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
30362
30363         PR rtl-optimization/39522
30364         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
30365         when reg_reloaded_valid is set.
30366
30367 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30368
30369         * config/spu/divv2df3.c: New file.
30370         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
30371         (DPBIT_FUNCS): Filter out _div_df.
30372
30373 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
30374
30375         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
30376         a jump insn, count that jump in the distance to the loop start.
30377
30378 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
30379
30380         PR target/39523
30381         * config/sh/sh.c (calc_live_regs): Fix condition for global
30382         registers except PIC_OFFSET_TABLE_REGNUM.
30383
30384 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
30385
30386         PR/39518
30387         * doc/invoke.texi (-mconsole): New.
30388         (-mcygwin): New.
30389         (-mno-cygwin): New.
30390         (-mdll): New.
30391         (-mnop-fun-dllimport): New.
30392         (-mthread): New.
30393         (-mwin32): New.
30394         (-mwindows): New.
30395         (sub section "i386 and x86-64 Windows Options"): New.
30396
30397 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
30398
30399         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
30400         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
30401
30402 2009-03-25  Richard Guenther  <rguenther@suse.de>
30403
30404         PR middle-end/39497
30405         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
30406         of -Wno-error.
30407
30408 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
30409
30410         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
30411         neither of haifa/selective schedulers are working.
30412
30413 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30414
30415         * doc/invoke.texi (Debugging Options): Fix description of
30416         -fno-merge-debug-strings.
30417
30418 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
30419
30420         * config/cris/libgcc.ver: New version-script.
30421         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
30422
30423         * configure.ac <GAS features, nop mnemonic>: Add pattern
30424         crisv32-*-* for "nop".
30425         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
30426         * configure: Regenerate.
30427
30428 2009-03-24  Ira Rosen  <irar@il.ibm.com>
30429
30430         PR tree-optimization/39529
30431         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
30432         mark_sym_for_renaming for the tag copied to the new vector
30433         pointer.
30434
30435 2009-03-24  Arthur Loiret  <aloiret@debian.org>
30436
30437         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
30438         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
30439         EXTRA_SPEC_FUNCTIONS.
30440         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
30441         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
30442         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
30443         -march and -mtune options.
30444
30445 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
30446
30447         * config/m68k/t-rtems: Add m5329 multilib.
30448
30449 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
30450             Jakub Jelinek  <jakub@redhat.com>
30451
30452         PR debug/39524
30453         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
30454         nodes.
30455
30456 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30457
30458         PR c/39495
30459         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
30460         instead of c_parser_expression_conv, if original_code isn't one of the
30461         4 allowed comparison codes, fail.
30462
30463 2009-03-23  Richard Guenther  <rguenther@suse.de>
30464
30465         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
30466         * tree.h (struct tree_type): Likewise.
30467         * reload.h (struct insn_chain): Likewise.
30468         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
30469         * function.h (struct function): Likewise.
30470         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
30471
30472 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30473
30474         PR tree-optimization/39516
30475         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
30476
30477 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
30478
30479         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
30480         should be set true if BITS_PER_WORD of target is bigger than 32
30481
30482 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
30483
30484         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
30485         Translate -B-options to -rpath-link.  Correct existing
30486         rpath-link and conditionalize on !nostdlib.
30487
30488 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30489
30490         * doc/extend.texi (Function Attributes, Variable Attributes):
30491         Fix typos.
30492         * doc/invoke.texi (Debugging Options, Optimize Options)
30493         (i386 and x86-64 Options, MCore Options): Likewise.
30494
30495 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
30496
30497         PR debug/37890
30498         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
30499         it for block local namespace aliases.
30500         (gen_decl_die): Pass context_die to gen_namespace_die.
30501
30502 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30503
30504         PR c/39495
30505         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
30506         minimum or maximum value.
30507
30508 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
30509
30510         * reginfo.c (globalize_reg): Recompute derived reg sets.
30511
30512 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
30513
30514         PR target/39063
30515         * libgcc2.c (mprotect): Do not use signed arguments for
30516         VirtualProtect, use DWORD arguments.  Also fix the 'may
30517         be used uninitialized' warning for the np variable.
30518
30519 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30520
30521         PR target/39496
30522         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
30523         functions using regparm calling conventions when not optimizing.
30524         (ix86_function_sseregparm): Similarly for sseregparm calling
30525         conventions.
30526
30527 2009-03-19  Li Feng  <nemokingdom@gmail.com>
30528
30529         PR middle-end/39500
30530         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
30531         dependence if the first conflict is after niter iterations.
30532
30533 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
30534
30535         PR middle-end/38609
30536         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
30537         functions with dynamic stack-pointer adjustments.
30538
30539 2009-03-19  Ben Elliston  <bje@au.ibm.com>
30540
30541         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
30542         option; change to -msdata=data.
30543
30544 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30545
30546         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
30547         and -fopenmp.
30548
30549 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
30550
30551         PR target/35180
30552         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
30553
30554 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
30555
30556         * doc/invoke.texi (Code Gen Options): Expand discussion of
30557         -fno-common.
30558
30559 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
30560
30561         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
30562         * matrix-reorg.c (struct matrix_info): Likewise.
30563         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
30564         * rtl.h (struct mem_attrs): Likewise.
30565         * df.h (struct df): Likewise.
30566         * tree-data-ref.h (struct data_dependence_relation): Likewise.
30567         * ira-int.h (struct ira_allocno): Likewise.
30568         * df-scan.c (struct df_collection_rec): Likewise.
30569         * ira.c (struct equivalence): Likewise.
30570         * function.c (struct temp_slot): Likewise.
30571         * cfgloop.h (struct loop): Likewise.
30572
30573         PR debug/39485
30574         * function.c (use_register_for_decl): When not optimizing, disregard
30575         register keyword for variables with types containing methods.
30576
30577 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
30578
30579         PR middle-end/39447
30580         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
30581         (is_simple_operand): Call contains_component_ref_p before calling data
30582         reference analysis that would fail on COMPONENT_REFs.
30583
30584         * tree-vrp.c (search_for_addr_array): Fix formatting.
30585
30586 2009-03-18  Richard Guenther  <rguenther@suse.de>
30587
30588         * tree-vect-transform.c (vect_loop_versioning): Fold the
30589         generated comparisons.
30590         * tree-vectorizer.c (set_prologue_iterations): Likewise.
30591         (slpeel_tree_peel_loop_to_edge): Likewise.
30592
30593 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30594
30595         PR middle-end/37805
30596         * opts.c (print_specific_help): In addition to `undocumented',
30597         accept `separate' and `joined' flags if passed alone.  Describe
30598         output by the first matched one of those.
30599         (common_handle_option): Skip over empty strings.
30600         * gcc.c (display_help): Fix help string for `--help='.
30601         * doc/invoke.texi (Option Summary, Overall Options): With
30602         `--help=', classes and qualifiers can both be repeated, but
30603         only the latter can be negated.  One should not pass only
30604         negated qualifiers.  Fix markup and examples.
30605
30606         Revert
30607         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
30608         PR middle-end/37805
30609         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
30610         and -fhelp=separate.
30611
30612 2009-03-17  Jing Yu  <jingyu@google.com>
30613
30614         PR middle-end/39378
30615         * function.h (struct rtl_data): Move is_thunk from here...
30616         (struct function): ...to here.
30617         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30618         * varasm.c (assemble_start_function): Change is_thunk from crtl to
30619         cfun.
30620         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
30621         cfun.
30622         (alpha_does_function_need_gp, alpha_start_function): Likewise.
30623         (alpha_output_function_end_prologue): Likewise.
30624         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
30625         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
30626         (rs6000_output_function_epilogue): Likewise.
30627         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
30628
30629 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
30630
30631         PR target/39482
30632         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
30633         from different units in a single alternative.
30634         (*truncdfsf_i387): Ditto.
30635         (*truncxfsf2_mixed): Ditto.
30636         (*truncxfdf2_mixed): Ditto.
30637
30638 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
30639
30640         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
30641         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
30642
30643         PR debug/39474
30644         * tree-ssa-live.c (remove_unused_locals): Don't remove local
30645         unused non-artificial variables when not optimizing.
30646
30647         PR debug/39471
30648         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
30649         DW_TAG_imported_module even if decl is IMPORTED_DECL with
30650         NAMESPACE_DECL in its DECL_INITIAL.
30651
30652         PR middle-end/39443
30653         * optabs.c (set_user_assembler_libfunc): New function.
30654         * expr.h (set_user_assembler_libfunc): New prototype.
30655         * c-common.c: Include libfuncs.h.
30656         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
30657         for memcmp, memset, memcpy, memmove and abort.
30658         * Makefile.in (c-common.o): Depend on libfuncs.h.
30659
30660         PR debug/39412
30661         * dwarf2out.c (gen_inlined_enumeration_type_die,
30662         gen_inlined_structure_type_die, gen_inlined_union_type_die,
30663         gen_tagged_type_instantiation_die): Removed.
30664         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
30665         do nothing.
30666
30667 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
30668
30669         PR testsuite/38526
30670         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
30671         its use.
30672         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
30673         (check-parallel-%): Ditto.
30674         (check-consistency): Ditto.
30675
30676 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
30677
30678         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
30679         local variable rhs by NULL_TREE.
30680
30681 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30682
30683         PR target/39477
30684         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
30685
30686 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30687
30688         PR target/39476
30689         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
30690
30691 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30692
30693         PR target/39473
30694         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
30695         for ms->sysv ABI calls only in 64bit mode.
30696
30697         * config/i386/i386.md (untyped_call): Support 32bit.
30698
30699 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
30700
30701         * doc/extend.texi: Replace x86_65 with x86_64.
30702
30703 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
30704
30705         PR tree-optimization/39455
30706         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
30707         mismatches for POINTER_TYPE_P (type).
30708         (number_of_iterations_le): Likewise.
30709
30710 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30711
30712         * config/picochip/picochip.c: Removed profiling support.
30713         * config/picochip/picochip.md: Removed profiling instruction.
30714         * config/picochip/picochip.h: Removed profiling builtin.
30715
30716 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
30717
30718         * doc/install.texi (--with-host-libstdcxx): Document.
30719
30720 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
30721
30722         PR target/34299
30723         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
30724         generate a warning if the function name does not begin with
30725         "__vector" and the function has either the 'signal' or 'interrupt'
30726         attribute, from here to ...
30727         (avr_declare_function_name): ...here. New function.
30728         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
30729         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
30730
30731 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
30732
30733         PR bootstrap/39454
30734         * cse.c (fold_rtx): Don't modify original const_arg1 when
30735         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
30736         separate variable instead.
30737         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
30738         from out of range shift counts.
30739         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
30740
30741 2009-03-13  Catherine Moore  <clm@codesourcery.com>
30742
30743         * config/i386/x-mingw32 (host-mingw32.o): Replace
30744         diagnostic.h with $(DIAGNOSTIC_H).
30745
30746 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
30747
30748         PR target/39431
30749         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
30750         predicate.
30751         * config/i386/sync.md (sync_compare_and_swap<mode>,
30752         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
30753         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
30754         into a register.
30755         (sync_double_compare_and_swapdi_pic,
30756         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
30757         cmpxchg8b_pic_memory_operand instead of just memory_operand.
30758
30759 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30760
30761         PR target/39445
30762         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
30763
30764 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30765
30766         PR target/39327
30767         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30768         (avx_addsubv4df3): Likewise.
30769         (*avx_addsubv4sf3): Likewise.
30770         (sse3_addsubv4sf3): Likewise.
30771
30772 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30773
30774         PR target/38824
30775         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
30776
30777 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
30778
30779         PR debug/39432
30780         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
30781         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
30782         registers for allocnos created from user-defined variables.
30783
30784 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30785
30786         PR target/39181
30787         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
30788         of non-integer mode as well.
30789
30790 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
30791
30792         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
30793         for functions for which the parameter types are unknown.
30794
30795 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
30796
30797         PR target/39137
30798         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
30799         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
30800         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
30801         * config/i386/i386.c (ix86_local_alignment): For
30802         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
30803         long long variables on the stack to avoid dynamic realignment.
30804         Allow the first argument to be a decl rather than type.
30805         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
30806
30807 2009-03-11  Nick Clifton  <nickc@redhat.com>
30808
30809         PR target/5362
30810         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
30811         options.
30812         Add description to mno-lsim option.
30813         * config/mcore/mcore.h: Remove comment about deprecated m4align
30814         option.
30815         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
30816         * doc/invoke.texi: Add description of mno-lsim and
30817         mstack-increment options.
30818
30819         * config/fr30/fr30.opt: Document the -mno-lsim option.
30820         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
30821         and -mno-lsim options.
30822
30823 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30824
30825         * fold-const.c (fold_comparison): Only call fold_inf_compare
30826         if the mode supports infinities.
30827
30828 2009-03-11  Jason Merrill  <jason@redhat.com>
30829
30830         PR debug/39086
30831         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
30832         end already did.  Notice GIMPLE_CALL modifications of the result.
30833         Don't copy debug information from an ignored decl or a decl from
30834         another function.
30835
30836 2009-03-10  Richard Guenther  <rguenther@suse.de>
30837             Nathan Froyd  <froydnj@codesourcery.com>
30838
30839         PR middle-end/37850
30840         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
30841         (__divMODE3): Likewise.
30842
30843 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
30844
30845         PR tree-optimization/39394
30846         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
30847         DECL_SIZE_UNIT of variable length FIELD_DECLs.
30848
30849 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30850
30851         * recog.c (verfiy_changes): Disallow renaming of hard regs in
30852         inline asms for register asm ("") declarations.
30853
30854 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
30855
30856         * fold-const.c (fold_unary): Fix comment.
30857
30858 2009-03-07  Jan Hubicka  <jh@suse.cz>
30859
30860         PR target/39361
30861         * tree-inline.c (setup_one_parameter): Do replacement of const
30862         argument by constant in SSA form.
30863
30864 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30865
30866         PR middle-end/38028
30867         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
30868         determine alignment passed to assign_stack_local.
30869         (assign_parms_unsplit_complex): Likewise.
30870         * except.c (sjlj_build_landing_pads): Likewise.
30871
30872 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30873
30874         PR middle-end/39360
30875         * tree-flow.h (add_referenced_var): Return bool instead of void.
30876         * tree-dfa.c (add_referenced_var): Return result of
30877         referenced_var_check_and_insert call.
30878         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
30879         of referenced_var_check_and_insert.
30880
30881         PR debug/39372
30882         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
30883         (gen_variable_die): Emit DW_AT_location on abstract static variable's
30884         DIE, don't emit it if abstract origin already has it.
30885         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
30886         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
30887
30888 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
30889
30890         * genpreds.c (needs_variable): Fix parentheses at variable name
30891         detection.
30892         (write_tm_constrs_h): Indent generated code.
30893
30894 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
30895
30896         * doc/extend.texi (Function Attributes): Add documentation
30897         for isr attributes.
30898
30899 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30900
30901         PR debug/39387
30902         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
30903         take locus from its DECL_SOURCE_LOCATION instead of input_location.
30904
30905 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
30906
30907         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
30908         the loop as bad.
30909
30910 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
30911
30912         PR debug/39379
30913         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
30914         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
30915
30916 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
30917
30918         * config/i386/i386.md (R8_REG, R9_REG): New constants.
30919         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
30920         constants instead of magic numbers.
30921         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
30922         (QI_REG_P): Ditto.
30923         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
30924         (x86_64_ms_abi_int_parameter_registers): Ditto.
30925         (x86_64_int_return_registers): Ditto.
30926         (ix86_maybe_switch_abi): Ditto.
30927         (ix86_expand_call): Ditto for clobbered_registers array.
30928         (ix86_hard_regno_mode_ok): Ditto.
30929         (x86_extended_QIreg_mentioned_p): Ditto.
30930
30931 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
30932
30933         PR tree-optimization/39349
30934         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
30935
30936         * combine.c (gen_lowpart_for_combine): Use omode when generating
30937         clobber.
30938
30939 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
30940
30941         PR rtl-optimization/39235
30942         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
30943
30944 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30945
30946         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
30947
30948 2009-03-04  Richard Guenther  <rguenther@suse.de>
30949
30950         PR tree-optimization/39362
30951         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
30952         that occur in abnormal PHIs should be varying.
30953
30954 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30955
30956         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
30957         Extend comments.
30958         (simple_iv):  Take loop as an argument instead of statement.
30959         * tree-scalar-evolution.h (simple_iv): Declaration changed.
30960         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
30961         to simple_iv.
30962         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
30963         Ditto.
30964         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
30965         * matrix-reorg.c (analyze_transpose): Ditto.
30966         * tree-data-ref.c (dr_analyze_innermost): Ditto.
30967         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
30968         * tree-predcom.c (ref_at_iteration): Ditto.
30969         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
30970
30971 2009-03-04  Richard Guenther  <rguenther@suse.de>
30972
30973         PR tree-optimization/39358
30974         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
30975         escaped_id and callused_id.
30976         (solve_graph): Likewise.
30977
30978 2009-03-04  Richard Guenther  <rguenther@suse.de>
30979
30980         PR tree-optimization/39339
30981         * tree-sra.c (try_instantiate_multiple_fields): Make it
30982         no longer ICE on the above.
30983
30984 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
30985
30986         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
30987         that fits within Pmode.
30988
30989 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30990
30991         PR middle-end/10109
30992         * tm.texi (LIBCALL_VALUE): Update description.
30993
30994 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30995
30996         PR middle-end/34443
30997         * doc/extend.texi (section): Update description.
30998
30999 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
31000
31001         PR middle-end/39345
31002         * tree-inline.c (remapped_type): New.
31003         (can_be_nonlocal): Call remapped_type instead of remap_type.
31004
31005 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31006
31007         PR fortran/39354
31008         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
31009         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
31010
31011 2009-03-03  Richard Guenther  <rguenther@suse.de>
31012
31013         PR middle-end/39272
31014         * tree.c (tree_nonartificial_location): New function.
31015         * tree.h (tree_nonartificial_location): Declare.
31016         * builtins.c (expand_builtin_memory_chk): Provide location
31017         of the call location for artificial function pieces.
31018         (maybe_emit_chk_warning): Likewise.
31019         (maybe_emit_sprintf_chk_warning): Likewise.
31020         (maybe_emit_free_warning): Likewise.
31021         * expr.c (expand_expr_real_1): Likewise.
31022
31023 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31024
31025         PR tree-optimization/39343
31026         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
31027         COMPONENT_REF t has ARRAY_TYPE.
31028
31029 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
31030
31031         PR middle-end/39335
31032         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
31033         when the type precision of the induction variable should be
31034         larger than the type precision of nit.
31035         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
31036         * graphite.c (graphite_loop_normal_form): Same.
31037         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
31038
31039 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31040
31041         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
31042         (*call_1_rex64_ms_sysv): Use named constants instead of magic
31043         numbers to describe clobbered registers.
31044         (*call_value_0_rex64_ms_sysv): Ditto.
31045         * config/i386/mmx.md (mmx_emms): Ditto.
31046         (mmx_femms): Ditto.
31047
31048 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
31049
31050         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
31051         of ABI_64.
31052
31053 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31054
31055         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
31056         (spu_section_type_flags): New function.
31057
31058 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31059
31060         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
31061         reg_class_contents of FLOAT_REGS into a temporary.
31062
31063 2009-03-02  Richard Guenther  <rguenther@suse.de>
31064             Ira Rosen  <irar@il.ibm.com>
31065
31066         PR tree-optimization/39318
31067         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
31068         information to the vectorized statement.
31069
31070 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
31071
31072         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
31073         variable.  Use defined names instead of magic constants for REX SSE
31074         registers.
31075
31076 2009-03-01  Richard Guenther  <rguenther@suse.de>
31077
31078         PR tree-optimization/39331
31079         * omp-low.c (lower_send_shared_vars): Do not receive new
31080         values for the reference of DECL_BY_REFERENCE parms or results.
31081
31082 2009-03-01  Jan Hubicka  <jh@suse.cz>
31083
31084         PR debug/39267
31085         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
31086         BLOCK_NONLOCALIZED_VAR): New macros.
31087         (tree_block): Add nonlocalized_vars.
31088         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
31089         gen_decl_die): Add origin argument.  Allow generation of die with
31090         origin at hand only.
31091         (gen_member_die, gen_type_die_with_usage, force_decl_die,
31092         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
31093         of gen_*.
31094         (gen_block_die): Fix checking for unused blocks.
31095         (process_scope_var): Break out from .... ; work with origins only.
31096         (decls_for_scope) ... here; process nonlocalized list.
31097         (dwarf2out_ignore_block): Look for nonlocalized vars.
31098         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
31099         vars.
31100         (dump_scope_block): Dump them.
31101         * tree-inline.c (remap_decls): Handle nonlocalized vars.
31102         (remap_block): Likewise.
31103         (can_be_nonlocal): New predicate.
31104         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
31105
31106 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31107
31108         * configure: Regenerate.
31109
31110 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31111
31112         * optc-gen.awk: No need to duplicate option flags twice.
31113         Reuse help texts for duplicate options which do not have any.
31114
31115         * gcc.c (display_help): Document --version.
31116
31117         * gcc.c (main): If print_help_list and verbose_flag, ensure
31118         driver output comes before subprocess output.
31119
31120         * optc-gen.awk: Assign all remaining fields to help string,
31121         space-separated, for multi-line help in *.opt.
31122
31123         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
31124         -Wno-pedantic-ms-format is for MinGW targets only.
31125
31126         * doc/options.texi (Option file format): Fix bad indentation,
31127         restoring dropped sentence.
31128
31129 2009-02-28  Jan Hubicka  <jh@suse.cz>
31130
31131         * tree-inline.c (tree_function_versioning): Output debug info.
31132
31133 2009-02-28  Jan Hubicka  <jh@suse.cz>
31134
31135         PR debug/39267
31136         * tree-inline.c (setup_one_parameter): Do not copy propagate
31137         arguments when not optimizing.
31138
31139 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
31140
31141         PR target/39327
31142         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31143         (avx_addsubv4df3): Likewise.
31144         (*avx_addsubv4sf3): Likewise.
31145         (sse3_addsubv4sf3): Likewise.
31146         (*avx_addsubv2df3): Likewise.
31147         (sse3_addsubv2df3): Likewise.
31148         (avx_unpckhps256): Correct item selectors.
31149         (avx_unpcklps256): Likewise.
31150         (avx_unpckhpd256): Likewise.
31151         (avx_unpcklpd256): Likewise.
31152
31153 2009-02-28  Jan Hubicka  <jh@suse.cz>
31154
31155         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
31156         static vars.
31157         (copy_arguments_for_versioning): If var is declared don't declare it.
31158         (tree_function_versioning): First setup substitutions and then copy
31159         args.
31160
31161 2009-02-27  Jan Hubicka  <jh@suse.cz>
31162
31163         PR debug/39267
31164         * cgraph.h (varpool_output_debug_info): Remove.
31165         * cgraphunit.c (varpool_output_debug_info): Remove.
31166         * dwarf2out.c (deferred_locations_struct): New struct
31167         (deferred_locations): New type.
31168         (deferred_locations_list): New static var.
31169         (deffer_location): New function.
31170         (gen_variable_die): Use it.
31171         (decls_for_scope): Output info on local static vars.
31172         (dwarf2out_finish): Process deferred locations.
31173         * varpool.c (varpool_output_debug_info): Remove.
31174
31175 2009-02-27  Jan Hubicka  <jh@suse.cz>
31176
31177         PR debug/39267
31178         * tree.h (TREE_PROTECTED): Fix comment.
31179         (BLOCK_HANDLER_BLOCK): Remove.
31180         (struct tree_block): Remove handler_block add body_block.
31181         (inlined_function_outer_scope_p): New.
31182         (is_body_block): Remove.
31183         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
31184         * dwarf2out.c (is_inlined_entry_point): Remove.
31185         (add_high_low_attributes): Use inlined_function_outer_scope_p.
31186         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
31187         code.
31188         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
31189         * gimplify.c (gimplify_expr): Gimplify body blocks.
31190         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
31191         block with multiple subblocks.
31192         (dump_scope_block): Prettier output; dump more flags and info.
31193         (dump_scope_blocks): New.
31194         (remove_unused_locals): Use dump_scope_blocks.
31195         * tree-flow.h (dump_scope_blocks): Declare.
31196         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
31197         * stmt.c (is_body_block): Remove.
31198         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
31199         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
31200
31201 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
31202
31203         PR middle-end/39308
31204         * graphite.c (graphite_loop_normal_form): Do not call
31205         number_of_iterations_exit from a gcc_assert.
31206
31207 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31208
31209         * config/s390/s390.c (s390_swap_cmp): Look for conditional
31210         jumps if COND is NULL.
31211         (find_cond_jump): New function.
31212         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
31213         * config/s390/s390.md: Remove z10_cobra attribute value.
31214
31215 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
31216
31217         * config/alpha/alpha.h (alpha_expand_mov): Return false if
31218         force_const_mem returns NULL_RTX.
31219
31220 2009-02-26  Jan Hubicka  <jh@suse.cz>
31221
31222         PR debug/39267
31223         * cgraph.h (varpool_output_debug_info): Remove.
31224         * cgraphunit.c (varpool_output_debug_info): Remove.
31225         * dwarf2out.c (deferred_locations_struct): New struct
31226         (deferred_locations): New type.
31227         (deferred_locations_list): New static var.
31228         (deffer_location): New function.
31229         (gen_variable_die): Use it.
31230         (decls_for_scope): Output info on local static vars.
31231         (dwarf2out_finish): Process deferred locations.
31232         * varpool.c (varpool_output_debug_info): Remove.
31233
31234 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
31235
31236         PR rtl-optimization/39241
31237         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
31238         to subreg_offset_representable_p.
31239
31240 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31241
31242         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
31243         execute function prototype.  Get f and nregs from max_reg_num
31244         and get_insns.  Remove the first backward pass as it's dead,
31245         guard the forward pass by flag_expensive_optimizations.
31246         (rest_of_handle_regmove): Delete.
31247         (pass_regmove): Replace it with regmove_optimize.
31248
31249 2009-02-25  Martin Jambor  <mjambor@suse.cz>
31250
31251         PR tree-optimization/39259
31252         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
31253         calls_alloca function flags.
31254         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
31255         calls are detected.
31256
31257 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31258
31259         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
31260         flags_set_1_rtx, flags_set_1_set): Delete.
31261         (regmove_optimize): Do not call mark_flags_life_zones.
31262
31263 2009-02-24  Julian Brown  <julian@codesourcery.com>
31264
31265         PR target/35965
31266         * config/arm/arm.c (require_pic_register): Only set
31267         cfun->machine->pic_reg once per function.
31268
31269 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
31270
31271         * doc/invoke.texi (Link Options): Document an easier way to pass
31272         options that take arguments to the GNU linker using -Xlinker and -Wl.
31273
31274 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
31275
31276         PR target/33785
31277         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
31278
31279 2009-02-24  Richard Guenther  <rguenther@suse.de>
31280
31281         PR debug/39285
31282         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
31283
31284 2009-02-24  Richard Guenther  <rguenther@suse.de>
31285             Zdenek Dvorak  <ook@ucw.cz>
31286
31287         PR tree-optimization/39233
31288         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
31289         from converting them to a generic type.
31290
31291 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
31292
31293         PR tree-optimization/39260
31294         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
31295         contains a condition with a real type.
31296         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
31297
31298 2009-02-23  Jason Merrill  <jason@redhat.com>
31299
31300         PR c++/38880
31301         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
31302         narrowing_initializer_constant_valid_p.
31303         (narrowing_initializer_constant_valid_p): Don't return
31304         null_pointer_node for adding a pointer to itself.
31305
31306 2009-02-23  Jan Hubicka  <jh@suse.cz>
31307
31308         PR c/12245
31309         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
31310         resizing.
31311
31312 2009-02-23  Jan Hubicka  <jh@suse.cz>
31313
31314         PR tree-optimization/37709
31315         * tree.c (block_ultimate_origin): Move here from dwarf2out.
31316         * tree.h (block_ultimate_origin): Declare.
31317         * dwarf2out.c (block_ultimate_origin): Move to tree.c
31318         * tree-ssa-live.c (remove_unused_scope_block_p):
31319         Eliminate blocks containig no instructions nor live variables nor
31320         nested blocks.
31321         (dump_scope_block): New function.
31322         (remove_unused_locals): Enable removal of dead blocks by default;
31323         enable dumping at TDF_DETAILS.
31324
31325 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31326
31327         * config/i386/i386.c (classify_argument): Don't allow COImode
31328         and OImode.
31329         (function_arg_advance_32): Don't allow OImode.
31330         (function_arg_32): Likewise.
31331         (function_value_32): Likewise.
31332         (return_in_memory_32): Likewise.
31333         (function_arg_64): Remove OImode comment.
31334
31335 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31336
31337         PR target/39261
31338         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
31339         ix86_expand_vector_set for V4DImode in 64bit mode only.
31340         (ix86_expand_vector_init_one_var): Likewise.
31341
31342 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
31343
31344         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
31345
31346 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31347
31348         PR bootstrap/39257
31349         * loop-iv.c: Revert last change.
31350         * emit-rtl.c: Likewise.
31351
31352 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31353
31354         PR target/39256
31355         * config/i386/i386.c (type_natural_mode): Remove an extra
31356         space in the warning message.
31357         (function_value_32): Handle 32-byte vector modes.
31358         (return_in_memory_32): Likewise.
31359
31360 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31361
31362         * loop-iv.c (truncate_value): New function.
31363         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
31364         of lowpart_subreg.
31365         (lowpart_subreg): Move to...
31366         * emit-rtl.c: ...here.
31367
31368 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
31369
31370         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
31371         accidental and undocumented change at revision 140860.
31372
31373 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
31374
31375         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
31376         take gimple_seq * arguments.
31377         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
31378         types_compatible_p langhook.
31379
31380 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
31381             Joseph Myers  <joseph@codesourcery.com>
31382
31383         * config/arm/arm.c (arm_builtin_va_list): New function.
31384         (arm_expand_builtin_va_start): Likewise.
31385         (arm_gimplify_va_arg_expr): Likewise.
31386         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
31387         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
31388         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
31389         (va_list_type): New variable.
31390         (arm_mangle_type): Mangle va_list_type appropriately.
31391
31392 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31393
31394         PR middle-end/39157
31395         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
31396         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
31397         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
31398         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
31399         parameter to 1000 for -O1 by default.
31400         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
31401         parameter.
31402         * loop-invariant.c: Include params.h.
31403         (move_loop_invariants): Don't call move_single_loop_invariants on
31404         very large loops.
31405
31406 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
31407
31408         * calls.c (emit_library_call_value_1): Use slot_offset instead of
31409         offset when calculating bounds for indexing stack_usage_map.  Fixes
31410         a buffer overflow with certain target setups.
31411
31412 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31413
31414         PR target/39240
31415         * calls.c (expand_call): Clear try_tail_call if caller and callee
31416         disagree in promotion of function return value.
31417
31418 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
31419
31420         PR target/39175
31421         * c-common.c (c_determine_visibility): If visibility changed and
31422         DECL_RTL has been already set, call make_decl_rtl to update symbol
31423         flags.
31424
31425 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
31426
31427         PR c++/39188
31428         * varasm.c (assemble_variable): Don't check DECL_NAME when
31429         globalizing a variable.
31430
31431 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
31432
31433         PR c/38483
31434         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
31435         expression before any __builtin_trap call.
31436         * c-typeck.c (build_function_call): Convert and check function
31437         arguments before generating a call to a trap.  Evaluate the
31438         function arguments before the trap.
31439
31440 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
31441
31442         PR target/39228
31443         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
31444         (UNSPEC_FXAM_MEM): New unspec.
31445         (fxam<mode>2_i387_with_temp): New insn and split pattern.
31446         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
31447         memory using fxam<mode>2_i387_with_temp to remove excess precision.
31448
31449 2009-02-19  Richard Guenther  <rguenther@suse.de>
31450
31451         PR tree-optimization/39207
31452         PR tree-optimization/39074
31453         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
31454         storedanything_tree): New.
31455         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
31456         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
31457         (build_succ_graph): Add edges from STOREDANYTHING to all
31458         non-direct nodes.
31459         (init_base_vars): Initialize STOREDANYTHING.
31460         (compute_points_to_sets): Free substitution info after
31461         building the succ graph.
31462         (ipa_pta_execute): Likewise.
31463
31464         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
31465         field.
31466         (do_ds_constraint): Do not add to special var or non-pointer
31467         field solutions.
31468         (type_could_have_pointers): Split out from ...
31469         (could_have_pointers): ... here.  For arrays use the element type.
31470         (create_variable_info_for): Initialize may_have_pointers.
31471         (new_var_info): Likewise.
31472         (handle_lhs_call): Make the HEAP variable unknown-sized.
31473         (intra_create_variable_infos): Use a type with pointers for
31474         PARM_NOALIAS, make it unknown-sized.
31475
31476 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
31477
31478         PR target/39224
31479         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
31480
31481 2009-02-18  Jason Merrill  <jason@redhat.com>
31482
31483         PR target/39179
31484         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
31485         value if DECL_EXTERNAL.
31486         * tree-sra.c (sra_walk_gimple_assign): Likewise.
31487         * target.h (gcc_target::binds_local_p): Clarify "module".
31488         * tree.h (TREE_PUBLIC): Clarify "module".
31489
31490 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
31491
31492         PR target/38891
31493         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
31494         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
31495
31496 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
31497
31498         PR target/39082
31499         * c.opt (Wabi): Support C and ObjC.
31500         (Wpsabi): New.
31501
31502         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
31503
31504         * config/i386/i386.c (classify_argument): Warn once about the ABI
31505         change when passing union with long double.
31506
31507         * doc/invoke.texi: Update -Wabi for warning psABI changes.
31508
31509 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
31510
31511         PR c/35447
31512         * c-parser.c (c_parser_compound_statement): Always enter and leave
31513         a scope.
31514
31515 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31516
31517         PR target/34587
31518         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
31519
31520 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
31521
31522         PR tree-optimization/36922
31523         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
31524         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
31525         Likewise.
31526
31527 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31528
31529         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
31530         to 0 for EABI64.
31531
31532 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31533
31534         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
31535
31536 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31537
31538         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
31539         tree sharing.
31540
31541 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
31542             Richard Sandiford  <rdsandiford@googlemail.com>
31543
31544         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
31545         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
31546         (loongson_biadd): ...this.
31547
31548 2009-02-17  Richard Guenther  <rguenther@suse.de>
31549
31550         PR tree-optimization/39202
31551         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
31552         a var make sure to follow existing collapses.
31553
31554 2009-02-17  Richard Guenther  <rguenther@suse.de>
31555
31556         PR middle-end/39214
31557         * langhooks.c (lhd_print_error_function): Check for NULL block.
31558
31559 2009-02-17  Richard Guenther  <rguenther@suse.de>
31560
31561         PR tree-optimization/39204
31562         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
31563         of the PHI arg.
31564
31565 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
31566
31567         * config/soft-fp/double.h: Update from glibc CVS.
31568
31569 2009-02-17  Richard Guenther  <rguenther@suse.de>
31570
31571         PR tree-optimization/39207
31572         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
31573         strict-aliasing warnings for pointers pointing to NULL.
31574
31575 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
31576
31577         PR c/35446
31578         * c-parser.c (c_parser_braced_init): Call pop_init_level when
31579         skipping until next close brace.
31580
31581 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
31582
31583         PR target/37049
31584         * config/i386/i386.c (ix86_expand_push): Set memory alignment
31585         to function argument boundary.
31586
31587 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31588
31589         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
31590         in the lea_add. Reload eventually constraints it properly.
31591         * config/picochip/constraints.md: Remove the target constraint
31592         "b", since it is not needed anymore.
31593
31594 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
31595
31596         * gthr-dce.h: Uglify function parameter and local variable names.
31597         * gthr-gnat.h: Likewise.
31598         * gthr-mipssde.h: Likewise.
31599         * gthr-nks.h: Likewise.
31600         * gthr-posix95.h: Likewise.
31601         * gthr-posix.h: Likewise.
31602         * gthr-rtems.h: Likewise.
31603         * gthr-single.h: Likewise.
31604         * gthr-solaris.h: Likewise.
31605         * gthr-tpf.h: Likewise.
31606         * gthr-vxworks.h: Likewise.
31607         * gthr-win32.h: Likewise.
31608
31609 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
31610
31611         PR target/39196
31612         * config/i386/i386.md: Restrict the new peephole2 to move
31613         between MMX/SSE registers.
31614
31615 2009-02-15  Richard Guenther  <rguenther@suse.de>
31616
31617         Revert
31618         2009-02-13  Richard Guenther  <rguenther@suse.de>
31619
31620         * configure.ac: Enable LFS.
31621         * configure: Re-generate.
31622         * config.in: Likewise.
31623
31624 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31625
31626         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
31627         spu_srqwbyte, spu_srqwbytebc): Define.
31628         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
31629         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
31630         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
31631         "shrqby_<mode>"): New insn-and-split patterns.
31632         * config/spu/spu.c (expand_builtin_args): Determine and return
31633         number of operands using spu_builtin_description data.
31634         (spu_expand_builtin_1): Use it.
31635
31636 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
31637
31638         PR target/38056
31639         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
31640         TARGET_CONST_GP.
31641
31642 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31643
31644         PR target/39149
31645         * config/i386/i386.c (override_options): Correct warning
31646         messages for -malign-loops, -malign-jumps and -malign-functions.
31647
31648 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31649
31650         PR target/39152
31651         * config/i386/i386.md: Restrict the new peephole2 to move
31652         between the general purpose registers.
31653
31654 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31655
31656         PR target/39162
31657         * config/i386/i386.c (type_natural_mode): Add a new argument.
31658         Return the original mode and warn ABI change if vector size is 32byte.
31659         (function_arg_advance): Updated.
31660         (function_arg): Likewise.
31661         (ix86_function_value): Likewise.
31662         (ix86_return_in_memory): Likewise.
31663         (ix86_sol10_return_in_memory): Likewise.
31664         (ix86_gimplify_va_arg): Likewise.
31665         (function_arg_32): Don't warn ABX ABI change here.
31666         (function_arg_64): Likewise.
31667
31668 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
31669
31670         * loop-iv.c (implies_p): In the final case, test that operands 0
31671         of the two comparisons match.
31672
31673         * config/bfin/bfin.c (find_prev_insn_start): New function.
31674         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
31675         (find_next_insn_start): Move.
31676
31677 2009-02-13  Richard Guenther  <rguenther@suse.de>
31678
31679         * configure.ac: Enable LFS.
31680         * configure: Re-generate.
31681         * config.in: Likewise.
31682
31683 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
31684
31685         PR c/35444
31686         * c-parser.c (c_parser_parms_list_declarator): Discard pending
31687         sizes on syntax error after some arguments have been parsed.
31688
31689 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31690
31691         * doc/invoke.texi (-fira): Remove.
31692
31693 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31694
31695         * caller-save.c: Replace regclass.c with reginfo.c in comments.
31696         * recog.c: Likewise.
31697         * rtl.h: Likewise.
31698
31699 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
31700
31701         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
31702         (umul_ppmm): Likewise.
31703         (count_leading_zeros): Likewise.
31704         (count_trailing_zeros): Likewise.
31705         (UMUL_TIME): Likewise.
31706
31707 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31708
31709         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
31710         soft-fp/t-softfp to tmake_file.
31711
31712         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
31713         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
31714         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
31715         IA64_BUILTIN_INFQ]: New.
31716         (ia64_init_builtins): Initialize __builtin_infq,
31717         __builtin_fabsq and __builtin_copysignq if not HPUX.
31718         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
31719         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
31720
31721         * config/ia64/lib1funcs.asm (__divtf3): Define only if
31722         SHARED is defined.
31723         (__fixtfti): Likewise.
31724         (__fixunstfti): Likewise.
31725         (__floattitf): Likewise.
31726
31727         * config/ia64/libgcc-glibc.ver: New.
31728         * config/ia64/t-fprules-softfp: Likewise.
31729         * config/ia64/sfp-machine.h: Likewise.
31730
31731         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
31732         (LIBGCC2_TF_CEXT): Likewise.
31733         (TF_SIZE): Likewise.
31734         (TARGET_INIT_LIBFUNCS): Likewise.
31735
31736         * config/ia64/t-glibc (SHLINB_MAPFILES):
31737         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
31738
31739 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31740
31741         * config/i386/i386.c (construct_container): Rewrite processing
31742         BLKmode with X86_64_SSE_CLASS.
31743
31744 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
31745
31746         PR target/39152
31747         * config/i386/i386.md: Replace simplify_replace_rtx with
31748         replace_rtx in the new peephole2.
31749
31750 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
31751
31752         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
31753         loop unrolling do not happen at -O2.
31754
31755 2009-02-12  Michael Matz  <matz@suse.de>
31756
31757         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
31758
31759 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31760
31761         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
31762         for -g3.
31763
31764 2009-02-12  Ben Elliston  <bje@au.ibm.com>
31765
31766         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
31767         patterns when updating the back chain.  Missed in the 2009-02-10
31768         change.
31769
31770 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
31771
31772         * doc/extend.texi (Decimal Floating Types): Update identifier of
31773         draft TR and list of missing support.
31774
31775 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
31776
31777         PR middle-end/39154
31778         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
31779         bit to variable length decl's flags, add it also to its
31780         pointer replacement variable.
31781
31782 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
31783             Jakub Jelinek  <jakub@redhat.com>
31784
31785         PR target/39118
31786         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
31787         (memory_blockage): New expander.
31788         (*memory_blockage): New insn pattern.
31789         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
31790         instead of general blockage at the end of function prologue when
31791         frame pointer is used to access red zone area.  Do not emit blockage
31792         when profiling, it is emitted in generic code.
31793         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
31794         function epilogue when frame pointer is used to access red zone area.
31795
31796 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
31797
31798         PR target/38824
31799         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
31800         by arithmetic with memory operands.
31801         * config/i386/predicates.md (commutative_operator): New.
31802
31803 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
31804
31805         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
31806         bulleted lists.
31807
31808 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
31809
31810         * alias.h (record_alias_subset): Declare.
31811         * alias.c (record_alias_subset): Make global.
31812
31813 2009-02-10  Nick Clifton  <nickc@redhat.com>
31814
31815         * tree-parloops.c: Change license to GPLv3.
31816         * ipa-struct-reorg.c: Change license to GPLv3.
31817         * ipa-struct-reorg.h: Change license to GPLv3.
31818
31819 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
31820
31821         PR c/39084
31822         * c-decl.c (start_struct): Return NULL on error.
31823
31824 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
31825
31826         PR middle-end/39124
31827         * cfgloopmanip.c (remove_path): Call remove_bbs after
31828         cancel_loop_tree, not before it.
31829
31830         PR target/39139
31831         * function.h (struct function): Add has_local_explicit_reg_vars bit.
31832         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
31833         VAR_DECLs were seen.
31834         * tree-ssa-live.c (remove_unused_locals): Recompute
31835         cfun->has_local_explicit_reg_vars.
31836         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
31837         copies or clearings if cfun->has_local_explicit_reg_vars.
31838
31839 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
31840
31841         PR target/39118
31842         * config/i386/i386.c (expand_prologue): Emit blockage at the end
31843         of function prologue when frame pointer is used to access
31844         red zone area.
31845
31846 2009-02-10  Richard Guenther  <rguenther@suse.de>
31847
31848         PR middle-end/39127
31849         * gimplify.c (gimple_regimplify_operands): Always look if
31850         we need to create a temporary.
31851
31852 2009-02-10  Richard Guenther  <rguenther@suse.de>
31853
31854         PR tree-optimization/39132
31855         * tree-loop-distribution.c (todo): New global var.
31856         (generate_memset_zero): Trigger TODO_rebuild_alias.
31857         (tree_loop_distribution): Return todo.
31858
31859 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
31860
31861         PR target/39119
31862         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
31863         (x86_64_reg_class_name): Removed.
31864         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
31865         first one isn't X86_64_SSE_CLASS or any other ones aren't
31866         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
31867         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
31868         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
31869         and 3 X86_64_SSEUP_CLASS.
31870         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
31871         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
31872
31873 2009-02-10  Ben Elliston  <bje@au.ibm.com>
31874
31875         * config/rs6000/rs6000.md (allocate_stack): Always use an update
31876         form instruction to update the stack back chain word, even if the
31877         user has disabled the generation of update instructions.
31878         (movdi_<mode>_update_stack): New.
31879         (movsi_update_stack): Likewise.
31880         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
31881         always use an update form instruction to update the stack back
31882         chain word.
31883
31884 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
31885
31886         PR middle-end/38953
31887         * graphite.c (if_region_set_false_region): After moving a region in
31888         the false branch of a condition, remove the empty dummy basic block.
31889         (gloog): Remove wrong fix for PR38953.
31890
31891 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31892
31893         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
31894         generation due to implicit sign extension.
31895
31896 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
31897
31898         PR middle-end/38981
31899         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
31900         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
31901
31902 2009-02-09  Richard Guenther  <rguenther@suse.de>
31903
31904         PR middle-end/35202
31905         * convert.c (convert_to_real): Disable (float)fn((double)x)
31906         to fnf(x) conversion if errno differences may occur and
31907         -fmath-errno is set.
31908
31909 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
31910
31911         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
31912         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
31913         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
31914
31915 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31916
31917         PR c/35434
31918         * c-common.c (handle_alias_attribute): Disallow attribute for
31919         anything not a FUNCTION_DECL or VAR_DECL.
31920
31921 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
31922
31923         PR c/39035
31924         * real.c (do_compare): Special-case compare of zero against
31925         decimal float value.
31926
31927 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31928
31929         PR c/36432
31930         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
31931         as indicating flexible array members unless the field itself is
31932         being declarared as the incomplete array.
31933
31934 2009-02-06  Jan Hubicka  <jh@suse.cz>
31935
31936         PR tree-optimization/38844
31937         * ipa-inline.c (try_inline): Stop inlining recursion when edge
31938         is already inlined.
31939
31940 2009-02-06  Richard Guenther  <rguenther@suse.de>
31941
31942         PR middle-end/38977
31943         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
31944         fork because we may expand it as __gcov_fork.
31945
31946 2009-02-06  Nick Clifton  <nickc@redhat.com>
31947
31948         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
31949
31950 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
31951
31952         PR tree-optimization/35659
31953         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
31954         vn_phi_eq): Shortcut if hashcode does not match.
31955         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
31956         NULL operands.
31957         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
31958         and avoid iterative_hash_expr.
31959         (FOR_EACH_VALUE_ID_IN_SET): New.
31960         (value_id_compare): Remove.
31961         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
31962         sort expressions by value id.
31963
31964 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
31965
31966         PR target/38991
31967         * config/sh/predicates.md (general_movsrc_operand): Don't check
31968         the subreg of system registers here.
31969
31970 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
31971
31972         PR c++/39106
31973         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
31974         on the copied decl.
31975
31976 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
31977
31978         PR rtl-optimization/39110
31979         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
31980         addresses, not aligned ones.
31981
31982 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
31983             Richard Guenther  <rguenther@suse.de>
31984
31985         PR tree-optimization/39100
31986         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
31987         comment says and add edges.
31988
31989 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
31990
31991         PR c/35435
31992         * c-common.c (handle_tls_model_attribute): Ignore attribute for
31993         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
31994
31995 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
31996
31997         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
31998         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
31999         register_bb_in_sese, new_sese, free_sese): Moved.
32000         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
32001         outermost_loop_in_scop, build_scop_iteration_domain,
32002         expand_scalar_variables_ssa_name, get_vdef_before_scop,
32003         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
32004         Use loop_in_sese_p instead of loop_in_scop_p.
32005         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
32006         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
32007         (scopdet_basic_block_info): Fix bug in scop detection.
32008         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
32009         eq_loop_to_cloog_loop): Remove.
32010         (nb_loops_around_loop_in_scop, nb_loop
32011         ref_nb_loops): Moved here...
32012         * graphite.h (ref_nb_loops): ... from here.
32013         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
32014         (loop_domain_dim, loop_iteration_vector_dim): Remove.
32015         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
32016
32017 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
32018             Hans-Peter Nilsson  <hp@axis.com>
32019
32020         PR rtl-optimization/37889
32021         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
32022         Move offset handling from PLUS to before the switch.  Use new
32023         arguments when considering SYMBOL_REFs too.
32024         (rtx_addr_can_trap_p): Pass dummy offset and size.
32025         (enum may_trap_p_flags): Remove.
32026         (may_trap_p_1): Pass size from MEM_SIZE.
32027
32028         PR rtl-optimization/38921
32029         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
32030         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
32031         * rtlanal.c (may_trap_after_code_motion_p): Delete.
32032         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
32033
32034 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
32035
32036         AVX Programming Reference (January, 2009)
32037         * config/i386/sse.md (*vpclmulqdq): New.
32038
32039 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
32040
32041         PR tree-optimization/38977
32042         PR gcov-profile/38292
32043         * calls.c (special_function_p): Disregard __builtin_ prefix.
32044
32045 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
32046
32047         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
32048         non-indexable addresses even before reload.
32049
32050 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32051
32052         PR c/29129
32053         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
32054         as having variable size.  Do not give an error for unnamed
32055         parameters with [*] declarators.  Give a warning for type names
32056         with [*] declarators and mark them as variable size.
32057         * c-parser.c (c_parser_sizeof_expression): Do not give an error
32058         for sizeof applied to [*] type names.
32059
32060 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32061
32062         PR C++/36607
32063         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
32064
32065 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32066
32067         * gcc.c (process_command): Update copyright notice dates.
32068         * gcov.c (print_version): Likewise.
32069         * gcov-dump.c (print_version): Likewise.
32070         * mips-tfile.c (main): Likewise.
32071         * mips-tdump.c (main): Likewise.
32072
32073 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32074
32075         PR c/35433
32076         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
32077         for composite type involving a zero-length array type.
32078
32079 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32080
32081         PR target/35318
32082         * function.c (match_asm_constraints_1): Skip over
32083         initial optional % in the constraint.
32084
32085         PR inline-asm/39059
32086         * c-parser.c (c_parser_postfix_expression): If fixed point is not
32087         supported, don't accept FIXED_CSTs.
32088         * c-decl.c (finish_declspecs): Error if fixed point is not supported
32089         and _Sat is used without _Fract/_Accum.  Set specs->type to
32090         integer_type_node for cts_fract/cts_accum if fixed point is not
32091         supported.
32092
32093 2009-02-02  Catherine Moore  <clm@codesourcery.com>
32094
32095         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
32096
32097 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
32098
32099         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
32100         (ABI_HAS_64BIT_SYMBOLS): Use it.
32101         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
32102
32103 2009-02-02  Paul Brook  <paul@codesourcery.com>
32104
32105         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
32106
32107 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
32108
32109         PR inline-asm/39058
32110         * recog.h (asm_operand_ok): Add constraints argument.
32111         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
32112         recurse on matching constraint.
32113         (check_asm_operands): Pass constraints as 3rd argument to
32114         asm_operand_ok.  Don't look up matching constraint here.
32115         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
32116         to asm_operand_ok.
32117
32118 2009-02-02  Ben Elliston  <bje@au.ibm.com>
32119
32120         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
32121         TARGET_NARROW_VOLATILE_BITFIELD macro names.
32122
32123 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32124
32125         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
32126         information.  Remove some obsolete information.  Reorganize.
32127
32128         * config/pa/fptr.c: Revert license to GPL 2.
32129         * config/pa/milli64.S: Likewise.
32130
32131 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32132
32133         PR target/38904
32134         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
32135         LIBRARY name in, instead of hard-coding it.
32136         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
32137         extra target make frag to tmake_files according to EH model.
32138         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
32139         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
32140         frags that define makefile variable EH_MODEL appropriately.
32141         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
32142         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
32143         to "-sjlj" according to type of EH configured.
32144         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32145         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
32146         to "_sjlj" according to type of EH configured.
32147         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32148         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
32149         (SHLIB_LINK):  Add missing semicolon to if-else construct.
32150         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32151         string value of "pe_dll" command-line option.
32152         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
32153         (SHLIB_SONAME):  Use it when overriding t-cygming default.
32154         (SHLIB_IMPLIB):  Override t-cygming default.
32155         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32156         string value of "pe_dll" command-line option.
32157
32158 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32159
32160         PR target/38952
32161         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
32162         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
32163
32164 2009-01-31  Richard Guenther  <rguenther@suse.de>
32165
32166         PR tree-optimization/38937
32167         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
32168         computing the transitive closure.
32169
32170 2009-01-30  Richard Guenther  <rguenther@suse.de>
32171
32172         PR tree-optimization/39041
32173         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
32174         Propagate variable indices only if the types match for this stmt.
32175
32176 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
32177
32178         PR target/39013
32179         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
32180         inline but never defined.
32181
32182 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
32183
32184         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
32185         (*insv_h_di_reg_extimm): New insn.
32186         (*insv_l<mode>_reg_extimm): New insn.
32187
32188 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32189
32190         * config/picochip/picochip.c (flag_conserve_stack): set
32191         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
32192         fconserve-stack. Reduce call-overhead used by inliner.
32193
32194 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32195
32196         PR/38157
32197         * common.opt (flag_conserve_stack): Initialised to zero.
32198
32199 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
32200
32201         PR/39002
32202         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
32203         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
32204         method.
32205
32206 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
32207
32208         * ira-color.c (allocno_reload_assign): Update comments.
32209         * regmove.c (regmove_optimize): Likewise.
32210
32211         * ra.h: Removed.
32212
32213 2009-01-29  Robert Millan  <rmh@aybabtu.com>
32214
32215         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
32216         * config/i386/kopensolaris-gnu.h: New file.  Undefine
32217         `MD_UNWIND_SUPPORT'.
32218         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
32219
32220 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
32221
32222         PR tree-optimization/39007
32223         * tree-loop-distribution.c (generate_builtin): Use
32224         recompute_dominator to compute the immediate dominator of the
32225         basic block just after the loop.
32226
32227 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
32228
32229         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
32230         (ASM_OUTPUT_DWARF_PCREL): Define.
32231
32232 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
32233
32234         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
32235         * doc/passes.texi: Remove entries about regclass, local-alloc, and
32236         global.  Modify entries about regmove and IRA.
32237
32238         * ra-conflict.c: Remove the file.
32239
32240         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
32241
32242         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
32243         (pass_regclass_init): Rename to pass_reginfo_init.
32244
32245         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
32246
32247         * toplev.h (flag_ira): Remove.
32248
32249         * caller-save.c (setup_save_areas): Remove flag_ira.
32250
32251         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
32252
32253         * global.c: Remove the file.
32254
32255         * opts.c (decode_options): Remove flag_ira.
32256
32257         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
32258
32259         * regmove.c: Modify file description.
32260         (find_use_as_address, try_auto_increment): Define them only if
32261         AUTO_INC_DEC is defined.
32262         (replacement_quality, replace_in_call_usage, fixup_match_1,
32263         stable_and_no_regs_but_for_p): Remove.
32264         (reg_set_in_bb): Make it static.
32265         (regmove_optimize): Remove flag_ira and code which worked for
32266         !flag_ira.
32267
32268         * local-alloc.c: Remove the file.
32269
32270         * common.opt (fira): Remove.
32271
32272         * ira.c: Include except.h.
32273         (eliminable_regset): Move from global.c.
32274         (mark_elimination): Ditto.  Remove flag_ira.
32275         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
32276         equiv_mem_modified, validate_equiv_mem_from_store,
32277         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
32278         contains_replace_regs, memref_referenced_p, memref_used_between_p,
32279         no_equiv, recorded_label_ref): Move from local-alloc.c.
32280         (update_equiv_regs): Ditto.  Make it static.
32281         (print_insn_chain, print_insn_chains): Move it from global.c.
32282         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
32283         (build_insn_chain): Ditto.  Make it static.
32284         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
32285         Rename to init_live_subregs.
32286         (gate_ira): Remove flag_ira.
32287
32288         * regclass.c: Rename reginfo.c.  Change file description.
32289         (FORBIDDEN_INC_DEC_CLASSES): Remove.
32290         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
32291         (init_reg_sets_1): Remove code for evaluation of
32292         reg_class_superclasses and losing_caller_save_reg_set.
32293         (init_regs): Remove init_reg_autoinc.
32294         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
32295         ok_for_base_p_nonstrict): Remove.
32296         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
32297         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
32298         corresponding entries.
32299         (dump_regclass, record_operand_costs, scan_one_insn,
32300         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
32301         record_address_regs, auto_inc_dec_reg_p): Remove.
32302         (gt-regclass.h): Rename to gt-reginfo.h.
32303
32304         * rtl.h (dump_global_regs, retry_global_alloc,
32305         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
32306
32307         * Makefile.in (RA_H): Remove.
32308         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
32309         Rename regclass.o to reginfo.o.
32310         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
32311         gt-reginfo.h.
32312         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
32313         (GTFILES): Rename regclass.c to reginfo.c.
32314
32315         * passes.c (init_optimization_passes): Remove pass_local_alloc and
32316         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
32317
32318         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32319         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
32320         Remove flag_ira.
32321         (finish_spills): Ditto.  Remove code for !flag_ira.
32322
32323 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
32324
32325         PR middle-end/35854
32326         * doc/invoke.texi (rtl debug options): Complete rewrite.
32327         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
32328         to auto_inc_dec".
32329         * mode-switching.c (pass_mode_switching): Rename pass from
32330         "mode-sw" to "mode_sw".
32331         * except.c (pass_convert_to_eh_ranges): Rename pass from
32332         "eh-ranges" to "eh_ranges".
32333         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
32334         to "subreg1".
32335
32336
32337 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
32338             Alexander Monakov  <amonakov@ispras.ru>
32339
32340         PR middle-end/38857
32341         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
32342         register.
32343         (move_exprs_to_boundary): Change return type and pass through
32344         should_move from move_op.  Relax assert.  Update usage ...
32345         (schedule_expr_on_boundary): ... here.  Use should_move instead of
32346         cant_move.
32347         (move_op_orig_expr_found): Indicate that insn was disconnected from
32348         stream.
32349         (code_motion_process_successors): Do not call after_merge_succs
32350         callback if original expression was not found when traversing any of
32351         the branches.
32352         (code_motion_path_driver): Change return type.  Update prototype.
32353         (move_op): Update comment.  Add a new parameter (should_move).  Update
32354         prototype.  Set *should_move based on indication provided by
32355         move_op_orig_expr_found.
32356
32357 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
32358
32359         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
32360         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
32361         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
32362         * config/rs6000/rs6000.c (rs6000_override_options): Default
32363         avoid-indexed-addresses on for Power6, off for everything else.
32364         (avoiding_indexed_address_p): New function.
32365         (rs6000_legitimize_address): Use it.
32366         (rs6000_legitimate_address): Likewise.
32367         * config/rs6000/rs6000.md (movXX_updateX): Likewise
32368
32369 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
32370
32371         PR tree-optimization/38997
32372         * tree-loop-distribution.c (generate_memset_zero): Use
32373         POINTER_PLUS_EXPR for a pointer addition.
32374
32375 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
32376
32377         * config/s390/s390.md (bswap<mode>2): New pattern added.
32378
32379 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32380
32381         * config/s390/s390.md (*tls_load_31): Added type attribute.
32382
32383 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32384
32385         * config/s390/s390.md: Fix a few comments.
32386
32387 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32388
32389         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
32390         (*tm<mode>_full): Fixed z10prop attribute.
32391         (*tst<mode>_extimm): Fixed z10prop attribute.
32392         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
32393         (*tstqiCCT_cconly): Fixed z10prop attribute.
32394         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
32395         (*movsi_larl): Fixed z10prop attribute.
32396         (*movsi_zarch): Fixed z10prop attribute.
32397         (*movsi_eas): Fixed z10prop attribute.
32398         (*movhi): Fixed z10prop attribute.
32399         (*movqi): Fixed z10prop attribute.
32400         (*movstrictqi): Fixed z10prop attribute.
32401         (*mov<mode>): Fixed z10prop attribute.
32402         (*movcc): Fixed z10prop attribute.
32403         (*sethighpartdi_64): Fixed z10prop attribute.
32404         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
32405         (*negdi2_sign_cc): Fixed z10prop attribute.
32406         (*negdi2_sign): Fixed z10prop attribute.
32407         (*absdi2_sign_cc): Fixed z10prop attribute.
32408         (*absdi2_sign): Fixed z10prop attribute.
32409         (*negabsdi2_sign_cc): Fixed z10prop attribute.
32410         (*negabsdi2_sign): Fixed z10prop attribute.
32411         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
32412         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
32413         (doloop_si64): Fixed z10prop attribute.
32414         (doloop_si31): Fixed z10prop attribute.
32415         (doloop_long): Fixed z10prop attribute.
32416         (indirect_jump): Fixed z10prop attribute.
32417         (nop): Fixed z10prop attribute.
32418         (main_base_64): Fixed z10prop attribute.
32419         (reload_base_64): Fixed z10prop attribute.
32420
32421 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32422
32423         PR rtl-optimization/38740
32424         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
32425         if !optimize.
32426         * config/mips/mips.c (mips_reorg): Likewise.
32427
32428 2009-01-28  Richard Guenther  <rguenther@suse.de>
32429
32430         PR tree-optimization/38926
32431         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
32432         with the correct value id to a value.
32433         (do_regular_insertion): Use the value number of edoubleprime
32434         for the value number of the expr.
32435
32436         Revert
32437         2008-08-21  Richard Guenther  <rguenther@suse.de>
32438
32439         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
32440         a PHI ask VN if it is already available.
32441         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
32442         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
32443
32444 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32445
32446         PR middle-end/38934
32447         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
32448         set to varying whenever max has TREE_OVERFLOW set, similarly
32449         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
32450
32451 2009-01-28  Richard Guenther  <rguenther@suse.de>
32452
32453         PR middle-end/38908
32454         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
32455         uninitialized aggregate uses in call arguments.
32456
32457 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
32458
32459         PR tree-optimization/38984
32460         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
32461         the nothing_id variable if -fno-delete-null-pointer-checks.
32462
32463 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
32464
32465         PR target/38988
32466         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
32467         (set_got_offset_rex64): Ditto.
32468
32469 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
32470
32471         PR target/38941
32472         * doc/extend.texi: Improve local variable with asm reg.
32473
32474 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
32475
32476         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
32477         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
32478         was not supplied then set warn_packed_bitfield_compat to the
32479         default value of 1.
32480         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
32481         against 1.
32482
32483 2009-01-27  Richard Guenther  <rguenther@suse.de>
32484
32485         PR tree-optimization/38503
32486         * cfgexpand.c (expand_gimple_basic_block): Ignore
32487         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
32488         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
32489         variables that cannot have TBAA applied.
32490         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
32491         statements.
32492
32493 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
32494
32495         PR middle-end/38969
32496         * calls.c (initialize_argument_information): Do not wrap complex
32497         arguments in SAVE_EXPR.
32498
32499 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
32500
32501         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
32502         (INSTALL_LIBGCC): Revert typo commit.
32503
32504 2009-01-26  Richard Guenther  <rguenther@suse.de>
32505
32506         PR tree-optimization/38745
32507         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
32508         from special handling.
32509
32510 2009-01-26  Richard Guenther  <rguenther@suse.de>
32511
32512         PR tree-optimization/38745
32513         * tree-ssa.c (execute_update_addresses_taken): Do not include
32514         variables that cannot possibly be a register in not_reg_needs.
32515         Do not clear TREE_ADDRESSABLE on vars that may not become
32516         registers.
32517         * tree-ssa.c (update_alias_info_1): Include those in the set
32518         of addressable vars.
32519
32520 2009-01-26  Richard Guenther  <rguenther@suse.de>
32521
32522         PR middle-end/38851
32523         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
32524         * tree-ssa-dse.c: Include langhooks.h
32525         (execute_simple_dse): Remove stores with zero size.
32526
32527 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
32528
32529         PR c/38957
32530         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
32531         as PLUS_EXPR.
32532
32533 2009-01-24  Julian Brown  <julian@codesourcery.com>
32534
32535         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
32536         config/arm/linux-atomic.c.
32537         * config/arm/linux-atomic.c: New.
32538
32539 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
32540
32541         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
32542         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
32543         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
32544
32545 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
32546
32547         PR c/38938
32548         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
32549         properly.
32550
32551 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
32552
32553         PR tree-optimization/38953
32554         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
32555         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
32556         (gloog): Split the exit of the scop when the scop exit is a loop exit.
32557         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
32558         changed the CFG.
32559
32560 2009-01-24  Paul Brook  <paul@codesourcery.com>
32561
32562         * config/arm/neon.md (neon_type): Move to arm.md.
32563         (neon_mov<VSTRUCT>): Add neon_type attribute.
32564         * config/arm/arm.md (neon_type): Move to here.
32565         (conds): Add "unconditioal" and use as default for NEON insns.
32566
32567 2009-01-24  Ben Elliston  <bje@au.ibm.com>
32568
32569         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
32570         void *' warning from -Wc++-compat.
32571         * Makefile.in (dominance.o-warn): Remove.
32572
32573 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
32574
32575         PR tree-optimization/38932
32576         * fold-const.c (fold_unary_ignore_overflow): New.
32577         * tree.h (fold_unary_ignore_overflow): Declare.
32578         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
32579         * tree-ssa-sccvn.c (visit_reference_op_load,
32580         simplify_unary_expression): Likewise.
32581
32582 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
32583
32584         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
32585         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
32586         regardless of their type.
32587         * c-common.c (handle_packed_attribute): Don't ignore packed on
32588         bitfields.
32589         * c.opt (Wpacked-bitfield-compat): New warning option.
32590         * stor-layout.c (place_field): Warn if offset of a field changed.
32591         * doc/extend.texi (packed): Mention the ABI change.
32592         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
32593         (Warning Options): Add it to the list.
32594
32595 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
32596
32597         * c-opts.c (c_common_post_options): Fix a typo in comments.
32598
32599 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
32600
32601         PR middle-end/38615
32602         * gimplify.c (gimplify_init_constructor): Fix promotion of const
32603         variables to static.
32604         * doc/invoke.texi (-fmerge-all-constants): Update description.
32605
32606 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
32607
32608         PR target/38931
32609         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
32610         (*movdi_1_rex64): Use type "mmx" for alternative 5.
32611
32612 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
32613
32614         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32615         a word boundary.
32616         (LOCAL_ALIGNMENT): Similarly.
32617
32618 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32619             Joseph Myers  <joseph@codesourcery.com>
32620
32621         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
32622         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
32623         * config/arm/arm-tune.md: Regenerate.
32624         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
32625         -march=iwmmxt2.
32626
32627 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32628
32629         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
32630         version number to five.
32631
32632 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
32633
32634         PR c++/38930
32635         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
32636         * c-common.c (set_underlying_type): Likewise.
32637         (is_typedef_decl ): Likewise
32638         * tree.h: Likewise
32639         (set_underlying_type): Likewise.
32640         (is_typedef_type): Likewise.
32641
32642 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
32643
32644         PR middle-end/38587
32645         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
32646         crossing setjmps.
32647
32648 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
32649
32650         PR bootstrap/37660
32651         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
32652         (LIBGCC_SPEC):  Don't define.
32653         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
32654
32655 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
32656
32657         PR rtl-optimization/38879
32658         * alias.c (base_alias_check): Unaligned access via AND address can
32659         alias all surrounding object types except those with sizes equal
32660         or wider than the size of unaligned access.
32661
32662 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
32663
32664         PR c++/26693
32665         * c-decl.c (clone_underlying_type): Move this ...
32666         * c-common.c (set_underlying_type): ... here.
32667         Also, make sure the function properly sets TYPE_STUB_DECL() on
32668         the newly created typedef variant type.
32669         (is_typedef_decl ): New entry point.
32670         * tree.h: Added a new member member_types_needing_access_check to
32671         struct tree_decl_non_common.
32672         (set_underlying_type): New entry point.
32673         (is_typedef_type): Likewise.
32674
32675 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
32676
32677         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
32678         Check whether two instructions have memory references that
32679         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
32680         are helper functions for traversing.
32681         * alias.h (insn_alias_sets_confilict_p): New prototypes.
32682         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
32683         not to draw dependency edge for instructions with non-conflicting
32684         alias sets.
32685
32686 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
32687
32688         PR other/38758
32689         * longlong.h: Update copyright years.  Use soft-fp license notice.
32690         Sync __clz_tab declaration with glibc.
32691
32692 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
32693
32694         PR target/30687
32695         * doc/extend.texi (syscall_linkage): New.
32696         (version_id): Modify.
32697
32698 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32699             Richard Guenther  <rguenther@suse.de>
32700
32701         PR tree-optimization/38747
32702         PR tree-optimization/38748
32703         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
32704         conversion if the base address is an indirect reference and the
32705         aliasing sets could cause issues.
32706
32707 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32708
32709         * common.opt (fgraphite, fgraphite-identity): Add comment for
32710         explaining why these options are not documented.
32711
32712 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32713
32714         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
32715         gimple_call_lhs is NULL.
32716
32717 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
32718
32719         PR target/38868
32720         * emit-rtl.c (adjust_address_1): Make sure memref is never
32721         overwritten.
32722
32723 2009-01-20  Ben Elliston  <bje@au.ibm.com>
32724
32725         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32726         const qualifier from arg parameter. Remove unnecessary cast to char *.
32727         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32728         const qualifier from arg 2.
32729
32730 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
32731
32732         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
32733
32734 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
32735
32736         PR c/38869
32737         * rtl.h (reinit_regs): New prototype.
32738         * regclass.c: Include ira.h.
32739         (reinit_regs): New.
32740         * Makefile.in (regclass.o): Add ira.h.
32741         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
32742
32743 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
32744
32745         PR target/38736
32746         * c-common.c (handle_aligned_attribute): Use
32747         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
32748         default alignment value.
32749
32750         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
32751
32752         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
32753         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
32754
32755         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
32756         __BIGGEST_ALIGNMENT__.
32757
32758         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
32759
32760 2009-01-18  Richard Guenther  <rguenther@suse.de>
32761
32762         PR tree-optimization/38819
32763         * tree-flow.h (operation_could_trap_helper_p): Declare.
32764         * tree-eh.c (operation_could_trap_helper_p): Export.
32765         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
32766         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
32767         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
32768         are about to insert a possibly trapping instruction and fail
32769         in this case.
32770
32771 2009-01-18  Andreas Schwab  <schwab@suse.de>
32772
32773         * doc/install.texi (Configuration): Remove obsolete paragraph
32774         about use of --with-gnu-ld with --with-gnu-as.
32775
32776 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
32777
32778         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
32779         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
32780         Follow spelling conventions.
32781
32782 2009-01-18  Ben Elliston  <bje@au.ibm.com>
32783
32784         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
32785         C++ warning about implicit conversion from void * to struct
32786         bitmap_head_def *.
32787         (bitmap_obstack_free): Likewise for bitmap_element *.
32788         * Makefile.in (bitmap.o-warn): Remove.
32789
32790 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
32791
32792         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
32793
32794 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
32795             Tobias Grosser  <tobi.grosser@amd.com>
32796
32797         * graphite.c (graphite_trans_scop_block): Do not block single
32798         nested loops.
32799
32800 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
32801
32802         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
32803         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
32804         test with assertion.
32805
32806 2009-01-16  Richard Guenther  <rguenther@suse.de>
32807
32808         PR tree-optimization/38835
32809         PR middle-end/36227
32810         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
32811         and INT + PTR -> (INT)(PTR p+ INT) folding.
32812         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
32813
32814 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
32815
32816         PR target/38554
32817         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
32818         the subreg from a lowpart subreg if it is also casting the value.
32819
32820 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32821             Tobias Grosser  <tobi.grosser@amd.com>
32822
32823         * graphite.c (compare_prefix_loops): New.
32824         (build_scop_canonical_schedules): Rewritten.
32825         (graphite_transform_loops): Move build_scop_canonical_schedules
32826         after build_scop_iteration_domain.
32827
32828 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32829             Tobias Grosser  <tobi.grosser@amd.com>
32830
32831         * graphite.c (add_conditions_to_domain): Add the loops to
32832         the dimension of the iteration domain.  Do copy the domain
32833         only when it exists.
32834         (build_scop_conditions_1): Do not call add_conditions_to_domain.
32835         (add_conditions_to_constraints): New.
32836         (can_generate_code_stmt, can_generate_code): Removed.
32837         (gloog): Do not call can_generate_code.
32838         (graphite_transform_loops): Call add_conditions_to_constraints
32839         after building the iteration domain.
32840
32841 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
32842
32843         PR tree-optimization/38789
32844         * tree-ssa-threadedge.c
32845         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
32846         __builtin_constant_p.
32847
32848 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
32849
32850         * dce.c (delete_unmarked_insns): Reversed the order that insns are
32851         examined before deleting them.
32852
32853 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
32854
32855         * function.c (aggregate_value_p): Correctly extract the function
32856         type from CALL_EXPR_FN lookup.
32857
32858 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32859
32860         * config/picochip/picochip.c (picochip_override_options): Revert
32861         CFI asm flag disable commited previously.
32862
32863 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
32864             Tobias Grosser  <tobi.grosser@amd.com>
32865             Jan Sjodin  <jan.sjodin@amd.com>
32866
32867         * graphite.c (scan_tree_for_params): On substractions negate
32868         all the coefficients of the term.
32869         (clast_to_gcc_expression_red): New.  Handle reduction expressions
32870         of more than two operands.
32871         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
32872         (get_vdef_before_scop): Handle also the case of default definitions.
32873
32874 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
32875
32876         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
32877         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
32878         Also use them when walking CALL_INSN_FUNCTION_USAGE.
32879
32880 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
32881             Joey Ye  <joey.ye@intel.com>
32882
32883         PR middle-end/37843
32884         * cfgexpand.c (expand_stack_alignment): Don't update stack
32885         boundary nor check incoming stack boundary here.
32886         (gimple_expand_cfg): Update stack boundary and check incoming
32887         stack boundary here.
32888
32889 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
32890
32891         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
32892
32893 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
32894
32895         PR rtl-optimization/38245
32896         * calls.c (expand_call): Add stack arguments to
32897         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32898         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
32899         in regs and partially in memory or BLKmode arguments.
32900         (emit_library_call_value_1): Add stack arguments to
32901         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32902         ACCUMULATE_OUTGOING_ARGS).
32903         * dce.c: Include tm_p.h.
32904         (find_call_stack_args): New function.
32905         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
32906         argument.
32907         (mark_insn): Call find_call_stack_args for CALL_Ps.
32908         (prescan_insns_for_dce): Walk insns backwards in bb rather than
32909         forwards.  Allocate and free arg_stores bitmap if needed, pass it
32910         down to deletable_insn_p, don't mark stores set in arg_stores
32911         bitmap, clear the bitmap at the beginning of each bb.
32912         * Makefile.in (dce.o): Depend on $(TM_P_H).
32913
32914 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
32915
32916         PR target/22599
32917         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
32918         to make sure the insn is a conditional test (bug 22599).  Reformat a
32919         few long lines.
32920
32921 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
32922
32923         PR middle-end/38431
32924         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
32925         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
32926         (gloog): Do not call cleanup_tree_cfg.
32927         (graphite_transform_loops): Call cleanup_tree_cfg after all
32928         scops have been code generated.
32929
32930 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
32931         * doc/gty.texi (Invoking the garbage collector): Added new node
32932         and section documenting ggc_collect.
32933
32934 2009-01-14  Richard Guenther  <rguenther@suse.de>
32935
32936         PR tree-optimization/38826
32937         PR middle-end/38477
32938         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
32939         initialization notes only if we actually emitted a warning.
32940         (intra_create_variable_infos): Add constraints for a result decl
32941         that is passed by hidden reference.
32942         (build_pred_graph): Mark all related variables non-direct on
32943         address-taking.
32944
32945 2009-01-14  Nick Clifton  <nickc@redhat.com>
32946
32947         * ira-conflicts.c: Include addresses.h for the definition of
32948         base_reg_class.
32949         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
32950         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
32951
32952 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
32953
32954         PR target/38811
32955         * Makefile.in (ira-lives.o): Add except.h.
32956
32957         * ira-lives.c: Include except.h.
32958         (process_bb_node_lives): Process can_throw_internal.
32959
32960 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
32961
32962         PR rtl-optimization/38774
32963         * combine.c (simplify_set): When undoing cc_use change, don't do
32964         PUT_CODE on the newly created comparison, but instead put back the
32965         old comparison.
32966
32967 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
32968
32969         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
32970         values.  Remove duplicate arm8 entry.
32971
32972 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32973
32974         PR tree-optimization/38786
32975         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
32976         the SSA_NAME case of expand_scalar_variables_expr.
32977         Set the type of an expression to the type of its assign statement.
32978         (expand_scalar_variables_expr): Also gather the scalar computation
32979         used to index the memory access.  Do not pass loop_p.
32980         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
32981         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
32982         the gimple_stmt_iterator where it inserts new code.
32983         Do not pass loop_p.
32984         (copy_bb_and_scalar_dependences): Do not pass loop_p.
32985         (translate_clast): Update call to copy_bb_and_scalar_dependences.
32986
32987 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32988
32989         * graphite.h (debug_value): Removed.
32990         * graphite.c (debug_value): Removed.
32991
32992 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32993
32994         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
32995         ldrd/strd with two 32-bit instructions.
32996
32997 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32998
32999         * config/arm/arm.c (struct processors): Pass for speed down into
33000         cost helper functions.
33001         (const_ok_for_op): Handle COMPARE and inequality nodes.
33002         (arm_rtx_costs_1): Rewrite.
33003         (arm_size_rtx_costs): Update prototype.
33004         (arm_rtx_costs): Pass speed down to helper functions.
33005         (arm_slowmul_rtx_costs): Rework cost calculations.
33006         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
33007         (arm_9e_rtx_costs): Likewise.
33008
33009 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
33010
33011         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
33012         relocations of local symbols wider than UNITS_PER_WORD are not valid.
33013         (alpha_legitimize_address): Do not split local symbols wider than
33014         UNITS_PER_WORD into HIGH/LO_SUM parts.
33015
33016 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
33017
33018         PR bootstrap/38580
33019         * gcc.c (process_command): Replace call to execvp with calls
33020         to pex_one and exit.
33021
33022 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
33023
33024         PR target/29141
33025         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
33026         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
33027         variant for devices with 3-byte PC.
33028         (__tablejump_elpm__): New.
33029
33030 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33031
33032         PR c/32041
33033         * c-parser.c (c_parser_postfix_expression): Allow `->' in
33034         offsetof member-designator, handle it as `[0].'.
33035
33036 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33037
33038         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
33039         function when not using named sections on targets with named sections
33040         if branch distance is less than 262132.
33041
33042 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
33043
33044         * combine.c (combine_instructions):  Recompute
33045         optimize_this_for_speed_p  for each BB in the main combine loop.
33046
33047 2009-01-12  Tomas Bily  <tbily@suse.cz>
33048
33049         PR middlend/38385
33050         * tree-loop-distribution.c (prop_phis): New function.
33051         (generate_builtin): Call prop_phis.
33052
33053 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33054
33055         PR tree-optimization/38807
33056         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
33057         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
33058
33059 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
33060
33061         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
33062         subreg of op0 to the original op0.
33063
33064 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
33065
33066         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
33067
33068 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
33069
33070         PR debug/7055
33071         * mips-tfile.c (parse_def): Fix parsing of def strings
33072         starting with digits.
33073
33074 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
33075
33076         PR target/38695
33077         * config/arm/arm.c (arm_is_long_call_p): Don't call
33078         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
33079
33080 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
33081
33082         * regrename.c (regrename_optimize): Fix dumping.
33083         (find_oldest_value_reg): Preserve REG_POINTER.
33084         (copy_hardreg_forward_1): Likewise.
33085
33086 2009-01-09  Diego Novillo  <dnovillo@google.com>
33087
33088         * gimple.h (struct gimple_statement_base) <uid>: Document
33089         the restrictions on its use.
33090         (gimple_uid): Tidy.
33091         (gimple_set_uid): Tidy.
33092
33093 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33094
33095         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
33096         zero guard even if align_bytes != 0 and count is smaller than
33097         size_needed.
33098
33099 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
33100
33101         PR rtl-optimization/38495
33102         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
33103         (add_range_and_copies_from_move_list): Print all added ranges.
33104         Add ranges to memory optimized destination.
33105
33106 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33107
33108         PR target/38686
33109         PR target/38708
33110         * config/i386/i386.c (override_options): Reject
33111         -mstringop-strategy=rep_8byte with -m32.
33112         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
33113         to 1.  Do count comparison against epilogue_size_needed at compile
33114         time even when count_exp was constant forced into register.  For
33115         size_needed don't jump to epilogue, instead just avoid aligning
33116         and invoke the body algorithm.  If need_zero_guard, add zero guard
33117         even if count is non-zero, but smaller than size_needed + number of
33118         bytes that could be stored for alignment.
33119         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
33120         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
33121         but smaller than size_needed + number of bytes that could be stored
33122         for alignment.  Compare size_needed with epilogue_size_needed instead
33123         of desired_align - align, don't adjust size_needed, pass
33124         epilogue_size_needed to the epilogue expanders.
33125
33126         PR c/35742
33127         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
33128
33129 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33130
33131         * pa.c (last_address): Change to unsigned.
33132         (update_total_code_bytes): Change argument to unsigned.  Don't
33133         check if insn addresses are set.
33134         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
33135         addresses are not set.
33136         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
33137
33138 2009-01-09  Nick Clifton  <nickc@redhat.com>
33139
33140         * config/sh/symbian.c: Replace uses of DECL_INLINE with
33141         DECL_DECLARED_INLINE_P.
33142
33143 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33144
33145         PR middle-end/38347
33146         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
33147         GET_MODE (op0) in operand_subword_force calls.
33148
33149         PR middle-end/38771
33150         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
33151         fold_convert arg0 operands to TREE_TYPE (op0) first.
33152
33153 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
33154
33155         * params.def (ira-max-conflict-table-size): Decrease default value
33156         to 1000.
33157
33158 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
33159
33160         PR tree-optimization/37031
33161         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
33162         on parameter_set.
33163         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
33164         allocate it using gc instead of heap, use VEC_quick_push instead of
33165         VEC_safe_push.
33166         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
33167         instead of heap, use VEC_quick_push instead of VEC_safe_push.
33168         * tree-data-ref.h (struct access_matrix): Change matrix to gc
33169         allocated vector from heap allocated.
33170         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
33171         * tree-loop-linear.c (linear_transform_loops): Allocate nest
33172         vector only after perfect_loop_nest_depth call.
33173
33174 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
33175             Jan Sjodin  <jan.sjodin@amd.com>
33176
33177         PR tree-optimization/38559
33178         * graphite.c (debug_value, copy_constraint,
33179         swap_constraint_variables, scale_constraint_variable, ): New.
33180         (get_lower_bound, get_upper_bound): Removed.
33181         (graphite_trans_bb_strip_mine): Clean up this code that works
33182         only for constant number of iterations.  Fully copy upper and
33183         lower bound constraints, not only the constant part of them.
33184         * graphite.h (debug_value): Declared.
33185
33186 2009-01-08  Ira Rosen  <irar@il.ibm.com>
33187
33188         PR tree-optimization/37194
33189         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
33190         Don't add the cost of cost model guard in prologue to scalar
33191         outside cost in case of known number of iterations.
33192
33193 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
33194             Alan Modra  <amodra@bigpond.net.au>
33195
33196         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
33197         non-word-aligned REG+CONST addressing.
33198
33199 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33200
33201         PR target/38706
33202         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
33203         free_after_compilation when outputting a thunk.
33204         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
33205         Do not call free_after_compilation here.
33206
33207 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33208
33209         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
33210         (ix86_valid_target_attribute_inner_p): Ditto.
33211
33212 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
33213
33214         PR tree-optimization/38492
33215         PR tree-optimization/38498
33216         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
33217         * tree-chrec.h (scev_is_linear_expression): Declared.
33218         * graphite.c (graphite_cannot_represent_loop_niter): New.
33219         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
33220         (graphite_loop_normal_form): Use gcc_assert.
33221         (scan_tree_for_params): Use CASE_CONVERT.
33222         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
33223         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
33224         Use gcc_assert.  Discard scops that contain unhandled cases.
33225         (build_scop_conditions): Return a boolean status for unhandled cases.
33226         (strip_mine_profitable_p): Print the loop number, not its depth.
33227         (is_interchange_valid): Pass the depth of the loop nest, don't
33228         recompute it wrongly.
33229         (graphite_trans_bb_block): Same.
33230         (graphite_trans_bb_block): Print tentative of loop blocking.
33231         (graphite_trans_scop_block): Do not print that the loop has been
33232         blocked.
33233         (graphite_transform_loops): Do not handle scops that contain condition
33234         scalar phi nodes.
33235
33236 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
33237
33238         AVX Programming Reference (December, 2008)
33239         * config/i386/avxintrin.h (_mm256_stream_si256): New.
33240         (_mm256_stream_pd): Likewise.
33241         (_mm256_stream_ps): Likewise.
33242
33243         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
33244         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
33245         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
33246         (bdesc_special_args): Add __builtin_ia32_movntdq256,
33247         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
33248         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
33249         (ix86_expand_special_args_builtin): Likewise.
33250
33251         * config/i386/sse.md (AVXMODEDI): New.
33252         (avx_movnt<mode>): Likewise.
33253         (avx_movnt<mode>): Likewise.
33254         (<sse>_movnt<mode>): Remove AVX support.
33255         (sse2_movntv2di): Likewise.
33256
33257 2009-01-07  Richard Guenther  <rguenther@suse.de>
33258
33259         PR middle-end/38751
33260         * fold-const.c (extract_muldiv): Remove obsolete comment.
33261         (fold_plusminus_mult_expr): Undo MINUS_EXPR
33262         to PLUS_EXPR canonicalization for the canonicalization.
33263
33264 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
33265
33266         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
33267         hosted cross-compilers generating less efficient code.
33268
33269 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33270
33271         * function.h (rtl_data): Add a dbr_scheduled_p field.
33272         * reorg.c (dbr_schedule): Set it.
33273         (gate_handle_delay_slots): Check it.
33274         * config/mips/mips.c (mips_base_delayed_branch): Delete.
33275         (mips_reorg): Check flag_delayed_branch instead of
33276         mips_base_delayed_branch.
33277         (mips_override_options): Don't set mips_base_delayed_branch
33278         or flag_delayed_branch.
33279
33280 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33281
33282         PR rtl-optimization/38426.
33283         * ira.c (ira): Set current_function_is_leaf earlier.
33284
33285 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
33286
33287         PR rtl-optimization/38722
33288         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
33289         too early, only set a flag and modify after last possible
33290         undo_all point.
33291
33292 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
33293
33294         PR c/34252
33295         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
33296         * real.c (decimal_single_format): Correct values of emin and emax.
33297         (decimal_double_format): Ditto.
33298         (decimal_quad_format): Ditto.
33299         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
33300         computation of DECnn_MIN and DECnn_MAX for corrected values of
33301         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
33302         __DECnn_MIN__, and adjust its computation for the corrected value
33303         of emin.
33304
33305 2009-01-06  Jan Hubicka  <jh@suse.cz>
33306
33307         PR target/38744
33308         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
33309
33310 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
33311
33312         * doc/contrib.texi (Contributors): Slightly adjust the end note.
33313         Add Robert Clark to the list of testers.
33314
33315 2009-01-06  Jan Hubicka  <jh@suse.cz>
33316             Kai Tietz  <kai.tietz@onevision.com>
33317
33318         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
33319         * config/i386/i386.c (ix86_expand_call): Add clobbers.
33320
33321 2009-01-06  Jan Hubicka  <jh@suse.cz>
33322             Kai Tietz  <kai.tietz@onevision.com>
33323
33324         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
33325         for w64 ABI.
33326         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
33327         (ix86_nsaved_regs): Count only general purpose regs.
33328         (ix86_nsaved_sseregs): New.
33329         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
33330         to 16 for w64; compute padding and size of sse reg save area.
33331         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
33332         general purpose regs.
33333         (ix86_emit_save_sse_regs_using_mov): New.
33334         (ix86_expand_prologue): Save SSE regs if needed.
33335         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
33336         (ix86_emit_restore_sse_regs_using_mov): New.
33337         (ix86_expand_epilogue): Save SSE regs if needed.
33338
33339 2009-01-06  Jan Hubicka  <jh@suse.cz>
33340             Kai Tietz  <kai.tietz@onevision.com>
33341
33342         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
33343         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
33344         functions when accumulate outgoing args is off.
33345
33346 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33347
33348         PR bootstrap/38742
33349         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
33350         before using pseudos_have_intersected_live_ranges_p.
33351
33352         * ira-int.h (ira_assert): Always define.
33353
33354 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33355
33356         AVX Programming Reference (December, 2008)
33357         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
33358         (_mm256_permute2_pd): Likewise.
33359         (_mm_permute2_ps): Likewise.
33360         (_mm256_permute2_ps): Likewise.
33361         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
33362         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
33363
33364         * config/i386/i386.c (ix86_builtins): Remove
33365         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
33366         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
33367         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
33368         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
33369         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
33370         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
33371         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
33372         __builtin_ia32_vpermil2ps256.
33373         (ix86_init_mmx_sse_builtins): Updated.
33374         (ix86_expand_args_builtin): Likewise.
33375
33376 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33377
33378         * pa.c (output_call): Relocate non-jump insns in the delay slot of
33379         long absolute calls when generating PA 2.0 code.
33380
33381 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
33382
33383         PR rtl-optimization/38583
33384         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
33385
33386         * params.def (ira-max-conflict-table-size): New.
33387
33388         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
33389
33390         * ira.h (ira_conflicts_p): New external definition.
33391
33392         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
33393         table.  Report this.  Return result of building.
33394         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
33395         building conflict table.
33396
33397         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
33398         (ira_color): Use ira_conflicts_p.
33399
33400         * global.c: Include ira.h.
33401         (pseudo_for_reload_consideration_p, build_insn_chain): Use
33402         ira_conflicts_p.
33403
33404         * Makefile.in (global.o): Add ira.h.
33405
33406         * ira-build.c (mark_all_loops_for_removal,
33407         propagate_some_info_from_allocno): New.
33408         (remove_unnecessary_allocnos): Call
33409         propagate_some_info_from_allocno.
33410         (remove_low_level_allocnos): New.
33411         (remove_unnecessary_regions): Add parameter.  Call
33412         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
33413         parameter to remove_unnecessary_regions.
33414         (ira_build): Remove all regions but root if the conflict table was
33415         not built.  Update conflict hard regs for allocnos crossing calls.
33416
33417         * ira.c (ira_conflicts_p): New global.
33418         (ira): Define and use ira_conflicts_p.
33419
33420         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
33421         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
33422         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
33423
33424 2009-01-06  Ben Elliston  <bje@au.ibm.com>
33425
33426         * gengtype-lex.l (YY_NO_INPUT): Define.
33427
33428 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33429
33430         PR c/34911
33431         * c-common.c (handle_vector_size_attribute): Also reject
33432         BOOLEAN_TYPE types.
33433
33434 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
33435
33436         PR tree-optimization/38492
33437         * graphite.c (rename_map_elt, debug_rename_elt,
33438         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
33439         rename_map_elt_info, eq_rename_map_elts,
33440         get_new_name_from_old_name, bb_in_sese_p): Moved around.
33441         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
33442         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
33443         (sese_build_livein_liveouts): New.
33444         (new_sese, free_sese): New.
33445         (new_scop): Call new_sese.
33446         (free_scop): Call free_sese.
33447         (rename_variables_from_edge, rename_phis_end_scop): Removed.
33448         (register_old_new_names): Renamed register_old_and_new_names.
33449         (register_scop_liveout_renames, add_loop_exit_phis,
33450         insert_loop_close_phis, struct igp,
33451         default_liveout_before_guard, add_guard_exit_phis,
33452         insert_guard_phis, copy_renames): New.
33453         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
33454         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
33455         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
33456         (scop_adjust_phis_for_liveouts): New.
33457         (gloog): Call scop_adjust_phis_for_liveouts.
33458
33459         * graphite.h (struct sese): Documented.  Added fields liveout,
33460         num_ver and livein.
33461         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
33462         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
33463         (struct scop): Added field liveout_renames.
33464         (SCOP_LIVEOUT_RENAMES): New.
33465
33466 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33467
33468         PR tree-optimization/38510
33469         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
33470         (translate_clast): Call recompute_all_dominators before
33471         graphite_verify.
33472         (gloog): Call recompute_all_dominators before graphite_verify.
33473
33474 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33475             Jan Sjodin  <jan.sjodin@amd.com>
33476
33477         PR tree-optimization/38500
33478         * graphite.c (create_sese_edges): Call fix_loop_structure after
33479         splitting blocks.
33480
33481 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
33482
33483         * config.gcc: Add m32r*-*-rtems*.
33484         * config/m32r/rtems.h: New file.
33485
33486 2009-01-05  Ben Elliston  <bje@au.ibm.com>
33487
33488         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
33489         (.po.pox): Likewise.
33490         (po/gcc.pot): Likewise.
33491
33492 2009-01-04  David S. Miller  <davem@davemloft.net>
33493
33494         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
33495         (STARTING_FRAME_OFFSET): Always set to zero.
33496
33497 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33498
33499         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
33500         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
33501         fixed-point types, and vectors of the same.
33502
33503 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33504
33505         * config/mips/sync.md (*mb_barrier): Rename to...
33506         (*memory_barrier): ...this.
33507
33508 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
33509
33510         * doc/extend.texi (Function Attributes): Move @cindex after @item
33511         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
33512         and put in alphabetical order. Fix 'target' name and put in order.
33513         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
33514         typos.
33515
33516 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
33517
33518         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
33519         (memory_barrier): Expand as unspec instead of unspec_volatile.
33520         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33521         (*memory_barrier): Define as unspec instead of unspec_volatile.
33522         Use (match_dup 0) as input operand.
33523
33524         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
33525         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
33526         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
33527         scratch register.  Remove operand 1.
33528         (*stbar): Define as unspec instead of unspec_volatile.
33529         Use (match_dup 0) as input operand, remove (const_int 8).
33530         (*membar): Define as unspec instead of unspec_volatile.
33531         Use (match_dup 0) as input operand, remove input operand 2.
33532
33533         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
33534         (memory_barrier): Expand as unspec instead of unspec_volatile.
33535         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33536         (*memory_barrier): Define as unspec instead of unspec_volatile.
33537         Use (match_dup 0) as input operand.
33538
33539         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
33540         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33541         Set volatile flag on operand 0.
33542         (*memory_barrier): New insn pattern.
33543
33544         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
33545         insn operands.
33546         (*memory_barrier): Use (match_dup 0) as input operand.
33547
33548         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
33549         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33550         Set volatile flag on operand 0.
33551         (*mb_internal): New insn pattern.
33552
33553         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
33554
33555 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33556
33557         PR middle-end/38586
33558         * function.c (struct temp_slot): Move to the section of the file
33559         that deals with temp slots.  Remove field 'address'.
33560         (temp_slot_address_table): New hash table of address -> temp slot.
33561         (struct temp_slot_address_entry): New struct, items for the table.
33562         (temp_slot_address_compute_hash, temp_slot_address_hash,
33563         temp_slot_address_eq, insert_temp_slot_address): Support functions
33564         for the new table.
33565         (find_temp_slot_from_address): Rewrite to use the new hash table.
33566         (remove_unused_temp_slot_addresses): Remove addresses of temp
33567         slots that have been made available.
33568         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
33569         worker function for remove_unused_temp_slot_addresses.
33570         (assign_stack_temp_for_type): Don't clear the temp slot address list.
33571         Add the temp slot address to the address -> temp slot map.
33572         (update_temp_slot_address): Update via insert_temp_slot_address.
33573         (free_temp_slots): Call remove_unused_temp_slot_addresses.
33574         (pop_temp_slots): Likewise.
33575         (init_temp_slots): Allocate the address -> temp slot map, or empty
33576         the map if it is already allocated.
33577         (prepare_function_start): Initialize temp slot processing.
33578
33579 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33580
33581         PR middle-end/38584
33582         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
33583         Calculate the size of all stack vars assuming no packing of stack
33584         vars will happen, replacing a quadratic algorithm with a linear one.
33585
33586 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33587
33588         PR target/38707
33589         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
33590         can't be used.
33591
33592 2009-01-03  Diego Novillo  <dnovillo@google.com>
33593
33594         * doc/contrib.texi: Update contributions.
33595
33596 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33597
33598         PR c++/38705
33599         * builtins.c (fold_builtin_memory_op): Give up if either operand
33600         is volatile.  Set srctype or desttype to non-qualified version
33601         of the other type.
33602
33603         PR c/38700
33604         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
33605         and FUNCTION_DECLs.
33606
33607 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
33608
33609         PR rtl-optimization/35805
33610         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
33611         problem if fast dce is able to remove any instructions.
33612         * dce.c (dce_process_block): Fix dump message.
33613
33614 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33615
33616         PR 33649
33617         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33618
33619 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
33620
33621         PR middle-end/38690
33622         * tree-flow.h (op_code_prio, op_prio): New prototypes.
33623         * tree-pretty-print.c (op_code_prio): New function.
33624         (op_prio): No longer static.  Use op_code_prio.
33625         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
33626         Use op_prio and op_code_prio to determine if () should be
33627         printed around operand(s) or not.
33628
33629         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
33630         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
33631         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
33632         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
33633         pp_character instead of pp_string for single letter printing.
33634
33635 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
33636
33637         * doc/extend.texi: Fix '#pragma GCC option' typo.
33638
33639 2009-01-02  Richard Guenther  <rguenther@suse.de>
33640
33641         * doc/install.texi (--enable-checking): Mention different
33642         default for stage1.
33643         (--enable-stage1-checking): Document.
33644
33645 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
33646
33647         PR middle-end/30142
33648         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
33649         case to be an error.
33650
33651 2009-01-02  Ben Elliston  <bje@au.ibm.com>
33652
33653         * config/fp-bit.h (pack_d): Constify argument.
33654         * config/fp-bit.c (makenan): Constify return type. Remove casts.
33655         (isnan): Constify argument.
33656         (isinf): Likewise.
33657         (iszero): Likewise.
33658         (pack_d): Likewise.
33659         (_fpadd_parts): Constify return type.
33660         (_fpmul_parts): Likewise.
33661         (_fpdiv_parts): Likewise.
33662
33663 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
33664
33665         PR c/36489
33666         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
33667         warn about overwriting initializer with side-effects or
33668         -Woverride-init if !IMPLICIT.
33669         (output_init_element): Likewise.  Pass IMPLICIT down to
33670         add_pending_init.
33671         (process_init_element): Add IMPLICIT argument.  Pass it down
33672         to output_init_element.
33673         (push_init_element, pop_init_level, set_designator): Adjust
33674         process_init_element callers.
33675         (set_nonincremental_init, set_nonincremental_init_from_string):
33676         Adjust add_pending_init callers.
33677         (output_pending_init_elements): Adjust output_init_element callers.
33678         * c-tree.h (process_init_element): Adjust prototype.
33679         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
33680         process_init_element callers.
33681
33682 \f
33683 Copyright (C) 2009 Free Software Foundation, Inc.
33684
33685 Copying and distribution of this file, with or without modification,
33686 are permitted in any medium without royalty provided the copyright
33687 notice and this notice are preserved.