OSDN Git Service

d04fb61118709989327c4d6825332e657a2a2b99
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
2
3         * config/i386/abmintrin.h (_mm_popcnt_u32): New.
4         (_mm_popcnt_u64): New.
5
6 2009-12-01  Sebastian Pop  <sebastian.pop@amd.com>
7
8         * config/i386/abmintrin.h: New.
9         * config/i386/i386-c.c (ix86_target_macros_internal): Defined __ABM__.
10         * config/i386/x86intrin.h: Include abmintrin.h when __ABM__ is defined.
11
12 2009-12-01  Uros Bizjak  <ubizjak@gmail.com>
13
14         * config/i386/i386.md (SWI124): Rename from CRC32MODE.
15         (crc32modesuffix): Remove.
16         (crc32modeconstraint): Ditto.
17         (sse4_2_crc32<mode>): Update for renamed mode iterator.  Use
18         imodesuffix instead of crc32modesuffix and <r>m instead of
19         crc32modeconstraint.
20
21 2009-12-01  Jakub Jelinek  <jakub@redhat.com>
22
23         PR c++/42234
24         * tree-cfgcleanup.c (cleanup_omp_return): Don't ICE if control_bb
25         contains no statements.
26
27 2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
28             Joern Rennecke  <amylaar@spamcop.net>
29
30         * cgraphunit.c (plugin.h): Include.
31         (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
32         PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
33         * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
34         (enum plugin_event): Define by including plugin.def.
35         Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
36         (plugin_event_name): Change type to const char **.
37         (get_event_last, get_named_event_id, unregister_callback): Declare.
38         (register_callback): Change type of event argument to int.
39         (highlev-plugin-common.h): New file.
40         * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
41         $(HASHTAB_H)
42         (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
43         (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
44         (s-header-vars): New rule.
45         (install-plugin): Depend on s-header-vars.  Install b-header-vars.
46         * params.c (get_num_compiler_params): New function.
47         * params.h (get_num_compiler_params): Declare.
48         * passes.c (plugin.h): Include.
49         (make_pass_instance): Invoke PLUGIN_NEW_PASS.
50         (do_per_function_toporder, pass_init_dump_file): No longer static.
51         (pass_fini_dump_file): Likewise.
52         (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
53         PLUGIN_PASS_EXECUTION.
54         (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
55         PLUGIN_EARLY_GIMPLE_PASSES_END.
56         * plugin.c (plugin_event_name_init): New array, defined by
57         including plugin.def.
58         (FMT_FOR_PLUGIN_EVENT): Update.
59         (plugin_event_name): Change type to const char ** and initialize
60         to plugin_event_name_init.
61         (event_tab, event_last, event_horizon): New variable.
62         (get_event_last): New function.
63         (plugin_callbacks_init): New array.
64         (plugin_callbacks: Change type to struct callback_info **.
65         Initialize to plugin_callbacks_init.
66         (htab_event_eq, get_named_event_id, unregister_callback): New function.
67         (invoke_plugin_va_callbacks): Likewise.
68         (register_callback): Change type of event argument to int.
69         Handle new events.  Allow dynamic events.
70         (invoke_plugin_callbacks): Likewise.  Return success status.
71         (plugins_active_p): Allow dynamic callbacks.
72         * plugin.def: New file.
73         * plugin.h (invoke_plugin_callbacks): Update prototype.
74         (invoke_plugin_va_callbacks): Declare.
75         * tree-optimize.c (plugin.h): Include.
76         (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
77         PLUGIN_ALL_PASSES_END.
78         * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
79         (pass_fini_dump_file, do_per_function_toporder): Likewise.
80         * doc/plugin.texi: Document new event types.
81
82 2009-12-01  Martin Jambor  <mjambor@suse.cz>
83
84         PR tree-optimization/42237
85         * tree-sra.c (sra_ipa_modify_assign): Split gimple_reg_type assignments
86         in between references into two.
87
88 2009-12-01  Richard Guenther  <rguenther@suse.de>
89
90         * tree-inline.c (copy_tree_body_r): Do not set TREE_BLOCK
91         to the block of the call when remapping a type.
92
93 2009-12-01  Martin Jambor  <mjambor@suse.cz>
94
95         * cgraph.h (struct cgraph_edge): Reorder fields.  Make loop_nest
96         unsigned short int.
97         * ipa-prop.h (struct ipa_param_call_note): Likewise.
98         * ipa-prop.c (ipa_note_param_call): Initialize note->loop_nest.
99
100 2009-12-01  Richard Guenther  <rguenther@suse.de>
101
102         * final.c (rest_of_clean_state): If -fcompare-debug is
103         given dump final insns without UIDs.
104         * tree-ssa-live.c (remove_unused_scope_block_p): Remove
105         after_inlining checks.
106
107 2009-11-30  Chao-ying Fu  <fu@mips.com>
108
109         * config/mips/mips-dsp.md (mips_lhx_<mode>): Use sign_extend.
110
111 2009-11-30  Dave Korn  <dave.korn.cygwin@gmail.com>
112
113         * configure.ac (USE_CYGWIN_LIBSTDCXX_WRAPPERS): Define to reflect
114         status of AC_CHECK_FUNC for Cygwin DLL libstdc++ support wrappers.
115         * configure: Regenerate.
116         * config.in: Regenerate.
117
118         * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Define list of --wrap
119         options for Cygwin DLL libstdc++ support wrappers.
120         (CXX_WRAP_SPEC_OPT): Define spec to use wrappers or not by default
121         according to defined value of USE_CYGWIN_LIBSTDCXX_WRAPPERS.
122         (CXX_WRAP_SPEC): Define entire wrapper spec in or out according to
123         whether USE_CYGWIN_LIBSTDCXX_WRAPPERS is even defined or not.
124         (LINK_SPEC): Include CXX_WRAP_SPEC.
125         * gcc/config/i386/winnt.c (wrapper_strcmp): New qsort helper function.
126         (i386_find_on_wrapper_list): Check if a function is found on the list
127         of libstdc++ wrapper options.
128         (i386_pe_file_end): If we are importing a wrapped function, also emit
129         an external declaration for the real version.
130         * config/i386/cygming.opt (muse-libstdc-wrappers): New option for
131         Cygwin targets. Update copyright year.
132
133 2009-11-30  Steve Ellcey  <sje@cup.hp.com>
134             Jakub Jelinek <jakub@redhat.com>
135
136         * function.c (instantiate_virtual_regs_in_insn): Copy to new reg
137         before forcing mode.
138
139 2009-11-30  Anatoly Sokolov  <aesok@post.ru>
140
141         * config/sh/sh.c (sh_promote_prototypes): Make static.
142         (sh_function_value, sh_libcall_value, sh_function_value_regno_p): New
143         functions.
144         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
145         * config/sh/sh.h: (FUNCTION_VALUE_REGNO_P): Redefine, use
146         sh_function_value_regno_p.
147         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
148         * config/sh/sh-protos.h (sh_function_value_regno_p): Declare.
149         (sh_promote_prototypes) : Remove.
150
151 2009-11-30  Julian Brown  <julian@codesourcery.com>
152
153         * config/arm/arm.h (PREFERRED_RELOAD_CLASS): Don't restrict Thumb-2
154         reloads to LO_REGS.
155
156 2009-11-30  Richard Henderson  <rth@redhat.com>
157
158         * config/i386/i386.c (ix86_vec_interleave_v2df_operator_ok): New.
159         (bdesc_special_args): Update insn codes.
160         (avx_vpermilp_parallel): Correct range check.
161         (ix86_rtx_costs): Handle vector permutation rtx codes.
162         (struct expand_vec_perm_d): Move earlier.
163         (get_mode_wider_vector): New.
164         (expand_vec_perm_broadcast_1): New.
165         (ix86_expand_vector_init_duplicate): Use it.  Tidy AVX modes.
166         (expand_vec_perm_broadcast): New.
167         (ix86_expand_vec_perm_builtin_1): Use it.
168         * config/i386/i386-protos.h: Update.
169         * config/i386/predicates.md (avx_vbroadcast_operand): New.
170         * config/i386/sse.md (AVX256MODE24P): New.
171         (ssescalarmodesuffix2s): New.
172         (avxhalfvecmode, avxscalarmode): Fill out to all modes.
173         (avxmodesuffixf2c): Add V8SI, V4DI.
174         (vec_dupv4sf): New expander.
175         (*vec_dupv4sf_avx): Add vbroadcastss alternative.
176         (*vec_set<mode>_0_avx, **vec_set<mode>_0_sse4_1): Macro-ize for
177         V4SF and V4SI.  Move C alternatives to front.  Add insertps and
178         pinsrd alternatives.
179         (*vec_set<mode>_0_sse2): Split out from ...
180         (vec_set<mode>_0): Macro-ize for V4SF and V4SI.
181         (vec_interleave_highv2df, vec_interleave_lowv2df): Require register
182         destination; use ix86_vec_interleave_v2df_operator_ok, instead of
183         ix86_fixup_binary_operands.
184         (*avx_interleave_highv2df, avx_interleave_lowv2df): Add movddup.
185         (*sse3_interleave_highv2df, sse3_interleave_lowv2df): New.
186         (*avx_movddup, *sse3_movddup): Remove.  New splitter from
187         vec_select form to vec_duplicate form.
188         (*sse2_interleave_highv2df, sse2_interleave_lowv2df): Use
189         ix86_vec_interleave_v2df_operator_ok.
190         (avx_movddup256, avx_unpcklpd256): Change to expanders, merge into ...
191         (*avx_unpcklpd256): ... here.
192         (*vec_dupv4si_avx): New.
193         (*vec_dupv2di_avx): Add movddup alternative.
194         (*vec_dupv2di_sse3): New.
195         (vec_dup<AVX256MODE24P>): Replace avx_vbroadcasts<AVXMODEF4P> and
196         avx_vbroadcastss256; represent with vec_duplicate instead of
197         nested vec_concat operations.
198         (avx_vbroadcastf128_<mode>): Rename from
199         avx_vbroadcastf128_p<avxmodesuffixf2c>256.
200         (*avx_vperm_broadcast_v4sf): New.
201         (*avx_vperm_broadcast_<AVX256MODEF2P>): New.
202
203 2009-11-30  Martin Jambor  <mjambor@suse.cz>
204
205         PR middle-end/42196
206         * tree-sra.c (struct access): New field grp_different_types.
207         (dump_access): Dump grp_different_types.
208         (compare_access_positions): Prefer scalars and vectors over other
209         scalar types.
210         (sort_and_splice_var_accesses): Set grp_different_types if appropriate.
211         (sra_modify_expr): Use the original also when dealing with a complex
212          or vector group accessed as multiple types.
213
214 2009-11-30  Richard Henderson  <rth@redhat.com>
215
216         * config/i386/i386.c (avx_vperm2f128_parallel): New.
217         * config/i386/i386-protos.h: Declare it.
218         * config/i386/predicates.md (avx_vperm2f128_v8sf_operand,
219         avx_vperm2f128_v8si_operand, avx_vperm2f128_v4df_operand): New.
220         * config/i386/sse.md (avx_vperm2f128<mode>3): Change to expander.
221         (*avx_vperm2f128<mode>_full): Renamed from avx_vperm2f128<mode>3.
222         (*avx_vperm2f128<mode>_nozero): New.
223
224 2009-11-30  Richard Henderson  <rth@redhat.com>
225
226         * config/i386/i386-builtin-types.def (V4DF_FTYPE_V4DF_V4DF_V4DI): New.
227         (V8SF_FTYPE_V8SF_V8SF_V8SI): New.
228         * config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Support
229         V4DF and V8SF for AVX; relax constraint on V4SF to SSE1 from SSE2.
230         (IX86_BUILTIN_VEC_PERM_V4DF, IX86_BUILTIN_VEC_PERM_V8SF): New.
231         (bdesc_args): Add them.
232         (ix86_expand_builtin): Expand them.
233         (expand_vec_perm_pshufb2): Only operate on 16-byte vectors.
234
235 2009-11-30  Martin Jambor  <mjambor@suse.cz>
236
237         PR middle-end/42206
238         * ipa-prop.c (ipa_write_node_info): Initialize note_count to zero.
239
240 2009-11-30  Jakub Jelinek  <jakub@redhat.com>
241
242         * ipa-reference.c (propagate): Only dump bitmaps if computed.
243
244 2009-11-30  Olga Golovanevsky  <olga@il.ibm.com>
245
246         PR middle-end/39806
247         * ipa-struct-reorg.c (new_var_eq): Use DECL_UID to hash new variables.
248         (new_var_hash): Likewise.
249         (is_in_new_vars_htab): Likewise.
250         (add_to_new_vars_htab): Likewise.
251
252 2009-11-30  Ira Rosen  <irar@il.ibm.com>
253
254         * tree-vect-stmts.c (vectorizable_assignment): Support
255         multiple types.
256
257 2009-11-30  Richard Guenther  <rguenther@suse.de>
258
259         * doc/contrib.texi (Contributors): Add myself.
260
261 2009-11-30  Richard Guenther  <rguenther@suse.de>
262
263         * tree.c (free_lang_data): Do not set debug_info_level to
264         none if terse.
265
266 2009-11-30  Richard Guenther  <rguenther@suse.de>
267
268         PR middle-end/42119
269         PR fortran/38530
270         * expr.c (expand_expr_addr_expr_1): Properly expand the initializer
271         of CONST_DECLs.
272
273 2009-11-30  Richard Guenther  <rguenther@suse.de>
274
275         * tree-into-ssa.c (insert_phi_nodes): Add PHI nodes in
276         variable UID order.
277
278 2009-11-30  Richard Guenther  <rguenther@suse.de>
279
280         * tree-dump.c (dump_option_value_in): Add TDF_NOUID.
281         * tree-pass.h (TDF_NOUID): Likewise.
282         * print-rtl.c: Include tree-pass.h.
283         (print_mem_expr): Pass dump_flags.
284         (print_rtx): Likewise.
285         * print-tree.c: Include tree-pass.h.
286         (print_node_brief): Handle TDF_NOUID.
287         (print_node): Likewise.
288         * tree-pretty-print.c (dump_decl_name): Likewise.
289         (dump_generic_node): Likewise.
290         * Makefile.in (print-rtl.o, print-tree.o): Add $(TREE_PASS_H)
291         dependency.
292
293 2009-11-30  Nick Clifton  <nickc@redhat.com>
294
295         * config/stormy16/stormy16-lib2-count-leading-zeros.c: Delete.
296         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Remove
297         stormy16-lib2-count-leading-zeros.c.
298         * config/stormy16/stormy16-lib2.c (__clzhi2): Move code from
299         __stormy16_count_leading_zeros() into this function.
300         (__ctzhi2): Use __builtin_clz.
301         (__ffshi2): Likewise.
302
303 2009-11-30  Eric Botcazou  <ebotcazou@adacore.com>
304
305         * config/sparc/sparc.c (DF_MODES): Simplify.
306         (TF_ONLY_MODES, OF_ONLY_MODES): Delete.
307         (TF_MODES, OF_MODES): Adjust for above change.
308         (TF_MODES_NO_S, OF_MODES_NO_S): Likewise.
309         *  config/sparc/sparc.h (REGNO_REG_CLASS): Move around.
310
311 2009-11-30  Paolo Bonzini  <bonzini@gnu.org>
312
313         PR rtl-optimization/41812
314         * fwprop.c (local_md, local_lr): New globals.
315         (process_defs, process_uses): Remove local_md argument.  Never
316         consider dead pseudos to have singleton def-use chains.
317         (single_def_use_enter_block): Perform LR simulation.
318         (build_single_def_use_links): Remove local_md local variable.
319         Add DF_NOTE.  Allocate local_lr.
320         (fwprop_done): Do not remove DF_CHAIN, we do not use it anymore.
321         * df-problems.c (df_md_scratch): New.
322         (df_md_alloc, df_md_free): Allocate/free it.
323         (df_md_local_compute): Only include live registers in init.
324         (df_md_transfer_function): Prune the in-set computed by
325         the confluence function, and the gen-set too.
326
327 2009-11-30  Hans-Peter Nilsson  <hp@axis.com>
328
329         PR rtl-optimization/40086
330         * reorg.c (relax_delay_slots): When looking for redundant insn at
331         the branch target, use next_real_insn, not next_active_insn.
332
333 2009-11-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
334
335         * doc/install.texi: Update minimum MPC version to 0.8.
336
337 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
338
339         * config/rs6000/rs6000.md (fnmaddsf4_powerpc_1): Remove
340         HONOR_SIGNED_ZEROS final condition.
341         (fnmsubsf4_powerpc_1): Same.
342         (fnmadddf4_fpr_1): Same.
343         (fnmsubdf4_fpr_1): Same.
344
345 2009-11-29  Ira Rosen  <irar@il.ibm.com>
346
347         PR tree-optimization/42193
348         * tree-vect-stmts.c (vectorizable_operation): Set vectorization factor
349         to 1 in case of basic block SLP.
350         (vectorizable_load): Likewise.
351
352 2009-11-28  Jan Hubicka  <jh@suse.cz>
353
354         * cgraph.c (same_body_alias_1): Break out of
355         (same_body_alias): ... here; remove comdat check; it is handled
356         in cp already.
357         (cgraph_add_thunk): New.
358         (dump_cgraph_node): Dump aliases and thunks.
359         * cgraph.h (cgraph_thunk_info): New structure.
360         (struct cgraph_node): Add thunk info.
361         (cgraph_add_thunk): New.
362         * cgraphunit.c (cgraph_emit_thunks): Remove.
363         (cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
364         (assemble_thunk): New function.
365         (cgraph_expand_function): Handle thunks.
366         (thunk_adjust): New.
367         (init_lowered_empty_function): New.
368         * cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS):
369         Remove.
370         * lto-cgraph.c (lto_output_node): Stream thunk info.
371         (input_node): Likewise.
372         * langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
373         * langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
374         (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
375         * i386.c (x86_output_mi_thunk): Make output prettier.
376
377 2009-11-28  Richard Guenther  <rguenther@suse.de>
378
379         PR tree-optimization/42183
380         * tree-nrv.c (tree_nrv): Bail out if the RESULT_DECL has its
381         address taken.  Merge the addressable state of the NRV
382         variable and the result instead of copying it.
383
384 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
385
386         * matrix-reorg.c (analyze_matrix_allocation_site): Remove unused
387         malloc_fname variable.
388         (check_allocation_function): Remove unused gsi and bb_level_0
389         variables.
390         (transform_access_sites): Remove unused d_type_size and d_type_size_k
391         variables.
392         * omega.c (resurrect_subs): Remove unused n variable.
393         (omega_solve_geq): Remove unused neweqns variable.
394         * lto-streamer-in.c (lto_read_tree): Remove unused end_marker variable.
395         * tree-inline.c (declare_return_variable): Remove USE_P argument,
396         return use instead of var.
397         (remap_decl, remap_block): Remove unused fn variable.
398         (expand_call_inline): Remove unused retvar variable, adjust
399         declare_return_variable caller.
400         (optimize_inline_calls): Remove unused prev_fn variable.
401         * tree-vect-slp.c (vect_analyze_slp_instance): Remove unused ncopies
402         variable.
403         (vect_create_mask_and_perm): Remove unused group_size and dr_chain_size
404         variables.
405         * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle MINUS_EXPR
406         properly.
407         * tree-vect-loop.c (vect_analyze_loop_form): Remove unused backedge
408         variable.
409         (vect_create_epilog_for_reduction): Remove unused bytesize variable.
410         * omp-low.c (workshare_safe_to_combine_p): Remove par_entry_bb
411         parameter.  Remove unused par_stmt variable.
412         (determine_parallel_type): Adjust workshare_safe_to_combine_p caller.
413         (expand_omp_sections): Remove unused l1 variable.
414         (lower_omp_for): Remove unused ilist variable.
415         * tree-loop-distribution.c (mark_nodes_having_upstream_mem_writes):
416         Remove unused has_upstream_mem_write_p variable.
417         * recog.c (decode_asm_operands): Remove unused noperands variable.
418         * tree-ssa-alias.c (refs_may_alias_p_1): Remove unused size1 and
419         size2 variable.
420         * libgcov.c (__gcov_merge_delta): Remove unused last variable.
421         * tree-call-cdce.c (gen_conditions_for_pow_int_base): Remove unused
422         base_nm variable.
423         (gen_conditions_for_pow): Remove unused ec variable.
424         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove unused size
425         variable.
426         * ipa-struct-reorg.c (program_redefines_malloc_p): Remove unused
427         fndecl variable.
428         * tree-ssa-sink.c (statement_sink_location): Remove unused code
429         variable.
430         * regmove.c (copy_src_to_dest): Remove unused insn_uid and move_uid
431         variables.
432         * tree-complex.c (create_one_component_var): Remove unused inner_type
433         variable.
434         * calls.c (emit_call_1): Don't GEN_INT (struct_value_size)
435         unnecessarily when GEN_*CALL omits that argument.
436         * regrename.c (regrename_optimize): Remove unused regs_seen variable.
437         (build_def_use): Remove unused icode variable.
438         * ipa-pure-const.c (check_call): Remove unused callee and avail
439         variables.
440         * tree-dfa.c (add_referenced_var): Remove unused v_ann variable.
441         * tree-vect-patterns.c (vect_recog_pow_pattern): Remove unused type
442         variable.
443         (vect_pattern_recog): Remove unused stmt variable.
444         * sel-sched-ir.c (make_regions_from_the_rest): Remove unused
445         new_regions variable.
446         * postreload.c (reload_cse_simplify_operands): Remove unused mode
447         variable.
448         * tree-parloops.c (create_call_for_reduction_1): Remove unused
449         addr_type variable.
450         (create_parallel_loop): Remove unused res variable.
451         (gen_parallel_loop): Remove unused nloop variable.
452         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
453         * value-prof.c (gimple_mod_subtract_transform,
454         gimple_stringops_transform): Remove unused value variable.
455         (gimple_stringops_values_to_profile): Remove unused fcode variable.
456         * tree-vrp.c (register_new_assert_for): Remove unused found variable.
457         (vrp_visit_switch_stmt): Remove unused n variable.
458         * tree-vect-stmts.c (vectorizable_conversion): Remove unused expr
459         variable.
460         (vectorizable_operation): Remove unused shift_p variable.
461         (vectorizable_store): Remove unused first_stmt_vinfo variable.
462         * tree-ssa-operands.c (add_stmt_operand): Remove unused v_ann variable.
463         * tree-vect-data-refs.c (vect_analyze_data_refs): Remove unused bb
464         variable.
465         (vect_permute_store_chain): Remove unused scalar_dest variable.
466         (vect_supportable_dr_alignment): Remove unused invariant_in_outerloop
467         variable.
468         * tree-ssa-threadupdate.c (thread_single_edge): Remove unused
469         local_info variable.
470         * tree-optimize.c (tree_rest_of_compilation): Remove unused node
471         variable.
472         * optabs.c (expand_binop): Remove unused equiv_value variable.
473         (emit_libcall_block): Remove unused prev variable.
474         (init_optabs): Remove unused int_mode variable.
475         * tree-ssa-structalias.c (scc_visit): Remove unused have_ref_node
476         variable.
477         (do_structure_copy): Remove unused lhsbase and rhsbase variables.
478         (find_func_aliases): Remove unused rhstype variable.
479         (ipa_pta_execute): Remove unused varid variable.
480
481 2009-11-28  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
482
483         * config/avr/avr.h (ASM_OUTPUT_EXTERNAL): Add.
484
485 2009-11-28  David Binderman  <dcb314@hotmail.com>
486
487         * ira-color.c (put_allocno_into_bucket): Remove set but not used
488         local variable hard_regs_num.
489         * ira-lives.c (process_single_reg_class_operands): Remove cover_class.
490         * loop-unswitch.c (unswitch_loop): Remove zero_bitmap.
491         * lower-subreg.c (decompose_multiword_subregs): Remove next.
492
493 2009-11-27  Martin Jambor  <mjambor@suse.cz>
494
495         PR middle-end/42006
496         * tree-sra.c (get_replaced_param_substitute): Call create_tmp_var
497         instead of create_tmp_var.  Set DECL_GIMPLE_REG_P to one manually
498         for vector and complex types.
499         (get_adjustment_for_base): Describe return value in the comment.
500
501 2009-11-27  Nick Clifton  <nickc@redhat.com>
502
503         * longlong.h (count_leading_zeros): Define macro for stormy16 target.
504         (COUNT_LEADING_ZEROS_0): Likewise.
505         * config/stormy16/stormy16-lib2.c: Arrange for separate
506         compilation of each function.
507         (__ffshi2): New function.
508         (__stormy16_count_leading_zeros): New function.
509         * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Use stub files to
510         compile each function into its own object file.
511         (stormy16-lib2-ashlsi3.c): New stub file.
512         (stormy16-lib2-ashrsi3.c): New stub file.
513         (stormy16-lib2-clzhi2.c): New stub file.
514         (stormy16-lib2-count-leading-zeros.c): New stub file.
515         (stormy16-lib2-ctzhi2.c): New stub file.
516         (stormy16-lib2-divsi3.c): New stub file.
517         (stormy16-lib2-ffshi2.c): New stub file.
518         (stormy16-lib2-lshrsi3.c): New stub file.
519         (stormy16-lib2-modsi3.c): New stub file.
520         (stormy16-lib2-parityhi2.c): New stub file.
521         (stormy16-lib2-popcounthi2.c): New stub file.
522         (stormy16-lib2-udivmodsi4.c): New stub file.
523         (stormy16-lib2-udivsi3.c): New stub file.
524         (stormy16-lib2-umodsi3.c): New stub file.
525
526 2009-11-27  Richard Henderson  <rth@redhat.com>
527
528         * config/i386/sse.md (vec_interleave_highv16qi,
529         vec_interleave_lowv16qi, vec_interleave_highv8hi,
530         vec_interleave_lowv8hi, vec_interleave_highv4si,
531         vec_interleave_lowv4si, vec_interleave_highv2di,
532         vec_interleave_lowv2di, vec_interleave_highv4sf,
533         vec_interleave_lowv4sf, vec_interleave_highv2df,
534         vec_interleave_lowv2df): Remove expanders.
535         (sse_unpcklps, sse_unpckhps, sse2_unpckhpd_exp, sse2_unpcklpd_exp,
536         sse2_punpckhqdq, sse2_punpcklqdq, sse2_punpckhbw, sse2_punpcklbw,
537         sse2_punpckhwd, sse2_punpcklwd, sse2_punpckhdq, sse2_punpckldq):
538         Rename to their proper vec_interleave equivalent.  Update all users
539         to the new name.
540         * config/i386/i386.c, config/i386/i386.md: Update all users.
541
542 2009-11-27  Michael Matz  <matz@suse.de>
543
544         PR rtl-optimization/42084
545         * cfgexpand.c (maybe_cleanup_end_of_block): Add new parameter,
546         use it to stop walking.
547         (expand_gimple_cond): Adjust call to above.
548
549 2009-11-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
550
551         PR target/41810
552         * gthr-solaris.h (__gthread_mutex_destroy): Remove UNUSED.
553         [SUPPORTS_WEAK && GTHREAD_USE_WEAK] (__gthread_active_p): Use
554         __extension__ to allow cast from function pointer to object
555         pointer in C++.
556         * doc/install.texi (--enable-threads): Clarify use of Solaris threads.
557
558 2009-11-27  Steven Bosscher  <steven@gcc.gnu.org>
559
560         * config/ia64/itanium1.md: Remove.
561         * config/ia64/ia64.md: Do not include it.
562         * config/ia64/ia64.c (ia64_handle_option): Remove "itanium",
563         "itanium1", and "merced" from the processor alias table.
564         (clocks, add_cycles): Remove global variables.
565         (ia64_sched_reorder2): Don't set/use them.
566         (ia64_dfa_new_cycle, ia64_h_i_d_extended, ia64_reorg): Likewise.
567         (bundling): Likewise. Remove extra pass for MMMUL/MMSHF.
568
569 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
570
571         * config/s390/s390.c (last_scheduled_insn): New variable.
572         (s390_fpload_toreg, s390_z10_prevent_earlyload_conflicts): New
573         functions.
574         (s390_sched_reorder, s390_sched_variable_issue): New functions.
575         (TARGET_SCHED_VARIABLE_ISSUE, TARGET_SCHED_REORDER): Target hooks
576         defined.
577
578 2009-11-27  Michael Matz  <matz@suse.de>
579
580         PR c++/41906
581         * tree-eh.c (lower_catch): Stop after expanding a catch-all.
582
583 2009-11-27  Richard Guenther  <rguenther@suse.de>
584
585         * timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
586         TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
587         * loop-init.c (pass_rtl_move_loop_invariants): Use
588         TV_LOOP_MOVE_INVARIANTS.
589         (pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
590         (pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
591         (pass_rtl_doloop): Use TV_LOOP_DOLOOP.
592
593 2009-11-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
594
595         * emit-rtl.c (next_active_insn, prev_active_insn): Correct comment.
596
597 2009-11-27  Jakub Jelinek  <jakub@redhat.com>
598
599         * config/i386/i386.c (ix86_emit_restore_sse_regs_using_mov): Remove
600         unused insn variable.
601         * genemit.c (output_peephole2_scratches): Only declare and initialize
602         _regs_allocated if it will be ever used.
603         * cfgloopmanip.c (create_empty_if_region_on_edge): Remove unused
604         succ_bb variable.
605         (create_empty_loop_on_edge): Remove unused freq and cnt variables.
606         * unwind-c.c (PERSONALITY_FUNCTION): Remove unused action_record
607         variable.
608
609         * opts.c (decode_options): If optimize is bigger than 255,
610         set it to 255.
611
612 2009-11-26  Richard Henderson  <rth@redhat.com>
613
614         * config/i386/sse.md (mulv16qi3): Change back from an expander
615         to an insn-and-split.
616         (mulv4si): Mention AVX not XOP for AVX exception.
617         (*sse2_mulv4si3): Likewise.
618         (mulv2di3): Use vmulld not vpmacsdd for XOP expansion.  Tidy.
619
620 2009-11-26  Bernd Schmidt  <bernd.schmidt@analog.com>
621
622         * cfgexpand (n_stack_vars_conflict): New static variable.
623         (triangular_index): Reduce likelyhood of overflow by performing
624         the division before the multiplication.
625         (resize_stack_vars_conflict): Call fatal_error if overflow
626         occurred in triangular_index.  Update n_stack_vars_conflict.
627
628         PR rtl-opt/38582
629         * regrename.c (struct du_chain): Remove member earlyclobber.
630         (scan_rtx_reg): Don't set it.  Remove argument earlyclobber,
631         all callers changed.
632         (scan_rtx): Remove argument earlyclobber, all callers changed.
633         (hide_operands, restore_operands, record_out_operands): New functions,
634         broken out of build_def_use.
635         (build_def_use): Call them as necessary.
636
637         * regrename.c (struct du_head): New members id, conflicts,
638         hard_conflicts and cannot_rename.
639         (enum scan_actions): Remove terminate_all_read and
640         terminate_overlapping_read; add mark_all_read.
641         (scan_actions_name): Likewise.
642         (du_head_p): New typedef.  Define a vector type for it.
643         (id_to_chain): New static variable.
644         (note_sets, clear_dead_regs): Delete functions.
645         (free_chain_data): New function.
646         (merge_overlapping_regs): Simply walk the conflicts bitmap.
647         Remove argument B, all callers changed.
648         (regrename_optimize): Allocate id_to_chain.  Ignore chains that have
649         the cannot_rename bit set.  Update regno and nregs of a renamed chain.
650         Call free_chain_data when done.
651         (do_replace): Remove death notes when the renamed reg is set in the
652         last insn; add them if not.
653         (mark_conflict, note_sets_clobbers): New static function.
654         (fail_current_block, current_id, open_chains_set, live_hard_regs): New
655         static variables.
656         (scan_rtx_reg): Keep track of conflicts between chains, and between
657         chains and hard regs.  Don't terminate chains when we find a read we
658         can't handle, mark it unrenameable instead.  For terminate_write,
659         terminate chains that are written with an exact match or a superset
660         of registers.  Set fail_current_block if multi-word lifetimes are too
661         complex to handle.
662         (scan_rtx_address): Use mark_all_read instead of terminate_all_read.
663         (build_def_use): Initialize current_id, live_chains and live_hard_regs;
664         free memory for them when done.
665         Rearrange the steps so that earlyclobbers are noted before reads
666         are processed.  Add new steps to keep track of hard register lifetimes
667         outside insn operands.
668
669 2009-11-26  Richard Guenther  <rguenther@suse.de>
670
671         * tree-ssa-dce.c (nr_walks): New variable.
672         (mark_aliased_reaching_defs_necessary): Adjust oracle cut-off.
673         (perform_tree_ssa_dce): Init nr_walks.
674
675 2009-11-26  Michael Matz  <matz@suse.de>
676
677         PR tree-optimization/41905
678         * tree-eh.c (lower_eh_constructs_2): Don't add assignments
679         below statements that can't fall thru.
680
681 2009-11-26  Michael Matz  <matz@suse.de>
682
683         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
684         expand_builtin_sprintf): Remove.
685         (expand_builtin): Don't call them.
686
687 2009-11-26  Richard Guenther  <rguenther@suse.de>
688
689         * tree-ssa-dce.c (perform_tree_ssa_dce): Allocate visited bitmap.
690
691 2009-11-26  Nick Clifton  <nickc@redhat.com>
692
693         * config/rx/rx.c (rx_expand_epilogue): Add checks for sibcalls
694         being used incorrectly.
695         (rx_function_ok_for_sibcall): New function.  Do not allow indirect
696         sibcalls, or sibcalls from interrupt functions.
697         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
698         * config/rx/rx.md (sibcall): Convert to a define_expand.  Check
699         for a MEM inside a MEM.
700         (sibcall_value): Likewise.
701         (sibcall_internal): New pattern containing old sibcall pattern.
702         (sibcall_value_internal): Likewise.
703
704 2009-11-25  Richard Henderson  <rth@redhat.com>
705
706         * config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
707         optional 3rd argument to define the mode.
708         * config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
709         (V2UDI, V4USI, V8UHI, V16UQI): New.
710         (V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
711         V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
712         V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
713         * config/i386/i386-modes.def: Rearrange for double-wide AVX.
714         * config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
715         * config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
716         (bdesc_args): Add the builtin definitions to match.
717         (ix86_expand_builtin): Expand them.
718         (ix86_builtin_vectorization_cost): Rename from
719         x86_builtin_vectorization_cost.
720         (ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
721         doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
722         expand_vec_perm_blend, expand_vec_perm_vpermil,
723         expand_vec_perm_pshufb, expand_vec_perm_1,
724         expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
725         expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
726         expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
727         ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
728         ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
729         ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
730         TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
731         * sse.md (SSEMODE_EO): New.
732         (vec_extract_even<mode>): Use SSEMODE_EO and
733         ix86_expand_vec_extract_even_odd.
734         (vec_extract_odd<mode>): Likewise.
735         (mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
736         vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
737
738 2009-11-25  Richard Henderson  <rth@redhat.com>
739
740         * target.h (targetm.vectorize.builtin_vec_perm_ok): New.
741         * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
742         * hooks.h, hooks.c (hook_bool_tree_tree_true): New.
743         * tree-vect-slp.c (vect_create_mask_and_perm): Don't create
744         the vector constant here...
745         (vect_transform_slp_perm_load): ... do it here instead.  Validate
746         that the permutation vector is implementable by the target.
747
748 2009-11-25  Jakub Jelinek  <jakub@redhat.com>
749
750         * config/rs6000/sysv4.opt (mregnames): Change Var to rs6000_regnames.
751         * config/rs6000/sysv4.h (TARGET_REGNAMES): Define.
752
753         * print-rtl.c (print_rtx): When printing newline, append
754         print_rtx_head and indentation after the newline.
755
756         PR target/42165
757         * config/i386/i386.c (print_operand): For 32-byte memory use
758         YMMWORD in -masm=intel mode.  Use TBYTE instead of XWORD.
759         * config/i386/i386.md (crc32modesuffix): Expand to nothing
760         in -masm=intel mode.
761         (sse4_2_crc32di): Print just crc32 instead of crc32q in
762         -masm=intel mode.
763         * config/i386/mmx.md (*mmx_pinsrw): Print correct size of
764         memory operand in -masm=intel mode.
765         * config/i386/sse.md (*avx_pinsr<ssevecsize>, *sse4_1_pinsrb,
766         *sse2_pinsrw): Likewise.
767         (sse_cvtss2siq, sse_cvtss2siq_2, sse_cvttss2siq): Don't print
768         q suffix in -masm=intel mode.
769
770 2009-11-25  Eric Botcazou  <ebotcazou@adacore.com>
771
772         PR target/10127
773         PR ada/20548
774         PR middle-end/42004
775         * dwarf2out.c (dwarf2out_args_size_adjust): Rename to...
776         (dwarf2out_stack_adjust): ...this.  Do not adjust the arg size for
777         ACCUMULATE_OUTGOING_ARGS targets.  Rename former version to...
778         (dwarf2out_notice_stack_adjust): ...this.  Adjust for above renaming.
779         (dwarf2out_frame_debug_expr): Revert previous change and adjust for
780         above renaming.
781         (dwarf2out_frame_debug): Add ??? comment.  Adjust for above renaming.
782
783 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
784
785         * config/i386/predicates.md (emms_operation): New predicate.
786         (vzeroupper_operation): Ditto.
787         (vzeroall_operation): Improve pattern recognition.
788         * config/i386/sse.md (avx_vzeroupper_rex64): Remove insn pattern.
789         (avx_vzeroupper): Change insn pattern to expander.
790         (*avx_vzeroupper): New insn pattern.  Use vzeroupper_operation
791         predicate.
792         (*avx_vzeroall): Remove operands 1 and 2.
793         * config/i386/mmx.md (mmx_emms): Change insn pattern to expander.
794         (mmx_femms): Ditto.
795         (*mmx_emms): New insn pattern.  Use emms_operation predicate.
796         (*mmx_femms): Ditto.
797         * config/i386/i386.c (enum ix86_builtins)
798         <IX86_BUILTIN_VZEROUPPER_REX64>: Remove.
799         (struct builtin_description) <CODE_FOR_avx_vzeroupper_rex64>:
800         Remove initailization.
801         <CODE_FOR_avx_vzeroupper>: Unconditionally initialize here.
802
803 2009-11-25  Paul Brook  <paul@codesourcery.com>
804
805         * config/arm/arm.md (consttable_4): Handle (high ...).
806
807 2009-11-25  Robert Nelson  <robert.nelson@digikey.com>
808             Richard Earnshaw  <rearnsha@arm.com>
809
810         * arm.h (enum vfp_reg_type): Add VFP_NONE.
811         * arm.c (all_fpus): Use it for floating point units that aren't based
812         on the VFP architecture.
813         (aapcs_vfp_is_call_or_return_candidate): Make base_mode a pointer to
814         enum machine_mode.
815
816 2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
817
818         * alias.c: Remove trailing white spaces.
819         * alloc-pool.c: Likewise.
820         * alloc-pool.h: Likewise.
821         * attribs.c: Likewise.
822         * auto-inc-dec.c: Likewise.
823         * basic-block.h: Likewise.
824         * bb-reorder.c: Likewise.
825         * bt-load.c: Likewise.
826         * builtins.c: Likewise.
827         * builtins.def: Likewise.
828         * c-common.c: Likewise.
829         * c-common.h: Likewise.
830         * c-cppbuiltin.c: Likewise.
831         * c-decl.c: Likewise.
832         * c-format.c: Likewise.
833         * c-lex.c: Likewise.
834         * c-omp.c: Likewise.
835         * c-opts.c: Likewise.
836         * c-parser.c: Likewise.
837         * c-pretty-print.c: Likewise.
838         * c-tree.h: Likewise.
839         * c-typeck.c: Likewise.
840         * caller-save.c: Likewise.
841         * calls.c: Likewise.
842         * cfg.c: Likewise.
843         * cfganal.c: Likewise.
844         * cfgexpand.c: Likewise.
845         * cfghooks.c: Likewise.
846         * cfghooks.h: Likewise.
847         * cfglayout.c: Likewise.
848         * cfgloop.c: Likewise.
849         * cfgloop.h: Likewise.
850         * cfgloopmanip.c: Likewise.
851         * cfgrtl.c: Likewise.
852         * cgraph.c: Likewise.
853         * cgraph.h: Likewise.
854         * cgraphbuild.c: Likewise.
855         * cgraphunit.c: Likewise.
856         * cif-code.def: Likewise.
857         * collect2.c: Likewise.
858         * combine.c: Likewise.
859         * convert.c: Likewise.
860         * coverage.c: Likewise.
861         * crtstuff.c: Likewise.
862         * cse.c: Likewise.
863         * cselib.c: Likewise.
864         * dbgcnt.c: Likewise.
865         * dbgcnt.def: Likewise.
866         * dbgcnt.h: Likewise.
867         * dbxout.c: Likewise.
868         * dce.c: Likewise.
869         * ddg.c: Likewise.
870         * ddg.h: Likewise.
871         * defaults.h: Likewise.
872         * df-byte-scan.c: Likewise.
873         * df-core.c: Likewise.
874         * df-problems.c: Likewise.
875         * df-scan.c: Likewise.
876         * df.h: Likewise.
877         * dfp.c: Likewise.
878         * diagnostic.c: Likewise.
879         * diagnostic.h: Likewise.
880         * dominance.c: Likewise.
881         * domwalk.c: Likewise.
882         * double-int.c: Likewise.
883         * double-int.h: Likewise.
884         * dse.c: Likewise.
885         * dwarf2asm.c: Likewise.
886         * dwarf2asm.h: Likewise.
887         * dwarf2out.c: Likewise.
888         * ebitmap.c: Likewise.
889         * ebitmap.h: Likewise.
890         * emit-rtl.c: Likewise.
891         * et-forest.c: Likewise.
892         * except.c: Likewise.
893         * except.h: Likewise.
894         * expmed.c: Likewise.
895         * expr.c: Likewise.
896         * expr.h: Likewise.
897         * final.c: Likewise.
898         * flags.h: Likewise.
899         * fold-const.c: Likewise.
900         * function.c: Likewise.
901         * function.h: Likewise.
902         * fwprop.c: Likewise.
903         * gcc.c: Likewise.
904         * gcov-dump.c: Likewise.
905         * gcov-io.c: Likewise.
906         * gcov-io.h: Likewise.
907         * gcov.c: Likewise.
908         * gcse.c: Likewise.
909         * genattr.c: Likewise.
910         * genattrtab.c: Likewise.
911         * genautomata.c: Likewise.
912         * genchecksum.c: Likewise.
913         * genconfig.c: Likewise.
914         * genflags.c: Likewise.
915         * gengtype-parse.c: Likewise.
916         * gengtype.c: Likewise.
917         * gengtype.h: Likewise.
918         * genmddeps.c: Likewise.
919         * genmodes.c: Likewise.
920         * genopinit.c: Likewise.
921         * genpreds.c: Likewise.
922         * gensupport.c: Likewise.
923         * ggc-common.c: Likewise.
924         * ggc-page.c: Likewise.
925         * ggc-zone.c: Likewise.
926         * ggc.h: Likewise.
927         * gimple-iterator.c: Likewise.
928         * gimple-low.c: Likewise.
929         * gimple-pretty-print.c: Likewise.
930         * gimple.c: Likewise.
931         * gimple.def: Likewise.
932         * gimple.h: Likewise.
933         * gimplify.c: Likewise.
934         * graphds.c: Likewise.
935         * graphite-clast-to-gimple.c: Likewise.
936         * gthr-nks.h: Likewise.
937         * gthr-posix.c: Likewise.
938         * gthr-posix.h: Likewise.
939         * gthr-posix95.h: Likewise.
940         * gthr-single.h: Likewise.
941         * gthr-tpf.h: Likewise.
942         * gthr-vxworks.h: Likewise.
943         * gthr.h: Likewise.
944         * haifa-sched.c: Likewise.
945         * hard-reg-set.h: Likewise.
946         * hooks.c: Likewise.
947         * hooks.h: Likewise.
948         * hosthooks.h: Likewise.
949         * hwint.h: Likewise.
950         * ifcvt.c: Likewise.
951         * incpath.c: Likewise.
952         * init-regs.c: Likewise.
953         * integrate.c: Likewise.
954         * ipa-cp.c: Likewise.
955         * ipa-inline.c: Likewise.
956         * ipa-prop.c: Likewise.
957         * ipa-pure-const.c: Likewise.
958         * ipa-reference.c: Likewise.
959         * ipa-struct-reorg.c: Likewise.
960         * ipa-struct-reorg.h: Likewise.
961         * ipa-type-escape.c: Likewise.
962         * ipa-type-escape.h: Likewise.
963         * ipa-utils.c: Likewise.
964         * ipa-utils.h: Likewise.
965         * ipa.c: Likewise.
966         * ira-build.c: Likewise.
967         * ira-color.c: Likewise.
968         * ira-conflicts.c: Likewise.
969         * ira-costs.c: Likewise.
970         * ira-emit.c: Likewise.
971         * ira-int.h: Likewise.
972         * ira-lives.c: Likewise.
973         * ira.c: Likewise.
974         * jump.c: Likewise.
975         * lambda-code.c: Likewise.
976         * lambda-mat.c: Likewise.
977         * lambda-trans.c: Likewise.
978         * lambda.h: Likewise.
979         * langhooks.c: Likewise.
980         * lcm.c: Likewise.
981         * libgcov.c: Likewise.
982         * lists.c: Likewise.
983         * loop-doloop.c: Likewise.
984         * loop-init.c: Likewise.
985         * loop-invariant.c: Likewise.
986         * loop-iv.c: Likewise.
987         * loop-unroll.c: Likewise.
988         * lower-subreg.c: Likewise.
989         * lto-cgraph.c: Likewise.
990         * lto-compress.c: Likewise.
991         * lto-opts.c: Likewise.
992         * lto-section-in.c: Likewise.
993         * lto-section-out.c: Likewise.
994         * lto-streamer-in.c: Likewise.
995         * lto-streamer-out.c: Likewise.
996         * lto-streamer.c: Likewise.
997         * lto-streamer.h: Likewise.
998         * lto-symtab.c: Likewise.
999         * lto-wpa-fixup.c: Likewise.
1000         * matrix-reorg.c: Likewise.
1001         * mcf.c: Likewise.
1002         * mode-switching.c: Likewise.
1003         * modulo-sched.c: Likewise.
1004         * omega.c: Likewise.
1005         * omega.h: Likewise.
1006         * omp-low.c: Likewise.
1007         * optabs.c: Likewise.
1008         * optabs.h: Likewise.
1009         * opts-common.c: Likewise.
1010         * opts.c: Likewise.
1011         * params.def: Likewise.
1012         * params.h: Likewise.
1013         * passes.c: Likewise.
1014         * plugin.c: Likewise.
1015         * postreload-gcse.c: Likewise.
1016         * postreload.c: Likewise.
1017         * predict.c: Likewise.
1018         * predict.def: Likewise.
1019         * pretty-print.c: Likewise.
1020         * pretty-print.h: Likewise.
1021         * print-rtl.c: Likewise.
1022         * print-tree.c: Likewise.
1023         * profile.c: Likewise.
1024         * read-rtl.c: Likewise.
1025         * real.c: Likewise.
1026         * recog.c: Likewise.
1027         * reg-stack.c: Likewise.
1028         * regcprop.c: Likewise.
1029         * reginfo.c: Likewise.
1030         * regmove.c: Likewise.
1031         * regrename.c: Likewise.
1032         * regs.h: Likewise.
1033         * regstat.c: Likewise.
1034         * reload.c: Likewise.
1035         * reload1.c: Likewise.
1036         * resource.c: Likewise.
1037         * rtl.c: Likewise.
1038         * rtl.def: Likewise.
1039         * rtl.h: Likewise.
1040         * rtlanal.c: Likewise.
1041         * sbitmap.c: Likewise.
1042         * sched-deps.c: Likewise.
1043         * sched-ebb.c: Likewise.
1044         * sched-int.h: Likewise.
1045         * sched-rgn.c: Likewise.
1046         * sched-vis.c: Likewise.
1047         * sdbout.c: Likewise.
1048         * sel-sched-dump.c: Likewise.
1049         * sel-sched-dump.h: Likewise.
1050         * sel-sched-ir.c: Likewise.
1051         * sel-sched-ir.h: Likewise.
1052         * sel-sched.c: Likewise.
1053         * sel-sched.h: Likewise.
1054         * sese.c: Likewise.
1055         * sese.h: Likewise.
1056         * simplify-rtx.c: Likewise.
1057         * stack-ptr-mod.c: Likewise.
1058         * stmt.c: Likewise.
1059         * stor-layout.c: Likewise.
1060         * store-motion.c: Likewise.
1061         * stringpool.c: Likewise.
1062         * stub-objc.c: Likewise.
1063         * sync-builtins.def: Likewise.
1064         * target-def.h: Likewise.
1065         * target.h: Likewise.
1066         * targhooks.c: Likewise.
1067         * targhooks.h: Likewise.
1068         * timevar.c: Likewise.
1069         * tlink.c: Likewise.
1070         * toplev.c: Likewise.
1071         * toplev.h: Likewise.
1072         * tracer.c: Likewise.
1073         * tree-affine.c: Likewise.
1074         * tree-affine.h: Likewise.
1075         * tree-browser.def: Likewise.
1076         * tree-call-cdce.c: Likewise.
1077         * tree-cfg.c: Likewise.
1078         * tree-cfgcleanup.c: Likewise.
1079         * tree-chrec.c: Likewise.
1080         * tree-chrec.h: Likewise.
1081         * tree-complex.c: Likewise.
1082         * tree-data-ref.c: Likewise.
1083         * tree-data-ref.h: Likewise.
1084         * tree-dfa.c: Likewise.
1085         * tree-dump.c: Likewise.
1086         * tree-dump.h: Likewise.
1087         * tree-eh.c: Likewise.
1088         * tree-flow-inline.h: Likewise.
1089         * tree-flow.h: Likewise.
1090         * tree-if-conv.c: Likewise.
1091         * tree-inline.c: Likewise.
1092         * tree-into-ssa.c: Likewise.
1093         * tree-loop-distribution.c: Likewise.
1094         * tree-loop-linear.c: Likewise.
1095         * tree-mudflap.c: Likewise.
1096         * tree-nested.c: Likewise.
1097         * tree-nomudflap.c: Likewise.
1098         * tree-nrv.c: Likewise.
1099         * tree-object-size.c: Likewise.
1100         * tree-optimize.c: Likewise.
1101         * tree-outof-ssa.c: Likewise.
1102         * tree-parloops.c: Likewise.
1103         * tree-pass.h: Likewise.
1104         * tree-phinodes.c: Likewise.
1105         * tree-predcom.c: Likewise.
1106         * tree-pretty-print.c: Likewise.
1107         * tree-profile.c: Likewise.
1108         * tree-scalar-evolution.c: Likewise.
1109         * tree-ssa-address.c: Likewise.
1110         * tree-ssa-alias.c: Likewise.
1111         * tree-ssa-ccp.c: Likewise.
1112         * tree-ssa-coalesce.c: Likewise.
1113         * tree-ssa-copy.c: Likewise.
1114         * tree-ssa-copyrename.c: Likewise.
1115         * tree-ssa-dce.c: Likewise.
1116         * tree-ssa-dom.c: Likewise.
1117         * tree-ssa-dse.c: Likewise.
1118         * tree-ssa-forwprop.c: Likewise.
1119         * tree-ssa-ifcombine.c: Likewise.
1120         * tree-ssa-live.c: Likewise.
1121         * tree-ssa-live.h: Likewise.
1122         * tree-ssa-loop-ch.c: Likewise.
1123         * tree-ssa-loop-im.c: Likewise.
1124         * tree-ssa-loop-ivcanon.c: Likewise.
1125         * tree-ssa-loop-ivopts.c: Likewise.
1126         * tree-ssa-loop-manip.c: Likewise.
1127         * tree-ssa-loop-niter.c: Likewise.
1128         * tree-ssa-loop-prefetch.c: Likewise.
1129         * tree-ssa-loop-unswitch.c: Likewise.
1130         * tree-ssa-loop.c: Likewise.
1131         * tree-ssa-math-opts.c: Likewise.
1132         * tree-ssa-operands.c: Likewise.
1133         * tree-ssa-operands.h: Likewise.
1134         * tree-ssa-phiopt.c: Likewise.
1135         * tree-ssa-phiprop.c: Likewise.
1136         * tree-ssa-pre.c: Likewise.
1137         * tree-ssa-propagate.c: Likewise.
1138         * tree-ssa-reassoc.c: Likewise.
1139         * tree-ssa-sccvn.c: Likewise.
1140         * tree-ssa-sink.c: Likewise.
1141         * tree-ssa-structalias.c: Likewise.
1142         * tree-ssa-ter.c: Likewise.
1143         * tree-ssa-threadedge.c: Likewise.
1144         * tree-ssa-threadupdate.c: Likewise.
1145         * tree-ssa-uncprop.c: Likewise.
1146         * tree-ssa.c: Likewise.
1147         * tree-ssanames.c: Likewise.
1148         * tree-switch-conversion.c: Likewise.
1149         * tree-tailcall.c: Likewise.
1150         * tree-vect-data-refs.c: Likewise.
1151         * tree-vect-generic.c: Likewise.
1152         * tree-vect-loop-manip.c: Likewise.
1153         * tree-vect-loop.c: Likewise.
1154         * tree-vect-patterns.c: Likewise.
1155         * tree-vect-slp.c: Likewise.
1156         * tree-vect-stmts.c: Likewise.
1157         * tree-vectorizer.c: Likewise.
1158         * tree-vectorizer.h: Likewise.
1159         * tree-vrp.c: Likewise.
1160         * tree.c: Likewise.
1161         * tree.def: Likewise.
1162         * tree.h: Likewise.
1163         * treestruct.def: Likewise.
1164         * unwind-compat.c: Likewise.
1165         * unwind-dw2-fde-glibc.c: Likewise.
1166         * unwind-dw2.c: Likewise.
1167         * value-prof.c: Likewise.
1168         * value-prof.h: Likewise.
1169         * var-tracking.c: Likewise.
1170         * varasm.c: Likewise.
1171         * varpool.c: Likewise.
1172         * vec.c: Likewise.
1173         * vec.h: Likewise.
1174         * vmsdbgout.c: Likewise.
1175         * web.c: Likewise.
1176         * xcoffout.c: Likewise.
1177
1178 2009-11-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1179
1180         * pa.c (output_call): Only use sr4 for long interspace calls if
1181         call binds local and generating non PIC code.
1182         (attr_length_call): Adjust length calculation for above.
1183
1184 2009-11-25  Uros Bizjak  <ubizjak@gmail.com>
1185
1186         * config/i386/i386.md (plusminus_carry_mnemonic): New code attribute.
1187         (add<mode>3_carry): Change operand order of plus RTX.
1188         (*add<mode>3_carry): Ditto.
1189         (*addsi3_carry_zext): Ditto.
1190         (*add<dwi>3_doubleword): Update for changed operand order.
1191         (*negti2_1 splitter): Ditto.
1192         (*negdi2_1 splitter): Ditto.
1193         (<plusminus_insn><mode>3_carry): Macroize expander from
1194         {add,sub}<mode>3_carry patterns using plusminus code iterator.
1195         (*<plusminus_insn><mode>3_carry): Macroize insn from
1196         *{add,sub}<mode>3_carry patetrns using plusminus code iterator.
1197         (neg<mode>2): Macroize expander from neg{qi,hi,si,di,ti}2
1198         patterns using SDWIM mode iterator.
1199         (*neg<dwi>2_doubleword): New insn_and_split pattern.  Macroize
1200         pattern from *neg{di,ti}2_1 patterns and corresponding splitters
1201         using DWIH mode iterator.
1202         (*neg<mode>2_1): Macroize insn from neg{qi,hi,si,di}2_1 patterns
1203         using SWI mode iterator.
1204         (*neg<mode>2_cmpz): Ditto from neg{qi,hi,si,di}2_cmpz patterns.
1205         (one_cmpl<mode>2): Macroize expander from one_cmpl{qi,hi,si,di}2
1206         patterns using SWIM mode iterator.
1207         (*one_cmpl<mode>2_1): Macroize insn from one_cmpl{hi,si,di}2_1
1208         patterns using SWI248 mode iterator.
1209         (*one_cmpl<mode>2_2): Macroize insn from one_cmpl{qi,hi,si,di}2_2
1210         patterns using SWI mode iterator.
1211         (*one_cmpl<mode>2_2 splitter): Macroize splitter from
1212         one_cmpl{qi,hi,si,di}2_2 splitter patterns using SWI mode iterator.
1213
1214 2009-11-24  Michael Matz  <matz@suse.de>
1215
1216         * expr.c (set_storage_via_libcall): Fix build_call_expr call.
1217
1218 2009-11-24  David Binderman  <dcb314@hotmail.com>
1219
1220         * expr.c (store_field): Remove set but not used local variable
1221         width_mask.
1222         (expand_expr_real_2): Remove treeop2.
1223         * gcse.c (update_ld_motion_stores): Remove new_rtx.
1224         * haifa-sched.c (max_issue): Remove points.
1225         (sched_create_recovery_edges): Remove e.
1226         * ira-costs.c (setup_allocno_cover_class_and_costs): Remove mode.
1227
1228 2009-11-24  Nick Clifton  <nickc@redhat.com>
1229
1230         * config/v850/v850.c (function_arg): Fix handling of zero-length
1231         function arguments.
1232
1233 2009-11-24  Michael Matz  <matz@suse.de>
1234
1235         * tree.h (union tree_ann_d): Don't declare.
1236         (tree_base): Remove ann field.
1237         (struct var_ann_d): Declare forward.
1238         (tree_result_decl, tree_parm_decl, tree_var_decl): Add ann field.
1239         (DECL_VAR_ANN_PTR): New macro.
1240         * tree-dfa.c (create_var_ann): Rewrite in terms of above macro,
1241         accept only VAR, PARM or RESULT decls.
1242         (create_tree_common_ann): Remove.
1243         (remove_referenced_var): Use DECL_VAR_ANN_PTR.
1244         * tree-eh.c (lookup_expr_eh_lp): Remove.
1245         * tree-flow-inline.h (var_ann, get_var_ann): Rewrite in terms of
1246         DECL_VAR_ANN_PTR.
1247         (ann_type, tree_common_ann, get_tree_common_ann): Remove.
1248         * tree-flow.h (enum tree_ann_type): Remove.
1249         (struct tree_ann_common_d): Remove.
1250         (struct var_ann_d): Remove common field.
1251         (union tree_ann_d): Remove.
1252         (tree_ann_t, tree_ann_common_t): Remove typedefs.
1253         (tree_common_ann, get_tree_common_ann, ann_type,
1254         create_tree_common_ann, lookup_expr_eh_lp): Don't declare.
1255         * tree-ssa.c (delete_tree_ssa): Use DECL_VAR_ANN_PTR.
1256         * tree.c (copy_node_stat): Use DECL_VAR_ANN_PTR.
1257         * builtins.c (expand_builtin_memcpy): Use
1258         currently_expanding_gimple_stmt instead of tree annotation.
1259         (expand_builtin_memset_args): Ditto.
1260         * cfgexpand.c (currently_expanding_gimple_stmt): Add global variable.
1261         (expand_call_stmt): Don't set tree annotation.
1262         (expand_gimple_basic_block): Set currently_expanding_gimple_stmt.
1263         * expr.c (expand_expr_real): Don't call lookup_expr_eh_lp.
1264         * gimple.h (currently_expanding_gimple_stmt): Declare.
1265
1266 2009-11-24  Paolo Carlini  <paolo.carlini@oracle.com>
1267
1268         * dwarf2out.c (add_location_or_const_value_attribute): Remove
1269         useless NOTE_VAR_LOCATION_STATUS call.
1270         * cfgrtl.c (commit_one_edge_insertion): Remove useless loop, tidy.
1271
1272 2009-11-24  Rafael Avila de Espindola  <espindola@google.com>
1273
1274         * lto-wrapper.c (lto_wrapper_exit): Don't try to delete files if
1275         being called recursively.
1276
1277 2009-11-24  Basile Starynkevitch  <basile@starynkevitch.net>
1278
1279         * Makefile.in (PLUGIN_HEADERS): Added files: cppdefault.h flags.h
1280         $(MD5_H) params.def params.h prefix.h tree-inline.h.
1281
1282 2009-11-24  Paul Brook  <paul@codesourcery.com>
1283
1284         * gcc/config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Fix comment
1285         typo.
1286
1287 2009-11-24  Julian Brown  <julian@codesourcery.com>
1288             Paul Brook  <paul@codesourcery.com>
1289
1290         * config/arm/arm.c (TARGET_DWARF_REGISTER_SPAN): Define.
1291         (arm_dwarf_register_span): New function.
1292         (arm_dbx_register_number): Add VFPv3 dwarf numbering.
1293
1294 2009-11-24  David Binderman  <dcb314@hotmail.com>
1295
1296         * cfgrtl.c (commit_one_edge_insertion): Remove set but not used
1297         local variable bb_note.
1298         * dominance.c (get_dominated_by): Likewise local var n.
1299         (output_file_names): Likewise local var idx.
1300         (add_location_or_const_value_attribute): Likewise local var status.
1301         * dwarf2out.c (gen_variable_die): Likewise local var field.
1302         * emit-rtl.c (no_line_numbers): Remove.
1303         (init_emit_once): Remove line_numbers parameter.
1304         * rtl.h (init_emit_once): Adjust prototype.
1305         * toplev.c (backend_init): Adjust init_emit_once call.
1306
1307 2009-11-24  Richard Guenther  <rguenther@suse.de>
1308
1309         PR tree-optimization/42142
1310         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1):
1311         Handle iv-dependent (non-)kills properly.
1312         (mark_aliased_reaching_defs_necessary): Pass the basic-block
1313         of the reference statement to mark_aliased_reaching_defs_necessary_1.
1314
1315 2009-11-24  Martin Jambor  <mjambor@suse.cz>
1316
1317         PR tree-optimization/42154
1318         * tree-sra.c (struct access): Added comments.
1319         (sra_modify_expr): Build references to the old aggregate with
1320         build_ref_for_offset instead of reusing access->expr.
1321         (load_assign_lhs_subreplacements): Likewise.
1322
1323 2009-11-24  Uros Bizjak  <ubizjak@gmail.com>
1324
1325         * config/i386/i386.md (add<mode>3_carry): Change insn pattern
1326         to expander.
1327         (sub<mode>3_carry): Ditto.
1328         (x86_mov<mode>cc_0_m1): Ditto.
1329         (*add<mode>3_carry): New insn pattern.  Use VOIDmode match_operator
1330         for ix86_carry_flag_operator operator predicate.
1331         (*sub<mode>3_carry): Ditto.
1332         (*x86_mov<mode>cc_0_m1): Ditto.
1333         (*addsi3_carry_zext): Use VOIDmode match_operator for
1334         ix86_carry_flag_operator operator predicate.
1335         (*subsi3_carry_zext): Ditto.
1336         (*x86_mov<mode>cc_0_m1_s): Ditto.
1337         (*x86_mov<mode>cc_0_m1_neg): Ditto.
1338         * config/i386/predocates.md (ix86_carry_flag_operator): Do not
1339         check operator sub-expressions for FLAGS_REG and const0_rtx.
1340         * config/i386/i386.c (*ix86_gen_sub3_carry): Update prototype.
1341         (ix86_expand_int_movcc): Update calls to gen_x86_mov{si,di}cc_0_m1.
1342         (ix86_expand_int_addcc): Update calls to
1343         gen_{add,sub}{qi,hi,si,di}3_carry.  Do not set mode of compare_op.
1344         (ix86_expand_strlensi_unroll_1): Update calls to ix86_gen_sub3_carry.
1345         Do not set mode of compare operation.
1346
1347 2009-11-23  Jan Hubicka  <jh@suse.cz>
1348
1349         PR middle-end/42151
1350         * ipa-inline.c (inline_transform): Avoid ICE when transform is called
1351         twice.
1352
1353 2009-11-23  Jan Hubicka  <jh@suse.cz>
1354
1355         * ipa-cp.c (ipcp_compute_node_scale): Work around completely
1356         wrong profile updates.
1357         * predict.c (counts_to_freqs): Be expected for ENTRY/EXIT block
1358         having largest frequency.
1359         * ira-live.c (ira_implicitly_set_insn_hard_regs): Silecne
1360         used uninitalized warning.
1361         * tree-optimize.c (execute_fixup_cfg): Rescale entry and exit block
1362         frequencies.
1363
1364 2009-11-23  Uros Bizjak  <ubizjak@gmail.com>
1365
1366         * config/alpha/alpha.md (*cmp_sadd_sidi): Use gen_lowpart instead
1367         of gen_rtx_REG to generate operand 5.
1368         (*cmp_ssub_sidi): Ditto.
1369
1370 2009-11-23  Richard Henderson  <rth@redhat.com>
1371
1372         * config/i386/i386.c (avx_vpermilp_parallel): Fix sign compare
1373         mismatch.
1374
1375 2009-11-23  Paul Brook  <paul@codesourcery.com>
1376
1377         * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Add special
1378         case for noreturn functions.
1379         (arm_compute_save_reg_mask): Remove special noreturn handling.
1380
1381 2009-11-23  Richard Guenther  <rguenther@suse.de>
1382
1383         * tree-dfa.c (get_ref_base_and_extent): Adjust maximum access
1384         size for DECL bases.
1385
1386 2009-11-22  Richard Henderson  <rth@redhat.com>
1387
1388         * i386.c (avx_vpermilp_parallel): New function.
1389         * i386-protos.h: Declare it.
1390         * predicates.md (avx_vpermilp_v8sf_operand, avx_vpermilp_v4df_operand,
1391         avx_vpermilp_v4sf_operand, avx_vpermilp_v2df_operand): New.
1392         * sse.md (AVXMODEFDP, AVXMODEFSP): New iterators.
1393         (ssescalarnum, ssedoublesizemode): Add AVX modes.
1394         (vpermilbits): Remove.
1395         (avx_vpermil<mode>): Change insns to expanders.
1396         (*avx_vpermil<mode>): New.  Use vec_select.
1397
1398 2009-11-22  Richard Earnshaw  <rearnsha@arm.com>
1399
1400         * opts.c (decode_options): Don't enable flag_schedule_insns
1401         when optimizing for size.
1402         * doc/invoke.texi: Document change.
1403
1404 2009-11-22  Uros Bizjak  <ubizjak@gmail.com>
1405
1406         PR target/42113
1407         * config/alpha/alpha.md (*cmp_sadd_si): Change mode
1408         of scratch register to SImode.
1409         (*cmp_sadd_sidi): Ditto.
1410         (*cmp_ssub_si): Ditto.
1411         (*cmp_ssub_sidi): Ditto.
1412
1413 2009-11-21  Ian Lance Taylor  <iant@google.com>
1414
1415         * Makefile.in (HOST_LIBS): Move higher in file.
1416         (LINKER, LINKER_FLAGS): If ENABLE_BUILD_WITH_CXX, but $(HOST_LIBS)
1417         is not empty, set to $(CC) and $(CFLAGS).
1418
1419 2009-11-22  Martin Jambor  <mjambor@suse.cz>
1420
1421         * tree-cfg.c (verify_types_in_gimple_reference): Error out on
1422         V_C_E of an SSA_NAME or an invariant if lvalue is required.
1423         (verify_gimple_call): Verify LHS also with with
1424         verify_types_in_gimple_reference.
1425
1426 2009-11-21  Martin Jambor  <mjambor@suse.cz>
1427
1428         PR middle-end/42025
1429         * tree-sra.c (access_precludes_ipa_sra_p): New function.
1430         (splice_param_accesses): Check all accesses by calling
1431         access_precludes_ipa_sra_p.
1432         (sra_ipa_modify_expr): Rename argument erite to dont_convert and do
1433         not convert types if it is true.
1434         (sra_ipa_modify_assign): Convert types in case of mismatch.
1435
1436 2009-11-21  Kaushik Phatak  <kaushik.phatak@kpitcummins.com>
1437
1438         * config/sh/sh.md (cmpeqsi_t-1): Use logical_operand predicate
1439         for operand 1.
1440
1441 2009-11-21  Adam Nemet  <adambnemet@gmail.com>
1442
1443         * config/mips/mips-protos.h (mulsidi3_gen_fn): New typedef.
1444         (mips_mulsidi3_gen_fn): Declare new function.
1445         * config/mips/mips.c (mips_mulsidi3_gen_fn): New function.
1446         * config/mips/mips.md (<u>mulsidi3): Change condition to use
1447         mips_mulsidi3_gen_fn.  Use mips_mulsidi3_gen_fn to generate the insn.
1448         (<u>mulsidi3_64bit): Don't match for ISA_HAS_DMUL3.
1449         (mulsidi3_64bit_dmul): New define_insn.
1450
1451 2009-11-21  Ben Elliston  <bje@au.ibm.com>
1452
1453         * gengtype-lex.l: Enable noinput flex option.
1454         (YY_NO_INPUT): Remove define.
1455
1456 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1457
1458         * tree-ssa.c (find_released_ssa_name): Handle NULL wi.
1459         (insert_debug_temp_for_var_def): Handle degenerate PHI nodes.
1460         (insert_debug_temps_for_defs): Handle PHI nodes.
1461         * tree-ssa-dom.c (degenerate_phi_result): Don't crash on released
1462         SSA names.
1463
1464 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1465
1466         * tree-ssa-pre.c (remove_dead_inserted_code): Don't release_defs
1467         after remove_phi_node.
1468
1469 2009-11-21  Alexandre Oliva  <aoliva@redhat.com>
1470
1471         PR tree-optimization/42078
1472         * gimple.h (gimple_replace_lhs): New declaration.
1473         * gimple.c (gimple_replace_lhs): New function.
1474         * tree-ssa-math-opts.c (execute_cse_reciprocals): Call it before
1475         modifying the call.
1476
1477 2009-11-20  Sebastian Pop  <sebastian.pop@amd.com>
1478
1479         * config/i386/sse.md (*xop_pmacsdql_mem): Don't call reg_mentioned_p.
1480         (xop_mulv2div2di3_low): Same.
1481         (*xop_pmacsdqh_mem): Same.
1482
1483 2009-11-20  Richard Henderson  <rth@redhat.com>
1484
1485         * config/i386/i386-builtin-types.awk: New file.
1486         * config/i386/i386-builtin-types.def: New file.
1487         * config/i386/t-i386: Use them to build i386-builtin-types.inc.
1488         * config/i386/i386.c: Include it.
1489         (ix86_builtin_type_tab, ix86_get_builtin_type): New.
1490         (ix86_builtin_func_type_tab, ix86_get_builtin_func_type): New.
1491         (struct builtin_isa): Remove GTY marker.  Replace tree type with
1492         ix86_builtin_func_type; add set_and_not_built_p.
1493         (def_builtin): Change type parameter to tcode; use
1494         ix86_get_builtin_func_type; update all callers.  Accept zero mask
1495         to mean the builtin is unconditionally available.
1496         (ix86_add_new_builtins): Use set_and_not_built_p instead of type
1497         being set to NULL.
1498         (enum ix86_special_builtin_type, enum ix86_builtin_type): Remove.
1499         Update some users to rationalized enumeration codes from new include.
1500         (enum multi_arg_type): Remove.  Replace all enumeration values
1501         with defines to new ix86_builtin_func_type.
1502         (ix86_init_mmx_sse_builtins): Don't build any types here.  Defer
1503         all type resolution to def_builtin.
1504         (ix86_init_builtin_types): Split out from ...
1505         (ix86_init_builtins): ... here.  Use ix86_get_builtin_func_type.
1506
1507 2009-11-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
1508
1509         PR target/41787
1510         * config/rs6000/rs6000.c (struct machine_function): Revert
1511         2009-10-23 change to set VRSAVE to non-0 if we use VSX.
1512         (rs6000_expand_to_rtl_hook): Ditto.
1513         (rs6000_check_vector_mode): Ditto.
1514         (compute_vrsave_mask): Ditto.
1515
1516 2009-11-20  Paul Brook  <paul@codesourcery.com>
1517
1518         * doc/invoke.texi: Document ARM -mcpu=cortex-a5.
1519         * config/arm/arm-cores.def: Add cortex-a5.
1520         * config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a5.
1521         * config/arm/arm-tune.md: Regenerate.
1522
1523 2009-11-20 Olga Golovanevsky <olga@il.ibm.com>
1524
1525         PR middle-end/39960
1526         * ipa-struct-reorg.c (find_pos_in_stmt): New parameter.
1527         (ref_pos): New field in structure.
1528         (insert_new_var_in_stmt): New function.
1529
1530
1531 2009-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1532
1533         * config.gcc (alpha*-dec-osf[45]*): Set use_gcc_stdint.
1534         * config/alpha/osf.h (SIG_ATOMIC_TYPE): Define.
1535         (INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE): Define.
1536         (UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE): Define.
1537         (INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
1538         INT_LEAST64_TYPE): Define.
1539         (UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE,
1540         UINT_LEAST64_TYPE): Define.
1541         (INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
1542         INT_FAST64_TYPE): Define.
1543         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
1544         UINT_FAST64_TYPE): Define.
1545         (INTPTR_TYPE, UINTPTR_TYPE): Define.
1546
1547 2009-11-20  Julian Brown  <julian@codesourcery.com>
1548
1549         * config/arm/arm.h (ASM_OUTPUT_REG_PUSH): Handle STATIC_CHAIN_REGNUM
1550         specially for Thumb-1.
1551         (ASM_OUTPUT_REG_POP): Likewise.
1552
1553 2009-11-19  Jason Merrill  <jason@redhat.com>
1554
1555         * dwarf2out.c (get_context_die): Take TYPE_MAIN_VARIANT.
1556
1557 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1558             Rafael Avila de Espindola  <espindola@google.com>
1559
1560         * doc/plugins.texi (Plugin initialization): Added advices for
1561         retrieving the version of GCC at plugin compilation and loading times.
1562
1563 2009-11-19  Basile Starynkevitch  <basile@starynkevitch.net>
1564
1565         * plugin.c (FMT_FOR_PLUGIN_EVENT): added definition.
1566         (dump_active_plugins): output to file everything. Use
1567         internationalized dump & FMT_FOR_PLUGIN_EVENT.
1568
1569 2009-11-19  Richard Guenther  <rguenther@suse.de>
1570
1571         * gimple.c (canonicalize_cond_expr_cond): Strip conversions
1572         around truth-valued expressions.
1573         * tree.c (free_lang_data): Untangle check for LTO frontend.
1574
1575 2009-11-19  Jakub Jelinek  <jakub@redhat.com>
1576
1577         * tree.c (need_assembler_name_p): Use cgraph_get_node instead
1578         of cgraph_node_for_decl.
1579         * cgraph.h (cgraph_node_for_decl): Remove prototype.
1580         * cgraph.c (cgraph_node_for_decl): Remove.
1581         (cgraph_get_node): Just return NULL if !cgraph_hash.
1582
1583 2009-11-19  Paul Brook  <paul@codesourcery.com>
1584
1585         * config.gcc: Add new ARM --with-fpu options.
1586         * doc/invoke.texi: Docuent ARM -mfpu=fpv4-sp-d16.
1587         * config/arm/arm.c (all_fpus): Add fpv4-sp-d16.
1588
1589 2009-11-18  Richard Guenther  <rguenther@suse.de>
1590
1591         * gimple.h (union gimple_statement_d): Add gsmembase member.
1592         (gimple_vuse_op): Use gsmembase for access.
1593         (gimple_vdef_op): Likewise.
1594         (gimple_vuse): Likewise.
1595         (gimple_vdef): Likewise.
1596         (gimple_vuse_ptr): Likewise.
1597         (gimple_vdef_ptr): Likewise.
1598         (gimple_set_vuse): Likewise.
1599         (gimple_set_vdef): Likewise.
1600         * gsstruct.def (GSS_WITH_MEM_OPS_BASE): Add.
1601
1602 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1603
1604         * doc/arm-neon-intrinsics.texi: Regenerated.
1605
1606 2009-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
1607
1608         * config/arm/neon-docgen.ml (analyze_shape_elt): Handle alternatives.
1609
1610 2009-11-18  Paul Brook  <paul@codesourcery.com>
1611             Daniel Jacobowitz  <dan@codesourcery.com>
1612
1613         * config/arm/arm.c (FL_ARCH7EM, FL_FOR_ARCH7EM): Define.
1614         (arm_arch7em): New variable.
1615         (all_architectures): Add armv7e-m.
1616         (arm_override_options): Set arm_arch7em.
1617         * config/arm/arm.h (TARGET_DSP_MULTIPLY, TARGET_INT_SIMD):
1618         Include arm_arch7em.
1619         (arm_arch7em): Declare.
1620
1621 2009-11-18  Richard Guenther  <rguenther@suse.de>
1622
1623         * lto-streamer-in.c (input_gimple_stmt): Assert that we find
1624         a valid field decl if checking is enabled.
1625
1626 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1627
1628         * ipa-prop.h (struct ipa_param_call_note): New field lto_stmt_uid.
1629         (lto_ipa_fixup_call_notes): Declare.
1630         * ipa-prop.c (ipa_note_param_call): Store gimple uid.
1631         (update_call_notes_after_inlining): Copy call stmt uid to the new
1632         edge.
1633         (ipa_write_param_call_note): New function.
1634         (ipa_read_param_call_note): New function
1635         (ipa_write_node_info): Write also param call notes.  Removed a bogus
1636         comment, reformatted to fit 80 columns.
1637         (ipa_read_node_info): Read also param call notes. Removed a bogus
1638         comment.  Remove ipa_edge_args_vector growth.
1639         (lto_ipa_fixup_call_notes): New function.
1640         * ipa-cp.c (pass_ipa_cp): Add stmt_fixup hook.
1641         * ipa-inline.c (cgraph_mark_inline_edge): Perform indirect
1642         inlining regardless of flag_wpa.
1643         (cgraph_decide_inlining_of_small_functions): Likewise.
1644         (cgraph_decide_inlining): Likewise.
1645         (inline_read_summary): Likewise.
1646
1647 2009-11-18  Jan Hubicka  <jh@suse.cz>
1648
1649         * predict.c (compute_function_frequency): Export.
1650         * predict.h (compute_function_frequency): Declare.
1651         * tree-optimize.c (execute_fixup_cfg): Rescale frequencies.
1652
1653 2009-11-18  Martin Jambor  <mjambor@suse.cz>
1654
1655         * passes.c (ipa_write_summaries): Call renumber_gimple_stmt_uids
1656         on all nodes we write summaries for.
1657
1658 2009-11-18  Shujing Zhao  <pearly.zhao@oracle.com>
1659
1660         PR middle-end/22201
1661         * params.def (PARAM_INLINE_UNIT_GROWTH, PARAM_IPCP_UNIT_GROWTH)
1662         (PARAM_EARLY_INLINING_INSNS, PARAM_IRA_MAX_LOOPS_NUM)
1663         (PARAM_IRA_MAX_CONFLICT_TABLE_SIZE)
1664         (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP)
1665         (PARAM_MIN_INSN_TO_PREFETCH_RATIO)
1666         (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO)
1667         (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Uppercase the first letter of the
1668         description string.
1669
1670 2009-11-18  Jakub Jelinek  <jakub@redhat.com>
1671
1672         * dwarf2out.c (loc_list_from_tree): Don't call rtl_for_decl_location
1673         unnecessarily.
1674         (rtl_for_decl_location): Try harder to get a rtl for TREE_STATIC vars.
1675
1676         PR c++/3187
1677         * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
1678         fields.
1679         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1680         prototypes.
1681         * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
1682         cgraph_materialize_all_clones): Handle same_body aliases.
1683         * cgraph.c (cgraph_allocate_node): New function.
1684         (cgraph_create_node): Use it.
1685         (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
1686         cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
1687         (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
1688         functions.
1689         * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
1690         (input_node): Stream in same_body aliases.
1691         * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
1692         for same_body aliases.
1693         (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.
1694
1695 2009-11-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1696
1697         PR other/39888
1698         * config/darwin.h: Use the extension stub libraries to access
1699         current libgcc_s features.
1700
1701 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1702
1703         PR debug/41926
1704         * tree-vect-loop.c (vect_loop_kill_debug_uses): New.
1705         (vect_transform_loop): Call it.
1706
1707 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1708
1709         * tree-ssa.c (insert_debug_temp_for_var_def): Fix handling of
1710         released SSA names.
1711
1712 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1713
1714         PR debug/41888
1715         PR debug/41886
1716         * graphite-scop-detection.c (stmt_simple_for_scop_p): Debug stmts
1717         are ok.
1718         * graphite-sese-to-poly.c (graphite_stmt_p): Likewise.
1719         (try_generate_gimple_bb): Skip debug stmts when finding data refs.
1720         * sese.c (sese_build_liveouts_bb): Skip debug stmts.
1721         (sese_bad_liveouts_use): New.
1722         (sese_reset_debug_liveouts_bb): New.
1723         (sese_build_liveouts): Use it.
1724         (rename_variables_in_stmt): Reset debug stmts rather than creating
1725         new vars for them.
1726         (expand_scalar_variable_stmt): Likewise.
1727
1728 2009-11-18  Alexandre Oliva  <aoliva@redhat.com>
1729
1730         * df-scan.c (df_ref_create): Don't mark BB as dirty on debug insns.
1731         (df_ref_remove): Likewise.
1732
1733 2009-11-17  Jan Hubicka  <jh@suse.cz>
1734
1735         * ipa-struct-reorg.c (update_cgraph_with_malloc_call): Fix profile
1736         info.
1737
1738 2009-11-17  Eric Botcazou  <ebotcazou@adacore.com>
1739
1740         * toplev.c (process_options): Remove dead code.
1741         * doc/invoke.texi (-frename-registers): Mention -fpeel-loops.
1742
1743 2009-11-17  Rafael Avila de Espindola  <espindola@google.com>
1744
1745         * lto-symtab.c (lto_symtab_resolve_symbols): Always initialize the
1746         nodes.
1747
1748 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1749
1750         PR tree-optimization/41857
1751         * tree-ssa-address.c (move_hint_to_base): Use void pointer to
1752         TYPE's address space instead of pointer to TYPE.
1753
1754 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1755
1756         * reload.c (find_reloads_address): Fix typo.
1757
1758 2009-11-17  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1759
1760         * config/spu/spu.c (get_pic_reg): Use LAST_ARG_REGNUM as PIC
1761         registers in leaf functions if possible.
1762
1763 2009-11-17  Maxim Kuvyrkov  <maxim@codesourcery.com>
1764
1765         * config/m68k/m68k-devices.def: Add MCF5441x family.
1766
1767 2009-11-17  Jan Hubicka  <jh@suse.cz>
1768
1769         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Do not access
1770         removed node.
1771         * cgraphunit.c (verify_cgraph_node): Verify frequencies for match.
1772
1773 2009-11-17  Uros Bizjak  <ubizjak@gmail.com>
1774
1775         * config/i386/predicates.md (x86_64_szext_general_operand): Do not
1776         nest ior expressions.
1777         (x86_64_szext_nonmemory_operand): Ditto.
1778         (call_insn_operand): Ditto.
1779
1780 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1781
1782         * stmt.c (expand_asm_stmt): Get locus from stmt.
1783
1784 2009-11-16  Alexandre Oliva  <aoliva@redhat.com>
1785
1786         * tree-cfg.c (gimple_redirect_edge_and_branch) <case GIMPLE_ASM>:
1787         Create the decl label for the new dest block on demand.  Require
1788         a fallthrough edge if no asm labels were redirected.
1789
1790 2009-11-16  Uros Bizjak  <ubizjak@gmail.com>
1791
1792         * config/i386/i386.md (cbranchsi4): Use nonimmediate_operand for
1793         operand 1 predicate.
1794         (cstoresi4): Ditto for operand 2.
1795         (cbranch<mode>4): Macroize expander from cbranch{qi,hi,si,di,ti}4
1796         patterns using SDWIM mode iterator.
1797         (cstore<mode>4): Macroize expander from cstore{qi,hi,si,di}4 patterns
1798         using SWIM mode iterator.
1799         (cmpdi_1): Rename from cmpdi_1_rex64.
1800         (cmp<mode>_1): Macroize expander from cmp{si,di}_1 patterns using
1801         SWI48 mode iterator.
1802         (*cmp<mode>_1): Macroize insn from *cmp{qi,hi,si,di}_1_insn patterns
1803         using SWI mode iterator.
1804         (*cmp<mode>_ccno_1): Ditto from *cmp{qi,hi,si,di}_ccno_1.
1805         (*cmp<mode>_minus_1): Ditto from *cmp{qi,hi,si,di}_minus_1.
1806         (*cmpqi_ext_3_insn): Make private.
1807         (*cmpqi_ext_3_insn_rex64): Make private.
1808         (cmpstrnsi): Update for renamed cmpdi_1_rex64.
1809         * config/i386/predicates.md (cmpsi_operand): Remove.
1810
1811 2009-11-16  Paul Brook  <paul@codesourcery.com>
1812
1813         * doc/invoke.texi: Document ARM VFPv4 based FPUs.
1814         * config/arm/arm.c (all_fpus): Add VFPv4 entries.
1815
1816 2009-11-14  Jan Hubicka  <jh@suse.cz>
1817
1818         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use proper
1819         ENTRY_BLOCK_PTR.
1820         * cgraph.c (cgraph_clone_edge): Avoid freq_scale 0 to completely
1821         zero out all callees.
1822         * cgraphunit.c (verify_cgraph_node): Verify cgraph nodes for
1823         frequency and count match.
1824         * ipa-inline.c (update_noncloned_frequencies): New function.
1825         (cgraph_clone_inlined_nodes): Use it.
1826         * tree-inline.c (copy_bb): Fix frequency scaling; output
1827         diagnostic on frequency mismatches to dump file.
1828         (initialize_cfun): Do not scale frequency; fix count scaling;
1829         initialize entry and exit block frequencies; copy profile info.
1830         (copy_cfg_body): Use frequency_scale as argument; fix count scaling.
1831         (copy_body): Use frequency_scale as argument.
1832         (expand_call_inline): Compute frequency scale and output diagnostic
1833         to dump file.
1834         (delete_unreachable_blocks_update_callgrah): Remove checking that
1835         has to be done after edge redirection.
1836         (tree_function_versioning): Update initialize_cfun and copy_body call.
1837
1838 2009-11-14  Jan Hubicka  <jh@suse.cz>
1839
1840         * cgraph.c (cgraph_release_function_body): Update use of
1841         ipa_transforms_to_apply.
1842         (cgraph_remove_node): Remove ipa_transforms_to_apply.
1843         * cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
1844         * cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
1845         copied body.
1846         (cgraph_materialize_clone): Remove original if dead.
1847         * lto-streamer-in.c (lto_read_body): Remove FIXME and
1848         ipa_transforms_to_apply hack.
1849         * function.h (struct function): Add ipa_transforms_to_apply.
1850         * ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
1851         * tree-inline.c (copy_bb): Update sanity check.
1852         (initialize_cfun): Do not copy ipa_transforms_to_apply.
1853         (expand_call_inline): remove dead clone originals.
1854         (tree_function_versioning): Merge transformation queues.
1855         * passes.c (add_ipa_transform_pass): Remove.
1856         (execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
1857         tracking.
1858         (execute_all_ipa_transforms): Update.
1859         (execute_one_pass): Update.
1860
1861 2009-11-14  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
1862
1863         PR target/21078, 21080
1864         * config/avr/avr.c (avr_return_addr_rtx): New function for
1865         builtin_return_address.
1866         (expand_prologue): Calculate stack usage.
1867         (avr_asm_function_end_prologue): Output stack size and offset label.
1868         * config/avr/avr.h (RETURN_ADDR_RTX): Replace.
1869         (machine_function): Add stack_usage.
1870         * config/avr/avr-protos.h (avr_return_addr_rtx): New function.
1871
1872 2009-11-14  Anatoly Sokolov  <aesok@post.ru>
1873
1874         * config/iq2000/iq2000.c (iq2000_function_value): Make static, add
1875         new 'outgoing' argument.
1876         (iq2000_libcall_value, iq2000_function_value_regno_p): New functions.
1877         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
1878         * config/iq2000/iq2000.h (FUNCTION_VALUE_REGNO_P): Redefine, use
1879         iq2000_function_value_regno_p.
1880         (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
1881         * config/iq2000/iq2000-protos.h (iq2000_function_value_regno_p):
1882         Declare.
1883
1884 2009-11-14  Richard Earnshaw  <rearnsha@arm.com>
1885
1886         PR target/42031
1887         * arm.md (adddi_sesidi_di): Place tied contraint first.
1888         (adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
1889         (subdi_zesidi_di, subdi_sesidi_di): Likewise.
1890         (mulsi3_compare0, mulsi_compare0_scratch): Likewise.
1891         (mulsi3addsi, mulsi3addsi_compare0): Likewise.
1892         (mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
1893         (umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
1894         (anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
1895         (andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
1896         (arm_lshrdi3_1bit, one_cmpldi2): Likewise.
1897
1898 2009-11-14  Uros Bizjak  <ubizjak@gmail.com>
1899
1900         * config/i386/predicates.md (call_register_no_elim_operand):
1901         New predicate.  Reject stack register as valid call operand
1902         for 32bit targets.
1903         (call_insn_operand): Use call_register_no_elim_operand.
1904
1905 2009-11-13  Richard Henderson  <rth@redhat.com>
1906
1907         * function.c (stack_protect_prologue): Don't bypass expand_expr
1908         for stack_protect_guard and guard_decl.
1909         (stack_protect_epilogue): Likewise.
1910
1911 2009-11-13  Jan Hubicka  <jh@suse.cz>
1912
1913         * ipa.c (function_and_variable_visibility): Clear COMDAT on functions
1914         when to PUBLIC is set.
1915
1916 2009-11-13  Jakub Jelinek  <jakub@redhat.com>
1917
1918         PR middle-end/42029
1919         * gimplify.c (gimplify_omp_atomic): Set DECL_GIMPLE_REG_P on
1920         tmp_load if needed.
1921
1922 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1923
1924         PR target/41900
1925         * config/i386/i386.md (*call_pop_1, *call_1, *call_value_pop_1,
1926         *call_value_1): Use "lsm" as operand 1 constraint.
1927         * config/i386/predicates.md (call_insn_operand): Depend on
1928         index_register_operand to avoid %esp register.
1929
1930 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1931
1932         Revert:
1933         2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
1934
1935         PR target/41900
1936         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
1937         (TARGET_CALL_ESP): New define.
1938         * config/i386/i386.c (initial_ix86_tune_features): Initialize
1939         X86_ARCH_CALL_ESP.
1940         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
1941         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
1942         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
1943         TARGET_CALL_ESP.
1944         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
1945         New patterns, use "lsm" as operand 1 constraint.
1946         * config/i386/predicates.md (call_insn_operand): Depend on
1947         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
1948
1949 2009-11-13  Jason Merrill  <jason@redhat.com>
1950
1951         PR debug/26965
1952         * dwarf2out.c (gen_variable_die): Don't worry about DECL_COMDAT.
1953         Don't emit a second declaration at any scope.
1954
1955 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1956
1957         PR rtl-optimization/41697
1958         * sel-sched-ir.c (fallthru_bb_of_jump): Bail out when a block with
1959         a conditional jump has a single successor.
1960
1961 2009-11-13  Andrey Belevantsev  <abel@ispras.ru>
1962
1963         * sched-deps.c (init_deps): New parameter lazy_reg_last.  Don't
1964         allocate reg_last when in case lazy_reg_last is true.
1965         (init_deps_reg_last): New.
1966         (free_deps): When max_reg is 0, this context is already freed.
1967         * sched-int.h (init_deps_reg_last): Export.
1968         (init_deps): Update prototype.
1969         * sched-ebb.c (schedule_ebb): Update the call to init_deps.
1970         * sched-rgn.c (sched_rgn_compute_dependencies): Likewise.
1971         * ddg.c (build_intra_loop_deps): Likewise.
1972         * sel-sched-ir.c (copy_deps_context, create_deps_context,
1973         reset_deps_context, deps_init_id): Likewise.
1974         (init_first_time_insn_data): Lazy allocate INSN_DEPS_CONTEXT.
1975         (free_data_for_scheduled_insn): New, break down from ...
1976         (free_first_time_insn_data): ... here.
1977         (has_dependence_p): Allocate reg_last now, when it is needed.
1978         (extend_insn_data): When maximal LUID is big enough, allocate
1979         per-insn data in smaller chunks.
1980         * sel-sched-ir.h (free_data_for_scheduled_insn): Export.
1981         * sel-sched.c (update_seqnos_and_stage): Free INSN_DEPS_CONTEXT
1982         in scheduled insn.
1983
1984 2009-11-13  Uros Bizjak  <ubizjak@gmail.com>
1985
1986         * config/i386/i386.md (call_value): Fix comment.
1987         (sibcall_value): Ditto.
1988
1989 2009-11-13  Eric Botcazou  <ebotcazou@adacore.com>
1990
1991         * config/i386/linux-unwind.h (x86_frob_update_context): New function.
1992         (MD_FROB_UPDATE_CONTEXT): Define.
1993
1994 2009-11-12  Eric Botcazou  <ebotcazou@adacore.com>
1995             Laurent GUERBY  <laurent@guerby.net>
1996
1997         * config/sparc/linux-unwind.h (sparc64_fallback_frame_state): Tidy.
1998         Do not schedule an %sp restore.  Compensate for RETURN_ADDR_OFFSET.
1999         (sparc_fallback_frame_state): Tidy.  Compensate for RETURN_ADDR_OFFSET.
2000
2001 2009-11-12  Jan Hubicka  <jh@suse.cz>
2002
2003         * ipa.c (function_and_variable_visibility): Fix my accidentail commit
2004         and clear DECL_COMMON on localized declarations.
2005
2006 2009-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>
2007
2008         PR rtl-opt/38582
2009         * regrename.c (struct du_head): New structure; some elements moved
2010         from...
2011         (struct du_chain): ... this one.
2012         (open_chains, closed_chains): Now of type struct du_head *.
2013         (do_replace): Accept du_head argument, not du_chain.  All callers
2014         changed.  Modified code to match new data structures.
2015         (build_def_use): Return a list of du_head structures.  Modified code
2016         to match new data structures.
2017         (dump_def_use_chain): Accept du_head argument, not du_chain.  All
2018         callers changed.  Modified code to match new data structures.
2019         (merge_overlapping_regs): Accept du_head argument, not du_chain.  All
2020         callers changed.  Modified code to match new data structures.
2021         (scan_rtx_reg): Change type of this_regno and this_nregs to unsigned.
2022         Allocate a du_head structure as well as a du_chain when creating a
2023         new chain.  Modified other code to match new data structures.
2024
2025 2009-11-12  Jan Hubicka  <jh@suse.cz>
2026
2027         * cgraph.h (varpool_node_name): Declare.
2028         * cgraphunit.c (process_function_and_variable_attributes): Set
2029         force_output flag on used variables.
2030         * ipa.c (function_and_variable_visibility): Dump externally visible
2031         and needed variables.
2032         * varpool.c (varpool_node_name): Export.
2033         (decide_is_variable_needed): Check COMDAT for externally visible vars;
2034         ignore needed flag.
2035
2036 2009-11-12  Uros Bizjak  <ubizjak@gmail.com>
2037
2038         PR middle-end/41930
2039         * simplify-rtx.c (simplify_replace_fn_rtx) <case 'e'>: Skip
2040         processing if XEXP (x, i) is NULL.
2041
2042 2009-11-12  Jan Hubicka  <jh@suse.cz>
2043
2044         * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
2045         imply PUBLIC || EXTERNAL.
2046
2047 2009-11-11  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
2048
2049         PR middle-end/41440
2050         * cfgexpand.c (expand_gimple_basic_block): Append NOP to a fallthru,
2051         single successor block, ending with jump created by RTL expander.
2052
2053 2009-11-11  Jan Hubicka  <jh@suse.cz>
2054
2055         PR middle-end/41729
2056         * ipa.c (function_and_variable_visibility): Do not privatize COMDAT
2057         and WEAK variables at -fwhole-program.
2058
2059         PR middle-end/41735
2060         * ipa.c (whole_program_function_and_variable_visility): COMDAT
2061         functions/variables are not needed even if they are externally visible.
2062
2063 2009-11-11  Jan Hubicka  <jh@suse.cz>
2064
2065         (patch by Richard Guenther)
2066         * lto-streamer-out.c (output_function): Output head of argument list
2067         earlier.
2068         * lto-streamer-in.c (input_function): Re-map arguments into merged
2069         declaration.
2070
2071 2009-11-11  Jan Hubicka  <jh@suse.cz>
2072
2073         * lto-cgraph.c: Include gcov-io.h
2074         (output_profile_summary): New function.
2075         (output_cgraph): Use it.
2076         (input_profile_summary): New function.
2077         (input_cgraph): Use it.
2078         * coverage.c (build_ctr_info_value): Use varpool; initalize
2079         DECL_ASSEMBLER_NAME.
2080         (create_coverage): Likewise.
2081         * tree-profile.c (tree_init_ic_make_global_vars): Likewise.
2082         (tree_init_edge_profiler): Likewise.
2083         * Makefile.in (lto-cgraph.o): Add dependency on gcov-io.h.
2084
2085 2009-11-11  Kai Tietz  <kai.tietz@onevision.com>
2086
2087         * config/i386/cygming.h (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2088         * c-pragma.c (def_pragma_macro_value): Likewise.
2089         (def_pragma_macro): Likewise.
2090         (pushed_macro_table): Likewise.
2091         (HANDLE_PRAGMA_PUSH_POP_MACRO): Remove guarded code.
2092         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): Removed.
2093
2094 2009-11-11  Basile Starynkevitch  <basile@starynkevitch.net>
2095
2096         * doc/plugins.texi (Registering custom attributes): section
2097         renamed as (Registering custom attributes or pragmas).
2098         Mentions custom attributes & pragmas, and c_register_pragma, with
2099         a small example.
2100         * doc/cpp.texi (Pragmas): Mentions that plugins can provide their
2101         pragmas.
2102         * doc/extend.texi (Function Attributes): Mentions that plugin can
2103         provide their attributes.
2104
2105 2009-11-11  Jon Beniston  <jon@beniston.com>
2106
2107         * config.gcc: Add lm32 elf and uclinux targets.
2108         * config/lm32: New directory.
2109         * config/lm32/lm32.c: New file.
2110         * config/lm32/lm32.h: New file.
2111         * config/lm32/lm32.md: New file.
2112         * config/lm32/lm32.opt: New file.
2113         * config/lm32/lm32-protos.h: New file.
2114         * config/lm32/constraints.md: New file.
2115         * config/lm32/predicates.md: New file.
2116         * config/lm32/sfp-machine.h: New file.
2117         * config/lm32/t-fprules-softfp: New file.
2118         * config/lm32/uclinux-elf.h: New file.
2119         * doc/invoke.texi: Document lm32 options.
2120         * doc/contrib.texi: Document lm32 porter.
2121         * doc/install.texi: Document lm32 targets.
2122
2123 2009-11-11  Martin Jambor  <mjambor@suse.cz>
2124
2125         PR lto/41932
2126         * ipa-prop.c (ipa_update_after_lto_read): Call
2127         ipa_check_create_node_params and ipa_check_create_edge_args.  Also
2128         call ipa_initialize_node_params instead of ipa_populate_param_decls.
2129
2130 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2131
2132         * config/arm/arm.c (neon_vdup_constant, neon_make_constant): New.
2133         (neon_expand_vector_init): Use them.  Also handle non-constant
2134         vectors with identical elements and vectors with only one
2135         non-constant element.
2136         (arm_print_operand): Handle 'y' modifier.
2137         * config/arm/arm-protos.h (neon_make_constant): Declare.
2138         * config/arm/neon.md (neon_vdup_n<mode>): Split into two
2139         patterns.  Use VX instead of VDQW for the first one.  Allow
2140         a VFP alternative and V32 modes for the second one.
2141         * config/arm/neon.ml (shape_elt): Add Alternatives.
2142         (ops): Use Alternatives for vdup lane instructions.
2143         * config/arm/neon-testgen.ml (analyze_shape): Handle Alternatives.
2144         * config/arm/vec-common.md (mov<mode>): Use neon_make_constant.
2145
2146 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2147
2148         * config/arm/neon.md (*neon_mov<mode>): Reject two non-register
2149         operands.
2150         (movti, mov<mode>): Call force_reg on one operand if required.
2151         * config/arm/vec-common.md (mov<mode>): Likewise.
2152
2153 2009-11-11  Daniel Jacobowitz  <dan@codesourcery.com>
2154
2155         * config/arm/arm.c (arm_override_options): Enable scheduling for
2156         Thumb-2.
2157
2158 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2159
2160         PR target/10127
2161         PR ada/20548
2162         * expr.h (anti_adjust_stack_and_probe): Declare.
2163         * explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
2164         parameter and rewrite head comment.
2165         (allocate_dynamic_stack_space): Adjust call to above function.
2166         * function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
2167
2168         * tree.h (dwarf2out_args_size): Delete.
2169         * dwarf2out.c (dwarf2out_args_size): Make static and move around.
2170         (dwarf2out_args_size_adjust): Delete prototype and move around.
2171         (dwarf2out_frame_debug_expr): Do not record arg size adjustments for
2172         ACCUMULATE_OUTGOING_ARGS targets.
2173
2174 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2175
2176         * config/sparc/sparc.c (print_operand) <')'>: Test for a non-null
2177         DECL_SIZE of DECL_RESULT before evaluating it.
2178
2179 2009-11-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2180
2181         PR tree-optimization/41987
2182         * fold-const.c (const_binop): Avoid using fold_buildN().
2183
2184 2009-11-10  Martin Jambor  <mjambor@suse.cz>
2185
2186         * tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
2187         (execute_all_ipa_stmt_fixups): Declare.
2188         * ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
2189         * ipa-inline.c (pass_ipa_inline): Likewise.
2190         * ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
2191         * ipa-reference.c (pass_ipa_reference): Likewise.
2192         * ipa.c (pass_ipa_whole_program_visibility): Likewise.
2193         * lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
2194         (pass_ipa_lto_finish_out): Likewise.
2195         * lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
2196         * passes.c (execute_ipa_stmt_fixups): New function.
2197         (execute_all_ipa_stmt_fixups): New function.
2198         * lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
2199
2200 2009-11-10  Eric Botcazou  <ebotcazou@adacore.com>
2201
2202         PR ada/20548
2203         * explow.c (probe_stack_range): Fix typo.
2204         * config/sparc/sparc.md (probe_stack): New expander.
2205
2206 2009-11-09  Dave Korn  <dave.korn.cygwin@gmail.com>
2207
2208         * config/i386/cygwin.h (LINK_SPEC): Add -tsaware flag if !mno-cygwin.
2209
2210 2009-11-09  Jason Merrill  <jason@redhat.com>
2211
2212         * gdbinit.in (pgq): New function for printing gimple sequence.
2213
2214 2009-11-09  Paul Brook  <paul@codesourcery.com>
2215             Daniel Jacobowitz  <dan@codesourcery.com>
2216             Sandra Loosemore  <sandra@codesourcery.com>
2217
2218         * doc/extend.texi (Half-Precision): Update wording to reflect
2219         that there are now multiple -mfpu options that enable fp16
2220         hardware support.
2221         * doc/invoke.texi: Update list of ARM -mfpu= options.
2222         * config.gcc: Update ARM --with-fpu option list.
2223         * config/arm/arm.c (all_fpus): Add vfpv3-fp16, vfpv3-d16-fp16,
2224         vfpv3xd and vfpv3xd-fp16.
2225         (use_vfp_abi): New function.
2226         (aapcs_vfp_is_call_or_return_candidate): Avoid double precision regs
2227         when undesirable.
2228         (aapcs_vfp_is_return_candidate, aapcs_vfp_is_call_candidate,
2229         aapcs_vfp_allocate_return_reg): Use use_vfp_abi.
2230         (arm_rtx_costs_1, arm_size_rtx_costs, arm_fastmul_rtx_costs,
2231         arm_9e_rtx_costs): Only expect double-precision operations if the FPU
2232         provides them.
2233         (coproc_secondary_reload_class): Reload HFmode via GENERAL_REGS if no
2234         NEON.
2235         (arm_print_operand): Handle 'p' modifier.
2236         (arm_hard_regno_mode_ok): : Allow HFmode in VFP registers if
2237         TARGET_FP16.
2238         * config/arm/arm.h (TARGET_VFP_SINGLE, TARGET_VFP_DOUBLE): Define.
2239         (TARGET_FP16): Define.
2240         * config/arm/vfp.md: Disable double-precision patterns if the FPU
2241         does not provide them.
2242         (arm_movdi_vfp, thumb2_movdi_vfp): Use fcpys to move
2243         double-precision values on a single-precision FPU.
2244         (movdf_vfp, thumb2_movdf_vfp): Likewise.  Use "Dy" for
2245         double-precision constants.
2246         (movhf_vfp_neon): New pattern (was movhf_vfp).
2247         (movhf_vfp): Remove NEON instructions.
2248         * config/arm/constraints.md: Add new "Dy" constraint for
2249         double-precision constants.  Update description of "Dv".
2250         * config/arm/arm.md: Disable double-precision patterns if the FPU
2251         does not provide them
2252
2253 2009-11-09  Jakub Jelinek  <jakub@redhat.com>
2254
2255         * config/i386/i386.c (print_operand) <case 'D'>: Fix formatting.
2256         (print_operand) <case 'Y'>: Likewise.  Fix a pasto in operand lossage
2257         diagnostics.
2258
2259 2009-11-08  H.J. Lu  <hongjiu.lu@intel.com>
2260
2261         * collect2.c (main): Search PLUGIN_LD for plugin linker.
2262
2263         * configure.ac (--with-plugin-ld): New.  Default to ld.
2264         * configure: Regenerated.
2265         * config.in: Likewise.
2266
2267         * exec-tool.in (ORIGINAL_PLUGIN_LD_FOR_TARGET): New.
2268         (collect-ld): Use ORIGINAL_PLUGIN_LD_FOR_TARGET for -plugin.
2269
2270 2009-11-08  Jonathan Gray  <jsg@openbsd.org>
2271
2272         * config/openbsd-stdint.h: Change to reflect what
2273         c_common_nodes_and_builtins expects.
2274
2275 2009-11-08  Paolo Carlini  <paolo.carlini@oracle.com>
2276
2277         * builtins.c (apply_args_reg_offset): Remove commented out delaration.
2278
2279 2009-11-08  Jakub Jelinek  <jakub@redhat.com>
2280
2281         PR target/41985
2282         * config/i386/i386.c (get_some_local_dynamic_name): Don't assert
2283         function contains at least one local dynamic name.
2284         (print_operand) <case '&'>: Instead output operand lossage diagnostics
2285         here if that happens.
2286
2287 2009-11-08  Zbigniew Chamski  <zbigniew.chamski@gmail.com>
2288             Joern Rennecke  <amylaar@spamcop.net>
2289
2290         * cfgrtl.c (pass_free_cfg): Add pass name.
2291         * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
2292         (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
2293         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
2294         * df-core.c (pass_df_initialize_no_opt): Likewise.
2295         * except.c (pass_rtl_eh): Likewise.
2296         * function.c (pass_init_function, pass_leaf_regs): Likewise.
2297         * gcse.c (pass_rtl_pre): Change pass name.
2298         * passes.c (pass_postreload): Add pass name.
2299         (make_pass_instance): Don't use duplicate-tracking logic for
2300         names starting with '*'.
2301         (next_pass_1): Assert that pass has a name.
2302         (register_one_dump_file): If there is an space in the name,
2303         skip past it.
2304         * predict.c (pass_strip_predict_hints): Add pass name.
2305         * reg-stack.c (pass_stack_regs): Likewise.
2306         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
2307         * tree-cfg.c (pass_warn_function_return,
2308         pass_warn_function_noreturn): Add pass name.
2309         * tree-dfa.c (pass_referenced_vars): Likewise.
2310         * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
2311         Fix whitespace before comment.
2312         (pass_fixup_cfg): Add pass name, fix whitespace before comment.
2313         (pass_init_datastructures): Add pass name.
2314         * tree-ssa-loop.c (pass_record_bounds): Likewise.
2315         * tree-ssa.c (pass_early_warn_uninitialized,
2316         pass_late_warn_uninitialized): Likewise.
2317         * tree.c (pass_ipa_free_lang_data): Likewise.
2318         * doc/passes.texi (pass manager): Document how to disambiguate
2319         pass names.
2320
2321 2009-11-08  Paolo Bonzini  <bonzini@gnu.org>
2322
2323         * df-problems.c: Fix documentation for forward simulation of LR.
2324         (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
2325         (df_simulate_finalize_forwards): Remove.
2326         * df.h (df_simulate_finalize_forwards): Remove.
2327
2328 2009-11-08  Richard Guenther  <rguenther@suse.de>
2329
2330         * tree-ssa-structalias.c (build_succ_graph): Properly make
2331         variables escape if they are stored to anything.
2332
2333 2009-11-08  Richard Guenther  <rguenther@suse.de>
2334
2335         PR rtl-optimization/41928
2336         * loop-invariant.c (free_loop_data): If we didn't allocate
2337         loop data do not try to free it.
2338
2339 2009-11-07  Jason Merrill  <jason@redhat.com>
2340
2341         * tree.c (reconstruct_complex_type): Preserve attributes.
2342
2343 2009-11-07  Richard Guenther  <rguenther@suse.de>
2344
2345         * tree-ssa-structalias.c (build_succ_graph): Feed stores
2346         to anything only to variables that can take pointers.
2347         (get_constraint_for_ssa_var): Properly exclude full
2348         variables from expanding.
2349         (first_vi_for_offset): Avoid overflow in arithmetic.
2350         (first_or_preceding_vi_for_offset): Likewise.
2351         (count_num_arguments): Fix implementation.
2352         (gate_ipa_pta): Do not run when not optimizing.
2353
2354 2009-11-07  David Binderman <dcb314@hotmail.com>
2355
2356         * builtins.c (apply_args_size, expand_builtin_mathfn, expand_powi,
2357         expand_builtin_expect, maybe_emit_sprintf_chk_warning): Remove some
2358         set but not used variables.
2359         (apply_args_reg_offset): Comment out as unused.
2360         * calls.c (flags_from_decl_or_type): Likewise.
2361         * genautomata.c (check_regexp_units_distribution): Likewise.
2362
2363 2009-11-07  Uros Bizjak  <ubizjak@gmail.com>
2364
2365         * config/i386/sse.md (xop_pmacsww, xop_pmacssww, xop_pmacsdd,
2366         xop_pmacssdd, xop_pmacssdql, xop_pmacssdqh, xop_pmacsdql,
2367         *xop_pmacsdql_mem, xop_pmacsdqh, *xop_pmacsdqh_mem, xop_pmacsswd,
2368         xop_pmacswd, xop_pmadcsswd, xop_pmadcswd, xop_pcmov_<mode>,
2369         xop_pcmov_<mode>256, xop_pperm, xop_pperm_pack_v2di_v4si,
2370         xop_pperm_pack_v4si_v8hi, xop_pperm_pack_v8hi_v16qi): Compress
2371         operand alternatives.
2372
2373 2009-11-06  Michael Matz  <matz@suse.de>
2374
2375         PR middle-end/41963
2376         * tree-ssa-math-opts.c (execute_cse_reciprocals): Check all uses
2377         of a potential reciprocal to really be reciprocals.
2378
2379 2009-11-06  Jakub Jelinek  <jakub@redhat.com>
2380
2381         * config/i386/x86intrin.h: Include fma4intrin.h, xopintrin.h and
2382         lwpintrin.h after immintrin.h.
2383         * config/i386/fma4intrin.h (__v8sf, __v4df, __m256, __m256d): Remove
2384         typedefs.
2385
2386         PR middle-end/41935
2387         * c-common.c (fold_offsetof_1) <case ARRAY_REF>: Don't crash for VLAs
2388         or non-constant index, allow index one past the last element and
2389         allow exceeding array bound in arrays that might be used as flexible
2390         array members.
2391
2392 2009-11-05  Richard Henderson  <rth@redhat.com>
2393
2394         * config/i386/ia32intrin.h: Protect CRC32 builtins with __SSE4_2__.
2395
2396 2009-11-05  Paul Brook  <paul@codesourcery.com>
2397
2398         * config/arm/arm.c (arm_fp_model, arm_fpu_arch, arm_fpu_tune): Remove.
2399         (arm_fpu_desc): New.
2400         (all_fpus): Add FPU details.
2401         (fp_model_for_fpu): Remove.
2402         (arm_override_options): Set and use arm_fpu_desc and arm_fpu_attr.
2403         (arm_output_epilogue, arm_save_coproc_regs): Use TARGET_FPA_EMU2.
2404         (arm_file_start): Use arm_fpu_desc.
2405         * config/arm/arm.h (TARGET_FPA, TARGET_MAVERICK, TARGET_VFP,
2406         TARGET_VFPD32, TARGET_VFP3, TARGET_NEON_FP16, TARGET_NEON): Use
2407         arm_fpu_desc.
2408         (TARGET_FPA_EMU2): Define.
2409         (arm_fp_model, fputype, arm_fpu_tune): Remove.
2410         (vfp_reg_type, arm_fpu_desc): New.
2411         * config/arm/arm.md (attr fpu): Simplify.
2412         * config/arm/fpa.md (movxf_fpa): Use TARGET_FPA_EMU2.
2413         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Use string value.
2414         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Use string value.
2415         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Use string value.
2416         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Use string value.
2417
2418 2009-11-05  Michael Matz  <matz@suse.de>
2419
2420         * config/i386/i386.c (ix86_builtin_reciprocal): Remove dependency
2421         on TARGET_RECIP.
2422         * doc/invoke.texi (-mrecip): Clarify that we don't need -mrecip
2423         for 1/sqrtf.
2424
2425 2009-11-04  Jason Merrill  <jason@redhat.com>
2426
2427         PR c++/36912
2428         * varasm.c (initializer_constant_valid_p): A PLUS_EXPR
2429         or MINUS_EXPR of REAL_TYPE is not a valid constant initializer.
2430         (output_constant): Avoid crash after error.
2431
2432 2009-11-05  Martin Jambor  <mjambor@suse.cz>
2433
2434         * tree-sra.c (struct access): Changed comment of next_sibling field.
2435         (analyze_modified_params): Loop over accesses of a group rather than
2436         over all with the ame base, pass a common bitmap to
2437         walk_aliased_vdefs.
2438         (unmodified_by_ref_scalar_representative): Build link lists of
2439         accesses of a group.
2440         (splice_param_accesses): Likewise.
2441
2442 2009-11-04  Kenneth Zadeck  <zadeck@naturalbridge.com>
2443
2444         * df-scan.c (df-uses-record): Add case zero_extract of mem.
2445
2446 2009-11-04  Eric Botcazou  <ebotcazou@adacore.com>
2447
2448         PR target/10127
2449         PR ada/20548
2450         * config/i386/i386.md (probe_stack): New expander.
2451         (logical operation peepholes): Do not split stack checking probes.
2452
2453 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2454             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2455
2456         * doc/invoke.texi (-mlwp): Add documentation.
2457         * doc/extend.texi (x86 intrinsics): Add LWP intrinsics.
2458         * config.gcc (i[34567]86-*-*): Include lwpintrin.h.
2459         (x86_64-*-*): Ditto.
2460         * config/i386/lwpintrin.h: New file, provide x86 compiler
2461         intrinisics for LWP.
2462         * config/i386/cpuid.h (bit_LWP): Define LWP bit.
2463         * config/i386/x86intrin.h: Add LWP check and lwpintrin.h.
2464         * config/i386/i386-c.c (ix86_target_macros_internal): Check
2465         ISA_FLAG for LWP.
2466         * config/i386/i386.h (TARGET_LWP): New macro for LWP.
2467         * config/i386/i386.opt (-mlwp): New switch for LWP support.
2468         * config/i386/i386.c (OPTION_MASK_ISA_LWP_SET): New.
2469         (OPTION_MASK_ISA_LWP_UNSET): New.
2470         (ix86_handle_option): Handle -mlwp.
2471         (isa_opts): Handle -mlwp.
2472         (enum pta_flags): Add PTA_LWP.
2473         (override_options): Add LWP support.
2474         (IX86_BUILTIN_LLWPCB16): New for LWP intrinsic.
2475         (IX86_BUILTIN_LLWPCB32): Ditto.
2476         (IX86_BUILTIN_LLWPCB64): Ditto.
2477         (IX86_BUILTIN_SLWPCB16): Ditto.
2478         (IX86_BUILTIN_SLWPCB32): Ditto.
2479         (IX86_BUILTIN_SLWPCB64): Ditto.
2480         (IX86_BUILTIN_LWPVAL16): Ditto.
2481         (IX86_BUILTIN_LWPVAL32): Ditto.
2482         (IX86_BUILTIN_LWPVAL64): Ditto.
2483         (IX86_BUILTIN_LWPINS16): Ditto.
2484         (IX86_BUILTIN_LWPINS32): Ditto.
2485         (IX86_BUILTIN_LWPINS64): Ditto.
2486         (enum  ix86_special_builtin_type): Add LWP intrinsic support.
2487         (builtin_description): Ditto.
2488         (ix86_init_mmx_sse_builtins): Ditto.
2489         (ix86_expand_special_args_builtin): Ditto.
2490         * config/i386/i386.md (UNSPEC_LLWP_INTRINSIC): Add new UNSPEC for
2491         LWP support.
2492         (UNSPEC_SLWP_INTRINSIC): Ditto.
2493         (UNSPECV_LWPVAL_INTRINSIC): Ditto.
2494         (UNSPECV_LWPINS_INTRINSIC): Ditto.
2495         (lwp_llwpcbhi1): New lwp pattern.
2496         (lwp_llwpcbsi1): Ditto.
2497         (lwp_llwpcbdi1): Ditto.
2498         (lwp_slwpcbhi1): Ditto.
2499         (lwp_slwpcbsi1): Ditto.
2500         (lwp_slwpcbdi1): Ditto.
2501         (lwp_lwpvalhi3): Ditto.
2502         (lwp_lwpvalsi3): Ditto.
2503         (lwp_lwpvaldi3): Ditto.
2504         (lwp_lwpinshi3): Ditto.
2505         (lwp_lwpinssi3): Ditto.
2506         (lwp_lwpinsdi3): Ditto.
2507
2508 2009-11-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2509             Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2510
2511         PR rtl-opt/41833
2512         * simplify-rtx.c (simplify_binary_operation_1): Simplify vec_select of
2513         a vec_duplicate.
2514
2515 2009-11-04  Richard Guenther  <rguenther@suse.de>
2516             Rafael Avila de Espindola  <espindola@google.com>
2517
2518         * gcc.c (process_command): Handle arguments name@offset.
2519
2520 2009-11-04  Harsha Jagasia  <harsha.jagasia@amd.com>
2521             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2522
2523         * config.gcc (i[34567]86-*-*): Include xopintrin.h.
2524         (x86_64-*-*): Ditto.
2525         * config/i386/xopintrin.h: New file, provide common x86 compiler
2526         intrinisics for XOP.
2527         * config/i386/cpuid.h (bit_XOP): Define XOP bit.
2528         * config/i386/x86intrin.h: Add XOP check and xopintrin.h.
2529         * config/i386/i386-c.c(ix86_target_macros_internal): Check
2530         ISA_FLAG for XOP.
2531         * config/i386/i386.h(TARGET_XOP): New macro for XOP.
2532         * config/i386/i386.opt (-mxop): New switch for XOP support.
2533         * config/i386/i386.md (UNSPEC_XOP_UNSIGNED_CMP)
2534         (UNSPEC_XOP_TRUEFALSE)
2535         (UNSPEC_XOP_PERMUTE)
2536         (UNSPEC_FRCZ): Add new UNSPEC for XOP support.
2537         (PPERM_*): New constants for vpperm instruction.
2538         (xop_pcmov_<mode>): Add XOP conditional mov instructions.
2539         * config/i386/i386.c (OPTION_MASK_ISA_XOP_SET): New.
2540         (OPTION_MASK_ISA_XOP_UNSET): New.
2541         (OPTION_MASK_ISA_XOP_UNSET): Change definition to depend on XOP.
2542         (ix86_handle_option): Handle -mxop.
2543         (isa_opts): Handle -mxop.
2544         (enum pta_flags): Add PTA_XOP.
2545         (override_options): Add XOP support.
2546         (print_operand): Add code for XOP compare instructions.
2547         (ix86_expand_sse_movcc): Extend for XOP conditional move instruction.
2548         (ix86_expand_int_vcond): Extend for XOP compare instruction.
2549
2550         (IX86_BUILTIN_VPCMOV): New for XOP intrinsic.
2551         (IX86_BUILTIN_VPCMOV_V2DI): Ditto.
2552         (IX86_BUILTIN_VPCMOV_V4SI): Ditto.
2553         (IX86_BUILTIN_VPCMOV_V8HI): Ditto.
2554         (IX86_BUILTIN_VPCMOV_V16QI): Ditto.
2555         (IX86_BUILTIN_VPCMOV_V4SF): Ditto.
2556         (IX86_BUILTIN_VPCMOV_V2DF): Ditto.
2557
2558         (IX86_BUILTIN_VPCMOV256): Ditto.
2559         (IX86_BUILTIN_VPCMOV_V4DI256): Ditto.
2560         (IX86_BUILTIN_VPCMOV_V8SI256): Ditto.
2561         (IX86_BUILTIN_VPCMOV_V16HI256): Ditto.
2562         (IX86_BUILTIN_VPCMOV_V32QI256): Ditto.
2563         (IX86_BUILTIN_VPCMOV_V8SF256): Ditto.
2564         (IX86_BUILTIN_VPCMOV_V4DF256): Ditto.
2565
2566         (IX86_BUILTIN_VPPERM): Ditto.
2567
2568         (IX86_BUILTIN_VPMACSSWW): Ditto.
2569         (IX86_BUILTIN_VPMACSWW): Ditto.
2570         (IX86_BUILTIN_VPMACSSWD): Ditto.
2571         (IX86_BUILTIN_VPMACSWD): Ditto.
2572         (IX86_BUILTIN_VPMACSSDD): Ditto.
2573         (IX86_BUILTIN_VPMACSDD): Ditto.
2574         (IX86_BUILTIN_VPMACSSDQL): Ditto.
2575         (IX86_BUILTIN_VPMACSSDQH): Ditto.
2576         (IX86_BUILTIN_VPMACSDQL): Ditto.
2577         (IX86_BUILTIN_VPMACSDQH): Ditto.
2578         (IX86_BUILTIN_VPMADCSSWD): Ditto.
2579         (IX86_BUILTIN_VPMADCSWD): Ditto.
2580
2581         (IX86_BUILTIN_VPHADDBW): Ditto.
2582         (IX86_BUILTIN_VPHADDBD): Ditto.
2583         (IX86_BUILTIN_VPHADDBQ): Ditto.
2584         (IX86_BUILTIN_VPHADDWD): Ditto.
2585         (IX86_BUILTIN_VPHADDWQ): Ditto.
2586         (IX86_BUILTIN_VPHADDDQ): Ditto.
2587         (IX86_BUILTIN_VPHADDUBW): Ditto.
2588         (IX86_BUILTIN_VPHADDUBD): Ditto.
2589         (IX86_BUILTIN_VPHADDUBQ): Ditto.
2590         (IX86_BUILTIN_VPHADDUWD): Ditto.
2591         (IX86_BUILTIN_VPHADDUWQ): Ditto.
2592         (IX86_BUILTIN_VPHADDUDQ): Ditto.
2593         (IX86_BUILTIN_VPHSUBBW): Ditto.
2594         (IX86_BUILTIN_VPHSUBWD): Ditto.
2595         (IX86_BUILTIN_VPHSUBDQ): Ditto.
2596
2597         (IX86_BUILTIN_VPROTB): Ditto.
2598         (IX86_BUILTIN_VPROTW): Ditto.
2599         (IX86_BUILTIN_VPROTD): Ditto.
2600         (IX86_BUILTIN_VPROTQ): Ditto.
2601         (IX86_BUILTIN_VPROTB_IMM): Ditto.
2602         (IX86_BUILTIN_VPROTW_IMM): Ditto.
2603         (IX86_BUILTIN_VPROTD_IMM): Ditto.
2604         (IX86_BUILTIN_VPROTQ_IMM): Ditto.
2605
2606         (IX86_BUILTIN_VPSHLB): Ditto.
2607         (IX86_BUILTIN_VPSHLW): Ditto.
2608         (IX86_BUILTIN_VPSHLD): Ditto.
2609         (IX86_BUILTIN_VPSHLQ): Ditto.
2610         (IX86_BUILTIN_VPSHAB): Ditto.
2611         (IX86_BUILTIN_VPSHAW): Ditto.
2612         (IX86_BUILTIN_VPSHAD): Ditto.
2613         (IX86_BUILTIN_VPSHAQ): Ditto.
2614
2615         (IX86_BUILTIN_VFRCZSS): Ditto.
2616         (IX86_BUILTIN_VFRCZSD): Ditto.
2617         (IX86_BUILTIN_VFRCZPS): Ditto.
2618         (IX86_BUILTIN_VFRCZPD): Ditto.
2619         (IX86_BUILTIN_VFRCZPS256): Ditto.
2620         (IX86_BUILTIN_VFRCZPD256): Ditto.
2621
2622         (IX86_BUILTIN_VPCOMEQUB): Ditto.
2623         (IX86_BUILTIN_VPCOMNEUB): Ditto.
2624         (IX86_BUILTIN_VPCOMLTUB): Ditto.
2625         (IX86_BUILTIN_VPCOMLEUB): Ditto.
2626         (IX86_BUILTIN_VPCOMGTUB): Ditto.
2627         (IX86_BUILTIN_VPCOMGEUB): Ditto.
2628         (IX86_BUILTIN_VPCOMFALSEUB): Ditto.
2629         (IX86_BUILTIN_VPCOMTRUEUB): Ditto.
2630
2631         (IX86_BUILTIN_VPCOMEQUW): Ditto.
2632         (IX86_BUILTIN_VPCOMNEUW): Ditto.
2633         (IX86_BUILTIN_VPCOMLTUW): Ditto.
2634         (IX86_BUILTIN_VPCOMLEUW): Ditto.
2635         (IX86_BUILTIN_VPCOMGTUW): Ditto.
2636         (IX86_BUILTIN_VPCOMGEUW): Ditto.
2637         (IX86_BUILTIN_VPCOMFALSEUW): Ditto.
2638         (IX86_BUILTIN_VPCOMTRUEUW): Ditto.
2639
2640         (IX86_BUILTIN_VPCOMEQUD): Ditto.
2641         (IX86_BUILTIN_VPCOMNEUD): Ditto.
2642         (IX86_BUILTIN_VPCOMLTUD): Ditto.
2643         (IX86_BUILTIN_VPCOMLEUD): Ditto.
2644         (IX86_BUILTIN_VPCOMGTUD): Ditto.
2645         (IX86_BUILTIN_VPCOMGEUD): Ditto.
2646         (IX86_BUILTIN_VPCOMFALSEUD): Ditto.
2647         (IX86_BUILTIN_VPCOMTRUEUD): Ditto.
2648
2649         (IX86_BUILTIN_VPCOMEQUQ): Ditto.
2650         (IX86_BUILTIN_VPCOMNEUQ): Ditto.
2651         (IX86_BUILTIN_VPCOMLTUQ): Ditto.
2652         (IX86_BUILTIN_VPCOMLEUQ): Ditto.
2653         (IX86_BUILTIN_VPCOMGTUQ): Ditto.
2654         (IX86_BUILTIN_VPCOMGEUQ): Ditto.
2655         (IX86_BUILTIN_VPCOMFALSEUQ): Ditto.
2656         (IX86_BUILTIN_VPCOMTRUEUQ): Ditto.
2657
2658         (IX86_BUILTIN_VPCOMEQB): Ditto.
2659         (IX86_BUILTIN_VPCOMNEB): Ditto.
2660         (IX86_BUILTIN_VPCOMLTB): Ditto.
2661         (IX86_BUILTIN_VPCOMLEB): Ditto.
2662         (IX86_BUILTIN_VPCOMGTB): Ditto.
2663         (IX86_BUILTIN_VPCOMGEB): Ditto.
2664         (IX86_BUILTIN_VPCOMFALSEB): Ditto.
2665         (IX86_BUILTIN_VPCOMTRUEB): Ditto.
2666
2667         (IX86_BUILTIN_VPCOMEQW): Ditto.
2668         (IX86_BUILTIN_VPCOMNEW): Ditto.
2669         (IX86_BUILTIN_VPCOMLTW): Ditto.
2670         (IX86_BUILTIN_VPCOMLEW): Ditto.
2671         (IX86_BUILTIN_VPCOMGTW): Ditto.
2672         (IX86_BUILTIN_VPCOMGEW): Ditto.
2673         (IX86_BUILTIN_VPCOMFALSEW): Ditto.
2674         (IX86_BUILTIN_VPCOMTRUEW): Ditto.
2675
2676         (IX86_BUILTIN_VPCOMEQD): Ditto.
2677         (IX86_BUILTIN_VPCOMNED): Ditto.
2678         (IX86_BUILTIN_VPCOMLTD): Ditto.
2679         (IX86_BUILTIN_VPCOMLED): Ditto.
2680         (IX86_BUILTIN_VPCOMGTD): Ditto.
2681         (IX86_BUILTIN_VPCOMGED): Ditto.
2682         (IX86_BUILTIN_VPCOMFALSED): Ditto.
2683         (IX86_BUILTIN_VPCOMTRUED): Ditto.
2684
2685         (IX86_BUILTIN_VPCOMEQQ): Ditto.
2686         (IX86_BUILTIN_VPCOMNEQ): Ditto.
2687         (IX86_BUILTIN_VPCOMLTQ): Ditto.
2688         (IX86_BUILTIN_VPCOMLEQ): Ditto.
2689         (IX86_BUILTIN_VPCOMGTQ): Ditto.
2690         (IX86_BUILTIN_VPCOMGEQ): Ditto.
2691         (IX86_BUILTIN_VPCOMFALSEQ): Ditto.
2692         (IX86_BUILTIN_VPCOMTRUEQ): Ditto.
2693
2694         (enum multi_arg_type): New enum for describing the various XOP
2695         intrinsic argument types.
2696         (bdesc_multi_arg): New table for XOP intrinsics.
2697         (ix86_init_mmx_sse_builtins): Add XOP intrinsic support.
2698         (ix86_expand_multi_arg_builtin): New function for creating XOP
2699         intrinsics.
2700
2701         * config/i386/sse.md (sserotatemax): New mode attribute for XOP.
2702         (xop_pmacsww): Ditto.
2703         (xop_pmacssww): Ditto.
2704         (xop_pmacsdd): Ditto.
2705         (xop_pmacssdd): Ditto.
2706         (xop_pmacssdql): Ditto.
2707         (xop_pmacssdqh): Ditto.
2708         (xop_pmacsdql): Ditto.
2709         (xop_pmacsdql_mem): Ditto.
2710         (xop_mulv2div2di3_low): Ditto.
2711         (xop_pmacsdqh): Ditto.
2712         (xop_pmacsdqh_mem): Ditto.
2713         (xop_mulv2div2di3_high): Ditto.
2714         (xop_pmacsswd): Ditto.
2715         (xop_pmacswd): Ditto.
2716         (xop_pmadcsswd): Ditto.
2717         (xop_pmadcswd): Ditto.
2718         (xop_pcmov_<mode>): Ditto.
2719         (xop_pcmov_<mode>256): Ditto.
2720         (xop_phaddbw): Ditto.
2721         (xop_phaddbd): Ditto.
2722         (xop_phaddbq): Ditto.
2723         (xop_phaddwd): Ditto.
2724         (xop_phaddwq): Ditto.
2725         (xop_phadddq): Ditto.
2726         (xop_phaddubw): Ditto.
2727         (xop_phaddubd): Ditto.
2728         (xop_phaddubq): Ditto.
2729         (xop_phadduwd): Ditto.
2730         (xop_phadduwq): Ditto.
2731         (xop_phaddudq): Ditto.
2732         (xop_phsubbw): Ditto.
2733         (xop_phsubwd): Ditto.
2734         (xop_phsubdq): Ditto.
2735         (xop_pperm): Ditto.
2736         (rotl<mode>3): Ditto.
2737         (rotr<mode>3): Ditto.
2738         (xop_rotl<mode>3): Ditto.
2739         (xop_rotr<mode>3): Ditto.
2740         (vrotr<mode>3): Ditto.
2741         (vrotl<mode>3): Ditto.
2742         (xop_vrotl<mode>3): Ditto.
2743         (vlshr<mode>3): Ditto.
2744         (vashr<mode>3): Ditto.
2745         (vashl<mode>3
2746         (xop_ashl<mode>3): Ditto.
2747         (xop_lshl<mode>3): Ditto.
2748         (ashlv16qi3): Ditto.
2749         (lshlv16qi3): Ditto.
2750         (ashrv16qi3): Ditto.
2751         (ashrv2di3): Ditto.
2752         (xop_frcz<mode>2): Ditto.
2753         (xop_vmfrcz<mode>2): Ditto.
2754         (xop_frcz<mode>2256): Ditto.
2755         (xop_maskcmp<mode>3): Ditto.
2756         (xop_maskcmp_uns<mode>3): Ditto.
2757         (xop_maskcmp_uns2<mode>3): Ditto.
2758         (xop_pcom_tf<mode>3): Ditto.
2759
2760         * doc/invoke.texi (-mxop): Add documentation.
2761         * doc/extend.texi (x86 intrinsics): Add XOP intrinsics.
2762
2763 2009-11-03  Mark Mitchell  <mark@codesourcery.com>
2764
2765         PR driver/11810
2766         * gcc.c (SWITCHES_NEED_SPACES): Define to "o".
2767         * config/alpha/osf.h (SWITCHES_NEED_SPACES): Remove here.
2768         * config/mips/iris.h (SWITCHES_NEED_SPACES): Remove here.
2769
2770 2009-11-04  Richard Earnshaw  <rearnsha@arm.com>
2771
2772         PR target/40835
2773         * arm.md (peephole2 patterns for move and compare): New.
2774
2775 2009-11-04  Nick Clifton  <nickc@redhat.com>
2776
2777         * defaults.h (CONSTANT_ADDRESS_P): Provide a default definition.
2778         Make sure that it does not allow CONST_DOUBLEs.
2779         * doc/tm.texi (CONSTANT_ADDRESS_P): Update description.
2780         * config/avr/avr.h (CONSTANT_ADDRESS_P): Delete.
2781         * config/bfin/bfin.h (CONSTANT_ADDRESS_P): Delete.
2782         * config/cris/cris.h (CONSTANT_ADDRESS_P): Delete.
2783         * config/fr30/fr30.h (CONSTANT_ADDRESS_P): Delete.
2784         * config/frv/frv.h (CONSTANT_ADDRESS_P): Delete.
2785         * config/m32c/m32c.h (CONSTANT_ADDRESS_P): Delete.
2786         * config/m68hc11/m68hc11.h (CONSTANT_ADDRESS_P): Delete.
2787         * config/mep/mep.h (CONSTANT_ADDRESS_P): Delete.
2788         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Delete.
2789         * config/moxie/moxie.h (CONSTANT_ADDRESS_P): Delete.
2790         * config/pdp11/pdp11.h (CONSTANT_ADDRESS_P): Delete.
2791         * config/picochip/picochip.h (CONSTANT_ADDRESS_P): Delete.
2792         * config/score/score.h (CONSTANT_ADDRESS_P): Delete.
2793         * config/stormy16/stormy16.h (CONSTANT_ADDRESS_P): Delete.
2794
2795 2009-11-04  Richard Guenther  <rguenther@suse.de>
2796
2797         PR tree-optimization/41919
2798         * tree-vrp.c (test_for_singularity): Properly compare values.
2799
2800 2009-11-04  Revital Eres  <eres@il.ibm.com>
2801
2802         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
2803         Consider peeling for alignment only for stores and remove
2804         redundant assignment.
2805
2806 2009-11-04  Maxim Kuvyrkov  <maxim@codesourcery.com>
2807
2808         PR target/41302
2809         * config/m68k/m68k.c (m68k_reg_present_p): New static function.
2810         (m68k_ok_for_sibcall_p): Handle different result return locations.
2811
2812 2009-11-04  Richard Guenther  <rguenther@suse.de>
2813
2814         * c-opts.c (c_common_post_options): Move LTO option processing
2815         code ...
2816         * opts.c (decode_options): ... here.
2817
2818 2009-11-04  Jakub Jelinek  <jakub@redhat.com>
2819
2820         * c-common.c (fold_offsetof_1): Use %wd instead of
2821         HOST_WIDE_INT_PRINT_DEC.
2822
2823 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2824
2825         * config/vax/linux.h (TARGET_OS_CPP_BUILTINS): Don't define
2826         __pic__ or __PIC__.
2827
2828 2009-11-04  Maciej W. Rozycki  <macro@linux-mips.org>
2829
2830         * config.gcc (vax-*-linux*): Keep the original contents of
2831         tmake_file while adding vax/t-linux.
2832
2833 2009-11-03  Eric Botcazou  <ebotcazou@adacore.com>
2834
2835         PR target/10127
2836         PR ada/20548
2837         * expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
2838         (STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
2839         (STACK_CHECK_MOVING_SP): Likewise.
2840         * system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
2841         * doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
2842         Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
2843         * doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
2844         Document PROBE_STACK.
2845         * explow.c (anti_adjust_stack_and_probe): New function.
2846         (allocate_dynamic_stack_space): Do not directly allocate space if
2847         STACK_CHECK_MOVING_SP, instead invoke above function.
2848         (emit_stack_probe): Handle probe_stack insn.
2849         (PROBE_INTERVAL): New macro.
2850         (STACK_GROW_OPTAB): Likewise.
2851         (STACK_GROW_OFF): Likewise.
2852         (probe_stack_range): Use Pmode and memory_address consistently.  Fix
2853         loop condition in the small constant case.  Rewrite in the general
2854         case to be immune to wraparounds.  Make sure the address of probes
2855         is valid.  Try to use [base + disp] addressing mode if possible.
2856         * ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
2857         checking is enabled and STACK_CHECK_MOVING_SP.
2858         * rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
2859         return 1 for volatile references to the stack pointer.
2860         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
2861         __builtin_alloca if stack checking is enabled.
2862         * unwind-dw2.c (uw_identify_context): Take into account whether the
2863         context is that of a signal frame or not.
2864         * config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
2865         * config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
2866
2867 2009-11-03  Jakub Jelinek  <jakub@redhat.com>
2868
2869         PR rtl-optimization/41917
2870         * rtlanal.c (num_sign_bit_copies1) <case UMOD>: If sign bit of second
2871         operand isn't known to be 0, return 1.
2872
2873 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2874
2875         * config/mips/mips.md: Fix typos.
2876
2877 2009-11-03  Richard Sandiford  <rdsandiford@googlemail.com>
2878
2879         * doc/invoke.texi: Fix typo.
2880
2881 2009-11-03  Paul Brook  <paul@codesourcery.com>
2882
2883         * config/arm/neon.ml (vectype): Add T_floatSF.
2884         (string_of_vectype): Ditto.
2885         * config/arm/neon-gen.ml (signed_ctype): Add T_floatSF.
2886         (deftypes): Use float for float32_t.
2887         * config/arm/arm_neon.h: Regenerate.
2888
2889 2009-11-03  Nick Clifton  <nickc@redhat.com>
2890             Kevin Buettner  <kevinb@redhat.com>
2891
2892         * config/rx/predicates.md (rx_store_multiple_vector): Reverse
2893         order of expected registers.
2894         (rx_load_multiple_vector): Likewise.
2895         (rx_rtsd_vector): Likewise.
2896         * config/rx/rx.c (rx_cpu_type): New variable.
2897         (rx_print_operand): Fix bug printing 64-bit constant values.
2898         (rx_emit_stack_pushm): Reverse order of pushed registers.
2899         (gen_rx_store_vector): Likewise.
2900         (is_fast_interrupt_func): Only accept "fast_interrupt" as the
2901         attribute name.
2902         (is_exception_func): Rename to is_interrupt_func and only accept
2903         "interrupt" as the attribute name.
2904         (rx_get_stack_layout): Use new function name.
2905         (rx_func_attr_inlinable): Likewise.
2906         (rx_attribute_table): Remove "exception".
2907         (rx_expand_prologue): If necessary push the accumulator register
2908         in the prologue of interrupt functions.
2909         (rx_expand_epilogue): If necessary pop the accumulator.
2910         (rx_builtins): Add RX_BUILTIN_MVTIPL.
2911         (rx_expand_builtin_stz): Remove.
2912         (rx_expand_builtin_mvtipl): New function.
2913         (rx_init_builtins): Handle RX_BUILTIN_MVTIPL.
2914         (rx_expand_builtin): Likewise.
2915         (rx_enable_fpu): New variable.
2916         (rx_handle_option): Handle -fpu, -nofpu, -mcpu and -patch.
2917         * config/rx/rx.h (TARGET_CPU_CPP_BUILTINS): Assert machine based
2918         on rx_cpu_type.  Define __RX_FPU_INSNS__ if FPU insns are allowed.
2919         (enum rx_cpu_types): Define.
2920         (ASM_SPEC): Pass -m32bit-doubles on to assembler.
2921         (INCOMING_FRAME_SP_OFFSET): Define.
2922         (ARG_POINTER_CFA_OFFSET): Define.
2923         (FRAME_POINTER_CFA_OFFSET): Define.
2924         (OVERRIDE_OPTIONS): Enable fast math if RX FPU insns are enabled.
2925         (ALLOW_RX_FPU_INSNS): Define.
2926         * config/rx/rx.md: Test ALLOW_RX_FPU_INSNS instead of
2927         fast_math_flags_set_p.
2928         (UNSPEC_BUILTIN_MVTIPL): Define.
2929         (revl): Rename to bswapsi2.
2930         (bswaphi2): New pattern.
2931         (mvtachi): Mark as volatile because it uses a register unknown to GCC.
2932         (mvtaclo): Likewise.
2933         (racw): Likewise.
2934         (mvtc): Remove clobber of cc0.
2935         (mvtcp): Delete.
2936         (opecp): Delete.
2937         * config/rx/rx.opt (mieee): Remove.
2938         (fpu): Add.
2939         (nofpu): Add.
2940         (mcpu=): Add.
2941         (patch=): Add.
2942         (msave-acc-in-interrupts): Add.
2943         * config/rx/t-rx (MULTILIB_OPTIONS): Change default to 64bit doubles.
2944         (MULTILIB_DIRS): Likewise.
2945         (MULTILIB_MATCHES): Treat -fpu as an alias for -m32bit-doubles.
2946         * doc/extend.texi: Remove description of "exception" function
2947         attribute.
2948         * doc/invoke.texi: Document -fpu, -nofpu, -mcpu=, -patch= and
2949         -msave-acc-in-interrupts options.
2950
2951 2009-11-03  Richard Guenther  <rguenther@suse.de>
2952
2953         * c-common.c (fold_offsetof_1): Use HOST_WIDE_INT_PRINT_DEC.
2954
2955 2009-11-03  Dodji Seketeli  <dodji@redhat.com>
2956
2957         PR c++/38699
2958         * c-common.c (fold_offsetof_1): Issue errors when the member
2959         designator of the offsetof expression is not legitimate.
2960
2961 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2962
2963         * config/i386/i386.md (*call_value_1_rex64_ms_sysv): Use register
2964         names instead of numerical constants.
2965         (sse_prologue_save): Ditto.
2966         (*sse_prologue_save_insn): Ditto.
2967
2968 2009-11-03  Uros Bizjak  <ubizjak@gmail.com>
2969
2970         PR target/41900
2971         * config/i386/i386.h (ix86_arch_indices) <X86_ARCH_CALL_ESP>: New.
2972         (TARGET_CALL_ESP): New define.
2973         * config/i386/i386.c (initial_ix86_tune_features): Initialize
2974         X86_ARCH_CALL_ESP.
2975         * config/i386/i386.md (*call_pop_1_esp, *call_1_esp,
2976         *call_value_pop_1_esp, *call_value_1_esp): Rename from *call_pop_1,
2977         *call_1, *call_value_pop_1 and *call_value_1.  Depend on
2978         TARGET_CALL_ESP.
2979         (*call_pop_1, *call_1, *call_value_pop_1, *call_value_1):
2980         New patterns, use "lsm" as operand 1 constraint.
2981         * config/i386/predicates.md (call_insn_operand): Depend on
2982         index_register_operand for !TARGET_CALL_ESP to avoid %esp register.
2983
2984 2009-11-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2985
2986         PR tree-optimization/41857
2987         * tree-flow.h (rewrite_use_address): Add BASE_HINT argument.
2988         * tree-ssa-loop-ivopts.c (rewrite_use_address): Pass base hint
2989         to create_mem_ref.
2990         * tree-ssa-address.c (move_hint_to_base): New function.
2991         (most_expensive_mult_to_index): Add TYPE argument.  Use mode and
2992         address space associated with TYPE.
2993         (addr_to_parts): Add TYPE and BASE_HINT arguments.  Pass TYPE to
2994         most_expensive_mult_to_index.  Call move_hint_to_base.
2995         (create_mem_ref): Add BASE_HINT argument.  Pass BASE_HINT and
2996         TYPE to addr_to_parts.
2997
2998 2009-11-02  Martin Jambor  <mjambor@suse.cz>
2999
3000         PR tree-optimization/41750
3001         * tree-sra.c (analyze_modified_params): Loop over all
3002         representatives of components of a parameter.
3003
3004 2009-11-02  Jakub Jelinek  <jakub@redhat.com>
3005
3006         PR tree-optimization/41841
3007         * ipa-struct-reorg.c (build_data_structure): Don't attempt to look at
3008         local variables of not yet materialized clones.
3009
3010         PR debug/41893
3011         * cfgexpand.c (expand_debug_expr): Don't attempt to create DECL_RTL
3012         for a VOIDmode variable.
3013
3014         PR c++/41774
3015         * c-pragma.c (visstack): Change into vector of ints rather than
3016         enum symbol_visibility.
3017         (push_visibility): Add kind argument, push default_visibility together
3018         with kind.
3019         (pop_visibility): Add kind argument, return true if successful, fail
3020         if visibility stack is empty or if stack top is of different kind.
3021         (handle_pragma_visibility): Don't check length of visstack, instead
3022         call pop_visibility and issue diagnostics if it failed.  Pass 0
3023         as last argument to push_visibility and pop_visibility.
3024         * c-pragma.h (push_visibility): Add kind argument.
3025         (pop_visibility): Likewise.  Return bool instead of void.
3026
3027 2009-11-01  Eric Botcazou  <ebotcazou@adacore.com>
3028
3029         * tree.def (TARGET_MEM_REF): Update comment.
3030         * alias.c (get_alias_set): Retrieve the original memory reference for
3031         a TARGET_MEM_REF before proceeding.
3032
3033 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3034
3035         * config/frv/frv.c (frv_function_value, frv_libcall_value,
3036         frv_function_value_regno_p): New functions.
3037         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3038         * config/frv/frv.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
3039         (FUNCTION_VALUE_REGNO_P): Redefine, use frv_function_value_regno_p.
3040         * config/frv/frv-protos.h (frv_function_value_regno_p): Declare.
3041
3042 2009-10-31  Anatoly Sokolov  <aesok@post.ru>
3043
3044         * config/mn10300/mn10300.c (mn10300_function_value): Make static, add
3045         new 'outgoing' argument.
3046         (mn10300_libcall_value, mn10300_function_value_regno_p): New functions.
3047         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
3048         * config/mn10300/mn10300.h (FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE,
3049         LIBCALL_VALUE): Remove.
3050         (FUNCTION_VALUE_REGNO_P): Redefine, use mn10300_function_value_regno_p.
3051         * config/mn10300/mn10300-protos.h (mn10300_function_value): Remove.
3052         (mh10300_function_value_regno_p): Declare.
3053
3054 2009-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3055
3056         * config/arm/cortex-a9.md: New - integer pipeline description.
3057
3058 2009-10-31  Eric Botcazou  <ebotcazou@adacore.com>
3059
3060         * tree-ssa-sccvn.c (vn_reference_lookup_3): Bail out instead of
3061         aborting if the sizes of the two references don't match.
3062
3063 2009-10-31  Toon Moene  <toon@moene.org>
3064
3065         * ipa-inline.c (cgraph_decide_inlining):
3066         Include reason for not inlining called-once functions in dump file.
3067
3068 2009-10-30  Daniel Gutson  <dgutson@codesourcery.com>
3069
3070         * config/arm/linux-eabi.h (LINK_SPEC): BE8_LINK_SPEC added.
3071         * config/arm/bpapi.h (BE8_LINK_SPEC): New define.
3072         (LINK_SPEC): BE_LINK_SPEC added.
3073
3074 2009-10-30  Richard Guenther  <rguenther@suse.de>
3075
3076         PR lto/41858
3077         * lto-streamer.h (struct lto_file_decl_data): Remove fd member.
3078
3079 2009-10-30  Nathan Sidwell  <nathan@codesourcery.com>
3080
3081         * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE.
3082         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused
3083         label.
3084
3085 2009-10-30  Martin Jambor  <mjambor@suse.cz>
3086
3087         * tree-sra.c (build_ref_for_offset_1): Remove a comment.
3088
3089 2009-10-30  H.J. Lu  <hongjiu.lu@intel.com>
3090
3091         PR target/40838
3092         * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary
3093         first.  Move assert on stack_alignment_estimated just before
3094         setting stack_realign_needed.
3095         (gimple_expand_cfg): Initialize stack_alignment_estimated to 0.
3096         Don't call update_stack_boundary.
3097
3098         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New.
3099         (verride_options): Don't check ix86_force_align_arg_pointer here.
3100         (ix86_function_ok_for_sibcall): Use it.
3101         (ix86_update_stack_boundary): Likewise.
3102
3103         * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments.
3104
3105 2009-10-30  Richard Earnshaw  <rearnsha@arm.com>
3106
3107         * arm.md (QHSI): New mode iterator.
3108         (movqi): If generating for thumb, then truncate any immediate to
3109         8 bits.
3110         * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace
3111         with...
3112         (thumb2_mov<mode>_shortim and peephole2 generator): ... iterator based
3113         version.
3114
3115 2009-10-29  Cary Coutant  <ccoutant@google.com>
3116
3117         PR debug/41700
3118         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two
3119         locations in the source).
3120         (store_vcall_insn): New function.
3121         (lookup_vcall_insn): New function.
3122         (dwarf2out_virtual_call_token): Use store_vcall_insn.
3123         (dwarf2out_copy_call_info): New function.
3124         (dwarf2out_virtual_call): Use lookup_vcall_insn.
3125         * emit-rtl.c (try_split): Call copy_call_info debug hook.
3126         * debug.h (struct gcc_debug_hooks): Add copy_call_info hook.
3127         * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook.
3128         (debug_nothing_rtx_rtx): New dummy hook.
3129         * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook.
3130         (xcoff_debug_hooks): Likewise.
3131         * sdbout.c (sdb_debug_hooks): Likewise.
3132         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3133
3134 2009-10-29  David Daney  <ddaney@caviumnetworks.com>
3135
3136         * doc/invoke.texi (mmcount-ra-address): Document new command line
3137         option.
3138         * config/mips/mips.opt (mmcount-ra-address): New option.
3139         * config/mips/mips-protos.h (mips_function_profiler): Declare new
3140         function.
3141         * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset
3142         member.
3143         (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset.
3144         (mips_function_profiler): Moved from FUNCTION_PROFILER, and
3145         rewritten.
3146         * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to
3147         mips_function_profiler.
3148
3149 2009-10-29  Steve Ellcey  <sje@cup.hp.com>
3150
3151         PR middle-end/37565
3152         PR target/38018
3153         * doc/tm.texi (OVERRIDE_OPTIONS): Update.
3154         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3155         * optc-gen.awk (cl_target_option_restore): Include call to
3156         targetm.override_options_after_change.
3157         * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3158         * target.h (override_options_after_change): New.
3159         * c-common.c (parse_optimize_options): Call
3160         targetm.override_options_after_change.
3161         * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New.
3162         (ia64_override_options_after_change): New.
3163         (ia64_override_options) Add call to above.
3164
3165 2009-10-29  Michael Matz  <matz@suse.de>
3166
3167         * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
3168         (gate_convert_to_rsqrt): Ditto.
3169         (pass_convert_to_rsqrt): Ditto.
3170         * tree-pass.h (pass_convert_to_rsqrt): Don't declare.
3171         * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
3172         to pass list.
3173
3174         * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
3175
3176 2009-10-29  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
3177
3178         * config/arm/arm.c (find_best_start): Fix type of remainder to be
3179         unsigned.
3180
3181 2009-10-29  Martin Jambor  <mjambor@suse.cz>
3182
3183         PR tree-optimization/41775
3184         * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL.
3185         (generate_subtree_copies): Do not unshare agg.
3186         (load_assign_lhs_subreplacements): Do not unshare rhs.
3187         (sra_modify_assign): Do not unshare exprs.
3188         (propagate_subacesses_accross_link): Renamed to
3189         propagate_subaccesses_across_link.
3190
3191 2009-10-29  Richard Earnshaw  <rearnsha@arm.com>
3192
3193         * arm.c (count_insns_for_constant): Rework to support counting for
3194         thumb2 immediates as well.
3195         (find_best_start): Split out from arm_gen_constant.
3196         (arm_gen_constant): Rework to support XOR with immediate.
3197
3198 2009-10-29  Chao-ying Fu  <fu@mips.com>
3199
3200         * config/mips/mips.c (mips_emit_unary, mips_force_unary): New
3201         functions.
3202         (mips_expand_synci_loop):  Use the length rtx to control the
3203         synci loop from the begin rtx that points to the first byte of
3204         the cache line.
3205
3206 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3207
3208         * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin.
3209
3210 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3211
3212         * dbxout.c (dbxout_common_check): Accept non public trees.
3213         * dwarf2out.c (fortran_common): Accept non public trees.
3214
3215 2009-10-28  Rafael Avila de Espindola  <espindola@google.com>
3216
3217         * common.opt (fuse-linker-plugin): New option.
3218         * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to
3219         fuse-linker-plugin.
3220         * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin.
3221
3222 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3223
3224         PR rtl-optimization/39715
3225         * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1.
3226         (gen_cstoresi_ltu_thumb1): New splitter.
3227
3228 2009-10-28  Richard Guenther  <rguenther@suse.de>
3229
3230         PR lto/41808
3231         PR lto/41839
3232         * tree-ssa.c (useless_type_conversion_p): Do not treat
3233         conversions to pointers to incomplete types as useless.
3234         * gimple.c (gimple_types_compatible_p): Compare struct tags,
3235         not typedef names.
3236
3237 2009-10-28  Jakub Jelinek  <jakub@redhat.com>
3238
3239         * var-tracking.c (emit_note_insn_var_location): Don't call the second
3240         vt_expand_loc unnecessarily when location is not a register nor
3241         memory.
3242
3243         PR middle-end/41837
3244         * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if
3245         fields don't have DECL_NAME.
3246
3247         PR debug/41801
3248         * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode,
3249         call convert_memory_address on addr.
3250
3251         PR target/41762
3252         * config/i386/i386.c (ix86_pic_register_p): Don't call
3253         rtx_equal_for_cselib_p for VALUEs discarded as useless.
3254
3255 2009-10-28  Richard Sandiford  <rdsandiford@googlemail.com>
3256
3257         * var-tracking.c (emit_note_insn_var_location): Get the mode of
3258         a variable part from its REG, MEM or VALUE.
3259
3260 2009-10-28  Richard Guenther  <rguenther@suse.de>
3261
3262         * gimple.c (gimple_get_alias_set): Fix comment typo.
3263
3264 2009-10-28  Richard Guenther  <rguenther@suse.de>
3265
3266         * tree.c (free_lang_data_in_type): Do not call get_alias_set.
3267         (free_lang_data): Unconditionally compute alias sets for all
3268         standard integer types.  Bail out if gate bailed out previously.
3269         Do not reset the types_compatible_p langhook.
3270         (gate_free_lang_data): Remove.
3271         (struct pass_ipa_free_lang_data): Enable unconditionally.
3272         * gimple.c (gimple_get_alias_set): Use the same alias-set for
3273         all pointer types.
3274
3275 2009-10-28  Richard Guenther  <rguenther@suse.de>
3276
3277         PR middle-end/41855
3278         * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs
3279         (ref_maybe_used_by_call_p_1): Fix bcopy handling.
3280         (call_may_clobber_ref_p_1): Likewise.
3281         * tree-ssa-structalias.c (find_func_aliases): Likewise.
3282         * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs.
3283
3284 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3285
3286         PR rtl-optimization/41812
3287
3288         Revert:
3289         2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
3290
3291         * df-problems.c (df_md_scratch): New.
3292         (df_md_alloc, df_md_free): Allocate/free it.
3293         (df_md_local_compute): Only include live registers in init.
3294         (df_md_transfer_function): Prune the in-set computed by
3295         the confluence function, and the gen-set too.
3296
3297 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3298
3299         PR rtl-optimization/39715
3300         * combine.c (simplify_comparison): Use extensions to
3301         widen comparisons.  Try an ANDing first.
3302
3303 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3304
3305         PR rtl-optimization/40741
3306         * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with
3307         a small constant is cheap.
3308         * config/arm/arm.md (andsi3, iorsi3): Try to place the result of
3309         force_reg on the LHS.
3310         (xorsi3): Likewise, and split the XOR if the constant is complex
3311         and not in Thumb mode.
3312
3313 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3314
3315         * expmed.c (emit_store_flag): Check costs before
3316         transforming to the opposite representation.
3317
3318 2009-10-28  Paolo Bonzini  <bonzini@gnu.org>
3319
3320         * config/sh/sh.md (cbranchfp4_media): Remove hack extending
3321         cstore result to DImode.
3322
3323 2009-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>
3324
3325         * config/sh/sh.md (stuff_delay_slot): Move const_int pattern
3326         inside the unspec vector.
3327
3328 2009-10-27  Richard Henderson  <rth@redhat.com>
3329
3330         * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly.
3331
3332 2009-10-27  Richard Henderson  <rth@redhat.com>
3333
3334         PR c++/41819
3335         * tree-eh.c (eh_region_may_contain_throw_map): Rename from
3336         eh_region_may_contain_throw; update users.
3337         (eh_region_may_contain_throw): New function.
3338         (lower_catch): Check flag_exceptions before creating exception region.
3339         (lower_eh_filter, lower_eh_must_not_throw): Likewise.
3340         (lower_cleanup): Tidy existing flag_exceptions check to match.
3341
3342 2009-10-27  Kai Tietz <kai.tietz@onevision.com>
3343
3344         PR/41799
3345         * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro.
3346         * config/i386/mingw.opt: Add fset-stack-executable.
3347         * config/i386/i386.c (ix86_trampoline_init): Make call to
3348         emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is
3349         defined and its value is not zero.
3350         * doc/invoke.texi
3351
3352 2009-10-27  Richard Guenther  <rguenther@suse.de>
3353
3354         * tree-ssa-structalias.c (find_func_aliases): In IPA mode
3355         handle calls to externally visible functions like in regular mode.
3356         (create_variable_info_for): Do not create function infos here.
3357         (have_alias_info): Remove write-only variable.
3358         (solve_constraints): New function split out from common code
3359         in compute_points_to_sets and ipa_pta_execute.
3360         (compute_points_to_sets): Adjust.
3361         (ipa_pta_execute): Likewise.  Handle clones and externally visible
3362         functions like in non-IPA mode.
3363
3364 2009-10-27  Jakub Jelinek  <jakub@redhat.com>
3365
3366         PR c/41842
3367         * c-typeck.c (convert_arguments): Return -1 if any of the arguments is
3368         error_mark_node.
3369
3370 2009-10-27  Richard Guenther  <rguenther@suse.de>
3371
3372         * tree-complex.c (expand_complex_div_wide): Check for
3373         INTEGER_CST, not TREE_CONSTANT on comparison folding result.
3374
3375 2009-10-27  Revital Eres  <eres@il.ibm.com>
3376
3377         PR tree-optimization/40648
3378         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
3379         Change decision of when to peel for alignment.
3380
3381 2009-10-27  Richard Guenther  <rguenther@suse.de>
3382
3383         PR lto/41821
3384         * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE.
3385
3386 2009-10-27  Aldy Hernandez  <aldyh@redhat.com>
3387
3388         PR bootstrap/41451
3389         * fold-const.c (fold_binary_loc): Do not call
3390         protected_set_expr_location.
3391
3392 2009-10-27  Wei Guozhi  <carrot@google.com>
3393
3394         PR target/41705
3395         * target.h (have_conditional_execution): Add a new target hook
3396         function.
3397         * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise.
3398         * targhooks.h (default_have_conditional_execution): Likewise.
3399         * targhooks.c (default_have_conditional_execution): Likewise.
3400         * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it.
3401         * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it.
3402         (arm_have_conditional_execution): New function.
3403         * ifcvt.c (noce_process_if_block, find_if_header,
3404         cond_exec_find_if_block, dead_or_predicable): Change the usage of
3405         macro HAVE_conditional_execution to a target hook call.
3406         * recog.c (peephole2_optimize): Likewise.
3407         * sched-rgn.c (add_branch_dependences): Likewise.
3408         * final.c (asm_insn_count, final_scan_insn): Likewise.
3409         * bb-reorder.c (HAVE_conditional_execution): Remove it.
3410
3411 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3412             Michael Meissner  <meissner@linux.vnet.ibm.com>
3413             Ulrich Weigand  <uweigand@de.ibm.com>
3414
3415         * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers.
3416         * config/spu/spu_cache.h: New file.
3417
3418         * config/spu/cachemgr.c: New file.
3419         * config/spu/cache.S: New file.
3420
3421         * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define.
3422         (ADDR_SPACE_EA): Define.
3423         (TARGET_ADDR_SPACE_KEYWORDS): Define.
3424         * config/spu/spu.c (EAmode): New macro.
3425         (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3426         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3427         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise.
3428         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3429         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3430         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3431         (TARGET_ASM_SELECT_SECTION): Likewise.
3432         (TARGET_ASM_UNIQUE_SECTION): Likewise.
3433         (TARGET_ASM_UNALIGNED_SI_OP): Likewise.
3434         (TARGET_ASM_ALIGNED_DI_OP): Likewise.
3435         (ea_symbol_ref): New function.
3436         (spu_legitimate_constant_p): Handle __ea qualified addresses.
3437         (spu_addr_space_legitimate_address_p): New function.
3438         (spu_addr_space_legitimize_address): Likewise.
3439         (cache_fetch): New global.
3440         (cache_fetch_dirty): Likewise.
3441         (ea_alias_set): Likewise.
3442         (ea_load_store): New function.
3443         (ea_load_store_inline): Likewise.
3444         (expand_ea_mem): Likewise.
3445         (spu_expand_mov): Handle __ea qualified memory references.
3446         (spu_addr_space_pointer_mode): New function.
3447         (spu_addr_space_address_mode): Likewise.
3448         (spu_addr_space_subset_p): Likewise.
3449         (spu_addr_space_convert): Likewise.
3450         (spu_section_type_flags): Handle "._ea" section.
3451         (spu_select_section): New function.
3452         (spu_unique_section): Likewise.
3453         * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__
3454         and __EA64__ predefined macros.
3455         * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and
3456         -matomic-updates switches.
3457
3458         * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define.
3459         (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a,
3460         libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a,
3461         libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a.
3462         ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target.
3463         ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o,
3464         $(T)cache128k.o): Likewise.
3465         ($(T)libgcc_%.a): Likewise.
3466
3467         * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION.
3468         * config/spu/spu.opt (-mea32/-mea64): Add switches.
3469         (-maddress-space-conversion): Likewise.
3470         (-mcache-size=): Likewise.
3471         (-matomic-updates): Likewise.
3472         * doc/invoke.texi (-mea32/-mea64): Document.
3473         (-maddress-space-conversion): Likewise.
3474         (-mcache-size=): Likewise.
3475         (-matomic-updates): Likewise.
3476
3477 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3478             Michael Meissner  <meissner@linux.vnet.ibm.com>
3479             Ulrich Weigand  <uweigand@de.ibm.com>
3480
3481         * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document.
3482
3483         * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is
3484         defined, add the named address space keywords.
3485         (c_addr_space_name): New function.
3486         (complete_array_type): Preserve named address space.
3487         (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode
3488         instead of targetm.valid_pointer_mode.
3489
3490         * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15,
3491         RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE.
3492         (ADDR_SPACE_KEYWORD): New macro.
3493         (c_addr_space_name): Add prototype.
3494
3495         * c-tree.h (struct c_declspecs): Add address_space member.
3496         (declspecs_add_addrspace): Add prototype.
3497
3498         * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces.
3499
3500         * c-parser.c (c_parse_init): Add assertion.
3501         (typedef enum c_id_kind): Add C_ID_ADDRSPACE.
3502         (c_lex_one_token): Handle address space keywords.
3503         (c_token_starts_typename): Likewise.
3504         (c_token_starts_declspecs): Likewise.
3505         (c_parser_declspecs): Likewise.
3506         (c_parser_postfix_expression_after_paren_type): Diagnose compound
3507         literal within function qualified with named address space.
3508
3509         * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named
3510         address space qualifiers.
3511         (shadow_tag_warned): Warn about useless address space qualifiers.
3512         (quals_from_declspecs): Handle address space qualifiers.
3513         (grokdeclarator): Likewise.
3514         (build_null_declspecs): Likewise.
3515         (declspecs_add_addrspace): New function.
3516
3517         * c-typeck.c (addr_space_superset): New function.
3518         (qualify_type): Handle named address spaces.
3519         (composite_type): Likewise.
3520         (common_pointer_type): Likewise.
3521         (comp_target_types): Likewise.
3522         (build_conditional_expr): Likewise.
3523         (handle_warn_cast_qual): Likewise.
3524         (build_c_cast): Likewise.
3525         (convert_for_assignment): Likewise.
3526         (build_binary_op): Likewise.
3527         (pointer_diff): Handle named address spaces.  Use intermediate
3528         integer type of sufficient size if required.
3529
3530 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3531             Michael Meissner  <meissner@linux.vnet.ibm.com>
3532             Ulrich Weigand  <uweigand@de.ibm.com>
3533
3534         * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
3535         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3536         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3537
3538         * target.h (struct target_def): Add pointer_mode, address_mode,
3539         and valid_pointer_mode to addr_space substructure.
3540         * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
3541         (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
3542         (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
3543         (TARGET_ADDR_SPACE_HOOKS): Add them.
3544         * targhooks.c (target_default_pointer_address_modes_p): New function.
3545         * target.h (target_default_pointer_address_modes_p): Add prototype.
3546         * targhooks.c (default_addr_space_pointer_mode): New function.
3547         (default_addr_space_address_mode): Likewise.
3548         (default_addr_space_valid_pointer_mode): Likewise.
3549         * targhooks.h (default_addr_space_pointer_mode): Add prototype.
3550         (default_addr_space_address_mode): Likewise.
3551         (default_addr_space_valid_pointer_mode): Likewise.
3552         * output.h (default_valid_pointer_mode): Move to ...
3553         * targhooks.h (default_valid_pointer_mode): ... here.
3554         * varasm.c (default_valid_pointer_mode): Move to ...
3555         * targhooks.c (default_valid_pointer_mode): ... here.
3556
3557         * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
3558         instead of targetm.valid_pointer_mode.
3559
3560         * fold-const.c (fit_double_type): Use int_or_pointer_precision.
3561         * tree.c (integer_pow2p): Likewise.
3562         (tree_log2): Likewise.
3563         (tree_floor_log2): Likewise.
3564         (signed_or_unsigned_type_for): Support pointer type of different size.
3565         (int_or_pointer_precision): New function.
3566         * tree.h (int_or_pointer_precision): Add prototype.
3567         * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
3568         * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
3569         incoming pointer type instead of POINTER_SIZE.
3570
3571         * tree.c (build_pointer_type): Use appropriate pointer mode
3572         instead of ptr_mode.
3573         (build_reference_type): Likewise.
3574         * expr.c (store_expr): Likewise.
3575         (expand_expr_addr_expr): Likewise.
3576         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
3577         * cfgexpand.c (expand_debug_expr): Likewise.
3578
3579         * auto-inc-dec.c: Include "target.h".
3580         (try_merge): Use appropriate address mode instead of Pmode.
3581         (find_inc): Likewise.
3582         * combine.c (find_split_point): Likewise.
3583         * cselib.c (cselib_record_sets): Likewise.
3584         * dse.c (replace_inc_dec): Likewise.
3585         (canon_address): Likewise.
3586         * var-tracking.c (replace_expr_with_values): Likewise.
3587         (count_uses): Likewise.
3588         (add_uses): Likewise.
3589         (add_stores): Likewise.
3590         * emit-rtl.c: Include "target.h".
3591         (adjust_address_1): Use appropriate address mode instead of Pmode.
3592         (offset_address): Likewise.
3593         * explow.c (break_out_memory_refs): Likewise.
3594         (memory_address_addr_space): Likewise.
3595         (promote_mode): Likewise.
3596         * expr.c (move_by_pieces): Likewise.
3597         (emit_block_move_via_loop): Likewise.
3598         (store_by_pieces): Likewise.
3599         (store_by_pieces_1): Likewise.
3600         (expand_assignment): Likewise.
3601         (store_constructor): Likewise.
3602         (expand_expr_addr_expr): Likewise.
3603         (expand_expr_real_1): Likewise.
3604         * cfgexpand.c (expand_debug_expr): Likewise.
3605         * ifcvt.c (noce_try_cmove_arith): Likewise.
3606         * regcprop.c (kill_autoinc_value): Likewise.
3607         * regmove.c (try_auto_increment): Likewise.
3608         * reload.c (find_reloads): Likewise.
3609         (find_reloads_address): Likewise.
3610         (find_reloads_address_1): Likewise.
3611         * sched-deps.c: Include "target.h".
3612         (sched_analyze_1): Use appropriate address mode instead of Pmode.
3613         (sched_analyze_2): Likewise.
3614         * sel-sched-dump.c: Include "target.h".
3615         (debug_mem_addr_value): Use appropriate address mode instead of Pmode.
3616         * stor-layout.c (layout_type): Likewise.
3617         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3618         (multiplier_allowed_in_address_p): Likewise.
3619         (get_address_cost): Likewise.
3620         * varasm.c (make_decl_rtl): Likewise.
3621
3622         * expr.c (expand_assignment): Always convert offsets to appropriate
3623         address mode.
3624         (store_expr): Likewise.
3625         (store_constructor): Likewise.
3626         (expand_expr_real_1): Likewise.
3627
3628         * reload.h (form_sum): Add MODE argument.
3629         * reload.c (form_sum): Add MODE argument, use it instead of Pmode.
3630         Update recursive calls.
3631         (subst_indexed_address): Update calls to form_sum.
3632
3633         * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
3634         * tree-ssa-address.c: Include "target.h".
3635         (templates): Replace by ...
3636         (mem_addr_template_list): ... this new vector.
3637         (TEMPL_IDX): Handle address space numbers.
3638         (gen_addr_rtx): Add address mode argument, use it instead of Pmode.
3639         (addr_for_mem_ref): Add ADDRSPACE argument.  Use per-address-space
3640         instead of global cache.  Update call to gen_addr_rtx.
3641         (valid_mem_ref_p): Update call to addr_for_mem_ref.
3642         * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
3643
3644         * rtl.h (convert_memory_address_addr_space): Add prototype.
3645         (convert_memory_address): Define as macro.
3646         * explow.c (convert_memory_address): Rename to ...
3647         (convert_memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3648         Use appropriate pointer and address modes instead of ptr_mode / Pmode.
3649         Update recursive calls.
3650         (memory_address_addr_space): Call convert_memory_address_addr_space.
3651         * expmed.c (make_tree): Likewise.
3652         * expr.c (expand_assignment): Likewise.
3653         (expand_expr_addr_expr_1): Likewise.  Also, add ADDRSPACE argument.
3654         (expand_expr_addr_expr): Likewise.  Also, update call.
3655
3656         * alias.c (find_base_value): Guard pointer size optimizations.
3657         (find_base_term): Likewise.
3658         * rtlanal.c (nonzero_bits1): Likewise.
3659         (num_sign_bit_copies1): Likewise.
3660         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
3661
3662         * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
3663         (emit-rtl.o): Likewise.
3664         (auto-inc-dec.o): Likewise.
3665         (sched-deps.o): Likewise.
3666
3667 2009-10-26  Ben Elliston  <bje@au.ibm.com>
3668             Michael Meissner  <meissner@linux.vnet.ibm.com>
3669             Ulrich Weigand  <uweigand@de.ibm.com>
3670
3671         * doc/extend.texi (Named Address Spaces): New section.
3672         * coretypes.h (addr_space_t): New type.
3673         (ADDR_SPACE_GENERIC): New define.
3674         (ADDR_SPACE_GENERIC_P): New macro.
3675
3676         * doc/tm.texi (Named Address Spaces): New section.
3677         (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
3678         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
3679         (TARGET_ADDR_SPACE_SUBSET_P): Document.
3680         (TARGET_ADDR_SPACE_CONVERT): Document.
3681         * target.h (struct gcc_target): Add addr_space substructure.
3682         * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
3683         (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
3684         (TARGET_ADDR_SPACE_SUBSET_P): Likewise.
3685         (TARGET_ADDR_SPACE_CONVERT): Likewise.
3686         (TARGET_ADDR_SPACE_HOOKS): Likewise.
3687         (TARGET_INITIALIZER): Initialize addr_space hooks.
3688         * targhooks.c (default_addr_space_legitimate_address_p): New function.
3689         (default_addr_space_legitimize_address): Likewise.
3690         (default_addr_space_subset_p): Likewise.
3691         (default_addr_space_convert): Likewise.
3692         * targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
3693         (default_addr_space_legitimize_address): Likewise.
3694         (default_addr_space_subset_p): Likewise.
3695         (default_addr_space_convert): Likewise.
3696
3697         * doc/rtl.texi (MEM_ADDR_SPACE): Document.
3698         * rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
3699         (MEM_ADDR_SPACE): New macro.
3700         * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
3701         address space memory attribute.
3702         (mem_attrs_htab_hash): Handle address space memory attribute.
3703         (mem_attrs_htab_eq): Likewise.
3704         (set_mem_attributes_minus_bitpos): Likewise.
3705         (set_mem_alias_set): Likewise.
3706         (set_mem_align): Likewise.
3707         (set_mem_expr): Likewise.
3708         (set_mem_offset): Likewise.
3709         (set_mem_size): Likewise.
3710         (adjust_address_1): Likewise.
3711         (offset_address): Likewise.
3712         (widen_memoy_address): Likewise.
3713         (get_spill_slot_decl): Likewise.
3714         (set_mem_attrs_for_spill): Likewise.
3715         (set_mem_addr_space): New function.
3716         * emit-rtl.h (set_mem_addr_space): Add prototype.
3717         * print-rtl.c (print_rtx): Print address space memory attribute.
3718         * expr.c (expand_assignment): Set address space memory attribute
3719         of generated MEM RTXes as appropriate.
3720         (expand_expr_real_1): Likewise.
3721         * cfgexpand.c (expand_debug_expr): Likewise.
3722         * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
3723
3724         * tree.h (struct tree_base): Add address_space bitfield.  Reduce
3725         size of "spare" bitfield.
3726         (TYPE_ADDR_SPACE): New macro.
3727         (ENCODE_QUAL_ADDR_SPACE): Likewise.
3728         (DECODE_QUAL_ADDR_SPACE): Likewise.
3729         (CLEAR_QUAL_ADDR_SPACE): Likewise.
3730         (KEEP_QUAL_ADDR_SPACE): Likewise.
3731         (TYPE_QUALS): Encode type address space.
3732         (TYPE_QUALS_NO_ADDR_SPACE): New macro.
3733         * tree.c (set_type_quals): Set type address space.
3734         (build_array_type): Inherit array address space from element type.
3735         * print-tree.c (print_node_brief): Print type address space.
3736         (print_node): Likewise.
3737         * tree-pretty-print.c (dump_generic_node): Likewise.
3738
3739         * explow.c (memory_address): Rename to ...
3740         (memory_address_addr_space): ... this.  Add ADDRSPACE argument.
3741         Use address-space aware variants of memory address routines.
3742         * recog.c (memory_address_p): Rename to ...
3743         (memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3744         Use address-space aware variants of memory address routines.
3745         (offsettable_address_p): Rename to ...
3746         (offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
3747         Use address-space aware variants of memory address routines.
3748         * reload.c (strict_memory_address_p): Rename to ...
3749         (strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3750         Use address-space aware variants of memory address routines.
3751         (maybe_memory_address_p): Rename to ...
3752         (maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
3753         Use address-space aware variants of memory address routines.
3754         * expr.h (memory_address_addr_space): Add prototype.
3755         (memory_address): Define as macro.
3756         * recog.h (memory_address_addr_space_p): Add prototype.
3757         (memory_address_p): Define as macro.
3758         (offsettable_address_addr_space_p): Add prototype.
3759         (offsettable_address_p): Define as macro.
3760         (strict_memory_address_addr_space_p): Add prototype.
3761         (strict_memory_address_p): Define as macro.
3762
3763         * combine.c (find_split_point): Use address-space aware variants
3764         of memory address routines.
3765         * emit-rtl.c (operand_subword): Likewise.
3766         (change_address_1): Likewise.
3767         (adjust_address_1): Likewise.
3768         (offset_address): Likewise.
3769         * expr.c (emit_move_insn): Likewise.
3770         (expand_assignment): Likewise.
3771         (expand_expr_real_1): Likewise.
3772         * recog.c (verify_changes): Likewise.
3773         (general_operand): Likewise.
3774         (offsettable_memref_p): Likewise.
3775         (offsettable_nonstrict_memref_p): Likewise.
3776         (constrain_operands): Likewise.
3777         * reload.c (get_secondary_mem): Likewise.
3778         (find_reloads_toplev): Likewise.
3779         (find_reloads_address): Likewise.
3780         (find_reloads_subreg_address): Likewise.
3781         * reload1.c (reload): Likewise.
3782         * rtlhooks.c (gen_lowpart_if_possible): Likewise.
3783         * rtl.h (address_cost): Add ADDRSPACE argument.
3784         * rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
3785         aware variant of memory address routines.
3786         * loop-invariant.c (create_new_invariant): Update address_cost call.
3787         * tree-ssa-loop-ivopts.c (computation_cost): Likewise.
3788         * fwprop.c (should_replace_address): Add ADDRSPACE argument.
3789         Use address-space aware variant of memory address routines.
3790         (propagate_rtx_1): Update call to should_replace_address.
3791         * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
3792         argument.
3793         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
3794         ADDRSPACE argument.  Use per-address-space instead of global cache.
3795         Use address-space aware variant of memory address routines.
3796         (get_address_cost): Likewise.
3797         (get_computation_cost_at): Update calls.
3798         * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
3799         Use address-space aware variant of memory address routines.
3800         (create_mem_ref_raw): Update call to valid_mem_ref_p.
3801         (most_expensive_mult_to_index): Update call to
3802         multiplier_allowed_in_address_p.
3803
3804         * dwarf2out.c (modified_type_die): Output DW_AT_address_class
3805         attribute to indicate named address spaces.
3806
3807         * varasm.c (get_variable_section): DECLs in named address spaces
3808         cannot be "common".
3809
3810         * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
3811         for addresses in a non-generic address space.
3812
3813         * expr.c (emit_block_move_hints): Do not use libcalls for
3814         memory in non-generic address spaces.
3815         (clear_storage_hints): Likewise.
3816         (expand_assignment): Likewise.
3817
3818         * fold-const.c (operand_equal_p): Expressions refering to different
3819         address spaces are not equivalent.
3820
3821         * rtl.c (rtx_equal_p_cb): MEMs refering to different address
3822         spaces are not equivalent.
3823         (rtx_equal_p): Likewise.
3824         * cse.c (exp_equiv_p): Likewise.
3825         * jump.c (rtx_renumbered_equal_p): Likewise.
3826         * reload.c (operands_match_p): Likewise.
3827
3828         * alias.c (nonoverlapping_memrefs_p): MEMs refering to different
3829         address spaces may alias.
3830         (true_dependence): Likewise.
3831         (canon_true_dependence): Likewise.
3832         (write_dependence_p): Likewise.
3833
3834         * dse.c (canon_address): Handle named address spaces.
3835         * ifcvt.c (noce_try_cmove_arith): Likewise.
3836
3837         * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
3838         * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
3839         * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
3840         to handle conversions between different address spaces.
3841         * fold-const.c (fold_convert_loc): Likewise.
3842         (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
3843         * tree-pretty-print.c (dump_generic_node): Likewise.
3844         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
3845         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
3846         * tree-inline.c (estimate_operator_cost): Likewise.
3847         * tree-ssa.c (useless_type_conversion_p): Conversions between pointers
3848         to different address spaces are not useless.
3849
3850 2009-10-26  Jakub Jelinek  <jakub@redhat.com>
3851
3852         PR bootstrap/41345
3853         * cfgcleanup.c (trivially_empty_bb_p): New function.
3854         (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END.
3855
3856         PR debug/41828
3857         * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die,
3858         add_name_and_src_coords_attributes, gen_namespace_die,
3859         dwarf2out_set_name): Handle dwarf2_name returning NULL.
3860
3861 2009-10-26  Nick Clifton  <nickc@redhat.com>
3862
3863         * config.gcc: Add support for RX target.
3864         * config/rx: New directory.
3865         * config/rx/constraints.md: New file.
3866         * config/rx/predicates.md: New file.
3867         * config/rx/rx.c: New file.
3868         * config/rx/rx.h: New file.
3869         * config/rx/rx.md: New file.
3870         * config/rx/rx.opt: New file.
3871         * config/rx/rx-protos.h: New file.
3872         * config/rx/t-rx: New file.
3873         * doc/extend.texi: Document RX function attributes.
3874         * doc/invoke.texi: Document RX specific command line options.
3875         * doc/contrib.texi: Document RX contribution.
3876         * doc/md.texi: Document RX constraints.
3877         * doc/install.texi: Document RX support.
3878
3879 2009-10-26  Michael Matz  <matz@suse.de>
3880
3881         PR tree-optimization/41783
3882         * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special
3883         case for simple diamonds.
3884         * tree-ssa-alias.h (get_continuation_for_phi): Declare.
3885         * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid
3886         argument, use alias oracle to skip some vdefs.
3887         (phi_translate_1): Change call to above, don't allocate new
3888         value ids if they can stay the same.
3889         (compute_avail): Allow vuse walking when looking up references.
3890
3891 2009-10-26  Richard Guenther  <rguenther@suse.de>
3892
3893         PR tree-optimization/41826
3894         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid
3895         access to re-allocated vector fields.
3896
3897 2009-10-26  Richard Guenther  <rguenther@suse.de>
3898
3899         * graphite-sese-to-poly.c (check_poly_representation): Fix
3900         compile without checking.
3901
3902 2009-10-26  Janus Weil  <janus@gcc.gnu.org>
3903
3904         PR fortran/41714
3905         * gimple.h (tree_annotate_all_with_location): Remove prototype.
3906         * gimplify.c (tree_should_carry_location_p,
3907         tree_annotate_one_with_location,tree_annotate_all_with_location):
3908         Remove obsolete functions.
3909
3910 2009-10-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3911
3912         PR target/41813
3913         * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern.
3914
3915 2009-10-25  Richard Guenther  <rguenther@suse.de>
3916
3917         * lto-streamer-in.c (unpack_ts_decl_common_value_fields):
3918         Stream DECL_RESTRICTED_P.
3919         * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
3920
3921 2009-10-25  Richard Sandiford  <rdsandiford@googlemail.com>
3922
3923         * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit
3924         a note when expanding to nothing.
3925
3926 2009-10-25  Richard Guenther  <rguenther@suse.de>
3927
3928         PR middle-end/41814
3929         * tree.c (find_decls_types_r): Deal with Java overloading
3930         BINFO_VIRTUALS for its own purpose.
3931
3932 2009-10-24  Adam Nemet  <anemet@caviumnetworks.com>
3933
3934         * config/mips/predicates.md (hilo_operand): New predicate.
3935         * config/mips/mips.md (<u>mulsidi3_64bit): Change it to a
3936         define_insn.  Correct !ISA_HAS_EXT_INS length from 24 to 28.  Move
3937         splitter part from here ...:
3938         (<u>mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here.  Swap
3939         op0 and op4 to match the DINS case.
3940         (<u>mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter.
3941
3942 2009-10-24  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
3943
3944         PR middle-end/19154
3945         * avr.md (QIDI): Add new mode iterator.
3946         (sbrx_branch<mode>): Create new zero extract bit, test and jump
3947         patterns for all QI thru DI modes combinations.
3948         (sbrx_and_branch<mode>): Create new and based bit test and jump
3949         patterns for QI thru SI modes.
3950         avr.c (avr_out_sbxx_branch): Use only bit number.
3951
3952 2009-10-24  Jan Hubicka  <jh@suse.cz>
3953
3954         * ipa-reference.c (check_call): Noreturn notrhow calls do not write
3955         to memory.
3956         (analyze_function): When analyzing noreturn nothrow call, do not
3957         compute written stats; free bitmaps of vars early if possible.
3958         (generate_summary): Only update bitmaps if computed.
3959         (propagate): Only dump bitmaps if computed.
3960         (ipa_reference_read_summary): Fix pasto.
3961
3962 2009-10-24  Eric Botcazou  <ebotcazou@adacore.com>
3963
3964         * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into...
3965         (aliasing_component_refs_p): ...this.  Return true if there is no
3966         common base and the base access types have the same alias set.
3967         (indirect_ref_may_alias_decl_p): Adjust for above renaming.
3968         (indirect_refs_may_alias_p): Likewise.
3969
3970 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3971
3972         PR c/40033
3973         * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in
3974         a C_MAYBE_CONST_EXPR.
3975
3976 2009-10-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
3977
3978         PR target/41787
3979         * config/rs6000/rs6000.c (struct machine_function): Add
3980         vsx_or_altivec_used_p to record if vector types are used.
3981         (rs6000_expand_to_rtl_hook): Rename from
3982         rs6000_alloc_sdmode_stack_slot.  If VSX, check to see if there are
3983         any vector operations, so if there are, we can set VRSAVE to
3984         non-zero when only floating point vector registers are used.
3985         (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook.
3986         (rs6000_check_vector_mode): Inner function to check if vector
3987         types are used in the code.
3988         (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if
3989         vector instructions are used.
3990
3991         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED):
3992         Indicate that VSX registers which overlap floating point
3993         registers, can't be used across a call, since the ABI only states
3994         the scalar part of the register will be saved and restored.
3995
3996 2009-10-23  Joseph Myers  <joseph@codesourcery.com>
3997
3998         PR c/41673
3999         * alias.c (get_alias_set): Call langhook before returning 0 for
4000         types with structural equality.
4001         * c-common.c (c_common_get_alias_set): Use alias set of element
4002         type for arrays with structural comparison.
4003
4004 2009-10-23  Richard Guenther  <rguenther@suse.de>
4005
4006         PR middle-end/41805
4007         * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and
4008         gimple_call_nothrow_p.
4009
4010 2009-10-23  Richard Guenther  <rguenther@suse.de>
4011
4012         PR tree-optimization/41778
4013         * tree-ssa-pre.c (do_regular_insertion): Only insert if a
4014         redundancy along a path in the CFG we want to optimize for speed
4015         is going to be removed.
4016         (execute_pre): Do partial-PRE only if the function is to be
4017         optimized for speed.
4018         (gate_pre): Do not turn off all of PRE when not optimizing a
4019         function for speed.
4020
4021 2009-10-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4022
4023         * builtins.c (fold_builtin_cabs): Use validate_arg().
4024         (fold_builtin_cexp): Fix if-logic.
4025         (fold_builtin_1): Check subtype for BUILT_IN_CIMAG.
4026
4027 2009-10-22  Jeff Law  <law@redhat.com>
4028
4029         * ira-lives.c (process_single_reg_class_operands): Update the
4030         hard reg costs for all the hard registers desired by the
4031         single reg class operand.
4032
4033 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4034
4035         * simplify-rtx.c (simplify_replace_fn_rtx): Add a fallback case
4036         for rtxes that aren't handled specially.
4037
4038 2009-10-22  Richard Sandiford  <rdsandiford@googlemail.com>
4039
4040         * rtl.h (shallow_copy_rtvec): Declare.
4041         * rtl.c (shallow_copy_rtvec): New function.
4042         * cselib.c (cselib_subst_to_values): Use it.  Only modify an
4043         rtx field if the subrtx has changed.
4044
4045 2009-10-22  Anatoly Sokolov  <aesok@post.ru>
4046
4047         * config/m32c/m32c.c (m32c_function_value_regno_p): New function.
4048         (m32c_function_value): Make static, add new 'outgoing' argument.
4049         (m32c_libcall_value): Make static, add new 'fun' argument.
4050         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4051         * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4052         (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p.
4053         * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare.
4054         (m32c_function_value, m32c_libcall_value): Delete declaration.
4055
4056 2009-10-22  Diego Novillo  <dnovillo@google.com>
4057
4058         * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H.
4059
4060 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4061
4062         * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white
4063         space.
4064
4065 2009-10-22  Richard Guenther  <rguenther@suse.de>
4066
4067         * lto-streamer.h (lto_symtab_merge_cgraph_nodes): Declare.
4068         * lto-symtab.c (struct lto_symtab_entry_def): Add node member.
4069         (lto_symtab_merge): Do not merge cgraph nodes here.
4070         (lto_symtab_resolve_can_prevail_p): Simplify.
4071         (lto_symtab_resolve_symbols): Store cgraph node.
4072         (lto_symtab_merge_decls_1): Simplify.  Do not drop non-prevailing
4073         functions from the symtab.
4074         (lto_symtab_merge_cgraph_nodes_1): New function.
4075         (lto_symtab_merge_cgraph_nodes): Likewise.
4076
4077 2009-10-22  Richard Guenther  <rguenther@suse.de>
4078
4079         PR lto/41791
4080         * lto-streamer-out.c (lto_output_location): Stream the
4081         system header flag.
4082         * lto-streamer-in.c (lto_input_location): Likewise.
4083
4084 2009-10-22  Razya Ladelsky  <razya@il.ibm.com>
4085
4086         * cfgloopmanip.c (duplicate_subloops): Export.
4087         * tree-parloops.c (loop_parallel_p): Dump if loop is innermost.
4088         (transform_to_exit_first_loop): Duplicate bbs starting from
4089         header up to loop->latch instead of exit->src.
4090         Initialize control variable to the correct number of iterations.
4091         (gather_scalar_reductions): Do not register double reductions.
4092         (parallelize_loops): Dump which loop is tested.
4093         Indicate whether the parallelized loop is inner or not.
4094         Remove the innermost-loop requirement.
4095         * cfgloop.h (duplicate_subloops): Export.
4096         * tree-cfg.c (add_phi_args_after_redirect): New function.
4097         (gimple_duplicate_sese_tail): Remove the no-subloops constraint.
4098         Call duplicate_subloops.
4099         Update number of iterations at the exit condition.
4100         Don't redirect nexits always to the loop exit.
4101         Redirect copied edges from latch to the loop exit.
4102
4103 2009-10-22  Jan Hubicka  <jh@suse.cz>
4104
4105         * ipa-cp.c (ipcp_read_summary): Remove now invalid FIXME and
4106         flag_ltrans check.
4107         * ipa-inline.c (cgraph_mark_inline_edge,
4108         cgraph_decide_inlining_of_small_function,
4109         cgraph_decide_inlining, inline_read_summary): Disable indirect
4110         inlining for WPA for time being.
4111
4112         PR tree-optimize/40556
4113         * ipa-inline.c (cgraph_early_inlining): Fix iterations condition.
4114
4115 2009-10-22  Richard Guenther  <rguenther@suse.de>
4116
4117         * lto-streamer.h (lto_symtab_clear_resolution): Remove.
4118         * lto-symtab.c (lto_symtab_clear_resolution): Likewise.
4119
4120 2009-10-22  Jan Hubicka  <jh@suse.cz>
4121
4122         PR lto/41730
4123         * ipa-reference.c (has_proper_scope_for_analysis): Add fixme about
4124         global vars.
4125         (check_call): Handle only indirect calls.
4126         (propagate_bits): Update comment.
4127         (write_node_summary_p): Turn bogus check to assert.
4128         (ipa_reference_write_summary): Stream calls_read_all properly.
4129         (ipa_reference_read_summary): Stream in calls_read_all properly.
4130         (read_write_all_from_decl): New function.
4131         (propagate): Handle OVERWRITABLE nodes and external calls here.
4132         * ipa-pre-const.c (check_call): In IPA mode handle indirect
4133         calls only.
4134         (analyze_function): Do not check visibility here.
4135         (add_new_function): We summary OVERWRITABLE too.
4136         (generate_summary): Stream OVERWRITABLE nodes too.
4137         (propagate): Handle external calls and OVERWRITABLE nodes here.
4138         (local_pure_const): Check visibility here.
4139
4140 2009-10-22  Jan Hubicka  <jh@suse.cz>
4141
4142         * ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
4143         (pass_ipa_cp): Register them.
4144         (ipcp_init_stage): Analyze all functions for whopr/lto.
4145         (ipcp_propagate_stage): Skip external calls.
4146         (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
4147         * ipa-reference.c (write_node_summary_p): Fix thinko about
4148         availability.
4149         * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
4150         when in ltrans, skip executing of ipa passes since everything
4151         should've been done.
4152         * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
4153         (inline_generate_summary): Likewise.
4154         (inline_read_summary): New function.
4155         (inline_write_summary): New function.
4156         (pass_ipa_inline): Register new hooks.
4157         * ipa-prop.c: Inlcude lto-streamer.h
4158         (ipa_edge_args_vector): Update declaration.
4159         (ipa_count_arguments, ipa_compute_jump_functions,
4160         ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
4161         (ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
4162         ipa_read_node_info): New static functions.
4163         (ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
4164         (duplicate_array): Use xmalloc.
4165         (duplicate_ggc_array): New.
4166         (ipa_edge_duplication_hook): Use it.
4167         (ipa_update_after_lto_read): New function.
4168         * ipa-prop.h (ipa_prop_write_jump_functions,
4169         ipa_prop_read_jump_functions): Declare.
4170         (ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
4171         jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
4172         (ipa_edge_args_vector): Move into GGC.
4173         (ipa_check_create_edge_args): Update.
4174         (ipa_update_after_lto_read): New.
4175         * passes.c (ipa_write_summaries_1): When in wpa, do not write
4176         summaries.
4177         (ipa_read_summaries): When in ltrans, so not read summaries.
4178         * lto-streamer.c (lto_get_section_name): Add
4179         LTO_section_jump_functions.
4180         * lto-streamer.h (LTO_section_jump_functions): New section.
4181         (produce_asm): Declare.
4182         * lto-cgraph.c (output_cgraph): Output edges in reverse order.
4183         * lto-streamer-out.c (produce_asm): Export.
4184         * lto-streamer-in.c: Include tree-pass.h
4185         (input_function): Free dominance info when done.
4186         (lto_read_body): Push ipa_inline in ltrans stage.
4187         * gengtype.c (open_base_files): Add ipa-prop.h into includes.
4188         * Makefile.in (GTFILES): Add ipa-prop.h
4189
4190 2009-10-22  Matthias Klose  <doko@ubuntu.com>
4191
4192         * doc/install.texi: Document --enable-browser-plugin.
4193
4194 2009-10-21  Vladimir Makarov  <vmakarov@redhat.com>
4195
4196         * doc/invoke.texi (fira-loop-pressure): Update default value.
4197         * opts.c (decode_options): Remove default value setting for
4198         flag_ira_loop_pressure.
4199         * config/ia64/ia64.c (ia64_override_options): Set
4200         flag_ira_loop_pressure up for -O3.
4201         * config/rs6000/rs6000.c (rs6000_override_options): Ditto.
4202
4203 2009-10-21  Sebastian Pop  <sebastian.pop@amd.com>
4204
4205         PR tree-optimization/41497
4206         * tree-scalar-evolution.c (analyze_evolution_in_loop): Return
4207         chrec_dont_know if the evolution function returned by follow_ssa_edge
4208         is constant in the analyzed loop and is not compatible with the
4209         initial value before the loop.
4210         * tree-chrec.h (no_evolution_in_loop_p): Call STRIP_NOPS.
4211
4212 2009-10-21  Joseph Myers  <joseph@codesourcery.com>
4213
4214         * config/sh/sh.c (nonpic_symbol_mentioned_p): Allow UNSPEC_TPOFF.
4215
4216 2009-10-21  Jakub Jelinek  <jakub@redhat.com>
4217
4218         PR other/25507
4219         * doc/invoke.texi: Document -print-multi-os-directory.
4220
4221 2009-10-21  Jack Howarth  <howarth@bromo.med.uc.edu>
4222
4223         PR c++/41313
4224         * gcc/config/darwin10.h: Use default_emit_unwind_label.
4225         * gcc/config/darwin.c: Disable -freorder-blocks-and-partition
4226         when darwin_emit_unwind_label is used.
4227
4228 2009-10-21  Eric Botcazou  <ebotcazou@adacore.com>
4229
4230         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Tweak
4231         order of checks.
4232
4233 2009-10-20  Richard Henderson  <rth@redhat.com>
4234
4235         * tree-eh.c (lower_try_finally_copy): Do lower_eh_constructs_1
4236         before emit_post_landing_pad.
4237
4238 2009-10-20  Adam Nemet  <anemet@caviumnetworks.com>
4239
4240         * config/mips/mips.c (mips_binary_cost): Add new argument speed.
4241         Use when calling rtx_costs.
4242         (mips_rtx_costs): Fix formatting.  Use argument speed rather than the
4243         global optimize_size.  Pass speed to mips_binary_cost.
4244
4245 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4246
4247         * config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
4248         of TREE_CONSTANT.
4249
4250 2009-10-20  Richard Sandiford  <rdsandiford@googlemail.com>
4251
4252         * rtl.h (simplify_replace_fn_rtx): Declare.
4253         (wrap_constant, unwrap_constant): Delete.
4254         * cfgexpand.c (unwrap_constant, wrap_constant): Delete.
4255         (expand_debug_expr): Don't call wrap_constant.
4256         * combine.c (rtx_subst_pair): Only define for AUTO_INC_DEC.
4257         (auto_adjust_pair): Fold into...
4258         (propagate_for_debug_subst): ...here.  Only define for AUTO_INC_DEC.
4259         Just return a new value.
4260         (propagate_for_debug): Use simplify_replace_fn_rtx for AUTO_INC_DEC,
4261         otherwise use simplify_replace_rtx.
4262         * cselib.c (wrap_constant): Reinstate old definition.
4263         (cselib_expand_value_rtx_1): Don't wrap constants.
4264         * gcse.c (try_replace_reg): Don't use copy_rtx in the call to
4265         simplify_replace_rtx.
4266         (bypass_block): Fix formatting in calls to simplify_replace_rtx.
4267         * reload1.c (reload): Skip all uses for an insn before adjusting it.
4268         Use simplify_replace_rtx.
4269         * simplify-rtx.c (simplify_replace_fn_rtx): New function,
4270         adapted from...
4271         (simplify_replace_rtx): ...here.  Turn into a wrapper for
4272         simplify_replace_fn_rtx.
4273         (simplify_unary_operation): Don't unwrap CONSTs.
4274         * var-tracking.c (check_wrap_constant): Delete.
4275         (vt_expand_loc_callback): Don't call it.
4276         (vt_expand_loc): Likewise.
4277
4278 2009-10-20  Pascal Obry  <obry@adacore.com>
4279             Eric Botcazou  <ebotcazou@adacore.com>
4280
4281         * config/i386/cygming.h (DWARF_FRAME_REGNUM): Add enclosing parens.
4282
4283 2009-10-20  Michael Matz  <matz@suse.de>
4284
4285         * loop-invariant.c (create_new_invariant): Use different magic number.
4286
4287 2009-10-20  Richard Earnshaw  <rearnsha@arm.com>
4288
4289         PR target/39247
4290         * arm.c (arm_override_options): Forcibly disable hot/cold block
4291         partitioning.
4292
4293 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4294
4295         PR debug/41739
4296         * haifa-sched.c (try_ready): Skip debug deps updating speculation
4297         status.
4298
4299 2009-10-20  Richard Guenther  <rguenther@suse.de>
4300
4301         * ggc-page.c: Include cfgloop.h.
4302         (struct max_alignment): Drop long double, add void *.
4303         (extra_order_size_table): Add low non-power-of-two multiples
4304         of MAX_ALIGNMENT.  Drop small type-based entries, add
4305         tree_type, cgraph_node and loop.
4306         * alloc-pool.c (struct allocation_object_def): Drop long double
4307         aligning element.
4308
4309 2009-10-20  Jakub Jelinek  <jakub@redhat.com>
4310
4311         PR debug/41340
4312         * loop-invariant.c (calculate_loop_reg_pressure): Don't count regs
4313         referenced just in DEBUG_INSNs.
4314
4315 2009-10-20  Richard Guenther  <rguenther@suse.de>
4316
4317         PR lto/41761
4318         * gimple.c (gimple_register_type): Make sure we register
4319         the types main variant first.
4320
4321 2009-10-20  Richard Guenther  <rguenther@suse.de>
4322
4323         * gimple.c (gimple_types_compatible_p): Simplify.  Move
4324         cheap checks before hashtable queries.  Add checks for
4325         TYPE_NONALIASED_COMPONENT and DECL_NONADDRESSABLE_P.
4326
4327 2009-10-20  Eric Botcazou  <ebotcazou@adacore.com>
4328
4329         * tree-sra.c (build_ref_for_offset_1) <RECORD_TYPE>: Skip fields
4330         without size or with size that can't be represented as a host integer.
4331
4332 2009-10-20  Alexandre Oliva  <aoliva@redhat.com>
4333
4334         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
4335         the removal of a debug stmt as a significant change.
4336
4337 2009-10-20  Wolfgang Gellerich  <gellerich@de.ibm.com>
4338
4339         * config/s390/s390.md: Added agen condition to operand
4340         forwarding bypasses.  Added bypass for early address generation
4341         use of int results.  Updated comments.
4342
4343 2009-10-20  Stefan Dösinger  <stefan@codeweavers.com>
4344
4345         * config/i386/i386.c: Remove signal.h #include.
4346
4347 2009-10-20  Jie Zhang  <jie.zhang@analog.com>
4348
4349         * simplify-rtx.c (simplify_const_unary_operation): Handle SS_ABS.
4350         * doc/rtl.texi: Document ss_abs.
4351
4352 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4353
4354         * c-common.c (c_parse_error): Handle CPP_UTF8STRING.
4355         * c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
4356         instead of C_LEX_RAW_STRINGS.
4357         (lex_string): Handle CPP_UTF8STRING.
4358         * c-parser.c (c_parser_postfix_expression): Likewise.
4359         * c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
4360         (C_LEX_STRING_NO_JOIN): ... this.
4361
4362 2009-10-19  Anatoly Sokolov  <aesok@post.ru>
4363
4364         * config/cris/cris.c (cris_function_value, cris_libcall_value,
4365         cris_function_value_regno_p): New functions.
4366         (cris_promote_function_mode): Update comment.
4367         (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare.
4368         * config/cris/cris.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove.
4369         (FUNCTION_VALUE_REGNO_P): Redefine, use cris_function_value_regno_p.
4370         * config/cris/cris-protos.h (cris_function_value_regno_p): Declare.
4371
4372 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4373
4374         * unwind-dw2.c (execute_stack_op): Fix operand order for
4375         DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
4376
4377 2009-10-19  Eric Botcazou  <ebotcazou@adacore.com>
4378
4379         * gimple-low.c (struct lower_data): Add cannot_fallthru field.
4380         (lower_stmt) <GIMPLE_BIND>: Add comment.
4381         <GIMPLE_COND, GIMPLE_GOTO, GIMPLE_SWITCH>: Set cannot_fallthru to true
4382         and return.
4383         <GIMPLE_RETURN>: Remove the statement if cannot_fallthru is set.
4384         Otherwise lower it and set cannot_fallthru to true.
4385         <GIMPLE_TRY>: Update cannot_fallthru for GIMPLE_TRY_FINALLY and return.
4386         <GIMPLE_CATCH, GIMPLE_EH_FILTER>: Set cannot_fallthru to false.
4387         <GIMPLE_CALL>: Set cannot_fallthru to false for BUILT_IN_SETJMP and
4388         to true for a noreturn call.  Do not remove statements.
4389         <GIMPLE_OMP_PARALLEL, GIMPLE_OMP_TASK>: Set cannot_fallthru to false.
4390         Set cannot_fallthru to false on function exit.
4391         (gimple_stmt_may_fallthru) <GIMPLE_SWITCH>: Really return false.
4392         <GIMPLE_ASSIGN>: Remove.
4393
4394 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4395
4396         * config/s390/s390.c (s390_z10_optimize_cmp): Don't touch FP compares.
4397
4398 2009-10-19  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4399
4400         * config/s390/s390.c (s390_z10_optimize_cmp): Use
4401         next/prev_active_insn to skip DEBUG_INSNs as well.
4402
4403 2009-10-19  Joseph Myers  <joseph@codesourcery.com>
4404
4405         * config/arm/arm.c (output_move_neon): Use DImode in call to
4406         adjust_address.
4407
4408 2009-10-19  Matthias Klose  <doko@ubuntu.com>
4409
4410         PR target/40134
4411         * config.gcc (arm*-*-linux-*eabi): Use config/t-slibgcc-libgcc.
4412
4413 2009-10-19  Jakub Jelinek  <jakub@redhat.com>
4414
4415         * cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM op0.
4416
4417 2009-10-17  Andy Hutchinson  <hutchinsonandy@gcc.gnu.org>
4418
4419         PR middle-end/41738
4420         * optabs.c (expand_binop): Make mode of shift count expression mode
4421         of shift count not target.
4422         Remove indent nit.
4423
4424 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4425
4426         * tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
4427         case.  Force using values to replace references within the statement.
4428         (convert_local_reference_stmt): Likewise.
4429
4430 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4431
4432         * gimple-low.c (lower_stmt) <GIMPLE_CALL>: If the call is noreturn,
4433         remove a subsequent GOTO or RETURN statement.
4434
4435 2009-10-17  Andy Hutchinson  <hutchinsonandy@aim.com>
4436
4437         * config/avr.md (*movqi): Add zero as equally preferable constraint
4438         as general register.
4439         (*movhi): Ditto.
4440
4441 2009-10-17  Eric Botcazou  <ebotcazou@adacore.com>
4442
4443         * print-tree.c (print_node): Fix string for DECL_STRUCT_FUNCTION.
4444
4445 2009-10-17  Richard Guenther  <rguenther@suse.de>
4446
4447         * lto-streamer-in.c (lto_input_location): Try to reuse previous maps.
4448
4449 2009-10-17  Richard Guenther  <rguenther@suse.de>
4450
4451         * lto-streamer-in.c (input_gimple_stmt): Fixup FIELD_DECL
4452         operands in COMPONENT_REFs.
4453
4454 2009-10-17  Anatoly Sokolov  <aesok@post.ru>
4455
4456         * targhooks.c (default_libcall_value): Don't use LIBCALL_VALUE macro
4457         if not defined. Change type of second argument to const_rtx.
4458         (default_function_value): Call gcc_unreachable if FUNCTION_VALUE
4459         macro not defined.
4460         * targhooks.h (default_libcall_value): Update prototype.
4461         * target.h (struct gcc_target): Change type of second argument of
4462         libcall_value to const_rtx.
4463         * config/arm/arm.c (arm_libcall_value): Change type of second argument
4464         to const_rtx.
4465         (arm_libcall_uses_aapcs_base): Change type of argument to const_rtx.
4466         * doc/tm.texi (TARGET_LIBCALL_VALUE):  Revise documentation.
4467
4468 2009-10-17  Jakub Jelinek  <jakub@redhat.com>
4469
4470         PR debug/40521
4471         * debug.h (struct gcc_debug_hooks): Add assembly_start hook.
4472         * cgraphunit.c (cgraph_optimize): Call it.
4473         * dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
4474         (dwarf2out_assembly_start): ... here.  New hook.
4475         (dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
4476         * debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
4477         hook.
4478         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
4479         * sdbout.c (sdb_debug_hooks): Likewise.
4480         * vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
4481         (vmsdbgout_assembly_start): New hook.
4482
4483 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4484
4485         * rtl.h (RTL_LOCATION): Fix typo.
4486
4487 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4488
4489         * print-rtl.c (print_rtx): Print locators in asm_operands
4490         and asm_input.
4491
4492 2009-10-17  Alexandre Oliva  <aoliva@redhat.com>
4493
4494         PR debug/41535
4495         * sched-deps.c (depl_on_debug_p): New.
4496         (attach_dep_link): Reject debug deps before nondebug deps.
4497         (add_to_deps_list): Insert debug deps after nondebug deps.
4498         (sd_lists_empty_p): Stop at first nonempty list.  Disregard debug
4499         deps.
4500         (sd_add_dep): Do not reject debug deps.
4501         (add_insn_mem_dependence): Don't count debug deps.
4502         (remove_from_deps): Likewise.
4503         (sched_analyze_2): Set up mem deps on debug insns.
4504         (sched_analyze_insn): Record reg uses for deps on debug insns.
4505         * haifa-sched.c (schedule_insn): Reset deferred debug insn.  Don't
4506         try_ready nondebug insn after debug insn.
4507         * ddg.c (create_ddg_dep_from_intra_loop_link,
4508         create_ddg_dep_no_link): Don't reject debug deps.
4509
4510 2009-10-16  Richard Guenther  <rguenther@suse.de>
4511
4512         * lto-symtab.c (merge_incomplete_and_complete_type): Remove.
4513         (maybe_merge_incomplete_and_complete_type): Likewise.
4514         (lto_symtab_merge): Do not call them.  Do not warn for
4515         complete vs. incomplete compatible types.
4516         (lto_symtab_merge_decls_2): Simplify.
4517         * gimple.c (gimple_force_type_merge): Remove.
4518         (gimple_types_compatible_p): Make it static.
4519         * gimple.h (gimple_force_type_merge): Remove.
4520         (gimple_types_compatible_p): Likewise.
4521
4522 2009-10-16  Jakub Jelinek  <jakub@redhat.com>
4523
4524         * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTRACT>: Cast
4525         DWARF2_ADDR_SIZE to int to avoid signed vs. unsigned warnings.
4526
4527 2009-10-16  Richard Guenther  <rguenther@suse.de>
4528
4529         PR tree-optimization/41728
4530         * tree-ssa-dom.c (optimize_stmt): Mark the stmt modified
4531         if fold_stmt did anything.
4532
4533 2009-10-16  Richard Guenther  <rguenther@suse.de>
4534
4535         PR lto/41715
4536         * lto-streamer-in.c (lto_input_tree_ref): Revert last change.
4537         (maybe_fixup_handled_component): New function.
4538         (input_gimple_stmt): Fixup mismatched decl replacements.
4539
4540 2009-10-16  Richard Guenther  <rguenther@suse.de>
4541
4542         PR lto/41713
4543         * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
4544         the same as VAR_DECL.
4545
4546 2009-10-16  Richard Guenther  <rguenther@suse.de>
4547
4548         * gimple.c (iterative_hash_gimple_type): For integer types
4549         also hash their minimum and maximum values and the string flag.
4550         For array types hash their domain and the string flag.
4551
4552 2009-10-16  Richard Guenther  <rguenther@suse.de>
4553
4554         * gimple.c (gimple_types_compatible_p): Restrict completing
4555         types to record or unions.  Simplify completion.
4556         Do not merge records or unions with different
4557         TYPE_STRUCTURAL_EQUALITY_P tag.
4558         (iterative_hash_gimple_type): Restrict non-recursing into
4559         pointer targets for records and unions.
4560
4561 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4562
4563         PR debug/41717
4564         * cfgexpand.c (expand_debug_expr): Handle CONJ_EXPR.
4565         * dwarf2out.c (mem_loc_descriptor): Don't handle
4566         POST_INT/POST_DEC/POST_MODIFY like SUBREG.  For SUBREG
4567         punt if it is not lowpart subreg or if inner mode isn't
4568         MODE_INT.
4569
4570 2009-10-16  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4571
4572         * config/s390/s390.c (s390_z10_optimize_cmp): Skip notes when
4573         investigating previous or next insns.
4574
4575 2009-10-16  Eric Botcazou  <ebotcazou@adacore.com>
4576
4577         * tree-sra.c (build_ref_for_offset_1): Update comment.
4578
4579 2009-10-16  Wolfgang Gellerich  <gellerich@de.ibm.com>
4580
4581         * config/s390/s390.md (atype): Added missing values.
4582
4583 2009-10-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4584
4585         PR target/41702
4586         * pa.md (casesi): Use sign extended index in call to gen_casesi64p.
4587         (casesi64p): Update pattern to reflect above.
4588
4589 2009-10-15  Steve Ellcey  <sje@cup.hp.com>
4590
4591         PR rtl-optimization/41697
4592         * sel-sched-ir.h (_eligible_successor_edge_p): Check successor count.
4593
4594 2009-10-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
4595
4596         PR target/23983
4597         * config/rs6000/predicates.md: Update copyright year.
4598         * config/rs6000/altivec.md: Ditto.
4599
4600         * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def.
4601         (MD_INCLUDES): Add a2.md.
4602
4603         * config/rs6000/rs6000.c (rs6000_builtin_decls): Change
4604         RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS.
4605         (builtin_classify): New static vector to classify various builtins
4606         to get the tree attributes correct.
4607         (def_builtin): Set the attributes of builtins based on what the
4608         builtin does (i.e. memory operation, floating point, saturation
4609         need special attributes, others are pure functions).
4610
4611         * config/rs6000/rs6000.h (enum rs6000_btc): New enum to classify
4612         the builtins.
4613         (enum rs6000_builtins): Include rs6000-builtin.def to define the
4614         builtins.  Change the end marker to MAX_RS6000_BUILTINS from
4615         RS6000_BUILTIN_COUNT.
4616         (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to
4617         MAX_RS6000_BUILTINS.
4618
4619         * config/rs6000/rs6000-builtin.def: New file that combines the
4620         builtin enumeration name and attributes.
4621
4622 2009-10-15  H.J. Lu  <hongjiu.lu@intel.com>
4623
4624         * config/i386/linux.h (ASM_SPEC): Add --32.
4625
4626 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4627
4628         * dwarf2out.c (dwarf_tag_name): Handle DW_TAG_rvalue_reference_type
4629         and DW_TAG_template_alias.
4630         (dwarf_attr_name): Handle DW_AT_main_subprogram,
4631         DW_AT_data_bit_offset, DW_AT_const_expr, DW_AT_enum_class,
4632         DW_AT_linkage_name, DW_AT_GNU_guarded_by, DW_AT_GNU_pt_guarded_by,
4633         DW_AT_GNU_guarded, DW_AT_GNU_pt_guarded, DW_AT_GNU_locks_excluded,
4634         DW_AT_GNU_exclusive_locks_required, DW_AT_GNU_shared_locks_required
4635         and DW_AT_GNU_odr_signature.
4636         (dwarf_form_name): Handle DW_FORM_sec_offset, DW_FORM_exprloc,
4637         DW_FORM_flag_present and DW_FORM_ref_sig8.
4638         (output_signature): Only print name on the first byte.
4639         (output_die): Likewise for dw_val_class_data8.
4640
4641 2009-10-15  Alexander Monakov  <amonakov@ispras.ru>
4642
4643         * doc/invoke.texi: Clarify that most optimizations are not enabled
4644         without -O.
4645
4646 2009-10-15  Richard Guenther  <rguenther@suse.de>
4647
4648         PR lto/41668
4649         * gimple.c (compare_type_names_p): Handle anonymous names
4650         differently based on new mode argument.
4651         (gimple_types_compatible_p): For structs also compare the tags.
4652         (iterative_hash_type_name): Rename to ...
4653         (iterative_hash_name): ... this.  Hash all names.
4654         (iterative_hash_gimple_type): Fix hashing the struct tag of
4655         pointer targets.  Hash field decl names.
4656
4657 2009-10-15  Richard Guenther  <rguenther@suse.de>
4658
4659         PR lto/41669
4660         * gimple.c (gimple_get_alias_set): Avoid recursing on
4661         invalid type topology.
4662
4663 2009-10-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4664
4665         * config/spu/spu.c (get_branch_target): Use extract_asm_operands.
4666
4667 2009-10-15  Richard Guenther  <rguenther@suse.de>
4668
4669         * tree.c (free_lang_data_in_decl): Free DECL_FCONTEXT.
4670
4671 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
4672
4673         * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Don't
4674         add --with-tune{,-32,-64} configured default for -mtune if explicit
4675         -mcpu is used.
4676
4677 2009-10-14  Daniel Gutson  <dgutson@codesourcery.com>
4678
4679         * config/arm/neon.md (neon_vshll_n<mode>): Checking Bounds fixed.
4680
4681 2009-10-14  DJ Delorie  <dj@redhat.com>
4682
4683         * config/h8300/h8300.c (F): New.
4684         (Fpa): New.
4685         (h8300_emit_stack_adjustment): Call them.
4686         (push): Likewise.
4687         (h8300_push_pop): Likewise.
4688         (h8300_expand_prologue): Likewise.
4689         * config/h8300/h8300.h (DWARF2_DEBUGGING_INFO): Define.
4690         (MUST_USE_SJLJ_EXCEPTIONS): Define.
4691         (INCOMING_RETURN_ADDR_RTX): Define.
4692         (INCOMING_FRAME_SP_OFFSET): Define.
4693         (DWARF_CIE_DATA_ALIGNMENT): Define.
4694
4695 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4696
4697         * stor-layout.c (place_field): Don't emit -Wpadded warnings for
4698         fields in builtin structs.
4699         (finalize_record_size): Likewise.
4700
4701 2009-10-14  Richard Guenther  <rguenther@suse.de>
4702
4703         * gimple.c (gtc_ob): New global.
4704         (struct type_pair_d): Replace pointers with type UIDs.
4705         (type_pair_hash): Adjust.
4706         (type_pair_eq): Likewise.
4707         (lookup_type_pair): Likewise.  Allocate from an obstack.
4708         (gimple_force_type_merge): Adjust.
4709         (gimple_types_compatible_p): Likewise.
4710         (free_gimple_type_tables): Free the obstack.
4711
4712 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4713
4714         * tree-parloops.c (separate_decls_in_region_debug_bind): Drop debug
4715         stmts setting DEBUG_EXPR_DECLs.
4716
4717         * cfgexpand.c (expand_debug_expr): Ignore zero-length bitfields.
4718         Don't crash if mode1 is VOIDmode.
4719
4720 2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
4721
4722         * params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
4723         * params.h (IRA_LOOP_RESERVED_REGS): New.
4724         * tree-pass.h (pass_subregs_of_mode_init,
4725         pass_subregs_of_mode_finish): Remove.
4726         * passes.c (pass_subregs_of_mode_init,
4727         pass_subregs_of_mode_finish): Remove.
4728         (pass_reginfo_init): Move before loop optimizations.
4729         * config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
4730         * common.opt (fira-loop-pressure): New.
4731         * toplev.h (flag_ira_loop_pressure): New.
4732         * rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New externals.
4733         * reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
4734         Make external and void type functions.
4735         (gate_subregs_of_mode_init, pass_subregs_of_mode_init,
4736         pass_subregs_of_mode_finish): Remove.
4737         * ira-costs.c (init_costs): Call init_subregs_of_mode.
4738         * regmove.c: Include ira.h.
4739         (regmove_optimize): Call ira_set_pseudo_classes after IRA based
4740         register pressure calculation in loops.
4741         * loop-invariant.c: Include REGS_H and ira.h.
4742         (struct loop_data): New members max_reg_pressure, regs_ref, and
4743         regs_live.
4744         (struct invariant): New member orig_regno.
4745         (curr_loop): New variable.
4746         (find_exits): Initialize regs_ref and regs_live.
4747         (create_new_invariant): Initialize orig_regno.
4748         (get_cover_class_and_nregs): New.
4749         (get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
4750         array.  Add code for flag_ira_loop_pressure.
4751         (gain_for_invariant): Make new_regs an array.  Add code for
4752         flag_ira_loop_pressure.
4753         (best_gain_for_invariant): Ditto.
4754         (set_move_mark): New parameter gain.  Use it for debugging output.
4755         (find_invariants_to_move): Make regs_needed and new_regs an array.
4756         Add code for flag_ira_loop_pressure.
4757         (move_invariant_reg): Set up orig_regno.
4758         (move_invariants): Set up reg classes for pseudos for
4759         flag_ira_loop_pressure.
4760         (free_loop_data): Clear regs_ref and regs_live.
4761         (curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
4762         get_regno_cover_class, change_pressure, mark_regno_live,
4763         mark_regno_death, mark_reg_store, mark_reg_clobber,
4764         mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
4765         (move_loop_invariants): Calculate pressure.  Initialize curr_loop.
4766         * ira.c (ira): Call ira_set_pseudo_classes after IRA based
4767         register pressure calculation in loops if new regs were added.
4768         Call finish_subregs_of_mode.
4769         * opts.c (decode_options): Set up flag_ira_loop_pressure.
4770         * Makefile.in (loop-invariant.o): Add ira.h.
4771         (regmove.o): Ditto.
4772         * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
4773         Describe.
4774         * doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
4775
4776 2009-10-14  Richard Guenther  <rguenther@suse.de>
4777
4778         * lto-symtab.c (lto_symtab_compatible): Fold in ...
4779         (lto_symtab_merge): ... here.  Rewrite both to take the
4780         prevailing and a to-be-merged entry and to queue diagnostics properly.
4781         (lto_symtab_resolve_replaceable_p): New predicate for
4782         symbol resolution.
4783         (lto_symtab_resolve_can_prevail_p): Likewise.
4784         (lto_symtab_resolve_symbols): Rewrite.  Fold in code that
4785         handles merging commons by choosing the largest decl.  Fold
4786         in code that gives ODR errors.
4787         (lto_symtab_merge_decls_2): Simplify a lot.  Emit queued
4788         diagnostics here.
4789         (lto_symtab_merge_decls_1): Re-structure.  Deal with the
4790         case of no prevailing decl here.  Diagnose mismatches
4791         in object types here.  Drop all but the prevailing decls.
4792         (lto_symtab_prevailing_decl): Return the single prevailing decl.
4793         * lto-streamer-in.c (lto_input_tree_ref): Deal with
4794         VIEW_CONVERT_EXPRs in decl slots.  Unshare the tree in this case.
4795
4796 2009-10-14  Richard Guenther  <rguenther@suse.de>
4797
4798         PR lto/41521
4799         * lto-streamer-in.c (input_bb): Replace debug stmts with
4800         nops instead of dropping them.
4801
4802 2009-10-14  Nick Clifton  <nickc@redhat.com>
4803
4804         * gcc/doc/extended.texi: Replace the dash character with @minus{}
4805         in situations where it is being used as a minus symbol.
4806         * gcc/doc/tm.texi: Likewise.
4807         * gcc/doc/md.texi: Likewise.
4808
4809 2009-10-14  Jakub Jelinek  <jakub@redhat.com>
4810
4811         PR preprocessor/41543
4812         * input.h (BUILTINS_LOCATION): Change to 1 from 2.
4813         Assert BUILTINS_LOCATION < RESERVED_LOCATION_COUNT.
4814         * tree.c: Include intl.h.
4815         (expand_location): Handle BUILTINS_LOCATION.
4816         * Makefile.in (tree.o): Depend on intl.h.
4817
4818         PR debug/41695
4819         * dwarf2out.c (dwarf2out_var_location): Always clear
4820         last_postcall_label when changing last_label.
4821
4822 2009-10-14  Pascal Obry  <obry@adacore.com>
4823
4824         * gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Add -E.
4825         (process_command): Handle -E as done with -c and -S.  Do not add
4826         the target executable suffix to the output file when -E is used.
4827         (main): Adjust error message accordingly.
4828
4829 2009-10-14  Alexandre Oliva  <aoliva@redhat.com>
4830
4831         PR debug/41343
4832         PR debug/41447
4833         PR debug/41264
4834         PR debug/41338
4835         * tree.c (tree_node_structure_for_code): DEBUG_EXPR_DECL uses
4836         decl with rtl.
4837         (tree_code_size): Likewise.
4838
4839 2009-10-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4840
4841         * builtins.c (fold_builtin_1): Support complex "arc" functions.
4842         * real.h (HAVE_mpc_arc): Define.
4843
4844 2009-10-14  Kaz Kojima  <kkojima@gcc.gnu.org>
4845
4846         * config/sh/sh.c (TARGET_BUILTIN_DECL): Define.
4847         (struct builtin_description): Add fndecl field.
4848         (bdesc): Remove const qualifier.  Update initializer.
4849         (sh_media_init_builtins): Remove const qualifier for d.  Record
4850         the result of add_builtin_function to the fndecl field.
4851         (sh_builtin_decl): New.
4852         (sh_media_builtin_decl): New.
4853
4854 2009-10-14  Hans-Peter Nilsson  <hp@axis.com>
4855
4856         PR target/38948
4857         * config/cris/cris.h (SECONDARY_RELOAD_CLASS): Handle reload
4858         requests between special registers.
4859
4860 2009-10-13  Eric Botcazou  <ebotcazou@adacore.com>
4861
4862         * dwarf2out.c (mem_loc_descriptor): Accept UNGT as well.
4863
4864 2009-10-13  Richard Henderson  <rth@redhat.com>
4865
4866         PR tree-optimization/41377
4867         * tree-eh.c (unsplit_eh): Propagate degenerate PHIs.
4868         (cleanup_empty_eh_merge_phis): New change_region parameter;
4869         pass it on to redirect_eh_edge_1.  Update callers.
4870         (cleanup_empty_eh_unsplit): Don't require an existing EH label
4871         at the destination block.
4872
4873 2009-10-13  Basile Starynkevitch  <basile@starynkevitch.net>
4874
4875         * passes.c (register_pass): Replaced gcc_unreachable by
4876         fatal_error on failure. Mentions plugins in comments & messages.
4877
4878 2009-10-13  Jakub Jelinek  <jakub@redhat.com>
4879
4880         PR target/41693
4881         * rtl.h (DEBUG_EXPR_TREE_DECL): Define.
4882         * sched-vis.c (print_value): Use it.
4883         * cselib.c (cselib_hash_rtx): Likewise.
4884         * print-rtl.c (print_rtx): Likewise.
4885         * cfgexpand.c (expand_debug_rtx): Likewise.
4886         * var-tracking.c (vt_expand_loc_callback): Likewise.
4887
4888 2009-10-13  Richard Guenther  <rguenther@suse.de>
4889
4890         PR lto/41565
4891         * opts.c (handle_option): Split out code to handle setting
4892         the options flag var ...
4893         (set_option): ... here.
4894         * opts.h (set_option): Declare.
4895         * lto-opts.c (register_user_option_p): Include -fexceptions
4896         and all position independent code variants.
4897         (handle_common_option): Remove.
4898         (lto_reissue_options): Use set_option.
4899
4900 2009-10-13  Martin Jambor  <mjambor@suse.cz>
4901
4902         PR tree-optimization/41661
4903         * ipa-prop.c (compute_complex_pass_through): Allow only operations
4904         that are tcc_comparisons or do not change the type in any
4905         un-usleless way.
4906         * ipa-cp.c (ipcp_lattice_from_jfunc): Request boolean type when
4907         folding tcc_comparison operations.
4908
4909 2009-10-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
4910
4911         * config/s390/s390.c (s390_encode_section_info): Handle BLKmode
4912         properly.
4913
4914 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
4915
4916         PR debug/41343
4917         PR debug/41447
4918         PR debug/41264
4919         PR debug/41338
4920         * tree.def (DEBUG_EXPR_DECL): New.
4921         * rtl.def (DEBUG_EXPR): New.
4922         * gengtype.c (adjust_field_rtx_def): Handle it.
4923         * tree-ssa.c (propagate_var_def_into_debug_stmts): Rename to...
4924         (insert_debug_temp_for_var_def): ... this.  Drop support for
4925         moving.  Take iterator for def stmt; insert debug stmt before it.
4926         Scan early for use count and kind in debug stmts.
4927         (propagate_defs_into_debug_stmts): Rename to...
4928         (insert_debug_temps_for_defs): ... this.  Likewise.
4929         * tree.h (DEBUG_TEMP_UID): New.
4930         * tree.c (next_debug_decl_uid): New.
4931         (make_node_stat): Count debug decls separately.
4932         (copy_node_stat): Likewise.
4933         * cfgexpand.c (expand_debug_expr): Handle DEBUG_EXPR_DECL.
4934         * var-tracking.c (dv_is_decl_p): Recognize it.
4935         (VALUE_RECURSED_INTO): Apply to DEBUG_EXPRs too.
4936         (track_expr_p): Track expanded DEBUG_EXPR_DECLs.
4937         (vt_expand_loc_callback): Expand DEBUG_EXPRs.
4938         (emit_note_insn_var_location): Don't emit notes for DEBUG_EXPR_DECLs.
4939         * cselib.c (rtx_equal_for_cselib_p): Handle DEBUG_EXPR.
4940         (cselib_hash_rtx): Likewise.
4941         (cselib_expand_value_rtx_1): Use callback for DEBUG_EXPR.
4942         * tree-ssa-operands.c (get_expr_operands): Skip DEBUG_EXPR_DECLs in
4943         debug bind stmts.
4944         * emit-rtl.c (verify_rtx_sharing): Handle DEBUG_EXPR and VALUE.
4945         (copy_rtx_if_shared_1, reset_used_flags, set_used_flags): Likewise.
4946         * rtl.c (copy_rtx): Likewise.
4947         (rtx_equal_p_cb, rtx_equal_p): Handle DEBUG_EXPR.
4948         * print-rtl.c (print_rtx): Likewise.
4949         * sched-vis.c (print_value): Likewise.
4950         (print_insn): Handle DEBUG_EXPR_DECL.
4951         * tree-dump.c (dequeue_and_dump): Likewise.
4952         * tree-pretty-print.c (dump_decl_name, dump_generic_node): Likewise.
4953         * gimple-iterator (gsi_replace): Check for same lhs.
4954         (gsi_remove): Insert debug temps.
4955         * tree-ssa-loop-im.c (rewrite_reciprocal): Replace with same lhs.
4956         (move_computations_stmt): Drop explicit propagation into debug stmts.
4957         (rewrite_bittest): Likewise.  Use gsi_remove for propagation.
4958         * tree-ssa-reassoc.c (rewrite_expr_tree, linearize_expr): Likewise.
4959         * tree-ssa-sink.c (statement_sink_location): Likewise.
4960         * tree-ssa-forwprop (forward_propagate_addr_expr): Likewise.
4961         * tree-ssanames.c (release_ssa_name): Adjust for rename.
4962         * tree-flow.h: Likewise.
4963         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Don't mark
4964         debug temps without values.
4965         (eliminate_unnecessary_stmts): Don't discard just-inserted
4966         debug stmts.
4967
4968 2009-10-12  Hans-Peter Nilsson  <hp@axis.com>
4969
4970         PR target/26515
4971         * config/cris/cris.md (andu): Check that operand 1 is one of the
4972         general registers.  Fix typo in head comment.
4973
4974 2009-10-12  Stefan Dösinger  <stefan@codeweavers.com>
4975
4976         * config/i386/i386.md (vswapmov): New.
4977         * config/i386/i386.c (ix86_handle_fndecl_attribute): New.
4978         (ix86_function_ms_hook_prologue): New.
4979         (ix86_expand_prologue): Handle ms_hook_prologue attribute.
4980         * configure.ac: Test for swap suffix support in as.
4981         * configure: Rebuild.
4982
4983 2009-10-12  Jakub Jelinek  <jakub@redhat.com>
4984
4985         PR target/41680
4986         * config/i386/i386.md (split after *testqi_ext_3_rex64): Only narrow
4987         paradoxical subregs to prevent partial register stalls if the inner
4988         mode is integer mode.
4989
4990 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
4991
4992         * config/i386/i386.md (*setcc_<mode>_2): Remove insn pattern.
4993
4994 2009-10-12  Dodji Seketeli  <dodji@redhat.com>
4995
4996         PR c++/41570
4997         * gcc/dwarf2out.c (template_parameter_pack_die,
4998         gen_formal_parameter_pack_die): Use add_name_and_src_coords_attributes.
4999
5000 2009-10-12  Alexandre Oliva  <aoliva@redhat.com>
5001
5002         PR debug/41616
5003         * tree-into-ssa.c (insert_phi_nodes_for): Build debug bind stmts
5004         on updates too.
5005         (maybe_register_def): Likewise.  Take stmt iterator.
5006         (rewrite_update_stmt): Take stmt iterator and pass it on.
5007         (rewrite_update_enter_block): Pass stmt iterator.
5008
5009 2009-10-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5010
5011         * config/spu/spu.c (TARGET_BUILTIN_DECL): Define.
5012         (spu_builtin_decl): New function.
5013
5014 2009-10-12  Uros Bizjak  <ubizjak@gmail.com>
5015
5016         * config/i386/i386.md (SWIM): New mode iterator.
5017         (mov<mode>cc): Macroize expander from mov{qi,hi,si,di}cc patterns
5018         using SWIM mode iterator.
5019         (x86_mov<mode>cc_0_m1): Macroize insn from x86_mov{si,di}cc_0_m1
5020         patterns using SWI48 mode iterator.
5021         (*x86_mov<mode>cc_0_m1_se):  Macroize insn from
5022         *x86_mov{si,di}cc_0_m1_se patterns using SWI48 mode iterator.
5023         (*x86_mov<mode>cc_0_m1_neg): New insn pattern.
5024         (*mov<mode>cc_noc): Macroize insn from *mov{hi,si,di}cc_noc
5025         patterns using SWI248 mode iterator.
5026         * config/i386/i386.c (ix86_expand_int_movcc): Update the call to
5027         gen_x86_movdicc_0_m1_rex64 for renamed function
5028
5029 2009-10-11  Jose Ruiz  <ruiz@adacore.com>
5030             Eric Botcazou  <ebotcazou@adacore.com>
5031
5032         PR target/33743
5033         * config/sparc/sol2.h (MD_UNWIND_SUPPORT): Define.
5034         * config/sparc/sol2-unwind.h: New file.
5035
5036 2009-10-11  Olivier Hainque  <hainque@adacore.com>
5037             Eric Botcazou  <ebotcazou@adacore.com>
5038
5039         PR target/33743
5040         * config/i386/sol2.h (MD_UNWIND_SUPPORT): Define.
5041         * config/i386/sol2-unwind.h: New file.
5042
5043 2009-10-11  H.J. Lu  <hongjiu.lu@intel.com>
5044
5045         PR target/41665
5046         * config/i386/i386.md (addsi_1_zext): Get the proper second
5047         operand for lea.
5048
5049 2009-10-11  Richard Sandiford  <rdsandiford@googlemail.com>
5050
5051         * simplify-rtx.c (simplify_replace_rtx): Use rtx_equal_p for
5052         all OLD_RTXes, not just REGs.  Use copy_rtx to create the
5053         replacement value.
5054
5055 2009-10-11  Richard Guenther  <rguenther@suse.de>
5056
5057         * gimple.c (iterative_hash_type_name): Do not handle special
5058         anonymous names.
5059
5060 2009-10-11  Uros Bizjak  <ubizjak@gmail.com>
5061
5062         * config/i386/i386.md (*setcc_di_1): New insn_and_split pattern.
5063         (*setcc_si_1_and): Ditto.
5064         (*setcc_si_1_movzbl): Ditto.
5065         (*setcc_<mode>_2): Ditto.
5066         (*setcc_qi): Rename from *setcc_1.
5067         (*setcc_qi_slp): Rename from *setcc_2.
5068
5069         (*zero_extendqihi2_movzbw_and splitter): Use ix86_expand_clear.
5070         (*zero_extendqisi2_movzbw_and splitter): Ditto.
5071
5072         * config/i386/i386.c (ix86_expand_clear): Remove reload_completed from
5073         "if" condition, there is already assert with reload_completed present.
5074
5075 2009-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
5076
5077         * plugin.c (try_init_one_plugin): Improve constness of variable err.
5078
5079 2009-10-10  Gerald Pfeifer  <gerald@pfeifer.com>
5080
5081         * doc/install.texi (Final install): Refer to
5082         http://gcc.gnu.org/bugs/ for bug reporting.
5083
5084 2009-10-10  Peter Bergner  <bergner@vnet.ibm.com>
5085
5086         * configure.ac: Add test for dci instruction.
5087         * configure: Regenerate.
5088         * config.in: Likewise.
5089         * config.gcc: Handle --with-cpu=476 and --with-cpu=476fp.
5090         * doc/invoke.texi: Add cpu_type 476 and 476fp.
5091         (-mmulhw): Add 476 to description.
5092         (-mdlmzb): Likewise.
5093         * config/rs6000/t-fprules (MULTILIB_MATCHES_FLOAT): Include -mcpu=476.
5094         * config/rs6000/rs6000.c (processor_costs): Add ppc476_cost.
5095         (processor_target_table): Add 476 and 476fp entries.
5096         (rs6000_override_options): Use ppc476_cost for PROCESSOR_PPC476.
5097         (rs6000_issue_rate): Add CPU_PPC476.
5098         * config/rs6000/rs6000.h (ASM_CPU_476_SPEC): Define.
5099         (ASM_CPU_SPEC): Pass %(asm_cpu_476) for -mcpu=476 and -mcpu=476fp.
5100         (processor_type): Add PROCESSOR_PPC476.
5101         (EXTRA_SPECS): Add asm_cpu_476 string.
5102         * config/rs6000/rs6000.md (define_attr "type"): Add isel attribute.
5103         (define_attr "cpu"): Add ppc476.
5104         Include 476.md.
5105         Update comments for 476.
5106         (isel_signed, isel_unsigned): Change to use "isel" type attribute.
5107         * config/rs6000/vxworks.h (CPP_SPEC): Handle 464 and 476.
5108         Update copyright year.
5109         * config/rs6000/476.md: New file.
5110         * config/rs6000/40x.md: Add description for "isel" attribute.
5111         Update copyright year.
5112         * config/rs6000/440.md: Likewise.
5113         * config/rs6000/603.md: Likewise.
5114         * config/rs6000/6xx.md: Likewise.
5115         * config/rs6000/7450.md: Likewise.
5116         * config/rs6000/7xx.md: Likewise.
5117         * config/rs6000/8540.md: Likewise.
5118         * config/rs6000/cell.md: Likewise.
5119         * config/rs6000/e300c2c3.md: Likewise.
5120         * config/rs6000/e500mc.md: Likewise.
5121         * config/rs6000/mpc.md: Likewise.
5122         * config/rs6000/power4.md: Likewise.
5123         * config/rs6000/power5.md: Likewise.
5124         * config/rs6000/power6.md: Likewise.
5125         * config/rs6000/power7.md: Likewise.
5126         * config/rs6000/rios1.md: Likewise.
5127         * config/rs6000/rios2.md: Likewise.
5128         * config/rs6000/rs64.md: Likewise.
5129
5130 2009-10-10  Richard Guenther  <rguenther@suse.de>
5131
5132         PR tree-optimization/41654
5133         * tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
5134         a cond expr before calling gimple_cond_set_condition_from_tree.
5135         (ifcombine_iforif): Likewise.
5136
5137 2009-10-09  Ian Lance Taylor  <iant@google.com>
5138
5139         * configure.ac: Use AC_SEARCH_LIBS to find dlopen.
5140         * configure: Rebuild.
5141
5142 2009-10-09  Neil Vachharajani <nvachhar@google.com>
5143
5144         * doc/cpp.texi (Other Directives): Do not list #ident and #sccs as
5145         deprecated.
5146
5147 2009-10-09  Richard Guenther  <rguenther@suse.de>
5148
5149         PR lto/41638
5150         * target-def.h (TARGET_BUILTIN_DECL): Define.
5151         (TARGET_INITIALIZER): Add TARGET_BUILTIN_DECL.
5152         * target.h (struct gcc_target): Add builtin_decl target hook.
5153         * doc/tm.texi (TARGET_BUILTIN_DECL): Document.
5154         * lto-streamer-in.c (lto_get_builtin_tree): Fix handling of
5155         target builtins.
5156         * lto-streamer-out.c (lto_output_tree_pointers): Use sorry,
5157         not gcc_unreachable.
5158         (lto_output_builtin_tree): Sorry if the target does not support
5159         streaming target builtins.
5160         * config/rs6000/rs6000.c (TARGET_BUILTIN_DECL): Define.
5161         (rs6000_builtin_decl): New function.
5162         * config/i386/i386.c (TARGET_BUILTIN_DECL): Define.
5163         (ix86_builtin_decl): New function.
5164
5165 2009-10-09  Jakub Jelinek  <jakub@redhat.com>
5166
5167         PR preprocessor/41445
5168         * c-ppoutput.c (do_line_change): New function.
5169         (cb_line_change): Use it.
5170         (scan_translation_unit): Call do_line_change if
5171         avoid_paste or PREV_WHITE and token location is on a different line
5172         than print.src_line.
5173
5174         PR debug/40521
5175         * dwarf2out.c (dwarf2out_init): Test whether
5176         HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
5177         it is defined.
5178
5179         PR rtl-optimization/41646
5180         * calls.c (expand_call): For BLKmode types returned in registers
5181         avoid likely spilled hard regs in copy_blkmode_from_reg generated
5182         insns.
5183
5184 2009-10-09  Richard Guenther  <rguenther@suse.de>
5185
5186         PR tree-optimization/41634
5187         * tree-ssa-dom.c (remove_local_expressions_from_table): Assert
5188         we remove the correct elements.
5189         (optimize_stmt): Make sure to update stmt operands before
5190         optimizing redundancies.
5191
5192 2009-10-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5193
5194         * config/s390/s390.md ("prefetch"): Remove stcmh for prefetching.
5195
5196 2009-10-09  Richard Guenther  <rguenther@suse.de>
5197
5198         PR driver/41637
5199         * lto-wrapper.c (ltrans_output_file, flto_out, args_name): New
5200         globals.
5201         (lto_wrapper_exit): New function.
5202         (fatal): Use it.
5203         (fatal_perror): Likewise.
5204         (fork_execute): Use global args_name, do not free it.
5205         (run_gcc): Use global ltrans_output_file, flto_out, do not free them.
5206         * lto-streamer.h: Remove duplicate prototypes.
5207
5208 2009-10-09  Richard Guenther  <rguenther@suse.de>
5209
5210         * cgraph.c (cgraph_create_edge): Check for NULL call_stmt
5211         before calling stmt_can_throw_external.
5212
5213 2009-10-09  Eric Botcazou  <ebotcazou@adacore.com>
5214
5215         PR tree-optimization/40071
5216         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Build a ref-all
5217         pointer if the original data reference doesn't conflict with the
5218         created vector data reference.  Fix long line.
5219
5220 2009-10-09  Uros Bizjak  <ubizjak@gmail.com>
5221
5222         * config/i386/i386.md (any_div): New code iterator.
5223         (u): Handle div and udiv.
5224         (sgnprefix): Ditto.
5225         (<u>divqi3): Macroize insn from {,u}divqi3  using any_div
5226         code iterator.
5227         (lfloor<MODEF:mode><SWI48:mode>2): Macroize insn from
5228         lfloor<mode>{si,di}2 patterns using SWI48 mode iterator.
5229         (lceil<MODEF:mode><SWI48:mode>2): Macroize insn from
5230         lceil<mode>{si,di}2 patterns using SWI48 mode iterator.
5231
5232 2009-10-08  Joseph Myers  <joseph@codesourcery.com>
5233
5234         * gcc.c (main): Remove trailing "." from diagnostics.
5235
5236 2009-10-08  Cary Coutant  <ccoutant@google.com>
5237
5238         Add support for debugging with ICF (Identical Code Folding).
5239         * calls.c (debug.h): New #include.
5240         (emit_call_1): Call virtual_call_token debug hook.
5241         * common.opt (-fenable-icf-debug): New option.
5242         * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hooks (two
5243         locations in the source).
5244         (poc_label_num): New variable.
5245         (dcall_entry, vcall_entry): New typedefs.
5246         (dcall_table, vcall_table): New variables.
5247         (struct vcall_insn): New type.
5248         (vcall_insn_table): New variable.
5249         (DEBUG_DCALL_SECTION, DEBUG_VCALL_SECTION): New macros.
5250         (size_of_dcall_table): New function.
5251         (output_dcall_table): New function.
5252         (size_of_vcall_table): New function.
5253         (output_vcall_table): New function.
5254         (dwarf2out_direct_call): New function.
5255         (vcall_insn_table_hash): New function.
5256         (vcall_insn_table_eq): New function.
5257         (dwarf2out_virtual_call_token): New function.
5258         (dwarf2out_virtual_call): New function.
5259         (dwarf2out_init): Allocate new tables and sections.
5260         (prune_unused_types): Mark DIEs referenced from direct call table.
5261         (dwarf2out_finish): Output direct and virtual call tables.
5262         * final.c (final_scan_insn): Call direct_call and virtual_call
5263         debug hooks.
5264         * debug.h (struct gcc_debug_hooks): Add direct_call,
5265         virtual_call_token, virtual_call hooks.
5266         (debug_nothing_uid): New function.
5267         * debug.c (do_nothing_debug_hooks): Add dummy entries for new hooks.
5268         (debug_nothing_uid): New function.
5269         * dbxout.c (dbx_debug_hooks): Add dummy entries for new hooks.
5270         (xcoff_debug_hooks): Likewise.
5271         * sdbout.c (sdb_debug_hooks): Likewise.
5272         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
5273         * doc/invoke.texi (-fenable-icf-debug): New option.
5274
5275 2009-10-08  Alexandre Oliva  <aoliva@redhat.com>
5276
5277         PR debug/41353
5278         * regmove.c (regmove_backward_pass): Replace src with dst in the
5279         debug insn, and check for dst before rather than after.
5280
5281 2009-10-08  Janis Johnson <janis187@us.ibm.com>
5282
5283         * config/rs6000/rs6000.c (rs6000_delegitimize_address): Remove.
5284         (TARGET_DELEGITIMIZE_ADDRESS): Likewise.
5285
5286 2009-10-08  Jan Hubicka  <jh@suse.cz>
5287
5288         PR middle-end/41626
5289         * cgraphbuild.c (record_reference): When parameter DATA is NULL,
5290         do not mark cgraph nodes as needed.
5291         (record_references_in_initializer): Add new only_vars parameter.
5292         * cgraph.h (record_references_in_initializer): New parameter.
5293         * varasm.c (assemble_variable): Update call.
5294         * varpool.c (varpool_analyze_pending_decls): Always look for
5295         referenced vars.
5296
5297 2009-10-08  Anatoly Sokolov  <aesok@post.ru>
5298
5299         * config/avr/avr.c (last_insn_address) Remove variable.
5300         (expand_prologue): Don't initialise last_insn_address variable.
5301         (final_prescan_insn): Don't output insn size.
5302         * config/avr/avr.opt (msize): Remove switch.
5303         * doc/invoke.texi (AVR Options): Remove documentation of -msize
5304         switch.
5305
5306 2009-10-08  Adam Nemet  <anemet@caviumnetworks.com>
5307
5308         * combine.c (label_tick_ebb_start): Fix comment.
5309         (combine_instructions): Set label_tick and label_tick_ebb_start before
5310         calling setup_incoming_promotions.  Start them from 1.  Increment
5311         label_tick instead of deriving it from the BB index.  Rather than
5312         comparing ticks use the block from the previous iteration to decide
5313         whether to start a new EBB.  Remove empty lines before function.
5314
5315 2009-10-08  Michael Matz  <matz@suse.de>
5316
5317         PR middle-end/41573
5318         * builtins.c (fold_builtin_isascii): Use fold_build2.
5319         (fold_builtin_isdigit): Ditto.
5320         * except.c (duplicate_eh_regions_1): Tolerate NULL labels.
5321         * tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
5322         remove_useless_stmts_cond, remove_useless_stmts_tf,
5323         remove_useless_stmts_tc, remove_useless_stmts_bind,
5324         remove_useless_stmts_goto, remove_useless_stmts_label,
5325         remove_useless_stmts_1, remove_useless_stmts,
5326         pass_remove_useless_stmts): Remove.
5327         * tree-pass.h (pass_remove_useless_stmts): Don't declare.
5328         * passes.c (init_optimization_passes): Don't add
5329         pass_remove_useless_stmts.
5330         * tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
5331         * tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
5332         static constants.
5333         * lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
5334         for static constants.
5335         * lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
5336         * lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
5337
5338 2009-10-08  Richard Guenther  <rguenther@suse.de>
5339
5340         * gimple.c (free_gimple_type_tables): New function.
5341         * gimple.h (free_gimple_type_tables): Declare.
5342
5343 2009-10-07  Mark Heffernan  <meheff@google.com>
5344
5345         * ipa-prop.c (ipa_print_node_params) Only print
5346         names of named arguments.
5347
5348 2009-10-08  Rafael Avila de Espindola  <espindola@google.com>
5349
5350         * gcc.c (LINK_COMMAND_SPEC): Pass libc with -pass-through if it is
5351         being statically linked.
5352
5353 2009-10-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
5354
5355         * collect2.c (add_lto_object): Only define if OBJECT_FORMAT_NONE.
5356
5357 2009-10-08  Jan Hubicka  <jh@suse.cz>
5358
5359         PR bootstrap/41620
5360         * ipa.c (cgraph_externally_visible_p,
5361         function_and_variable_visibility,
5362         whole_program_function_and_variable_visibility): Skip non-finalized
5363         nodes.
5364
5365 2009-10-08  Nick Clifton  <nickc@redhat.com>
5366
5367         * config/mn10300/mn10300.h (CONSTANT_ADDRESS_P): Do not allow
5368         CONST_DOUBLEs.
5369
5370 2009-10-08  Andreas Tobler  <a.tobler@schweiz.org>
5371
5372         PR bootstrap/37739
5373         * config.host: Use config/x-cflags-O1 for powerpc FreeBSD.
5374
5375 2009-10-07  Joseph Myers  <joseph@codesourcery.com>
5376
5377         PR c/41182
5378         * c-common.c (c_fully_fold_internal): Strip nops from the result
5379         of recursive calls to c_fully_fold_internal.
5380         (c_wrap_maybe_const): New.
5381         (c_save_expr): Use c_wrap_maybe_const.
5382         * c-common.h (c_wrap_maybe_const): Declare.
5383         * c-typeck.c (build_conditional_expr, c_finish_stmt_expr,
5384         build_binary_op): Use c_wrap_maybe_const.
5385
5386 2009-10-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5387
5388         * real.c: Fix comment to reflect actual exponent size.
5389
5390 2009-10-08  Ben Elliston  <bje@au.ibm.com>
5391
5392         * config/rs6000/a2.md: Add FSF comment header.
5393
5394 2009-10-07  Uros Bizjak  <ubizjak@gmail.com>
5395
5396         * config/i386/i386.md (any_extend): New code iterator.
5397         (u, s): New code attributes.
5398         (sgnprefix): Ditto.
5399         (DWIH): Rewrite as code iterator for SI and DI modes.
5400         (DWI): Rewrite as mode attribute.
5401         (dwi): New mode attribute.
5402         (di): Depend on SI mode and DI mode.
5403         (doubleint_general_operand): Remove mode attribute.
5404
5405         (*lea_1): Macroize insn from *lea_1_rex64 and *lea_1 patterns using
5406         DWIH mode iterator.
5407
5408         (*add<mode>3_doubleword): Use DWIH as the base mode iterator.
5409         (*sub<mode>3_doubleword): Ditto.
5410
5411         (mul<mode>3): Macroize expander from mul{hi,si,di}3 patterns
5412         using SWIM248 mode iterator.
5413         (*mul<mode>3_1): Macroize insn from mul{si,di}3_1 patterns
5414         using SWI48 mode iterator.
5415         (<u>mul<mode><dwi>3): Macroize expander from {,u}mul{sidi,diti}3
5416         patterns using DWIH mode iterator and any_extend code iterator.
5417         (<u>mulqihi3): Macroize expander from {,u}mulqihi3 patterns
5418         using any_extend code iterator.
5419         (*<u>mul<mode><dwi>3_1): Macroize insn from {,u}mul{sidi,diti}3_1
5420         patterns using DWIH mode iterator and any_extend code iterator.
5421         (*<u>mulqihi3_1): Macroize insn from {,u}mulqihi3_1 patterns
5422         using any_extend code iterator.
5423         (<s>mul<mode>3_highpart): Macroize expander from
5424         {s,u}mul{si,di}3_highpart patterns using DWIH mode iterator
5425         and any_extend code iterator.
5426         (*<s>muldi3_highpart_1): Macroize insn from
5427         *{s,u}muldi3_highpart_rex64 patterns using any_extend code iterator.
5428         (*<s>mulsi3_highpart_1): Macroize insn from *{s,u}mulsi3_highpart_1
5429         patterns using any_extend code iterator.
5430         (*<s>mulsi3_highpart_zext): Macroize insn from
5431         *{s,u}mulsi3_highpart_zext patterns using any_extend code iterator.
5432
5433 2009-10-07  Jakub Jelinek  <jakub@redhat.com>
5434
5435         * dwarf2out.c (tree_add_const_value_attribute_for_decl): Don't add
5436         DW_AT_const_value if VAR_DIE already has DW_AT_abstract_origin
5437         refering to a DIE with DW_AT_const_value.
5438
5439 2009-10-07  Vladimir Makarov  <vmakarov@redhat.com>
5440
5441         PR middle-end/22072
5442         * ira-lives.c (check_and_make_def_conflict): Process all operands.
5443
5444 2009-10-06  Jan Hubicka  <jh@suse.cz>
5445
5446         * cgraph.c (cgraph_node_can_be_local): Handle externally visible nodes
5447         correctly.
5448
5449 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5450
5451         * config/i386/i386.md (*lea_1_rex64, *lea_1, *lea_1_zext,
5452         *lea_2_rex64): Move before *add<mode>_1 pattern.
5453
5454 2009-10-07  Jan Hubicka  <jh@suse.cz>
5455
5456         * collect2.c (main): Add -fno-whole-program.
5457         * gcc.c (set_collect_gcc_options): Do not remove whole program here.
5458
5459 2009-10-07  Jan Hubicka  <jh@suse.cz>
5460
5461         * lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones
5462         has no address taken.
5463         * cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
5464         never needed.
5465         (cgraph_clone_node): Clear externally_visible flag for clones.
5466         * cgraph.h (cgraph_only_called_directly_p,
5467         cgraph_can_remove_if_no_direct_calls_p): New predicates.
5468         * tree-pass.h (pass_ipa_whole_program_visibility): Declare.
5469         * ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
5470         (ipcp_initialize_node_lattices, ipcp_estimate_growth,
5471         ipcp_insert_stage): Likwise.
5472         * cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
5473         externally_visible flag.
5474         (verify_cgraph_node): Verify that inline clones look right.
5475         (process_function_and_variable_attributes): Do not set
5476         externally_visible flags.
5477         (ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
5478         been already run.
5479         * lto-cgraph.c (lto_output_node): Assert that inline clones are not
5480         boundaries.
5481         * ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
5482         clear externally_visible when turning into inline clones
5483         (cgraph_mark_inline_edge): Use new predicates.
5484         (cgraph_estimate_growth): Likewise.
5485         (cgraph_decide_inlining): Likewise.
5486         * ipa.c (cgraph_postorder): Likewise.
5487         (cgraph_remove_unreachable_nodes): Likewise; sanity check
5488         that inline clones are not needed.
5489         (cgraph_externally_visible_p): New predicate.
5490         (function_and_variable_visibility): Add whole_program parameter;
5491         always set externally_visible flag; handle COMDAT function
5492         privatization.
5493         (local_function_and_variable_visibility): New function.
5494         (gate_whole_program_function_and_variable_visibility): New function.
5495         (whole_program_function_and_variable_visibility): New function.
5496         (pass_ipa_whole_program_visibility): New function.
5497         * passes.c  (init_optimization_passes): Add whole program visibility
5498         pass.
5499         (do_per_function_toporder, function_called_by_processed_nodes_p): Do
5500         not care about needed/reachable flags.
5501         * varpool.c: Include flags.h
5502         (decide_is_variable_needed): When doing LTO assume whole-program mode.
5503         (varpool_finalize_decl): When we are in LTO read-back, all variables
5504         are analyzed.
5505         (varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
5506
5507 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5508
5509         * config/s390/tpf.h (TARGET_DEFAULT): Remove MASK_HARD_FLOAT and
5510         add MASK_HARD_DFP.
5511
5512 2009-10-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
5513
5514         * config.gcc: Don't include the makefile fragments intended for
5515         libgcc.
5516         * config/s390/fixdfdi.h: File removed.
5517         * config/s390/libgcc-glibc.ver: File removed.
5518         * config/s390/s390.h: Remove the fixdfdi.h hack.
5519         * config/s390/t-crtstuff: File moved to libgcc dir.
5520         * config/s390/t-linux: Likewise.
5521         * config/s390/t-tpf: libgcc specific parts removed.
5522         * config/s390/t-linux64: Likewise.
5523
5524 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5525
5526         * Makefile.in (lto-wrapper): Use COMPILER and ALL_COMPILERFLAGS.
5527         (lto-compress.o): Likewise.
5528
5529 2009-10-07  Danny Smith  <dannysmith@users.sourceforge.net>
5530
5531         PR target/41512
5532         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't propagate
5533         dllexport to class members here.
5534         (i386_pe_determine_dllimport_p): Only check static class data for
5535         definition.
5536         (i386_pe_encode_section_info): Don't recheck DECL_DLLIMPORT_P.
5537         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Only check
5538         functions for vague linkage.
5539         (i386_pe_type_dllexport_p): Fix formatting.
5540         (maybe_add_dllexport) New function.
5541         (i386_pe_adjust_class_at_definition): Use it to propagate dllexport
5542         to class members.
5543
5544 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5545
5546         * config/rs6000/a2.md: Remove duplicated lines.
5547
5548 2009-10-07  Ben Elliston  <bje@au.ibm.com>
5549
5550         * config.gcc (powerpc*-*-*): Handle a2.
5551         * config/rs6000/rs6000.md (cpu): Add ppca2.  Include "a2.md".
5552         * config/rs6000/a2.md: New file.
5553         * config/rs6000/rs6000.opt (mno-update): New.
5554         (mupdate): Return to using a mask, not a var.
5555         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for a2.
5556         (enum processor_type): Add PROCESSOR_PPCA2.
5557         * config/rs6000/rs6000.c (ppca2_cost): New costs.
5558         (rs6000_override_options): Add "a2" to processor_target_table.
5559         Update rs6000_always_hint logic.  Correctly set rs6000_cost for a2.
5560         * doc/invoke.texi (RS/6000 and PowerPC Options): Document -mcpu=a2.
5561
5562 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5563
5564         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
5565         Use explicit gen_truncxfsf2 and gen_truncxfdf2 references to avoid
5566         reference to nonexistent gen_truncxfxf2 function.
5567
5568 2009-10-06  Uros Bizjak  <ubizjak@gmail.com>
5569
5570         * config/i386/i386.md (SWI48, SDWIM, DWI): New mode iterators.
5571         (DWIH, g, di, doubleint_general_operand): New mode attributes.
5572         (general_operand): Handle TI mode.
5573         (add<mode>3): Macroize expander from add{qi,hi,si,di,ti}3 patterns
5574         using SDWIM mode iterator.
5575         (*add<mode>3_doubleword): New insn_and_split pattern.  Macroize
5576         pattern from *add{di,ti}3_1 patterns and corresponding splitters
5577         using DWI mode iterator.
5578         (add<mode>3_carry): Macroize insn from add{qi,hi,si,di}3_carry
5579         patterns using SWI mode iterator.
5580         (*add<mode>3_cc): Macroize insn from add{si,di}3_cc patterns
5581         using SWI48 mode iterator.
5582         (*add<mode>_1): Ditto from add{si,di}_1 patterns.
5583         (*add<mode>_2): Ditto from add{si,di}_2 patterns.
5584         (*add<mode>_3): Ditto from add{si,di}_3 patterns.
5585         (*add<mode>_5): Ditto from add{si,di}_5 patterns.
5586         (sub<mode>3): Macroize expander from sub{qi,hi,si,di,ti}3 patterns
5587         using SDWIM mode iterator.
5588         (*sub<mode>3_doubleword): New insn_and_split pattern.  Macroize
5589         pattern from *sub{di,ti}3_1 patterns and corresponding splitters
5590         using DWI mode iterator.
5591         (sub<mode>3_carry): Macroize insn from sub{qi,hi,si,di}3_carry
5592         patterns using SWI mode iterator.
5593         (*sub<mode>_1): Ditto from from sub{qi,hi,si,di}_1 patterns.
5594         (*sub<mode>_2): Ditto from sub{qi,hi,si,di}_2 patterns.
5595         (*sub<mode>_3): Ditto from sub{qi,hi,si,di}_3 patterns.
5596         (<plusminus_insn>xf3): Macroize expander from addxf3 and subxf3
5597         patterns using plusminus code iterator.
5598         (<plusminus_insn><mode>3): Macroize expander from add<mode>3 and
5599         sub<mode>3 patterns using plusminus code iterator.
5600         * config/i386/i386.c (override_options): Update the call to
5601         gen_subdi_carry_rex64 for renamed function.
5602         (ix86_expand_int_addcc): Update calls to gen_subdi3_carry_rex64
5603         and gen_adddi3_carry_rex64 for renamed functions.  Use indirect
5604         calls to instruction expanders.
5605
5606 2009-10-06  Martin Jambor  <mjambor@suse.cz>
5607
5608         PR bootstrap/41395
5609         * opts.c (decode_options): Run IPA-SRA at -O2.
5610
5611 2009-10-06  Richard Guenther  <rguenther@suse.de>
5612
5613         * lto-symtab.c (lto_symtab_entry_hash): Hash strings, not pointers.
5614
5615 2009-10-06  Tobias Burnus  <burnus@net-b.de>
5616
5617         PR lto/41591
5618         * doc/invoke.texi (-flto,-fwhole-program): Make clear that the
5619         -flto and -fwhole-program flags can be combined.
5620
5621 2009-10-06  Ryan Mansfield  <rmansfield@qnx.com>
5622
5623         PR driver/41217
5624         * gcc.c (process_command): Check that -o argument was specified.
5625
5626 2009-10-06  Jerry Quinn  <jlquinn@optonline.net>
5627
5628         * gimple.c (gimple_type_hash): Use CONST_CAST_TREE to fix compilation.
5629
5630 2009-10-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5631
5632         * c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
5633         * doc/invoke.texi (Warning Options): Annotate allowed languages
5634         for -Wunsuffixed-float-constants.
5635
5636 2009-10-05  Jakub Jelinek  <jakub@redhat.com>
5637
5638         * dwarf2out.c (modified_type_die): Don't add DW_AT_name to
5639         DW_TAG_{const,volatile}_type if its DW_AT_type already has the
5640         same name and isn't the main variant.
5641
5642         PR debug/41558
5643         * dwarf2out.c (loc_by_reference): Removed.
5644         (dw_loc_list_1): New function.
5645         (dw_loc_list): Remove toplev argument, add want_address argument.
5646         Don't look at decl_by_reference_p at all.  Use dw_loc_list_1.
5647         (loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
5648         want_address == 2 to dw_loc_list.  For successful dw_loc_list
5649         set have_address to 1 only if want_address is not 0.
5650
5651 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5652
5653         * config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
5654         * config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
5655         a code block followed by two pointers.
5656         (TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
5657         * config/mips/mips.c (MIPS_LOAD_PTR): New macro.
5658         (MIPS_MOVE): Likewise.
5659         (MIPS_LUI): Likewise.
5660         (MIPS_JR): Likewise.
5661         (MIPS_BAL): Likewise.
5662         (MIPS_NOP): Likewise.
5663         (mips_asm_trampoline_template): Delete.
5664         (mips_trampoline_code_size): New function.
5665         (mips_trampoline_init): Add shorter sequences for all cases
5666         except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
5667         Calculate the opcodes directly, rather than copying from a template.
5668         Only flush the code part of the trampoline.
5669         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
5670
5671 2009-10-05  Richard Sandiford  <rdsandiford@googlemail.com>
5672
5673         * config/mips/mips.h (DWARF_FRAME_RETURN_COLUMN): Replace
5674         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM.
5675         (INCOMING_RETURN_ADDR_RTX): Likewise.
5676         (FUNCTION_PROFILER): Likewise.  Replace GP_REG_FIRST + 1
5677         with AT_REGNUM.
5678         * config/mips/sdemtk.h (FUNCTION_PROFILER): Replace GP_REG_FIRST + 31
5679         with RETURN_ADDR_REGNUM.
5680         (MIPS_SAVE_REG_FOR_PROFILING_P): Likewise.
5681         * config/mips/mips.c (mips16_build_call_stub): Replace
5682         GP_REG_FIRST + 31 with RETURN_ADDR_REGNUM, GP_REG_FIRST + 1
5683         with AT_REGNUM and 31 with RETURN_ADDR_REGNUM.
5684         (mips_print_operand_punctuation): Likewise.
5685         (mips_frame_set): Likewise.
5686         (mips16e_output_save_restore): Likewise.
5687         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
5688         (mips_save_reg_p): Likewise.
5689         (mips_return_addr): Likewise.
5690         (mips_set_return_address): Likewise.
5691         (mips_direct_save_slot_move_p): Likewise.
5692         (mips_output_function_prologue): Likewise.
5693         (mips_restore_reg): Likewise.
5694         (mips_expand_epilogue): Likewise.
5695         (mips_epilogue_uses): Likewise.
5696         * config/mips/mips.md (RETURN_ADD_REGNUM): Define.
5697         (*mov<mode>_ra): Use it instead of a hard-coded 31.
5698         (clear_hazard_<mode>): Likewise.
5699         (call_internal): Likewise.
5700         (call_internal_direct): Likewise.
5701         (call_direct_split): Likewise.
5702         (call_value_internal): Likewise.
5703         (call_value_split): Likewise.
5704         (call_value_internal_direct): Likewise.
5705         (call_value_direct_split): Likewise.
5706         (call_value_multiple_internal): Likewise.
5707         (call_value_multiple_split): Likewise.
5708
5709 2009-10-05  Eric Botcazou  <ebotcazou@adacore.com>
5710             Jakub Jelinek  <jakub@redhat.com>
5711
5712         PR rtl-optimization/41511
5713         * combine.c (record_value_for_reg): Pass explicit values as argument
5714         to get_last_value_validate.
5715         (get_last_value_validate): Document INSN parameter.
5716         For non-readonly MEMs, assume they might have been modified if INSN
5717         was in another basic block.
5718         (get_last_value): Minor reformatting.
5719
5720 2009-10-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5721
5722         PR tree-opt/40992
5723         * final.c (asm_str_count): Split out from asm_insn_count.
5724         * rtl.h (asm_str_count): New prototype.
5725         * tree-inline (estimate_num_insns) <case GIMPLE_ASM>: Call
5726         asm_str_count.
5727
5728 2009-10-05  Sriraman Tallam  <tmsriram@google.com>
5729
5730         * doc/plugins.texi: Change plugin_pass to register_pass_info.
5731
5732 2009-10-05  Basile Starynkevitch  <basile@starynkevitch.net>
5733             Rafael Espindola  <espindola@google.com>
5734
5735         * gengtype.c (write_types): Moved call to write_func_for_structure
5736         into seperate loops.
5737
5738 2009-10-05  Richard Guenther  <rguenther@suse.de>
5739
5740         PR lto/41281
5741         * lto-cgraph.c (output_cgraph): Output toplevel asms.
5742         (input_cgraph_1): Input toplevel asms.
5743
5744 2009-10-05  Richard Guenther  <rguenther@suse.de>
5745
5746         PR lto/40902
5747         * lto-symtab.c (lto_compatible_attributes_p): Remove.
5748         (external_aggregate_decl_p): Likewise.
5749         (lto_symtab_compatible): Re-structure.  Remove dead code.
5750         For variables ignore toplevel qualifiers when comparing types.
5751         Issue warnings, not errors for mismatched user-alignment.
5752
5753 2009-10-05  Richard Guenther  <rguenther@suse.de>
5754
5755         PR lto/41552
5756         PR lto/41487
5757         * lto-symtab.c (struct lto_symtab_base_def): Remove.
5758         (struct lto_symtab_identifier_def): Likewise.
5759         (struct lto_symtab_decl_def): Likewise.
5760         (struct lto_symtab_entry_def): New.
5761         (lto_symtab_identifier_t): Rename to ...
5762         (lto_symtab_entry_t): ... this.
5763         (lto_symtab_decls): Remove.
5764         (lto_symtab_base_hash): Rename to ...
5765         (lto_symtab_entry_hash): ... this.
5766         (lto_symtab_base_eq): Rename to ...
5767         (lto_symtab_entry_eq): ... this.
5768         (lto_symtab_base_marked_p): Rename to ...
5769         (lto_symtab_entry_marked_p): ... this.
5770         (lto_symtab_identifier_marked_p): Remove.
5771         (lto_symtab_decl_marked_p): Likewise.
5772         (lto_symtab_maybe_init_hash_tables): Rename to ...
5773         (lto_symtab_maybe_init_hash_table): ... this.
5774         (lto_symtab_set_resolution_and_file_data): Remove.
5775         (lto_symtab_register_decl): New function.
5776         (lto_symtab_get_identifier): Remove.
5777         (lto_symtab_get): New function.
5778         (lto_symtab_get_resolution): Adjust.
5779         (lto_symtab_get_identifier_decl): Remove.
5780         (lto_symtab_set_identifier_decl): Likewise.
5781         (lto_symtab_merge_decl): Rename to ...
5782         (lto_symtab_merge): ... this.  Rewrite.
5783         (lto_symtab_merge_var): Remove.
5784         (lto_symtab_merge_fn): Likewise.
5785         (lto_symtab_prevailing_decl): Adjust.
5786         (lto_cgraph_replace_node): New function.
5787         (lto_symtab_merge_decls_2): Likewise.
5788         (lto_symtab_merge_decls_1): Likewise.
5789         (lto_symtab_fixup_var_decls): Likewise.
5790         (lto_symtab_resolve_symbols): Likewise.
5791         (lto_symtab_merge_decls): Likewise.
5792         (lto_symtab_prevailing_decl): Adjust.
5793         (lto_symtab_get_symtab_def): Remove.
5794         (lto_symtab_get_file_data): Likewise.
5795         (lto_symtab_clear_resolution): Adjust.
5796         (lto_symtab_clear_resolution): Likewise.
5797         * lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
5798         (input_cgraph_1): Likewise.
5799         * lto-streamer-in.c (get_resolution): Do not provide fake
5800         symbol resolutions here.
5801         (deferred_global_decls): Remove.
5802         (lto_register_deferred_decls_in_symtab): Likewise.
5803         (lto_register_var_decl_in_symtab): Change signature, register
5804         variable via lto_symtab_register_decl.
5805         (lto_register_function_decl_in_symtab): Likewise.
5806         (lto_read_tree): Adjust.
5807         * lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
5808         (lto_symtab_merge_var): Likewise.
5809         (lto_symtab_merge_fn): Likewise.
5810         (lto_symtab_register_decl): Declare.
5811         (lto_symtab_merge_decls): Likewise.
5812
5813 2009-10-05  Richard Guenther  <rguenther@suse.de>
5814
5815         PR tree-optimization/23821
5816         * tree-vrp.c (vrp_finalize): Do not perform copy propagation.
5817         * tree-ssa-dom.c (cprop_operand): Do not propagate copies into
5818         simple IV increments.
5819
5820 2009-10-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
5821
5822         * config/arm/arm.c (arm_override_options): Really initialize
5823         flag_dwarf2_cfi_asm to 0.
5824
5825 2009-10-05  Doug Kwan  <dougkwan@google.com>
5826
5827         PR rtl-optimization/41574
5828         * combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
5829         floating point and we are not doing unsafe math optimizations.
5830
5831 2009-10-03  Simon Baldwin  <simonb@google.com>
5832             Cary Coutant  <ccoutant@google.com>
5833             Rafael Espindola  <espindola@google.com>
5834             Richard Guenther  <rguenther@suse.de>
5835             Jan Hubicka  <jh@suse.cz>
5836             Doug Kwan <dougkwan@google.com>
5837             H.J. Lu  <hongjiu.lu@intel.com>
5838             Bill Maddox  <maddox@google.com>
5839             Ryan Mansfield  <rmansfield@qnx.com>
5840             Diego Novillo  <dnovillo@google.com>
5841             Ollie Wild  <aaw@google.com>
5842             Kenneth Zadeck <zadeck@naturalbridge.com>
5843
5844         * lto-cgraph.c: New file.
5845         * lto-compress.c: New file.
5846         * lto-compress.h: New file.
5847         * lto-opts.c: New file.
5848         * lto-section-in.c: New file.
5849         * lto-section-out.c: New file.
5850         * lto-streamer-in.c: New file.
5851         * lto-streamer-out.c: New file.
5852         * lto-streamer.c: New file.
5853         * lto-streamer.h: New file.
5854         * lto-symtab.c: New file.
5855         * lto-wpa-fixup.c: New file.
5856         * lto-wrapper.c: New file.
5857
5858 2009-10-03  Simon Baldwin  <baldwin@google.com>
5859             Ben Elliston  <bje@au.ibm.com>
5860             Rafael Espindola  <espindola@google.com>
5861             Nathan Froyd  <froydnj@codesourcery.com>
5862             Jan Hubicka  <jh@suse.cz>
5863             Doug Kwan  <dougkwan@google.com>
5864             Diego Novillo  <dnovillo@google.com>
5865             Kenneth Zadeck  <zadeck@naturalbridge.com>
5866
5867         * Makefile.in (enable_lto): New.
5868         (site.exp): If @enable_lto@ is set to 'yes' define ENABLE_LTO.
5869         (LINKER_PLUGIN_API_H): Define.
5870         (LTO_SYMTAB_H): Define.
5871         (LTO_STREAMER_H): Define.
5872         (TREE_VECTORIZER_H): Define.
5873         (INCLUDES): Add LIBELFINC.
5874         (OBJS-common): Add lto-cgraph.o, lto-streamer-in.o,
5875         lto-streamer-out.o, lto-section-in.o, lto-section-out.o, lto-symtab.o,
5876         lto-opts.o, lto-streamer.o, lto-wpa-fixup.o, lto-compress.o.
5877         (MOSTLYCLEANFILES): Add lto-wrapper$(exeext)
5878         (native): Add lto-wrapper$(exeext)
5879         (lto-compress.o, lto-cgraph.o, lto-streamer-in.o,
5880         lto-streamer-out.o, lto-section-in.o, lto-section-out.o,
5881         lto-symtab.o, lto-opts.o, lto-streamer.o, lto-wpa-fixup.o): New rules.
5882         (gimple.o): Add dependency on LTO_HEADER_H and LTO_SECTION_OUT_H.
5883         (varasm.o): Add dependency on tree-iterator.h.
5884         (cgraph.o): Add dependency on cif-code.def.
5885         (ipa-reference.o): Add dependency on LTO_STREAMER_H.
5886         (ipa-pure-const.o): Likewise.
5887         (GTFILES): Add lto-symtab.c.
5888         (install-lto-wrapper): New.
5889         * configure.ac: If 'lto' is in enable_languages, define ENABLE_LTO
5890         and enable_lto.  If LIBELFLIBS is set, define HAVE_libelf.
5891         * config.in: Regenerate.
5892
5893 2009-10-03  Rafael Espindola  <espindola@google.com>
5894             Diego Novillo  <dnovillo@google.com>
5895
5896         * cgraphunit.c (ipa_passes): Prevent lto1 from calling
5897         ipa_write_summaries.
5898         Call execute_ipa_summary_passes for all_regular_ipa_passes and
5899         all_lto_gen_passes.
5900         (cgraph_optimize): Make extern.
5901
5902 2009-10-03  Nathan Froyd  <froydnj@codesourcery.com>
5903             Kenneth Zadeck <zadeck@naturalbridge.com>
5904
5905         * toplev.c (in_lto_p): Declare.
5906         * collect2.c (scan_prog_file): Read all the output when reading
5907         information for LTO.
5908         (enum lto_mode_d): Declare.
5909
5910 2009-10-03  Richard Guenther  <rguenther@suse.de>
5911             Diego Novillo  <dnovillo@google.com>
5912
5913         * gimple.c: Include target.h and alias.h.
5914         (gimple_types): Declare.
5915         (type_hash_cache): Declare.
5916         (gimple_alloc_stat): Make extern.
5917         (gimple_build_eh_must_not_throw): Call
5918         gimple_eh_must_not_throw_set_fndecl.
5919         (struct type_pair_d): Declare.
5920         (type_pair_t): Declare.
5921         (type_pair_hash): New.
5922         (type_pair_eq): New.
5923         (lookup_type_pair): New.
5924         (gimple_force_type_merge): New.
5925         (compare_type_names_p): New.
5926         (compare_field_offset): New.
5927         (gimple_types_compatible_p): New.
5928         (struct sccs): Declare.
5929         (next_dfs_num): Declare.
5930         (iterative_hash_gimple_type): New.
5931         (visit): New.
5932         (iterative_hash_type_name): New.
5933         (iterative_hash_gimple_type): New.
5934         (gimple_type_hash): New.
5935         (gimple_type_eq): New.
5936         (gimple_register_type): New.
5937         (print_gimple_types_stats): New.
5938         (gimple_signed_or_unsigned_type): New.
5939         (gimple_unsigned_type): New.
5940         (gimple_signed_type): New.
5941         (gimple_get_alias_set): New.
5942         (gimple_decl_printable_name): Do not use DMGL_TYPES.
5943         * gimple.h (gimple_alloc, gimple_alloc_stat): Declare.
5944         (gimple_force_type_merge): Declare.
5945         (gimple_types_compatible_p): Declare.
5946         (gimple_register_type): Declare.
5947         (print_gimple_types_stats): Declare.
5948         (gimple_unsigned_type): Declare.
5949         (gimple_signed_type): Declare.
5950         (gimple_get_alias_set): Declare.
5951         (gimple_eh_must_not_throw_set_fndecl): New.
5952
5953 2009-10-03  Jan Hubicka  <jh@suse.cz>
5954             Kenneth Zadeck <zadeck@naturalbridge.com>
5955
5956         * ipa-pure-const.c: Include lto-streamer.h.
5957         (register_hooks): Factor out of ...
5958         (generate_summary): ... here.
5959         (pure_const_write_summary): New.
5960         (pure_const_read_summary): New.
5961         (pass_ipa_pure_const): Add pure_const_write_summary and
5962         pure_const_read_summary.
5963         * ipa-reference.c: Include lto-streamer.h.
5964         (add_new_function): New.
5965         (remove_node_data): New.
5966         (duplicate_node_data): New.
5967         (ipa_init): Guard against multiple calls.
5968         Move hook setup from analyze_function.
5969         (write_node_summary_p): New.
5970         (ipa_reference_write_summary): New.
5971         (ipa_reference_read_summary): New.
5972         (pass_ipa_reference): Add ipa_reference_write_summary and
5973         ipa_reference_read_summary.
5974         * cgraph.h (cgraph_local_info): Add field lto_file_data.
5975         (struct cgraph_edge): Add fields lto_stmt_uid and
5976         call_stmt_cannot_inline_p.
5977         (cgraph_optimize): Declare.
5978         (cgraph_decide_is_function_needed): Declare.
5979         (reset_inline_failed): Declare.
5980         (enum LTO_cgraph_tags): Declare.
5981         (LTO_cgraph_tag_names): Declare.
5982         (LCC_NOT_FOUND): Define.
5983
5984 2009-10-03  Doug Kwan  <dougkwan@google.com>
5985             Rafael Espindola  <espindola@google.com>
5986             Jan Hubicka  <jh@suse.cz>
5987             Diego Novillo  <dnovillo@google.com>
5988             Kenneth Zadeck  <zadeck@naturalbridge.com>
5989
5990         * passes.c (all_regular_ipa_passes): New.
5991         (all_ipa_passes): Rename to all_small_ipa_passes.
5992         (init_optimization_passes): Init all_regular_ipa_passes.
5993         * tree-pass.h (all_regular_ipa_passes): New.
5994         (all_ipa_passes): Rename to all_small_ipa_passes.
5995         * passes.c (all_lto_gen_passes): New.
5996         (init_optimization_passes): Initialize all_lto_gen_passes.
5997         (execute_ipa_summary_passes): Make non-static.
5998         (ipa_write_summaries_1): New.
5999         (ipa_write_summaries_2): New.
6000         (ipa_write_summaries): New.
6001         (ipa_write_summaries_of_cgraph_node_set): New.
6002         (ipa_read_summaries_1): New.
6003         (ipa_read_summaries): New.
6004         (execute_ipa_pass_list): Call cgraph_process_new_functions.
6005         (execute_regular_ipa_pass_list): Remove.
6006         (init_optimization_passes): Schedule
6007         pass_rebuild_cgraph_edges and pass_early_inline outside
6008         of pass_all_early_optimizations.  Document reason.
6009         (pass_ipa_lto_gimple_out, pass_ipa_lto_wpa_fixup,
6010         pass_ipa_lto_finish_out): New pass.
6011         (pass_ipa_summary_passes): Start and stop timers if the pass has them.
6012         (execute_all_ipa_transforms): New.
6013         (execute_one_pass): Don't call execute_one_ipa_transform_pass.
6014         (dump_properties, debug_properties): New.
6015         * tree-optimize.c (gate_all_early_local_passes): Return
6016         false if we are in lto1.
6017         (tree_rest_of_compilation): Call execute_all_ipa_transforms.
6018         * tree-pass.h (execute_all_ipa_transforms): Declare.
6019         (pass_ipa_function_and_variable_visibility): Declare.
6020         (pass_ipa_early_inline): Declare.
6021         (pass_ipa_lto_gimple_out): Declare.
6022         (pass_ipa_lto_wpa_fixup): Declare.
6023         (pass_ipa_lto_finish_out): Declare.
6024         (all_small_ipa_passes, all_regular_ipa_passes,
6025         all_lto_gen_passes): Declare.
6026         (execute_ipa_summary_passes): Declare.
6027         (execute_all_ipa_transforms): Declare.
6028         (ipa_write_summaries): Declare
6029         (ipa_write_summaries_of_cgraph_node_set): Declare.
6030         (ipa_read_summaries): Declare.
6031
6032 2009-10-03  Doug Kwan  <dougkwan@google.com>
6033             Ollie Wild  <aaw@google.com>
6034
6035         * ipa-prop.c (ipa_propagate_indirect_call_infos): Do nothing in WPA.
6036
6037         * collect2.c (LTO_MODE_NONE, LTO_MODE_LTO, LTO_MODE_WPA): New enums.
6038         (lto_mode): New variable.
6039         (maybe_run_lto_and_relink): Handle the -fwpa option.
6040         (main): Handle the -fwpa option.
6041         (maybe_unlink_list): New function.
6042         * gcc.c (link_lto_options): Replace -flto with -fwpa.
6043         * common.opt (flto): New flag.
6044         * toplev.c (flag_generate_lto): Declare.
6045
6046 2009-10-03  Simon Baldwin  <simonb@google.com>
6047
6048         * common.opt (flto-compression-level): New flag.
6049
6050         * opts.c: Include lto-opts.h.
6051         (handle_option): Call lto_register_user_option for each
6052         valid option handled.
6053         (decode_options): Clear registered options before the options
6054         handling loop.
6055
6056 2009-10-03  Cary Coutant  <ccoutant@google.com>
6057
6058         * collect2.c (is_elf): New function.
6059         (scan_prog_file): Require LTO object to be in ELF format.
6060
6061 2009-10-03  Rafael Espindola  <espindola@google.com>
6062
6063         * gcc.c (LINK_COMMAND_SPEC): Use the -pass-through option to pass
6064         libgcc to the linker.
6065
6066         * ipa-cp.c (cgraph_gate_cp): Return false if LTRANS is running.
6067
6068         * collect2.c (maybe_run_lto_and_relink): Execute lto-wrapper.
6069         (collect_execute): Add flags argument. Pass flags to pex_run. Update
6070         all callers.
6071         * collect2.h (collect_execute): Add flags argument.
6072         * tlink.c (tlink_execute): Update call to collect_execute.
6073         * gcc.c (main): Set the COLLECT_LTO_WRAPPER environment variable.
6074         (use_linker_plugin): New.
6075         (use_linker_plugin_spec_function): New.
6076         (LINK_COMMAND_SPEC): Pass plugin options to the linker.
6077         (linker_plugin_file_spec): New.
6078         (lto_wrapper_spec): New.
6079         (lto_gcc_spec): New.
6080         (static_specs): Add linker_plugin_file, lto_wrapper and lto_gcc.
6081         (static_spec_functions): Add use-linker-plugin.
6082         (process_command): Handle -use-linker-plugin.
6083         (main): Use lto_wrapper_spec instead of lto_wrapper. Set
6084         linker_plugin_file_spec and lto_gcc_spec.
6085         (use_linker_plugin_spec_function): New.
6086
6087 2009-10-03  Richard Guenther  <rguenther@suse.de>
6088
6089         PR lto/41547
6090         PR lto/41548
6091         * tree.h (is_lang_specific): Include LANG_TYPE.
6092         * tree.c (find_decls_types_r): Manually add interesting parts
6093         of TYPE_FIELDS.  Walk BINFO_VIRTUALS.  Do not walk TYPE_METHODS.
6094
6095         * gimple.c (type_pair_hash): Make symmetric.
6096         (type_pair_eq): Likewise.
6097         (lookup_type_pair): Increase initial hashtable size.
6098         (gimple_force_type_merge): Rely on type-pair symmetry.
6099         (visit): Remove excessive checking code.
6100         (iterative_hash_type_name): Do not hash TYPE_NAME of anonymous unions.
6101         (gimple_register_type): Remove getenv calls, shrink initial
6102         hashtable size.
6103
6104         PR middle-end/41502
6105         * cgraphunit.c (ipa_passes): Do not remove bodies of extern
6106         inline functions if not generating lto output.
6107
6108         PR lto/41379
6109         * toplev.c (finalize): In WPA mode remove the asm file.
6110
6111 2009-10-03  Doug Kwan  <dougkwan@google.com>
6112
6113         * ipa-inline.c (cgraph_mark_inline): Check
6114         edge->call_stmt_cannot_inline_p instead of calling
6115         gimple_call_cannot_inline_p.
6116         (cgraph_decide_inlining): Do nothing in WPA and LTRANS.
6117         (cgraph_gate_ipa_early_inlining): Return false if in_lto_p is set.
6118         (inline_generate_summary): Do nothing in LTRANS.
6119         * cgraph.c (initialize_inline_failed): Make sure e->call_stmt
6120         exists before calling gimple_call_cannot_inline_p.
6121         (cgraph_create_edge): Set edge->call_stmt_cannot_inline_p.
6122         (cgraph_clone_edge): Add argument STMT_UID.  Modify all callers.
6123         Update new_edge->lto_stmt_uid.
6124         * cgraphbuild.c (reset_inline_failed): New.
6125
6126         * common.opt (fwpa): New flag.
6127         (fltrans): New option.
6128         * gcc.c (gcc_lto_option_t): New type.
6129         (current_lto_option): New variable.
6130         (lto_single_spec_function): Remove and is replaced by ..
6131         (lto_option_spec_function): New function.
6132         (LINK_COMMAND_SPEC): Use link_lto_option spec instead of just
6133         passing the -flto flag.
6134         (cc1_options): Separate non-LTO related parts into ..
6135         (cc1_non_lto_options): Non-LTO related options shared by all FEs.
6136         (lto1_options): New spec for lto FE.
6137         (link_lto_options): New spec for handling LTO flags in linker.
6138         (invoke_lto_single): Re-format to fit in 80 column.  Replace
6139         lto-single with lto-option.
6140         (static_specs): Add cc1_non_lto_options, lto1_options and
6141         link_lto_options.
6142         (static_spec_function): Replace lto-single with lto-option.
6143         (process_command): Handle -flto, -fwpa and -fltran by setting
6144         current_lto_option and not passing it to subprocess unconditionally.
6145
6146 2009-10-03  Bill Maddox  <maddox@google.com>
6147
6148         Add `gcc' driver support for link-time code generation (LTO).
6149
6150         * collect2.c (enum pass): Add new literal PASS_LTOINFO.
6151         (lto_flag, lto_objects, lto_o_file): New variables.
6152         (struct lto_object, struct lto_object_list): New structures.
6153         (collect_exit, handler): Remove LTO temporary output file on exit.
6154         (add_lto_object): New function.
6155         (maybe_run_lto_and_relink): New function. Perform link time code
6156         generation and relinking for object files containing LTO information.
6157         (main): Invoke maybe_run_lto_and_relink().
6158         (dump_argv): New function.  For debugging, currently disabled.
6159         (scan_prog_file): Add LTO information pass.
6160         * gcc.c (LINK_COMMAND_SPEC): Pass `-flto' switch to linker, i.e.,
6161         collect2.
6162         * toplev.c (compile_file): Emit assembler directive to create
6163         the `gnu_lto_v1' marker symbol when compiling with `-flto'.
6164
6165 2009-10-03  Diego Novillo  <dnovillo@google.com>
6166
6167         * c.opt: Add LTO to warn_abi and warn_psabi.
6168
6169         * tree.c (fld_worklist_push): Rename from PUSH.  Convert to static
6170         inline function.  Ignore language-specific nodes.  Update all users.
6171         (find_decls_types_r): Do not traverse the subtrees of
6172         language-specific nodes.  Do not traverse DECL_INITIAL for TYPE_DECLs.
6173         * tree.h (is_lang_specific): New.
6174         * langhooks.h (struct lang_hooks_for_decls): Remove
6175         may_need_assembler_name_p.  Update all users.
6176
6177         * c-common.c (set_builtin_user_assembler_name): Move ...
6178         * builtins.c (set_builtin_user_assembler_name): ... here.
6179         (is_builtin_name): Add comment
6180         (is_builtin_fn): New.
6181         * except.c (output_ttype): Only call
6182         lookup_type_for_runtime if TYPE is not a runtime type.
6183
6184         * passes.c (register_pass): Call position_pass on
6185         all_small_ipa_passes, all_regular_ipa_passes and all_lto_gen_passes.
6186         * timevar.def (TV_IPA_LTO_GIMPLE_IO): Define.
6187         (TV_IPA_LTO_DECL_IO): Define.
6188         (TV_IPA_LTO_CGRAPH_IO): Define.
6189         (TV_LTO): Define.
6190         (TV_WHOPR_WPA): Define.
6191         (TV_WHOPR_WPA_IO): Define.
6192         (TV_WHOPR_LTRANS): Define.
6193         (TV_WHOPR_WPA_FIXUP): Define.
6194         (TV_WHOPR_WPA_LTRANS_EXEC): Define.
6195         * tree-cfg.c (tree_node_can_be_shared): Make extern.
6196         * tree-flow.h (tree_node_can_be_shared): Declare.
6197         * tree-inline.c (tree_can_inline_p): Check that E has a
6198         statement associated with it.
6199         * tree.c (free_lang_data_in_binf): Factor out of ...
6200         (free_lang_data_in_type): ... here.
6201         Call RECORD_OR_UNION_TYPE_P.
6202         (need_assembler_name_p): Ignore DECL if it does not have TREE_PUBLIC
6203         set.  Call lang_hooks.decls.may_need_assembler_name_p if set.
6204         (free_lang_data_in_decl): Do not clear DECL_CONTEXT for CONST_DECLs.
6205         (free_lang_data): Set debug_info_level to DINFO_LEVEL_NONE.  Set
6206         write_symbols to NO_DEBUG.  Set debug_hooks to do_nothing_debug_hooks.
6207         (gate_free_lang_data): Return true if flag_generate_lto is set.
6208         (walk_tree_1): Call RECORD_OR_UNION_TYPE_P.
6209         * c-common.h (set_builtin_user_assembler_name): Move ...
6210         * tree.h (set_builtin_user_assembler_name): ... here.
6211
6212         * common.opt (flto-report): New flag.
6213         * opts.c (complain_wrong_lang): Do not complain if running lto1.
6214         * collect2.c (scan_prog_file): Send the error output of
6215         'nm' to HOST_BIT_BUCKET.
6216
6217 2009-10-03  Ollie Wild  <aaw@google.com>
6218
6219         * langhooks-def.h (lhd_begin_section): New function declaration.
6220         (lhd_write_section): New function declaration.
6221         (lhd_end_section): New function declaration.
6222         (LANG_HOOKS_BEGIN_SECTION): New macro.
6223         (LANG_HOOKS_WRITE_SECTION_DATA): New macro.
6224         (LANG_HOOKS_END_SECTION): New macro.
6225         (LANG_HOOKS_LTO): New macro.
6226         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_LTO.
6227         * langhooks.c (output.h): Add include.
6228         (saved_section): New static variable.
6229         (lhd_begin_section): New function.
6230         (lhd_write_section_data): New function.
6231         (lhd_end_section): New function.
6232         * langhooks.h (struct lang_hooks_for_lto): New structure.
6233         (struct lang_hooks): Add member lto.
6234         * Makefile.in (langhooks.o): Add dependency on output.h.
6235
6236         * c-opts.c (c_common_post_options): Handle -flto and -fwhopr.
6237
6238 2009-10-03  Richard Guenther  <rguenther@suse.de>
6239
6240         * config/rs6000/rs6000.c (rs6000_output_function_epilogue):
6241         Handle LTO.
6242
6243 2009-10-03  Simon Baldwin  <simonb@google.com>
6244             Richard Guenther  <rguenther@suse.de>
6245             Janis Johnson  <janis187@us.ibm.com>
6246             Doug Kwan  <dougkwan@google.com>
6247             Diego Novillo  <dnovillo@google.com>
6248             Ramana Radhakrishnan  <ramana.r@gmail.com>
6249             Ollie Wild  <aaw@google.com>
6250
6251         * doc/install.texi: Add documentation for libelf and --enable-lto.
6252         * doc/invoke.texi: Document -fwpa, -flto, -fwhopr, -fltrans,
6253         -flto-report, -flto-compression-level and -use-linker-plugin.
6254         * doc/sourcebuild.texi: Document use of zlib.  Document lto-plugin.
6255         Add section for LTO Testing.
6256
6257 2009-10-02  Cary Coutant  <ccoutant@google.com>
6258
6259         Add support for comdat type sections for DWARF v4.
6260         Merge from dwarf4 branch.
6261
6262         * dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
6263         (dw_die_ref): Define vector type.
6264         (enum dw_val_class): Add dw_val_class_data8.
6265         (struct dw_val_struct): Add v.val_data8.
6266         (comdat_type_node_ref): New type.
6267         (struct die_struct): Move die_symbol into a union; add new field
6268         die_type_node.  Change all uses.
6269         (comdat_type_node): New type.
6270         (skeleton_chain_node): New type.
6271         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
6272         (comdat_type_list): New variable.
6273         (dwarf_tag_name): Add DW_TAG_type_unit.
6274         (dwarf_attr_name): Add DW_AT_signature.
6275         (add_AT_data8): New function.
6276         (replace_child): New function.
6277         (move_all_children): New function.
6278         (print_signature): New function.
6279         (print_die): Print signature information; add dw_val_class_data8.
6280         (attr_checksum): Support dw_val_class_data8.
6281         (CHECKSUM_STRING): Redefine for DWARF-4 to include trailing NULL byte.
6282         (CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
6283         (checksum_sleb128, checksum_uleb128): New functions.
6284         (checksum_die_context): New function.
6285         (loc_checksum_ordered): New function.
6286         (attr_checksum_ordered): New function.
6287         (struct checksum_attributes): New structure.
6288         (collect_checksum_attributes): New function.
6289         (die_checksum_ordered): New function.
6290         (generate_type_signature): New function.
6291         (same_dw_val_p): Add dw_val_class_data8.
6292         (is_symbol_die): Use new is_declaration_die function.
6293         (is_declaration_die): New function.
6294         (should_move_die_to_comdat): New function.
6295         (clone_die): New function.
6296         (clone_tree): New function.
6297         (clone_as_declaration): New function.
6298         (copy_declaration_context): New function.
6299         (generate_skeleton_ancestor_tree): New function.
6300         (generate_skeleton_bottom_up): New function.
6301         (generate_skeleton): New function.
6302         (remove_child_or_replace_with_skeleton): New function.
6303         (break_out_comdat_types): New function.
6304         (struct decl_table_entry): New type.
6305         (htab_decl_hash): New function.
6306         (htab_decl_eq): New function.
6307         (htab_decl_del): New function.
6308         (copy_ancestor_tree): New function.
6309         (copy_decls_walk): New function.
6310         (copy_decls_for_unworthy_types): New function.
6311         (build_abbrev_table): Don't assert on missing die_symbol when doing
6312         comdat type sections.
6313         (size_of_die): Use DW_FORM_sig8 for external references.  Add
6314         dw_val_class_data8.
6315         (unmark_dies): Don't assert for unmarked dies when doing comdat
6316         type sections.
6317         (value_format): Support DW_FORM_sig8 and dw_val_class_data8.
6318         (output_signature): New function.
6319         (output_die): Likewise.
6320         (output_compilation_unit_header): Mark output as DWARF version 3
6321         even if generating DWARF 4.
6322         (output_comdat_type_unit): New function.
6323         (output_line_info): Mark output as DWARF version 3 even if generating
6324         DWARF 4.
6325         (dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
6326         DWARF-4.
6327         (dwarf2out_end_source_file): Likewise.
6328         (prune_unused_types_walk_attribs): Don't follow references into
6329         comdat type sections.
6330         (prune_unused_types_mark): When generating type units, do not mark
6331         children of non-defining declarations of types; do mark children of
6332         type entries.
6333         (prune_unused_types): Process comdat type sections.
6334         (htab_ct_hash): New function.
6335         (htab_ct_eq): New function.
6336         (dwarf2out_finish): Move types to comdat sections when using DWARF-4.
6337         Add a pointer to the line table from type unit entries so
6338         DW_AT_decl_file has meaning.
6339         * varasm.c (default_elf_asm_named_section): Use identifier name as
6340         comdat key instead of lang hook.
6341
6342 2009-10-02  Neil Vachharajani  <nvachhar@google.com>
6343
6344         * gcov-io.c (gcov_open): Open files read-only when MODE < 0.
6345
6346 2009-10-02  Uros Bizjak  <ubizjak@gmail.com>
6347
6348         * config/i386/i386.md (SWIM248): New mode iterator.
6349         (divmod<mode>4) Macroize expander from divmoddi4, divmodsi4 and
6350         divmodhi4 patterns using SWIM248 macro.
6351         (*divmod<mode>4): Macroize insn_and_split pattern from
6352         *divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
6353         and their corresponding splitters usign SWIM248 macro.  Split SImode
6354         insn to generate cltd and DImode insn to generate cqto instead of
6355         move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
6356         (*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
6357         (*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
6358         *divmodsi_noext patterns using SWIM248 macro.
6359         (udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
6360         udivmodhi4 patterns using SWIM248 macro.
6361         (*udivmod<mode>4): Macroize insn_and_split pattern from
6362         *udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
6363         corresponding splitters using SWIM248 macro.
6364         (*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
6365         *udivmodsi4_noext and *udivmodhi_noext patterns using SWIM248 macro.
6366
6367 2009-10-02  Eric Botcazou  <ebotcazou@adacore.com>
6368
6369         * stor-layout.c (layout_type) <ARRAY_TYPE>: Make sure that an array
6370         of zero-sized element is zero-sized regardless of its extent.
6371
6372 2009-10-02  Jakub Jelinek  <jakub@redhat.com>
6373
6374         PR debug/40521
6375         * configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
6376         * configure: Regenerated.
6377         * config.in: Regenerated.
6378         * dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
6379         !HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
6380         (dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
6381         not emitting .eh_frame, emit .cfi_sections .debug_frame
6382         directive.
6383
6384         PR debug/41404
6385         PR debug/41353
6386         * cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
6387         CONST_STRING if STRING_CST contains embedded '\0's or doesn't end
6388         with '\0'.
6389         (expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
6390         vars use DECL_RTL with resetting it back to NULL afterwards.
6391         * dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
6392         rtx_equal_p instead of asserting it is a SYMBOL_REF.
6393         (value_format): For dw_val_class_addr only use DW_FORM_addr if
6394         the attribute type allows it, otherwise use DW_FORM_dataN.
6395         (mem_loc_descriptor): Handle CONST_STRING.
6396         (add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
6397         Handle MEM with CONST_STRING address using add_AT_string.
6398         (rtl_for_decl_init): Return MEM with CONST_STRING address instead of
6399         CONST_STRING for const arrays initialized with a string literal.
6400         (resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
6401         (dwarf2out_finish): Call resolve_addr.
6402
6403 2009-10-02  Andreas Schwab  <schwab@linux-m68k.org>
6404             Maxim Kuvyrkov  <maxim@codesourcery.com>
6405
6406         * config/m68k/lb1sf68.asm (PICCALL): Use variable sized branch.
6407
6408 2009-10-02  Nick Clifton  <nickc@redhat.com>
6409
6410         * config/mn10300/mn10300.h (USER_LABEL_PREFIX): Define.
6411         (ASM_OUTPUT_LABELREF): Use asm_fprintf and %U.
6412
6413 2009-10-01  Jan Hubicka  <jh@suse.cz>
6414
6415         * cgraph.c (cgraph_clone_node): Add redirect_callers parameter.
6416         (cgraph_create_virtual_clone): Just pass redirect_callers
6417         around.
6418         * cgraph.h (cgraph_clone_node): Update prototype.
6419         * ipa-pure-const.c (self_recursive_p): New function.
6420         (propagate): Use it.
6421         * ipa-inline.c (cgraph_clone_inlined_nodes,
6422         cgraph_decide_recursive_inlining): Update.
6423
6424 2009-10-01  David Daney  <ddaney@caviumnetworks.com>
6425
6426         * gcc/config/mips/mips.c (mips_process_sync_loop) Emit syncw
6427         instructions for TARGET_OCTEON.
6428
6429 2009-10-01  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
6430
6431         * config/arm/arm.c (arm_override_options): Turn off
6432         flag_dwarf2_cfi_asm for AAPCS variants.
6433
6434 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6435
6436         PR middle-end/12392
6437         * tree-sra.c (convert_callers): Do not call
6438         compute_inline_parameters on one caller more than once.
6439
6440 2009-10-01  Nick Clifton  <nickc@redhat.com>
6441
6442         * config/vax/netbsd-elf.h (NETBSD_CC1_AND_CC1PLUS_SPEC): Define as
6443         an empty string if not already defined.
6444
6445 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6446
6447         PR bootstrap/41395
6448         * tree-sra.c (is_va_list_type): New function.
6449         (find_var_candidates): Call is_va_list_type.
6450         (find_param_candidates): Check that the type or the type pointed
6451         to are not va_list types.
6452
6453 2009-10-01  Martin Jambor  <mjambor@suse.cz>
6454
6455         PR c++/41503
6456         * cp/pt.c (function_parameter_expanded_from_pack_p): Return false if
6457         DECL_ARTIFICIAL (param_decl) is true.
6458
6459 2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
6460
6461         * tree.h (tree_decl_common::lang_flag_8): New.
6462         * c-common.c (c_common_reswords): Include "constexpr" as C++0x
6463         keyword.
6464         * c-common.h (RID_CONSTEXPR): New.
6465
6466 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6467
6468         * config/alpha/alpha.c (alpha_gimplify_va_arg_1):
6469         Use ref-all pointers.
6470         (alpha_gimplify_va_arg): Ditto.
6471
6472 2009-09-30  Jakub Jelinek  <jakub@redhat.com>
6473
6474         PR target/41279
6475         * cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
6476         before insn counting loop now that BB_END (bb) is counted.  Ensure
6477         the return value isn't zero.
6478
6479 2009-09-30  Nick Clifton  <nickc@redhat.com>
6480
6481         * config.gcc (sh-symbianelf): Replace definition of extra_objs
6482         with separate definitions of c_target_objs and cxx_target_objs.
6483         * config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
6484         and symbian-base.o.
6485         * config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
6486         sh_symbian_import_export_class.
6487         * config/sh/sh-protos.h: Fix names of exported symbian functions.
6488         * config/sh/symbian.c: Delete, moving code into...
6489         * config/sh/symbian-base.c: ... here
6490         * config/sh/symbian-c.c: ... and here
6491         * config/sh/symbian-cxx.c: ... and here.
6492
6493 2009-09-30  Uros Bizjak  <ubizjak@gmail.com>
6494
6495         PR target/22093
6496         * config/alpha/alpha.md (unaligned_storehi_be): Force operand
6497         of plus RTX into register.
6498
6499 2009-09-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6500
6501         * doc/install.texi: Linguistic and markup fixes.
6502         (Configuration) <--disable-cpp>: Remove description.
6503         <--enable-maintainer-mode>: Autotools files are affected, too.
6504         <--with-sysroot>: Improve description.
6505         (Building): Bump required GNU make version.
6506
6507 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6508
6509         * config.gcc (i[34567]86-*-*): Include fma4intrin.h.
6510         (x86_64-*-*): Ditto.
6511
6512         * config/i386/fma4intrin.h: New file, provide common x86 compiler
6513         intrinisics for FMA4.
6514         * config/i386/cpuid.h (bit_FMA4): Define FMA4 bit.
6515         * config/i386/x86intrin.h: Fix typo to SSE4A instead of SSE4a.
6516         Add FMA4 check and fma4intrin.h.
6517         * config/i386/i386-c.c(ix86_target_macros_internal): Check
6518         ISA_FLAG for FMA4.
6519         * config/i386/i386.h(TARGET_FMA4): New macro for FMA4.
6520         * config/i386/i386.md (UNSPEC_FMA4_INTRINSIC): Add new UNSPEC
6521         constant for FMA4 support.
6522         (UNSPEC_FMA4_FMADDSUB): Ditto.
6523         (UNSPEC_FMA4_FMSUBADD): Ditto.
6524         * config/i386/i386.opt (-mfma4): New switch for FMA4 support.
6525         * config/i386/i386-protos.h (ix86_fma4_valid_op_p): Add declaration.
6526         (ix86_expand_fma4_multiple_memory): Ditto.
6527         * config/i386/i386.c (OPTION_MASK_ISA_FMA4_SET): New.
6528         (OPTION_MASK_ISA_FMA4_UNSET): New.
6529         (OPTION_MASK_ISA_SSE4A_UNSET): Change definition to depend on FMA4.
6530         (OPTION_MASK_ISA_AVX_UNSET): Change definition to depend on FMA4.
6531         (ix86_handle_option): Handle -mfma4.
6532         (isa_opts): Handle -mfma4.
6533         (enum pta_flags): Add PTA_FMA4.
6534         (override_options): Add FMA4 support.
6535         (IX86_BUILTIN_VFMADDSS): New for FMA4 intrinsic.
6536         (IX86_BUILTIN_VFMADDSD): Ditto.
6537         (IX86_BUILTIN_VFMADDPS): Ditto.
6538         (IX86_BUILTIN_VFMADDPD): Ditto.
6539         (IX86_BUILTIN_VFMSUBSS): Ditto.
6540         (IX86_BUILTIN_VFMSUBSD): Ditto.
6541         (IX86_BUILTIN_VFMSUBPS): Ditto.
6542         (IX86_BUILTIN_VFMSUBPD): Ditto.
6543         (IX86_BUILTIN_VFMADDSUBPS): Ditto.
6544         (IX86_BUILTIN_VFMADDSUBPD): Ditto.
6545         (IX86_BUILTIN_VFMSUBADDPS): Ditto.
6546         (IX86_BUILTIN_VFMSUBADDPD): Ditto.
6547         (IX86_BUILTIN_VFNMADDSS): Ditto.
6548         (IX86_BUILTIN_VFNMADDSD): Ditto.
6549         (IX86_BUILTIN_VFNMADDPS): Ditto.
6550         (IX86_BUILTIN_VFNMADDPD): Ditto.
6551         (IX86_BUILTIN_VFNMSUBSS): Ditto.
6552         (IX86_BUILTIN_VFNMSUBSD): Ditto.
6553         (IX86_BUILTIN_VFNMSUBPS): Ditto.
6554         (IX86_BUILTIN_VFNMSUBPD): Ditto.
6555         (IX86_BUILTIN_VFMADDPS256): Ditto.
6556         (IX86_BUILTIN_VFMADDPD256): Ditto.
6557         (IX86_BUILTIN_VFMSUBPS256): Ditto.
6558         (IX86_BUILTIN_VFMSUBPD256): Ditto.
6559         (IX86_BUILTIN_VFMADDSUBPS256): Ditto.
6560         (IX86_BUILTIN_VFMADDSUBPD256): Ditto.
6561         (IX86_BUILTIN_VFMSUBADDPS256): Ditto.
6562         (IX86_BUILTIN_VFMSUBADDPD256): Ditto.
6563         (IX86_BUILTIN_VFNMADDPS256): Ditto.
6564         (IX86_BUILTIN_VFNMADDPD256): Ditto.
6565         (IX86_BUILTIN_VFNMSUBPS256): Ditto.
6566         (IX86_BUILTIN_VFNMSUBPD256): Ditto.
6567         (enum multi_arg_type): New enum for describing the various FMA4
6568         intrinsic argument types.
6569         (bdesc_multi_arg): New table for FMA4 intrinsics.
6570         (ix86_init_mmx_sse_builtins): Add FMA4 intrinsic support.
6571         (ix86_expand_multi_arg_builtin): New function for creating FMA4
6572         intrinsics.
6573         (ix86_expand_builtin): Add FMA4 intrinsic support.
6574         (ix86_fma4_valid_op_p): New function to validate FMA4 3 and 4
6575         operand instructions.
6576         (ix86_expand_fma4_multiple_memory): New function to split the
6577         second memory reference from FMA4 instructions.
6578         * config/i386/sse.md (ssemodesuffixf4): New mode attribute for FMA4.
6579         (ssemodesuffixf2s): Ditto.
6580         (fma4_fmadd<mode>4): Add FMA4 floating point multiply/add
6581         instructions.
6582         (fma4_fmsub<mode>4): Ditto.
6583         (fma4_fnmadd<mode>4): Ditto.
6584         (fma4_fnmsub<mode>4): Ditto.
6585         (fma4_vmfmadd<mode>4): Ditto.
6586         (fma4_vmfmsub<mode>4): Ditto.
6587         (fma4_vmfnmadd<mode>4): Ditto.
6588         (fma4_vmfnmsub<mode>4): Ditto.
6589         (fma4_fmadd<mode>4256): Ditto.
6590         (fma4_fmsub<mode>4256): Ditto.
6591         (fma4_fnmadd<mode>4256): Ditto.
6592         (fma4_fnmsub<mode>4256): Ditto.
6593         (fma4_fmaddsubv8sf4): Ditto.
6594         (fma4_fmaddsubv4sf4): Ditto.
6595         (fma4_fmaddsubv4df4): Ditto.
6596         (fma4_fmaddsubv2df4): Ditto.
6597         (fma4_fmsubaddv8sf4): Ditto.
6598         (fma4_fmsubaddv4sf4): Ditto.
6599         (fma4_fmsubaddv4df4): Ditto.
6600         (fma4_fmsubaddv2df4): Ditto.
6601         (fma4i_fmadd<mode>4): Add FMA4 floating point multiply/add
6602         instructions for intrinsics.
6603         (fma4i_fmsub<mode>4): Ditto.
6604         (fma4i_fnmadd<mode>4): Ditto.
6605         (fma4i_fnmsub<mode>4): Ditto.
6606         (fma4i_vmfmadd<mode>4): Ditto.
6607         (fma4i_vmfmsub<mode>4): Ditto.
6608         (fma4i_vmfnmadd<mode>4): Ditto.
6609         (fma4i_vmfnmsub<mode>4): Ditto.
6610         (fma4i_fmadd<mode>4256): Ditto.
6611         (fma4i_fmsub<mode>4256): Ditto.
6612         (fma4i_fnmadd<mode>4256): Ditto.
6613         (fma4i_fnmsub<mode>4256): Ditto.
6614         (fma4i_fmaddsubv8sf4): Ditto.
6615         (fma4i_fmaddsubv4sf4): Ditto.
6616         (fma4i_fmaddsubv4df4): Ditto.
6617         (fma4i_fmaddsubv2df4): Ditto.
6618         (fma4i_fmsubaddv8sf4): Ditto.
6619         (fma4i_fmsubaddv4sf4): Ditto.
6620         (fma4i_fmsubaddv4df4): Ditto.
6621         (fma4i_fmsubaddv2df4): Ditto.
6622
6623         * doc/invoke.texi (-mfma4): Add documentation.
6624         * doc/extend.texi (x86 intrinsics): Add FMA4 intrinsics.
6625
6626 2009-09-29  Richard Henderson  <rth@redhat.com>
6627
6628         * tree-eh.c (unsplit_eh): Do not unsplit if there's already
6629         an edge to the new destination block.
6630
6631 2009-09-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6632
6633         PR target/41393
6634         * pa.c (hppa_profile_hook): Use
6635         make_reg_eh_region_note_nothrow_nononlocal to add REG_EH_REGION note.
6636
6637 2009-09-29  Steve Ellcey  <sje@cup.hp.com>
6638             Alexander Monakov  <amonakov@ispras.ru>
6639
6640         PR target/41365
6641         * config/ia64/predicates.md (not_postinc_destination_operand): New.
6642         (not_postinc_memory_operand): New.
6643         (not_postinc_move_operand): New.
6644         * config/ia64/ia64.md (*cmovdi_internal): Disallow autoincrement.
6645         (*cmovsi_internal): Ditto.
6646
6647 2009-09-29  Pat Haugen  <pthaugen@us.ibm.com>
6648
6649         * config/rs6000/rs6000.c (rs6000_issue_rate): Don't artificially
6650         restrict issue_rate in first pass when scheduling for register
6651         pressure.
6652
6653 2009-09-29  Basile Starynkevitch  <basile@starynkevitch.net>
6654             Rafael Avila de Espindola  <espindola@google.com>
6655
6656         * gengtype.c (plugin_output): New.
6657         (get_output_file_with_visibility): Return plugin_output for plugins.
6658         (main): Parse and use the -P option.
6659         * gty.texi: Update the command line format.
6660
6661 2009-09-29  Jakub Jelinek  <jakub@redhat.com>
6662
6663         PR debug/41438
6664         * dwarf2out.c (const_ok_for_output_1, const_ok_for_output): New
6665         functions.
6666         (mem_loc_descriptor, loc_descriptor, add_const_value_attribute): Bail
6667         out if !const_ok_for_output.
6668
6669         PR debug/41474
6670         * dwarf2out.c (mem_loc_descriptor) <case CONCAT, case CONCATN,
6671         case VAR_LOCATION>: Remove gcc_unreachable ().
6672
6673 2009-09-29  Harsha Jagasia  <harsha.jagasia@amd.com>
6674
6675         * config.gcc (i[34567]86-*-*): Remove mmintrin-common.h.
6676         (x86_64-*-*): Ditto.
6677         * config/i386/smmintrin.h: Move instructions in mmintrin-common.h
6678         back to smmintrin.h.
6679         * config/i386/cpuid.h (bit_SSE5): Remove SSE5 bit.
6680         * config/i386/x86intrin.h: Remove SSE5.
6681         * config/i386/mmintrin-common.h: Delete file.
6682         * doc/extend.texi (x86 intrinsics): Remove SSE5 flags and builtins.
6683
6684 2009-09-29  Richard Guenther  <rguenther@suse.de>
6685
6686         * alias.c (ao_ref_from_mem): Properly deal with off decl accesses
6687         resulting from stack temporaries on STRICT_ALIGNMENT targets.
6688
6689 2009-09-29  Nick Clifton  <nickc@redhat.com>
6690
6691         * function.c (current_function_name): If there is no current
6692         function just return "<none>".
6693
6694 2009-09-28  Sriraman Tallam  <tmsriram@google.com>
6695
6696         * tree-pass.h (register_pass_info): New structure.
6697         (pass_positioning_ops): Move enum from gcc-plugin.h.
6698         (register_pass): New function.
6699         * gcc-plugin.h (plugin_pass): Delete structure.
6700         (pass_positioning_ops): Delete enum.
6701         * plugin.c (regsiter_pass): Delete function.
6702         (position_pass): Delete function.
6703         (added_pass_nodes): Delete variable.
6704         (prev_added_pass_nodes): Delete variable.
6705         (pass_list_node): Delete structure.
6706         * passes.c (make_pass_instance): New function.
6707         (next_pass_1): Change to call make_pass_instance.
6708         (pass_list_node): Move structure from gcc-plugin.h.
6709         (added_pass_nodes): Move variable from plugin.c.
6710         (prev_added_pass_nodes): Move variable from plugin.c.
6711         (position_pass): New function.
6712         (register_pass): New function.
6713
6714 2009-09-28  Easwaran Raman  <eraman@google.com>
6715
6716         * ifcvt.c (noce_try_abs): Recognize pattern and call
6717         expand_one_cmpl_abs_nojump.
6718         * optabs.c (expand_one_cmpl_abs_nojump): New function.
6719         * optabs.h (expand_one_cmpl_abs_nojump): Declare.
6720
6721 2009-09-28  Ian Lance Taylor  <iant@google.com>
6722
6723         PR middle-end/40500
6724         * c-opts.c (c_common_handle_option): Don't set
6725         warn_jump_misses_init for -Wall.
6726         * doc/invoke.texi (Warning Options): Update documentation.
6727
6728 2009-09-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6729
6730         * Makefile.in ($(out_object_file)): Depend on
6731         gt-$(basename $(notdir $(out_file))).h.
6732
6733 2009-09-28  Richard Henderson  <rth@redhat.com>
6734
6735         * except.h (struct eh_region_d): Add use_cxa_end_cleanup.
6736         * except.c (gen_eh_region): Set it.
6737         (duplicate_eh_regions_1): Copy it.
6738         * tree-eh.c (lower_resx): Use it to determine which function
6739         to call to resume.
6740
6741         * langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
6742         * langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
6743         * builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
6744         * tree.c (build_common_builtin_nodes): Remove parameter.  Build
6745         BUILT_IN_CXA_END_CLEANUP if necessary.
6746
6747         * c-common.c (c_define_builtins): Update call to
6748         build_common_builtin_nodes.
6749
6750 2009-09-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6751
6752         * spu.c (get_branch_target): Return NULL for ASM_OPERANDS patterns.
6753
6754 2009-09-28  Michael Matz  <matz@suse.de>
6755
6756         * builtins.c (interclass_mathfn_icode): New helper.
6757         (expand_builtin_interclass_mathfn): Use it here, and split folding
6758         into ...
6759         (fold_builtin_interclass_mathfn): ... this new folder.
6760         (build_call_nofold_loc): New static helper.
6761         (build_call_nofold): New wrapper macro for above.
6762         (expand_builtin_int_roundingfn): Use it instead of build_call_expr.
6763         (expand_builtin_pow): Ditto.
6764         (expand_builtin_memset_args): Ditto.
6765         (expand_builtin_printf): Ditto.
6766         (expand_builtin_fprintf): Ditto.
6767         (expand_builtin_sprintf): Ditto.
6768         (expand_builtin_memory_chk): Ditto.
6769         (expand_builtin_mempcpy_args): Ditto and don't call folders.
6770         (expand_builtin_stpcpy): Ditto.
6771         (expand_builtin_strcmp): Ditto.
6772         (expand_builtin_strncmp): Ditto.
6773         (expand_builtin_strcpy): Remove FNDECL and MODE arguments.
6774         (expand_builtin_strcpy_args): Don't call folders.
6775         (expand_builtin_memcmp): Ditto.
6776         (expand_builtin_strncpy): Ditto, and use target.
6777         (expand_builtin_memcpy): Ditto.
6778         (expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
6779         expand_builtin_strpbrk, expand_builtin_memmove,
6780         expand_builtin_memmove_args, expand_builtin_bcopy,
6781         expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
6782         expand_builtin_strspn, expand_builtin_strcspn,
6783         expand_builtin_fputs): Remove these.
6784         (expand_builtin): Don't call the above, change calls to other
6785         expanders that changed prototype.
6786         (fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
6787         (fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
6788         fold_builtin_interclass_mathfn.
6789         (fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
6790         (fold_builtin_strcat): Add folding split from expand_builtin_strcat.
6791
6792         * fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
6793         * passes.c (init_optimization_passes): Move pass_fold_builtins
6794         after last phiopt pass.
6795         * tree-inline.c (fold_marked_statements): When folding builtins
6796         iterate over all instruction potentially generated.
6797         * tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
6798         earlier.
6799         (fold_gimple_call): Use it to always fold calls (into potentially
6800         multiple instructions).
6801         * tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
6802         calls into zero at this time.
6803         * tree-ssa-propagate.c (substitute_and_fold): Ignore multiple
6804         statements generated by builtin folding.
6805
6806 2009-09-28  Nick Clifton  <nickc@redhat.com>
6807
6808         * config/m32r/m32r.c (m32r_is_insn): Return false for debugging insns.
6809
6810 2009-09-28  Duncan Sands  <baldrick@free.fr>
6811
6812         * gcc-plugin.h (PLUGIN_REGISTER_GGC_CACHES): New event.
6813         * plugin.c (plugin_event_name): Add PLUGIN_REGISTER_GGC_CACHES.
6814         (register_callback): Dispatch it.
6815         (invoke_plugin_callbacks): Incorporate in sanity check.
6816         * ggc.h (ggc_register_cache_tab): Add declaration.
6817         * ggc-common.c (ggc_register_root_tab): Simplify.
6818         (const_ggc_cache_tab_t): New typedef.
6819         (extra_cache_vec): New vector of dynamically added cache tables.
6820         (ggc_register_cache_tab): New function.
6821         (ggc_scan_cache_tab): New function.
6822         (ggc_mark_roots): Simplify dynamic roots.  Handle dynamic caches.
6823         * doc/plugins.texi: Document PLUGIN_REGISTER_GGC_CACHES.
6824
6825 2009-09-27  Richard Henderson  <rth@redhat.com>
6826
6827         * tree-ssa-ccp.c (optimize_stack_restore): Relax the conditions under
6828         which we remove __builtin_stack_restore.
6829
6830 2009-09-27  Bernd Schmidt  <bernd.schmidt@analog.com>
6831
6832         * loop-iv.c (iv_analyze_op): Use function_invariant_p, not CONSTANT_P,
6833         to test for GRD_INVARIANT.
6834         (simple_rhs_p): Anything that's function_invariant_p is fine.
6835
6836 2009-09-27  Rafael Avila de Espindola  <espindola@google.com>
6837
6838         * gengtype.c (main): Use plunge_files instead of plugin_output.
6839
6840 2009-09-27  Basile Starynkevitch  <basile@starynkevitch.net>
6841             Rafael Avila de Espindola  <espindola@google.com>
6842
6843         * gengtype.c (write_root, write_roots): Add a emit_pch argument.
6844         Don't print pch related info if it is false.
6845         (main): Don't print pch info in plugin mode.
6846
6847 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6848
6849         * dwarf2out.c (enum dw_val_class): Replace dw_val_class_long_long
6850         with dw_val_class_const_double.
6851         (struct dw_val_struct): Replace val_long_long with val_double and
6852         adjust for above change.
6853         (output_loc_operands): Likewise.
6854         (add_AT_long_long): Rename into...
6855         (add_AT_double): ...this.
6856         (print_die): Replace dw_val_class_long_long with
6857         dw_val_class_const_double and adjust.
6858         (attr_checksum): Likewise.
6859         (same_dw_val_p): Likewise.
6860         (size_of_die): Likewise.
6861         (value_format): Likewise.
6862         (output_die): Likewise.
6863         (loc_descriptor) <CONST_DOUBLE>: Likewise.
6864         (add_const_value_attribute) <CONST_DOUBLE>: Call add_AT_double
6865         instead of add_AT_long_long.
6866         (add_bound_info) <INTEGER_CST>: Generate the bound as an unsigned
6867         value with the precision of its type.
6868
6869 2009-09-27  Andreas Schwab  <schwab@linux-m68k.org>
6870
6871         PR c/41476
6872         * c-typeck.c (build_conditional_expr): Use the readonly and
6873         volatile flags of the operand types, not of the operands itself.
6874
6875 2009-09-27  Peter O'Gorman  <pogma@thewrittenword.com>
6876
6877         * collect2.c (main): Look for -brtl before adding libraries.
6878
6879 2009-09-27  Jonathan Gray  <jsg@openbsd.org>
6880
6881         * config.gcc: Update OpenBSD targets.
6882         * config/openbsd-stdint.h: New file.
6883         * config/openbsd-libpthread.h: New file.
6884         * config/openbsd.h: Update and break out LIB_SPEC definition.
6885         * config/alpha/openbsd.h: Overhaul to reflect ELF migration.
6886         * config/i386/openbsdelf.h: Correct types.
6887         * config/m68k/openbsd.h: Likewise.
6888         * config/mips/openbsd.h: Likewise.
6889         * config/vax/openbsd.h: Likewise.
6890
6891 2009-09-27  Eric Botcazou  <ebotcazou@adacore.com>
6892
6893         * fold-const.c (maybe_lvalue_p): Return false for M(IN|AX)_EXPR.
6894         (extract_muldiv_1) <MINUS_EXPR>: Swap operands if necessary.
6895         * stor-layout.c (layout_type) <ARRAY_TYPE>: Do not take the maximum
6896         of the length and zero.
6897
6898 2009-09-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6899
6900         * Makefile.in (TOPLEV_H): Use $(INPUT_H) not input.h.
6901         (FLAGS_H): Add options.h $(REAL_H).
6902         (SEL_SCHED_IR_H): Add $(BITMAP_H) vecprim.h $(CFGLOOP_H).
6903         (TREE_VECTORIZER_H): New.
6904         (EBITMAP_H): Renamed from EBIMAP_H.
6905         (c-decl.o, c-objc-common.o, c-pretty-print.o, attribs.o, c-omp.o)
6906         (gtype-desc.o, ggc-common.o, ggc-page.o, ggc-zone.o, langhooks.o)
6907         (tree.o, tree-ssa-structalias.o, tree-ssa-ter.o, tree-ssanames.o)
6908         (tree-phinodes.o, tree-ssa-loop.o, tree-ssa-math-opts.o)
6909         (gimple-low.o, omp-low.o, sese.o, graphite-blocking.o)
6910         (graphite-clast-to-gimple.o, graphite-dependences.o)
6911         (graphite-interchange.o, graphite-poly.o, graphite-scop-detection.o)
6912         (graphite-sese-to-poly.o, tree-vect-loop.o, tree-vect-loop-manip.o)
6913         (tree-vect-patterns.o, tree-vect-slp.o, tree-vect-stmts.o)
6914         (tree-vect-data-refs.o, tree-vectorizer.o, gimple.o, tree-mudflap.o)
6915         (targhooks.o, stmt.o, emit-rtl.o, ipa.o, matrix-reorg.o, ipa-inline.o)
6916         (gcse.o, tree-ssa-ccp.o, df-byte-scan.o, vec.o, caller-save.o)
6917         (ira-build.o, ira-costs.o, ira-color.o, ira-emit.o, ira.o)
6918         (haifa-sched.o, sched-rgn.o, sel-sched.o, sel-sched-dump.o)
6919         (sel-sched-ir.o, final.o, $(out_object_file)): Dependencies
6920         updated and fixed as per above changes and per
6921         check_makefile_deps.sh output.
6922
6923         PR bootstrap/40928
6924         * configure.ac: Use $LIBS for '-ldl', not $LDFLAGS.
6925         * configure: Regenerate.
6926
6927 2009-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6928
6929         * doc/install.texi: Update minimum MPC version to 0.7.
6930
6931 2009-09-26  Gerald Pfeifer  <gerald@pfeifer.com>
6932
6933         * doc/install.texi (Binaries): Remove reference to the binary
6934         distribution CD-ROM from the FSF.
6935
6936 2009-09-26  Michael Matz  <matz@suse.de>
6937
6938         PR lto/40758
6939         PR middle-end/41470
6940         * tree-ssa-coalesce.c (coalesce_ssa_name): Add only SSA names
6941         that are mentioned in the body.
6942
6943 2009-09-26  Michael Matz  <matz@suse.de>
6944
6945         PR tree-optimization/41454
6946         * tree-ssa-dom (stmts_to_rescan): Remove variable.
6947         (tree_ssa_dominator_optimize): Don't allocate and free it.
6948         (dom_opt_leave_block): Don't iterate over it.
6949         (eliminate_redundant_computations): Don't return a value.
6950         (cprop_operand, cprop_into_stmt): Ditto.
6951         (optimize_stmt): Don't defer updating stmts.
6952
6953 2009-09-25  Dodji Seketeli  <dodji@redhat.com>
6954
6955         * dwarf2out.c (dwarf_tag_name, gen_generic_params_dies,
6956         generic_parameter_die, template_parameter_pack_die,
6957         gen_formal_parameter_die, gen_subprogram_die): Adjust after
6958         renaming DW_TAG_formal_parameter_pack and
6959         DW_TAG_template_parameter_pack into DW_TAG_GNU_formal_parameter_pack
6960         and DW_TAG_GNU_template_parameter_pack.
6961
6962 2009-09-25  Anatoly Sokolov  <aesok@post.ru>
6963
6964         * config/v850/v850.h (FUNCTION_VALUE): Remove.
6965         * config/v850/v850.c (v850_function_value): New function.
6966         (TARGET_FUNCTION_VALUE): Define.
6967
6968 2009-09-25  Jakub Jelinek  <jakub@redhat.com>
6969
6970         * tree-vect-stmts.c (vectorizable_call): Call
6971         mark_symbols_for_renaming after vect_finish_stmt_generation.
6972
6973         * dwarf2out.c (tls_mem_loc_descriptor): Pass 1 instead of 2
6974         to loc_descriptor_from_tree.
6975         (add_location_or_const_value_attribute): Pass 0 instead of 2
6976         for decl_by_reference_p decls.
6977
6978 2009-09-25  Richard Guenther  <rguenther@suse.de>
6979
6980         PR middle-end/41463
6981         * tree-dfa.c (get_ref_base_and_extent): Fix issue with trailing
6982         arrays again.
6983
6984 2009-09-25  Ben Elliston  <bje@au.ibm.com>
6985
6986         * doc/invoke.texi (RS/6000 and PowerPC Options): Add missing comma
6987         after `power7'.
6988
6989 2009-09-25  Alan Modra  <amodra@bigpond.net.au>
6990
6991         * config/rs6000/rs6000.md (load_toc_v4_PIC_3c): Correct POWER
6992         form of instruction.
6993
6994 2009-09-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6995
6996         PR middle-end/41435
6997         * fold-const.c (const_binop): Handle complex int division.
6998         * tree-complex.c (expand_complex_div_straight,
6999         expand_complex_div_wide): Update comments.
7000
7001 2009-09-24  DJ Delorie  <dj@redhat.com>
7002
7003         PR target/41456
7004         * config/m32c/m32c.h (REG_CLASS_CONTENTS): Add R13.
7005         (reg_class): Likewise.
7006         (REG_CLASS_NAMES): Likewise.
7007         * config/m32c/m32c.c (m32c_reg_class_from_constraint): Likewise.
7008         (m32c_override_options): Disable -fivopts for M32C.
7009
7010 2009-09-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
7011
7012         * config/rs6000/predicates.md (indexed_or_indirect_operand):
7013         Delete VSX load/store with update support.
7014         * config/rs6000/rs6000.c (rs6000_legitimate_address_p): Ditto.
7015         * config/rs6000/vsx.md (vsx_mov<mode>): Ditto.
7016         (vsx_movti): Ditto.
7017         (VSX_U): Delete.
7018         (VSbit): Ditto.
7019         (VStype_load_update): Ditto.
7020         (VStype_store_update): Ditto.
7021         (vsx_load<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7022         (vsx_store<VSX_U:mode>_update_<P:mptrsize>): Ditto.
7023
7024         * config/rs6000/rs6000.h (enum rs6000_builtins): Delete VSX
7025         load/store with update builtins.
7026
7027 2009-09-24  Kai Tietz  <kai.tietz@onevision.com>
7028
7029         * libgcc2.c (L_trampoline): Prototype for getpagesize
7030         and mprotect in WINNT case.
7031
7032 2009-09-24  Anatoly Sokolov  <aesok@post.ru>
7033
7034         * config/rs6000/rs6000.h (FUNCTION_VALUE): Remove macro.
7035         * config/rs6000/rs6000-protos.h (rs6000_function_value): Remove.
7036         * config/rs6000/rs6000.c (rs6000_function_value): Make static, add
7037         'outgoing' argument.
7038         (TARGET_FUNCTION_VALUE): Define.
7039
7040 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7041
7042         * config/darwin.h (DWARF2_DEBUGGING_INFO): Define as 1.
7043
7044 2009-09-24  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
7045
7046         PR bootstrap/41405
7047         * common.opt: Initialize dwarf_strict to -1.
7048         * toplev.c (process_options): Catch unset dwarf_strict
7049         and set to 0 for all targets not overriding.
7050         * config/darwin.c (darwin_override_options): Catch unset
7051         dwarf_strict and override to 1.
7052
7053 2009-09-24  Jeff Law  <law@redhat.com>
7054
7055         * tree-into-ssa.c (rewrite_into_ssa): Free interesting_blocks.
7056
7057 2009-09-24  Richard Guenther  <rguenther@suse.de>
7058
7059         PR tree-optimization/36143
7060         PR tree-optimization/38747
7061         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Only
7062         create VIEW_CONVERT_EXPRs for TBAA compatible accesses.
7063
7064 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7065
7066         PR bootstrap/41457
7067         * dwarf2out.c (add_const_value_attribute): For HIGH and CONST_FIXED,
7068         return false instead of gcc_unreachable ().  For CONST return the
7069         value returned by recursive call instead of always returning true.
7070         (tree_add_const_value_attribute): Return the value returned by
7071         add_const_value_attribute instead of always returning true if rtl
7072         is non-NULL.
7073
7074 2009-09-23  Justin Seyster  <jrseys@gmail.com>
7075
7076         * Makefile.in (PLUGIN_HEADERS): Include real.h.
7077
7078 2009-09-24  Jakub Jelinek  <jakub@redhat.com>
7079
7080         * cgraphunit.c (cgraph_lower_function): Revert last change.
7081         * targhooks.c (default_static_chain): Use !DECL_STATIC_CHAIN
7082         instead of DECL_NO_STATIC_CHAIN.
7083         * tree-cfg.c (verify_gimple_call): Likewise.
7084         * tree-nested.c (get_chain_decl, get_chain_field,
7085         convert_tramp_reference_op, convert_gimple_call): Likewise.
7086         (convert_all_function_calls): Likewise.  Always set or clear
7087         DECL_STATIC_CHAIN initially, for !n->outer clear it.
7088         (lower_nested_functions): Remove DECL_NO_STATIC_CHAIN checking code.
7089         * c-parser.c (c_parser_declaration_or_fndef): Set DECL_STATIC_CHAIN
7090         if nested.
7091         * print-tree.c (print_node): Handle DECL_STATIC_CHAIN instead of
7092         DECL_NO_STATIC_CHAIN.
7093         * config/i386/i386.c (ix86_static_chain): Use !DECL_STATIC_CHAIN
7094         instead of DECL_NO_STATIC_CHAIN.
7095         (ix86_function_regparm, find_drap_reg): Likewise.  Don't test
7096         decl_function_context.
7097         * varasm.c (initializer_constant_valid_p): Likewise.
7098         * tree.h (DECL_NO_STATIC_CHAIN): Renamed to ...
7099         (DECL_STATIC_CHAIN): ... this.
7100         * config/moxie/moxie.c (moxie_static_chain): Use !DECL_STATIC_CHAIN
7101         instead of DECL_NO_STATIC_CHAIN.
7102
7103 2009-09-23  Basile Starynkevitch  <basile@starynkevitch.net>
7104             Rafael Avila de Espindola  <espindola@google.com>
7105
7106         * gengtype.c (nb_plugin_files): Make it unsigned to match
7107         num_gt_files. Adjust other variables to avoid warnings.
7108         (main): Allocate an all zero lang_bitmap before each plugin file name
7109         to match regular file names.
7110
7111 2009-09-23  Richard Henderson  <rth@redhat.com>
7112
7113         * doc/tm.texi (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7114         (TARGET_STATIC_CHAIN): Mention that this hook must be used for
7115         static chain passed in memory.
7116         * system.h (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Poison.
7117         * targhooks.c (default_static_chain): Don't handle STATIC_CHAIN,
7118         STATIC_CHAIN_INCOMING.  Issue a sorry if there's no
7119         STATIC_CHAIN_REGNUM defined.
7120
7121         * config/picochip/picochip-protos.h: s/class/klass/.
7122         * config/picochip/picochip.c (TARGET_STATIC_CHAIN): New.
7123         (picochip_static_chain): New.
7124         * config/picochip/picochip.h (STATIC_CHAIN): Remove.
7125         (STATIC_CHAIN_INCOMING): Remove.
7126
7127         * config/xtensa/xtensa.c (TARGET_STATIC_CHAIN): New.
7128         (xtensa_static_chain): New.
7129         * config/xtensa/xtensa.h (STATIC_CHAIN): Remove.
7130         (STATIC_CHAIN_INCOMING): Remove.
7131
7132 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7133
7134         * config/pa/pa.h (FUNCTION_VALUE): Remove macro.
7135         * config/pa/pa-protos.h (function_value): Remove.
7136         * config/pa/pa.c (pa_function_value): Rename from function_value.
7137         Make static, add 'outgoing' argument.
7138         (TARGET_FUNCTION_VALUE): Define.
7139
7140 2009-09-23  Anatoly Sokolov  <aesok@post.ru>
7141
7142         * config/avr/avr.c (avr_regs_to_save): Use current_function_is_leaf
7143         instead of cfun->machine->is_leaf.
7144         * config/avr/avr.h (machine_function): Remove is_leaf field.
7145
7146 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7147
7148         PR debug/41439
7149         * dwarf2out.c (address_of_int_loc_descriptor): Don't emit
7150         DW_OP_piece after DW_OP_stack_value, adjust size calculations
7151         for it, when DW_OP_stack_value and DW_OP_implicit_value has
7152         the same size, prefer DW_OP_stack_value.
7153         (loc_descriptor, loc_list_for_address_of_addr_expr_of_indirect_ref,
7154         loc_list_from_tree): Don't emit DW_OP_piece after DW_OP_stack_value.
7155
7156 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7157
7158         PR debug/41353
7159         * var-tracking.c (add_with_sets): Sort MO_VAL_LOC last among uses.
7160
7161 2009-09-23  Alexandre Oliva  <aoliva@redhat.com>
7162
7163         PR debug/41248
7164         * cfgexpand.c (convert_debug_memory_address): New.
7165         (expand_debug_expr): Convert base address and offset to the same
7166         mode.  Use it to convert addresses to other modes.  Accept
7167         ptr_mode addresses.
7168
7169 2009-09-23  Dodji Seketeli <dodji@redhat.com>
7170
7171         PR debug/41065
7172         * function.h (types_used_by_vars_hash): Declare new hash table.
7173         (types_used_by_vars_eq, types_used_by_var_decl_insert): Declare
7174         equality and hash function for the hash table.
7175         (types_used_by_cur_var_decl): Declare a new global chained list.
7176         (types_used_by_var_decl_insert): Declare new function.
7177         * function.c (types_used_by_vars_hash): Define the hashtable ...
7178         (types_used_by_vars_eq, types_used_by_vars_do_hash): ... as well as
7179         its equality and hash functions.
7180         (hash_types_used_by_vars_entry): New hash helper.
7181         (types_used_by_cur_var_decl): Define the global chained list.
7182         (used_types_insert): Update the list of types used by the global
7183         variable being parsed.
7184         (types_used_by_var_decl_insert): Define new function.
7185         * c-common.h (record_types_used_by_current_var_decl): Declare ...
7186         * c-common.c (record_types_used_by_current_var_decl): ... new
7187         function.
7188         * c-decl.c (finish_decl): Record the types used by the global
7189         variable declaration we've just parsed.
7190         * dwarf2out.c (premark_used_types): Insert a new line between
7191         comment and function.
7192         (premark_used_types_helper): Fix comment.
7193         (premark_types_used_by_global_vars_helper,
7194         premark_types_used_by_global_vars): New functions.
7195         (prune_unused_types): Do not prune types used by global variables.
7196
7197 2009-09-23  Richard Guenther  <rguenther@suse.de>
7198
7199         * alias.c (ao_ref_from_mem): Correct for negative MEM_OFFSET
7200         produced for bigendian targets with promoted subregs.
7201
7202 2009-09-23  Richard Guenther  <rguenther@suse.de>
7203
7204         * value-prof.c (gimple_ic): Purge old EH edges only after building
7205         the new ones.
7206
7207 2009-09-23  Nick Clifton  <nickc@redhat.com>
7208
7209         * config/arc/arc.c (arc_trampoline_init): Fix typo.
7210
7211 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7212
7213         PR bootstrap/41405
7214         * doc/invoke.texi: Document -gstrict-dwarf and -gno-strict-dwarf.
7215
7216         PR bootstrap/41436
7217         * cgraphunit.c (cgraph_lower_function): Set DECL_NO_STATIC_CHAIN
7218         on non-nested functions.
7219
7220 2009-09-23  Jakub Jelinek  <jakub@redhat.com>
7221             Jan Hubicka  <jh@suse.cz>
7222
7223         * dwarf2out.c (loc_list_plus_const): Only define if
7224         DWARF2_DEBUGGING_INFO.
7225         (address_of_int_loc_descriptor): Likewise.
7226
7227         PR debug/41411
7228         * dwarf2out.c (mem_loc_descriptor): Handle HIGH.
7229
7230 2009-09-23  Uros Bizjak  <ubizjak@gmail.com>
7231
7232         PR c/39779
7233         * c-typeck.c (build_binary_op) <short_shift>: Check that integer
7234         constant is more than zero.
7235
7236 2009-09-23  Alan Modra  <amodra@bigpond.net.au>
7237
7238         PR target/40473
7239         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Don't
7240         call final to emit non-scheduled prologue, instead insert at entry.
7241
7242 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7243             Joseph S. Myers  <joseph@codesourcery.com>
7244
7245         * doc/install.texi (*-*-freebsd*): Add proper format codes.
7246
7247 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7248             Rafael Avila de Espindola  <espindola@google.com>
7249
7250         * gengtype.c (is_file_equal): New function.
7251         (close_output_files): Use is_file_equal. Free of->buf.
7252
7253 2009-09-22  Basile Starynkevitch  <basile@starynkevitch.net>
7254             Rafael Avila de Espindola  <espindola@google.com>
7255
7256         * gengtype.c (write_types, write_local): Add the output_header
7257         argument. Update all callers.
7258
7259 2009-09-22  Dodji Seketeli  <dodji@redhat.com>
7260
7261         * dwarf2out.c (template_parameter_pack_die,
7262         gen_formal_parameter_pack_die ): New functions.
7263         (make_ith_pack_parameter_name): Remove this function.
7264         (dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
7265         DW_TAG_formal_parameter_pack.
7266         (gen_generic_params_dies): Represent each template parameter pack
7267         by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
7268         represented by usual DW_TAG_template_*_parameter DIEs that are
7269         children of the DW_TAG_template_parameter_pack element DIE.
7270         (generic_parameter_die): This doesn't deal with parameter pack
7271         names anymore. Don't generate DW_AT_name for some DIEs, e.g. children
7272         of parameter pack DIEs.
7273         (gen_formal_parameter_die): Add a flag to not emit DW_AT_name
7274         in certain cases, e.g. for pack elements.
7275         (gen_formal_types_die, gen_decl_die): Adjust usage of
7276         gen_formal_parameter_die.
7277         (gen_subprogram_die): Represent each function parameter pack by a
7278         DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
7279         represented by usual DW_TAG_formal_parameter DIEs that are children
7280         of the DW_TAG_formal_parameter_pack DIE. Remove references to
7281         ____builtin_va_alist decls as no part of the compiler uses those
7282         anymore.
7283         * langhooks.h (struct lang_hooks_for_decls): Add
7284         function_parm_expanded_from_pack_p, get_generic_function_decl
7285         and function_parameter_pack_p hooks.  Fix comment for
7286         get_innermost_generic_parms hook.
7287         * langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
7288         LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
7289         macros and use them to initialize lang_hook.
7290
7291 2009-09-22  Richard Henderson  <rth@redhat.com>
7292
7293         * system.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Poison.
7294         (TRAMPOLINE_ADJUST_ADDRESS): Poison.
7295         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): Don't conditionalize
7296         on TRAMPOLINE_TEMPLATE.
7297         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Don't conditionalize on
7298         TRAMPOLINE_ADJUST_ADDRESS.
7299         * targhooks.c (default_asm_trampoline_template): Remove.
7300         (default_trampoline_adjust_address): Remove.
7301         (default_trampoline_init): Don't handle INITIALIZE_TRAMPOLINE.
7302         * targhooks.h: Update decls.
7303
7304 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7305
7306         * config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
7307         * config/i386/cygwin.h (LIBGCJ_SONAME): Define.
7308         * config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
7309
7310 2009-09-22  Alexandre Oliva  <aoliva@redhat.com>
7311
7312         PR debug/41295
7313         * reload1.c (reload): Reset debug insns with pseudos without
7314         equivalences.
7315
7316 2009-09-22  Janis Johnson  <janis187@us.ibm.com>
7317
7318         * config/i386/i386.c (ix86_scalar_mode_supported_p): Don't return
7319         unconditional true for decimal float modes.
7320         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Ditto.
7321         * config/s390/s390.c (s390_scalar_mode_supported_p): Ditto.
7322
7323 2009-09-22  Loren J. Rittle  <ljrittle@acm.org>
7324
7325         * unwind-dw2-fde-glibc.c: Define and use USE_PT_GNU_EH_FRAME.
7326         Enable a new case for __FreeBSD__ >= 7.
7327         * crtstuff.c:  Define USE_PT_GNU_EH_FRAME for __FreeBSD__ >= 7.
7328         * config/t-freebsd: Define LIB2ADDEH and LIB2ADDEHDEP.
7329         * config/freebsd-spec.h: Conditionally define LINK_EH_SPEC
7330         and USE_LD_AS_NEEDED.
7331
7332         * doc/install.texi (*-*-freebsd*): Update target information.
7333
7334 2009-09-22  Richard Guenther  <rguenther@suse.de>
7335
7336         PR middle-end/41395
7337         * tree-dfa.c (get_ref_base_and_extent): Handle trailing
7338         arrays really properly.
7339
7340 2009-09-22  Richard Henderson  <rth@redhat.com>
7341
7342         PR target/41246
7343         * target.h (struct gcc_target): Add asm_out.trampoline_template,
7344         calls.static_chain, calls.trampoline_init,
7345         calls.trampoline_adjust_address.
7346         * target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7347         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7348         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7349         * builtins.c (expand_builtin_setjmp_receiver): Use
7350         targetm.calls.static_chain; only clobber registers.
7351         (expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
7352         set up memory attributes properly for the trampoline block.
7353         (expand_builtin_adjust_trampoline): Use
7354         targetm.calls.trampoline_adjust_address.
7355         * calls.c (prepare_call_address): Add fndecl argument.  Use
7356         targetm.calls.static_chain.
7357         * df-scan.c (df_need_static_chain_reg): Remove.
7358         (df_get_entry_block_def_set): Use targetm.calls.static_chain;
7359         consolodate static chain handling.
7360         * doc/tm.texi: Document new hooks.
7361         * emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
7362         (init_emit_regs): Don't initialize them.
7363         * expr.h (prepare_call_address): Update decl.
7364         * final.c (profile_function): Use targetm.calls.static_chain.
7365         * function.c (expand_function_start): Likewise.
7366         * rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
7367         * stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
7368         only clobber registers.
7369         * targhooks.c (default_static_chain): New.
7370         (default_asm_trampoline_template, default_trampoline_init): New.
7371         (default_trampoline_adjust_address): New.
7372         * targhooks.h: Declare them.
7373         * varasm.c (assemble_trampoline_template): Use
7374         targetm.asm_out.trampoline_template.  Make the memory block const
7375         and set its size.
7376
7377         * config/alpha/alpha.c (alpha_trampoline_init): Rename from
7378         alpha_initialize_trampoline.  Make static.  Merge VMS parameter
7379         differences into the TARGET_ABI_OPEN_VMS code block.
7380         (TARGET_TRAMPOLINE_INIT): New.
7381         * config/alpha/alpha.h (TRAMPOLINE_TEMPLATE): Remove.
7382         (TRAMPOLINE_SECTION, INITIALIZE_TRAMPOLINE): Remove.
7383         * config/alpha/vms.h (TRAMPOLINE_SIZE, TRAMPOLINE_ALIGNMENT): Remove.
7384         (INITIALIZE_TRAMPOLINE): Remove.
7385
7386         * config/arc/arc.h (TRAMPOLINE_ALIGNMENT): New.
7387         (TRAMPOLINE_TEMPLATE): Merge with ...
7388         (INITIALIZE_TRAMPOLINE): ... this and move ...
7389         * config/arc/arc.c (arc_trampoline_init): ... here.
7390         (TARGET_TRAMPOLINE_INIT): New.
7391
7392         * config/arm/arm.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7393         (TARGET_TRAMPOLINE_INIT, TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7394         (arm_asm_trampoline_template): New.
7395         (arm_trampoline_init, arm_trampoline_adjust_address): New.
7396         * config/arm/arm.h (TRAMPOLINE_TEMPLATE, ARM_TRAMPOLINE_TEMPLATE,
7397         THUMB2_TRAMPOLINE_TEMPLATE, THUMB1_TRAMPOLINE_TEMPLATE): Move all
7398         code to arm_asm_trampoline_template.
7399         (TRAMPOLINE_ADJUST_ADDRESS): Move code to
7400         arm_trampoline_adjust_address.
7401         (INITIALIZE_TRAMPOLINE): Move code to arm_trampoline_init;
7402         adjust for target hook parameters.
7403
7404         * config/avr/avr.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE):
7405         Remove.
7406
7407         * config/bfin/bfin-protos.h (initialize_trampoline): Remove.
7408         * config/bfin/bfin.c (bfin_asm_trampoline_template): New.
7409         (bfin_trampoline_init): Rename from initialize_trampoline;
7410         make static; update for target hook parameters.
7411         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7412         * config/bfin/bfin.h (TRAMPOLINE_TEMPLATE): Move code to
7413         bfin_asm_trampoline_template.
7414         (INITIALIZE_TRAMPOLINE): Remove.
7415
7416         * config/cris/cris.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7417         TARGET_TRAMPOLINE_INIT, cris_asm_trampoline_template,
7418         cris_trampoline_init): New.
7419         * config/cris/cris.h (TRAMPOLINE_TEMPLATE): Move code to
7420         cris_asm_trampoline_template.
7421         (INITIALIZE_TRAMPOLINE): Move code to cris_trampoline_init;
7422         adjust for target hook parameters.
7423
7424         * config/crx/crx.h (INITIALIZE_TRAMPOLINE): Remove.
7425
7426         * config/fr30/fr30.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7427         TARGET_TRAMPOLINE_INIT, fr30_asm_trampoline_template,
7428         fr30_trampoline_init): New.
7429         * config/fr30/fr30.h (TRAMPOLINE_TEMPLATE): Move code to
7430         fr30_asm_trampoline_template.
7431         (INITIALIZE_TRAMPOLINE): Move code to fr30_trampoline_init;
7432         adjust for target hook parameters.
7433
7434         * config/frv/frv.c (TARGET_TRAMPOLINE_INIT): New.
7435         (frv_trampoline_init): Rename from frv_initialize_trampoline;
7436         make static, adjust arguments for TARGET_TRAMPOLINE_INIT hook.
7437         * config/frv/frv.h (INITIALIZE_TRAMPOLINE): Remove.
7438         * config/frv/frv-protos.h (frv_initialize_trampoline): Remove.
7439
7440         * config/h8300/h8300.c (h8300_trampoline_init): New.
7441         (TARGET_TRAMPOLINE_INIT): New.
7442         * config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Move code
7443         to h8300_trampoline_init and adjust for hook parameters.
7444
7445         * config/ia64/ia64-protos.h (ia64_initialize_trampoline): Remove.
7446         * config/ia64/ia64.c (TARGET_TRAMPOLINE_INIT): New.
7447         (ia64_trampoline_init): Rename from ia64_initialize_trampoline;
7448         make static; adjust for hook parameters.
7449         * config/ia64/ia64.h (INITIALIZE_TRAMPOLINE): Remove.
7450
7451         * config/iq2000/iq2000.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7452         (TARGET_TRAMPOLINE_INIT): New.
7453         (iq2000_asm_trampoline_template, iq2000_trampoline_init): New.
7454         * config/iq2000/iq2000.h (TRAMPOLINE_TEMPLATE): Move code to
7455         iq2000_asm_trampoline_template.
7456         (INITIALIZE_TRAMPOLINE): Move code to iq2000_trampoline_init.
7457         (TRAMPOLINE_CODE_SIZE): New.
7458         (TRAMPOLINE_SIZE): Use it.
7459         (TRAMPOLINE_ALIGNMENT): Follow Pmode.
7460
7461         * config/m32c/m32c-protos.h (m32c_initialize_trampoline): Remove.
7462         * config/m32c/m32c.c (TARGET_TRAMPOLINE_INIT): New.
7463         (m32c_trampoline_init): Rename from m32c_initialize_trampoline;
7464         adjust for hook parameters.
7465         * config/m32c/m32c.h (INITIALIZE_TRAMPOLINE): Remove.
7466
7467         * config/m32r/m32r.c (TARGET_TRAMPOLINE_INIT): New.
7468         (m32r_trampoline_init): New.
7469         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Move code to
7470         m32r_trampoline_init.
7471
7472         * config/m68hc11/m68hc11.c (TARGET_TRAMPOLINE_INIT): New.
7473         (m68hc11_trampoline_init): Rename from m68hc11_initialize_trampoline;
7474         make static; update for hook parameters.
7475         * config/m68hc11/m68hc11-protos.h: Update.
7476         * config/m68hc11/m68hc11.h (INITIALIZE_TRAMPOLINE): Remove.
7477
7478         * config/mcore/mcore.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7479         (TARGET_TRAMPOLINE_INIT): New.
7480         (mcore_function_value): Fix typo.
7481         (mcore_asm_trampoline_template, mcore_trampoline_init): New.
7482         * config/mcore/mcore.h (TRAMPOLINE_TEMPLATE): Move code
7483         to mcore_asm_trampoline_template.
7484         (INITIALIZE_TRAMPOLINE): Move code to mcore_trampoline_init.
7485
7486         * config/mep/mep.h (INITIALIZE_TRAMPOLINE): Remove.
7487         * config/mep/mep.c (TARGET_TRAMPOLINE_INIT): New.
7488         (mep_trampoline_init): Rename from mep_init_trampoline; make static;
7489         update for hook parameters.
7490         * config/mep/mep-protos.h (mep_init_trampoline): Remove.
7491
7492         * config/mips/mips.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7493         mips_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7494         mips_trampoline_init): New.
7495         * config/mips/mips.h (TRAMPOLINE_TEMPLATE): Move code to
7496         mips_asm_trampoline_template.
7497         (INITIALIZE_TRAMPOLINE): Move code to mips_trampoline_init;
7498         update for hook parameters.
7499
7500         * gcc/config/mmix/mmix.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7501         (TARGET_TRAMPOLINE_INIT): New.
7502         (mmix_trampoline_size): Remove.
7503         (mmix_asm_trampoline_template): Rename from mmix_trampoline_template;
7504         make static.  Remove out-of-date tetra vs octa comment.
7505         (mmix_trampoline_init): Rename from mmix_initialize_trampoline;
7506         make static; update for hook parameters.
7507         * config/mmix/mmix.h (TRAMPOLINE_TEMPLATE): Remove.
7508         (INITIALIZE_TRAMPOLINE): Remove.
7509         (TRAMPOLINE_SIZE): Use a constant instead of mmix_trampoline_size.
7510         (TRAMPOLINE_ALIGNMENT): New.
7511         * gcc/config/mmix/mmix-protos.h: Update.
7512
7513         * config/mn10300/mn10300.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7514         mn10300_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7515         mn10300_trampoline_init): New.
7516         * config/mn10300/mn10300.h (TRAMPOLINE_TEMPLATE): Move code to
7517         mn10300_asm_trampoline_template.
7518         (INITIALIZE_TRAMPOLINE): Move code to mn10300_trampoline_init.
7519
7520         * config/moxie/moxie.c (moxie_static_chain,
7521         moxie_asm_trampoline_template, moxie_trampoline_init,
7522         TARGET_STATIC_CHAIN, TARGET_ASM_TRAMPOLINE_TEMPLATE,
7523         TARGET_TRAMPOLINE_INIT): New.
7524         * config/moxie/moxie.h (INITIALIZE_TRAMPOLINE): Move code to
7525         moxie_trampoline_init.
7526         (TRAMPOLINE_TEMPLATE): Move code to moxie_asm_trampoline_template.
7527         (STATIC_CHAIN, STATIC_CHAIN_INCOMING): Remove.
7528
7529         * gcc/config/pa/pa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE,
7530         pa_asm_trampoline_template, TARGET_TRAMPOLINE_INIT,
7531         pa_trampoline_init, TARGET_TRAMPOLINE_ADJUST_ADDRESS,
7532         pa_trampoline_adjust_address): New.
7533         * config/pa/pa.h (TRAMPOLINE_TEMPLATE): Move code to
7534         pa_asm_trampoline_template.
7535         (TRAMPOLINE_ALIGNMENT): New.
7536         (TRAMPOLINE_CODE_SIZE): Move to pa.c.
7537         (INITIALIZE_TRAMPOLINE): Move code to pa_trampoline_init;
7538         adjust for hook parameters.
7539         (TRAMPOLINE_ADJUST_ADDRESS): Move code to pa_trampoline_adjust_address.
7540
7541         * config/pdp11/pdp11.c (pdp11_trampoline_init): New.
7542         (TARGET_TRAMPOLINE_INIT): New.
7543         * config/pdp11/pdp11.h (TRAMPOLINE_TEMPLATE): Remove.
7544         (INITIALIZE_TRAMPOLINE): Move code to pdp11_trampoline_init.
7545
7546         * config/picochip/picochip.h (INITIALIZE_TRAMPOLINE): Remove.
7547
7548         * config/rs6000/rs6000-protos.h (rs6000_initialize_trampoline): Remove.
7549         * config/rs6000/rs6000.c (TARGET_TRAMPOLINE_INIT): New.
7550         (rs6000_trampoline_init): Rename from rs6000_initialize_trampoline;
7551         make static; adjust parameters for the hook.
7552         * config/rs6000/rs6000.h (INITIALIZE_TRAMPOLINE): Remove.
7553
7554         * config/s390/s390.c (s390_asm_trampoline_template): Rename from
7555         s390_trampoline_template; make static.
7556         (s390_trampoline_init): Rename from s390_initialize_trampoline;
7557         make static; adjust for target hook.
7558         (TARGET_ASM_TRAMPOLINE_TEMPLATE, TARGET_TRAMPOLINE_INIT): New.
7559         * config/s390/s390-protos.h: Remove trampoline decls.
7560         * config/s390/s390.h (INITIALIZE_TRAMPOLINE): Remove.
7561         (TRAMPOLINE_TEMPLATE): Remove.
7562         (TRAMPOLINE_ALIGNMENT): New.
7563
7564         * config/score/score-protos.h (score_initialize_trampoline): Remove.
7565         * config/score/score.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7566         (TARGET_TRAMPOLINE_INIT): New.
7567         (score_asm_trampoline_template): New.
7568         (score_trampoline_init): Rename from score_initialize_trampoline;
7569         make static; adjust for hook parameters.
7570         * config/score/score.h (TRAMPOLINE_TEMPLATE): Move code to
7571         score[37]_asm_trampoline_template.
7572         (INITIALIZE_TRAMPOLINE): Remove.
7573         * config/score/score3.c (score3_asm_trampoline_template): New.
7574         (score3_trampoline_init): Rename from score3_initialize_trampoline;
7575         adjust for target hook.
7576         * config/score/score7.c (score7_asm_trampoline_template): New.
7577         (score7_trampoline_init): Rename from score7_initialize_trampoline;
7578         adjust for target hook.
7579         * config/score/score3.h, config/score/score7.h: Update.
7580
7581         * config/sh/sh-protos.h (sh_initialize_trampoline): Remove.
7582         * config/sh/sh.c (TARGET_TRAMPOLINE_INIT): New.
7583         (TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
7584         (sh_trampoline_init): Rename from sh_initialize_trampoline;
7585         make static; adjust for target hook parameters.
7586         (sh_trampoline_adjust_address): New.
7587         * config/sh/sh.h (INITIALIZE_TRAMPOLINE): New.
7588         (TRAMPOLINE_ADJUST_ADDRESS): Move code to sh_trampoline_adjust_address.
7589
7590         * config/sparc/sparc.c (TARGET_TRAMPOLINE_INIT): New.
7591         (sparc32_initialize_trampoline): Rename from
7592         sparc_initialize_trampoline; make static; replace tramp parameter
7593         with m_tramp and update memory accesses.
7594         (sparc64_initialize_trampoline): Similarly.
7595         (sparc_trampoline_init): New.
7596         * config/sparc/sparc-protos.h: Remove trampoline decls.
7597         * config/sparc/sparc.h (INITIALIZE_TRAMPOLINE): Remove.
7598         * config/sparc/sparc.md (nonlocal_goto): Don't use static_chain_rtx.
7599
7600         * config/spu/spu.c (TARGET_TRAMPOLINE_INIT): New.
7601         (array_to_constant): Make ARR parameter const.
7602         (spu_trampoline_init): Rename from spu_initialize_trampoline;
7603         make static; update for hook parameters.
7604         * config/spu/spu-protos.h: Update decls.
7605         * config/spu/spu.h (INITIALIZE_TRAMPOLINE): Remove.
7606
7607         * config/stormy16/stormy16.c (xstormy16_trampoline_init): Rename
7608         from xstormy16_initialize_trampoline; make static; update for
7609         hook parameters.
7610         (TARGET_TRAMPOLINE_INIT): New.
7611         * config/stormy16/stormy16.h (INITIALIZE_TRAMPOLINE): Remove.
7612
7613         * config/v850/v850.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7614         (TARGET_TRAMPOLINE_INIT): New.
7615         (v850_can_eliminate): Make static.
7616         (v850_asm_trampoline_template, v850_trampoline_init): New.
7617         * config/v850/v850.h (TRAMPOLINE_TEMPLATE): Move code to
7618         v850_asm_trampoline_template.
7619         (INITIALIZE_TRAMPOLINE): Move code to v850_trampoline_init
7620         and adjust for target hook parameters.
7621
7622         * config/vax/vax.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7623         (TARGET_TRAMPOLINE_INIT): New.
7624         (vax_asm_trampoline_template, vax_trampoline_init): New.
7625         * config/vax/vax.h (TRAMPOLINE_TEMPLATE): Move code to
7626         vax_asm_trampoline_template.
7627         (INITIALIZE_TRAMPOLINE): Move code to vax_trampoline_init.
7628
7629         * config/xtensa/xtensa.c (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
7630         (TARGET_TRAMPOLINE_INIT): New.
7631         (xtensa_asm_trampoline_template): Rename from
7632         xtensa_trampoline_template; make static.
7633         (xtensa_trampoline_init): Rename from xtensa_initialize_trampoline;
7634         make static; update for hook parameters.
7635         * config/xtensa/xtensa-protos.h: Remove trampoline decls.
7636         * config/xtensa/xtensa.h (TRAMPOLINE_TEMPLATE): Remove.
7637         (INITIALIZE_TRAMPOLINE): Remove.
7638
7639         * config/i386/i386.c (ix86_function_regparm): Do not issue an
7640         error for nested functions with regparm=3.
7641         (ix86_compute_frame_layout): Adjust frame pointer offset for
7642         ix86_static_chain_on_stack.
7643         (ix86_expand_prologue): Handle ix86_static_chain_on_stack.
7644         (ix86_emit_restore_reg_using_pop): Increment ix86_cfa_state->offset,
7645         don't reset to UNITS_PER_WORD.
7646         (ix86_emit_leave): Adjust ix86_cfa_state.
7647         (ix86_expand_epilogue): Handle ix86_static_chain_on_stack.
7648         (ix86_static_chain): New.
7649         (ix86_trampoline_init): Rename from x86_initialize_trampoline;
7650         make static; update for target hook parameters; use ix86_static_chain.
7651         (TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
7652         * config/i386/i386.h (STATIC_CHAIN_REGNUM): Remove.
7653         (INITIALIZE_TRAMPOLINE): Remove.
7654         (TRAMPOLINE_SIZE): Use 24 for 64-bit.
7655         (struct machine_function): Use BOOL_BITFIELD; rearrange bitfields
7656         to the end.  Add static_chain_on_stack.
7657         (ix86_static_chain_on_stack): New.
7658
7659         * config/m68k/m68k.c (TARGET_TRAMPOLINE_INIT): New.
7660         (m68k_output_mi_thunk): Don't use static_chain_rtx.
7661         (m68k_trampoline_init): New.
7662         * config/m68k/m68k.h (INITIALIZE_TRAMPOLINE): Move code to
7663         m68k_trampoline_init and adjust for hook parameters.
7664         * config/m68k/netbsd-elf.h (TRAMPOLINE_TEMPLATE): Remove.
7665         (TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE): Remove.
7666
7667 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7668
7669         * config/rs6000/rs6000.c (bdesc_2arg): Fix CODE_FOR_vector_gt* codes
7670         for __builtin_altivec_vcmpgt{sb,uh,sh,uw}.
7671
7672         * reload1.c (reload): Call wrap_constant when substituting
7673         reg for equiv inside of DEBUG_INSNs.
7674
7675         PR bootstrap/41405
7676         * dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
7677         add_call_src_coords_attributes, add_high_low_attributes,
7678         gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
7679         gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
7680         dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
7681         when -gdwarf-2 -gstrict-dwarf.
7682         (loc_list_from_tree): Likewise.  Avoid using DWARF4 additions when
7683         -gdwarf-[23] -gstrict-dwarf.
7684         (address_of_int_loc_descriptor, loc_descriptor,
7685         loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
7686         DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
7687         * common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
7688
7689 2009-09-22  Richard Guenther  <rguenther@suse.de>
7690
7691         PR tree-optimization/41428
7692         * tree-ssa-ccp.c (ccp_fold_stmt): New function.
7693         (ccp_finalize): Pass it to substitute_and_fold.
7694
7695 2009-09-22  Richard Guenther  <rguenther@suse.de>
7696
7697         * tree-ssa-propagate.h (ssa_prop_fold_stmt_fn): Declare.
7698         (substitute_and_fold): Adjust prototype.
7699         * tree-vrp.c (vrp_evaluate_conditional): Make static.
7700         (simplify_stmt_using_ranges): Likewise.
7701         (fold_predicate_in): Move here from tree-ssa-propagate.c.
7702         (vrp_fold_stmt): New function.
7703         (vrp_finalize): Pass it to substitute_and_fold.
7704         * tree-flow.h (vrp_evaluate_conditional): Remove.
7705         (simplify_stmt_using_ranges): Likewise.
7706         * tree-ssa-ccp.c (ccp_finalize): Adjust call to substitute_and_fold.
7707         * tree-ssa-copy.c (fini_copy_prop): Likewise.
7708         * tree-ssa-propagate.c (struct prop_stats_d): Rename num_pred_folded
7709         member.
7710         (fold_predicate_in): Move to tree-vrp.c.
7711         (substitute_and_fold): Use the callback instead of calling into
7712         tree-vrp.c functions directly.
7713
7714 2009-09-22  Jakub Jelinek  <jakub@redhat.com>
7715
7716         * dwarf2out.c (address_of_int_loc_descriptor): Avoid signed/unsigned
7717         comparison warning on rs6000.
7718
7719         PR middle-end/41429
7720         * tree-cfg.c (remove_useless_stmts_tc): Call gsi_next (gsi) even for
7721         GIMPLE_EH_MUST_NOT_THROW cleanup.
7722         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
7723
7724 2009-09-22  Jack Howarth  <howarth@bromo.med.uc.edu>
7725
7726         PR middle-end/41260
7727         * gcc/config.gcc: Use darwin9.h and darwin10.h on darwin10 and later.
7728         * gcc/config/darwin10.h: Add file to pass -no_compact_unwind on
7729         LIB_SPEC for darwin10 and later since it always uses the unwinder in
7730         libSystem which is derived from the gcc 4.2.1 unwinder.
7731
7732 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7733
7734         PR middle-end/41357
7735         * varasm.c (default_encode_section_info): Copy TLS model into
7736         sym_ref flags regardless of backend support for TLS, for all
7737         model types except TLS_MODEL_EMULATED.
7738
7739 2009-09-22  Dave Korn  <dave.korn.cygwin@gmail.com>
7740
7741         PR bootstrap/41404
7742         * dwarf2out.c (mem_loc_descriptor): Punt on CONST_STRING until
7743         we can handle it correctly.
7744
7745 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7746
7747         * doc/install.texi (os2): Remove section.
7748
7749 2009-09-21  Gerald Pfeifer  <gerald@pfeifer.com>
7750
7751         * doc/standards.texi (Objective-C): Adjust two URLs.
7752
7753 2009-09-21  Giuseppe Scrivano <gscrivano@gnu.org>
7754
7755         * tree-tailcall.c (process_assignment): Don't check if a
7756         multiplication or an addition are already present.
7757         (find_tail_calls): Combine multiple additions and multiplications.
7758         (adjust_accumulator_values): Emit accumulators.
7759
7760 2009-09-21  Kai Tietz  <kai.tietz@onevision.com>
7761
7762         * config/i386/i386.c (ix86_expand_epilogue): Adjust offset for
7763         xmm register restore.
7764
7765 2009-09-21  Jan Hubicka  <jh@suse.cz>
7766
7767         * dwarf2out.c (decl_loc_table_eq): Allow decl_loc_table to be NULL.
7768         (dwarf2out_abstract_function): NULLify decl_loc_table at begginig and
7769         restore at the end.
7770
7771 2009-09-21  Eric Botcazou  <ebotcazou@adacore.com>
7772
7773         * stor-layout.c (layout_type): Remove obsolete code.
7774
7775 2009-09-20  H.J. Lu  <hongjiu.lu@intel.com>
7776
7777         PR middle-end/41395
7778         * opts.c (decode_options): Don't turn on flag_ipa_sra for opt2.
7779
7780 2009-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7781
7782         PR middle-end/30789
7783         * builtins.c (do_mpc_arg2): Accept DO_NONFINITE parameter.
7784         (do_mpc_ckconv): Accept FORCE_CONVERT parameter.
7785         (fold_builtin_2, do_mpc_arg1): Update accordingly.
7786         * fold-const.c (const_binop): Likewise.
7787         * real.h (do_mpc_arg2): Update prototype.
7788
7789 2009-09-20  Jan Hubicka  <jh@suse.cz>
7790
7791         * dwarf2out.c (add_const_value_attribute): Return true if successful.
7792         (add_location_or_const_value_attribute): Rewrite using
7793         loc_list_from_tree.
7794         (tree_add_const_value_attribute): Return true if successful.
7795         (tree_add_const_value_attribute_for_decl): Likewise.
7796
7797         * dwarf2out.c (address_of_int_loc_descriptor): Break out from ...
7798         (loc_descriptor): ... here;
7799         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7800         (cst_pool_loc_descr): Break out from ...; do not reffer constant
7801         pool items that was not marked for output.
7802         (loc_list_from_tree): ... here; handle special cases of ADDR_EXPR;
7803         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7804         (loc_list_for_address_of_addr_expr_of_indirect_ref): New function.
7805         handle ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF, REALPART_EXPR,
7806         IMAGPART_EXPR; handle address of INTEGER_CST; improve handling of
7807         CONSTRUCTOR; handle REAL_CST, STRING_CST, COMPLEX_CST; use
7808         DW_OP_stack_value to get address of items that are not available
7809         as addresses.
7810         (dw_loc_list): Handle single element lists correctly.
7811
7812 2009-09-20  Kai Tietz  <kai.tietz@onevision.com>
7813             Pascal Obry  <obry@adacore.com>
7814
7815         * unwind-dw2-fde.c (classify_object_over_fdes):
7816         Cast the constant 1 to _Unwind_Ptr.
7817         (add_fdes): Likewise.
7818         (linear_search_fdes): Likewise.
7819
7820 2009-09-20  Eric Botcazou  <ebotcazou@adacore.com>
7821
7822         * stor-layout.c (set_sizetype): Avoid useless type copy.
7823
7824 2009-09-20  Richard Sandiford  <rdsandiford@googlemail.com>
7825
7826         * configure.ac (gcc_cv_ld_mips_personality_relaxation): New
7827         feature check.
7828         (HAVE_LD_PERSONALITY_RELAXATION): New macro definition.
7829         * configure, config.in: Regenerate.
7830         * dwarf2asm.c (eh_data_format_name): Handle DW_EH_PE_indirect |
7831         DW_EH_PE_absptr.
7832         * config/mips/mips.h (TARGET_WRITABLE_EH_FRAME): New macro.
7833         (ASM_PREFERRED_EH_DATA_FORMAT): Define.  Use MIPS_EH_INDIRECT
7834         for global data if the output could be used in a shared library.
7835         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
7836         to 0 if TARGET_WRITABLE_EH_FRAME.
7837
7838 2009-09-20  Paolo Bonzini <bonzini@gnu.org>
7839
7840         PR rtl-optimization/39886
7841         * combine.c (update_cfg_for_uncondjump): Set EDGE_FALLTHRU
7842         just when insn is equal to BB_END (bb).
7843
7844 2009-09-19  Adam Nemet  <anemet@caviumnetworks.com>
7845
7846         * config/mips/mips.opt (mrelax-pic-calls): New option.
7847         * config/mips/mips.c (mips_strip_unspec_address): Move it up in
7848         the file.
7849         (mips_unspec_call): Change "unspec_call" expander into this.
7850         (mips_strip_unspec_call): New function.
7851         (mips_got_load): Call mips_unspec_call instead of
7852         gen_unspec_call<mode>.
7853         (mips16_build_call_stub): Fix comment for fp_code.  Adjust call to
7854         MIPS_CALL.
7855         (mips_cfg_in_reorg): New function.
7856         (mips16_lay_out_constants): Use it to decide whether to call
7857         CFG-aware insn splitting.
7858         (r10k_insert_cache_barriers): Move CFG set-up code from here to
7859         mips_reorg.  Move DF set-up code from here ...
7860         (mips_df_reorg): ... to here.  Call r10k_insert_cache_barriers
7861         from here.
7862         (mips_reorg): Call mips_df_reorg instead of
7863         r10k_insert_cache_barriers.  Move CFG set-up code here from
7864         r10k_insert_cache_barriers.
7865         (mips_call_expr_from_insn): New function.
7866         (mips_pic_call_symbol_from_set): Likewise.
7867         (mips_find_pic_call_symbol): Likewise.
7868         (mips_annotate_pic_call_expr): Likewise.
7869         (mips_get_pic_call_symbol): Likewise.
7870         (mips_annotate_pic_calls): Likewise.
7871         (mips_override_options): Disable -mrelax-pic-calls unless PIC
7872         calls are used.
7873         (mips_set_mips16_mode): Disable -mrelax-pic-calls for MIPS16.
7874         * config/mips/mips-protos.h (mips_get_pic_call_symbol): Declare it.
7875         * config/mips/mips.h (MIPS_CALL): Use it to print the .reloc
7876         directive.
7877         * config/mips/mips.md (UNSPEC_CALL_ATTR): New unspec.
7878         (unspec_call<mode>): Remove it.
7879         (sibcall_internal, sibcall_value_internal,
7880         sibcall_value_multiple_internal, call_internal, call_split,
7881         call_value_internal, call_value_split,
7882         call_value_multiple_internal, call_value_multiple_split): Pass
7883         SIZE_OPNO to MIPS_CALL.
7884         (call_internal_direct, call_direct_split,
7885         call_value_internal_direct, call_value_direct_split): Pass -1 as
7886         SIZE_OPNO to MIPS_CALL.
7887         * configure.ac <mips*-*-*>: Add test for .reloc R_MIPS_JALR.
7888         * configure: Regenerate.
7889         * doc/invoke.texi (Option Summary): Add -mrelax-pic-calls
7890         and -mno-relax-pic-calls.
7891         (MIPS Options): Document -mrelax-pic-calls and -mno-relax-pic-calls.
7892
7893 2009-09-19  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7894
7895         PR bootstrap/35619
7896         * Makefile.in (stmp-fixinc): Ensure `include-fixed' is created
7897         in the directory this rule is called from, rather than the
7898         toplevel 'gcc' directory, to fix in-tree build.
7899
7900 2009-09-19  Chris Demetriou  <cgd@google.com>
7901
7902         PR preprocessor/28435:
7903         * c-opts.c (c_common_handle_option): For -MD and -MMD, indicate
7904         to cpplib that the preprocessor output is needed.
7905
7906 2009-09-19  Jakub Jelinek  <jakub@redhat.com>
7907
7908         * config/rs6000/rs6000.md (*save_gpregs_<mode>, *save_fpregs_<mode>,
7909         *restore_gpregs_<mode>, *return_and_restore_gpregs_<mode>,
7910         *return_and_restore_fpregs_<mode>,
7911         *return_and_restore_fpregs_aix_<mode>): Remove 'z' operand modifier.
7912
7913         PR bootstrap/41397
7914         * dwarf2out.c (mem_loc_descriptor) <case SUBREG>: Recurse
7915         instead of assuming it has always a REG inside of it.
7916
7917 2009-09-18  Gerald Pfeifer  <gerald@pfeifer.com>
7918
7919         * config/freebsd.h: Update comment on types.
7920         (WINT_TYPE): Define.
7921
7922 2009-09-18  Jason Merrill  <jason@redhat.com>
7923
7924         * c.opt: Add -fno-deduce-init-list.
7925
7926 2009-09-18  Neil Vachharajani  <nvachhar@google.com>
7927
7928         * value-prof.c (interesting_stringop_to_profile_p): Added output
7929         argument to indicate which parameter is the size parameter.
7930         * value-prof.c (gimple_stringop_fixed_value): Use
7931         INTERESTING_STRINGOP_TO_PROFILE_P to find size argument.
7932         * value-prof.c (gimple_stringops_transform): Update call sites to
7933         INTERESTING_STRINGOP_TO_PROFILE_P to reflect parameter change.
7934
7935 2009-09-18  Uros Bizjak  <ubizjak@gmail.com>
7936
7937         PR target/38288
7938         From David Binderman <dcb314@hotmail.com>:
7939         * gcc/config/i386/i386.c (ix86_function_regparm): Remove useless
7940         local variable f.  Remove stale comments.
7941         (ix86_compute_frame_layout): Remove useless local variable total_size.
7942         Remove #if 0'd code.
7943         (legitimate_address_p): Remove useless local variables
7944         reason_rtx and reason.
7945         (ix86_split_copysign_const): Remove useless local variable op1.
7946         (scale_counter): Remove useless local variable piece_size_mask.
7947
7948 2009-09-18  Jakub Jelinek  <jakub@redhat.com>
7949
7950         * stmt.c (expand_asm_operands): Set REG_ATTRS on the temporary from
7951         output decl.
7952
7953 2009-09-17  Michael Haubenwallner  <michael.haubenwallner@salomon.at>
7954
7955         PR target/40913
7956         * config/pa/t-hpux-shlib: Set soname in libgcc_s.sl.
7957
7958 2009-09-17  Jakub Jelinek  <jakub@redhat.com>
7959
7960         * c-decl.c (finish_struct): Adjust DECL_SOURCE_LOCATION of
7961         TYPE_STUB_DECL.
7962
7963 2009-09-17  Alexandre Oliva  <aoliva@redhat.com>
7964
7965         * dwarf2out.c (loc_descriptor): Emit DW_OP_stack_value and
7966         DW_OP_implicit_value even without dwarf_version 4.
7967
7968 2009-09-17  Jan Hubicka  <jh@suse.cz>
7969
7970         * dwarf2out.c: Include tree-pass.h and gimple.h.
7971         (loc_list_plus_const): New function.
7972         (loc_descriptor_from_tree_1): Rename to ...
7973         (loc_descriptor_from_tree): ... remove original.
7974         (loc_list_from_tree): New function.
7975         (add_AT_location_description): Accept location list.
7976         (tls_mem_loc_descriptor): Update call of loc_descriptor_from_tree.
7977         (concatn_mem_loc_descriptor): Remove.
7978         (mem_loc_descriptor): Handle CONCAT/CONCATN and VAR_LOCATION by
7979         returning NULL.
7980         (secname_for_decl): Move up.
7981         (hidden_reference_p): New function; break out from ...
7982         (loc_by_refernece): ... here; move up.
7983         (dw_loc_list): New function.
7984         (single_element_loc_list): New function.
7985         (single_element_loc_list_p): New function.
7986         (add_loc_descr_to_each): New function.
7987         (add_loc_list): New function.
7988         (loc_descr_from_tree): Make wraper of loc_list_from_tree.
7989         (loc_list_from_tree): Reroganized from loc_descr_from_tree;
7990         add diagnostics why expansion failed.
7991         (add_location_or_const_value_attribute): Support location lists.
7992         (add_bound_info): Likewise.
7993         (descr_info_loc): Update call of loc_descriptor_from_tree.
7994         (gen_variable_die): Work on location lists.
7995         * final.c (pass_final): Add dump file.
7996         * Makefile.in (dwarf2out.o): Add new dependencies.
7997
7998 2009-09-17  Janis Johnson  <janis187@us.ibm.com>
7999
8000         PR c/41049
8001         * real.c decimal_from_integer, decimal_integer_string): New.
8002         (real_from_integer): Use them as special case for decimal float.
8003         * config/dfp-bit.c (_si_to_sd, _usi_to_sd): Use default rounding.
8004         (_di_to_sd, _di_to_dd, _di_to_td, _udi_to_sd, _udi_to_dd, _udi_to_td):
8005         Do not append zero after the decimal point in string to convert.
8006
8007 2009-09-17  Alexander Monakov  <amonakov@ispras.ru>
8008
8009         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Add bounds only
8010         for ARRAY_REFs.  Use array_ref_{low,up}_bound to determine bounds.
8011
8012 2009-09-17  Martin Jambor  <mjambor@suse.cz>
8013
8014         * common.opt (fipa-sra): New switch.
8015         * opts.c (decode_options): Turn flag_ipa_sra on for opt2.
8016         * timevar.def (TV_IPA_SRA): New timevar.
8017         * params.def (ipa-sra-ptr-growth-factor): New parameter.
8018         * doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
8019         * tree-sra.c: Include cgraph.c.
8020         (enum sra_mode): Added SRA_MODE_EARLY_IPA.
8021         (struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
8022         and grp_not_necessarilly_dereferenced.
8023         (func_param_count): New variable.
8024         (encountered_apply_args): New variable.
8025         (bb_dereferences): New variable.
8026         (final_bbs): New variable.
8027         (no_accesses_representant): New variable.
8028         (no_accesses_p): New function.
8029         (dump_access): Dump the new fields.
8030         (sra_initialize): Set encountered_apply_args to false.
8031         (get_ssa_base_param): New function.
8032         (mark_parm_dereference): New function.
8033         (create_access): Caring for INIDRECT_REFs and different handling of
8034         varialble length accesses in early IPA SRA.  Store the stmt - a new
8035         parameter - to the new access.
8036         (build_access_from_expr_1): New parameter stmt, passed to
8037         create_access.  Handle INDIRECT_REFs.
8038         (build_access_from_expr): Pass the current statement to
8039         build_access_from_expr_1.
8040         (disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
8041         passes.
8042         (build_accesses_from_assign): Pass the current statement to
8043         build_access_from_expr_1.  Do not create assign links in IPA-SRA.
8044         (scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
8045         final_bbs when necessary.  Check for calls to __builtin_apply_args.
8046         Fixup EH info if anythng was changed.
8047         (is_unused_scalar_param): New function.
8048         (ptr_parm_has_direct_uses): New function.
8049         (find_param_candidates): New function.
8050         (mark_maybe_modified): New function.
8051         (analyze_modified_params): New function.
8052         (propagate_dereference_distances): New function.
8053         (dump_dereferences_table): New function.
8054         (analyze_caller_dereference_legality): New function.
8055         (unmodified_by_ref_scalar_representative): New function.
8056         (splice_param_accesses): New function.
8057         (decide_one_param_reduction): New function.
8058         (enum ipa_splicing_result): New type.
8059         (splice_all_param_accesses): New function.
8060         (get_param_index): New function.
8061         (turn_representatives_into_adjustments): New function.
8062         (analyze_all_param_acesses): New function.
8063         (get_replaced_param_substitute): New function.
8064         (get_adjustment_for_base): New function.
8065         (replace_removed_params_ssa_names): New function.
8066         (sra_ipa_reset_debug_stmts): New function.
8067         (sra_ipa_modify_expr): New function.
8068         (sra_ipa_modify_assign): New function.
8069         (convert_callers): New function.
8070         (modify_function): New function.
8071         (ipa_sra_preliminary_function_checks): New function.
8072         (ipa_early_sra): New function.
8073         (ipa_early_sra_gate): New function.
8074         (pass_early_ipa_sra): New variable.
8075         * Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
8076
8077 2009-09-17  Michael Matz  <matz@suse.de>
8078
8079         PR middle-end/41347
8080         * tree.c (build_type_attribute_qual_variant): Export.
8081         * tree.h (build_type_attribute_qual_variant): Declare.
8082         * tree-inline.c (remap_type_1): Use it to build variants with
8083         the original qualifiers and attributes.
8084
8085 2009-09-17  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
8086
8087         * cfglayout.c (fixup_reorder_chain): Accept conditional jumps
8088         without a fallthrough edge.
8089
8090 2009-09-16  DJ Delorie  <dj@redhat.com>
8091
8092         * config/m32c/m32c.c (m32c_emit_epilogue): Check for R8C or M16C
8093         chip and ignore the "fast_interrupt" attribute if so.
8094
8095 2009-09-16  Richard Henderson  <rth@redhat.com>
8096
8097         PR middle-end/41360
8098         * cfgbuild.c (find_bb_boundaries): Really re-instate 2009-09-02
8099         barrier fix.
8100
8101 2009-09-16  Richard Henderson  <rth@redhat.com>
8102
8103         PR target/41246
8104         * tree-cfg.c (verify_gimple_call): Validate that gimple_call_chain
8105         is set only if DECL_NO_STATIC_CHAIN is unset.
8106         * tree-nested.c (iter_nestinfo_start, iter_nestinfo_next): New.
8107         (FOR_EACH_NEST_INFO): New.
8108         (walk_all_functions): Use it.
8109         (finalize_nesting_tree): Likewise.
8110         (unnest_nesting_tree): Likewise.
8111         (free_nesting_tree): Use iter_nestinfo_start, iter_nestinfo_next.
8112         (get_chain_decl, get_chain_field): Reset DECL_NO_STATIC_CHAIN.
8113         (convert_gimple_call): Early out if gimple_call_chain already set.
8114         (convert_all_function_calls): Iterate until no new functions
8115         require a static chain.
8116         (finalize_nesting_tree_1): Assert DECL_NO_STATIC_CHAIN is unset
8117         when building a trampoline.  Use dump_function_to_file instead
8118         of dump_function.
8119         (lower_nested_functions): Open dump_file.  Validate that decls
8120         that have DECL_NO_STATIC_CHAIN from the front end don't have that
8121         bit reset by this pass.
8122
8123 2009-09-16  Michael Matz  <matz@suse.de>
8124
8125         PR fortran/41212
8126         * tree.h (struct tree_decl_common): Add decl_restricted_flag,
8127         shorten decl_common_unused.
8128         (DECL_RESTRICTED_P): New accessor.
8129         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Use it
8130         to disambiguate marked decls and restrict pointers.
8131
8132 2009-09-16  Richard Henderson  <rth@redhat.com>
8133
8134         PR middle-end/41360
8135         * cfgbuild.c (find_bb_boundaries): Re-instate 2009-09-02 barrier fix.
8136
8137 2009-09-16  Jakub Jelinek  <jakub@redhat.com>
8138
8139         * integrate.c (set_block_abstract_flags): Call
8140         set_decl_abstract_flags also on BLOCK_NONLOCALIZED_VARs.
8141
8142 2009-09-16  Richard Guenther  <rguenther@suse.de>
8143
8144         PR middle-end/34011
8145         * tree-flow-inline.h (may_be_aliased): Compute readonly variables
8146         as non-aliased.
8147
8148 2009-09-16  DJ Delorie  <dj@redhat.com>
8149             Kaz Kojima  <kkojima@gcc.gnu.org>
8150
8151         * config/sh/sh.c (output_stack_adjust): Add new argument frame_p.
8152         (sh_expand_prologue): Update calls to output_stack_adjust.
8153         (sh_expand_epilogue): Likewise.
8154
8155 2009-09-15  Adam Nemet  <anemet@caviumnetworks.com>
8156
8157         PR bootstrap/41349
8158         * reorg.c (redundant_insn): Don't count notes or DEBUG_INSNs when
8159         trying to limit the extent of searches in the insn stream.
8160
8161 2009-09-15  Nathan Froyd  <froydnj@codesourcery.com>
8162             Jakub Jelinek  <jakub@redhat.com>
8163
8164         PR target/41175
8165         PR target/40677
8166         * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence
8167         problem.
8168         (SAVRES_NOINLINE_GPRS_SAVES_LR, SAVRES_NOINLINE_FPRS_SAVES_LR,
8169         SAVRES_NOINLINE_FPRS_DOESNT_RESTORE_LR): New strategy bits.
8170         (rs6000_savres_strategy): Always save FP registers inline if the
8171         target doesn't support hardware double-precision.  Set the above
8172         bits in return value when needed.
8173         (rs6000_savres_routine_sym): Fix computation for cache selector.
8174         Mark the generated symbol as a function.  Rename exitp argument to
8175         lr.  Move code for determining the name of the symbol...
8176         (rs6000_savres_routine_name): ...here.  New function.  Add cases for
8177         getting the names right on AIX and 64-bit Linux.
8178         (savres_routine_name): New variable.
8179         (rs6000_make_savres_rtx): Rename exitp argument to lr.  Don't assert
8180         lr isn't set when savep.  Use r12 resp. r1 instead of r11 depending
8181         on what the target routine uses as a base register.  If savep && lr
8182         describe saving of r0 into memory slot.
8183         (rs6000_emit_prologue): Correct use of call_used_regs.  Fix out of
8184         line calls for AIX ABI.
8185         (rs6000_output_function_prologue): Use rs6000_savres_routine_name to
8186         determine FP save/restore functions.
8187         (rs6000_emit_stack_reset): Handle savres if sp_offset != 0 and
8188         frame_reg_rtx != sp_reg_rtx.  Use gen_add3_insn instead of
8189         gen_addsi3.
8190         (rs6000_emit_epilogue): Adjust computation of restore_lr.
8191         Duplicate restoration of LR and execute the appropriate one
8192         depending on whether GPRs are being restored inline.  Set r11 from
8193         offsetted frame_reg_rtx instead of sp_reg_rtx; if frame_reg_rtx is
8194         r11, adjust sp_offset.  Use gen_add3_insn instead of gen_addsi3.
8195         Fix out of line calls for AIX ABI.
8196         * config/rs6000/rs6000.md (*return_and_restore_fpregs_aix_<mode>):
8197         New insn.
8198         * config/rs6000/spe.md (*save_gpregs_spe): Use explicit match for
8199         register 11.
8200         (*restore_gpregs_spe): Likewise.
8201         (*return_and_restore_gpregs_spe): Likewise.
8202         * config/rs6000/linux64.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8203         Define to empty string unconditionally.
8204         * config/rs6000/sysv4.h (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX):
8205         Define to empty string unconditionally.
8206         (GP_SAVE_INLINE, FP_SAVE_INLINE): Handle TARGET_64BIT the same as
8207         !TARGET_64BIT.
8208
8209 2009-09-15  Jan Hubicka  <jh@suse.cz>
8210
8211         * doc/invoke.texi (inline-insns-auto): Drop from 60 to 50.
8212         * params.def (inline-insns-auto): Likewise.
8213
8214 2009-09-15  Martin Jambor  <mjambor@suse.cz>
8215
8216         * ipa-inline.c (estimate_function_body_sizes): Dump info about
8217         individual statements only at TDF_DETAILS dump level.  Format
8218         source for 80 characters per line.
8219
8220 2009-09-15  Christian Bruel  <christian.bruel@st.com>
8221
8222         * regrename.c (do_replace): Update REG_DEAD notes.
8223
8224 2009-09-15  Revital Eres  <eres@il.ibm.com>
8225
8226         * doc/tm.texi (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Document.
8227         * targhooks.c (default_builtin_support_vector_misalignment):
8228         New builtin function.
8229         * targhooks.h (default_builtin_support_vector_misalignment):
8230         Declare.
8231         * target.h (builtin_support_vector_misalignment):
8232         New field in struct gcc_target.
8233         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Call
8234         new builtin function.
8235         * target-def.h (TARGET_SUPPORT_VECTOR_MISALIGNMENT):
8236         Define.
8237         * config/rs6000/rs6000.c
8238         (rs6000_builtin_support_vector_misalignment): New function.
8239         (TARGET_SUPPORT_VECTOR_MISALIGNMENT): Define.
8240
8241 2009-09-15  Jie Zhang  <jie.zhang@analog.com>
8242
8243         * config/bfin/bfin.c (length_for_loop): Use NONDEBUG_INSN_P
8244         instead of INSN_P.
8245         (bfin_optimize_loop): Likewise.
8246         (bfin_gen_bundles): Likewise.
8247         (workaround_speculation): Likewise.
8248         (find_load): Return NULL_RTX for debug_insn.
8249
8250 2009-09-15  Uros Bizjak  <ubizjak@gmail.com>
8251
8252         * config/alpha/alpha.md (smaxsf3): Disable for IEEE mode.
8253         (sminsf3): Ditto.
8254
8255 2009-09-14  DJ Delorie  <dj@redhat.com>
8256
8257         * config/mep/mep.h (JUMP_TABLES_IN_TEXT_SECTION): Define.
8258         * config/mep/mep.c (mep_emit_cbranch): Don't use BEQZ/BNEI in
8259         VLIW mode.
8260
8261 2009-09-14  Richard Henderson  <rth@redhat.com>
8262             Jakub Jelinek  <jakub@redhat.com>
8263
8264         * builtins.c (expand_builtin_synchronize): Use gimple_build_asm_vec.
8265         * cfgbuild.c (make_edges): Handle asm goto.
8266         * cfglayout.c (fixup_reorder_chain): Likewise.
8267         * cfgrtl.c (patch_jump_insn): Likewise.
8268         * gimple-pretty-print.c (dump_gimple_asm): Likewise.
8269         * gimple.c (gimple_build_asm_1): Add and use nlabels parameter.
8270         (gimple_build_asm_vec): Add and use labels parameter.
8271         (gimple_build_asm): Remove.
8272         (walk_gimple_asm): Walk labels too.
8273         * gimple.def (GIMPLE_ASM): Update docs.
8274         * gimple.h: Update decls.
8275         (struct gimple_statement_asm): Change nc to use unsigned char;
8276         add nl member.
8277         (gimple_asm_nlabels): New.
8278         (gimple_asm_label_op, gimple_asm_set_label_op): New.
8279         * gimplify.c (gimplify_asm_expr): Copy labels from ASM_EXPR
8280         into gimple_build_asm_vec.
8281         * jump.c (mark_jump_label_asm): New.
8282         (mark_jump_label): Use it.
8283         (redirect_jump_1): Handle asm goto.
8284         (invert_jump_1): Soft fail if X is null.
8285         * recog.c (extract_asm_operands): New.
8286         (asm_noperands): Use it; handle asm labels.
8287         (decode_asm_operands): Use extract_asm_operands.
8288         (asm_operand_ok): Properly handle empty string.
8289         * reg-stack.c (get_asm_operands_in_out): Rename from
8290         get_asm_operand_n_inputs; use extract_asm_operands; return both
8291         inputs and outputs by reference; update all callers.
8292         * rtl.def (ASM_OPERANDS): Add label vector as operand 6.
8293         * rtl.h (ASM_OPERANDS_LABEL_VEC): New.
8294         (ASM_OPERANDS_LABEL_LENGTH, ASM_OPERANDS_LABEL): New.
8295         (ASM_OPERANDS_SOURCE_LOCATION): Renumber.
8296         (extract_asm_operands): Declare.
8297         * stmt.c (expand_asm_operands): Add and use labels parameter.
8298         (check_unique_operand_names): Likewise.
8299         (resolve_asm_operand_names, resolve_operand_name_1): Likewise.
8300         (expand_asm_stmt): Handle asm labels.
8301         * tree-cfg.c (make_gimple_asm_edges): New.
8302         (make_edges): Use it.
8303         (cleanup_dead_labels): Handle asm labels.
8304         (is_ctrl_altering_stmt): Likewise.
8305         (gimple_redirect_edge_and_branch): Likewise.
8306         * tree.def (ASM_EXPR): Add 5th operand.
8307         * tree.h (ASM_LABELS): New.
8308         (resolve_asm_operand_names): Update decl.
8309
8310         * c-parser.c (c_parser_asm_statement): Parse asm goto.
8311         (c_parser_asm_goto_operands): New.
8312         * c-tree.h (build_asm_expr): Update decl.
8313         * c-typeck.c (build_asm_expr): Add and use labels parameter.
8314         * doc/extend.texi: Document asm goto.
8315
8316 2009-09-14  Richard Henderson  <rth@redhat.com>
8317
8318         * except.h: Update declarations.
8319         (struct pointer_map_t): Forward declare.
8320         (ERT_UNKNOWN, ERT_THROW, ERT_CATCH): Remove.
8321         (struct eh_landing_pad_d, eh_landing_pad): New.
8322         (struct eh_catch_d, eh_catch): New.
8323         (struct eh_region_d): Remove next_region_sharing_label, aka,
8324         label, tree_label, landing_pad, post_landing_pad, resume,
8325         may_contain_throw.  Rename region_number to index.  Remove
8326         u.eh_catch, u.eh_throw.  Rename u.eh_try.eh_catch to first_catch.
8327         Add u.must_not_throw, landing_pads, exc_ptr_reg, filter_reg.
8328         (VEC(eh_landing_pad,gc)): New.
8329         (struct eh_status): Remove last_region_number.  Add lp_array,
8330         throw_stmt_table, ttype_data, ehspec_data.
8331         (ehr_next, FOR_ALL_EH_REGION_AT): New.
8332         (FOR_ALL_EH_REGION_FN, FOR_ALL_EH_REGION): New.
8333         * except.c (lang_protect_cleanup_actions): Return tree.
8334         (struct ehl_map_entry): Remove.
8335         (init_eh_for_function): Push zero entries for region and lp_array.
8336         (gen_eh_region): Add to region_array immediately.
8337         (gen_eh_region_catch): Operate on eh_catch objects.
8338         (gen_eh_landing_pad): New.
8339         (get_eh_region_may_contain_throw, get_eh_region_tree_label): Remove.
8340         (get_eh_region_no_tree_label, set_eh_region_tree_label): Remove.
8341         (get_eh_region_from_number, get_eh_region_from_number_fn): New.
8342         (get_eh_landing_pad_from_number_fn): New.
8343         (get_eh_landing_pad_from_number): New.
8344         (get_eh_region_from_lp_number_fn): New.
8345         (get_eh_region_from_lp_number): New.
8346         (expand_resx_stmt, note_eh_region_may_contain_throw): Remove.
8347         (get_exception_pointer, get_exception_filter): Remove.
8348         (collect_eh_region_array, can_be_reached_by_runtime): Remove.
8349         (current_function_has_exception_handlers): Simplify.
8350         (bring_to_root, eh_region_replaceable_by_p): Remove.
8351         (replace_region, hash_type_list, hash_eh_region): Remove.
8352         (eh_regions_equal_p, merge_peers, remove_unreachable_regions): Remove.
8353         (label_to_region_map, num_eh_regions): Remove.
8354         (get_next_region_sharing_label, must_not_throw_labels): Remove.
8355         (find_exception_handler_labels): Remove.
8356         (duplicate_eh_regions_0, find_prev_try): Remove.
8357         (struct duplicate_eh_regions_data): New.
8358         (duplicate_eh_regions_1): Rewrite.
8359         (duplicate_eh_regions): Return a pointer map instead of an
8360         integer offset.
8361         (copy_eh_region_1, copy_eh_region, push_reachable_handler): Remove.
8362         (redirect_eh_edge_to_label): Remove.
8363         (eh_region_outermost): Rewrite using eh_region pointers
8364         instead of integers.
8365         (add_ttypes_entry): Update for ttype_data move to eh_status.
8366         (add_ehspec_entry): Rewrite with VEC instead of varray.
8367         (assign_filter_values): Likewise.  Export.
8368         (build_post_landing_pads, connect_post_landing_pads): Remove.
8369         (dw2_build_landing_pads): Rewrite to use lp_array.
8370         (struct sjlj_lp_info, sjlj_find_directly_reachable_regions): Remove.
8371         (sjlj_assign_call_site_values): Rewrite to use lp_array.
8372         (sjlj_emit_dispatch_table, sjlj_build_landing_pads): Likewise.
8373         (sjlj_mark_call_sites): Update for landing pad numbers.
8374         (finish_eh_generation): Rewrite.
8375         (gate_handle_eh): Do nothing for no eh tree.
8376         (pass_rtl_eh): Move up near finish_eh_generation.
8377         (remove_eh_landing_pad): New.
8378         (remove_eh_handler): Export.
8379         (remove_eh_region, remove_eh_handler_and_replace): Remove.
8380         (for_each_eh_label): Rewrite to use lp_array.
8381         (make_reg_eh_region_note): New.
8382         (make_reg_eh_region_note_nothrow_nononlocal): New.
8383         (insn_could_throw_p): New.
8384         (copy_reg_eh_region_note_forward): New.
8385         (copy_reg_eh_region_note_backward): New.
8386         (check_handled, add_reachable_handler): Remove.
8387         (reachable_next_level, foreach_reachable_handler): Remove.
8388         (arh_to_landing_pad, arh_to_label, reachable_handlers): Remove.
8389         (get_eh_region_and_lp_from_rtx): New.
8390         (get_eh_region_from_rtx): New.
8391         (can_throw_internal_1, can_throw_external_1): Remove.
8392         (can_throw_internal): Use get_eh_region_from_rtx.
8393         (can_throw_external): Use get_eh_region_and_lp_from_rtx.
8394         (insn_nothrow_p, can_nonlocal_goto): New.
8395         (expand_builtin_eh_common, expand_builtin_eh_pointer): New.
8396         (expand_builtin_eh_filter, expand_builtin_eh_copy_values): New.
8397         (add_action_record): Use VEC not varray.
8398         (collect_one_action_chain): Update for eh_region changes.
8399         (convert_to_eh_region_ranges): Make static.  Use VEC not varray.
8400         Use get_eh_region_and_lp_from_rtx.
8401         (gate_convert_to_eh_region_ranges): New.
8402         (pass_convert_to_eh_region_ranges): Use it.
8403         (push_uleb128, push_sleb128): Use VEC not varray.
8404         (output_one_function_exception_table): Likewise.
8405         (dump_eh_tree): Update for eh_region changes.
8406         (verify_eh_tree): Likewise.
8407         (verify_eh_region, default_init_unwind_resume_libfunc): Remove.
8408         * tree-eh.c: Include target.h.
8409         (add_stmt_to_eh_lp_fn): Rename from add_stmt_to_eh_region_fn.
8410         Don't disallow GIMPLE_RESX; adjust argument check.
8411         (add_stmt_to_eh_lp): Rename from add_stmt_to_eh_region.
8412         (record_stmt_eh_region): Update for landing pad numbers;
8413         generate a landing pad if necessary.
8414         (remove_stmt_from_eh_lp): Rename from remove_stmt_from_eh_region.
8415         (remove_stmt_from_eh_lp_fn): Similarly.
8416         (lookup_stmt_eh_lp_fn): Rename from lookup_stmt_eh_region_fn.
8417         Update for lp numbers; don't special case missing throw_stmt_table.
8418         (lookup_expr_eh_lp): Similarly.
8419         (lookup_stmt_eh_lp): Rename from lookup_stmt_eh_region.
8420         (eh_seq, eh_region_may_contain_throw): New.
8421         (struct leh_state): Add ehp_region.
8422         (struct leh_tf_state): Remove eh_label.
8423         (emit_post_landing_pad): New.
8424         (emit_resx, emit_eh_dispatch): New.
8425         (note_eh_region_may_contain_throw): New.
8426         (frob_into_branch_around): Take eh_region not eh label;
8427         emit eh code into eh_seq.
8428         (honor_protect_cleanup_actions): Early exit for no actions.  Don't
8429         handle EXC_PTR_EXPR, FILTER_EXPR.  Use gimple_build_eh_must_not_throw,
8430         lower_eh_must_not_throw.  Emit code to eh_seq.
8431         (lower_try_finally_nofallthru): Emit eh code to eh_seq.
8432         (lower_try_finally_onedest): Likewise.
8433         (lower_try_finally_copy): Likewise.
8434         (lower_try_finally_switch): Likewise.
8435         (lower_try_finally): Initialize ehp_region.
8436         (lower_catch): Update for eh_catch objects.
8437         (lower_eh_filter): Don't handle must_not_throw.
8438         (lower_eh_must_not_throw): New.
8439         (lower_cleanup): Don't set eh_label.
8440         (lower_eh_constructs_2): Resolve eh builtins.
8441         Handle GIMPLE_EH_MUST_NOT_THROW.
8442         (lower_eh_constructs): Initialize eh_region_may_contain_throw.
8443         Add eh_seq to the end of the function body.
8444         (make_eh_dispatch_edges): New.
8445         (make_eh_edge): Remove.
8446         (make_eh_edges): Simplify for landing pads.
8447         (redirect_eh_edge_1): New.
8448         (redirect_eh_edge): Use it.
8449         (redirect_eh_dispatch_edge): New.
8450         (stmt_could_throw_p): Use a switch.  Allow RESX.
8451         (stmt_can_throw_external): Use lookup_stmt_eh_lp.
8452         (stmt_can_throw_internal): Likewise.
8453         (maybe_clean_eh_stmt_fn, maybe_clean_eh_stmt): New.
8454         (maybe_clean_or_replace_eh_stmt): Update for landing pads.
8455         (maybe_duplicate_eh_stmt_fn, maybe_duplicate_eh_stmt): New.
8456         (gate_refactor_eh): New.
8457         (pass_refactor_eh): Use it.
8458         (lower_resx, execute_lower_resx, pass_lower_resx): New.
8459         (lower_eh_dispatch, execute_lower_eh_dispatch): New.
8460         (gate_lower_ehcontrol, pass_lower_eh_dispatch): New.
8461         (remove_unreachable_handlers): Rename from
8462         tree_remove_unreachable_handlers; rewrite for landing pads;
8463         call remove_eh_handler directly.
8464         (remove_unreachable_handlers_no_lp): New.
8465         (unsplit_eh, unsplit_all_eh): New.
8466         (tree_empty_eh_handler_p, all_phis_safe_to_merge): Remove.
8467         (cleanup_empty_eh_merge_phis, cleanup_empty_eh_move_lp): New.
8468         (cleanup_empty_eh_unsplit): New.
8469         (cleanup_empty_eh): Rewrite.
8470         (cleanup_all_empty_eh): New.
8471         (execute_cleanup_eh): Rename from cleanup_eh.  Remove unreachable
8472         handlers first.  Use unsplit_all_eh, cleanup_all_empty_eh.
8473         (gate_cleanup_eh): New.
8474         (pass_cleanup_eh): Use it.
8475         (verify_eh_edges): Move later in file.  Expect one EH edge.
8476         (verify_eh_dispatch_edge): New.
8477
8478         * Makefile.in (FUNCTION_H): Use vecprim.h, not varray.h.
8479         (gtype-desc.o): Add TARGET_H.
8480         (tree.o): Use EXCEPT_H, not except.h.
8481         (cfgbuild.o): Add EXPR_H.
8482         (GTFILES): Add vecprim.h.
8483         * builtins.c (expand_builtin): Handle BUILT_IN_EH_POINTER,
8484         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES.
8485         * builtins.def (BUILT_IN_UNWIND_RESUME, BUILT_IN_EH_POINTER,
8486         BUILT_IN_EH_FILTER, BUILT_IN_EH_COPY_VALUES): New.
8487         * calls.c (emit_call_1): Use make_reg_eh_region_note.
8488         * cfgbuild.c (control_flow_insn_p): Use can_nonlocal_goto; tidy
8489         calls to can_throw_internal.
8490         (rtl_make_eh_edge): Use get_eh_landing_pad_from_rtx.
8491         (make_edges): Don't handle RESX; use can_nonlocal_goto.
8492         * cfgexpand.c (expand_gimple_stmt_1): Don't handle RESX.
8493         (expand_gimple_stmt): Use make_reg_eh_region_note.
8494         (expand_debug_expr): Don't handle EXC_PTR_EXPR and FILTER_EXPR.
8495         (gimple_expand_cfg): Don't call convert_from_eh_region_ranges,
8496         or find_exception_handler_labels.
8497         * cfgrtl.c (rtl_verify_flow_info_1): Don't handle RESX.  Assert
8498         there is exacly one EH edge.  Use can_nonlocal_goto and
8499         can_throw_internal.
8500         * cgraphunit.c (update_call_expr): Use maybe_clean_eh_stmt_fn.
8501         (cgraph_materialize_all_clones): Use maybe_clean_or_replace_eh_stmt.
8502         * combine.c (can_combine_p, try_combine): Use insn_nothrow_p.
8503         * cse.c (count_reg_usage, insn_live_p): Use insn_could_throw_p.
8504         * dce.c (deletable_insn_p_1): Don't test may_trap_p.
8505         (deletable_insn_p): Use insn_nothrow_p; reorder nonjump insn test.
8506         * dse.c (scan_insn): Use insn_could_throw_p.
8507         * emit-rtl.c (try_split): Use copy_reg_eh_region_note_backward.
8508         * expr.c (expand_expr_real): Use make_reg_eh_region_note.
8509         (expand_expr_real_1): Don't handle RESX, EXC_PTR, or FILTER_EXPR.
8510         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't handle
8511         EXC_PTR_EXPR or FILTER_EXPR.
8512         (tree_expr_nonzero_warnv_p): Likewise.
8513         * function.h: Include vecprim.h, not varray.h
8514         (struct rtl_eh): Remove filter, exc_ptr, built_landing_pad members;
8515         move ttype_data and ehspec_data members to struct eh_status; change
8516         action_record_data member to a VEC.
8517         * gcse.c (hash_scan_set): Use can_throw_internal.
8518         * gengtype.c (open_base_files): Add target.h to gtype-desc.c.
8519         * gimple-iterator.c (gsi_replace): Use maybe_clean_or_replace_eh_stmt.
8520         * gimple-low.c (lower_stmt): Handle GIMPLE_EH_MUST_NOT_THROW.
8521         (block_may_fallthru): Don't handle RESX_EXPR.
8522         * gimple-pretty-print.c (dump_gimple_label): Dump EH_LANDING_PAD_NR.
8523         (dump_gimple_eh_must_not_throw, dump_gimple_eh_dispatch): New.
8524         (dump_gimple_stmt): Dump landing pad information with TDF_EH;
8525         handle GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH.
8526         * gimple.c (gss_for_code): Handle GIMPLE_EH_MUST_NOT_THROW,
8527         GIMPLE_EH_DISPATCH, GIMPLE_RESX.
8528         (gimple_size): Likewise.
8529         (gimple_build_eh_dispatch, gimple_build_eh_must_not_throw): New.
8530         (gimple_build_resx): Use gimple_build_with_ops.
8531         (DEFTREECODE): Don't handle EXC_PTR_EXPR, FILTER_EXPR.
8532         (is_gimple_val): Likewise.
8533         (is_gimple_stmt): Remove RESX_EXPR.
8534         * gimple.def (GIMPLE_EH_MUST_NOT_THROW, GIMPLE_EH_DISPATCH): New.
8535         (GIMPLE_RESX): Reorder with other EH constructs.
8536         * gimple.h (struct gimple_statement_eh_mnt): New.
8537         (struct gimple_statement_eh_ctrl): Rename from gimple_statement_resx.
8538         (gimple_eh_filter_must_not_throw): Remove.
8539         (gimple_eh_filter_set_must_not_throw): Remove.
8540         (gimple_eh_must_not_throw_fndecl): New.
8541         (gimple_eh_dispatch_region, gimple_eh_dispatch_set_region): New.
8542         (is_gimple_resx): New.
8543         * gimplify.c (gimplify_expr): Don't handle EXC_PTR_EXPR, RESX_EXPR.
8544         Don't copy EH_FILTER_MUST_NOT_THROW.
8545         * gsstruct.def (GSS_EH_MNT, GSS_EHCONTROL): New.
8546         * ipa-inline.c (estimate_function_body_sizes): Don't try to
8547         handle must_not_throw_labels specially.
8548         * ipa-pure-const.c (check_call): Update debug statement for LP.
8549         * ipa-type-escape.c (check_operand): Don't handle EXC_PTR or FILTER.
8550         * ipa-utils.c (get_base_var): Likewise.
8551         * libfunc.h (LTI_unwind_resume, unwind_resume_libfunc): Remove.
8552         * lower-subreg.c (move_eh_region_note): Remove.
8553         (resolve_simple_move): Use copy_reg_eh_region_note_forward.
8554         * omp-low.c (new_omp_context): Update for eh_lp_nr.
8555         (create_task_copyfn): Likewise.
8556         (maybe_catch_exception): Use gimple_build_eh_filter.
8557         * optabs.c (emit_libcall_block): Update test for no-nonlocal-goto
8558         REG_EH_REGION.  Use make_reg_eh_region_note_nothrow_nononlocal.
8559         * passes.c (init_optimization_passes): Add pass_lower_eh_dispatch
8560         and pass_lower_resx.
8561         * print-tree.c (print_node): Dump EH_LANDING_PAD_NR.
8562         * recog.c (peephole2_optimize): Use copy_reg_eh_region_note_backward,
8563         can_throw_internal, can_nonlocal_goto.
8564         * reload1.c (fixup_eh_region_note): Use insn_could_throw_p,
8565         copy_reg_eh_region_note_forward.
8566         (emit_input_reload_insns): Use copy_reg_eh_region_note_forward.
8567         (emit_output_reload_insns): Likewise.
8568         (copy_eh_notes): Remove.
8569         * rtl.def (RESX): Remove.
8570         * rtl.h: Update declarations.
8571         * sese.c (graphite_copy_stmts_from_block): Use maybe_duplicate_eh_stmt.
8572         * tree-cfg.c (make_edges): Handle GIMPLE_EH_DISPATCH.
8573         (update_eh_label): Remove.
8574         (cleanup_dead_labels_eh): New.
8575         (cleanup_deal_labels): Use it instead of update_eh_label.
8576         (gimple_merge_blocks): Update landing pad data structure when
8577         removing a landing pad label.
8578         (remove_useless_stmts_tc): Remove gimple_eh_filter_must_not_throw
8579         test; handle GIMPLE_EH_MUST_NOT_THROW.
8580         (is_ctrl_altering_stmt): Handle GIMPLE_EH_DISPATCH.
8581         (verify_gimple_assign_single): Don't handle EXC_PTR or FILTER_EXPR.
8582         (verify_types_in_gimple_stmt): Handle GIMPLE_EH_DISPATCH.
8583         (verify_stmt): Likewise.  Verify landing pads.
8584         (gimple_redirect_edge_and_branch): Handle GIMPLE_EH_DISPATCH.
8585         (gimple_duplicate_bb): Use maybe_duplicate_eh_stmt.
8586         (struct move_stmt_d): Add eh_map.
8587         (move_stmt_eh_region_nr, move_stmt_eh_region_tree_nr): New.
8588         (move_stmt_r): Remap eh region numbers in builtin calls,
8589         resx and eh_dispatch.
8590         (move_block_to_fn): Remove eh_offset parameter.  Use
8591         maybe_duplicate_eh_stmt_fn.
8592         (find_outermost_region_in_block): Operate on eh_region pointers
8593         instead of region numbers.
8594         (move_sese_region_to_fn): Expect eh_map instead of eh_offset from
8595         duplicate_eh_regions.
8596         * tree-cfgcleanup.c (tree_forwarder_block_p): Move entry block edge
8597         test earlier.  Disallow EH landing pads.
8598         * tree-cfa.c (create_tree_common_ann): Don't set ann->rn.
8599         * tree-flow.h: Update declarations.
8600         (struct tree_ann_common_d): Replace rn with lp_nr.
8601         * tree-inline.c (copy_tree_body_r): Don't handle RESX_EXPR.
8602         (remap_eh_region_nr, remap_eh_region_tree_nr): New.
8603         (remap_gimple_stmt): Remap eh region numbers in builtin calls,
8604         resx and eh_dispatch.
8605         (copy_bb): Use maybe_duplicate_eh_stmt_fn.
8606         (copy_edges_for_bb): Use make_eh_dispatch_edges.
8607         (copy_cfg_body): Expect eh_map instead of eh_region_offset
8608         from duplicate_eh_regions.
8609         (estimate_num_insns): Don't handle EXC_PTR_EXPR or FILTER_EXPR;
8610         update RESX; handle EH_DISPATCH.
8611         (expand_call_inline): Set eh_lp_nr, not eh_region.
8612         (maybe_inline_call_in_expr): Likewise.
8613         * tree-inline.h (struct copy_body_data): Replace eh_region with
8614         eh_lp_nr, eh_region_offset with eh_map.
8615         * tree-optimize.c (execute_fixup_cfg): Use maybe_clean_eh_stmt.
8616         * tree-pass.h (pass_lower_eh_dispatch, pass_lower_resx): New.
8617         * tree-pretty-print.c (dump_generic_node): Don't handle
8618         EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR.
8619         * tree-sra.c (scan_function): Use maybe_clean_eh_stmt.
8620         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Don't handle
8621         EXC_PTR_EXPR, FILTER_EXPR.
8622         * tree-ssa-operands.c (get_expr_operands): Likewise.
8623         * tree-ssa-propagate.c (valid_gimple_rhs_p): Likewise.
8624         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
8625         (ao_ref_init_from_vn_reference): Likewise.
8626         * tree-ssa-sink.c (statement_sink_location): Likewise.
8627         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
8628         (mark_virtual_phi_result_for_renaming): Export.  Tidy.
8629         * tree-ssa-pre.c (get_or_alloc_expr_for): Don't handle
8630         EXC_PTR_EXPR, FILTER_EXPR.
8631         (is_exception_related): Remove.
8632         (compute_avail): Don't call it.
8633         * tree-ssa-structalias.c: Remove VEC definitions for int and unsigned.
8634         * tree.c (find_decls_types_in_eh_region): Update for eh_region changes.
8635         (find_decls_types_in_node): Use FOR_ALL_EH_REGION_FN.
8636         (build_common_builtin_nodes): Add enable_cxa_end_cleanup parameter.
8637         Build EH builtins.
8638         (build_resx): Remove.
8639         * tree.def (EXC_PTR_EXPR, FILTER_EXPR, RESX_EXPR): Remove.
8640         * tree.h: Update declarations.
8641         (EH_FILTER_MUST_NOT_THROW): Remove.
8642         (struct tree_label_decl): Add eh_landing_pad_nr.
8643         (EH_LANDING_PAD_NR): New.
8644         * value-prof.c (gimple_ic): Tidy variable names.  Update for
8645         landing pad numbers.
8646         (gimple_stringop_fixed_value): Tidy variable names.  Assert
8647         that neither call stmt can throw.
8648         * vecprim.h (uchar): New.
8649         (VEC(uchar,heap), VEC(uchar,gc)): New.
8650
8651         * c-common.c (c_define_builtins): Update call to
8652         build_common_builtin_nodes.
8653         * c-parser.c (c_parse_file): Don't call
8654         default_init_unwind_resume_libfunc.
8655
8656 2009-09-14  Richard Sandiford  <rdsandiford@googlemail.com>
8657
8658         * config/mips/mips-protos.h (mips_cfun_has_cprestore_slot_p): Declare.
8659         (mips_cprestore_address_p): Likewise.
8660         (mips_save_gp_to_cprestore_slot): Likewise.
8661         (mips_restore_gp): Rename to...
8662         (mips_restore_gp_from_cprestore_slot): ...this.
8663         (mips_must_initialize_gp_p): Declare.
8664         (mips_emit_save_slot_move): Likewise.
8665         (mips_output_load_label): Return nothing.
8666         (mips_eh_uses): Declare.
8667         * config/mips/mips.h (TARGET_SPLIT_CALLS): Require epilogue_completed.
8668         (TARGET_CPRESTORE_DIRECTIVE): New macro.
8669         (TARGET_ABSOLUTE_JUMPS): Likewise.
8670         (EH_USES): Likewise.
8671         (FIRST_PSEUDO_REGISTER): Update comment.
8672         (MIPS_ABSOLUTE_JUMP): New macro, extracted from...
8673         (MIPS_CALL): ...here.
8674         (REGISTER_NAMES): Add $cprestore.
8675         * config/mips/mips.c (machine_function): Remove has_gp_insn_p.
8676         Add load_label_length, has_inflexible_gp_insn_p,
8677         has_flexible_gp_insn_p, must_initialize_gp_p and
8678         must_restore_gp_when_clobbered_p.
8679         (mips_expand_call): Don't generate split instructions here.
8680         (mips_split_call): Update the call to mips_restore_gp after
8681         the above name change.
8682         (mips16_cfun_returns_in_fpr_p): Move earlier in file.
8683         (mips_find_gp_ref): New function.
8684         (mips_insn_has_inflexible_gp_ref_p): Likewise.
8685         (mips_cfun_has_inflexible_gp_ref_p): Likewise.
8686         (mips_insn_has_flexible_gp_ref_p): Likewise.
8687         (mips_cfun_has_flexible_gp_ref_p): Likewise.
8688         (mips_function_has_gp_insn): Delete.
8689         (mips_global_pointer): Drop the df_regs_ever_live_p check.
8690         Use the new functions above.  Only return INVALID_REGNUM
8691         for TARGET_ABSOLUTE_JUMPS.
8692         (mips_must_initialize_gp_p): New function.
8693         (mips_get_cprestore_base_and_offset): New function, extracted from...
8694         (mips_cprestore_slot): ...here.  Take a bool parameter.
8695         (mips_cfun_has_cprestore_slot_p): New function.
8696         (mips_cprestore_address_p): Likewise.
8697         (mips_save_gp_to_cprestore_slot): Likewise.
8698         (mips_restore_gp): Rename to...
8699         (mips_restore_gp_from_cprestore_slot): ...this.  Assert
8700         epilogue_completed.  Update the call to mips_cprestore_slot.
8701         Test cfun->machine->must_restore_gp_when_clobbered_p.
8702         (mips_direct_save_slot_move_p): New function.
8703         (mips_emit_save_slot_move): Likewise.
8704         (mips_output_cplocal): Test mips_must_initialize_gp_p () instead
8705         of cfun->machine->global_pointer.
8706         (mips_output_function_prologue): Check mips_must_initialize_gp_p ().
8707         (mips_save_reg): Use mips_emit_save_slot_move.
8708         (mips_expand_prologue): Set must_initialize_gp_p.
8709         Use mips_cfun_has_cprestore_slot_p.  Use gen_potential_cprestore
8710         for all cprestore saves.  Emit a use_cprestore instruction after
8711         setting up the cprestore slot.
8712         (mips_restore_reg): Use mips_emit_save_slot_move.
8713         (mips_process_load_label): New function.
8714         (mips_load_label_length): Likewise.
8715         (mips_output_load_label): Don't return asm: output it here instead.
8716         Use mips_process_load_label.
8717         (mips_adjust_insn_length): Adjust the length of branch instructions
8718         that have length MAX_PIC_BRANCH_LENGTH.
8719         (mips_output_conditional_branch): Update the call to
8720         mips_output_load_label.  Assume the branch target is OPERANDS[0]
8721         rather than OPERANDS[1].  Use MIPS_ABSOLUTE_JUMP for absolute jumps.
8722         (mips_output_order_conditional_branch): Swap the meaning of
8723         OPERANDS[0] and OPERANDS[1].
8724         (mips_variable_issue): Don't count ghost instructions.
8725         (mips_expand_ghost_gp_insns): New function.
8726         (mips_reorg): Rerun mips_reorg_process_insns if it returns true.
8727         (mips_output_mi_thunk): Set must_initialize_gp_p.
8728         (mips_eh_uses): New function.
8729         * config/mips/predicates.md (cprestore_save_slot_operand)
8730         (cprestore_load_slot_operand): New predicates.
8731         * config/mips/mips.md (UNSPEC_POTENTIAL_CPRESTORE): New unspec.
8732         (UNSPEC_MOVE_GP): Likewise.
8733         (UNSPEC_CPRESTORE, UNSPEC_RESTORE_GP, UNSPEC_EH_RETURN)
8734         (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT): Bump to make room.
8735         (CPRESTORE_SLOT_REGNUM): New register.
8736         (MAX_PIC_BRANCH_LENGTH): New constant.
8737         (jal_macro): Use MIPS_ABSOLUTE_JUMPS.
8738         (length): Use MAX_PIC_BRANCH_LENGTH as a placeholder for PIC long
8739         branches.  Fix commentary.
8740         (loadgp_newabi_<mode>): Change from unspec_volatile to unspec.
8741         Only split if mips_must_initialize_gp_p; expand to nothing otherwise.
8742         Change type to "ghost".
8743         (loadgp_absolute_<mode>): Likewise.
8744         (loadgp_rtp_<mode>): Likewise.
8745         (copygp_mips16): Likewise.
8746         (loadgp_blockage): Remove redundant mode attribute.
8747         (potential_cprestore): New instruction.
8748         (cprestore): Turn into an unspec set.
8749         (use_cprestore): New instruction.
8750         (*branch_fp): Swap operands 0 and 1.  Remove redundant mode attribute.
8751         (*branch_fp_inverted): Likewise.
8752         (*branch_order<mode>): Likewise.
8753         (*branch_order<mode>_inverted): Likewise.
8754         (*branch_equality<mode>): Likewise.
8755         (*branch_equality<mode>_inverted): Likewise.
8756         (*branch_bit<bbv><mode>): Likewise.
8757         (*branch_bit<bbv><mode>_inverted): Likewise.
8758         (*branch_equality<mode>_mips16): Remove redundant mode.
8759         (jump): Turn into a define_expand.
8760         (*jump_absolute): New instruction.
8761         (*jump_pic): Likewise.
8762         (*jump_mips16): Rename previously-unnamed pattern.  Remove
8763         redundant mode attribute.
8764         (restore_gp): Split on epilogue_completed rather than
8765         reload_completed.  Change type to "ghost".
8766         (move_gp<mode>): New instruction.
8767         * config/mips/mips-dsp.md (mips_bposge): Swap operands 0 and 1.
8768         Remove redundant mode attribute.
8769         * config/mips/mips-ps-3d.md (bc1any4t): Likewise.
8770         (bc1any4f, bc1any2t, bc1any2f): Likewise.
8771         (*branch_upper_lower, *branch_upper_lower_inverted): Likewise.
8772
8773 2009-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
8774
8775         PR target/41210
8776         * config/rs6000/rs6000.c (rs6000_function_value): V2DF and V2DI
8777         are returned in the same register (vs34 or v2) that Altivec vector
8778         types are returned in.
8779         (rs6000_libcall_value): Ditto.
8780
8781         PR target/41331
8782         * config/rs6000/rs6000.c (rs6000_emit_move): Use gen_add3_insn
8783         instead of explicit addsi3/adddi3 calls.
8784         (rs6000_split_multireg_move): Ditto.
8785         (rs6000_emit_allocate_stack): Ditto.
8786         (rs6000_emit_prologue): Ditto.
8787         (rs6000_output_mi_thunk): Ditto.
8788
8789         * config/rs6000/rs6000.md (bswapdi*): Don't assume the pointer
8790         size is 64 bits if we can use 64-bit registers.
8791
8792 2009-09-14  Bernd Schmidt  <bernd.schmidt@analog.com>
8793
8794         * config/bfin/bfin.c (bfin_longcall_p): Don't use short calls for weak
8795         symbols.
8796
8797         From Jie Zhang <jie.zhang@analog.com>:
8798         * config/bfin/bfin.c (bfin_expand_prologue): Ask do_link to
8799         save FP and RETS with saveall attribute.
8800         (bfin_expand_epilogue): Ask do_unlink to restore FP and RETS
8801         with saveall attribute.
8802
8803         * config/bfin/bfin.c (bfin_expand_builtin,
8804         case BFIN_BUILTIN_MULT_1X32X32): Force constants to registers for the
8805         operands.
8806
8807         From Jie Zhang <jie.zhang@analog.com>:
8808         * config/bfin/bfin.c (bfin_expand_builtin): Initialize icodes
8809         before use in two places.
8810         * config/bfin/bfin.md (AREG): Define mode iterator.
8811         (reload_in, reload_out): Use mode iterator AREG.
8812
8813 2009-09-14  Richard Guenther  <rguenther@suse.de>
8814
8815         PR middle-end/41350
8816         * dwarf2out.c (dwarf2out_begin_prologue): Adjust non-CFI asm
8817         EH personality path.
8818
8819 2009-09-13  Richard Guenther  <rguenther@suse.de>
8820             Rafael Avila de Espindola  <espindola@google.com>
8821
8822         * langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
8823         (LANG_HOOKS_EH_PERSONALITY): Likewise.
8824         (LANG_HOOKS_INITIALIZER): Adjust.
8825         (lhd_pass_through_t): Declare.
8826         * langhooks.h (struct lang_hooks): Add eh_runtime_type and
8827         eh_personality.
8828         * langhooks.c (lhd_pass_through_t): New function.
8829         * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
8830         dwarf2out_begin_prologue): Use personality from current_function_decl.
8831         * expr.h (get_personality_function): Declare.
8832         * expr.c (get_personality_function): New function.
8833         (build_personality_function): Likewise.
8834         * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
8835         (eh_personality_libfunc): Remove.
8836         * optabs.c (build_libfunc_function): New function split out from ...
8837         (init_one_libfunc): ... here.
8838         * tree.h (DECL_FUNCTION_PERSONALITY): New.
8839         (tree_function_decl): Add personality.
8840         (lhd_gcc_personality): Declare.
8841         (build_personality_function): Likewise.
8842         * tree.c (gcc_eh_personality_decl): New.
8843         (lhd_gcc_personality): New function.
8844         * except.h (lang_eh_runtime_type): Remove.
8845         (enum eh_personality_kind): New.
8846         (build_personality_function): Declare.
8847         (function_needs_eh_personality): Declare.
8848         * except.c (lang_eh_runtime_type): Remove.
8849         (function_needs_eh_personality): New function.
8850         (add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
8851         (sjlj_emit_function_enter, output_function_exception_table):
8852         Use personality from current_function_decl.
8853         * tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
8854         * tree-inline.c (tree_can_inline_p): Do not inline across different
8855         EH personalities.
8856         (expand_call_inline): Likewise.  Adjust the callers EH personality.
8857         (tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
8858         * cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
8859         * Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
8860         (c-parser.o): Likewise
8861         * c-tree.h (c_eh_initialized_p): Remove.
8862         (c_maybe_initialize_eh): Likewise.
8863         * c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
8864         (finish_decl): Don't call c_maybe_initialize_eh.
8865         (c_eh_initialized_p): Remove.
8866         (c_maybe_initialize_eh): Likewise.
8867         * c-parser.c (c_parser_omp_construct): Likewise.
8868         (c_parse_file): Initialize exception handling.
8869
8870 2009-09-13  Kai Tietz  <kai.tietz@onevision.com>
8871
8872         * config.gcc (tm_file): Remove i386/biarch32.h
8873         for i?86-w64-mingw* case.
8874         (i?86-*-mingw* andx86_64-*-mingw*): Add multilib
8875         support.
8876         * config.host: Set for x64 mingw the option
8877         use_long_long_for_widest_fast_int to yes.
8878
8879 2009-09-13  Eric Botcazou  <ebotcazou@adacore.com>
8880
8881         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
8882         * dbxout.c (dbxout_function_end): Do not test DECL_IGNORED_P.
8883         (dbxout_begin_function): Likewise.
8884         * final.c (dwarf2_debug_info_emitted_p): New predicate.
8885         (final_start_function): Do not emit debug info if DECL_IGNORED_P is
8886         set on the function.
8887         (final_end_function): Likewise.
8888         (final_scan_insn): Likewise.
8889         (rest_of_handle_final): Likewise.
8890         * varasm.c (assemble_start_function): Likewise.
8891         * config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
8892
8893 2009-09-12  Jason Merrill  <jason@redhat.com>
8894
8895         * dbgcnt.c (dbg_cnt_process_single_pair): constify.
8896         * opts.c (common_handle_option): constify.
8897
8898 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8899
8900         * doc/install.texi (avr): Remove obsolete reference site.
8901
8902 2009-09-12  Gerald Pfeifer  <gerald@pfeifer.com>
8903
8904         * doc/install.texi (Binaries): Adjust AIX link.
8905
8906 2009-09-12  Akim Demaille  <demaille@gostai.com>
8907
8908         * doc/invoke.texi (-fstrict-aliasing): Correct two examples.
8909         Use an imperative sentence.
8910
8911 2009-09-11  Richard Henderson  <rth@redhat.com>
8912
8913         * gsstruct.def (DEFGSSTRUCT): Remove printable-name argument; add
8914         structure-name and has-tree-operands arguments; update all entries.
8915         * gimple.def (DEFGSCODE): Replace 3rd argument with GSS_symbol;
8916         update all entries.
8917         * gimple.c (gimple_ops_offset_): Use HAS_TREE_OP argument.
8918         (gsstruct_code_size): New.
8919         (gss_for_code_): New.
8920         (gss_for_code): Remove.
8921         (gimple_size): Rewrite using gsstruct_code_size.
8922         (gimple_statement_structure): Move to gimple.h.
8923         * gimple.h (gimple_ops_offset_, gss_for_code_): Declare.
8924         (gss_for_code, gimple_statement_structure): New.
8925         (gimple_ops): Use new arrays; tidy.
8926
8927 2009-09-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8928
8929         * config/pa/predicates.md (symbolic_operand): Require a CONST symbolic
8930         operand to be a PLUS expression.
8931         * config/pa/pa.c (pa_secondary_reload): Likewise.
8932
8933 2009-09-11  Jakub Jelinek  <jakub@redhat.com>
8934
8935         * combine.c (propagate_for_debug_subst): Call wrap_constant on top.
8936
8937         * print-rtl.c (print_rtx): Use JUMP_LABEL (in_rtx) instead of
8938         XEXP (in_rtx, 8).
8939
8940 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8941
8942         From Jie Zhang <jie.zhang@analog.com>:
8943         * doc/extend.texi (node Function Attributes): Document l2
8944         function attribute.
8945         (node Blackfin Variable Attributes): Document l2 variable attributes.
8946
8947 2009-09-11  Loren J. Rittle  <ljrittle@acm.org>
8948
8949         * config.gcc (*-*-freebsd*): Enable default_use_cxa_atexit
8950         to match the system compiler's configuration at inflection point.
8951         Add comment to remark a remaining difference with system compiler.
8952
8953         * configure.ac (*-*-freebsd*): Enable check for __stack_chk_fail.
8954         * configure: Regenerate.
8955
8956 2009-09-11  Bernd Schmidt  <bernd.schmidt@analog.com>
8957
8958         From Jie Zhang <jie.zhang@analog.com>:
8959         * config/bfin/bfin.c (bfin_expand_call): Handle L2 functions.
8960         (bfin_handle_l2_attribute): New.
8961         (bfin_attribute_table): Add l2 attribute.
8962
8963 2009-09-11  Michael Matz  <matz@suse.de>
8964
8965         PR middle-end/41275
8966         * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
8967         on the local_decls list.
8968
8969 2009-09-11  Alexandre Oliva  <aoliva@redhat.com>
8970
8971         PR debug/41276
8972         PR debug/41307
8973         * cselib.c (cselib_expand_value_rtx_cb): Document callback
8974         interface.
8975         (cselib_expand_value_rtx_1): Use callback for SUBREGs.  Adjust
8976         for VALUEs, to implement the documented interface.
8977         * var-tracking.c (vt_expand_loc_callback): Handle SUBREGs.
8978         Adjust for VALUEs and anything else, to implement the
8979         documented interface.
8980
8981 2009-09-10  Nathan Froyd  <froydnj@codesourcery.com>
8982
8983         * config/rs6000/rs6000.h (DATA_ALIGNMENT): Check that we are dealing
8984         with actual SPE/paired vector modes before using 64-bit alignment.
8985         Check that TYPE is a REAL_TYPE for TARGET_E500_DOUBLE.
8986
8987 2009-09-10  DJ Delorie  <dj@redhat.com>
8988
8989         * config/mep/mep.md (eh_epilogue): Defer until after epilogue is
8990         emitted.
8991
8992         * config/mep/mep.h (LEGITIMATE_CONSTANT_P): New.
8993         * config/mep/mep.c (mep_legitimate_constant_p): New.
8994         * config/mep/mep-protos.h: Prototype it.
8995
8996 2009-09-10  Richard Henderson  <rth@redhat.com>
8997
8998         * print-rtl.c (print_rtx): Fix JUMP_LABEL index.
8999
9000 2009-09-10  Jason Merrill  <jason@redhat.com>
9001
9002         * tree.c (chain_index): New fn.
9003         * tree.h: Declare it.
9004
9005 2009-09-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9006
9007         * config/sol2-c.c (cmn_err_length_specs): Initialize
9008         scalar_identity_flag.
9009
9010 2009-09-10  Richard Henderson  <rth@redhat.com>
9011
9012         * tree.h (struct tree_decl_common): Move align member earlier;
9013         move label_decl_uid member ...
9014         (struct tree_label_decl): ... here.
9015         (LABEL_DECL_UID): Update to match.
9016
9017         * tree-cfg.c (dump_function_to_file): Dump eh tree with TDF_EH,
9018         not TDF_DETAILS.
9019
9020         * tree-cfg.c (gimple_redirect_edge_and_branch): Do
9021         gimple_try_redirect_by_replacing_jump test after no-op and EH tests.
9022
9023         * tree-cfg.c (split_edge_bb_loc): Don't disallow placement at
9024         dest_prev if the edge is complex.
9025
9026         * tree-cfg.c (is_ctrl_stmt): Use a switch.
9027
9028         * tree-cfg.c (gimple_can_merge_blocks_p): Move label and
9029         loop latch tests earlier.
9030
9031         * gimple-iterator.c (gimple_find_edge_insert_loc): Insert
9032         before GIMPLE_RETURN, not after its predecessor; insert
9033         before GIMPLE_RESX.
9034
9035         * gimple-iterator.c (gimple_find_edge_insert_loc): Use
9036         gimple_seq_empty_p to test for no PHI nodes.
9037         * tree-cfg.c (split_critical_edges): Likewise.
9038
9039         * c-common.h (c_dialect_cxx, c_dialect_objc): Boolify.
9040
9041 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9042
9043         * final.c (shorten_branches) : Ignore DEBUG_INSN_P instructions
9044         introduced by the VTA branch merge.
9045
9046 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9047
9048         * ira-conflicts.c: Use fputs or putc instead of fprintf
9049         where appropriate.
9050         * cfg.c: Ditto.
9051         * toplev.c: Ditto.
9052         * tree-switch-conversion.c: Ditto.
9053
9054 2009-09-10  Hariharan Sandanagobalane  <hariharan@picochip.com>
9055
9056         * config/picochip/picochip.c : Ignore DEBUG_INSN_P instructions
9057         introduced by the VTA branch merge.
9058
9059 2009-09-10  Uros Bizjak  <ubizjak@gmail.com>
9060
9061         Revert:
9062         2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9063
9064         PR rtl-optimization/39779
9065         * expr.c (convert_modes): Return when mode == oldmode after
9066         CONST_INTs are processed.
9067
9068 2009-09-10  Nick Clifton  <nickc@redhat.com>
9069
9070         * config/mep/mep.c (mep_encode_section_info): Copy weakness
9071         attribute and referring decl when creating renamed symbol.
9072
9073 2009-09-10  Richard Guenther  <rguenther@suse.de>
9074
9075         PR middle-end/41257
9076         * cgraphunit.c (cgraph_emit_thunks): Emit thunks only for
9077         reachable nodes.
9078         (cgraph_finalize_compilation_unit): Compute reachability
9079         before emitting thunks.  Properly process aliases before
9080         possibly removing unreachable nodes.
9081
9082 2009-09-10  Richard Guenther  <rguenther@suse.de>
9083
9084         PR middle-end/41254
9085         * tree.c (struct free_lang_data_d): Add worklist member.
9086         (find_decls_types_r): Push onto the worklist instead of recursing.
9087         Handle TREE_BINFOs properly.
9088         (find_decls_types): New function wrapped around find_decls_types_r
9089         to process the worklist.
9090         (find_decls_types_in_eh_region): Use it.
9091         (find_decls_types_in_node): Likewise.
9092         (find_decls_types_in_var): Likewise.
9093         (free_lang_data_in_cgraph): Likewise.  Free the worklist.
9094         * tree.h (RECORD_OR_UNION_TYPE_P): New.
9095         (AGGREGATE_TYPE_P): Adjust.
9096
9097 2009-09-09  Jason Merrill  <jason@redhat.com>
9098
9099         * configure.ac: Check glibc version even if we have an in-tree
9100         assembler.
9101
9102 2009-09-09  Anthony Green  <green@moxielogic.com>
9103
9104         * config/moxie/moxie.md (*movsi, *movhi, *movqi): Use xor to load
9105         the constant 0 when appropriate.
9106         * config/moxie/constraints.md: Add constraint O.
9107
9108         * config/moxie/moxie.c (moxie_setup_incoming_varargs): Adjust
9109         to pass up to 6 32-bit argument values in registers.
9110         (moxie_function_arg): Ditto.
9111         (moxie_arg_partial_bytes): Ditto.
9112         * config/moxie/moxie.h (FUNCTION_ARG_ADVANCE): Ditto.
9113         (REG_PARM_STACK_SPACE): Ditto.
9114         (FUNCTION_ARG_REGNO_P): Ditto.
9115
9116         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
9117         instruction to allocate stack space.
9118
9119 2009-09-09  Segher Boessenkool  <segher@kernel.crashing.org>
9120
9121         * config/rs6000/rs6000.md (bswapdi2_64bit): Fix
9122         unnecessarily stringent constraints.  Fix address
9123         calculation in the splitters.
9124
9125 2009-09-09  Uros Bizjak  <ubizjak@gmail.com>
9126
9127         PR rtl-optimization/39779
9128         * expr.c (convert_modes): Return when mode == oldmode after
9129         CONST_INTs are processed.
9130
9131 2009-09-09  Kai Tietz  <kai.tietz@onevision.com>
9132
9133         PR/41315
9134         * config/i386.c (ix86_can_use_return_insn_p): Check for padding0, too.
9135         (ix86_expand_prologue): Take frame.padding0 into logic of
9136         to_allocate checks.
9137         (ix86_expand_epilogue): Likewise.
9138
9139 2009-09-09  Jakub Jelinek  <jakub@redhat.com>
9140
9141         * config/t-slibgcc-elf-ver (SHLIB_MAKE_SOLINK, SHLIB_INSTALL_SOLINK):
9142         New variables.
9143         (SHLIB_LINK, SHLIB_INSTALL): Use them.
9144         * config/t-slibgcc-libgcc: New file.
9145         * config.gcc (powerpc*-*-linux*, powerpc*-*-gnu*): Use it.
9146
9147 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9148
9149         PR tree-optimization/41089
9150         * tree-sra.c (find_var_candidates): Do not consider va_lists in
9151         early SRA.
9152
9153 2009-09-09  Richard Henderson  <rth@redhat.com>
9154
9155         * gimple.h (CASE_GIMPLE_OMP): New.
9156         (is_gimple_omp): Use it.
9157         * tree-cfg.c (is_ctrl_altering_stmt): Likewise.
9158         (verify_gimple_debug): Likewise.
9159
9160 2009-09-09  Richard Guenther  <rguenther@suse.de>
9161
9162         PR tree-optimization/41101
9163         * tree-ssa-pre.c (maximal_set): Remove.
9164         (compute_antic_aux): Treat the maximal set as implicitly all ones.
9165         Defer all blocks we didn't visit at least one successor.
9166         (add_to_exp_gen): Do not add to the maximal set.
9167         (make_values_for_phi): Likewise.
9168         (compute_avail): Likewise.
9169         (init_pre): Do not allocate the maximal set.
9170         (execute_pre): Do not dump it.
9171
9172 2009-09-09  Martin Jambor  <mjambor@suse.cz>
9173
9174         * tree-cfg.c (verify_gimple_phi): Check that gimple_phi_result is
9175         an SSA_NAME rather than a is_gimple_variable.
9176
9177 2009-09-09  Richard Guenther  <rguenther@suse.de>
9178
9179         PR middle-end/41317
9180         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Remove
9181         code dealing with plain pointer bases.
9182         (maybe_fold_offset_to_reference): Likewise.
9183         (maybe_fold_stmt_addition): Adjust.
9184
9185 2009-09-09  Richard Guenther  <rguenther@suse.de>
9186
9187         * tree.c (free_lang_data_in_type): Do not free the type variant
9188         chains.
9189         (free_lang_data): Merge char_type_node with its properly signed
9190         variant.
9191         (pass_ipa_free): Collect after freeing language specific data.
9192
9193 2009-09-09  Michael Matz  <matz@suse.de>
9194
9195         PR middle-end/41268
9196         * cfgexpand.c (expand_gimple_stmt_1): Use an int for storing
9197         SUBREG_PROMOTED_UNSIGNED_P, instead of a bool.
9198         * rtl.h (struct rtx, SUBREG_PROMOTED_UNSIGNED_P): Update comments
9199         to reflect reality.
9200
9201 2009-09-08  DJ Delorie  <dj@redhat.com>
9202
9203         * config/mep/mep.c (conversions[]): Add "ml" pattern.
9204
9205 2009-09-04  Jason Merrill  <jason@redhat.com>
9206
9207         * tree.c (tree_find_value): Remove.
9208         * tree.h: Remove prototype.
9209         * varasm.c (assemble_external): Use value_member instead.
9210
9211 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9212
9213         * toplev.c (process_options): Choose default debugging type when
9214         gtoggle enables debug info and type is unset.
9215
9216 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9217
9218         PR debug/41276
9219         PR debug/41307
9220         * cselib.c (cselib_expand_value_rtx_1): Don't return copy of
9221         invalid subreg.
9222
9223 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9224
9225         * configure: Rebuilt with modified libtool.m4.
9226
9227 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9228
9229         PR debug/41229
9230         PR debug/41291
9231         PR debug/41300
9232         * tree-ssa.c (execute_update_addresses_taken): Update debug insns.
9233
9234 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9235
9236         * tree-ssa-loop-ivopts.c (get_phi_with_result): Remove.
9237         (remove_statement): Likewise.
9238         (rewrite_use_nonlinear_expr): Adjust.
9239         (remove_unused_ivs): Collect SSA NAMEs to remove and call...
9240         * tree-ssa.c (release_defs_bitset): ... this.  New.
9241         * tree-flow.h (release_defs_bitset): Declare.
9242
9243 2009-09-08  Alexandre Oliva  <aoliva@redhat.com>
9244
9245         PR debug/41232
9246         * tree-ssa-phiopt.c (minmax_replacement): Skip debug stmts
9247         in the middle block.
9248
9249 2009-09-08  Kai Tietz  <kai.tietz@onevision.com>
9250
9251         * tree-ssa-reassoc.c (find_operand_rank): Cast pointer
9252         via intptr_t to long type.
9253         (insert_operand_rank): Cast long type via intptr_t to
9254         pointer type.
9255         * genattrtab.c (RTL_HASH): Use intptr_t to cast from
9256         pointer to scalar.
9257         * c-pretty-print.c (pp_c_tree_decl_identifier): Cast
9258         from pointer to unsigned via uintptr_t.
9259
9260         * configure.ac (GCC_STDINT_TYPES): Initialize intptr_t,
9261         uintptr_t, HAVE_INTTYPES_H, HAVE_STDINT_H, HAVE_UINTPTR_T,
9262         and HAVE_INTPTR_T.
9263         * configure: Regenerated.
9264         * config.in: Regenerated
9265         * system.h (stdint.h): Add include.
9266         (inttypes.h): Likewise.
9267         * Makefile.in (aclocal): Add config/stdint.m4.
9268         * aclocal.m4: Regenerated.
9269
9270 2009-09-08  Bernd Schmidt  <bernd.schmidt@analog.com>
9271
9272         * config/bfin/bfin.c (np_check_regno, np_after_branch): New static
9273         variables.
9274         (note_np_check_stores): New function.
9275         (harmless_null_pointer_p): New function.
9276         (trapping_loads_p): New args NP_REG and AFTER_NP_BRANCH.  Callers
9277         changed.  Take into account whether we're in the shadow of a condjump
9278         that tested NP_REG for NULL.
9279         Lose all code that tested for SEQUENCEs.
9280         (workaround_speculation): Avoid inserting NOPs for loads that are
9281         either always executed or a NULL pointer.
9282
9283 2009-09-08  Jan Hubicka  <jh@suse.cz>
9284
9285         * doc/invoke.texi (early-inlining-insns): Reduce from 12 to 8.
9286         * params.def (early-inlining-insns): Likewise.
9287
9288 2009-09-08  Jakub Jelinek  <jakub@redhat.com>
9289
9290         PR rtl-optimization/41239
9291         * sched-int.h (struct deps): Add last_function_call_may_noreturn field.
9292         * sched-rgn.c (deps_join): Join also last_function_call_may_noreturn
9293         lists.
9294         * sched-deps.c (sched_analyze_insn): Prevent moving trapping insns
9295         across calls, as the calls might not always return normally.
9296         (call_may_noreturn_p): New function.
9297         (deps_analyze_insn): Update last_function_call_may_noreturn list.
9298         (init_deps): Initialize it.
9299         (remove_from_deps): Also remove calls from
9300         last_function_call_may_noreturn list.
9301
9302 2009-09-07  Richard Henderson  <rth@redhat.com>
9303
9304         * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't assume there are
9305         more VR->OPERANDS than LHS operands.  Free LHS before returning.
9306
9307 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9308
9309         * config/bfin/bfin.md (UNSPEC_VOLATILE_STALL): New constant.
9310         (attr "addrtype"): New member "spreg".
9311         Use it if mem_spfp_address_operand is true for the address.
9312         (attr "type"): New entry "stall".
9313         (cpu_unit "load"): New.
9314         (insn_reservations "load32", "loadp", "loadi"): Add reservation of
9315         "load".
9316         (insn_reservation "loadsp"): New.
9317         (insn_reservation "load_stall1"): New.
9318         (insn_reservation "load_stall3"): New.
9319         (stall): New insn.
9320         * config/bfin/predicates.md (const1_operand, const3_operand): New.
9321         (mem_p_address_operand): Exclude stack and frame pointer based
9322         addresses.
9323         (mem_spfp_address_operand): New; match them here.
9324         * config/bfin/bfin.c (add_sched_insns_for_speculation): New function.
9325         (bfin_reorg): Call it if scheduling insns.
9326         (bfin_gen_bundles): Remove dummy insns created by
9327         add_sched_insns_for_speculation.
9328
9329         From Jie Zhang <jie.zhang@analog.com>:
9330         * config/bfin/bfin-protos.h (enum bfin_cpu_type, bfin_cpu_type,
9331         bfin_si_revision, bfin_workarounds): Move these ...
9332         * config/bfin/bfin.h: ... here.
9333
9334         From Mike Frysinger  <michael.frysinger@analog.com>
9335         * config/bfin/bfin-protos.h (bfin_cpu_type): Add BFIN_CPU_BF542M,
9336         BFIN_CPU_BF544M, BFIN_CPU_BF547M, BFIN_CPU_BF548M, and BFIN_CPU_BF549M.
9337         * config/bfin/bfin.c (bfin_cpus[]): Add 0.3 for bf542m, bf544m,
9338         bf547m, bf548m, and bf549m.
9339         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF542M__
9340         for BFIN_CPU_BF542M, __ADSPBF544M__ for BFIN_CPU_BF544M,
9341         __ADSPBF547M__ for BFIN_CPU_BF547M, __ADSPBF548M__ for
9342         BFIN_CPU_BF548M, and __ADSPBF549M__ for BFIN_CPU_BF549M.
9343         * config/bfin/t-bfin-elf (MULTILIB_MATCHES): Select bf532-none for
9344         bf542m-none, bf544m-none, bf547m-none, bf548m-none, and bf549m-none.
9345         * config/bfin/t-bfin-linux (MULTILIB_MATCHES): Likewise.
9346         * config/bfin/t-bfin-uclinux (MULTILIB_MATCHES): Likewise.
9347         * doc/invoke.texi (Blackfin Options): Document that -mcpu now accepts
9348         bf542m, bf544m, bf547m, bf548m, and bf549m.
9349
9350         From Jie Zhang <jie.zhang@analog.com>:
9351         * config/bfin/predicates.md (p_register_operand): New predicate.
9352         (dp_register_operand): New predicate.
9353         * config/bfin/bfin-protos.h (WA_05000074): Define.
9354         (ENABLE_WA_05000074): Define.
9355         * config/bfin/bfin.c (bfin_cpus[]): Add WA_05000074 for all cpus.
9356         (bfin_gen_bundles): Put dsp32shiftimm instruction in slot[0].
9357         * config/bfin/bfin.md (define_attr type): Add dsp32shiftimm.
9358         (define_attr addrtype): Allow load/store register to be P register.
9359         (define_attr storereg): New.
9360         (define_cpu_unit anomaly_05000074): New.
9361         (define_insn_reservation dsp32shiftimm): New.
9362         (define_insn_reservation dsp32shiftimm_anomaly_05000074): New.
9363         (define_insn_reservation loadp): Cannot use slot2.
9364         (define_insn_reservation loadsp): Cannot use slot2.
9365         (define_insn_reservation storep): Cannot use slot2. Does not
9366         apply when working around 05000074.
9367         (define_insn_reservation storep_anomaly_05000074): New.
9368         (define_insn_reservation storei): Does not apply when working
9369         around 05000074.
9370         (define_insn_reservation storei_anomaly_05000074): New.
9371         (define_attr length): Add dsp32shiftimm case.
9372         (define_insn movsi_insn32, movsi_insv, ashlsi3_insn, ashrsi3,
9373         ror_one, rol_one, lshrsi3, lshrpdi3, ashrpdi3, movhiv2hi_low,
9374         movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
9375         ssashiftv2hi3, ssashifthi3, ssashiftsi3, lshiftv2hi3, lshifthi3):
9376         Set type as dsp32shiftimm for dsp32shiftimm alternatives.
9377
9378 2009-09-07  Martin Jambor  <mjambor@suse.cz>
9379
9380         PR middle-end/41282
9381         * tree-sra.c (create_artificial_child_access): Return NULL if
9382         build_ref_for_offset fails.
9383         (propagate_subacesses_accross_link): Allow build_ref_for_offset
9384         and create_artificial_child_access to fail.
9385
9386 2009-09-06  Dmitry Gorbachev  <d.g.gorbachev@gmail.com>
9387
9388         PR c++/41214
9389         * unwind-dw2.c (uw_init_context_1): Mark noinline.
9390         * config/ia64/unwind-ia64.c (uw_init_context_1): Likewise.
9391         * config/xtensa/unwind-dw2-xtensa.c (uw_init_context_1): Likewise.
9392
9393 2009-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
9394
9395         * config/bfin/bfin.c (bfin_optimize_loop): When creating a new basic
9396         block, ensure it has an exit edge.  Emit a barrier after a jump.
9397
9398 2009-09-07  Nick Clifton  <nickc@redhat.com>
9399
9400         * gcc.c (this_is_linker_script): New variable.  Like
9401         this_is_library_file but for the %T constructor.
9402         (end_going_arg): If this_is_linker_script is set then locate the
9403         script and insert a --script switch before it
9404         (do_spec_2): Initialise this_is_linker_script.
9405         (do_spec_1): Likewise.  Handle %T construct.
9406         (eval_spec_function): Preserve this_is_linker_script.
9407         * doc/invoke.texi: Document %T construct in spec files.
9408         * config/m32c/m32c.h (LIB_SPEC): Use it.
9409
9410 2009-09-07  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
9411
9412         * rtl.h (PREFETCH_SCHEDULE_BARRIER_P): New macro.
9413         * sched-deps.c (sched_analyze_2): Make prefetches a hard barrier
9414         when volatile flag is set.
9415         * doc/rtl.texi (PREFETCH_SCHEDULE_BARRIER_P): Add documentation pieces.
9416
9417 2009-09-06  Eric Botcazou  <ebotcazou@adacore.com>
9418
9419         PR bootstrap/41241
9420         * combine-stack-adj.c (try_apply_stack_adjustment): Handle stores.
9421         (combine_stack_adjustments_for_block): Allow insns between stack
9422         adjustments and stores with corresponding pre-(dec|inc)rement or
9423         pre-modify operation.
9424
9425 2009-09-06  Jakub Jelinek  <jakub@redhat.com>
9426
9427         PR bootstrap/41241
9428         * combine-stack-adj.c (struct csa_memlist): Rename to...
9429         (struct csa_reflist): ... this.  Rename mem field to ref.
9430         (free_csa_memlist): Rename to...
9431         (free_csa_reflist): ... this.
9432         (record_one_stack_memref): Rename to...
9433         (record_one_stack_ref): ... this.  Handle also REG_P.
9434         (try_apply_stack_adjustment): Handle also REG_P.
9435         (struct record_stack_memrefs_data): Rename to...
9436         (struct record_stack_refs_data): ... this.  Rename memlist field to
9437         reflist.
9438         (record_stack_memrefs): Rename to...
9439         (record_stack_refs): ... this.  For DEBUG_INSNs keep traversing
9440         subexpressions instead of failing when a MEM contains SP references.
9441         For SP itself in DEBUG_INSNs queue it also onto reflist chain.
9442         (combine_stack_adjustments_for_block): Adjust for mem to ref renaming.
9443
9444 2009-09-06  Richard Guenther  <rguenther@suse.de>
9445
9446         PR middle-end/41144
9447         * tree.c (build_array_type): Do not record types marked
9448         with structural equality in the canonical type hashtable.
9449
9450 2009-09-06  Richard Guenther  <rguenther@suse.de>
9451
9452         PR middle-end/41261
9453         * tree-ssa-alias.c (refs_may_alias_p_1): Bail out for function decls.
9454
9455 2009-09-05  Richard Guenther  <rguenther@suse.de>
9456
9457         PR middle-end/41181
9458         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Use the correct type.
9459
9460 2009-09-05  Richard Guenther  <rguenther@suse.de>
9461
9462         PR debug/41273
9463         * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops.
9464
9465 2009-09-05  Richard Guenther  <rguenther@suse.de>
9466
9467         PR middle-end/41271
9468         * tree-ssa.c (useless_type_conversion_p): Drop qualifiers
9469         before comparing function argument types.
9470
9471 2009-09-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
9472
9473         PR target/41024
9474         * config/i386/mingw-w64.h (ASM_SPEC): Pass -v instead of -V to
9475         the assembler.
9476
9477 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9478
9479         Revert:
9480         2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
9481
9482         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
9483         locators before emit_insn is called.
9484
9485 2009-09-04  Vladimir Makarov  <vmakarov@redhat.com>
9486
9487         PR bootstrap/41241
9488         * ira.c (update_equiv_reg): Revert my previous patch for the PR.
9489         * reginfo.c (resize_reg_info): Call allocate_reg_info if necessary.
9490         (reginfo_init): Don't call allocate_reg_info.
9491
9492 2009-09-04  Uros Bizjak  <ubizjak@gmail.com>
9493
9494         PR target/41262
9495         * config/alpha/alpha.c (alpha_does_function_need_gp): Use
9496         NONDEBUG_INSN_P instead of INSN_P.
9497
9498 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9499
9500         PR debug/41225
9501         * tree-vect-stmts.c (vect_stmt_relevant_p): Skip debug uses.
9502
9503 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9504
9505         PR target/41252
9506         * config/arm/vfp.md (*cmpdf_split_vfp): Fix src mode in the second
9507         pattern of the split.
9508
9509 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9510
9511         * toplev.c (process_options): Move setter of flag_var_tracking
9512         before other tests that depend on it.  Move down setter of
9513         flag_rename_registers.  Don't enable var-tracking-assignments
9514         by default if selective scheduling is enabled.  Warn if both
9515         are enabled.
9516
9517 2009-09-04  Alexandre Oliva  <aoliva@redhat.com>
9518
9519         * var-tracking.c (dv_is_decl_p): Adjust NULL behavior to match
9520         comment.  Use switch statement to catch overlaps between rtx
9521         and tree codes.  Accept FUNCTION_DECLs in addition to those in...
9522         (IS_DECL_CODE): ... here. Remove.
9523         (check_value_is_not_decl): Remove.
9524         (dv_from_decl, dv_from_value): Check after conversion.
9525
9526 2009-09-04  Richard Guenther  <rguenther@suse.de>
9527
9528         PR middle-end/41257
9529         * (cgraph_finalize_compilation_unit): Move finalizing aliases
9530         after emitting tunks.  Move emitting thunks and ctors from ...
9531         (cgraph_optimize): ... here.  Remove redundant
9532         cgraph_analyze_functions.
9533         * varasm.c (find_decl_and_mark_needed): Remove no longer
9534         necessary check.
9535         (finish_aliases_1): Adjust check for thunk aliases.
9536
9537 2009-09-04  Daniel Gutson  <dgutson@codesourcery.com>
9538
9539         * config/arm/arm.md (ctzsi2): Added braces
9540         to avoid warning that broke booststrap.
9541
9542 2009-09-04  Martin Jambor  <mjambor@suse.cz>
9543
9544         PR tree-optimization/41112
9545         * tree-sra.c (build_ref_for_offset_1): Signal that we cannot
9546         handle variable-bounded arrays.
9547         (expr_with_var_bounded_array_refs_p): New function.
9548         (analyze_access_subtree): Call expr_with_var_bounded_array_refs_p.
9549
9550 2009-09-04  Wolfgang Gellerich  <gellerich@de.ibm.com>
9551
9552         * config/s390/2097.md: Removed two incorrect bypasses.
9553         (z10_fsimpdf): Fixed latency.
9554         (z10_fhex): New insn_reservation.
9555         (z10_floaddf): Fixed latency.
9556         (z10_floadsf): Fixed latency.
9557         (z10_ftrunctf): Fixed latency.
9558         (z10_ftruncdf): Fixed latency.
9559         * config/s390/s390.c (z10_cost): Fixed values.
9560         (s390_adjust_priority): Added z10 path.
9561         * config/s390/s390.md (type): Added fhex.
9562         (*mov<mode>_64dfp): Updated type attribute.
9563         (*mov<mode>_64): Updated type attribute.
9564         (*mov<mode>_31): Updated type attribute.
9565         (*mov<mode>"): Likewise.
9566         * config/s390/2084.md (x_fsimpdf): Updated condition.
9567
9568 2009-09-04  Andreas Krebbel  <krebbel1@de.ibm.com>
9569
9570         * config/s390/s390.md ("*fmadd<mode>", "*fmsub<mode>"): Enable mem
9571         RTXs in the predicate for operand 1.
9572
9573 2009-09-03  Daniel Gutson  <dgutson@codesourcery.com>
9574
9575         * config/arm/arm.md (UNSPEC_RBIT): New constant.
9576         (rbitsi2): New insn.
9577         (ctzsi2): New expand.
9578         * config/arm/arm.h (CTZ_DEFINED_VALUE_AT_ZERO): New macro.
9579
9580 2009-09-03  Martin Jambor  <mjambor@suse.cz>
9581
9582         * tree-sra.c (duplicate_expr_for_different_base): Removed.
9583         (create_artificial_child_access): Use build_ref_for_offset instead
9584         of duplicate_expr_for_different_base.
9585         (propagate_subacesses_accross_link): Likewise.
9586
9587 2009-09-03  Richard Sandiford  <rdsandiford@googlemail.com>
9588
9589         * config/mips/mips.c (USEFUL_INSN_P): Use NONDEBUG_INSN_P instead
9590         of INSN_P.
9591         (mips16e_collect_argument_saves): Skip debug instructions.
9592         (mips_74k_agen_init): Use CALL_P || JUMP_P instead of !NONJUMP_INSN_P.
9593         (mips16_lay_out_constants): Use USEFUL_INSN_P instead of INSN_P.
9594         (r10k_insert_cache_barriers): Likewise.
9595         (mips_reorg_process_insns): Likewise.
9596
9597 2009-09-03  Vladimir Makarov  <vmakarov@redhat.com>
9598
9599         PR bootstrap/41241
9600         * ira.c (update_equiv_reg): Remove check on class likely spill.
9601
9602 2009-09-03  Jakub Jelinek  <jakub@redhat.com>
9603
9604         PR debug/41236
9605         * dwarf2out.c (loc_descriptor): Don't use SUBREG_REG macro on
9606         SIGN_EXTEND or ZERO_EXTEND.  Don't assume there is a REG inside of
9607         it or SUBREG.
9608
9609         PR debug/41238
9610         * function.c (assign_parm_find_stack_rtl): Don't set mem attributes on
9611         the stack slot if it is passed by invisible reference.
9612         * var-tracking.c (vt_add_function_parameters): Handle arguments passed
9613         by invisible reference.
9614
9615 2009-09-03  Bernd Schmidt  <bernd.schmidt@analog.com>
9616
9617         * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9618         * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
9619         * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of
9620         0.
9621         * config/bfin/sync.md: New file.
9622         * config/bfin/bfin.md: Include it.
9623         (UNSPEC_ATOMIC): New.
9624         (UNSPEC_ONES): Provide a unique number.
9625
9626         From Jie Zhang <jie.zhang@analog.com>:
9627         * config/bfin/bfin.c (ret_regs): New.
9628         (must_save_fp_p): Don't return true because of frame_pointer_needed.
9629         (must_save_rets_p): New.
9630         (n_regs_saved_by_prologue): Use must_save_rets_p instead of
9631         current_function_is_leaf.
9632         (do_link): Likewise.
9633         (do_unlink): Likewise.
9634         (expand_interrupt_handler_prologue): Use ret_regs array.
9635         (expand_interrupt_handler_epilogue): Use ret_regs array and
9636         pass return register to gen_return_internal.
9637         (bfin_expand_epilogue): Pass return register to
9638         gen_return_internal.
9639         (bfin_expand_call): Explicitly clobber RETS.
9640         * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define.
9641         * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic,
9642         call_insn_fdpic, call_value_insn_fdpic, call_symbol,
9643         call_value_symbol, call_insn, call_value_insn): Explicitly clobber
9644         RETS.
9645         (return_internal): Take a reg rtx rather than the register number.
9646
9647 2009-09-03  H.J. Lu  <hongjiu.lu@intel.com>
9648
9649         * tree-parloops.c (parallelize_loops): Cast to HOST_WIDE_INT
9650         when comparing against estimated_loop_iterations_int return.
9651
9652 2009-09-03  Richard Guenther  <rguenther@suse.de>
9653
9654         * dwarf2out.c (dwarf2out_do_cfi_asm): Remove check of
9655         eh_personality_libfunc.
9656
9657 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9658
9659         * tree-parloops.c (separate_decls_in_region): Add space.
9660
9661 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9662
9663         * tree-parloops.c (separate_decls_in_region): Change the condition
9664         checking if there are reductions in the loop.
9665
9666 2009-09-03  Razya Ladelsky  <razya@il.ibm.com>
9667
9668         PR tree-optimization/38275
9669         * tree-parloops.c (parallelize_loops): Replace profitability condition
9670         for expected number of iterations.
9671
9672 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9673
9674         * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config.
9675         (bootstrap-debug): Explain conditions in which it becomes default.
9676         (bootstrap-debug-big): Rather than duplicate bootstrap-debug,
9677         make it add to it.
9678
9679 2009-09-03  Namhyung Kim  <namhyung@gmail.com>
9680
9681         * doc/invoke.texi (Optimize Options): Move
9682         -finline-small-functions to the -O2 list.
9683
9684 2009-09-03  Alexandre Oliva  <aoliva@redhat.com>
9685
9686         * toplev.c (process_options): Enable var-tracking-assignments
9687         by default if var-tracking is enabled.
9688
9689 2009-09-02  David Daney  <ddaney@caviumnetworks.com>
9690
9691         * cfgbuild.c (find_bb_boundaries): Split blocks containing a
9692         barrier.
9693         * emit-rtl.c (prev_nonnote_insn_bb): New function.
9694         * rtl.h (prev_nonnote_insn_bb): Declare it.
9695
9696 2009-09-03  Diego Novillo  <dnovillo@google.com>
9697
9698         * cgraph.c (cgraph_node_for_decl): New.
9699         * cgraph.h (cgraph_node_for_decl): Declare.
9700         * tree.c (host_integerp): Return 0 if T is NULL.
9701
9702 2009-09-03  Diego Novillo  <dnovillo@google.com>
9703
9704         * tree.h (struct alias_pair): Move from varasm.c.
9705         (alias_pairs): Likewise.
9706         (TYPE_MAXVAL): Define.
9707         (TYPE_MINVAL): Define.
9708         (iterative_hash_host_wide_int): Declare.
9709         (remove_unreachable_alias_pairs): Declare.
9710         * tree-pass.h (pass_ipa_free_lang_data): Declare.
9711         * diagnostic.c (default_diagnostic_starter): Make extern.
9712         (default_diagnostic_finalizer): Make extern.
9713         * diagnostic.h (default_diagnostic_starter): Declare.
9714         (default_diagnostic_finalizer): Declare.
9715         (default_tree_printer): Declare.
9716         * toplev.c (default_tree_printer): Make extern.
9717
9718 2009-09-03  Richard Guenther  <rguenther@suse.de>
9719             Diego Novillo  <dnovillo@google.com>
9720
9721         * cgraph.c (cgraph_add_new_function): Remove gimplification.
9722         * cgraphunit.c (cgraph_expand_function): Do not emit
9723         associated thunks from here.
9724         (cgraph_emit_thunks): New.
9725         (cgraph_optimize): Call it.
9726         Return if any IPA pass finds an error.
9727         * varasm.c (finish_aliases_1): Ignore errorneous aliases used
9728         by thunks.
9729
9730 2009-09-03  Simon Baldwin  <simonb@google.com>
9731             Rafael Espindola  <espindola@google.com>
9732             Richard Guenther  <rguenther@suse.de>
9733             Doug Kwan  <dougkwan@google.com>
9734             Diego Novillo  <dnovillo@google.com>
9735
9736         * tree.c: Include tree-pass.h, langhooks-def.h,
9737         diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
9738         (free_lang_data_in_type): New.
9739         (need_assembler_name_p): New.
9740         (free_lang_data_in_block): New.
9741         (free_lang_data_in_decl): New.
9742         (struct free_lang_data_d): New.
9743         (add_tree_to_fld_list): New.
9744         (find_decls_types_r): New.
9745         (get_eh_types_for_runtime): New.
9746         (find_decls_types_in_eh_region): New.
9747         (find_decls_types_in_node): New.
9748         (find_decls_types_in_var): New.
9749         (free_lang_data_in_cgraph): New.
9750         (free_lang_data): New.
9751         (gate_free_lang_data): New.
9752         (pass_ipa_free_lang_data): New.
9753
9754 2009-09-03  Diego Novillo  <dnovillo@google.com>
9755
9756         * timevar.def (TV_IPA_FREE_LANG_DATA): Define.
9757         * langhooks.h (struct lang_hooks): Add field free_lang_data.
9758         (lang_hooks): Remove const qualifier.
9759         * ipa.c (cgraph_remove_unreachable_nodes): Call
9760         remove_unreachable_alias_pairs.
9761         * except.c (add_type_for_runtime): Check if TYPE has
9762         already been converted.
9763         (lookup_type_for_runtime): Likewise.
9764         (check_handled): Handle converted types.
9765         * varasm.c (remove_unreachable_alias_pairs): New.
9766         * gimple.c: Include demangle.h.
9767         (gimple_decl_printable_name): New.
9768         (gimple_fold_obj_type_ref): New.
9769         * gimple.h (gimple_decl_printable_name): Declare.
9770         (gimple_fold_obj_type_ref): Declare.
9771         * passes.c (init_optimization_passes): Add pass
9772         pass_ipa_free_lang_data.
9773         * langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
9774         (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
9775
9776 2009-09-03  Diego Novillo  <dnovillo@google.com>
9777
9778         * c-lang.c (lang_hooks): Remove const qualifier.
9779
9780 2009-09-02  Loren James Rittle  <ljrittle@acm.org>
9781
9782         * doc/install.texi (*-*-freebsd*): Update target information.
9783
9784 2009-09-02  Anatoly Sokolov  <aesok@post.ru>
9785
9786         * hard-reg-set.h (call_fixed_regs): Remove.
9787         * reginfo.c (call_fixed_regs): Remove.
9788         (init_reg_sets_1): Remove initialization of call_fixed_regs.
9789         (globalize_reg): Don't use call_fixed_regs.
9790         * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
9791         call_fixed_regs.
9792
9793 2009-09-01  Michael Matz  <matz@suse.de>
9794
9795         * expr.h (emit_storent_insn, expand_expr_real_1,
9796         expand_expr_real_2): Declare.
9797         * expr.c (emit_storent_insn, expand_expr_real_1,
9798         expand_expr_real_2): Export.
9799         (store_expr): Setting and evaluating dont_return_target is useless.
9800         (expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
9801         LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
9802         * except.c (expand_resx_expr): Rename to ...
9803         (expand_resx_stmt): ... this.  Rewrite to take gimple statement.
9804         * except.h (expand_resx_stmt): Declare.
9805         * stmt.c: Add include gimple.h
9806         (expand_asm_expr): Rename to ...
9807         (expand_asm_stmt): ... this. Rewrite to take gimple statement.
9808         (expand_case): Rewrite to take gimple statement.
9809         * tree.h (expand_asm_stmt): Declare.
9810         (expand_case): Change prototype.
9811         * Makefile.in (stmt.o): Depend on gimple.h.
9812         * builtins.c (expand_builtin_synchronize): Build gimple asm
9813         statement, not an ASM_EXPR.
9814         * cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
9815         gimple_to_tree, release_stmt_tree): Remove.
9816         (expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
9817         ggc_free, but hold comparison code and operands separately.
9818         Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
9819         (expand_call_stmt, expand_gimple_stmt_1,
9820         expand_gimple_stmt): New helpers.
9821         (expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
9822         release_stmt_tree.  Call expand_gimple_stmt instead.
9823         (expand_gimple_basic_block): Ditto.
9824
9825         * calls.c (emit_call_1): Don't look at EH regions here, make
9826         fntree parameter useless.
9827         (expand_call): New local rettype for TREE_TYPE(exp), use it
9828         throughout.  Remove local p, use addr instead.
9829         Don't look at EH regions here.
9830
9831 2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
9832
9833         * doc/invoke.texi (-fsched-pressure): Document it.
9834         (-fsched-reg-pressure-heuristic): Remove it.
9835
9836         * reload.c (ira.h): Include.
9837         (find_reloads): Add choosing reload on number of small spilled
9838         classes.
9839
9840         * haifa-sched.c (ira.h): Include.
9841         (sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
9842         saved_reg_pressure, curr_reg_live, saved_reg_live,
9843         region_ref_regs): New variables.
9844         (sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
9845         initiate_reg_pressure_info, setup_ref_regs,
9846         initiate_bb_reg_pressure_info, save_reg_pressure,
9847         restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
9848         functions.
9849         (setup_insn_reg_pressure_info): New function.
9850         (rank_for_schedule): Add pressure checking and insn issue time.
9851         Remove comparison of insn reg weights.
9852         (ready_sort): Set insn reg pressure info.
9853         (update_register_pressure, setup_insn_max_reg_pressure,
9854         update_reg_and_insn_max_reg_pressure,
9855         sched_setup_bb_reg_pressure_info): New functions.
9856         (schedule_insn): Add code for printing and updating reg pressure info.
9857         (find_set_reg_weight, find_insn_reg_weight): Remove.
9858         (ok_for_early_queue_removal): Do nothing if pressure_only_p.
9859         (debug_ready_list): Print reg pressure info.
9860         (schedule_block): Ditto.  Check insn issue time.
9861         (sched_init): Set up sched_pressure_p.  Allocate and set up some
9862         reg pressure related info.
9863         (sched_finish): Free some reg pressure related info.
9864         (fix_tick_ready): Make insn always ready if pressure_p.
9865         (init_h_i_d): Don't call find_insn_reg_weight.
9866         (haifa_finish_h_i_d): Free insn reg pressure info.
9867
9868         * ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9869         ira_memory_move_cost, ira_class_hard_regs,
9870         ira_class_hard_regs_num, ira_no_alloc_regs,
9871         ira_available_class_regs, ira_reg_class_cover_size,
9872         ira_reg_class_cover, ira_class_translate): Move to ira.h.
9873
9874         * ira-lives.c (single_reg_class): Check mode to find how many
9875         registers are necessary for operand.
9876         (ira_implicitly_set_insn_hard_regs): New.
9877
9878         * common.opt (fsched-pressure): New options.
9879         (fsched-reg-pressure-heuristic): Remove.
9880
9881         * ira.c (setup_eliminable_regset): Rename to
9882         ira_setup_eliminable_regset.  Make it external.
9883         (expand_reg_info): Pass cover class to setup_reg_classes.
9884         (ira): Call resize_reg_info instead of allocate_reg_info.
9885
9886         * sched-deps.c: Include ira.h.
9887         (implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
9888         (create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
9889         reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
9890         mark_insn_hard_regno_birth, mark_insn_reg_birth,
9891         mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
9892         mark_insn_reg_store, mark_insn_reg_clobber,
9893         setup_insn_reg_pressure_info): New.
9894         (sched_analyze_1): Update implicit_reg_pending_uses.
9895         (sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
9896         Use them to create dependencies.  Set insn reg uses and pressure
9897         info.  Process reg_pending_uses in one place.
9898         (free_deps): Free implicit sets.
9899         (remove_from_deps): Remove implicit sets if necessary.  Check
9900         implicit sets when clearing reg_last_in_use.
9901         (init_deps_global): Clear implicit_reg_pending_clobbers and
9902         implicit_reg_pending_uses.
9903
9904         * ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
9905         ira_memory_move_cost, ira_class_hard_regs,
9906         ira_class_hard_regs_num, ira_no_alloc_regs,
9907         ira_available_class_regs, ira_reg_class_cover_size,
9908         ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
9909         (ira_setup_eliminable_regset, ira_set_pseudo_classes,
9910         ira_implicitly_set_insn_hard_regs): New prototypes.
9911
9912         * ira-costs.c (pseudo_classes_defined_p, allocno_p,
9913         cost_elements_num): New variables.
9914         (allocno_costs, total_costs): Rename to costs and
9915         total_allocno_costs.
9916         (COSTS_OF_ALLOCNO): Rename to COSTS.
9917         (allocno_pref): Rename to pref.
9918         (allocno_pref_buffer): Rename to pref_buffer.
9919         (common_classes): Rename to regno_cover_class.
9920         (COST_INDEX): New.
9921         (record_reg_classes): Set allocno attributes only if allocno_p.
9922         (record_address_regs): Ditto.  Use COST_INDEX instead of ALLOCNO_NUM.
9923         (scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
9924         and COSTS_OF_ALLOCNO.
9925         (print_costs): Rename to print_allocno_costs.
9926         (print_pseudo_costs): New.
9927         (process_bb_node_for_costs): Split into 2 functions with new
9928         function process_bb_for_costs.  Pass BB to process_bb_for_costs.
9929         (find_allocno_class_costs): Rename to find_costs_and_classes.  Add
9930         new parameter dump_file.  Use cost_elements_num instead of
9931         ira_allocnos_num.  Make one iteration if preferred classes were
9932         already calculated for scheduler.  Make 2 versions of code
9933         depending on allocno_p.
9934         (setup_allocno_cover_class_and_costs): Check allocno_p.  Use
9935         regno_cover_class and COSTS instead of common_classes and
9936         COSTS_OF_ALLOCNO.
9937         (init_costs, finish_costs): New.
9938         (ira_costs): Set up allocno_p and cost_elements_num.  Call
9939         init_costs and finish_costs.
9940         (ira_set_pseudo_classes): New.
9941
9942         * rtl.h (allocate_reg_info): Remove.
9943         (resize_reg_info): Change return type.
9944         (reg_cover_class): New.
9945         (setup_reg_classes): Add new parameter.
9946
9947         * sched-int.h (struct deps_reg): New member implicit_sets.
9948         (sched_pressure_p, sched_regno_cover_class): New external definitions.
9949         (INCREASE_BITS): New macro.
9950         (struct reg_pressure_data, struct reg_use_data): New.
9951         (struct _haifa_insn_data): Remove reg_weight.  Add members
9952         reg_pressure, reg_use_list, reg_set_list, and
9953         reg_pressure_excess_cost_change.
9954         (struct deps): New member implicit_sets.
9955         (pressure_p): New variable.
9956         (COVER_CLASS_BITS, INCREASE_BITS): New macros.
9957         (struct reg_pressure_data, struct reg_use_data): New.
9958         (INSN_REG_WEIGHT): Remove.
9959         (INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
9960         INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New macros.
9961         (sched_init_region_reg_pressure_info,
9962         sched_setup_bb_reg_pressure_info): New prototypes.
9963
9964         * reginfo.c (struct reg_pref): New member coverclass.
9965         (reg_cover_class): New function.
9966         (reginfo_init, pass_reginfo_init): Move after free_reg_info.
9967         (reg_info_size): New variable.
9968         (allocate_reg_info): Make static.  Setup reg_info_size.
9969         (resize_reg_info): Use reg_info_size.  Return flag of resizing.
9970         (setup_reg_classes): Add a new parameter.  Setup cover class too.
9971
9972         * Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to
9973         the dependencies.
9974
9975         * sched-rgn.c (deps_join): Set up implicit_sets.
9976         (schedule_region): Set up region and basic blocks pressure
9977         relative info.
9978
9979         * passes.c (init_optimization_passes): Move
9980         pass_subregs_of_mode_init before pass_sched.
9981
9982 2009-09-02  Martin Jambor  <mjambor@suse.cz>
9983
9984         * tree-sra.c (struct access): New field grp_hint.
9985         (dump_access): Dump grp_hint.
9986         (sort_and_splice_var_accesses): Set grp_hint if a group is read
9987         multiple times.
9988         (analyze_access_subtree): Only scalarize accesses with grp_hint set or
9989         those which have been specifically read and somehow written to.
9990         (propagate_subacesses_accross_link): Set grp_hint of right child and
9991         also possibly of the left child.
9992
9993 2009-09-02  Jakub Jelinek  <jakub@redhat.com>
9994
9995         * tree-object-size.c (addr_object_size): Always use object_size_type
9996         0 or 2 when determining the pointer pointed object size.
9997
9998 2009-09-02  Richard Guenther  <rguenther@suse.de>
9999
10000         Revert
10001         2009-08-31  Richard Guenther  <rguenther@suse.de>
10002
10003         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10004         to query if the memory regions for memmove overlap.
10005         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10006         asserts on pointers, instead deal with odd trees.
10007         (ptr_derefs_may_alias_p): Likewise.
10008         (refs_may_alias_p_1): Constructor bases also never alias.
10009
10010 2009-08-01  Christian Bruel  <christian.bruel@st.com>
10011
10012         Revert:
10013         2009-07-31  Christian Bruel  <christian.bruel@st.com>
10014         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
10015
10016 2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
10017
10018         * doc/invoke.texi (-fvar-tracking-assignments): New.
10019         (-fvar-tracking-assignments-toggle): New.
10020         (-fdump-final-insns=file): Mark filename as optional.
10021         (--param min-nondebug-insn-uid): New.
10022         (-gdwarf-@{version}): Mention version 4.
10023         * opts.c (common_handle_option): Accept it.
10024         * tree-vrp.c (find_assert_locations_1): Skip debug stmts.
10025         * regrename.c (regrename_optimize): Drop last.  Don't count debug
10026         insns as uses.  Don't reject change because of debug insn.
10027         (do_replace): Reject DEBUG_INSN as chain starter.  Take base_regno
10028         from the chain starter, and check for inexact matches in DEBUG_INSNS.
10029         (scan_rtx_reg): Accept inexact matches in DEBUG_INSNs.
10030         (build_def_use): Simplify and fix the marking of DEBUG_INSNs.
10031         * sched-ebb.c (schedule_ebbs): Skip boundary debug insns.
10032         * fwprop.c (forward_propagate_and_simplify): ...into debug insns.
10033         * doc/gimple.texi (is_gimple_debug): New.
10034         (gimple_debug_bind_p): New.
10035         (is_gimple_call, gimple_assign_cast_p): End sentence with period.
10036         * doc/install.texi (bootstrap-debug): More details.
10037         (bootstrap-debug-big, bootstrap-debug-lean): Document.
10038         (bootstrap-debug-lib): More details.
10039         (bootstrap-debug-ckovw): Update.
10040         (bootstrap-time): New.
10041         * tree-into-ssa.c (mark_def_sites): Skip debug stmts.
10042         (insert_phi_nodes_for): Insert debug stmts.
10043         (rewrite_stmt): Take iterator.  Insert debug stmts.
10044         (rewrite_enter_block): Adjust.
10045         (maybe_replace_use_in_debug_stmt): New.
10046         (rewrite_update_stmt): Use it.
10047         (mark_use_interesting): Return early for debug stmts.
10048         * tree-ssa-loop-im.c (rewrite_bittest): Propagate DEFs into debug
10049         stmts before replacing stmt.
10050         (move_computations_stmt): Likewise.
10051         * ira-conflicts.c (add_copies): Skip debug insns.
10052         * regstat.c (regstat_init_n_sets_and_refs): Discount debug insns.
10053         (regstat_bb_compute_ri): Skip debug insns.
10054         * tree-ssa-threadupdate.c (redirection_block_p): Skip debug stmts.
10055         * tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
10056         check_loop_closed_ssa_stmt): Skip debug stmts.
10057         * tree-tailcall.c (find_tail_calls): Likewise.
10058         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
10059         * tree.h (MAY_HAVE_DEBUG_STMTS): New.
10060         (build_var_debug_value_stat): Declare.
10061         (build_var_debug_value): Define.
10062         (target_for_debug_bind): Declare.
10063         * reload.c (find_equiv_reg): Skip debug insns.
10064         * rtlanal.c (reg_used_between_p): Skip debug insns.
10065         (side_effects_p): Likewise.
10066         (canonicalize_condition): Likewise.
10067         * ddg.c (create_ddg_dep_from_intra_loop_link): Check that non-debug
10068         insns never depend on debug insns.
10069         (create_ddg_dep_no_link): Likewise.
10070         (add_cross_iteration_register_deps): Use ANTI_DEP for debug insns.
10071         Don't add inter-loop dependencies for debug insns.
10072         (build_intra_loop_deps): Likewise.
10073         (create_ddg): Count debug insns.
10074         * ddg.h (struct ddg::num_debug): New.
10075         (num_backargs): Pair up with previous int field.
10076         * diagnostic.c (diagnostic_report_diagnostic): Skip notes on
10077         -fcompare-debug-second.
10078         * final.c (get_attr_length_1): Skip debug insns.
10079         (rest_of_clean-state): Don't dump CFA_RESTORE_STATE.
10080         * gcc.c (invoke_as): Call compare-debug-dump-opt.
10081         (driver_self_specs): Map -fdump-final-insns to
10082         -fdump-final-insns=..
10083         (get_local_tick): New.
10084         (compare_debug_dump_opt_spec_function): Test for . argument and
10085         compute output name.  Compute temp output spec without flag name.
10086         Compute -frandom-seed.
10087         (OPT): Undef after use.
10088         * cfgloopanal.c (num_loop_insns): Skip debug insns.
10089         (average_num_loop_insns): Likewise.
10090         * params.h (MIN_NONDEBUG_INSN_UID): New.
10091         * gimple.def (GIMPLE_DEBUG): New.
10092         * ipa-reference.c (scan_stmt_for_static_refs): Skip debug stmts.
10093         * auto-inc-dec.c (merge_in_block): Skip debug insns.
10094         (merge_in_block): Fix whitespace.
10095         * toplev.c (flag_var_tracking): Update comment.
10096         (flag_var_tracking_assignments): New.
10097         (flag_var_tracking_assignments_toggle): New.
10098         (process_options): Don't open final insns dump file if we're not
10099         going to write to it.  Compute defaults for var_tracking.
10100         * df-scan.c (df_insn_rescan_debug_internal): New.
10101         (df_uses_record): Handle debug insns.
10102         * haifa-sched.c (ready): Initialize n_debug.
10103         (contributes_to_priority): Skip debug insns.
10104         (dep_list_size): New.
10105         (priority): Use it.
10106         (rank_for_schedule): Likewise.  Schedule debug insns as soon as
10107         they're ready.  Disregard previous debug insns to make decisions.
10108         (queue_insn): Never queue debug insns.
10109         (ready_add, ready_remove_first, ready_remove): Count debug insns.
10110         (schedule_insn): Don't reject debug insns because of issue rate.
10111         (get_ebb_head_tail, no_real_insns_p): Skip boundary debug insns.
10112         (queue_to_ready): Skip and discount debug insns.
10113         (choose_ready): Let debug insns through.
10114         (schedule_block): Check boundary debug insns.  Discount debug
10115         insns, schedule them early.  Adjust whitespace.
10116         (set_priorities): Check for boundary debug insns.
10117         (add_jump_dependencies): Use dep_list_size.
10118         (prev_non_location_insn): New.
10119         (check_cfg): Use it.
10120         * tree-ssa-loop-ivopts.c (find-interesting_users): Skip debug
10121         stmts.
10122         (remove_unused_ivs): Reset debug stmts.
10123         * modulo-sched.c (const_iteration_count): Skip debug insns.
10124         (res_MII): Discount debug insns.
10125         (loop_single_full_bb_p): Skip debug insns.
10126         (sms_schedule): Likewise.
10127         (sms_schedule_by_order): Likewise.
10128         (ps_has_conflicts): Likewise.
10129         * caller-save.c (refmarker_fn): New.
10130         (save_call_clobbered_regs): Replace regs with saved mem in
10131         debug insns.
10132         (mark_referenced_regs): Take pointer, mark and arg.  Adjust.
10133         Call refmarker_fn mark for hardregnos.
10134         (mark_reg_as_referenced): New.
10135         (replace_reg_with_saved_mem): New.
10136         * ipa-pure-const.c (check_stmt): Skip debug stmts.
10137         * cse.c (cse_insn): Canonicalize debug insns.  Skip them when
10138         searching back.
10139         (cse_extended_basic_block): Skip debug insns.
10140         (count_reg_usage): Likewise.
10141         (is_dead_reg): New, split out of...
10142         (set_live_p): ... here.
10143         (insn_live_p): Use it for debug insns.
10144         * tree-stdarg.c (check_all_va_list_escapes): Skip debug stmts.
10145         (execute_optimize_stdarg): Likewise.
10146         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
10147         * tree-ssa-propagate.c (substitute_and_fold): Don't regard
10148         changes in debug stmts as changes.
10149         * sel-sched.c (moving_insn_creates_bookkeeping_block_p): New.
10150         (moveup_expr): Don't move across debug insns.  Don't move
10151         debug insn if it would create a bookkeeping block.
10152         (moveup_expr_cached): Don't use cache for debug insns that
10153         are heads of blocks.
10154         (compute_av_set_inside_bb): Skip debug insns.
10155         (sel_rank_for_schedule): Schedule debug insns first.  Remove
10156         dead code.
10157         (block_valid_for_bookkeeping_p); Support lax searches.
10158         (create_block_for_bookkeeping): Adjust block numbers when
10159         encountering debug-only blocks.
10160         (find_place_for_bookkeeping): Deal with debug-only blocks.
10161         (generate_bookkeeping_insn): Accept no place to insert.
10162         (remove_temp_moveop_nops): New argument full_tidying.
10163         (prepare_place_to_insert): Deal with debug insns.
10164         (advance_state_on_fence): Debug insns don't start cycles.
10165         (update_boundaries): Take fence as argument.  Deal with
10166         debug insns.
10167         (schedule_expr_on_boundary): No full_tidying on debug insns.
10168         (fill_insns): Deal with debug insns.
10169         (track_scheduled_insns_and_blocks): Don't count debug insns.
10170         (need_nop_to_preserve_insn_bb): New, split out of...
10171         (remove_insn_from_stream): ... this.
10172         (fur_orig_expr_not_found): Skip debug insns.
10173         * rtl.def (VALUE): Move up.
10174         (DEBUG_INSN): New.
10175         * tree-ssa-sink.c (all_immediate_uses_same_place): Skip debug stmts.
10176         (nearest_common_dominator_of_uses): Take debug_stmts argument.
10177         Set it if debug stmts are found.
10178         (statement_sink_location): Skip debug stmts.  Propagate
10179         moving defs into debug stmts.
10180         * ifcvt.c (first_active_insn): Skip debug insns.
10181         (last_active_insns): Likewise.
10182         (cond_exec_process_insns): Likewise.
10183         (noce_process_if_block): Likewise.
10184         (check_cond_move_block): Likewise.
10185         (cond_move_convert_if_block): Likewise.
10186         (block_jumps_and_fallthru_p): Likewise.
10187         (dead_or_predicable): Likewise.
10188         * dwarf2out.c (debug_str_hash_forced): New.
10189         (find_AT_string): Add comment.
10190         (gen_label_for_indirect_string): New.
10191         (get_debug_string_label): New.
10192         (AT_string_form): Use it.
10193         (mem_loc_descriptor): Handle non-TLS symbols.  Handle MINUS , DIV,
10194         MOD, AND, IOR, XOR, NOT, ABS, NEG, and CONST_STRING.  Accept but
10195         discard COMPARE, IF_THEN_ELSE, ROTATE, ROTATERT, TRUNCATE and
10196         several operations that cannot be represented with DWARF opcodes.
10197         (loc_descriptor): Ignore SIGN_EXTEND and ZERO_EXTEND.  Require
10198         dwarf_version 4 for DW_OP_implicit_value and DW_OP_stack_value.
10199         (dwarf2out_var_location): Take during-call mark into account.
10200         (output_indirect_string): Update comment.  Output if there are
10201         label and references.
10202         (prune_indirect_string): New.
10203         (prune_unused_types): Call it if debug_str_hash_forced.
10204         More in dwarf2out.c, from Jakub Jelinek <jakub@redhat.com>:
10205         (dw_long_long_const): Remove.
10206         (struct dw_val_struct): Change val_long_long type to rtx.
10207         (print_die, attr_checksum, same_dw_val_p, loc_descriptor): Adjust for
10208         val_long_long change to CONST_DOUBLE rtx from a long hi/lo pair.
10209         (output_die): Likewise.  Use HOST_BITS_PER_WIDE_INT size of each
10210         component instead of HOST_BITS_PER_LONG.
10211         (output_loc_operands): Likewise.  For const8* assert
10212         HOST_BITS_PER_WIDE_INT rather than HOST_BITS_PER_LONG is >= 64.
10213         (output_loc_operands_raw): For const8* assert HOST_BITS_PER_WIDE_INT
10214         rather than HOST_BITS_PER_LONG is >= 64.
10215         (add_AT_long_long): Remove val_hi and val_lo arguments, add
10216         val_const_double.
10217         (size_of_die): Use HOST_BITS_PER_WIDE_INT size multiplier instead of
10218         HOST_BITS_PER_LONG for dw_val_class_long_long.
10219         (add_const_value_attribute): Adjust add_AT_long_long caller.  Don't
10220         handle TLS SYMBOL_REFs.  If CONST wraps a constant, tail recurse.
10221         (dwarf_stack_op_name): Handle DW_OP_implicit_value and
10222         DW_OP_stack_value.
10223         (size_of_loc_descr, output_loc_operands, output_loc_operands_raw):
10224         Handle DW_OP_implicit_value.
10225         (extract_int): Move prototype earlier.
10226         (mem_loc_descriptor): For SUBREG punt if inner
10227         mode size is wider than DWARF2_ADDR_SIZE.  Handle SIGN_EXTEND
10228         and ZERO_EXTEND by DW_OP_shl and DW_OP_shr{a,}.  Handle
10229         EQ, NE, GT, GE, LT, LE, GTU, GEU, LTU, LEU, SMIN, SMAX, UMIN,
10230         UMAX, SIGN_EXTRACT, ZERO_EXTRACT.
10231         (loc_descriptor): Compare mode size with DWARF2_ADDR_SIZE
10232         instead of Pmode size.
10233         (loc_descriptor): Add MODE argument.  Handle CONST_INT, CONST_DOUBLE,
10234         CONST_VECTOR, CONST, LABEL_REF and SYMBOL_REF if mode != VOIDmode,
10235         attempt to handle other expressions.  Don't handle TLS SYMBOL_REFs.
10236         (concat_loc_descriptor, concatn_loc_descriptor,
10237         loc_descriptor_from_tree_1): Adjust loc_descriptor callers.
10238         (add_location_or_const_value_attribute): Likewise.  For single
10239         location loc_lists attempt to use add_const_value_attribute
10240         for constant decls.  Add DW_AT_const_value even if
10241         NOTE_VAR_LOCATION is VAR_LOCATION with CONSTANT_P or CONST_STRING
10242         in its expression.
10243         * cfgbuild.c (inside_basic_block_p): Handle debug insns.
10244         (control_flow_insn_p): Likewise.
10245         * tree-parloops.c (eliminate_local_variables_stmt): Handle debug stmt.
10246         (separate_decls_in_region_debug_bind): New.
10247         (separate_decls_in_region): Process debug bind stmts afterwards.
10248         * recog.c (verify_changes): Handle debug insns.
10249         (extract_insn): Likewise.
10250         (peephole2_optimize): Skip debug insns.
10251         * dse.c (scan_insn): Skip debug insns.
10252         * sel-sched-ir.c (return_nop_to_pool): Take full_tidying argument.
10253         Pass it on.
10254         (setup_id_for_insn): Handle debug insns.
10255         (maybe_tidy_empty_bb): Adjust whitespace.
10256         (tidy_control_flow): Skip debug insns.
10257         (sel_remove_insn): Adjust for debug insns.
10258         (sel_estimate_number_of_insns): Skip debug insns.
10259         (create_insn_rtx_from_pattern): Handle debug insns.
10260         (create_copy_of_insn_rtx): Likewise.
10261         * sel-sched-.h (sel_bb_end): Declare.
10262         (sel_bb_empty_or_nop_p): New.
10263         (get_all_loop_exits): Use it.
10264         (_eligible_successor_edge_p): Likewise.
10265         (return_nop_to_pool): Adjust.
10266         * tree-eh.c (tre_empty_eh_handler_p): Skip debug stmts.
10267         * ira-lives.c (process_bb_node_lives): Skip debug insns.
10268         * gimple-pretty-print.c (dump_gimple_debug): New.
10269         (dump_gimple_stmt): Use it.
10270         (dump_bb_header): Skip gimple debug stmts.
10271         * regmove.c (optimize_reg_copy_1): Discount debug insns.
10272         (fixup_match_2): Likewise.
10273         (regmove_backward_pass): Likewise.  Simplify combined
10274         replacement.  Handle debug insns.
10275         * function.c (instantiate_virtual_regs): Handle debug insns.
10276         * function.h (struct emit_status): Add x_cur_debug_insn_uid.
10277         * print-rtl.h: Include cselib.h.
10278         (print_rtx): Print VALUEs.  Split out and recurse for VAR_LOCATIONs.
10279         * df.h (df_inns_rescan_debug_internal): Declare.
10280         * gcse.c (alloc_hash_table): Estimate n_insns.
10281         (cprop_insn): Don't regard debug insns as changes.
10282         (bypass_conditional_jumps): Skip debug insns.
10283         (one_pre_gcse_pass): Adjust.
10284         (one_code_hoisting_pass): Likewise.
10285         (compute_ld_motion_mems): Skip debug insns.
10286         (one_cprop_pass): Adjust.
10287         * tree-if-conv.c (tree_if_convert_stmt): Reset debug stmts.
10288         (if_convertible_stmt_p): Handle debug stmts.
10289         * init-regs.c (initialize_uninitialized_regs): Skip debug insns.
10290         * tree-vect-loop.c (vect_is_simple_reduction): Skip debug stmts.
10291         * ira-build.c (create_bb_allocnos): Skip debug insns.
10292         * tree-flow-inline.h (has_zero_uses): Discount debug stmts.
10293         (has_single_use): Likewise.
10294         (single_imm_use): Likewise.
10295         (num_imm_uses): Likewise.
10296         * tree-ssa-phiopt.c (empty_block_p): Skip debug stmts.
10297         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Skip debug stmts.
10298         (create_outofssa_var_map): Likewise.
10299         * lower-subreg.c (adjust_decomposed_uses): New.
10300         (resolve_debug): New.
10301         (decompose_multiword_subregs): Use it.
10302         * tree-dfa.c (find_referenced_vars): Skip debug stmts.
10303         * emit-rtl.c: Include params.h.
10304         (cur_debug_insn_uid): Define.
10305         (set_new_first_and_last_insn): Set cur_debug_insn_uid too.
10306         (copy_rtx_if_shared_1): Handle debug insns.
10307         (reset_used_flags): Likewise.
10308         (set_used_flags): LIkewise.
10309         (get_max_insn_count): New.
10310         (next_nondebug_insn): New.
10311         (prev_nondebug_insn): New.
10312         (make_debug_insn_raw): New.
10313         (emit_insn_before_noloc): Handle debug insns.
10314         (emit_jump_insn_before_noloc): Likewise.
10315         (emit_call_insn_before_noloc): Likewise.
10316         (emit_debug_insn_before_noloc): New.
10317         (emit_insn_after_noloc): Handle debug insns.
10318         (emit_jump_insn_after_noloc): Likewise.
10319         (emit_call_insn_after_noloc): Likewise.
10320         (emit_debug_insn_after_noloc): Likewise.
10321         (emit_insn_after): Take loc from earlier non-debug insn.
10322         (emit_jump_insn_after): Likewise.
10323         (emit_call_insn_after): Likewise.
10324         (emit_debug_insn_after_setloc): New.
10325         (emit_debug_insn_after): New.
10326         (emit_insn_before): Take loc from later non-debug insn.
10327         (emit_jump_insn_before): Likewise.
10328         (emit_call_insn_before): Likewise.
10329         (emit_debug_insn_before_setloc): New.
10330         (emit_debug_insn_before): New.
10331         (emit_insn): Handle debug insns.
10332         (emit_debug_insn): New.
10333         (emit_jump_insn): Handle debug insns.
10334         (emit_call_insn): Likewise.
10335         (emit): Likewise.
10336         (init_emit): Take min-nondebug-insn-uid into account.
10337         Initialize cur_debug_insn_uid.
10338         (emit_copy_of_insn_after): Handle debug insns.
10339         * cfgexpand.c (gimple_assign_rhs_to_tree): Do not overwrite
10340         location of single rhs in place.
10341         (maybe_dump_rtl_for_gimple_stmt): Dump lineno.
10342         (floor_sdiv_adjust): New.
10343         (cell_sdiv_adjust): New.
10344         (cell_udiv_adjust): New.
10345         (round_sdiv_adjust): New.
10346         (round_udiv_adjust): New.
10347         (wrap_constant): Moved from cselib.
10348         (unwrap_constant): New.
10349         (expand_debug_expr): New.
10350         (expand_debug_locations): New.
10351         (expand_gimple_basic_block): Drop hiding redeclaration.  Expand
10352         debug bind stmts.
10353         (gimple_expand_cfg): Expand debug locations.
10354         * cselib.c: Include tree-pass.h.
10355         (struct expand_value_data): New.
10356         (cselib_record_sets_hook): New.
10357         (PRESERVED_VALUE_P, LONG_TERM_PRESERVED_VALUE_P): New.
10358         (cselib_clear_table): Move, and implemnet in terms of...
10359         (cselib_reset_table_with_next_value): ... this.
10360         (cselib_get_next_unknown_value): New.
10361         (discard_useless_locs): Don't discard preserved values.
10362         (cselib_preserve_value): New.
10363         (cselib_preserved_value_p): New.
10364         (cselib_preserve_definitely): New.
10365         (cselib_clear_preserve): New.
10366         (cselib_preserve_only_values): New.
10367         (new_cselib_val): Take rtx argument.  Dump it in details.
10368         (cselib_lookup_mem): Adjust.
10369         (expand_loc): Take regs_active in struct.  Adjust.  Silence
10370         dumps unless details are requested.
10371         (cselib_expand_value_rtx_cb): New.
10372         (cselib_expand_value_rtx): Rename and reimplment in terms of...
10373         (cselib_expand_value_rtx_1): ... this.  Adjust.  Silence dumps
10374         without details.  Copy more subregs.  Try to resolve values
10375         using a callback.  Wrap constants.
10376         (cselib_subst_to_values): Adjust.
10377         (cselib_log_lookup): New.
10378         (cselib_lookup): Call it.
10379         (cselib_invalidate_regno): Don't count preserved values as useless.
10380         (cselib_invalidate_mem): Likewise.
10381         (cselib_record_set): Likewise.
10382         (struct set): Renamed to cselib_set, moved to cselib.h.
10383         (cselib_record_sets): Adjust.  Call hook.
10384         (cselib_process_insn): Reset table when it would be cleared.
10385         (dump_cselib_val): New.
10386         (dump_cselib_table): New.
10387         * tree-cfgcleanup.c (tree_forwarded_block_p): Skip debug stmts.
10388         (remove_forwarder_block): Support moving debug stmts.
10389         * cselib.h (cselib_record_sets_hook): Declare.
10390         (cselib_expand_callback): New type.
10391         (cselib_expand_value_rtx_cb): Declare.
10392         (cselib_reset_table_with_next_value): Declare.
10393         (cselib_get_next_unknown_value): Declare.
10394         (cselib_preserve_value): Declare.
10395         (cselib_preserved_value_p): Declare.
10396         (cselib_preserve_only_values): Declare.
10397         (dump_cselib_table): Declare.
10398         * cfgcleanup.c (flow_find_cross_jump): Skip debug insns.
10399         (try_crossjump_to_edge): Likewise.
10400         (delete_unreachable_blocks): Remove dominant GIMPLE blocks after
10401         dominated blocks when debug stmts are present.
10402         * simplify-rtx.c (delegitimize_mem_from_attrs): New.
10403         * tree-ssa-live.c (remove_unused_locals): Skip debug stmts.
10404         (set_var_live_on_entry): Likewise.
10405         * loop-invariant.c (find_invariants_bb): Skip debug insns.
10406         * cfglayout.c (curr_location, last_location): Make static.
10407         (set_curr_insn_source_location): Don't avoid bouncing.
10408         (get_curr_insn_source_location): New.
10409         (get_curr_insn_block): New.
10410         (duplicate_insn_chain): Handle debug insns.
10411         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Propagate
10412         into debug stmts.
10413         * common.opt (fcompare-debug): Move to sort order.
10414         (fdump-unnumbered-links): Likewise.
10415         (fvar-tracking-assignments): New.
10416         (fvar-tracking-assignments-toggle): New.
10417         * tree-ssa-dce.c (mark_stmt_necessary): Don't mark blocks
10418         because of debug stmts.
10419         (mark_stmt_if_obviously_necessary): Mark debug stmts.
10420         (eliminate_unnecessary_stmts): Walk dominated blocks before
10421         dominators.
10422         * tree-ssa-ter.c (find_replaceable_in_bb): Skip debug stmts.
10423         * ira.c (memref_used_between_p): Skip debug insns.
10424         (update_equiv_regs): Likewise.
10425         * sched-deps.c (sd_lists_size): Accept empty list.
10426         (sd_init_insn): Mark debug insns.
10427         (sd_finish_insn): Unmark them.
10428         (sd_add_dep): Reject non-debug deps on debug insns.
10429         (fixup_sched_groups): Give debug insns group treatment.
10430         Skip debug insns.
10431         (sched_analyze_reg): Don't mark debug insns for sched before call.
10432         (sched_analyze_2): Handle debug insns.
10433         (sched_analyze_insn): Compute next non-debug insn.  Handle debug
10434         insns.
10435         (deps_analyze_insn): Handle debug insns.
10436         (deps_start_bb): Skip debug insns.
10437         (init_deps): Initialize last_debug_insn.
10438         * tree-ssa.c (target_for_debug_bind): New.
10439         (find_released_ssa_name): New.
10440         (propagate_var_def_into_debug_stmts): New.
10441         (propagate_defs_into_debug_stmts): New.
10442         (verify_ssa): Skip debug bind stmts without values.
10443         (warn_uninialized_vars): Skip debug stmts.
10444         * target-def.h (TARGET_DELEGITIMIZE_ADDRESS): Set default.
10445         * rtl.c (rtx_equal_p_cb): Handle VALUEs.
10446         (rtx_equal_p): Likewise.
10447         * ira-costs.c (scan_one_insn): Skip debug insns.
10448         (process_bb_node_for_hard_reg_moves): Likewise.
10449         * rtl.h (DEBUG_INSN_P): New.
10450         (NONDEBUG_INSN_P): New.
10451         (MAY_HAVE_DEBUG_INSNS): New.
10452         (INSN_P): Accept debug insns.
10453         (RTX_FRAME_RELATED_P): Likewise.
10454         (INSN_DELETED_P): Likewise
10455         (PAT_VAR_LOCATION_DECL): New.
10456         (PAT_VAR_LOCATION_LOC): New.
10457         (PAT_VAR_OCATION_STATUS): New.
10458         (NOTE_VAR_LOCATION_DECL): Reimplement.
10459         (NOTE_VAR_LOCATION_LOC): Likewise.
10460         (NOTE_VAR_LOCATION_STATUS): Likewise.
10461         (INSN_VAR_LOCATION): New.
10462         (INSN_VAR_LOCATION_DECL): New.
10463         (INSN_VAR_LOCATION_LOC): New.
10464         (INSN_VAR_LOCATION_STATUS): New.
10465         (gen_rtx_UNKNOWN_VAR_LOC): New.
10466         (VAR_LOC_UNKNOWN_P): New.
10467         (NOTE_DURING_CALL_P): New.
10468         (SCHED_GROUP_P): Accept debug insns.
10469         (emit_debug_insn_before): Declare.
10470         (emit_debug_insn_before_noloc): Declare.
10471         (emit_debug_insn_beore_setloc): Declare.
10472         (emit_debug_insn_after): Declare.
10473         (emit_debug_insn_after_noloc): Declare.
10474         (emit_debug_insn_after_setloc): Declare.
10475         (emit_debug_insn): Declare.
10476         (make_debug_insn_raw): Declare.
10477         (prev_nondebug_insn): Declare.
10478         (next_nondebug_insn): Declare.
10479         (delegitimize_mem_from_attrs): Declare.
10480         (get_max_insn_count): Declare.
10481         (wrap_constant): Declare.
10482         (unwrap_constant): Declare.
10483         (get_curr_insn_source_location): Declare.
10484         (get_curr_insn_block): Declare.
10485         * tree-inline.c (insert_debug_decl_map): New.
10486         (processing_debug_stmt): New.
10487         (remap_decl): Don't create new mappings in debug stmts.
10488         (remap_gimple_op_r): Don't add references in debug stmts.
10489         (copy_tree_body_r): Likewise.
10490         (remap_gimple_stmt): Handle debug bind stmts.
10491         (copy_bb): Skip debug stmts.
10492         (copy_edges_for_bb): Likewise.
10493         (copy_debug_stmt): New.
10494         (copy_debug_stmts): New.
10495         (copy_body): Copy debug stmts at the end.
10496         (insert_init_debug_bind): New.
10497         (insert_init_stmt): Take id.  Skip and emit debug stmts.
10498         (setup_one_parameter): Remap variable earlier, register debug mapping.
10499         (estimate_num_insns): Skip debug stmts.
10500         (expand_call_inline): Preserve debug_map.
10501         (optimize_inline_calls): Check for no debug_stmts left-overs.
10502         (unsave_expr_now): Preserve debug_map.
10503         (copy_gimple_seq_and_replace_locals): Likewise.
10504         (tree_function_versioning): Check for no debug_stmts left-overs.
10505         Init and destroy debug_map as needed.  Split edges unconditionally.
10506         (build_duplicate_type): Init and destroy debug_map as needed.
10507         * tree-inline.h: Include gimple.h instead of pointer-set.h.
10508         (struct copy_body_data): Add debug_stmts and debug_map.
10509         * sched-int.h (struct ready_list): Add n_debug.
10510         (struct deps): Add last_debug_insn.
10511         (DEBUG_INSN_SCHED_P): New.
10512         (BOUNDARY_DEBUG_INSN_P): New.
10513         (SCHEDULE_DEBUG_INSN_P): New.
10514         (sd_iterator_cond): Accept empty list.
10515         * combine.c (create_log_links): Skip debug insns.
10516         (combine_instructions): Likewise.
10517         (cleanup_auto_inc_dec): New.  From Jakub Jelinek: Make sure the
10518         return value is always unshared.
10519         (struct rtx_subst_pair): New.
10520         (auto_adjust_pair): New.
10521         (propagate_for_debug_subst): New.
10522         (propagate_for_debug): New.
10523         (try_combine): Skip debug insns.  Propagate removed defs into
10524         debug insns.
10525         (next_nonnote_nondebug_insn): New.
10526         (distribute_notes): Use it.  Skip debug insns.
10527         (distribute_links): Skip debug insns.
10528         * tree-outof-ssa.c (set_location_for_edge): Likewise.
10529         * resource.c (mark_target_live_regs): Likewise.
10530         * var-tracking.c: Include cselib.h and target.h.
10531         (enum micro_operation_type): Add MO_VAL_USE, MO_VAL_LOC, and
10532         MO_VAL_SET.
10533         (micro_operation_type_name): New.
10534         (enum emit_note_where): Add EMIT_NOTE_AFTER_CALL_INSN.
10535         (struct micro_operation_def): Update comments.
10536         (decl_or_value): New type.  Use instead of decls.
10537         (struct emit_note_data_def): Add vars.
10538         (struct attrs_def): Use decl_or_value.
10539         (struct variable_tracking_info_def): Add permp, flooded.
10540         (struct location_chain_def): Update comment.
10541         (struct variable_part_def): Use decl_or_value.
10542         (struct variable_def): Make var_part a variable length array.
10543         (valvar_pool): New.
10544         (scratch_regs): New.
10545         (cselib_hook_called): New.
10546         (dv_is_decl_p): New.
10547         (dv_is_value_p): New.
10548         (dv_as_decl): New.
10549         (dv_as_value): New.
10550         (dv_as_opaque): New.
10551         (dv_onepart_p): New.
10552         (dv_pool): New.
10553         (IS_DECL_CODE): New.
10554         (check_value_is_not_decl): New.
10555         (dv_from_decl): New.
10556         (dv_from_value): New.
10557         (dv_htab_hash): New.
10558         (variable_htab_hash): Use it.
10559         (variable_htab_eq): Support values.
10560         (variable_htab_free): Free from the right pool.
10561         (attrs_list_member, attrs_list_insert): Use decl_or_value.
10562         (attrs_list_union): Adjust.
10563         (attrs_list_mpdv_union): New.
10564         (tie_break_pointers): New.
10565         (canon_value_cmp): New.
10566         (unshare_variable): Return possibly-modified slot.
10567         (vars_copy_1): Adjust.
10568         (var_reg_decl_set): Adjust.  Split out of...
10569         (var_reg_set): ... this.
10570         (get_init_value): Adjust.
10571         (var_reg_delete_and_set): Adjust.
10572         (var_reg_delete): Adjust.
10573         (var_regno_delete): Adjust.
10574         (var_mem_decl_set): Split out of...
10575         (var_mem_set): ... this.
10576         (var_mem_delete_and_set): Adjust.
10577         (var_mem_delete): Adjust.
10578         (val_store): New.
10579         (val_reset): New.
10580         (val_resolve): New.
10581         (variable_union): Adjust.  Speed up merge of 1-part vars.
10582         (variable_canonicalize): Use unshared slot.
10583         (VALUED_RECURSED_INTO): New.
10584         (find_loc_in_1pdv): New.
10585         (struct dfset_merge): New.
10586         (insert_into_intersection): New.
10587         (intersect_loc_chains): New.
10588         (loc_cmp): New.
10589         (canonicalize_loc_order_check): New.
10590         (canonicalize_values_mark): New.
10591         (canonicalize_values_star): New.
10592         (variable_merge_over_cur): New.
10593         (variable_merge_over_src): New.
10594         (dataflow_set_merge): New.
10595         (dataflow_set_equiv_regs): New.
10596         (remove_duplicate_values): New.
10597         (struct dfset_post_merge): New.
10598         (variable_post_merge_new_vals): New.
10599         (variable_post_merge_perm_vals): New.
10600         (dataflow_post_merge_adjust): New.
10601         (find_mem_expr_in_1pdv): New.
10602         (dataflow_set_preserve_mem_locs): New.
10603         (dataflow_set_remove_mem_locs): New.
10604         (dataflow_set_clear_at_call): New.
10605         (onepart_variable_different_p): New.
10606         (variable_different_p): Use it.
10607         (dataflow_set_different_1): Adjust.  Make detailed dump more verbose.
10608         (track_expr_p): Add need_rtl parameter.  Don't generate rtl
10609         if not needed.
10610         (track_loc_p): Pass it true.
10611         (struct count_use_info): New.
10612         (find_use_val): New.
10613         (replace_expr_with_values): New.
10614         (log_op_type): New.
10615         (use_type): New, partially split out of...
10616         (count_uses): ... this.  Count new micro-ops.
10617         (count_uses_1): Adjust.
10618         (count_stores): Adjust.
10619         (count_with_sets): New.
10620         (VAL_NEEDS_RESOLUTION): New.
10621         (VAL_HOLDS_TRACK_EXPR): New.
10622         (VAL_EXPR_IS_COPIED): New.
10623         (VAL_EXPR_IS_CLOBBERED): New.
10624         (add_uses): Adjust.  Generate new micro-ops.
10625         (add_uses_1): Adjust.
10626         (add_stores): Generate new micro-ops.
10627         (add_with_sets): New.
10628         (find_src_status): Adjust.
10629         (find_src_set_src): Adjust.
10630         (compute_bb_dataflow): Use dataflow_set_clear_at_call.
10631         Handle new micro-ops.  Canonicalize value equivalances.
10632         (vt_find_locations): Compute total size of hash tables for
10633         dumping.  Perform merge for var-tracking-assignments.  Don't
10634         disregard single-block loops.
10635         (dump_attrs_list): Handle decl_or_value.
10636         (dump_variable): Take variable.  Deal with decl_or_value.
10637         (dump_variable_slot): New.
10638         (dump_vars): Use it.
10639         (dump_dataflow_sets): Adjust.
10640         (set_slot_part): New, extended to support one-part variables
10641         after splitting out of...
10642         (set_variable_part): ... this.
10643         (clobber_slot_part): New, split out of...
10644         (clobber_variable_part): ... this.
10645         (delete_slot_part): New, split out of...
10646         (delete_variable_part): .... this.
10647         (check_wrap_constant): New.
10648         (vt_expand_loc_callback): New.
10649         (vt_expand_loc): New.
10650         (emit_note_insn_var_location): Adjust.  Handle values.  Handle
10651         EMIT_NOTE_AFTER_CALL_INSN.
10652         (emit_notes_for_differences_1): Adjust.  Handle values.
10653         (emit_notes_for_differences_2): Likewise.
10654         (emit_notes_for_differences): Adjust.
10655         (emit_notes_in_bb): Take pointer to set.  Emit AFTER_CALL_INSN notes.
10656         Adjust.  Handle new micro-ops.
10657         (vt_add_function_parameters): Adjust.  Create and bind values.
10658         (vt_initialize): Adjust.  Initialize scratch_regs and
10659         valvar_pool, flooded and perm..  Initialize and use cselib.  Log
10660         operations.  Move some code to count_with_sets and add_with_sets.
10661         (delete_debug_insns): New.
10662         (vt_debug_insns_local): New.
10663         (vt_finalize): Release permp, valvar_pool, scratch_regs.  Finish
10664         cselib.
10665         (var_tracking_main): If var-tracking-assignments is enabled
10666         but var-tracking isn't, delete debug insns and leave.  Likewise
10667         if we exceed limits or fail the stack adjustments tests, and
10668         after all var-tracking processing.
10669         More in var-tracking, from Jakub Jelinek <jakub@redhat.com>:
10670         (dataflow_set): Add traversed_vars.
10671         (value_chain, const_value_chain): New typedefs.
10672         (value_chain_pool, value_chains): New variables.
10673         (value_chain_htab_hash, value_chain_htab_eq, add_value_chain,
10674         add_value_chains, add_cselib_value_chains, remove_value_chain,
10675         remove_value_chains, remove_cselib_value_chains): New functions.
10676         (shared_hash_find_slot_unshare_1, shared_hash_find_slot_1,
10677         shared_hash_find_slot_noinsert_1, shared_hash_find_1): New
10678         static inlines.
10679         (shared_hash_find_slot_unshare, shared_hash_find_slot,
10680         shared_hash_find_slot_noinsert, shared_hash_find): Update.
10681         (dst_can_be_shared): New variable.
10682         (unshare_variable): Unshare set->vars if shared, use shared_hash_*.
10683         Clear dst_can_be_shared.  If set->traversed_vars is non-NULL and
10684         different from set->vars, look up slot again instead of using the
10685         passed in slot.
10686         (dataflow_set_init): Initialize traversed_vars.
10687         (variable_union): Use shared_hash_*.  Use initially NO_INSERT
10688         lookup if set->vars is shared.  Don't keep slot cleared before
10689         calling unshare_variable.  Unshare set->vars if needed.  Adjust
10690         unshare_variable callers.  Clear dst_can_be_shared if needed.
10691         Even ->refcount == 1 vars must be unshared if set->vars is shared
10692         and var needs to be modified.
10693         (dataflow_set_union): Set traversed_vars during canonicalization.
10694         (VALUE_CHANGED, DECL_CHANGED): Define.
10695         (set_dv_changed, dv_changed_p): New static inlines.
10696         (track_expr_p): Clear DECL_CHANGED.
10697         (dump_dataflow_sets): Set it.
10698         (variable_was_changed): Call set_dv_changed.
10699         (emit_note_insn_var_location): Likewise.
10700         (changed_variables_stack): New variable.
10701         (check_changed_vars_1, check_changed_vars_2): New functions.
10702         (emit_notes_for_changes): Do nothing if changed_variables is
10703         empty.  Traverse changed_variables with check_changed_vars_1,
10704         call check_changed_vars_2 on each changed_variables_stack entry.
10705         (emit_notes_in_bb): Add SET argument.  Just clear it at the
10706         beginning, use it instead of local &set, don't destroy it at the end.
10707         (vt_emit_notes): Call dataflow_set_clear early on all
10708         VTI(bb)->out sets, never use them, instead use emit_notes_in_bb
10709         computed set, dataflow_set_clear also VTI(bb)->in when we are
10710         done with the basic block.  Initialize changed_variables_stack,
10711         free it afterwards.  If ENABLE_CHECKING verify that after noting
10712         differences to an empty set value_chains hash table is empty.
10713         (vt_initialize): Initialize value_chains and value_chain_pool.
10714         (vt_finalize): Delete value_chains htab, free value_chain_pool.
10715         (variable_tracking_main): Call dump_dataflow_sets before calling
10716         vt_emit_notes, not after it.
10717         * tree-flow.h (propagate_defs_into_debug_stmts): Declare.
10718         (propagate_var_def_into_debug_stmts): Declare.
10719         * df-problems.c (df_lr_bb_local_compute): Skip debug insns.
10720         (df_set_note): Reject debug insns.
10721         (df_whole_mw_reg_dead_p): Take added_notes_p argument.  Don't
10722         add notes to debug insns.
10723         (df_note_bb_compute): Adjust.  Likewise.
10724         (df_simulate_uses): Skip debug insns.
10725         (df_simulate_initialize_backwards): Likewise.
10726         * reg-stack.c (subst_stack_regs_in_debug_insn): New.
10727         (subst_stack_regs_pat): Reject debug insns.
10728         (convert_regs_1): Handle debug insns.
10729         * Makefile.in (TREE_INLINE_H): Take pointer-set.h from GIMPLE_H.
10730         (print-rtl.o): Depend on cselib.h.
10731         (cselib.o): Depend on TREE_PASS_H.
10732         (var-tracking.o): Depend on cselib.h and TARGET_H.
10733         * sched-rgn.c (rgn_estimate_number_of_insns): Discount debug insns.
10734         (init_ready_list): Skip boundary debug insns.
10735         (add_branch_dependences): Skip debug insns.
10736         (free_block_dependencies): Check for blocks with only debug insns.
10737         (compute_priorities): Likewise.
10738         * gimple.c (gss_for_code): Handle GIMPLE_DEBUG.
10739         (gimple_build_with_ops_stat): Take subcode as unsigned.  Adjust
10740         all callers.
10741         (gimple_build_debug_bind_stat): New.
10742         (empty_body_p): Skip debug stmts.
10743         (gimple_has_side_effects): Likewise.
10744         (gimple_rhs_has_side_effects): Likewise.
10745         * gimple.h (enum gimple_debug_subcode, GIMPLE_DEBUG_BIND): New.
10746         (gimple_build_debug_bind_stat): Declare.
10747         (gimple_build_debug_bind): Define.
10748         (is_gimple_debug): New.
10749         (gimple_debug_bind_p): New.
10750         (gimple_debug_bind_get_var): New.
10751         (gimple_debug_bind_get_value): New.
10752         (gimple_debug_bind_get_value_ptr): New.
10753         (gimple_debug_bind_set_var): New.
10754         (gimple_debug_bind_set_value): New.
10755         (GIMPLE_DEBUG_BIND_NOVALUE): New internal temporary macro.
10756         (gimple_debug_bind_reset_value): New.
10757         (gimple_debug_bind_has_value_p): New.
10758         (gsi_next_nondebug): New.
10759         (gsi_prev_nondebug): New.
10760         (gsi_start_nondebug_bb): New.
10761         (gsi_last_nondebug_bb): New.
10762         * sched-vis.c (print_pattern): Handle VAR_LOCATION.
10763         (print_insn): Handle DEBUG_INSN.
10764         * tree-cfg.c (remove_bb): Walk stmts backwards.  Let loc
10765         of first insn prevail.
10766         (first_stmt): Skip debug stmts.
10767         (first_non_label_stmt): Likewise.
10768         (last_stmt): Likewise.
10769         (has_zero_uses_1): New.
10770         (single_imm_use_1): New.
10771         (verify_gimple_debug): New.
10772         (verify_types_in_gimple_stmt): Handle debug stmts.
10773         (verify_stmt): Likewise.
10774         (debug_loop_num): Skip debug stmts.
10775         (remove_edge_and_dominated_blocks): Remove dominators last.
10776         * tree-ssa-reasssoc.c (rewrite_expr_tree): Propagate into debug stmts.
10777         (linearize_expr): Likewise.
10778         * config/i386/i386.c (ix86_delegitimize_address): Call
10779         default implementation.
10780         * config/ia64/ia64.c (ia64_safe_itanium_class): Handle debug insns.
10781         (group_barrier_needed): Skip debug insns.
10782         (emit_insn_group_barriers): Likewise.
10783         (emit_all_insn_group_barriers): Likewise.
10784         (ia64_variable_issue): Handle debug insns.
10785         (ia64_dfa_new_cycle): Likewise.
10786         (final_emit_insn_group_barriers): Skip debug insns.
10787         (ia64_dwarf2out_def_steady_cfa): Take frame argument.  Don't
10788         def cfa without frame.
10789         (process_set): Likewise.
10790         (process_for_unwind_directive): Pass frame on.
10791         * config/rs6000/rs6000.c (TARGET_DELEGITIMIZE_ADDRESS): Define.
10792         (rs6000_delegitimize_address): New.
10793         (rs6000_debug_adjust_cost): Handle debug insns.
10794         (is_microcoded_insn): Likewise.
10795         (is_cracked_insn): Likewise.
10796         (is_nonpipeline_insn): Likewise.
10797         (insn_must_be_first_in_group): Likewise.
10798         (insn_must_be_last_in_group): Likewise.
10799         (force_new_group): Likewise.
10800         * cfgrtl.c (rtl_split_block): Emit INSN_DELETED note if block
10801         contains only debug insns.
10802         (rtl_merge_blocks): Skip debug insns.
10803         (purge_dead_edges): Likewise.
10804         (rtl_block_ends_with_call_p): Skip debug insns.
10805         * dce.c (deletable_insn_p): Handle VAR_LOCATION.
10806         (mark_reg_dependencies): Skip debug insns.
10807         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): New.
10808         * tree-ssanames.c (release_ssa_name): Propagate def into debug stmts.
10809         * tree-ssa-threadedge.c
10810         (record_temporary_equivalences_from_stmts): Skip debug stmts.
10811         * regcprop.c (replace_oldest_value_addr): Skip debug insns.
10812         (replace_oldest_value_mem): Use ALL_REGS for debug insns.
10813         (copyprop_hardreg_forward_1): Handle debug insns.
10814         * reload1.c (reload): Skip debug insns.  Replace unassigned
10815         pseudos in debug insns with their equivalences.
10816         (eliminate_regs_in_insn): Skip debug insns.
10817         (emit_input_reload_insns): Skip debug insns at first, adjust
10818         them later.
10819         * tree-ssa-operands.c (add_virtual_operand): Reject debug stmts.
10820         (get_indirect_ref_operands): Pass opf_no_vops on.
10821         (get_expr_operands): Likewise.  Skip debug stmts.
10822         (parse_ssa_operands): Scan debug insns with opf_no_vops.
10823
10824 2009-09-01  Richard Henderson  <rth@redhat.com>
10825
10826         * tree-ssa-ccp.c (ccp_initialize): Make sure to simulate
10827         stmt_ends_pp_p statements at least once.
10828         * tree-vrp.c (vrp_initialize): Likewise.
10829         (vrp_visit_stmt): Be prepared for non-interesting stmts.
10830
10831 2009-09-01  Dodji Seketeli  <dodji@redhat.com>
10832
10833         PR bootstrap/41205
10834         Fix AIX bootstrap after PR debug/30161
10835         * dwarf2out.c (make_ith_pack_parameter_name): Don't used strnlen
10836         that is a GNU extension.
10837         (tmpl_value_parm_die_table): Move the definition of this global
10838         outside #ifdef DWARF2_DEBUGGING_INFO region.
10839
10840 2009-09-01  Richard Guenther  <rguenther@suse.de>
10841
10842         * tree.c (tree_expr_size): New function.
10843         * tree.h (tree_expr_size): Declare.
10844         * rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
10845         * builtins.c (fold_builtin_memory_op): Use tree_expr_size.
10846         * langhooks.c (lhd_expr_size): Remove.
10847         * langhooks.h (struct lang_hooks): Remove expr_size.
10848         * explow.c (expr_size): Use tree_expr_size.
10849         (int_expr_size): Likewise.
10850         * langhooks-def.h (lhd_expr_size): Remove.
10851         (LANG_HOOKS_EXPR_SIZE): Likewise.
10852         (LANG_HOOKS_INITIALIZER): Adjust.
10853
10854 2009-09-01  Richard Guenther  <rguenther@suse.de>
10855
10856         * tree-flow.h (mark_addressable): Move declaration ...
10857         * tree.h (mark_addressable): ... here.
10858         * stmt.c (expand_asm_operands): Use mark_addressable, not
10859         lang_hooks.mark_addressable.
10860         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
10861         LANG_HOOKS_MARK_ADDRESSABLE.
10862         * langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
10863         * c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
10864
10865 2009-08-31  Chris Demetriou  <cgd@google.com>
10866
10867         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Never
10868         vectorize if not TARGET_SSE2.
10869
10870 2009-08-31  DJ Delorie  <dj@redhat.com>
10871
10872         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Exclude coprocessor
10873         registers if no coprocessor is enabled.
10874
10875 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
10876
10877         PR debug/30161
10878         * cgraph.h (cgraph_get_node): Declare ...
10879         * cgraph.c (cgraph_get_node): ... new function.
10880         * dwarf2out.c (gen_generic_params_dies,
10881         generic_parameter_die, tree_add_const_value_attribute_for_decl,
10882         make_ith_pack_parameter_name,
10883         append_entry_to_tmpl_value_parm_die_table,
10884         gen_remaining_tmpl_value_param_die_attribute): New functions.
10885         (gen_subprogram_die): Generate debug info for template parameters
10886         if debug info level is higher than DINFO_LEVEL_TERSE.
10887         Use tree_add_const_value_attribute_for_decl instead of
10888         tree_add_const_value_attribute.
10889         (gen_const_die): Use tree_add_const_value_attribute_for_decl
10890         instead of tree_add_const_value_attribute.
10891         (gen_struct_or_union_type_die): Generate debug
10892         info for template parameters if debug info level is higher than
10893         DINFO_LEVEL_TERSE.
10894         (tree_add_const_value_attribute): Handle integral and pointer
10895         constants. Update comment.
10896         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
10897         (dwarf_attr_name): Support DW_AT_GNU_template_name.
10898         (reference_to_unused): Fix thinko. Remove redundant predicates from
10899         tests.
10900         (tree_add_const_value_attribute): Make this work for constant
10901         expressions only.
10902         tree_add_const_value_attribute_for_decl is to be used for variable
10903         DECLs now.
10904         (add_location_or_const_value_attribute): Use
10905         tree_add_const_value_attribute_for_decl now.
10906         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
10907         DW_TAG_template_value_param DIEs after function DIEs have been
10908         emitted.
10909         * langhooks.h (lang_hooks_for_types): Add
10910         get_argument_pack_elems.
10911         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
10912         (lang_hooks): Added get_innermost_generic_parms,
10913         get_innermost_generic_args.
10914         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
10915         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
10916         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
10917         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
10918
10919 2009-08-31  DJ Delorie  <dj@redhat.com>
10920
10921         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
10922         it once we start generating the prologue or epilogue.
10923         (mep_call_saves_register): If the frame is locked, re-use
10924         cached values.
10925         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
10926         (mep_expand_prologue): Call it.
10927         (mep_expand_epilogue): Likewise.
10928         (mep_start_function): Use the same logic as mep_expand_prologue.
10929         (mep_pass_by_reference): Make logic more readable.
10930         (mep_return_in_memory): Zero-sized objects are passed in memory.
10931         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
10932
10933 2009-08-31  Richard Guenther  <rguenther@suse.de>
10934
10935         * builtins.c (fold_builtin_memory_op): Use the alias oracle
10936         to query if the memory regions for memmove overlap.
10937         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
10938         asserts on pointers, instead deal with odd trees.
10939         (ptr_derefs_may_alias_p): Likewise.
10940         (refs_may_alias_p_1): Constructor bases also never alias.
10941
10942 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
10943
10944         * doc/install.texi (Final install): Adjust reference on where to
10945         order printed manuals.
10946
10947 2009-08-30  Olivier Hainque  <hainque@adacore.com>
10948
10949         * dwarf2out.c (switch_to_frame_table_section): Move
10950         definition prior to first use.
10951
10952 2009-08-30  Richard Guenther  <rguenther@suse.de>
10953
10954         PR tree-optimization/41186
10955         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
10956         (ao_ref_init_from_ptr_and_size): New function.
10957         (ref_maybe_used_by_call_p_1): Be more precise tracking
10958         used ranges for builtin functions.
10959         (ref_maybe_used_by_call_p): Adjust.
10960         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
10961         ranges for builtin functions.
10962         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
10963
10964 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
10965
10966         PR target/41081
10967         * fwprop.c (get_reg_use_in): Delete.
10968         (free_load_extend): New function.
10969         (forward_propagate_subreg): Use it.
10970
10971 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
10972
10973         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
10974
10975 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
10976
10977         PR/41184
10978         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
10979         padding.
10980
10981 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
10982
10983         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
10984         fini or fini_array section.
10985
10986 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
10987
10988         * graphite-dependences.c (graphite_legal_transform_bb): Call
10989         pbb_remove_duplicate_pdrs.
10990         * graphite-poly.c (can_collapse_pdr): Removed.
10991         (pdr_find_duplicate): Removed.
10992         (can_collapse_pdrs): New.
10993         (pbb_remove_duplicate_pdrs): New.
10994         (new_poly_dr): Do not look for duplicates.
10995         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
10996         (PBB_PDR_DUPLICATES_REMOVED): New.
10997         (pbb_remove_duplicate_pdrs): Declared.
10998
10999 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11000
11001         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
11002         the strides by multiplying by PDR_NB_REFS.
11003         * graphite-poly.c (can_collapse_pdr): New.
11004         (pdr_find_duplicate): New.
11005         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
11006         Initialize PDR_NB_REFS.
11007         * graphite-poly.h (struct poly_dr): Add field nb_refs.
11008         (PDR_NB_REFS): New.
11009         (new_poly_dr): Number of subscripts is a graphite_dim_t.
11010
11011 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11012
11013         PR middle-end/40965
11014         * graphite-poly.c (apply_poly_transforms): Remove legality test before
11015         any transform.
11016
11017 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11018
11019         * graphite-dependences.c (pddr_original_scattering): Return NULL
11020         for read-read dependence relations.
11021         * graphite-poly.h (enum poly_dr_type): Fix comment.
11022         (pdr_read_p): New.
11023         (pdr_write_p): New.
11024         (pdr_may_write_p): New.
11025
11026 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11027
11028         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
11029         (struct poly_dr): Same.
11030         (new_poly_dr): Same.
11031         * graphite-poly.c (new_poly_dr): Same.
11032         * graphite-dependences.c (dot_deps): Disable call to system.
11033
11034 2009-08-28  Cary Coutant  <ccoutant@google.com>
11035
11036         PR debug/41063
11037         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
11038         struct/union/enum types local to a function.
11039
11040 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11041             Sebastian Pop  <sebastian.pop@amd.com>
11042
11043         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
11044         pbb_strip_mine_time_depth.  Changed the implementation so that
11045         transformation is expressed as a transformation on
11046         time (scatttering) dimensions.  Also, ensures that the 2d+1
11047         scheduling format is preserved.
11048         (pbb_strip_mine_profitable_p): Profitability is based on the
11049         iteration number of a given time (scattering) dimension,
11050         and not on a original loop depth dimension.
11051         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
11052         (pbb_do_strip_mine): Call psct_dynamic_dim.
11053         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
11054         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
11055         (pbb_nb_dynamic_scattering_transform): New.
11056         (psct_dynamic_dim): New.
11057
11058 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
11059
11060         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11061         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
11062         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
11063         * graphite-interchange.c (build_linearized_memory_access): Same.
11064         (memory_stride_in_loop): Same.
11065
11066 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11067
11068         * graphite-dependences.c (pddr_original_scattering): New.
11069         (graphite_legal_transform_dr): Call pddr_original_scattering.
11070         (dot_deps_1): New.
11071         (dot_deps): New.
11072         * graphite-dependences.h (dot_deps): Declared.
11073         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
11074         (print_pdr): Print PDR_ID.
11075         * graphite-poly.h (struct poly_dr): Add field id.
11076         (PDR_ID): New.
11077         (pbb_index): New.
11078         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
11079
11080 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11081
11082         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
11083         not delete the original dependence relation.
11084
11085 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11086
11087         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
11088         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
11089         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
11090         (free_poly_ddr): New.
11091         (pddr_is_empty): New.
11092         (dependence_polyhedron_1): Now returns a poly_ddr_p.
11093         (dependence_polyhedron): Same.  Remove useless gcc_assert.
11094         Remove fprintfs.
11095         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
11096         (graphite_carried_dependence_level_k): Call pddr_is_empty.
11097         * graphite-dependences.h (enum poly_dependence_kind): New.
11098         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
11099         (PDRP_SOURCE): Renamed PDDR_SOURCE.
11100         (PDRP_SINK): Renamed PDDR_SINK.
11101         (PDRP_DDP): Renamed PDDR_DDP.
11102         (PDDR_KIND): New.
11103         (free_poly_ddr): Declared.
11104         * graphite-poly.c (new_scop): Use the new hash function names.
11105         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
11106         into original_pddrs.
11107         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
11108
11109 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11110
11111         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
11112         bounds with LT_EXPR to make niter analysis more precise on code
11113         generated by Graphite.
11114
11115 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
11116
11117         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
11118         (graphite_legal_transform_bb): Same.
11119         (poly_drs_may_alias_p): Same.
11120
11121 2009-08-28  Richard Guenther  <rguenther@suse.de>
11122
11123         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
11124
11125 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11126
11127         * config/i386/netware.c: Include langhooks.h.
11128         (i386_nlm_encode_section_info): Simplify.
11129         (netware_override_options): Delete.
11130         * config/i386/netware.h (netware_override_options): Delete
11131         declaration.
11132         (OVERRIDE_OPTIONS): Delete definition.
11133         (SUBTARGET_OVERRIDE_OPTIONS): Define.
11134         (ASM_COMMENT_START): Define.
11135         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
11136
11137 2009-08-28  Jan Beulich  <jbeulich@novell.com>
11138
11139         * configure.ac: For in-tree ld, do a plain version check to
11140         determine whether comdat groups are supported.
11141         * configure: Regenerate.
11142
11143 2009-08-28  Olivier Hainque  <hainque@adacore.com>
11144
11145         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
11146         always defined.  Reflect definition or absence of such for
11147         COLLECT_EXPORT_LIST.  Readability helper.
11148         (scanfilter): New enum, to help control what symbols
11149         are to be considered or ignored by scan_prog_file.
11150         (enum pass): Rename as "scanpass", moved together with scanfilter
11151         prior to scan_prog_file's prototype.
11152         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
11153         Group prototype with the scanpass/scanfilter definitions, factorize
11154         head comments for the several implementations at the prototype.
11155         (main): Reorganize the first pass link control to let AIX
11156         drag only the needed frame tables in executables.  Prevent
11157         frame tables collection during the scan aimed at static ctors.
11158         Pre-link and scan for frame tables later to compensate.
11159         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
11160         A C statement to issue assembly directives that create a reference
11161         to the given DWARF table identifier label from the current function
11162         section.
11163         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
11164         to differentiate first time section entry.  Only emit a .data
11165         tables start identifier label the first time around.
11166         (switch_to_frame_table_section): New function.  Helper for
11167         output_call_frame_info to switch possibly BACK into the eh_frame
11168         or the debug_frame section depending on FOR_EH.
11169         (output_call_frame_info): Use helper to first enter the proper
11170         frame section.
11171         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
11172         emit a link to the frame table start label from each function
11173         section.
11174         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
11175         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
11176         * config/rs6000/rs6000-protos.h: Declare it.
11177         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
11178
11179 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
11180
11181         * config/sh/sh.c (split_branches): Check the result of
11182         next_active_insn.
11183
11184 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
11185
11186         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
11187         using -pthread -fopenmp
11188
11189 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
11190
11191         * doc/service.texi (service directory): Update URL.
11192
11193 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
11194
11195         PR rtl-optimization/40861
11196         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
11197         extract word from a multi-word subreg for negative byte positions.
11198
11199 2009-08-27  Tristan Gingold  <gingold@adacore.com>
11200             Douglas B Rupp  <rupp@gnat.com>
11201
11202         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
11203         (SECTION_VMS_OVERLAY): Define.
11204         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
11205         attribute.
11206         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
11207         for common_object.
11208         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
11209         common_object declarations.
11210         (ia64_section_type_flags): Set section flag for common_object.
11211         * config/ia64/ia64-protos.h
11212         (ia64_vms_output_aligned_decl_common): Declare.
11213         (ia64_vms_elf_asm_named_section): Declare.
11214
11215 2009-08-27  Michael Matz  <matz@suse.de>
11216
11217         * expr.c (expand_expr_real_2): New function taking exploded
11218         unary or binary expression, split out from ...
11219         (expand_expr_real_1): ... here.  Move over all unary/binary
11220         switch parts to above function, in particular these codes:
11221         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
11222         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
11223         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
11224         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
11225         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
11226         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
11227         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
11228         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
11229         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
11230         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
11231         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
11232         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
11233         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
11234         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
11235         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
11236         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
11237         VEC_PACK_FIX_TRUNC_EXPR.
11238         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
11239         full expression.
11240
11241 2009-08-27  Richard Guenther  <rguenther@suse.de>
11242
11243         * gengtype.c (main): Handle uint64_t.
11244         * ipa-utils.c (get_base_var): Indent properly.
11245         * tree-ssa-live.c (debug_scope_block): New function.
11246         * tree-flow.h (debug_scope_block): Declare.
11247         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
11248         * basic-block.h (enum profile_status): Rename to
11249         enum profile_status_d.
11250         (x_profile_status): Adjust type.
11251
11252 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
11253
11254         PR debug/41170
11255         * dwarf2out.c (get_context_die): Declare this static function.
11256         (gen_type_die_with_usage): Make sure a DIE is a generated for
11257         the context of a typedef.
11258
11259 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
11260
11261         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
11262         switch.
11263
11264 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
11265
11266         * config/mips/mips-protos.h (mips_output_sync): Declare.
11267         (mips_sync_loop_insns): Likewise.
11268         (mips_output_sync_loop): Replace first two parameters with an rtx.
11269         * config/mips/mips.c (mips_multi_member): New structure.
11270         (mips_multi_members): New variable.
11271         (mips_multi_start): New function.
11272         (mips_multi_add): Likewise.
11273         (mips_multi_add_insn): Likewise.
11274         (mips_multi_add_label): Likewise.
11275         (mips_multi_last_index): Likewise.
11276         (mips_multi_copy_insn): Likewise.
11277         (mips_multi_set_operand): Likewise.
11278         (mips_multi_write): Likewise.
11279         (mips_print_operand_punctuation): Remove '%|' and '%-'.
11280         (mips_init_print_operand_punct): Update accordingly.
11281         (mips_start_ll_sc_sync_block): New function.
11282         (mips_end_ll_sc_sync_block): Likewise.
11283         (mips_output_sync): Likewise.
11284         (mips_sync_insn1_template): Likewise.
11285         (mips_sync_insn2_template): Likewise.
11286         (mips_get_sync_operand): Likewise.
11287         (mips_process_sync_loop): Likewise.
11288         (mips_output_sync_loop): Use mips_process_sync_loop.
11289         (mips_sync_loop_insns): New function.
11290         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
11291         (MIPS_COMPARE_AND_SWAP_12): Likewise.
11292         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
11293         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
11294         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
11295         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
11296         (MIPS_SYNC_OLD_OP_12): Likewise.
11297         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
11298         (MIPS_SYNC_NEW_OP_12): Likewise.
11299         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
11300         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
11301         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
11302         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
11303         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
11304         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
11305         * config/mips/mips.md (sync_mem): New attribute.
11306         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
11307         (sync_exclusive_mask, sync_required_oldval): Likewise.
11308         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
11309         (sync_release_barrier): Likewise.
11310         (length): Handle sync loops.
11311         (sync): Use mips_output_sync.
11312         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
11313         (sync_compare_and_swap<mode>): Set the new sync_* attributes
11314         and use mips_output_sync_loop.
11315         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
11316         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
11317         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
11318         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
11319         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
11320         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
11321         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
11322         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
11323         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
11324
11325 2009-08-26  Richard Guenther  <rguenther@suse.de>
11326
11327         PR middle-end/41163
11328         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
11329         the types to not match.
11330         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
11331         verification.
11332         * tree-ssa.c (useless_type_conversion_p): Conversions to
11333         pointers to unprototyped functions are useless.
11334
11335 2009-08-26  Richard Guenther  <rguenther@suse.de>
11336
11337         * tree-ssa-structalias.c (create_variable_info_for): Remove strange
11338         whole-program condition, prepare to be called for non-globals.
11339         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
11340         params build a representative with known type and track its fields.
11341
11342 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
11343
11344         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
11345         clearing by a taken branch.
11346         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
11347         effectively after bbro pass.
11348         (sync_nand<mode>): Ditto.
11349         (sync_old_<fetchop_name><mode>): Ditto.
11350         (sync_old_nand<mode>): Ditto.
11351         (sync_new_<fetchop_name><mode>): Dito.
11352         (sync_new_nand<mode>): Ditto.
11353         (sync_compare_and_swap<mode>_1): Ditto.
11354         (*sync_compare_and_swap<mode>): Ditto.
11355         (sync_lock_test_and_set<mode>_1): Ditto.
11356         ("sync_lock_test_and_set<mode>): Ditto.
11357
11358 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
11359
11360         * hwint.h (HOST_LONG_FORMAT): New macro
11361         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
11362         Use HOST_PTR_PRINTF.
11363         * system.h (HOST_PTR_PRINTF): Resurrect old macro
11364         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
11365         (HOST_PTR_PRINTF): Document.
11366
11367 2009-08-25 Jan Hubicka  <jh@suse.cz>
11368
11369         * config/i386/bmmintrin.h: Replace by #error.
11370
11371         Revert:
11372         Michael Meissner  <michael.meissner@amd.com>
11373         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
11374         Tony Linthicum  <tony.linthicum@amd.com>
11375
11376         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
11377         (TARGET_ROUND): New macro for the round/ptest instructions which
11378         are shared between SSE4.1 and SSE5.
11379         (OPTION_MASK_ISA_ROUND): Ditto.
11380         (OPTION_ISA_ROUND): Ditto.
11381         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
11382         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
11383
11384         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
11385         (-mfused-madd): New switch to give users control over whether the
11386         compiler optimizes to use the multiply/add SSE5 instructions.
11387
11388         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
11389         (ix86_handle_option): Turn off 3dnow if -msse5.
11390         (override_options): Add SSE5 support.
11391         (print_operand): %Y prints comparison codes for SSE5 com/pcom
11392         instructions.
11393         (ix86_expand_sse_movcc): Add SSE5 support.
11394         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
11395         vector type to the next largest size.
11396         (ix86_expand_sse5_pack): New function to use pperm to pack a
11397         vector type to the next smallest size.
11398         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
11399         (IX86_BUILTIN_FMADDSD): Ditto.
11400         (IX86_BUILTIN_FMADDPS): Ditto.
11401         (IX86_BUILTIN_FMADDPD): Ditto.
11402         (IX86_BUILTIN_FMSUBSS): Ditto.
11403         (IX86_BUILTIN_FMSUBSD): Ditto.
11404         (IX86_BUILTIN_FMSUBPS): Ditto.
11405         (IX86_BUILTIN_FMSUBPD): Ditto.
11406         (IX86_BUILTIN_FNMADDSS): Ditto.
11407         (IX86_BUILTIN_FNMADDSD): Ditto.
11408         (IX86_BUILTIN_FNMADDPS): Ditto.
11409         (IX86_BUILTIN_FNMADDPD): Ditto.
11410         (IX86_BUILTIN_FNMSUBSS): Ditto.
11411         (IX86_BUILTIN_FNMSUBSD): Ditto.
11412         (IX86_BUILTIN_FNMSUBPS): Ditto.
11413         (IX86_BUILTIN_FNMSUBPD): Ditto.
11414         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
11415         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
11416         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
11417         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
11418         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
11419         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
11420         (IX86_BUILTIN_PPERM): Ditto.
11421         (IX86_BUILTIN_PERMPS): Ditto.
11422         (IX86_BUILTIN_PERMPD): Ditto.
11423         (IX86_BUILTIN_PMACSSWW): Ditto.
11424         (IX86_BUILTIN_PMACSWW): Ditto.
11425         (IX86_BUILTIN_PMACSSWD): Ditto.
11426         (IX86_BUILTIN_PMACSWD): Ditto.
11427         (IX86_BUILTIN_PMACSSDD): Ditto.
11428         (IX86_BUILTIN_PMACSDD): Ditto.
11429         (IX86_BUILTIN_PMACSSDQL): Ditto.
11430         (IX86_BUILTIN_PMACSSDQH): Ditto.
11431         (IX86_BUILTIN_PMACSDQL): Ditto.
11432         (IX86_BUILTIN_PMACSDQH): Ditto.
11433         (IX86_BUILTIN_PMADCSSWD): Ditto.
11434         (IX86_BUILTIN_PMADCSWD): Ditto.
11435         (IX86_BUILTIN_PHADDBW): Ditto.
11436         (IX86_BUILTIN_PHADDBD): Ditto.
11437         (IX86_BUILTIN_PHADDBQ): Ditto.
11438         (IX86_BUILTIN_PHADDWD): Ditto.
11439         (IX86_BUILTIN_PHADDWQ): Ditto.
11440         (IX86_BUILTIN_PHADDDQ): Ditto.
11441         (IX86_BUILTIN_PHADDUBW): Ditto.
11442         (IX86_BUILTIN_PHADDUBD): Ditto.
11443         (IX86_BUILTIN_PHADDUBQ): Ditto.
11444         (IX86_BUILTIN_PHADDUWD): Ditto.
11445         (IX86_BUILTIN_PHADDUWQ): Ditto.
11446         (IX86_BUILTIN_PHADDUDQ): Ditto.
11447         (IX86_BUILTIN_PHSUBBW): Ditto.
11448         (IX86_BUILTIN_PHSUBWD): Ditto.
11449         (IX86_BUILTIN_PHSUBDQ): Ditto.
11450         (IX86_BUILTIN_PROTB): Ditto.
11451         (IX86_BUILTIN_PROTW): Ditto.
11452         (IX86_BUILTIN_PROTD): Ditto.
11453         (IX86_BUILTIN_PROTQ): Ditto.
11454         (IX86_BUILTIN_PROTB_IMM): Ditto.
11455         (IX86_BUILTIN_PROTW_IMM): Ditto.
11456         (IX86_BUILTIN_PROTD_IMM): Ditto.
11457         (IX86_BUILTIN_PROTQ_IMM): Ditto.
11458         (IX86_BUILTIN_PSHLB): Ditto.
11459         (IX86_BUILTIN_PSHLW): Ditto.
11460         (IX86_BUILTIN_PSHLD): Ditto.
11461         (IX86_BUILTIN_PSHLQ): Ditto.
11462         (IX86_BUILTIN_PSHAB): Ditto.
11463         (IX86_BUILTIN_PSHAW): Ditto.
11464         (IX86_BUILTIN_PSHAD): Ditto.
11465         (IX86_BUILTIN_PSHAQ): Ditto.
11466         (IX86_BUILTIN_FRCZSS): Ditto.
11467         (IX86_BUILTIN_FRCZSD): Ditto.
11468         (IX86_BUILTIN_FRCZPS): Ditto.
11469         (IX86_BUILTIN_FRCZPD): Ditto.
11470         (IX86_BUILTIN_CVTPH2PS): Ditto.
11471         (IX86_BUILTIN_CVTPS2PH): Ditto.
11472         (IX86_BUILTIN_COMEQSS): Ditto.
11473         (IX86_BUILTIN_COMNESS): Ditto.
11474         (IX86_BUILTIN_COMLTSS): Ditto.
11475         (IX86_BUILTIN_COMLESS): Ditto.
11476         (IX86_BUILTIN_COMGTSS): Ditto.
11477         (IX86_BUILTIN_COMGESS): Ditto.
11478         (IX86_BUILTIN_COMUEQSS): Ditto.
11479         (IX86_BUILTIN_COMUNESS): Ditto.
11480         (IX86_BUILTIN_COMULTSS): Ditto.
11481         (IX86_BUILTIN_COMULESS): Ditto.
11482         (IX86_BUILTIN_COMUGTSS): Ditto.
11483         (IX86_BUILTIN_COMUGESS): Ditto.
11484         (IX86_BUILTIN_COMORDSS): Ditto.
11485         (IX86_BUILTIN_COMUNORDSS): Ditto.
11486         (IX86_BUILTIN_COMFALSESS): Ditto.
11487         (IX86_BUILTIN_COMTRUESS): Ditto.
11488         (IX86_BUILTIN_COMEQSD): Ditto.
11489         (IX86_BUILTIN_COMNESD): Ditto.
11490         (IX86_BUILTIN_COMLTSD): Ditto.
11491         (IX86_BUILTIN_COMLESD): Ditto.
11492         (IX86_BUILTIN_COMGTSD): Ditto.
11493         (IX86_BUILTIN_COMGESD): Ditto.
11494         (IX86_BUILTIN_COMUEQSD): Ditto.
11495         (IX86_BUILTIN_COMUNESD): Ditto.
11496         (IX86_BUILTIN_COMULTSD): Ditto.
11497         (IX86_BUILTIN_COMULESD): Ditto.
11498         (IX86_BUILTIN_COMUGTSD): Ditto.
11499         (IX86_BUILTIN_COMUGESD): Ditto.
11500         (IX86_BUILTIN_COMORDSD): Ditto.
11501         (IX86_BUILTIN_COMUNORDSD): Ditto.
11502         (IX86_BUILTIN_COMFALSESD): Ditto.
11503         (IX86_BUILTIN_COMTRUESD): Ditto.
11504         (IX86_BUILTIN_COMEQPS): Ditto.
11505         (IX86_BUILTIN_COMNEPS): Ditto.
11506         (IX86_BUILTIN_COMLTPS): Ditto.
11507         (IX86_BUILTIN_COMLEPS): Ditto.
11508         (IX86_BUILTIN_COMGTPS): Ditto.
11509         (IX86_BUILTIN_COMGEPS): Ditto.
11510         (IX86_BUILTIN_COMUEQPS): Ditto.
11511         (IX86_BUILTIN_COMUNEPS): Ditto.
11512         (IX86_BUILTIN_COMULTPS): Ditto.
11513         (IX86_BUILTIN_COMULEPS): Ditto.
11514         (IX86_BUILTIN_COMUGTPS): Ditto.
11515         (IX86_BUILTIN_COMUGEPS): Ditto.
11516         (IX86_BUILTIN_COMORDPS): Ditto.
11517         (IX86_BUILTIN_COMUNORDPS): Ditto.
11518         (IX86_BUILTIN_COMFALSEPS): Ditto.
11519         (IX86_BUILTIN_COMTRUEPS): Ditto.
11520         (IX86_BUILTIN_COMEQPD): Ditto.
11521         (IX86_BUILTIN_COMNEPD): Ditto.
11522         (IX86_BUILTIN_COMLTPD): Ditto.
11523         (IX86_BUILTIN_COMLEPD): Ditto.
11524         (IX86_BUILTIN_COMGTPD): Ditto.
11525         (IX86_BUILTIN_COMGEPD): Ditto.
11526         (IX86_BUILTIN_COMUEQPD): Ditto.
11527         (IX86_BUILTIN_COMUNEPD): Ditto.
11528         (IX86_BUILTIN_COMULTPD): Ditto.
11529         (IX86_BUILTIN_COMULEPD): Ditto.
11530         (IX86_BUILTIN_COMUGTPD): Ditto.
11531         (IX86_BUILTIN_COMUGEPD): Ditto.
11532         (IX86_BUILTIN_COMORDPD): Ditto.
11533         (IX86_BUILTIN_COMUNORDPD): Ditto.
11534         (IX86_BUILTIN_COMFALSEPD): Ditto.
11535         (IX86_BUILTIN_COMTRUEPD): Ditto.
11536         (IX86_BUILTIN_PCOMEQUB): Ditto.
11537         (IX86_BUILTIN_PCOMNEUB): Ditto.
11538         (IX86_BUILTIN_PCOMLTUB): Ditto.
11539         (IX86_BUILTIN_PCOMLEUB): Ditto.
11540         (IX86_BUILTIN_PCOMGTUB): Ditto.
11541         (IX86_BUILTIN_PCOMGEUB): Ditto.
11542         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
11543         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
11544         (IX86_BUILTIN_PCOMEQUW): Ditto.
11545         (IX86_BUILTIN_PCOMNEUW): Ditto.
11546         (IX86_BUILTIN_PCOMLTUW): Ditto.
11547         (IX86_BUILTIN_PCOMLEUW): Ditto.
11548         (IX86_BUILTIN_PCOMGTUW): Ditto.
11549         (IX86_BUILTIN_PCOMGEUW): Ditto.
11550         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
11551         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
11552         (IX86_BUILTIN_PCOMEQUD): Ditto.
11553         (IX86_BUILTIN_PCOMNEUD): Ditto.
11554         (IX86_BUILTIN_PCOMLTUD): Ditto.
11555         (IX86_BUILTIN_PCOMLEUD): Ditto.
11556         (IX86_BUILTIN_PCOMGTUD): Ditto.
11557         (IX86_BUILTIN_PCOMGEUD): Ditto.
11558         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
11559         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
11560         (IX86_BUILTIN_PCOMEQUQ): Ditto.
11561         (IX86_BUILTIN_PCOMNEUQ): Ditto.
11562         (IX86_BUILTIN_PCOMLTUQ): Ditto.
11563         (IX86_BUILTIN_PCOMLEUQ): Ditto.
11564         (IX86_BUILTIN_PCOMGTUQ): Ditto.
11565         (IX86_BUILTIN_PCOMGEUQ): Ditto.
11566         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
11567         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
11568         (IX86_BUILTIN_PCOMEQB): Ditto.
11569         (IX86_BUILTIN_PCOMNEB): Ditto.
11570         (IX86_BUILTIN_PCOMLTB): Ditto.
11571         (IX86_BUILTIN_PCOMLEB): Ditto.
11572         (IX86_BUILTIN_PCOMGTB): Ditto.
11573         (IX86_BUILTIN_PCOMGEB): Ditto.
11574         (IX86_BUILTIN_PCOMFALSEB): Ditto.
11575         (IX86_BUILTIN_PCOMTRUEB): Ditto.
11576         (IX86_BUILTIN_PCOMEQW): Ditto.
11577         (IX86_BUILTIN_PCOMNEW): Ditto.
11578         (IX86_BUILTIN_PCOMLTW): Ditto.
11579         (IX86_BUILTIN_PCOMLEW): Ditto.
11580         (IX86_BUILTIN_PCOMGTW): Ditto.
11581         (IX86_BUILTIN_PCOMGEW): Ditto.
11582         (IX86_BUILTIN_PCOMFALSEW): Ditto.
11583         (IX86_BUILTIN_PCOMTRUEW): Ditto.
11584         (IX86_BUILTIN_PCOMEQD): Ditto.
11585         (IX86_BUILTIN_PCOMNED): Ditto.
11586         (IX86_BUILTIN_PCOMLTD): Ditto.
11587         (IX86_BUILTIN_PCOMLED): Ditto.
11588         (IX86_BUILTIN_PCOMGTD): Ditto.
11589         (IX86_BUILTIN_PCOMGED): Ditto.
11590         (IX86_BUILTIN_PCOMFALSED): Ditto.
11591         (IX86_BUILTIN_PCOMTRUED): Ditto.
11592         (IX86_BUILTIN_PCOMEQQ): Ditto.
11593         (IX86_BUILTIN_PCOMNEQ): Ditto.
11594         (IX86_BUILTIN_PCOMLTQ): Ditto.
11595         (IX86_BUILTIN_PCOMLEQ): Ditto.
11596         (IX86_BUILTIN_PCOMGTQ): Ditto.
11597         (IX86_BUILTIN_PCOMGEQ): Ditto.
11598         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
11599         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
11600         (enum multi_arg_type): New enum for describing the various SSE5
11601         intrinsic argument types.
11602         (bdesc_multi_arg): New table for SSE5 intrinsics.
11603         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
11604         (ix86_expand_multi_arg_builtin): New function for creating SSE5
11605         intrinsics.
11606         (ix86_expand_builtin): Add SSE5 intrinsic support.
11607         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
11608         operand instructions.
11609         (ix86_expand_sse5_multiple_memory): New function to split the
11610         second memory reference from SSE5 instructions.
11611         (type_has_variadic_args_p): Delete in favor of stdarg_p.
11612         (ix86_return_pops_args): Use stdarg_p to determine if the function
11613         has variable arguments.
11614         (ix86_setup_incoming_varargs): Ditto.
11615         (x86_this_parameter): Ditto.
11616
11617         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
11618         declaration.
11619         (ix86_expand_sse5_pack): Ditto.
11620         (ix86_sse5_valid_op_p): Ditto.
11621         (ix86_expand_sse5_multiple_memory): Ditto.
11622
11623         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
11624         constant for SSE5 support.
11625         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
11626         (UNSPEC_SSE5_TRUEFALSE): Ditto.
11627         (UNSPEC_SSE5_PERMUTE): Ditto.
11628         (UNSPEC_SSE5_ASHIFT): Ditto.
11629         (UNSPEC_SSE5_LSHIFT): Ditto.
11630         (UNSPEC_FRCZ): Ditto.
11631         (UNSPEC_CVTPH2PS): Ditto.
11632         (UNSPEC_CVTPS2PH): Ditto.
11633         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
11634         (PCOM_TRUE): Ditto.
11635         (COM_FALSE_S): Ditto.
11636         (COM_FALSE_P): Ditto.
11637         (COM_TRUE_S): Ditto.
11638         (COM_TRUE_P): Ditto.
11639         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
11640         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
11641         types.
11642         (memory attribute): Ditto.
11643         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11644         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
11645         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
11646         (floor<mode>2): Ditto.
11647         (ceil<mode>2): Ditto.
11648         (btrunc<mode>2): Ditto.
11649         (nearbyintdf2): Ditto.
11650         (nearbyintsf2): Ditto.
11651         (sse_setccsf): Disable if SSE5.
11652         (sse_setccdf): Ditto.
11653         (sse5_setcc<mode>): New support for SSE5 conditional move.
11654         (sse5_pcmov_<mode>): Ditto.
11655
11656         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
11657         (SSEMODEF4): Ditto.
11658         (SSEMODEF2P): Ditto.
11659         (ssemodesuffixf4): New mode attribute for SSE5.
11660         (ssemodesuffixf2s): Ditto.
11661         (ssemodesuffixf2c): Ditto.
11662         (sserotatemax): Ditto.
11663         (ssescalarmode): Ditto.
11664         (sse_maskcmpv4sf3): Disable if SSE5.
11665         (sse_maskcmpv2df3): Ditto.
11666         (sse_vmmaskcmpv4sf3): Ditto.
11667         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
11668         (sse5_vmfmadd<mode>4): Ditto.
11669         (sse5_fmsub<mode>4): Ditto.
11670         (sse5_vmfmsub<mode>4): Ditto.
11671         (sse5_fnmadd<mode>4): Ditto.
11672         (sse5_vmfnmadd<mode>4): Ditto.
11673         (sse5_fnmsub<mode>4): Ditto.
11674         (sse5_vmfnmsub<mode>4): Ditto.
11675         (sse5i_fmadd<mode>4): Ditto.
11676         (sse5i_fmsub<mode>4): Ditto.
11677         (sse5i_fnmadd<mode>4): Ditto.
11678         (sse5i_fnmsub<mode>4): Ditto.
11679         (sse5i_vmfmadd<mode>4): Ditto.
11680         (sse5i_vmfmsub<mode>4): Ditto.
11681         (sse5i_vmfnmadd<mode>4): Ditto.
11682         (sse5i_vmfnmsub<mode>4): Ditto.
11683         (mulv16qi3): Add SSE5 support.
11684         (mulv4si3): Ditto.
11685         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
11686         (sse2_mulv4si3): Disable if SSE5.
11687         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
11688         (sse4_1_roundps): Ditto.
11689         (sse4_1_roundsd): Ditto.
11690         (sse4_1_roundss): Ditto.
11691         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
11692         be generated.
11693         (sse_maskcmpsf3): Ditto.
11694         (sse_vmmaskcmpv4sf3): Ditto.
11695         (sse2_maskcmpv2df3): Ditto.
11696         (sse2_maskcmpdf3): Ditto.
11697         (sse2_vmmaskcmpv2df3): Ditto.
11698         (sse2_eq<mode>3): Ditto.
11699         (sse2_gt<mode>3): Ditto.
11700         (sse5_pcmov_<mode>): Add SSE5 support.
11701         (vec_unpacku_hi_v16qi): Ditto.
11702         (vec_unpacks_hi_v16qi): Ditto.
11703         (vec_unpacku_lo_v16qi): Ditto.
11704         (vec_unpacks_lo_v16qi): Ditto.
11705         (vec_unpacku_hi_v8hi): Ditto.
11706         (vec_unpacks_hi_v8hi): Ditto.
11707         (vec_unpacku_lo_v8hi): Ditto.
11708         (vec_unpacks_lo_v8hi): Ditto.
11709         (vec_unpacku_hi_v4si): Ditto.
11710         (vec_unpacks_hi_v4si): Ditto.
11711         (vec_unpacku_lo_v4si): Ditto.
11712         (vec_unpacks_lo_v4si): Ditto.
11713         (sse5_pmacsww): New SSE5 intrinsic insn.
11714         (sse5_pmacssww): Ditto.
11715         (sse5_pmacsdd): Ditto.
11716         (sse5_pmacssdd): Ditto.
11717         (sse5_pmacssdql): Ditto.
11718         (sse5_pmacssdqh): Ditto.
11719         (sse5_pmacsdqh): Ditto.
11720         (sse5_pmacsswd): Ditto.
11721         (sse5_pmacswd): Ditto.
11722         (sse5_pmadcsswd): Ditto.
11723         (sse5_pmadcswd): Ditto.
11724         (sse5_pcmov_<move>): Conditional move support on SSE5.
11725         (sse5_phaddbw): New SSE5 intrinsic insn.
11726         (sse5_phaddbd): Ditto.
11727         (sse5_phaddbq): Ditto.
11728         (sse5_phaddwd): Ditto.
11729         (sse5_phaddwq): Ditto.
11730         (sse5_phadddq): Ditto.
11731         (sse5_phaddubw): Ditto.
11732         (sse5_phaddubd): Ditto.
11733         (sse5_phaddubq): Ditto.
11734         (sse5_phadduwd): Ditto.
11735         (sse5_phadduwq): Ditto.
11736         (sse5_phaddudq): Ditto.
11737         (sse5_phsubbw): Ditto.
11738         (sse5_phsubwd): Ditto.
11739         (sse5_phsubdq): Ditto.
11740         (sse5_pperm): Ditto.
11741         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
11742         (sse5_pperm_zero_v16qi_v8hi): Ditto.
11743         (sse5_pperm_sign_v8hi_v4si): Ditto.
11744         (sse5_pperm_zero_v8hi_v4si): Ditto.
11745         (sse5_pperm_sign_v4si_v2di): Ditto.
11746         (sse5_pperm_sign_v4si_v2di): Ditto.
11747         (sse5_pperm_pack_v2di_v4si): Ditto.
11748         (sse5_pperm_pack_v4si_v8hi): Ditto.
11749         (sse5_pperm_pack_v8hi_v16qi): Ditto.
11750         (sse5_perm<mode>): New SSE5 intrinsic insn.
11751         (rotl<mode>3): Ditto.
11752         (sse5_rotl<mode>3): Ditto.
11753         (sse5_ashl<mode>3): Ditto.
11754         (sse5_lshl<mode>3): Ditto.
11755         (sse5_frcz<mode>2): Ditto.
11756         (sse5s_frcz<mode>2): Ditto.
11757         (sse5_cvtph2ps): Ditto.
11758         (sse5_cvtps2ph): Ditto.
11759         (sse5_vmmaskcmp<mode>3): Ditto.
11760         (sse5_com_tf<mode>3): Ditto.
11761         (sse5_maskcmp<mode>3): Ditto.
11762         (sse5_maskcmp_uns<mode>3): Ditto.
11763         (sse5_maskcmp_uns2<mode>3): Ditto.
11764         (sse5_pcom_tf<mode>3): Ditto.
11765
11766         * config/i386/predicates.md (sse5_comparison_float_operator):
11767         New predicate to match the comparison operators supported by
11768         the SSE5 com instruction.
11769         (ix86_comparison_int_operator): New predicate to match just the
11770         signed int comparisons.
11771         (ix86_comparison_uns_operator): New predicate to match just the
11772         unsigned int comparisons.
11773
11774         * doc/invoke.texi (-msse5): Add documentation.
11775         (-mfused-madd): Ditto.
11776
11777         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
11778
11779         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
11780         mmintrin-common.h.
11781         (x86_64-*-*): Ditto.
11782
11783         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
11784
11785         * config/i386/bmmintrin.h: New file, provide common x86 compiler
11786         intrinisics for SSE5.
11787
11788         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
11789         mmintrin-common.h.
11790
11791         * config/i386/mmintrin-common.h: New file, to contain common
11792         instructions between SSE4.1 and SSE5.
11793
11794         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
11795         FOREACH_FUNCTION_ARGS to iterate over the argument list.
11796         (gen_regparm_prefix): Ditto.
11797
11798         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
11799         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
11800         prototype_p to determine if a function is prototyped.
11801
11802 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
11803
11804         * c-common.c (c_common_reswords) add the alignof keyword,
11805         with same RID as __alignof and __alignof__
11806
11807 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
11808
11809         * hooks.h (hook_bool_const_int_const_int_true): Declare.
11810         * hooks.c (hook_bool_const_int_const_int_true): New function.
11811         * target.h (struct gcc_target): Add can_eliminate field.
11812         * target-def.h (TARGET_CAN_ELIMINATE): Define.
11813         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
11814         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
11815         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
11816         (elim_table): Revise comment.
11817         * system.h (CAN_ELIMINATE): Poison.
11818         * defaults.h (CAN_ELIMINATE): Remove.
11819         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
11820
11821         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
11822         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
11823         Define macro.
11824         (alpha_vms_can_eliminate): Declare as static, change return type to
11825         bool.
11826         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
11827
11828         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
11829         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
11830         (arm_can_eliminate): New function.
11831
11832         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
11833         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
11834         (avr_can_eliminate): Declare as static.
11835         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
11836
11837         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
11838         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
11839         (bfin_can_eliminate): New function.
11840
11841         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
11842         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
11843         (crx_can_eliminate): New function.
11844
11845         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
11846         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
11847         (fr30_can_eliminate): New function.
11848
11849         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
11850         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
11851         (frv_can_eliminate): New function.
11852
11853         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
11854         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
11855         (h8300_can_eliminate): New function.
11856
11857         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
11858         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
11859         (i386_can_eliminate): Declare as static, change return type to bool.
11860         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
11861
11862         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
11863         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
11864         (ia64_can_eliminate): New function.
11865
11866         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
11867         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
11868         (iq2000_can_eliminate): New function.
11869
11870         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
11871         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
11872         (m32r_can_eliminate): New function.
11873
11874         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
11875         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
11876         (m68hc11_can_eliminate): New function.
11877
11878         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
11879         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
11880         (m68k_can_eliminate): New function.
11881
11882         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
11883         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
11884         (mep_can_eliminate): New function.
11885
11886         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
11887         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
11888         (mips_can_eliminate): New function.
11889
11890         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
11891         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
11892         (rs6000_can_eliminate): New function.
11893
11894         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
11895         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
11896         (s390_can_eliminate): Declare as static.
11897         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
11898
11899         * config/score/score.h (CAN_ELIMINATE): Remove macro.
11900         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
11901         (score_can_eliminate): New function.
11902
11903         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
11904         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
11905         (sparc_can_eliminate): Declare as static.
11906         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
11907
11908         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
11909         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
11910         (xstormy16_can_eliminate): New function.
11911
11912         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
11913         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
11914         (v850_can_eliminate): New function.
11915
11916 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
11917
11918         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
11919         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
11920         (*movdfcc_ext[1234]): Disable for IEEE mode.
11921
11922 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
11923
11924         * gimplify.c (prepare_gimple_addressable): New static function.
11925         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
11926         it addressable.
11927         (gimplify_addr_expr): Invoke it similarly on the operand instead of
11928         manually fiddling with it.
11929
11930 2009-08-25  Michael Matz  <matz@suse.de>
11931
11932         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
11933         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
11934         full expression.
11935         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
11936         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
11937         (do_jump): Split out code for simple binary comparisons into ...
11938         (do_jump_1): ... this, taking the individual operands and code.
11939         Change callers to helper function above accordingly.
11940         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
11941         comparisons.
11942
11943 2009-08-25  Michael Matz  <matz@suse.de>
11944
11945         * expr.h (struct separate_ops, sepops): New type for passing
11946         around an exploded simple expression.
11947         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
11948         Use this structure instead of expression tree.
11949         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
11950         expression, only its type.
11951         (expand_vec_cond_expr): Take type and individual operands instead
11952         of full expression.
11953         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
11954         expand_vec_shift_expr): Change prototype accordingly.
11955         * tree-vect-stmts.c (vectorizable_condition): Change call of
11956         expand_vec_cond_expr_p to pass only type.
11957         * expr.c (do_store_flags): Change prototype and implementation
11958         to take an exploded expression.
11959         (expand_expr_real_1): New local ops initialized with details
11960         of the full expression.  Use it instead of full
11961         expression in calls to do_store_flags, expand_vec_cond_expr,
11962         expand_widen_pattern_expr and expand_vec_shift_expr.
11963
11964 2009-08-25  Michael Matz  <matz@suse.de>
11965
11966         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
11967         treeop2 initialized with first three operands of the full expression.
11968         Substitute all TREE_OPERAND (exp, [012]) calls with them.
11969
11970 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
11971
11972         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
11973         (__gthread_objc_condition_allocate): Mark arguments as unused.
11974         (__gthread_objc_condition_deallocate): Likewise.
11975         (__gthread_objc_condition_wait): Likewise.
11976         (__gthread_objc_condition_broadcast): Likewise.
11977         (__gthread_objc_condition_signal): Likewise.
11978         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
11979         (__gthread_objc_thread_id): Likewise.
11980
11981 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
11982
11983         PR middle-end/41149
11984         * tree-pretty-print.c (print_call_name): Print the correct call name
11985         for procedure pointer components.
11986
11987 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
11988
11989         * config/ia64/ia64.c (ia64_promote_function_mode): Call
11990         default_promote_function_mode when not VMS.
11991
11992 2009-08-24  Olivier Hainque  <hainque@adacore.com>
11993
11994         * convert.c (convert_to_integer): Don't assume an input pointer is
11995         POINTER_SIZE wide.  Fetch from the type instead.
11996
11997 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11998
11999         * configure.ac (AC_PREREQ): Bump to 2.64.
12000
12001 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
12002
12003         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
12004         (process_command): Don't search standard_exec_prefix_1 and
12005         standard_exec_prefix_2.
12006
12007 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12008
12009         * config/arm/arm.c (output_return_instruction): Handle for
12010         unified syntax.
12011
12012 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12013
12014         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
12015
12016 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12017
12018         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
12019         (*arm_movdf_vfp): Likewise.
12020
12021 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12022
12023         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
12024         (vashr<mode>3): Rename from ashr<mode>3.
12025         (vlshr<mode>3): Rename from lshr<mode>3.
12026
12027 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
12028
12029         PR/40786
12030         * c-format.c (format_wanted_type): Add new member scalar_identity_flag.
12031         (check_format_info_main): Use scalar_identify_flag.
12032         (check_format_types): Check for scalar size identity if
12033         scalar_identify_flag is set.
12034         (printf_length_specs): Extend by new field.
12035         (asm_fprintf_length_specs): Likewise.
12036         (gcc_diag_length_specs): Likewise.
12037         (scanf_length_specs): Likewise.
12038         (strfmon_length_specs): Likewise.
12039         (gcc_gfc_length_specs): Likewise.
12040         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
12041         (ms_printf_flag_specs): Likewise.
12042         * c-format.h (format_length_info): Add new member scalar_identity_flag.
12043
12044 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
12045
12046         PR target/40718
12047         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
12048         (*call_value_pop_1): Ditto.
12049         (*sibcall_pop_1): New insn pattern.
12050         (*sibcall_value_pop_1): Ditto.
12051
12052 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12053
12054         PR target/41081
12055         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
12056         ashrsi3_64): New.
12057
12058 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
12059
12060         PR target/41081
12061         * fwprop.c (try_fwprop_subst): Allow multiple sets.
12062         (get_reg_use_in): New function.
12063         (forward_propagate_subreg): Propagate through subreg of zero_extend
12064         or sign_extend.
12065
12066 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
12067
12068         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
12069         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
12070
12071 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12072
12073         * configure.ac: Remove --with-datarootdir, --with-docdir,
12074         --with-htmldir switches.  No need to call AC_SUBST for
12075         datarootdir, docdir, htmldir any more.
12076         * configure: Regenerate.
12077         * doc/install.texi (Configuration): Document --datarootdir,
12078         --docdir, --htmldir, --pdfdir; update documentation for
12079         --infodir, --mandir.
12080         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
12081         M4 to 1.4.6.
12082
12083         * aclocal.m4: Regenerate.
12084         * config.in: Regenerate.
12085         * configure: Regenerate.
12086
12087 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
12088             Olivier Hainque  <hainque@adacore.com>
12089
12090         * config/ia64/ia64.c: Include libfuncs.h.
12091         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
12092         (ia64_expand_call): Use reg 25 on VMS.
12093         (ia64_initialize_trampoline): Fix for VMS ABI.
12094         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
12095         (ia64_function_arg): Initialize reg 25 on VMS.
12096         Fix OpenVMS ABI issues for varargs.
12097         For OpenVMS, emit the Argument Information register set in the
12098         incoming/sibcall case as well.
12099         (ia64_arg_type): New function.
12100         (ia64_function_arg_advance): Keep track of cum->words.
12101         Fix OpenVMS ABI issues for varargs.
12102         (ia64_function_value): On VMS, promote mode of non-aggregate types.
12103         (ia64_override_options): Set flag_no_common on VMS.
12104         (ia64_init_builtins): Disable FWRITE builtin.
12105         (ia64_asm_output_external): Call DO_CRTL_NAMES.
12106         (ia64_vms_init_libfuncs): Add decc$ routines.
12107         (ia64_vms_valid_pointer_mode): New function.
12108         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
12109         (ia64_promote_function_mode): New function
12110         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
12111         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
12112         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
12113         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
12114         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
12115         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
12116         Suppress trailing '#' if VALUE is numeric.
12117         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
12118         ia64_promote_function_mode.
12119         (TARGET_VALID_POINTER_MODE): Define.
12120
12121 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
12122
12123         PR target/40671
12124         * config/rs6000/rs6000.c (rs6000_override_options): Use
12125         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
12126
12127         PR target/41145
12128         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
12129         reporting of vector + decimal/boolean/complex error.
12130
12131 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
12132
12133         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
12134         __vector double TYPE_DECL.
12135
12136 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
12137
12138         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
12139         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
12140         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
12141         to pointer to enum machine_mode.  Update all callers as needed.
12142
12143 2009-08-21  Uros Bizjak  <ubizjak@gmail.com>
12144
12145         * config/alpha/alpha.md (exception_receiver): Emit alternative
12146         GP load sequence if flag_reorder_blocks_and_partition is set.
12147         (*exception_receiver_2): Also enable when
12148         flag_reorder_blocks_and_partition is set.
12149
12150 2009-08-20  Matt Rice  <ratmice@gmail.com>
12151             Diego Novillo  <dnovillo@google.com>
12152
12153         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
12154         tree-ssa-sccvn.h.
12155
12156 2009-08-20  Richard Guenther  <rguenther@suse.de>
12157
12158         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
12159         * c-tree.h (c_dup_lang_specific_decl): Remove.
12160         (struct lang_decl, struct lang_type): Move definitions ...
12161         * c-lang.h: ... here.  New file.
12162         * c-decl.c: Include c-lang.h.
12163         (c_dup_lang_specific_decl): Remove.
12164         * c-typeck.c: Include c-lang.h.
12165         * Makefile.in (c-decl.o): Add c-lang.h dependency.
12166         (c-typeck.o): Likewise.
12167         * c-config-lang.in (gtfiles): Add c-lang.h.
12168         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
12169         like c-tree.h.
12170
12171 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
12172
12173         * config/alpha/alpha.c (alpha_end_function): Do not clear
12174         crtl->emit structure and free insn locators if cfun->is_thunk is true,
12175         this is now handled in generic code.
12176
12177 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12178
12179         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
12180         (s390_z10_fix_long_loop_prediction): New function.
12181         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
12182         (s390_reorg): Walk over the INSNs and invoke
12183         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
12184
12185 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
12186
12187         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
12188         "*brx_64bit", "*brx_31bit"): New patterns.
12189         * config/s390/s390.c ('E'): New output modifier.
12190
12191 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
12192             Richard Earnshaw  <richard.earnshaw@arm.com>
12193
12194         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
12195         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
12196
12197 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12198
12199         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
12200         patterns.
12201         * pa.c (emit_move_sequence): Check if address of operand1 is valid
12202         for mode mode of operand0 when doing secondary reload for SAR.
12203
12204 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12205
12206         PR middle-end/41123
12207         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
12208         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
12209
12210 2009-08-19  Jason Merrill  <jason@redhat.com>
12211
12212         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
12213         supported template depth in C++0x.
12214
12215 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
12216
12217         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
12218         free_after_compilation.
12219         * config/score/score7.c (score7_output_mi_thunk): Likewise.
12220         * config/score/score3.c (score3_output_mi_thunk): Likewise.
12221         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
12222         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
12223         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
12224         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
12225         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
12226
12227 2009-08-19  Ian Lance Taylor  <iant@google.com>
12228
12229         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
12230         of (plus (mult (neg B) C) A).
12231
12232 2009-08-18  Michael Matz  <matz@suse.de>
12233
12234         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
12235         instead of comparing TYPE_MAIN_VARIANT for equality.
12236         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
12237         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
12238         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
12239         * gimplify.c (goa_lhs_expr_p): Ditto and use
12240         STRIP_USELESS_TYPE_CONVERSION.
12241
12242 2009-08-18  Michael Matz  <matz@suse.de>
12243
12244         * tree-ssa-structalias.c (create_variable_info_for): Also mark
12245         first field in a struct.
12246         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
12247
12248 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
12249
12250         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
12251         locators before emit_insn is called.  Remove assert that
12252         cfun->is_thunk.
12253         (alpha_end_function): Clear crtl->emit structure and free insn
12254         locators if cfun->is_thunk is true.
12255
12256 2009-08-18  Jason Merrill  <jason@redhat.com>
12257
12258         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
12259         type if available.
12260         * configure.ac: Test for it.
12261         * configure, config.in: Regenerate.
12262         * doc/install.texi: Document --enable-gnu-unique-object.
12263
12264 2009-08-18  Richard Guenther  <rguenther@suse.de>
12265
12266         PR middle-end/41094
12267         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
12268         pow(x,y*z) only if x is nonnegative.
12269
12270 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
12271
12272         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
12273         on jumps.
12274
12275         PR target/40971
12276         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
12277         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
12278
12279 2009-08-17  DJ Delorie  <dj@redhat.com>
12280
12281         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
12282         * config/m32c/prologue.md (epilogue_freit): New.
12283         (fset_b): New.
12284         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
12285         (bank_switch_p): Likewise.
12286         (fast_interrupt_p): Likewise.
12287         (interrupt_p): Likewise.
12288         (m32c_conditional_register_usage): Round memregs size up.
12289         (need_to_save): We only need to save $a0 when we use ENTER.
12290         (interrupt_p): Check for fast_interrupt too.
12291         (bank_switch_p): New.
12292         (fast_interrupt_p): New.
12293         (m32c_attribute_table): Add bank_switch and fast_interrupt.
12294         (m32c_emit_prolog): Support bank switching and fast interrupts.
12295         * doc/extend.texi (Function Attributes): Add bank_switch and
12296         fast_interrupt.
12297
12298 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
12299
12300         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
12301         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
12302
12303 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
12304
12305         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
12306         (menu): Add IA-64/VMS Options.
12307         (IA-64/VMS Options): Likewise.
12308
12309 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12310
12311         PR target/38599
12312         * config/mips/mips.md (*lwxs): Use :P for pointer values.
12313
12314 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
12315
12316         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
12317         (mips_pop_asm_switch): Likewise.
12318         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
12319         with...
12320         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12321         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
12322         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
12323         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
12324         instead of set_noreorder.
12325         (mips_output_function_prologue): Use the new functions.
12326         (mips_output_function_epilogue): Likewise.
12327         (mips_need_noat_wrapper_p): New function, split out from...
12328         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
12329         Use mips_push_asm_switch and mips_pop_asm_switch.
12330         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
12331         and mips_pop_asm_switch.
12332         (ASM_OUTPUT_REG_POP): Likewise.
12333         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
12334         Use mips_pop_asm_switch.
12335         (mips_asm_switch): New structure.
12336         (set_noreorder, set_nomacro): Replace with...
12337         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
12338         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
12339         instead of set_nomacro.
12340         (fix_truncsfsi2_macro): Likewise.
12341         (cprestore): Likewise.
12342         (hazard): Use mips_noreorder instead of set_noreorder.
12343         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
12344
12345 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
12346
12347         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
12348         from prev_active_insn.
12349
12350 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
12351
12352         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
12353         * config/avr/avr.c (avr_override_options): Initialize
12354         avr_current_arch variable.
12355         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
12356         __AVR_HAVE_16BIT_SP__ according to the device type.
12357         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
12358         TARGET_TINY_STACK.
12359         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
12360         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
12361
12362 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
12363
12364         PR debug/37801
12365         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
12366         generating inlined subroutine die only. We shouldn't be
12367         called for anything else.
12368         (gen_block_die): Don't generate inline subroutine debug info for
12369         abstract blocks.
12370
12371 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12372
12373         * graphite-poly.c (print_pbb): Print PBB index.
12374
12375 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
12376
12377         PR middle-end/40981
12378         * graphite-interchange.c (ppl_max_for_le): Moved...
12379         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
12380         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
12381         ppl_Pointset_Powerset_C_Polyhedron_maximize.
12382         * graphite-ppl.h (ppl_max_for_le): Declared.
12383
12384 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
12385
12386         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
12387         supported on all platforms.
12388         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
12389         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
12390         * c-pragma.c: Likewise.
12391         * target-def.h (TARGET_INITIALIZER): Remove
12392         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12393         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
12394
12395 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12396
12397         * config/ia64/fde-vms.c: New file.
12398         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
12399         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
12400         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
12401         (uw_frame_state_for): Only register a personality routine if it is
12402         known to be compatible with our expectations.
12403         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
12404         Declare unw_table_entry stack variable and
12405         mod all calls to _Unwind_FindTableEntry to add arg.
12406         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
12407         (_Unwind_FindTableEntry): Add arg to prototype.
12408
12409 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
12410
12411         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
12412         field 'signal_pfs_loc'.
12413         (uw_frame_state_for): Remove duplicate code dealing with leaf
12414         procedures without unwind info.
12415         If in the frame after unwinding through a signal handler, restore
12416         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
12417         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
12418         'pfs_loc' to the AR.PFS location in the signal context; instead
12419         set 'signal_pfs_loc'.
12420         Manually generate the unwind info for the AR.PFS register.
12421         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
12422         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
12423         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
12424         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
12425         instead set 'signal_pfs_loc'.
12426         Remove code preventing the AR.PFS register from being restored
12427         from the signal context.
12428
12429 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
12430             Tristan Gingold  <gingold@adacore.com>
12431
12432         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
12433         * config/ia64/t-vms: New file.
12434         * config/ia64/vms64.h: New file.
12435         * config/ia64/vms.h: New file.
12436         * config/ia64/vms-crtinit.asm: New file.
12437         * config/ia64/vms_symvec_libgcc_s.opt: New file.
12438         * config/ia64/vms-unwind.h: New file.
12439
12440 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12441
12442         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
12443         TFmode compares.
12444
12445 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12446
12447         PR middle-end/30789
12448         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
12449         Move declaration...
12450         * real.h (do_mpc_arg2): ... here.
12451         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
12452         and RDIV_EXPR.
12453
12454 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
12455
12456         * final.c (add_debug_prefix_map): Don't use GC memory for
12457         old_prefix and new_prefix.
12458
12459 2009-08-14  Richard Guenther  <rguenther@suse.de>
12460
12461         * ipa-prop.c (compute_complex_pass_through): If we cannot
12462         compute a non-varying offset for IPA_JF_ANCESTOR punt.
12463
12464 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12465
12466         * c-lex.c (c_lex_with_flags): Increase size of local variable
12467         to avoid memory clobber.
12468
12469 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
12470
12471         PR target/40934
12472         * config/i386/i386.c (ix86_fp_comparison_strategy):
12473         Only enable/disable sahf at function granularity.
12474
12475 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
12476
12477         PR rtl-optimization/41064
12478         * reload1.c (reload_as_needed): Don't call extract_insn
12479         for known invalid replacements after calling
12480         validate_replace_rtx_group and verify_changes.
12481
12482 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
12483
12484         PR target/41019
12485         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
12486         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
12487         ix86_expand_fp_vcond.
12488         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
12489         Assert that operation is supported by ix86_expand_int_vcond.
12490         (vcondu<SSEMODE124C8:mode>): Ditto.
12491
12492 2009-08-13  DJ Delorie  <dj@redhat.com>
12493
12494         * config/i386/djgpp-stdint.h: New.
12495         * config.gcc (djgpp): Use it.
12496
12497 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
12498
12499         * config/sh/sh.c (sh_override_options): When flag_exceptions or
12500         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
12501
12502 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
12503
12504         * tree-ssa-loop-prefetch.c
12505         (prune_ref_by_group_reuse): Enhance probabilistic analysis
12506         for long-stride pruning.
12507         (compute_miss_rate): New function to compute the probability
12508         that two memory references access different cache lines.
12509
12510 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
12511
12512         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
12513
12514 2009-08-13  Richard Guenther  <rguenther@suse.de>
12515
12516         PR middle-end/41047
12517         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
12518         use the constant pointer type.
12519         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
12520         of CV qualifiers on the target pointer type.
12521         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
12522         conversion check before restrict check.
12523
12524 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12525
12526         PR target/41029
12527         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
12528
12529 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
12530
12531         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
12532
12533 2009-08-12  Richard Guenther  <rguenther@suse.de>
12534
12535         PR tree-optimization/41011
12536         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
12537         and reference constructing.
12538
12539 2009-08-12  Xinliang David Li  <davidxl@google.com>
12540
12541         PR tree-optimization/41012
12542         * tree-flow.h : New external interface.
12543         * gimple-low.c (check_call_arg): Change to public function.
12544         Remove argument mismatch check in lowering.
12545         * tree-inline.h (tree_can_inline_p): Interface change.
12546         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
12547         into this function.
12548         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
12549         Call change to tree_can_inline_p function.
12550         (cgraph_decide_inlining_incrementally): Ditto.
12551
12552 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
12553
12554         PR tree-optimization/41031
12555         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
12556         on the partition variable rather than promote_mode on the source
12557         type.  Assert that the partition variable's type has the same
12558         mode as the source value's.
12559
12560 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
12561
12562         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
12563         for for_return == 2.
12564         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
12565         comments.
12566         * calls.c (expand_call): Fix typo.
12567         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
12568         and PARM_DECL.
12569         * stmt.c (expand_value_return): Use promote_function_mode to copy out
12570         of pseudo.
12571         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
12572         * config/cris/cris.c (cris_promote_function_mode): Likewise.
12573         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
12574         * config/pa/pa.c (pa_promote_function_mode): Likewise.
12575
12576 2009-08-12  Andrew Haley  <aph@redhat.com>
12577
12578         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
12579
12580 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12581
12582         PR bootstrap/40103
12583         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
12584
12585 2009-08-12  Richard Guenther  <rguenther@suse.de>
12586
12587         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
12588         * gimplify.c (gimplify_modify_expr): Do not use
12589         lang_hooks.types_compatible_p.
12590         * tree-ssa.c (useless_type_conversion_p): For aggregates
12591         just return false if the canonical types differ.
12592
12593 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12594
12595         PR middle-end/40980
12596         * sese.c (convert_for_phi_arg): New.
12597         (add_guard_exit_phis): Use convert_for_phi_arg.
12598
12599 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12600
12601         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
12602         unknown subscript upper bounds.
12603
12604 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12605             Pranav Garg  <pranav.garg2107@gmail.com>
12606
12607         * graphite-interchange.c (gather_access_strides): Removed.
12608         (ppl_max_for_le): New.
12609         (build_linearized_memory_access): New.
12610         (memory_stride_in_loop): New.
12611         (pbb_interchange_profitable_p): Reimplemented.
12612         * graphite-ppl.h (ppl_new_id_map): New.
12613         (ppl_interchange): New.
12614
12615 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12616
12617         * graphite-interchange.c (compute_subscript): Removed.
12618         (compute_array_size_cstr): Removed.
12619         (compute_array_size_poly): Removed.
12620         (compute_array_size): Removed.
12621         (gather_access_strides_poly): Removed.
12622         (gather_access_strides): Empty.
12623
12624 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12625
12626         * graphite-dependences.c (dependence_polyhedron_1): Replace
12627         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
12628         (graphite_legal_transform_dr): Same.
12629         (graphite_carried_dependence_level_k): Same.
12630         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
12631         Initialize PDR_NB_SUBSCRIPTS.
12632         (print_pdr_access_layout): Replace pdr_nb_subscripts with
12633         PDR_NB_SUBSCRIPTS.
12634         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
12635         (PDR_NB_SUBSCRIPTS): New.
12636         (pdr_nb_subscripts): Removed.
12637         (pdr_dim): Simplified.
12638         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
12639         with PDR_NB_SUBSCRIPTS.
12640
12641 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12642
12643         * graphite-interchange.c (compute_array_size): Remove use of
12644         PDR_DATA_CONTAINER.
12645         * graphite-poly.c (new_poly_dr): Remove argument data_container.
12646         Do not initialize PDR_DATA_CONTAINER.
12647         (print_pdr): Do not print PDR_DATA_CONTAINER.
12648         * graphite-poly.h (struct poly_dr): Remove data_container field.
12649         (PDR_DATA_CONTAINER): Removed.
12650         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
12651         PDR_DATA_CONTAINER.
12652         (build_poly_dr): Same.
12653
12654 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
12655             Sebastian Pop  <sebastian.pop@amd.com>
12656
12657         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
12658         copy of the dependence polyhedron.  Free the temporary objects.
12659         (graphite_carried_dependence_level_k): Free unused objects before
12660         returning.
12661
12662 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12663
12664         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
12665         Early return without analyzing the data dependences if no
12666         transform has been done.  Call restore_scattering if the transform
12667         is not legal.
12668         (graphite-interchange.c): Same.
12669         * graphite-poly.c (print_scattering_function): Test for
12670         PBB_TRANSFORMED.
12671         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
12672         (apply_poly_transforms): Do not gcc_assert that
12673         the transform is legal.
12674         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
12675         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
12676         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
12677         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
12678         * graphite-poly.h (struct poly_scattering): New.
12679         (struct poly_bb): Add original, transformed, and saved fields.
12680         Remove transformed_scattering, original_scattering,
12681         nb_local_variables and nb_scattering_transform fields.
12682         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
12683         (poly_scattering_new): New.
12684         (poly_scattering_free): New.
12685         (poly_scattering_copy): New.
12686         (store_scattering_pbb): New.
12687         (store_scattering): New.
12688         (restore_scattering_pbb): New.
12689         (restore_scattering): New.
12690         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
12691         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
12692
12693 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12694
12695         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
12696         (print_scop): Same.
12697
12698 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12699
12700         * Makefile.in (graphite.o): Depends on PREDICT_H.
12701         * graphite.c: Include predict.h.
12702         (graphite_finalize): Call tree_estimate_probability.
12703         * predict.c (predict_loops): Do not call scev_initialize and
12704         scev_finalize.
12705         (tree_estimate_probability_bb): New.
12706         (tree_estimate_probability): Do not initialize loops: move that
12707         code to the driver.  Call tree_estimate_probability_bb.
12708         (tree_estimate_probability_driver): New.
12709         (pass_profile): Use tree_estimate_probability_driver.
12710         * predict.h (tree_estimate_probability): Declared.
12711
12712 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
12713
12714         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
12715         * graphite-dependences.c (graphite_legal_transform): Add time to
12716         TV_GRAPHITE_DATA_DEPS.
12717         (dependency_between_pbbs_p): Same.
12718         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
12719
12720 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
12721
12722         PR rtl-optimization/41033
12723         * alias.c (nonoverlapping_component_refs_p): Punt when strict
12724         aliasing is disabled.
12725
12726 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12727
12728         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
12729         si_mask_operand, and_load_operand, low_bitmask_operand,
12730         and_reg_operand, and_operand): New predicates.
12731         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
12732         * config/mips/mips.c (and_operands_ok): New function.
12733         * config/mips/mips-protos.h (and_operands_ok): Declare it.
12734         * config/mips/mips.md (move_type): Add ext_ins and logical.
12735         (type): Handle them.
12736         (and<mode>3): Use and_reg_operand as the second operand's predicate.
12737         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
12738         shift_shift.  Remove commutative constraint modifier.
12739         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
12740         shift_shift.
12741         (*clear_upper32_dext): Remove define_insn_and_split.
12742         (*clear_upper32): Turn this define_insn_and_split ...
12743         (splitter for ANDing register with 0xffff_ffff): .. into this.
12744
12745 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
12746
12747         * combine.c (try_widen_shift_mode): Factor out code to check if an
12748         integer constant is a low-order bitmask from here ...
12749         * rtlanal.c (low_bitmask_len): ... to here.
12750         * rtl.h (low_bitmask_len): Declare.
12751
12752 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
12753
12754         PR target/8603
12755         * config/alpha/alpha.md (addsi3): Remove expander.
12756         (addsi3): Rename from *addsi3_internal insn pattern.
12757         (subsi3): Remove expander.
12758         (subsi3): Rename from *subsi3_internal insn pattern.
12759
12760 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
12761
12762         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
12763         FWRITE_UNLOCKED.
12764
12765 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
12766             Eric Botcazou  <botcazou@adacore.com>
12767             Douglas B Rupp  <rupp@gnat.com>
12768
12769         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
12770         that records that fit in 64 bits are returned by immediate value,
12771         as required by OpenVMS Calling Standard.
12772         (function_value): Adjust for above modification.
12773         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
12774         virtual_incoming_args_rtx as base object, not next_arg.
12775         * config/alpha/vms.h (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
12776
12777 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12778
12779         * reload.c (find_reloads_subreg_address): Check the original
12780         req_equiv_mem address to detect the case where an address is
12781         not valid in the outer mode.
12782
12783 2009-08-11  Richard Guenther  <rguenther@suse.de>
12784
12785         PR bootstrap/40788
12786         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
12787
12788 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
12789
12790         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
12791         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
12792
12793 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
12794             Douglas B Rupp  <rupp@gnat.com>
12795
12796         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
12797         PT_STACK when frame_pointer_needed on OpenVMS.
12798         (alpha_pv_save_size, alpha_using_fp): Remove.
12799         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
12800         with proper processing for PT_NULL.
12801         (alpha_vms_initial_elimination_offset): New function. Support for
12802         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
12803         (alpha_sa_size): Force procedure type to PT_STACK when
12804         frame_pointer_needed on OpenVMS.
12805         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
12806         (alpha_using_fp): Likewise.
12807         (alpha_vms_can_eliminate): Add prototype.
12808         (alpha_vms_initial_elimination_offset): Likewise.
12809         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
12810         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
12811
12812 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
12813             Douglas B Rupp  <rupp@gnat.com>
12814
12815         * config/alpha/alpha.c (common_object_handler): New function.
12816         (vms_attribute_table): Declare a single attribute "common_object".
12817         (vms_output_aligned_decl_common): New global function.
12818         (SECTION_VMS_OVERLAY): Delete.
12819         (SECTION_VMS_GLOBAL): Likewise.
12820         (SECTION_VMS_INITIALIZE): Likewise.
12821         (vms_asm_named_section): Remove support for above flags.
12822         (vms_section_type_flags): Delete.
12823         (TARGET_SECTION_TYPE_FLAGS): Likewise.
12824         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
12825         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
12826         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
12827
12828 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
12829
12830         PR target/41015
12831         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
12832         (sub_ddmmss): Likewise.
12833
12834 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
12835
12836         PR bootstrap/41018
12837         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
12838         year.
12839
12840 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
12841
12842         PR target/37053
12843         * reload1.c (reload_as_needed): Use cancel_changes to completely
12844         undo a failed replacement attempt.
12845
12846 2009-08-10  Richard Guenther  <rguenther@suse.de>
12847
12848         PR middle-end/41006
12849         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
12850         (useless_type_conversion_p): ... here.  Require pointer targets
12851         to be compatible.
12852
12853 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
12854
12855         PR c++/40866
12856         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
12857         loose the original type of the statement list.
12858
12859 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12860
12861         * config/alpha/alpha.c: Include libfuncs.h
12862         (avms_asm_output_extern): New function.
12863         (alpha_init_libfuncs): Init some decc libfuncs.
12864         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
12865         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
12866         (DO_CRTL_NAMES): Define.
12867         (LIB_SPEC): Remove.
12868         * config/alpha/vms64.h (POINTERS_EXTEND_UNSIGNED): Remove undef.
12869         (LONG_TYPE_SIZE): Define.
12870         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
12871         (SUBTARGET_SWITCHES): Define malloc64 switch.
12872         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
12873         (MASK_RETURN_ADDR): Define.
12874         doc/invoke.texi (mmalloc64): Document switch.
12875
12876 2009-08-09  Olivier Hainque  <hainque@adacore.com>
12877             Douglas B Rupp  <rupp@gnat.com>
12878
12879         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
12880         uses_condition_handler.
12881         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
12882         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
12883         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
12884         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
12885         (code_for_builtin): New insn codes for the new alpha_builtins.
12886         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
12887         (alpha_sa_size): Account for uses_condition_handler.
12888         (alpha_expand_prologue): Likewise.
12889         (alpha_start_function): Likewise.
12890         (alpha_expand_epilogue): Likewise.
12891         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
12892         establish/revert expanders.
12893         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
12894         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
12895         New expander, resorting to the alpha.c associated function.
12896         (builtin_revert_vms_condition_handler): Likewise.
12897         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
12898         __gcc_shell_handler, the static VMS condition handler used as
12899         an indirection wrapper to the current dynamically established
12900         handler.
12901         * config/alpha/vms-unwind.h: Complete rewrite.
12902         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
12903         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
12904
12905 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
12906             Douglas B Rupp  <rupp@gnat.com>
12907
12908         * config/alpha/alpha.c (alpha_links): Add 'target' field.
12909         (alpha_need_linkage): Handle aliases.  Return function symbol.
12910         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
12911         Use ultimate alias target for the linkage name.
12912         * config/alpha/alpha.md (movmemdi): Use the symbol returned
12913         by alpha_need_linkage for the function symbol.
12914         (setmemdi): Likewise.
12915
12916 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12917
12918         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
12919         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
12920         (ASM_WEAKEN_LABEL): Define.
12921         (CRT_CALL_STATIC_FUNCTION): Define.
12922         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
12923         (ENDFILE_SPEC): Define.
12924         (INIT_SECTION_ASM_OP): Define.
12925         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
12926         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
12927         crtend.o crtendS.o.
12928         (MULTILIB_OSDIRNAMES): Define.
12929         (shlib_version): Define.
12930         (SHLIB_EXT): Define.
12931         (SHLIB_OBJS): Define.
12932         (SHLIB_NAME): Define.
12933         (SHLIB_MULTILIB): Define.
12934         (SHLIB_INSTALL): Define.
12935         (SHLIB_SYMVEC): Define.
12936         (SHLIB_SYMVECX2): Define.
12937         (SHLIB_LINK): Define.
12938
12939 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12940
12941         * config/alpha/alpha.c (alpha_initialize_trampoline):
12942         Initialize VMS trampoline IAW ABI for bounded procedure calls.
12943         (alpha_start_function): Emit transfer address on nested functions
12944         for VMS trampoline call.
12945         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
12946         since no longer used.
12947         * config/alpha/vms-tramp.asm: Remove.
12948         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
12949         since now only data initialized at runtime.
12950
12951 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
12952
12953         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
12954         (LINK_GCC_C_SEQUENCE_SPEC): Define.
12955         (MD_EXEC_PREFIX): Remove, no longer used.
12956         (MD_STARTFILE_PREFIX): Likewise.
12957         (INCLUDE_DEFAULTS): Likewise.
12958         * config/alpha/t-vms:
12959         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
12960
12961 2009-08-09  Richard Guenther  <rguenther@suse.de>
12962
12963         PR tree-optimization/41016
12964         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
12965         (operand_precision): Remove.
12966         (integral_operand_p): Likewise.
12967         (recognize_single_bit_test): Adjust.
12968
12969 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12970
12971         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
12972         operation overflows.  Likewise non-cast unary arithmetic.
12973         If one arm of a conditional expression is always taken,
12974         inhibit evaluation warnings for the other arm.  Likewise inhibit
12975         evaluation warnings for the second && or || operand if the first
12976         operand is enough to determine the result.
12977         * c-typeck.c (build_conditional_expr): Apply the same inhibition
12978         rules here.
12979         (build_binary_op): Prevent duplicate evaluation warnings.
12980
12981 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
12982
12983         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
12984         and destination have different modes, Use promote_mode to
12985         determine the signedness of the conversion.  Assert that the
12986         promoted source mode matches the destination mode.  Don't pass
12987         the destination and destination mode to expand_expr if the source
12988         mode is different.  Simplify conversion logic.
12989
12990 2009-08-09  Ira Rosen  <irar@il.ibm.com>
12991
12992         PR tree-optimization/41008
12993         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
12994         from condition only in case it's a comparison. Adjust checks.
12995
12996 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
12997
12998         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
12999         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
13000         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
13001         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
13002         (dump_cand): Handle them.
13003         (struct iv_cand): New members COST_STEP and AINC_USE.
13004         (stmt_after_increment): Likewise.
13005         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
13006         callers changed.  Use gimple_uid comparison instead of scanning.
13007         (add_candidate_1): When looking for identical candidates, take
13008         AINC_USE into account.  Set it for new candidates.
13009         (force_expr_to_var_cost): Cast target_spill_cost to int.
13010         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
13011         All callers changed.  Check for availability of autoinc addressing
13012         modes, both in general for a given mode, and in the specific use case.
13013         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
13014         changed.
13015         (get_computation_cost): Likewise.
13016         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
13017         add_autoinc_candidates): New static functions.
13018         (add_candidate): Call add_autoinc_candidates for candidates based on
13019         a USE_ADDRESS use.
13020         (find_iv_candidates): Call set_autoinc_for_original_candidates.
13021         (determine_use_iv_cost_address): If we have an autoinc candidate at
13022         the matching use, verify autoinc is possible and subtract the cost
13023         of the candidate's step from the cost.
13024         (determine_iv_cost): Record the cost of the increment in the COST_STEP
13025         member of the candidate.
13026         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
13027         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
13028
13029 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
13030
13031         * config.build (ia64-hp-*vms*): New target.
13032         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13033         with ia64-hp-*vms*.
13034         * config.gcc (ia64-hp-*vms*): New target.
13035         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13036         with ia64-hp-*vms*.
13037         * config.host (ia64-hp-*vms*): New target.
13038         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
13039         with ia64-hp-*vms*.
13040
13041 2009-08-08  Richard Guenther  <rguenther@suse.de>
13042
13043         PR tree-optimization/40991
13044         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
13045
13046 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
13047
13048         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
13049         mode check.  Do truncations in an integer mode.
13050         (force_to_mode): Handle subregs for all mode types.  Only do
13051         arithmetic simplifications on integer modes.
13052
13053 2009-08-07  Richard Guenther  <rguenther@suse.de>
13054
13055         PR tree-optimization/40999
13056         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
13057         (maybe_fold_reference): Lookup constant initializers.
13058         (fold_gimple_assign): Likewise.
13059
13060 2009-08-07  Richard Guenther  <rguenther@suse.de>
13061
13062         * tree-ssa.c (useless_type_conversion_p_1): Only for types
13063         that require structural equality defer to the langhook.
13064
13065 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13066
13067         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
13068         comments.
13069         (struct ipa_pass_through_data): New type.
13070         (struct ipa_ancestor_jf_data): New type.
13071         (union jump_func_value): Removed field formal_id, added fields
13072         pass_through and ancestor.
13073         (struct ipa_param_call_note): Changed type of formal_id to int from
13074         unsigned.
13075         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
13076         operations jump functions and ancestor jump functions.
13077         (compute_complex_pass_through): New function.
13078         (compute_scalar_jump_functions): Call compute_complex_pass_through,
13079         reflect changes in the jump function strucutre.
13080         (update_jump_functions_after_inlining): Ignore complex pass-through
13081         and ancestor jump functions.
13082         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
13083         polynomial pass-through with operation jump functions.
13084
13085 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
13086
13087         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
13088         fde->dw_fde_begin as begin label instead of hot/cold label.
13089         Use LLSDAC label instead of LLSDA for second section lsda.
13090         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
13091         label instead of LLSDA if it is true.
13092         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
13093         callers.
13094         * except.c (add_call_site, dw2_size_of_call_site_table): Add
13095         SECTION argument.  Use it as index into crtl->eh.call_site_record
13096         array.
13097         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
13098         use it to determine how to print table entries instead of using
13099         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
13100         label instead of normal begin label as base.
13101         (sjlj_assign_call_site_values): Adjust add_call_site caller.
13102         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
13103         ensure no EH range spans between sections and that landing pads
13104         are always in the corresponding section.
13105         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
13106         for crtl->eh.call_site_record being an array rather than scalar.
13107         (output_one_function_exception_table): New function, copied
13108         from output_function_exception_table.  Adjust
13109         dw2_size_of_call_site_table, dw2_output_call_site_table
13110         callers.  For SECOND section use *C suffixed labels.
13111         (output_function_exception_table): Call
13112         output_one_function_exception_table and, when doing hot/cold
13113         partitioning, also another time for the second section.
13114         * opts.c: Include except.h.
13115         (decode_options): Allow -freorder-blocks-and-partition with
13116         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
13117         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
13118         * function.h (struct rtl_eh): Change call_site_record from
13119         scalar into array of 2 elements.
13120
13121 2009-08-07  Martin Jambor  <mjambor@suse.cz>
13122
13123         * ipa-prop.c (count_formal_params_1): New function.
13124         (ipa_get_vector_of_formal_parms): New function.
13125         (get_vector_of_formal_parm_types): New function.
13126         (ipa_modify_formal_parameters): New function.
13127         (ipa_modify_call_arguments): New function.
13128         (index_in_adjustments_multiple_times_p): New function.
13129         (ipa_combine_adjustments): New function.
13130         (ipa_dump_param_adjustments): New function.
13131         * ipa-prop.h (struct ipa_parm_adjustment): New type.
13132         (ipa_get_vector_of_formal_parms): Declare.
13133         (ipa_modify_formal_parameters): Declare.
13134         (ipa_modify_call_arguments): Declare.
13135         (ipa_combine_adjustments): Declare.
13136         (ipa_dump_param_adjustments): Declare.
13137         (build_ref_for_offset): Declare.
13138         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
13139         * tree-sra.c: Include ipa-prop.c.
13140         (build_ref_for_offset): Make public.
13141
13142 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
13143
13144         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
13145
13146 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
13147
13148         * gcc/doc/extend.texi (__builtin_extract_return_address)
13149         (__builtin_frob_return_address): Document.
13150
13151 2009-08-06  Paul Brook  <paul@codesourcery.com>
13152
13153         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
13154         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
13155         implementation on ARMv6-M.
13156
13157 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13158
13159         * doc/extend.texi (pcs): Document new attribute for ARM.
13160
13161 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13162
13163         * arm.c (pcs_attribute_args): Comment out unsupported attribute
13164         variants.
13165
13166 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13167
13168         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
13169         warning ().
13170
13171 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13172
13173         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
13174
13175 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
13176
13177         Merge ARM/hard_vfp_branch to trunk.
13178
13179         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
13180
13181         * arm.c (libcall_eq): New function.
13182         (libcall_hash): New function.
13183         (add_libcall): New function.
13184         (arm_libcall_uses_aapcs_base): New function.
13185         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
13186         libcalls using the base PCS.
13187         (arm_init_cumulative_args): Likewise.
13188
13189         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
13190
13191         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
13192         Use base ABI for conversion libfuncs between HFmode and SFmode.
13193
13194         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13195
13196         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
13197         V4SImode as representatives of all 64-bit and 128-bit vector
13198         types.  Allow vector types without vector modes.
13199         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
13200         without vector modes like BLKmode.
13201         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
13202         BLKmode.  Avoid unsupported vector modes or TImode moves for
13203         non-TARGET_NEON.
13204         (aapcs_vfp_allocate_return_reg): Likewise.
13205         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
13206         V8QImode if TARGET_NEON || TARGET_IWMMXT.
13207
13208         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13209
13210         * config/arm/arm.c (arm_handle_pcs_attribute): New.
13211         (arm_get_pcs_model): Pass attribute arguments to
13212         arm_pcs_from_attribute.
13213         (arm_init_cumulative_args): Use base AAPCS for conversions from
13214         floating-point types to DImode.
13215         (arm_attribute_table): Add pcs attribute.
13216         (arm_handle_pcs_attribute): New.
13217         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
13218         conversions from floating-point types to DImode, also declare them
13219         to use base AAPCS and declare functions they call to use base
13220         AAPCS and their RTABI names.
13221
13222         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
13223
13224         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
13225         -mfloat-abi=hard not being supported for VFP.
13226
13227         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
13228
13229         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
13230         SYMBOL_REF to hard_libcall_value.
13231
13232         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13233             Richard Earnshaw  <rearnsha@arm.com>
13234
13235         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
13236         has been put on the stack, all remaining co-processory arguments for
13237         that co-processor also go on the stack.
13238
13239         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
13240
13241         * config/arm/arm.c (arm_return_in_memory): Handle returning
13242         vectors of suitable size in registers also for AAPCS case.
13243
13244         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
13245
13246         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
13247
13248         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
13249
13250         ARM Hard-VFP calling convention
13251         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
13252         * target.h (gcc_target): Add libcall_value to table of call hooks.
13253         * targhooks.h (default_libcall_value): Default implementation.
13254         * targhooks.c (default_libcall_value): Likewise.
13255         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
13256         * optabs.c (expand_unop): Use it.
13257         * expr.h (hard_libcall_value): Pass the function RTX through.
13258         * calls.c (emit_library_call_value_1): Update call to
13259         hard_libcall_value.
13260         * explow.c (hard_libcall_value): Use new target hook.
13261         * config/arm/arm.c: Include cgraph.h
13262         (TARGET_FUNCTION_VALUE): Override default hook.
13263         (arm_pcs_default): New variable.
13264         (arm_override_options): Don't fault hard calling convention with VFP.
13265         Add support for AAPCS variants.
13266         (arm_function_value): Make static.  Handle AAPCS variants.
13267         (arm_libcall_value): New function.
13268         (arm_apply_result_size): Handle VFP registers in results.
13269         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
13270         conventions.
13271         (pcs_attribute_args): New variable.
13272         (arm_pcs_from_attribute): New function.
13273         (arm_get_pcs_model): New function.
13274         (aapcs_vfp_cum_init): New function.
13275         (aapcs_vfp_sub_candidate): New function.
13276         (aapcs_vfp_is_return_candidate): New function.
13277         (aapcs_vfp_is_call_candidate): New function.
13278         (aapcs_vfp_allocate): New function.
13279         (aapcs_vfp_allocate_return_reg): New function.
13280         (aapcs_vfp_advance): New function.
13281         (aapcs_cp_arg_layout): New variable.
13282         (aapcs_select_call_coproc): New function.
13283         (aapcs_select_return_coproc): New function.
13284         (aapcs_allocate_return_reg): New function.
13285         (aapcs_libcall_value): New function.
13286         (aapcs_layout_arg): New function.
13287         (arm_init_cumulative_args): Initialize AAPCS args data.
13288         (arm_function_arg): Handle AAPCS variants using new interface.
13289         (arm_arg_parital_bytes): Likewise.
13290         (arm_function_arg_advance): New function.
13291         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
13292         calling conventions.
13293         (arm_setup_incoming_varargs): Handle new AAPCS args data.
13294         * arm.h (NUM_VFP_ARG_REGS): Define.
13295         (LIBCALL_VALUE): Update.
13296         (FUNCTION_VALUE): Delete.
13297         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
13298         (arm_pcs): New enum.
13299         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
13300         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
13301         (FUNCTION_ARG_REGNO_P): Add VFP regs.
13302         * arm-protos.h (arm_function_arg_advance): Add.
13303         (aapcs_libcall_value): Add.
13304         (arm_function_value): Delete.
13305
13306 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
13307             H.J. Lu  <hongjiu.lu@intel.com>
13308
13309         PR target/40957
13310         * config/i386/i386.c (standard_sse_mode_p): Remove.
13311         (standard_sse_constant_p): Return 2 for integer mode
13312         vector_all_ones_operand when SSE2 is enabled.
13313         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
13314         (ix86_expand_vector_move): Do not check for negative values from
13315         standard_sse_constant_p.
13316
13317 2009-08-06  Richard Guenther  <rguenther@suse.de>
13318
13319         * tree-ssa.c (useless_type_conversion_p_1): Make function and
13320         array type comparisons frontend independent.
13321         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
13322         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
13323         out array reference lower bound and element size operands.
13324         (ao_ref_init_from_vn_reference): Properly compute the offset
13325         for ARRAY_RANGE_REF.
13326         (vn_reference_fold_indirect): Fill out array reference lower
13327         bound and element size operands.
13328         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
13329         a non gimple valued reference operand which can happen for
13330         array reference lower bound or element size.
13331         (create_component_ref_by_pieces_1): Properly generate the
13332         element size operand for array references.
13333
13334 2009-08-06  Richard Guenther  <rguenther@suse.de>
13335
13336         PR tree-optimization/40964
13337         * tree.c (iterative_hash_host_wide_int): Export.
13338         * tree.h (iterative_hash_host_wide_int): Declare.
13339         * tree-ssa-structalias.c (heapvar_map): New struct.
13340         (heapvar_map_eq): New function.
13341         (heapvar_map_hash): Likewise.
13342         (heapvar_lookup): Adjust.
13343         (heapvar_insert): Likewise.
13344         (make_constraint_from_heapvar): Allow multiple heap variables
13345         per decl at different offsets.
13346         (init_alias_heapvars): Adjust.
13347
13348 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
13349
13350         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
13351         * mips_output_sync_loop (mips_output_sync_loop): Only emit
13352         trailing sync if TARGET_SYNC_AFTER_SC.
13353
13354 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
13355
13356         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
13357         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
13358         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
13359         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
13360         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
13361         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
13362         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
13363         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
13364         test_and_set_12): Rewrite calls to mips_output_sync_loop.
13365         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
13366         the prototype declaration match the definition.
13367         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
13368         instructions explicitly.  Add barrier_before and operands
13369         parameters.
13370         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
13371         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
13372         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
13373         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
13374         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
13375         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
13376
13377 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
13378
13379         * tree-ssa-alias.c: Fix intervals to use [) syntax.
13380
13381 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
13382             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
13383
13384         PR target/40906
13385         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
13386         source operand.
13387
13388 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
13389
13390         PR rtl-optimization/40924
13391         * dse.c (canon_address): Before calling cselib_expand_value_rtx
13392         make sure canon_rtx (mem_address) isn't simpler than
13393         canon_rtx (expanded_mem_address).
13394
13395 2009-08-05  Li Feng  <nemokingdom@gmail.com>
13396
13397         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
13398         for each poly_bb_p.
13399         (build_scop_drs): Build alias set for each SCoP.
13400
13401 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
13402
13403         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
13404         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
13405         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
13406         (MIPS_ARCH_FLOAT_SPEC): Likewise.
13407         (BASE_DRIVER_SELF_SPECS): Likewise.
13408
13409 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
13410
13411         * tree-ssa-alias.c: Fix some comment typos.
13412
13413 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
13414
13415         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
13416         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
13417
13418 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
13419
13420         PR c/39902
13421         * simplify-rtx.c (simplify_binary_operation_1): Disable
13422         simplifications for decimal float operations.
13423
13424 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
13425
13426         PR middle-end/40943
13427         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
13428         operand of INDIRECT_REF.
13429
13430 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
13431
13432         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
13433         constants referencing TLS symbols.
13434
13435 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
13436
13437         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
13438         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
13439
13440 2009-08-03  Richard Guenther  <rguenther@suse.de>
13441
13442         * tree.c (make_vector_type): Build a main variant first,
13443         get the canonical one and then build the variant.
13444         * tree-ssa.c (useless_type_conversion_p_1): Handle
13445         fixed-point types.
13446         (useless_type_conversion_p): Conversions to pointers to
13447         incomplete record types are useless.
13448
13449 2009-08-03  Richard Guenther  <rguenther@suse.de>
13450
13451         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
13452         file will be created.
13453         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
13454         * toplev.c (compile_file): Adjust comment.
13455
13456 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
13457
13458         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
13459         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
13460         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13461         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13462         (sh_promote_function_mode): Fix typo.
13463
13464 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
13465
13466         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
13467
13468 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13469
13470         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
13471         declaration arguments.
13472
13473 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
13474
13475         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
13476         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
13477         (ix86_split_ashl): Ditto.
13478         (ix86_expand_vector_init_one_nonzero): Ditto.
13479         (ix86_expand_vector_set): Ditto.
13480         (ix86_expand_reduc_v4sf): Ditto.
13481
13482 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
13483
13484         * explow.c (promote_function_mode): Remove assert.
13485         * config/sh/sh.c (sh_promote_function_mode): Declare.
13486
13487 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13488
13489         * config/pa/pa.c (pa_promote_function_mode): Declare.
13490         Change to static.  Fix promote_mode call.
13491
13492         * gthr-dce.h (CONST_CAST2): Define if not defined.
13493         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
13494
13495         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
13496
13497 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
13498
13499         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13500         now write-only variable unsignedp.
13501         (expand_expr_real_1): Use promote_decl_mode.
13502         * expr.h (promote_function_mode, promote_decl_mode): New.
13503         (promote_mode): Remove last argument.
13504         * function.c (assign_temp): Drop last argument of promote_mode.
13505         (assign_parm_find_data_types): Use promote_function_mode.
13506         (assign_parm_setup_reg): Likewise.
13507         (expand_function_end): Use promote_function_mode.
13508         * calls.c (initialize_argument_information): Use promote_function_mode.
13509         (precompute_arguments): Use promote_mode instead of checking if
13510         only PROMOTE_FUNCTION_MODE is defined.
13511         (expand_call): When making sibcall decisions, use promote_function_mode.
13512         Below, remove an if for targetm.calls.promote_function_return and
13513         and use promote_function_mode.
13514         (emit_library_call_value_1): Use promote_function_mode, fix bug
13515         where promote_mode was passed FOR_CALL == 0 for a return value in an
13516         assertion.
13517         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13518         * explow.c (promote_function_mode, promote_decl_mode): New.
13519         (promote_mode): Keep only the FOR_CALL == 0 case.
13520         * combine.c (setup_incoming_promotion): Remove test of
13521         promote_function_args.  Use promote_function_mode.
13522         * stmt.c (expand_value_return): Use promote_decl_mode.
13523         (expand_decl): Use promote_decl_mode.
13524
13525         * expr.c (store_constructor): Use promote_decl_mode.  Remove
13526         now write-only variable unsignedp.
13527         (expand_expr_real_1): Use promote_decl_mode.
13528         * expr.h (promote_function_mode, promote_decl_mode): New.
13529         (promote_mode): Remove last argument.
13530         * function.c (assign_temp): Drop last argument of promote_mode.
13531         (assign_parm_find_data_types): Use promote_function_mode.
13532         (assign_parm_setup_reg): Likewise.
13533         (expand_function_end): Use promote_function_mode.
13534         * calls.c (initialize_argument_information): Use promote_function_mode.
13535         (precompute_arguments): Use promote_mode instead of checking if
13536         only PROMOTE_FUNCTION_MODE is defined.
13537         (expand_call): When making sibcall decisions, use promote_function_mode.
13538         Below, remove an if for targetm.calls.promote_function_return and
13539         and use promote_function_mode.
13540         (emit_library_call_value_1): Use promote_function_mode, fix bug
13541         where promote_mode was passed FOR_CALL == 0 for a return value in an
13542         assertion.
13543         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
13544         * explow.c (promote_function_mode, promote_decl_mode): New.
13545         (promote_mode): Keep only the FOR_CALL == 0 case.
13546         * combine.c (setup_incoming_promotion): Remove test of
13547         promote_function_args.  Use promote_function_mode.
13548         * stmt.c (expand_value_return): Use promote_decl_mode.
13549         (expand_decl): Use promote_decl_mode.
13550
13551         * explow.c (promote_function_mode): Just call the target hook.
13552         * targhooks.c (default_promote_function_mode,
13553         default_promote_function_mode_always_promote): New.
13554         * targhooks.h (default_promote_function_mode,
13555         default_promote_function_mode_always_promote): Declare.
13556         * target.h (promote_function_args, promote_function_return): Remove.
13557         (promote_function_mode): New.
13558         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
13559         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13560         (TARGET_PROMOTE_FUNCTION_MODE): New.
13561         (TARGET_CALLS): Adjust.
13562         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
13563         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
13564
13565         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
13566         * config/s390/s390.c (s390_promote_function_mode): ... here,
13567         with pointer handling.
13568         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13569         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13570
13571         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
13572         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
13573         with pointer handling.
13574         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13575         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13576
13577         * config/sh/sh-protos.h (sh_promote_function_mode): New.
13578         * config/sh/sh.c (sh_promote_function_mode): New.
13579         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13580         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13581
13582         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
13583         * config/cris/cris.c (cris_promote_function_mode): ... here.
13584         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13585         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13586
13587         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
13588         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
13589         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13590         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
13591
13592         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
13593         * config/arm/arm.c (arm_promote_function_mode): ... here, without
13594         complex type handling.
13595         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13596         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13597
13598         * config/pa/pa.c (pa_promote_function_mode): New.
13599         (TARGET_PROMOTE_FUNCTION_MODE): Define.
13600         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13601
13602         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
13603         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
13604         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
13605         * config/xtensa/xtensa.c: Likewise.
13606         * config/stormy16/stormy16.c: Likewise.
13607         * config/iq2000/iq2000.c: Likewise.
13608         * config/rs6000/rs6000.c: Likewise.
13609         * config/picochip/picochip.c: Likewise.
13610         * config/arc/arc.c: Likewise.
13611         * config/mcore/mcore.c: Likewise.
13612         * config/score/score.c: Likewise.
13613         * config/mips/mips.c: Likewise.
13614         * config/bfin/bfin.c: Likewise.
13615         * config/ia64/ia64.c: Likewise (disabled though).
13616
13617         * config/frv/frv.h: Remove pointless remark.
13618
13619         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
13620         TARGET_PROMOTE_FUNCTION_ARGS,
13621         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
13622         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
13623
13624 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
13625
13626         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
13627         -floop-parallelize-all.
13628         * toplev.c (process_options): Rename flag_graphite_force_parallel to
13629         flag_loop_parallelize_all.
13630         * tree-ssa-loop.c (gate_graphite_transforms): Same.
13631         * graphite.c (graphite_transform_loops): Same.
13632         * common.opt: Same.
13633         * graphite-poly.c (apply_poly_transforms): Same.
13634
13635 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
13636
13637         PR tree-optimization/40914
13638         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
13639         if set, then check the delta field of the PMF record.
13640         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
13641         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
13642         call is stored in the delta.
13643
13644 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
13645
13646         * config/mips/mips.md (*clear_upper32_dext): New pattern.
13647
13648 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
13649
13650         * config/i386/bsd.h (ASM_BYTE): New define.
13651         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
13652         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
13653         .byte.  Use fputs or putc instead of fprintf where appropriate.
13654         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
13655         fputs or putc instead of fprintf where appropriate.
13656         * config/i386/i386elf.h: Ditto.
13657         * config/i386/sysv4.h: Ditto.
13658
13659         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
13660         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
13661         (*tls_global_dynamic_64): Ditto.
13662
13663 2009-07-31  Christian Bruel  <christian.bruel@st.com>
13664
13665         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
13666
13667 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
13668
13669         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
13670         Remove dead code for MINUS.
13671
13672 2009-07-31  Anthony Green  <green@moxielogic.com>
13673
13674         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
13675         $r12 in prologue.
13676         (moxie_expand_epilogue): Ditto for epilogue.
13677         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
13678         incoming arguments.
13679         (moxie_function_arg): Ditto.
13680         (moxie_pass_by_reference): Ditto.
13681         (moxie_arg_partial_bytes): Ditto.
13682         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
13683         (FUNCTION_ARG_ADVANCE) Ditto.
13684         (REG_PARM_STACK_SPACE) Ditto.
13685         (FUNCTION_ARG_REGNO_P) Dito.
13686
13687         * config.gcc: Add moxie linux config support.
13688         * gcc/config/moxie/uclinux.h: New file.
13689
13690 2009-07-31  DJ Delorie  <dj@redhat.com>
13691
13692         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
13693         (UNSPECV_SP_SWITCH_E): New.
13694         (sp_switch_1): Change to an unspec.
13695         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
13696         replace $r15.
13697         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
13698         reference the new stack's address
13699
13700 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13701
13702         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
13703         graphite-clast-to-gimple.o, graphite-dependences.o,
13704         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13705         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
13706         (graphite-blocking.o,
13707         graphite-clast-to-gimple.o, graphite-dependences.o,
13708         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
13709         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
13710         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
13711         * cfgloop.h (struct loop): Add can_be_parallel field.
13712         * common.opt (fgraphite-identity): Moved up.
13713         (fgraphite-force-parallel): New flag.
13714         * graphite.c: Rewrite.
13715         * graphite.h: Rewrite.
13716         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
13717         after Graphite.
13718         * toplev.c (graphite_out_file): New file descriptor.
13719         (graphite_in_file): New.
13720         (process_options): flag_graphite_force_parallel cannot be used without
13721         Graphite.
13722         * tree-ssa-loop.c: Include toplev.h.
13723         (gate_graphite_transforms): Enable flag_graphite for
13724         flag_graphite_force_parallel.
13725
13726 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13727
13728         * ChangeLog.graphite: New.
13729         * graphite-blocking.c: New.
13730         * graphite-clast-to-gimple.c: New.
13731         * graphite-clast-to-gimple.h: New.
13732         * graphite-dependences.c: New.
13733         * graphite-dependences.h: New.
13734         * graphite-interchange.c: New.
13735         * graphite-poly.c: New.
13736         * graphite-poly.h: New.
13737         * graphite-ppl.c: New.
13738         * graphite-ppl.h: New.
13739         * graphite-scop-detection.c: New.
13740         * graphite-scop-detection.h: New.
13741         * graphite-sese-to-poly.c: New.
13742         * graphite-sese-to-poly.h: New.
13743         * sese.c: New.
13744         * sese.h: New.
13745
13746 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13747
13748         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
13749         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
13750
13751 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13752
13753         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
13754         (scev_is_linear_expression): Return false if the evolution is not
13755         affine multivariate.
13756
13757 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13758
13759         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
13760         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
13761
13762 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13763
13764         * tree-data-ref.c (debug_data_references): New.
13765         (debug_data_reference): New.
13766         * tree-data-ref.h (debug_data_references): Declared.
13767         (debug_data_reference): Declared.
13768
13769 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13770
13771         * tree-data-ref.c (stmt_simple_memref_p: Removed.
13772         * tree-data-ref.h (scop_p): Removed.
13773         (struct data_reference): Remove field scop.
13774         (DR_SCOP): Removed.
13775         (stmt_simple_memref_p): Removed.
13776
13777 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13778
13779         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
13780         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
13781         basic block empty.
13782
13783 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13784
13785         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
13786
13787 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13788
13789         * doc/invoke.texi (-fgraphite-identity): Documented.
13790
13791 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13792
13793         * tree-scalar-evolution.c: Fix comment.
13794         (instantiate_scev_1): Return unknow from scev instantiation if the
13795         result is not above instantiate_below.
13796
13797 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
13798
13799         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
13800         static anymore.  Instantiate the symbols that may have been introduced
13801         by chrec_apply.
13802         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
13803         Declared.
13804
13805 2009-07-30  DJ Delorie  <dj@redhat.com>
13806
13807         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
13808         .vliw directive to VLIW sections.
13809
13810 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
13811
13812         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
13813         New variables.
13814         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
13815         (AUTOHEADER): New variable.
13816         ($(srcdir)/cstamp-h.in): Use it.
13817
13818 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
13819             Pat Haugen  <pthaugen@us.ibm.com>
13820             Revital Eres <ERES@il.ibm.com>
13821
13822         * config/rs6000/vector.md (VEC_F): Add VSX support.
13823         (VEC_A): Ditto.
13824         (VEC_N): Ditto.
13825         (mov<mode>): Ditto.
13826         (vector_load_<mode>): Ditto.
13827         (vector_store_<mode>): Ditto.
13828         (vector GPR move split): Ditto.
13829         (vec_reload_and_plus_<mptrsize>): Ditto.
13830         (vec_reload_and_reg_<mptrsize>): Ditto.
13831         (add<mode>3): Ditto.
13832         (sub<mode>3): Ditto.
13833         (mul<mode>3): Ditto.
13834         (neg<mode>2): Ditto.
13835         (abs<mode>2): Ditto.
13836         (smin<mode>3): Ditto.
13837         (smax<mode>3): Ditto.
13838         (vector_eq<mode>): Ditto.
13839         (vector_gt<mode>): Ditto.
13840         (vector_ge<mode>): Ditto.
13841         (vector_gtu<mode>): Ditto.
13842         (vector_select_<mode>_uns): Ditto.
13843         (vector_eq_<mode>_p): Ditto.
13844         (vector_gt_<mode>_p): Ditto.
13845         (vector_ge_<mode>_p): Ditto.
13846         (vector_gtu_<mode>_p): Ditto.
13847         (cr6_test_for_zero): Ditto.
13848         (cr6_test_for_zero_reverse): Ditto.
13849         (cr6_test_for_lt): Ditto.
13850         (cr6_test_for_lt_reverse): Ditto.
13851         (xor<mode>3): Ditto.
13852         (ior<mode>3): Ditto.
13853         (and<mode>3): Ditto.
13854         (one_cmpl<mode>2): Ditto.
13855         (nor<mode>2): Ditto.
13856         (andc<mode>2): Ditto.
13857         (float<VEC_int<mode>2): Ditto.
13858         (unsigned_float<VEC_int><mode>2): Ditto.
13859         (fix_trunc<mode><VEC_int>2): Ditto.
13860         (fixuns_trunc<mode><VEC_int>2): Ditto.
13861         (vec_init<mode>):
13862         (vec_set<mode>): Ditto.
13863         (vec_extract<mode>): Ditto.
13864         (vec_interleave_highv4sf): Ditto.
13865         (vec_interleave_lowv4sf): Ditto.
13866         (vec_realign_load_<mode>): Ditto.
13867         (vec_shl_<mode>): Ditto.
13868         (vec_shr_<mode>): Ditto.
13869         (div<mode>3): New patterns for VSX.
13870         (vec_interleave_highv2df): Ditto.
13871         (vec_interleave_lowv2df): Ditto.
13872         (vec_pack_trunc_v2df): Ditto.
13873         (vec_pack_sfix_trunc_v2df): Ditto.
13874         (vec_pack_ufix_trunc_v2df): Ditto.
13875         (vec_unpacks_hi_v4sf): Ditto.
13876         (vec_unpacks_lo_v4sf): Ditto.
13877         (vec_unpacks_float_hi_v4si): Ditto.
13878         (vec_unpacks_float_lo_v4si): Ditto.
13879         (vec_unpacku_float_hi_v4si): Ditto.
13880         (vec_unpacku_float_lo_v4si): Ditto.
13881         (movmisalign<mode>): Ditto.
13882         (vector_ceil<mode>2): New patterns for vectorizing math library.
13883         (vector_floor<mode>2): Ditto.
13884         (vector_btrunc<mode>2): Ditto.
13885         (vector_copysign<mode>3): Ditto.
13886
13887         * config/rs6000/predicates.md (easy_vector_constant_msb): New
13888         predicate for setting the high bit in each word, used for copysign.
13889
13890         * config/rs6000/ppc-asm.h (f19): Whitespace.
13891         (f32-f63): Define if VSX.
13892         (v0-v31): Define if Altivec.
13893         (vs0-vs63): Define if VSX.
13894
13895         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
13896
13897         * config/rs6000/power7.md: New file, provide tuning parameters for
13898         -mcpu=power7.
13899
13900         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
13901         (rs6000_cpu_cpp_builtins): Ditto.
13902         (altivec_overloaded_builtins): Ditto.
13903         (altivec_resolve_overloaded_builtin): Ditto.
13904
13905         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
13906         debug switch to disable vectorizing simple math builtin
13907         functions.
13908
13909         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
13910         Vectorize simple math builtin functions.
13911         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
13912         hook to vectorize math builtins.
13913         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
13914         (rs6000_builtin_conversion): Add VSX/power7 support.
13915         (rs6000_builtin_vec_perm): Ditto.
13916         (vsplits_constant): Add support for loading up a vector constant
13917         with just the high bit set in each part.
13918         (rs6000_expand_vector_init): Add VSX/power7 support.
13919         (rs6000_expand_vector_set): Ditto.
13920         (rs6000_expand_vector_extract): Ditto.
13921         (rs6000_emit_move): Ditto.
13922         (bdesc_3arg): Ditto.
13923         (bdesc_2arg): Ditto.
13924         (bdesc_1arg): Ditto.
13925         (rs6000_expand_ternop_builtin): Ditto.
13926         (altivec_expand_builtin): Ditto.
13927         (rs6000_expand_unop_builtin): Ditto.
13928         (rs6000_init_builtins): Ditto.
13929         (altivec_init_builtins): Ditto.
13930         (builtin_function_type): Ditto.
13931         (rs6000_common_init_builtins): Ditto.
13932         (rs6000_handle_altivec_attribute); Ditto.
13933         (rs6000_mangle_type): Ditto.
13934         (rs6000_vector_mode_supported_p): Ditto.
13935         (rs6000_mode_dependent_address): Altivec addresses with AND -16
13936         are mode dependent.
13937
13938         * config/rs6000/vsx.md: New file for VSX support.
13939
13940         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
13941         identifing values with just the most significant bit set.
13942         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
13943         vectorized builtins.
13944
13945         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
13946         (UNSPEC_VRFIM): Delete.
13947         (splitter for loading up vector with most significant bit): New
13948         splitter for vectorizing copysign.
13949         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
13950         vectorizing simple math functions.
13951         (altivec_vrfip): Add support for vectorizing simple math functions.
13952         (altivec_vrfim): Ditto.
13953         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
13954
13955         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
13956         (power7.md, vsx.md): Include for power7 support.
13957         (copysigndf3): Use VSX instructions if -mvsx.
13958         (negdf2_fpr): Ditto.
13959         (absdf2_fpr): Ditto.
13960         (nabsdf2_fpr): Ditto.
13961         (adddf3_fpr): Ditto.
13962         (subdf3_fpr): Ditto.
13963         (muldf3_fpr): Ditto.
13964         (divdf3_fpr): Ditto.
13965         (fix_truncdfdi2_fpr): Ditto.
13966         (cmpdf_internal1): Ditto.
13967         (fred, fred_fpr): Convert into expander/insn to add VSX support.
13968         (btruncdf2, btruncdf2_fpr): Ditto.
13969         (ceildf2, ceildf2_fpr): Ditto.
13970         (floordf2, floordf2_fpr): Ditto.
13971         (floatdidf2, floatdidf2_fpr): Ditto.
13972         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
13973         (fmsubdf4_fpr): Ditto.
13974         (fnmadddf4_fpr_1): Ditto.
13975         (fnmadddf4_fpr_2): Ditto.
13976         (fnmsubdf4_fpr_1): Ditto.
13977         (fnmsubdf4_fpr_2): Ditto.
13978         (fixuns_truncdfdi2): Add expander for VSX support.
13979         (fix_truncdfdi2): Ditto.
13980         (fix_truncdfsi2): Ditto.
13981         (ftruncdf2): Ditto.
13982         (btruncsf2): Whitespace.
13983         (movdf_hardfloat32): Add support for VSX registers.
13984         (movdf_softfloat32): Ditto.
13985         (movdf_hardfloat64): Ditto.
13986         (movdf_hardfloat64_mfpgpr): Ditto.
13987         (movdf_softfloat64): Ditto.
13988         (movti splitters): Add check for vector registers supporting
13989         TImode in the future.
13990         (bpermd): Add power7 bpermd instruction.
13991
13992         * config/rs6000/altivec.h (vec_div): Define if VSX.
13993         (vec_mul): Ditto.
13994         (vec_msub): Ditto.
13995         (vec_nmadd): Ditto.
13996         (vec_nearbyint): Ditto.
13997         (vec_rint): Ditto.
13998         (vec_sqrt): Ditto.
13999         (all predicates): Use the generic builtin function, and not the V4SF
14000         specific function so that the predicates will work with VSX's V2DF.
14001         (vec_all_*): Ditto.
14002         (vec_any_*): Ditto.
14003
14004         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
14005         Document new VSX functions and types.
14006
14007         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
14008         switches.
14009
14010         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
14011         "wa", and "j" constraints.  Modify "v" to talk about Altivec
14012         instead of just vector.
14013
14014 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
14015
14016         PR debug/26475
14017         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
14018         location for phi arguments.
14019         (rewrite_update_phi_arguments): Find locations for reaching defs.
14020         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
14021         Add location to add_phi_arg calls.
14022         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
14023         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
14024         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
14025         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
14026         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
14027         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
14028         * tree-phinodes.c (make_phi_node): Initialize location.
14029         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
14030         (add_phi_arg): Add location parameter.
14031         (remove_phi_arg_num): Move location when moving phi argument.
14032         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
14033         location.
14034         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
14035         slpeel_update_phi_nodes_for_guard1,
14036         slpeel_update_phi_nodes_for_guard2,
14037         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
14038         vect_loop_versioning): Set locations.
14039         * tree-parloops.c (create_phi_for_local_result,
14040         transform_to_exit_first_loop, create_parallel_loop): Add locations.
14041         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
14042         * tree-vect-loop.c (get_initial_def_for_induction,
14043         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
14044         locations.
14045         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
14046         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
14047         (gimple_phi_arg_set_location): New.  Set locus.
14048         (gimple_phi_arg_has_location): New.  Check for locus.
14049         (redirect_edge_var_map_location): New.  Return locus from var_map.
14050         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
14051         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
14052         combining PHI arguments.
14053         (cond_store_replacement): Set location.
14054         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
14055         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
14056         scop_add_exit_phis_edge): Add locations.
14057         * tree-cfgcleanup.c (remove_forwarder_block,
14058         remove_forwarder_block_with_phi): Add locations.
14059         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
14060         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
14061         locations.
14062         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
14063         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
14064         flush_pending_stmts): Add source location.
14065         * lambda-code.c (perfect_nestify): Maintain location stack with argument
14066         stack to preserve locations.
14067         * tree-vect-stmts.c (vectorizable_load): Add location.
14068         * tree-inline.c (copy_phis_for_bb): Copy locus.
14069         (setup_one_parameter): Add call locus to inlined parameter stmts.
14070         (initialize_inlined_parameters): Pass in call location as parameter
14071         assignment locus.
14072         (tree_function_versioning): Pass location to setup_one_parameter.
14073         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
14074         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
14075         copy and edge lists.
14076         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
14077         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
14078         locus parameter and override the stmt default if provided.
14079         (new_elim_graph, clear_elim_graph, delete_elim_graph,
14080         elim_graph_add_edge, elim_graph_remove_succ_edge,
14081         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
14082         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
14083         eliminate_phi):  Add locus info in elimination graph for each edge and
14084         value copy.
14085         (insert_backedge_copies): Copy locus if present.
14086         * tree-flow.h (struct _edge_var_map): Add locus field.
14087         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
14088         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
14089         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
14090         locations.
14091         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
14092
14093 2009-07-30  Martin Jambor  <mjambor@suse.cz>
14094
14095         PR tree-optimization/40570
14096         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
14097         use inlining loops.
14098
14099 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
14100
14101         * ssa-loop-manip.c: Include langhooks.h.
14102         (rewrite_phi_with_iv): New.
14103         (rewrite_all_phi_nodes_with_iv): New.
14104         (canonicalize_loop_ivs): Move here from tree-parloops.c.
14105         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
14106         * tree-parloops.c (loop_parallel_p): Move out all conditions
14107         except dependency check.
14108         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
14109         (gen_parallel_loop): Call canonicalize_loop_ivs without
14110         reduction_list argument.
14111         (build_new_reduction): New.
14112         (gather_scalar_reductions): New.
14113         (try_get_loop_niter): New.
14114         (try_create_reduction_list): New.
14115         (parallleize_loops): Change the parallel conditions check.
14116         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
14117         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
14118
14119 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
14120
14121         * opt-functions.awk (opt_args): Allow argument to be enclosed in
14122         curly braces.
14123         * doc/options.texi (Option properties):  Mention new quoting syntax.
14124
14125 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14126
14127         * config/alpha/alpha.c (alpha_start_function):
14128         Handle VMS_DEBUG_MAIN_POINTER
14129         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
14130         * doc/invoke.texi: Document -mdebug-main switch.
14131
14132 2009-07-29  Richard Henderson  <rth@redhat.com>
14133
14134         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
14135         (cgraph_create_edge_including_clones): Likewise.
14136         * tree-inline.c (copy_bb): Operate on the correct edges
14137         when updating the callgraph.
14138
14139 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14140
14141         * config/alpha/vms-cc.c: Deleted.
14142         * config/alpha/vms-ld.c: Deleted.
14143         * config/alpha/t-vms64: Moved to config/vms
14144         * config/alpha/vms-crt0-64.c: Moved to config/vms
14145         * config/alpha/vms-crt0.c: Moved to config/vms
14146         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
14147         * config/alpha/vms-psxcrt0.c: Moved to config/vms
14148         * config/alpha/xm-vms.h: Moved to config/vms
14149         * config/alpha/x-vms: Moved to config/vms
14150         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
14151         config/vms/t-vms.
14152         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
14153         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
14154         (version): Set.
14155         * config/vms/t-vms64: Moved here from config/alpha
14156         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
14157         (argc,argv,envp): Enforce 32bit malloc'ing.
14158         * config/vms/vms-psxcrt0-64.c: Likewise.
14159         * config/vms/vms-crt0.c: Moved here from config/alpha.
14160         * config/vms/vms-psxcrt0.c: Likewise.
14161         * config/vms/vms-crtl-64.h: New file.
14162         * config/vms/vms-crtl.h: New file.
14163         * config/vms/vms.opt: New file.
14164         * config/vms/xm-vms64.h: New file.
14165         * config/vms/xm-vms.h: Moved here from config/alpha.
14166         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
14167         Set.
14168         * config/vms/x-vms: Moved here from config/alpha.
14169         (version, VMS_EXTRA_PARTS): Moved to t-vms.
14170         (vms-ld.o, vms-cc.o): Removed.
14171         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
14172
14173 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14174
14175         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
14176         correct stack (obvious VMS fix).
14177
14178 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
14179
14180         * dwarf2out.c (output_file_names): Output VMS style file name, size,
14181         date, version info if VMS_DEBUGGING_INFO defined.
14182         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
14183         size, date calculating code moved here.
14184
14185 2009-07-29  Paul Brook  <paul@codesourcery.com>
14186
14187         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
14188         do_push/do_pop.
14189
14190 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
14191
14192         PR target/40577
14193         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
14194         to DImode when generating insq_le insn.
14195
14196 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14197
14198         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
14199         New macro set for VMS_DEBUGGGING_INFO.
14200         (AT_string_form): Use it.
14201
14202 2009-07-28  DJ Delorie  <dj@redhat.com>
14203
14204         * config/mep/mep.c (vtext_section): New.
14205         (vftext_section): New.
14206         (ftext_section): New.
14207         (mep_select_section): Add support for functions.
14208         (mep_unique_section): Likewise.
14209         (mep_asm_init_sections): Likewise.
14210         (mep_encode_section_info): Remove it from here.
14211
14212         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
14213
14214 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
14215
14216         * tree.h (TREE_DEPRECATED): Document it is used for types too.
14217         (TYPE_VECTOR_OPAQUE): Use default_def_flag
14218
14219 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
14220
14221         * dwarf2out.c (output_file_names): Test new macro
14222         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
14223         (add_comp_dir_attribute): Likewise.
14224
14225 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
14226
14227         * config/i386/mingw-w64.h (LINK_SPEC): Add
14228         separating space between commands.
14229
14230 2009-07-28  Jan Hubicka  <jh@suse.cz>
14231
14232         PR tree-optimization/40759
14233         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
14234         for renaming.
14235
14236 2009-07-27  DJ Delorie  <dj@redhat.com>
14237
14238         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
14239         types are dword-aligned.
14240         (mep_expand_va_start): Likewise.
14241
14242 2009-07-27  Olivier Hainque  <hainque@adacore.com>
14243             Douglas B Rupp  <rupp@gnat.com>
14244
14245         * convert.c (convert_to_pointer): Don't assume the target
14246         pointer type is POINTER_SIZE long. Fetch its precision instead.
14247
14248 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
14249
14250         * system.h (fopen): Undefine if macro.
14251
14252 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
14253
14254         * dwarf2out.c (output_cfi_p): Removed.
14255         (output_cfis): New function.
14256         (output_fde): New function, split from output_call_frame_info.
14257         (output_call_frame_info): Use it.
14258         (dwarf2out_switch_text_section): Use output_cfis.
14259
14260 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14261
14262         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
14263         TARGET_BI_ARCH is specified without enabling SJLJ.
14264         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
14265         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
14266
14267 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
14268
14269         * arm.md (negdi2): Use DImode if forcing a value into a register.
14270
14271 2009-07-26  Ira Rosen  <irar@il.ibm.com>
14272
14273         PR tree-optimization/40801
14274         * tree-vect-stmts.c (vectorizable_call): Get previous copy
14275         of vector operand from the previous copy of vector statement.
14276         Pass the correct definition type value to
14277         vect_get_vec_def_for_stmt_copy().
14278
14279 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14280
14281         * collect2.c (scan_libraries): Use CONST_CAST2 to perform char ** to
14282         const char ** conversion.
14283
14284 2009-07-25 David Daney <ddaney@caviumnetworks.com>
14285
14286         * system.h (gcc_assert): Invoke __builtin_unreachable() instead of
14287         fancy_abort() if !ENABLE_ASSERT_CHECKING.
14288         (gcc_unreachable): Invoke __builtin_unreachable() if
14289         !ENABLE_ASSERT_CHECKING.
14290
14291 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14292
14293         PR rtl-optimization/40445
14294         * emit-rtl.c (next_nonnote_insn_bb): New function.
14295         * rtl.h (next_nonnote_insn_bb): Declare new function.
14296         * cfgcleanup.c (try_optimize_cfg): Don't remove an empty block
14297         with no successors that is the successor of the ENTRY_BLOCK.
14298         Continue from the top after removing an empty fallthrough block.
14299         * cfgrtl.c (get_last_bb_insn): Call next_nonnote_insn_bb instead
14300         of next_nonnote_insn.
14301
14302 2009-07-25  David Daney  <ddaney@caviumnetworks.com>
14303
14304         * cfgcleanup.c (old_insns_match_p): Handle the case of empty blocks.
14305
14306 2009-07-25  Martin Jambor  <mjambor@suse.cz>
14307
14308         * c-common.c (c_common_attribute_table): New element for noclone.
14309         (handle_noclone_attribute): New function. Forward-declare.
14310         * tree-inline.c (tree_versionable_function_p): Check for noclone
14311         attribute.
14312         * doc/extend.texi (Labels as Values): Document need for noclone.
14313         (Function Attributes): Document noclone attribute.
14314
14315 2009-07-25  Jakub Jelinek  <jakub@redhat.com>
14316
14317         PR rtl-optimization/34999
14318         * dwarf2out.c (struct dw_fde_struct): Add dw_fde_switch_cfi
14319         and dw_fde_switched_cold_to_hot fields.
14320         (output_cfi_p): New function.
14321         (output_call_frame_info): If fde->dw_fde_switched_sections,
14322         output 2 FDEs instead of one with corrupted header.
14323         (dwarf2out_do_cfi_startproc): New function.
14324         (dwarf2out_begin_prologue): Use it.  Initialize fde->dw_fde_switch_cfi
14325         and fde->dw_fde_switched_cold_to_hot.
14326         (dwarf2out_switch_text_section): Compute
14327         fde->dw_fde_switched_cold_to_hot.  Switch to new text section here.
14328         If dwarf2out_do_cfi_asm, emit .cfi_endproc before it and call
14329         dwarf2out_do_cfi_startproc plus emit again currently active CFI insns.
14330         Otherwise, compute fde->dw_fde_switch_cfi.
14331
14332 2009-07-24  Cary Coutant  <ccoutant@google.com>
14333
14334         * tree-cfg.c (assign_discriminator): Add explicit parentheses.
14335
14336 2009-07-24  Cary Coutant  <ccoutant@google.com>
14337
14338         * cfghooks.c (split_block): Copy discriminator to new block.
14339         * tree-cfg.c (assign_discriminator): Check location of last
14340         instruction in block as well as first.
14341
14342 2009-07-24  Uros Bizjak  <ubizjak@gmail.com>
14343
14344         * config/i386/linux.c: Use fputs or putc instead of fprintf
14345         where appropriate.
14346         * config/i386/gas.h: Ditto.
14347         * config/i386/x86-64.h: Ditto.
14348         * config/i386/att.h: Ditto.
14349
14350 2009-07-24  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
14351
14352         * expmed.c (emit_store_flag): Use a recursive call to optimize the
14353         xor case.
14354
14355 2009-07-24  Martin Jambor  <mjambor@suse.cz>
14356
14357         * ipa-prop.h (struct ipa_node_params): New flag node_enqued.
14358         (ipa_push_func_to_list_1): Declare.
14359         (ipa_push_func_to_list): New function.
14360
14361         * ipa-prop.c (ipa_push_func_to_list_1): New function.
14362         (ipa_init_func_list): Call ipa_push_func_to_list_1.
14363         (ipa_push_func_to_list): Removed.
14364         (ipa_pop_func_from_list): Clear node_enqueued flag.
14365
14366 2009-07-24  Andreas Krebbel  <krebbel1@de.ibm.com>
14367
14368         * config/s390/s390.c (override_options): Default
14369         max-unrolled-insns to 100 for z10 tuning.
14370
14371 2009-07-24  Tobias Grosser  <grosser@fim.uni-passau.de>
14372
14373         * Makefile.in (TREE_DATA_REF_H, tree-vrp.o, tree-cfg.o, tree-if-conv.o
14374         tree-ssa-loop.o, tree-ssa-loop-niter.o, tree-ssa-loop-ivcanon.o,
14375         tree-ssa-loop-prefetch.o, tree-predcom.o, tree-affine.o,
14376         tree-scalar-evolution.o, tree-data-ref.o, tree-vect-loop.o,
14377         tree-vect-data-refs.o, tree-loop-linear.o, tree-loop-distribution.o
14378         tree-parloops.o, tree-pretty-printer.o, fold-const.o, tree-ssa-dce.o,
14379         lambda-code.o, params.o): Cleanup use of SCEV_H and TREE_DATA_REF_H.
14380
14381 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
14382
14383         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR): Remove and
14384         use default set in mingw32.h header.
14385         * config/i386/mingw32.h (STANDARD_INCLUDE_DIR): Use for 32-bit and
14386         64-bit /mingw/include path.
14387         (STANDARD_STARTFILE_PREFIX_1): Use for 32-bit and 64-bit /mingw/lib
14388         path.
14389
14390 2009-07-23  Neil Vachharajani  <nvachhar@google.com>
14391
14392         PR rtl-optimization/40209
14393         * loop-iv.c (iv_analysis_loop_init): Call df_note_add_problem.
14394
14395 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14396
14397         * config/i386/i386.c: Use ASM_LONG instead of .long.  Concatenate
14398         ASM_LONG, LPREFIX, MCOUNT_NAME and PROFILE_COUNT_REGISTER strings
14399         with the rest of string where appropriate.  Use fputs or putc
14400         instead of fprintf where appropriate.
14401
14402 2009-07-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
14403             Pat Haugen  <pthaugen@us.ibm.com>
14404             Revital Eres <ERES@il.ibm.com>
14405
14406         * config/rs6000/vector.md: New file.  Move most of the vector
14407         expander support here from altivec.md to allow for the VSX vector
14408         unit in the future.  Add support for secondary_reload patterns.
14409         Rewrite the patterns for vector comparison, and vector comparison
14410         predicate instructions so that the RTL expresses the desired
14411         behavior, instead of using unspec.
14412
14413         * config/rs6000/constraints.md ("f" constraint): Use
14414         rs6000_constraints to hold the precalculated register class.
14415         ("d" constraint): Ditto.
14416         ("wd" constraint): New constraint for VSX.
14417         ("wf" constraint): Ditto.
14418         ("ws" constraint): Ditto.
14419         ("wa" constraint): Ditto.
14420         ("wZ" constraint): Ditto.
14421         ("j" constraint): Ditto.
14422
14423         * config/rs6000/predicates.md (vsx_register_operand): New
14424         predicate for VSX.
14425         (vfloat_operand): New predicate for vector.md.
14426         (vint_operand): Ditto.
14427         (vlogical_operand): Ditto.
14428         (easy_fp_constant): If VSX, 0.0 is an easy constant.
14429         (easy_vector_constant): Add VSX support.
14430         (altivec_indexed_or_indirect_operand): New predicate for
14431         recognizing Altivec style memory references with AND -16.
14432
14433         * config/rs6000/rs6000.c (rs6000_vector_reload): New static global
14434         for vector secondary reload support.
14435         (rs6000_vector_reg_class): Delete, replacing it with
14436         rs6000_constraints.
14437         (rs6000_vsx_reg_class): Ditto.
14438         (rs6000_constraints): New array to hold the register classes of
14439         each of the register constraints that can vary at runtime.
14440         (builtin_mode_to_type): New static array for builtin function type
14441         creation.
14442         (builtin_hash_table): New static hash table for builtin function
14443         type creation.
14444         (TARGET_SECONDARY_RELOAD): Define target hook.
14445         (TARGET_IRA_COVER_CLASSES): Ditto.
14446         (rs6000_hard_regno_nregs_internal): If -mvsx, floating point
14447         registers are 128 bits if VSX memory reference instructions are used.
14448         (rs6000_hard_regno_mode_ok): For VSX, only check if the VSX memory
14449         unit is being used.
14450         (rs6000_debug_vector_unit): Move into rs6000_debug_reg_global.
14451         (rs6000_debug_reg_global): Move -mdebug=reg statements here.
14452         Print several of the scheduling related parameters.
14453         (rs6000_init_hard_regno_mode_ok): Switch to putting constraints in
14454         rs6000_constraints instead of rs6000_vector_reg_class.  Move
14455         -mdebug=reg code to rs6000_debug_reg_global.  Add support for
14456         -mvsx-align-128 debug switch.  Drop testing float_p if VSX or
14457         Altivec.  Add VSX support.  Setup for secondary reload support on
14458         Altivec/VSX registers.
14459         (rs6000_override_options): Make power7 set the scheduling groups
14460         like the power5.  Add support for new debug switches to override
14461         the scheduling defaults.  Temporarily disable -mcpu=power7 from
14462         setting -mvsx.  Add support for debug switches -malways-hint,
14463         -msched-groups, and -malign-branch-targets.
14464         (rs6000_buitlin_conversion): Add support for returning unsigned
14465         vector conversion functions to fix regressions due to stricter
14466         type checking.
14467         (rs6000_builtin_mul_widen_even): Ditto.
14468         (rs6000_builtin_mul_widen_odd): Ditto.
14469         (rs6000_builtin_vec_perm): Ditto.
14470         (rs6000_vec_const_move): On VSX, use xxlxor to clear register.
14471         (rs6000_expand_vector_init): Initial VSX support for using xxlxor
14472         to zero a register.
14473         (rs6000_emit_move): Fixup invalid const symbol_ref+reg that is
14474         generated upstream.
14475         (bdesc_3arg): Add builtins for unsigned types.  Add builtins for
14476         VSX types for bit operations.  Changes to accomidate vector.md.
14477         (bdesc_2arg): Ditto.
14478         (bdesc_1arg): Ditto.
14479         (struct builtin_description_predicates): Rewrite predicate
14480         handling so that RTL describes the operation, instead of passing
14481         the instruction to be used as a string argument.
14482         (bdesc_altivec_preds): Ditto.
14483         (altivec_expand_predicate_builtin): Ditto.
14484         (altivec_expand_builtin): Ditto.
14485         (rs6000_expand_ternop_builtin): Use a switch instead of an if
14486         statement for vsldoi support.
14487         (altivec_expand_ld_builtin): Change to use new names from vector.md.
14488         (altivec_expand_st_builtin): Ditto.
14489         (paired_expand_builtin): Whitespace changes.
14490         (rs6000_init_builtins): Add V2DF/V2DI types.  Initialize the
14491         builtin_mode_to_type table for secondary reload.  Call
14492         builtin_function_type to build random builtin functions.
14493         (altivec_init_builtins): Change to use builtin_function_type to
14494         create builtin function types dynamically as we need them.
14495         (builtin_hash_function): New support for hashing the tree types
14496         for builtin function as we need it, rather than trying to build
14497         all of the trees that we need.  Add initial preliminary VSX support.
14498         (builtin_function_type): Ditto.
14499         (builtin_function_eq): Ditto.
14500         (builtin_hash_struct): Ditto.
14501         (rs6000_init_builtins): Ditto.
14502         (rs6000_common_init_builtins): Ditto.
14503         (altivec_init_builtins): Ditto.
14504         (rs6000_common_init_builtins): Ditto.
14505         (enum reload_reg_type): New enum for simplifing reg classes.
14506         (rs6000_reload_register_type): Simplify register classes into GPR,
14507         Vector, and other registers.  Altivec and VSX addresses in reload.
14508         (rs6000_secondary_reload_inner): Ditto.
14509         (rs6000_ira_cover_classes): New target hook, that returns the
14510         appropriate cover classes, based on -mvsx being used or not.
14511         (rs6000_secondary_reload_class): Add VSX support.
14512         (get_vec_cmp_insn): Delete, rewrite vector conditionals.
14513         (get_vsel_insn): Ditto.
14514         (rs6000_emit_vector_compare): Rewrite vector conditional support
14515         so that where we can, we use RTL operators, instead of blindly use
14516         UNSPEC.
14517         (rs6000_emit_vector_select): Ditto.
14518         (rs6000_emit_vector_cond_expr): Ditto.
14519         (rs6000_emit_minmax): Directly generate min/max under altivec, vsx.
14520         (create_TOC_reference): Add -mdebug=addr support.
14521         (emit_frame_save): VSX loads/stores need register indexed addressing.
14522
14523         * config/rs6000/rs6000.md: Include vector.md.
14524
14525         * config/rs6000/t-rs6000 (MD_INCLUDES): Add vector.md.
14526
14527         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
14528         support for V2DI, V2DF in logical, permute, select operations.
14529
14530         * config/rs6000/rs6000.opt (-mvsx-scalar-double): Add new debug
14531         switch for vsx/power7.
14532         (-mvsx-scalar-memory): Ditto.
14533         (-mvsx-align-128): Ditto.
14534         (-mallow-movmisalign): Ditto.
14535         (-mallow-df-permute): Ditto.
14536         (-msched-groups): Ditto.
14537         (-malways-hint): Ditto.
14538         (-malign-branch-targets): Ditto.
14539
14540         * config/rs6000/rs6000.h (IRA_COVER_CLASSES): Delete, use target
14541         hook instead.
14542         (IRA_COVER_CLASSES_PRE_VSX): Cover classes if not -mvsx.
14543         (IRA_COVER_CLASSES_VSX): Cover classes if -mvsx.
14544         (rs6000_vector_reg_class): Delete.
14545         (rs6000_vsx_reg_class): Ditto.
14546         (enum rs6000_reg_class_enum): New enum for the constraints that
14547         vary based on target switches.
14548         (rs6000_constraints): New array to hold the register class for all
14549         of the register constraints that vary based on the switches used.
14550         (ALTIVEC_BUILTIN_*_UNS): Add unsigned builtin functions.
14551         (enum rs6000_builtins): Add unsigned varients for the builtin
14552         declarations returned by target hooks for expanding multiplies,
14553         select, and permute operations.  Add VSX builtins.
14554         (enum rs6000_builtin_type_index): Add entries for VSX.
14555         (V2DI_type_node): Ditto.
14556         (V2DF_type_node): Ditto.
14557         (unsigned_V2DI_type_node): Ditto.
14558         (bool_long_type_node): Ditto.
14559         (intDI_type_internal_node): Ditto.
14560         (uintDI_type_internal_node): Ditto.
14561         (double_type_internal_node): Ditto.
14562
14563         * config/rs6000/altivec.md (whole file): Move all expanders to
14564         vector.md from altivec.md.  Rename insn matching functions to be
14565         altivec_foo.
14566         (UNSPEC_VCMP*): Delete, rewrite vector comparisons.
14567         (altivec_vcmp*): Ditto.
14568         (UNSPEC_VPERM_UNS): New, add for unsigned types using vperm.
14569         (VM): New iterator for moves that includes the VSX types.
14570         (altivec_vperm_<mode>): Add VSX types.  Add unsigned types.
14571         (altivec_vperm_<mode>_uns): New, for unsigned types.
14572         (altivec_vsel_*): Rewrite vector comparisons and predicate builtins.
14573         (altivec_eq<mode>): Ditto.
14574         (altivec_gt<mode>): Ditto.
14575         (altivec_gtu<mode>): Ditto.
14576         (altivec_eqv4sf): Ditto.
14577         (altivec_gev4sf): Ditto.
14578         (altivec_gtv4sf): Ditto.
14579         (altivec_vcmpbfp_p): Ditto.
14580
14581 2009-07-23  Richard Earnshaw  <rearnsha@arm.com>
14582
14583         * arm.md (split for ior/xor with shift and zero-extend): Cast op3 to
14584         unsigned HWI.
14585
14586 2009-07-23  Uros Bizjak  <ubizjak@gmail.com>
14587
14588         PR target/40832
14589         * config/i386/i386.c (output_387_ffreep): Rewrite to use
14590         ASM_SHORT instead of .word.
14591         * config/i386/i386.md (*tls_global_dynamic_64): Use ASM_SHORT
14592         instead of .word in asm template.
14593
14594 2009-07-22  Vladimir Makarov  <vmakarov@redhat.com>
14595
14596         PR target/37488
14597         * ira-lives.c (bb_has_abnormal_call_pred): New function.
14598         (process_bb_node_lives): Use it.
14599
14600         * ira.c (setup_cover_and_important_classes): Don't setup
14601         ira_important_class_nums.  Add cover classes to the end of
14602         important classes.
14603         (cover_class_order, comp_reg_classes_func, reorder_important_classes):
14604         New.
14605         (find_reg_class_closure): Use reorder_important_classes.
14606
14607         * config/i386/i386.h (IRA_COVER_CLASSES): Remove.
14608
14609         * config/i386/i386.c (i386_ira_cover_classes): New function.
14610         (TARGET_IRA_COVER_CLASSES): Redefine.
14611
14612         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Add a comment about
14613         importance of order of cover classes in the array.
14614
14615 2009-07-22  Diego Novillo  <dnovillo@google.com>
14616
14617         * tree-pass.h (TDF_EH): Define.
14618         * gimple-pretty-print.c (dump_gimple_stmt): If FLAGS
14619         contains TDF_EH, print the EH region number holding GS.
14620         * tree-dump.c (dump_options): Add "eh".
14621         * doc/invoke.texi: Document it.
14622
14623 2009-07-22  Doug Kwan  <dougkwan@google.com>
14624
14625         * config/arm/arm.md (subdi3) Copy non-reg values to DImode registers.
14626
14627 2009-07-22  Michael Matz  <matz@suse.de>
14628
14629         PR tree-optimization/35229
14630         PR tree-optimization/39300
14631
14632         * tree-ssa-pre.c (includes): Include tree-scalar-evolution.h.
14633         (inhibit_phi_insertion): New function.
14634         (insert_into_preds_of_block): Call it for REFERENCEs.
14635         (init_pre): Initialize and finalize scalar evolutions.
14636         * Makefile.in (tree-ssa-pre.o): Depend on tree-scalar-evolution.h .
14637
14638 2009-07-22  Uros Bizjak  <ubizjak@gmail.com>
14639
14640         * config/i386/predicates.md (zero_extended_scalar_load_operand):
14641         Use CONST_VECTOR_NUNITS to determine number of elements.
14642
14643 2009-07-22  Andreas Krebbel  <krebbel1@de.ibm.com>
14644
14645         * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
14646         (U, W): Constraints are now deprecated and will be removed if we
14647         run out of letters.
14648         * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
14649         the file.
14650         ("prefetch"): Add the stcmh instruction for prefetching.
14651         * config/s390/s390.c (s390_symref_operand_p): Function moved. No
14652         changes.
14653         (s390_short_displacement): Return always true if compiling for
14654         machines not providing the long displacement facility.
14655         (s390_mem_constraint): Support the new constraint letter Z.
14656         (s390_check_qrst_address): New function.
14657
14658 2009-07-21  DJ Delorie  <dj@redhat.com>
14659
14660         * config/mep/mep.c (mep_legitimize_arg): Leave control registers
14661         alone too.
14662
14663 2009-07-21  Jason Merrill  <jason@redhat.com>
14664
14665         * c-common.c (max_tinst_depth): Increase default to 1024.
14666
14667 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14668
14669         * config/i386/sse.md (vec_unpacku_float_hi_v4si): New expander.
14670         (vec_unpacku_float_lo_v4si): Ditto.
14671
14672 2009-07-21  Uros Bizjak  <ubizjak@gmail.com>
14673
14674         PR target/40811
14675         * config/i386/sse.md (sse2_cvtudq2ps): New expander.
14676         (enum ix86_builtins): Add IX86_BUILTIN_CVTUDQ2PS.
14677         (builtin_description): Add __builtin_ia32_cvtudq2ps.
14678         (ix86_vectorize_builtin_conversion): Handle IX86_BUILTIN_CVTUDQ2PS.
14679
14680 2009-07-21  Jakub Jelinek  <jakub@redhat.com>
14681
14682         PR tree-optimization/40813
14683         * tree-inline.c (copy_bb): Regimplify RHS after last stmt, not before
14684         it.
14685
14686 2009-07-21  Kaz Kojima  <kkojima@gcc.gnu.org>
14687
14688         * config/sh/sh.c (sh_gimplify_va_arg_expr): Wrap the result
14689         with a NOP_EXPR if needed.
14690
14691 2009-07-21  Paul Brook <paul@codesourcery.com>
14692
14693         * tree-vectorizer.c (increase_alignment): Handle nested arrays.
14694         Terminate debug dump with newline.
14695
14696 2009-07-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14697
14698         * pa.c (compute_zdepwi_operands): Limit deposit length to 32 - lsb.
14699         Cast "1" to unsigned HOST_WIDE_INT.
14700         (compute_zdepdi_operands): Limit maximum length to 64 bits.  Limit
14701         deposit length to the maximum length - lsb.  Extend length if
14702         HOST_BITS_PER_WIDE_INT is 32.
14703
14704 2009-07-20  Olatunji Ruwase <tjruwase@google.com>
14705
14706         * cgraph.h (constant_pool_htab): New function.
14707         (constant_descriptor_tree): Move from varasm.c.
14708         * varasm.c (constant_pool_htab): New function.
14709         (constant_descriptor_tree): Move to cgraph.h.
14710
14711 2009-07-20  Olatunji Ruwase  <tjruwase@google.com>
14712
14713         * toplev.c: Invoke FINISH_UNIT callbacks before call to finalize().
14714
14715 2009-07-20  Shujing Zhao  <pearly.zhao@oracle.com>
14716
14717         * Makefile.in (TREE_INLINE_H, tree-inline.o, cgraph.o): Remove
14718         $(VARRAY_H).
14719
14720 2009-07-20  Xinliang David Li  <davidxl@google.com>
14721
14722         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add length check.
14723
14724 2009-07-20  Adam Nemet  <anemet@caviumnetworks.com>
14725
14726         * config/mips/mips.md (move_type): Add arith.
14727         (type): Handle arith.
14728         (zero_extendsidi2): Rename this into ...
14729         (*zero_extendsidi2): ... this.  Don't match if ISA_HAS_EXT_INS.
14730         (zero_extendsidi2): New expander.
14731         (*zero_extendsidi2_dext): New pattern.
14732
14733 2009-07-20  Nick Clifton  <nickc@redhat.com>
14734
14735         * config.gcc (mips64-*-*): Add definition of tm_defines in order
14736         to set MIPS_ABI_DEFAULT.
14737         * config/mips/vr.h (MIPS_ABI_DEFAULT): Remove definition.
14738
14739 2009-07-20  Jakub Jelinek  <jakub@redhat.com>
14740
14741         * tree-object-size.c (addr_object_size): Handle unions with
14742         array in it as last field of structs in __bos (, 1) as __bos (, 0).
14743
14744         PR tree-optimization/40792
14745         * tree.c (build_function_type_skip_args): Remove bogus assert.
14746
14747 2009-07-20  Jan Hubicka  <jh@suse.cz>
14748             Martin Jambor  <mjambor@suse.cz>
14749
14750         * cgraph.h (combined_args_to_skip): New field.
14751         * cgraph.c (cgraph_create_virtual_clone): Properly handle
14752         combined_args_to_skip and args_to_skip.
14753         * tree-inline.c (update_clone_info): New function.
14754         (tree_function_versioning): Call update_clone_info.
14755         * cgraphunit.c (cgraph_materialize_clone): Dump materialized
14756         functions.
14757         (cgraph_materialize_all_clones): More extensive dumping, working
14758         with combined_args_to_skip rather than args_to_skip.
14759
14760 2009-07-20  Ira Rosen  <irar@il.ibm.com>
14761
14762         * tree-vectorizer.h (vectorizable_condition): Add parameters.
14763         * tree-vect-loop.c (vect_is_simple_reduction): Support COND_EXPR.
14764         (get_initial_def_for_reduction): Likewise.
14765         (vectorizable_reduction): Skip the check of first operand in case
14766         of COND_EXPR. Add check that it is outer loop vectorization if
14767         nested cycle was detected. Call vectorizable_condition() for
14768         COND_EXPR. If reduction epilogue cannot be created do not fail for
14769         nested cycles (if it is not double reduction). Assert that there
14770         is only one type in the loop in case of COND_EXPR. Call
14771         vectorizable_condition() to vectorize COND_EXPR.
14772         * tree-vect-stmts.c (vectorizable_condition): Update comment.
14773         Add parameters. Allow nested cycles if called from
14774         vectorizable_reduction(). Use reduction vector variable if provided.
14775         (vect_analyze_stmt): Call vectorizable_reduction() before
14776         vectorizable_condition().
14777         (vect_transform_stmt): Update call to vectorizable_condition().
14778
14779 2009-07-20  Christian Bruel  <christian.bruel@st.com>
14780
14781         * config/sh/sh.opt (-mfmovd): Resurrect and document.
14782         * doc/invoke.texi (-mfmovd): Likewise.
14783         * config/sh/sh.h (TARGET_FMOVD, MASK_FMOVD): Remove default setting.
14784
14785 2009-07-20  Jan Hubicka  <jh@suse.cz>
14786
14787         * tree-ssa-dce.c (remove_dead_phis): Only look for abnormal PHIs
14788         when handling SSA name.
14789
14790 2009-07-19  Jan Hubicka  <jh@suse.cz>
14791
14792         PR tree-optimization/40676
14793         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do renaming on all
14794         virtual PHIs in empty BBs.
14795
14796 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14797
14798         * combine.c (make_compound_operation) <SUBREG>: If force_to_mode
14799         re-expanded the compound use gen_lowpart instead to convert to the
14800         desired mode.
14801
14802 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14803
14804         * combine.c (try_widen_shift_mode): Add COUNT, OUTER_CODE and
14805         OUTER_CONST arguments.
14806         <LSHIFTRT>: Use them to allow widening if the bits shifted in from
14807         the new wider mode will be masked off.
14808         (simplify_shift_const_1): Adjust calls to try_widen_shift_mode.
14809
14810 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14811
14812         * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
14813         high-order bits are zero.
14814
14815 2009-07-18  Adam Nemet  <anemet@caviumnetworks.com>
14816
14817         * combine.c (simplify_shift_const_1): Split code to determine
14818         shift_mode into ...
14819         (try_widen_shift_mode): ... here.  Allow widening for ASHIFTRT if the
14820         new bits shifted in are identical to the old sign bit.
14821
14822 2009-07-18  Richard Guenther  <rguenther@suse.de>
14823
14824         PR c/40787
14825         * gimplify.c (gimplify_call_expr): Reject code using results from
14826         functions returning void.
14827
14828 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14829
14830         * doc/md.texi: Document the new PowerPC "es" constraint.
14831         Document that "m" can include automodified addresses on this target,
14832         and explain how %U must be used.  Extend the "Q" and "Z" documentation
14833         to suggest "es" as well as "m".
14834         * config/rs6000/constraints.md (es): New memory constraint.
14835         (Q, Z): Update strings to match new documentation.
14836
14837 2009-07-18  Richard Sandiford  <r.sandiford@uk.ibm.com>
14838
14839         * config/rs6000/rs6000.c (rs6000_mode_dependent_address): Allow any
14840         offset from virtual_stack_vars_rtx and arg_pointer_rtx.
14841         * config/rs6000/predicates.md (volatile_mem_operand): Use
14842         offsettable_nonstrict_memref_p.
14843         * config/rs6000/rs6000.md (*floatsidf2_internal): Remove split check.
14844         (*floatunssidf2_internal): Likewise.
14845         (*fix_truncdfsi2_internal): Likewise.
14846         (*fix_trunctfsi2_internal): Likewise.
14847
14848 2009-07-17  Anatoly Sokolov  <aesok@post.ru>
14849
14850         * config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
14851         atmega32u2 devices.
14852         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
14853
14854 2009-07-17  Richard Guenther  <rguenther@suse.de>
14855
14856         PR c/40401
14857         * tree-pass.h (pass_diagnose_omp_blocks): Declare.
14858         (pass_warn_unused_result): Likewise.
14859         (TODO_set_props): Remove.
14860         * omp-low.c (diagnose_omp_structured_block_errors): Change to
14861         run as a pass.
14862         (pass_diagnose_omp_blocks): Define.
14863         * c-decl.c (pop_file_scope): Do not finalize the CU here.
14864         (c_gimple_diagnostics_recursively): Remove.
14865         (finish_function): Do not call it.
14866         (c_write_global_declarations): Continue after errors.
14867         Finalize the CU here.
14868         * c-gimplify.c (c_genericize): Do not gimplify here.
14869         * c-common.c (c_warn_unused_result): Move ...
14870         * tree-cfg.c (do_warn_unused_result): ... here.
14871         (run_warn_unused_result): New function.
14872         (gate_warn_unused_result): New function.
14873         (pass_warn_unused_result): New pass.
14874         * c-common.h (c_warn_unused_result): Remove.
14875         * flags.h (flag_warn_unused_result): Declare.
14876         * c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
14877         * opts.c (flag_warn_unused_result): Initialize to false.
14878         * toplev.c (compile_file): Add comment.
14879         * omp-low.c (create_omp_child_function): Do not register
14880         the function with the frontend.
14881         (diagnose_omp_structured_block_errors): Prepare to be
14882         called as optimization pass.
14883         (gate_diagnose_omp_blocks): New function.
14884         (pass_diagnose_omp_blocks): New pass.
14885         * cgraph.h (cgraph_optimize): Remove.
14886         (cgraph_analyze_function): Likewise.
14887         * cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
14888         * cgraphunit.c (cgraph_lower_function): Lower nested functions
14889         before their parents here.
14890         (cgraph_finalize_function): Not here.
14891         (cgraph_analyze_function): Gimplify functions here.
14892         (cgraph_finalize_compilation_unit): Continue after errors.
14893         Optimize the callgraph from here.
14894         (cgraph_optimize): Make static.
14895         * langhooks.c (write_global_declarations): Finalize the CU.
14896         * gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
14897         (gimplify_function_tree): Assert we gimplify only once.
14898         Set PROP_gimple_any property.
14899         * tree-nested.c (gimplify_all_functions): New function.
14900         (lower_nested_functions): Gimplify all nested functions.
14901         * gimple.h (diagnose_omp_structured_block_errors): Remove.
14902         * passes.c (init_optimization_passes): Add pass_warn_unused_result
14903         and pass_diagnose_omp_blocks after gimplification.  Do not
14904         set TODO_set_props on all_lowering_passes.
14905         (execute_one_pass): Do not handle TODO_set_props.
14906         * Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
14907         (gimplify.o): Add tree-pass.h dependency.
14908         * tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
14909         (copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
14910         (unsave_r): Likewise.
14911         * c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
14912         temporary variable.
14913
14914 2009-07-17  Sandra Loosemore  <sandra@codesourcery.com>
14915
14916         * doc/service.texi (Service): Restore previously removed link,
14917         which isn't broken after all.
14918
14919 2009-07-17  Richard Guenther  <rguenther@suse.de>
14920
14921         PR tree-optimization/40321
14922         * tree-ssa-pre.c (add_to_exp_gen): Also add names defined by
14923         PHI nodes to the maximal set.
14924         (make_values_for_phi): Add PHI arguments to the maximal set.
14925         (execute_pre): Dump PHI_GEN and the maximal set.
14926
14927 2009-07-17  Jakub Jelinek  <jakub@redhat.com>
14928
14929         PR c++/40780
14930         * gimplify.c (gimplify_conversion): Don't change non-conversions into
14931         VIEW_CONVERT_EXPR.
14932
14933 2009-07-16  Sandra Loosemore  <sandra@codesourcery.com>
14934
14935         * doc/extend.texi (Nested Functions): Replace broken link with
14936         textual reference.
14937         * doc/service.texi (Service): Remove broken link.
14938
14939 2009-07-16  H.J. Lu  <hongjiu.lu@intel.com>
14940
14941         PR bootstrap/40781
14942         * builtins.c (expand_builtin_memcmp): Use loc instead of
14943         EXPR_LOCATION (exp).
14944         (expand_builtin_strncmp): Likewise.
14945
14946 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
14947             Manuel López-Ibáñez  <manu@gcc.gnu.org>
14948
14949         PR 40435
14950         * tree-complex.c, tree-loop-distribution.c, tree.c, tree.h,
14951         builtins.c, fold-const.c, omp-low.c, cgraphunit.c, tree-ssa-ccp.c,
14952         tree-ssa-dom.c, gimple-low.c, expr.c, tree-ssa-ifcombine.c,
14953         c-decl.c, stor-layout.c, tree-if-conv.c, c-typeck.c, gimplify.c,
14954         calls.c, tree-sra.c, tree-mudflap.c, tree-ssa-copy.c,
14955         tree-ssa-forwprop.c, c-convert.c, c-omp.c, varasm.c,
14956         tree-inline.c, c-common.c, c-common.h, gimple.c,
14957         tree-switch-conversion.c, gimple.h, tree-cfg.c, c-parser.c,
14958         convert.c: Add location argument to fold_{unary,binary,ternary},
14959         fold_build[123], build_call_expr, build_size_arg,
14960         build_fold_addr_expr, build_call_array, non_lvalue, size_diffop,
14961         fold_build1_initializer, fold_build2_initializer,
14962         fold_build3_initializer, fold_build_call_array,
14963         fold_build_call_array_initializer, fold_single_bit_test,
14964         omit_one_operand, omit_two_operands, invert_truthvalue,
14965         fold_truth_not_expr, build_fold_indirect_ref, fold_indirect_ref,
14966         combine_comparisons, fold_builtin_*, fold_call_expr,
14967         build_range_check, maybe_fold_offset_to_address, round_up,
14968         round_down.
14969
14970 2009-07-16  Jason Merrill  <jason@redhat.com>
14971
14972         PR libstdc++/37907
14973         * c-common.c (c_common_reswords): Add __is_standard_layout
14974         and __is_trivial.
14975         * c-common.h (enum rid): Add RID_IS_STD_LAYOUT and RID_IS_TRIVIAL.
14976         * doc/implement-cxx.texi: New.
14977         * doc/gcc.texi: Include it.
14978
14979 2009-07-16  DJ Delorie  <dj@redhat.com>
14980
14981         * config/m32c/m32c.c (m32c_compare_redundant): Avoid removing
14982         compares that may be indirectly affected by previous instructions.
14983
14984 2009-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
14985
14986         * builtins.c (do_mpc_arg2): New.
14987         (fold_builtin_2): Fold builtin cpow.
14988         * real.h (HAVE_mpc_pow): New.
14989
14990 2009-07-16  Bingfeng Mei  <bmei@broadcom.com>
14991
14992         * modulo-sched.c (sms_schedule): stage_count <= 1 as correct
14993         comparison to skip unprofitable schedule
14994
14995 2009-07-16  Simon Baldwin  <simonb@google.com>
14996
14997         * gcc.c (option_map): New flag -no-canonical-prefixes.
14998         * (display_help): Print help text for new flag.
14999         * (process_command): Move options translation and language specifics
15000         and handle new flag early.  Use it to set a function pointer to a
15001         prefix builder.  Replace make_relative_prefix calls with calls to
15002         the function pointed to.  Ignore new flag in regular options handling.
15003         * doc/invoke.texi (Overall Options): Documented -no-canonical-prefixes.
15004
15005 2009-07-15  DJ Delorie  <dj@redhat.com>
15006
15007         * config/mep/mep.md (sibcall_internal): Change register to avoid
15008         argument registers.
15009         (sibcall_value_internal): Likewise.
15010
15011 2009-07-15  Eric Botcazou  <ebotcazou@adacore.com>
15012
15013         PR rtl-optimization/40710
15014         * resource.c (mark_target_live_regs): Reset DF problem to LR.
15015
15016 2009-07-15  Adam Nemet  <anemet@caviumnetworks.com>
15017
15018         * config/mips/mips.md (*extenddi_truncate<mode>,
15019         *extendsi_truncate<mode>): Change type attribute to move_type
15020         with shift_shift.  Split out code handling exts from here ...
15021         (*extend<GPR:mode>_truncate<SHORT:mode>_exts): ... to this new
15022         pattern.
15023         (*extendhi_truncateqi): Change type attribute to move_type with
15024         shift_shift.  Split out code handling exts from here ...
15025         (*extendhi_truncateqi_exts): ... to this new pattern.
15026
15027 2009-07-15  Uros Bizjak  <ubizjak@gmail.com>
15028
15029         * config/i386/sse.md (copysign<mode>3): Use "and-not" SSE instruction
15030         instead of "and" with inverted sign bit mask value.  Use
15031         "nonimmediate_operand" for operand 1 and operand 2 predicate.
15032         Allocate registers only for operand 4 and operand 5.
15033
15034 2009-07-15  Jakub Jelinek  <jakub@redhat.com>
15035
15036         PR middle-end/40747
15037         * fold-const.c (fold_cond_expr_with_comparison): When folding
15038         < and <= to MIN, make sure the MIN uses the same type as the
15039         comparison's operands.
15040
15041 2009-07-15  Richard Earnshaw  <rearnsha@arm.com>
15042
15043         * arm.md (ior_xor): New code iterator.
15044         (split for ior/xor with shift and zero-extend): New split pattern.
15045         * arm/predicates.md (subreg_lowpart_operator): New special predicate.
15046
15047 2009-07-15  Richard Guenther  <rguenther@suse.de>
15048
15049         * tree-ssa-structalias.c (make_constraint_from_heapvar): Initialize
15050         offset member.
15051
15052 2009-07-15  Richard Guenther  <rguenther@suse.de>
15053
15054         PR middle-end/40753
15055         * alias.c (ao_ref_from_mem): Reject FUNCTION_DECL and LABEL_DECL bases.
15056
15057 2009-07-15  Maxim Kuvyrkov  <maxim@codesourcery.com>
15058
15059         * config/m68k/linux-unwind.h (m68k_fallback_frame_state): Update to
15060         handle 2.6.30 kernel.
15061
15062 2009-07-15  DJ Delorie  <dj@redhat.com>
15063
15064         * config/mep/mep.md (sibcall_internal): Change register to allow
15065         for 24-bit addresses.
15066         (sibcall_value_internal): Likewise.
15067
15068 2009-07-14  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15069
15070         * doc/invoke.texi: Added descriptions of the  scheduling heuristics
15071         that are enabled/disabled by the flags introduced by a previous patch.
15072
15073 2009-07-14  DJ Delorie  <dj@redhat.com>
15074
15075         * config/mep/mep.md (sibcall_internal): Include non-toggling
15076         non-jmp case.
15077         (sibcall_value_internal): Likewise.
15078
15079 2009-07-14  Taras Glek  <tglek@mozilla.com>
15080             Rafael Espindola  <espindola@google.com>
15081
15082         * doc/sourcebuild.texi: Document install-plugin target.
15083         * configure.ac: Added install-plugin target to language makefiles.
15084         * configure: Regenerate.
15085         * Makefile.in (install-plugin): Install more headers,
15086         depend on lang.install-plugin.
15087
15088 2009-07-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15089
15090         * tree-vrp.c (vrp_evaluate_conditional): Mark strings for
15091         translation.
15092
15093 2009-07-14  DJ Delorie  <dj@redhat.com>
15094
15095         * config/mep/mep.c (mep_vliw_jmp_match): New function.
15096         * config/mep/mep-protos.h (mep_vliw_jmp_match): Prototype it.
15097         * config/mep/mep.md (sibcall_internal): Change test from
15098         mep_vliw_mode_match to mep_vliw_jmp_match.
15099         (sibcall_value_internal): Likewise.
15100
15101 2009-07-14  Uros Bizjak  <ubizjak@gmail.com>
15102
15103         * config/i386/sse.md (copysign<mode>3): New expander.
15104         * config/i386/i386-protos.h (ix86_build_signbit_mask): New prototype.
15105         * config/i386/i386.c (ix86_build_signbit_mask): Make public.
15106         Use ix86_build_const_vector.
15107         (enum ix86_builtins): Add IX86_BUILTIN_CPYSGNPS and
15108         IX86_BUILTIN_CPYSGNPD.
15109         (builtin_description): Add __builtin_ia32_copysignps and
15110         __builtin_ia32_copysignpd.
15111         (ix86_builtin_vectorized_function): Handle BUILT_IN_COPYSIGN
15112         and BUILT_IN_COPYSIGNF.
15113
15114 2009-07-13  Jason Merrill  <jason@redhat.com>
15115
15116         * builtins.c (can_trust_pointer_alignment): New fn.
15117         (get_pointer_alignment): Factor it out from here.
15118         * tree.h: Declare it.
15119
15120 2009-07-14  David Edelsohn  <edelsohn@gnu.org>
15121
15122         * config/rs6000/predicates.md (offsettable_mem_operand): Test
15123         RTX_AUTOINC class.
15124
15125 2009-07-14  Dodji Seketeli  <dodji@redhat.com>
15126
15127         PR debug/40705
15128         PR c++/403057
15129         * dwarf2.out.c (gen_type_die_with_usage): Added comment.
15130
15131 2009-07-14  Richard Guenther  <rguenther@suse.de>
15132             Andrey Belevantsev <abel@ispras.ru>
15133
15134         PR middle-end/40745
15135         * cfgexpand.c (partition_stack_vars): Do not bother to update
15136         alias information when not optimizing.
15137
15138 2009-07-14  Richard Guenther  <rguenther@suse.de>
15139             Andrey Belevantsev <abel@ispras.ru>
15140
15141         * tree-ssa-alias.h (refs_may_alias_p_1): Declare.
15142         (pt_solution_set): Likewise.
15143         * tree-ssa-alias.c (refs_may_alias_p_1): Export.
15144         * tree-ssa-structalias.c (pt_solution_set): New function.
15145         * final.c (rest_of_clean_state): Free SSA data structures.
15146         * print-rtl.c (print_decl_name): Remove.
15147         (print_mem_expr): Implement in terms of print_generic_expr.
15148         * alias.c (ao_ref_from_mem): New function.
15149         (rtx_refs_may_alias_p): Likewise.
15150         (true_dependence): Query alias-export info.
15151         (canon_true_dependence): Likewise.
15152         (write_dependence_p): Likewise.
15153         * tree-dfa.c (get_ref_base_and_extent): For void types leave
15154         size unknown.
15155         * emit-rtl.c (component_ref_for_mem_expr): Remove.
15156         (mem_expr_equal_p): Use operand_equal_p.
15157         (set_mem_attributes_minus_bitpos): Do not use
15158         component_ref_for_mem_expr.
15159         * cfgexpand.c (add_partitioned_vars_to_ptset): New function.
15160         (update_alias_info_with_stack_vars): Likewise.
15161         (partition_stack_vars): Call update_alias_info_with_stack_vars.
15162         * tree-ssa.c (delete_tree_ssa): Do not release SSA names
15163         explicitly nor clear stmt operands.
15164         Free the decl-to-pointer map.
15165         * tree-optimize.c (execute_free_datastructures): Do not free
15166         SSA data structures here.
15167         * tree-flow.h (struct gimple_df): Add decls_to_pointers member.
15168         * Makefile.in (emit-rtl.o): Add pointer-set.h dependency.
15169         (alias.o): Add tree-ssa-alias.h, pointer-set.h and $(TREE_FLOW_H)
15170         dependencies.
15171         (print-rtl.o): Add $(DIAGNOSTIC_H) dependency.
15172
15173 2009-07-13  DJ Delorie  <dj@redhat.com>
15174
15175         * config/mep/mep.h (CC1_SPEC): Tweak parameters to trigger
15176         unrolling at the right iteration count.
15177
15178         * config/mep/mep.c (mep_expand_prologue): Fix frame pointer
15179         calculations.
15180
15181 2009-07-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
15182
15183         * haifa-sched.c (rank_for_schedule): Introduced flags to
15184         enable/disable individual scheduling heuristics.
15185         * common.opt: Introduced flags to enable/disable individual
15186         heuristics in the scheduler.
15187         * doc/invoke.texi: Introduced flags to enable/disable individual
15188         heuristics in the scheduler.
15189
15190 2009-07-13  Kai Tietz  <kai.tietz@onevision.com>
15191
15192         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Remove file
15193         config/i386/mingw-tls.c.
15194         * config/i386/mingw-tls.c: Removed.
15195
15196 2009-07-13  Ira Rosen  <irar@il.ibm.com>
15197
15198         * tree-vect-loop.c (get_initial_def_for_reduction): Ensure that the
15199         checks access only relevant statements.
15200         (vectorizable_reduction): Likewise.
15201
15202 2009-07-12  Kai Tietz  <kai.tietz@onevision.com>
15203
15204         * config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define _X86_
15205         just for 32-bit case.
15206
15207 2009-07-12  Jan Hubicka  <jh@suse.cz>
15208
15209         PR tree-optimization/40585
15210         * except.c (expand_resx_expr): When there already is resume
15211         instruction, produce linked list.
15212         (build_post_landing_pads): Assert that resume is empty.
15213         (connect_post_landing_pads): Handle resume lists.
15214         (dump_eh_tree): Dump resume list.
15215
15216 2009-07-12  Ira Rosen  <irar@il.ibm.com>
15217
15218         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
15219         with additional argument.
15220         * tree-vectorizer.h (enum vect_def_type): Add
15221         vect_double_reduction_def.
15222         (vect_is_simple_reduction): Add argument.
15223         * tree-vect-loop.c (vect_determine_vectorization_factor): Fix
15224         indentation.
15225         (vect_analyze_scalar_cycles_1): Detect double reduction. Call
15226         vect_is_simple_reduction with additional argument.
15227         (vect_analyze_loop_operations): Handle exit phi nodes in case of
15228         double reduction.
15229         (reduction_code_for_scalar_code): Handle additional codes by
15230         returning ERROR_MARK for them. Fix comment and indentation.
15231         (vect_is_simple_reduction): Fix comment, add argument to specify
15232         double reduction. Detect double reduction.
15233         (get_initial_def_for_induction): Fix indentation.
15234         (get_initial_def_for_reduction): Fix comment and indentation.
15235         Handle double reduction. Create initial definitions that do not
15236         require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
15237         (vect_create_epilog_for_reduction): Fix comment, add argument to
15238         handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
15239         epilogue result extraction. Create double reduction phi node and
15240         replace relevant uses.
15241         (vectorizable_reduction): Call vect_is_simple_reduction with
15242         additional argument. Fix indentation. Update epilogue code treatment
15243         according to the changes in reduction_code_for_scalar_code. Check
15244         for double reduction. Call vect_create_epilog_for_reduction with
15245         additional argument.
15246         * tree-vect-stmts.c (process_use): Handle double reduction, update
15247         documentation.
15248         (vect_mark_stmts_to_be_vectorized): Handle double reduction.
15249         (vect_get_vec_def_for_operand): Likewise.
15250
15251 2009-07-12  Danny Smith  <dansmister@gmail.com>
15252
15253         * config/i386/winnt.c (i386_pe_determine_dllexport_p): Don't
15254         dllexport if !TREE_PUBLIC.
15255         (i386_pe_maybe_record_exported_symbol): Assert TREE_PUBLIC.
15256
15257 2009-07-11  Anatoly Sokolov  <aesok@post.ru>
15258
15259         * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Redefine.
15260         (avr_extra_arch_macro) Remove declatation.
15261         * config/avr/avr.c (avr_cpu_cpp_builtins): New function.
15262         (avr_extra_arch_macro) Declare as static.
15263         * config/avr/avr-protos.h (avr_cpu_cpp_builtins): Dclare.
15264
15265 2009-07-11  Jan Hubicka  <jh@suse.cz>
15266
15267         PR middle-end/48388
15268         * except.c (can_be_reached_by_runtime): Test for NULL aka bitmap.
15269
15270 2009-07-11  Jakub Jelinek  <jakub@redhat.com>
15271
15272         PR debug/40713
15273         * dwarf2out.c (dw_fde_struct): Add in_std_section and
15274         cold_in_std_section bits.
15275         (dwarf2out_begin_prologue): Initialize them.
15276         (dwarf2out_finish): Don't emit FDE range into .debug_ranges
15277         if already covered by text_section or cold_text_section range.
15278
15279         PR rtl-optimization/40667
15280         * defaults.h (MINIMUM_ALIGNMENT): Define if not defined.
15281         * doc/tm.texi (MINIMUM_ALIGNMENT): Document it.
15282         * config/i386/i386.h (MINIMUM_ALIGNMENT): Define.
15283         * config/i386/i386.c (ix86_minimum_alignment): New function.
15284         * config/i386/i386-protos.h (ix86_minimum_alignment): New prototype.
15285         * cfgexpand.c (expand_one_var): Use MINIMIM_ALIGNMENT.
15286         * emit-rtl.c (gen_reg_rtx): Likewise.
15287         * function.c (assign_parms): Likewise.  If nominal_type needs
15288         bigger alignment than FUNCTION_ARG_BOUNDARY, use its alignment
15289         rather than passed_type's alignment.
15290
15291         PR target/40668
15292         * function.c (assign_parm_setup_stack): Adjust
15293         MEM_OFFSET (data->stack_parm) if promoted_mode is different
15294         from nominal_mode on big endian.
15295
15296 2009-07-11  Paolo Bonzini  <bonzini@gnu.org>
15297
15298         * expmed.c (emit_store_flag_1): Fix choice of zero vs. sign extension.
15299
15300 2009-07-10  DJ Delorie  <dj@redhat.com>
15301
15302         * config/mep/mep.c (mep_can_inline_p): Correct logic, and simplify.
15303
15304 2009-07-10  Mark Mitchell  <mark@codesourcery.com>
15305
15306         * config/arm/thumb2.md (thumb2_cbz): Correct computation of length
15307         attribute.
15308         (thumb2_cbnz): Likewise.
15309
15310 2009-07-10  David Daney  <ddaney@caviumnetworks.com>
15311
15312         PR target/39079
15313         * config.gcc (supported_defaults): Add synci.
15314         (with_synci): Add validation.
15315         (all_defaults): Add synci.
15316         * config/mips/mips.md (clear_cache): Use TARGET_SYNCI instead of
15317         ISA_HAS_SYNCI.
15318         (synci): Same.
15319         * config/mips/mips.opt (msynci): New option.
15320         * config/mips/mips.c (mips_override_options): Warn on use of
15321         -msynci for targets that do now support it.
15322         * gcc/config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
15323         msynci.
15324         * gcc/doc/invoke.texi (-msynci): Document the new option.
15325         * doc/install.texi (--with-synci): Document the new option.
15326
15327 2009-07-10  Richard Guenther  <rguenther@suse.de>
15328
15329         PR tree-optimization/40496
15330         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Create
15331         the PHI result with a compatible type.
15332
15333 2009-07-10  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15334
15335         PR 25509
15336         PR 40614
15337         * c.opt (Wunused-result): New.
15338         * doc/invoke.texi: Document it.
15339         * c-common.c (c_warn_unused_result): Use it.
15340
15341 2009-07-09  DJ Delorie  <dj@redhat.com>
15342
15343         * targhooks.c (default_target_can_inline_p): Rename from
15344         default_target_option_can_inline_p.
15345         * targhooks.h (default_target_can_inline_p): Likewise.
15346         * target-def.h (TARGET_CAN_INLINE_P): Rename from
15347         TARGET_OPTION_CAN_INLINE_P.
15348         * config/i386/i386.c (TARGET_CAN_INLINE_P): Likewise.
15349         * config/mep/mep.c (TARGET_CAN_INLINE_P): Likewise.
15350         (mep_target_can_inline_p): Rename from
15351         mep_target_option_can_inline_p.
15352
15353         PR target/40626
15354         * config/mep/mep.h (FUNCTION_ARG_REGNO_P): Add coprocessor
15355         registers used to pass vectors.
15356
15357         * config/mep/mep.c (mep_option_can_inline_p): Remove error call.
15358
15359 2009-07-09  Tom Tromey  <tromey@redhat.com>
15360
15361         * unwind-dw2-fde-darwin.c: Include dwarf2.h.
15362         * config/mmix/mmix.c: Include dwarf2.h.
15363         * config/rs6000/darwin-fallback.c: Include dwarf2.h.
15364         * config/xtensa/unwind-dw2-xtensa.c: Include dwarf2.h.
15365         * config/sh/sh.c: Include dwarf2.h.
15366         * config/i386/i386.c: Include dwarf2.h.
15367         * Makefile.in (DWARF2_H): Remove 'elf'.
15368         * except.c: Include dwarf2.h.
15369         * unwind-dw2.c: Include dwarf2.h.
15370         * dwarf2out.c: Include dwarf2.h.
15371         * unwind-dw2-fde-glibc.c: Include dwarf2.h.
15372         * unwind-dw2-fde.c: Include dwarf2.h.
15373         * dwarf2asm.c: Include dwarf2.h.
15374
15375 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15376
15377         * haifa-sched.c (insn_finishes_cycle_p): New static function.
15378         (max_issue): Use it.
15379         * sched-int.h (struct sched_info: insn_finishes_block_p): New
15380         scheduler hook.
15381         * sched-rgn.c (rgn_insn_finishes_block_p): Implement it.
15382         (region_sched_info): Update.
15383         * sched-ebb.c (ebb_sched_info): Update.
15384         * modulo-sched.c (sms_sched_info): Update.
15385         * sel-sched-ir.c (sched_sel_haifa_sched_info): Update.
15386
15387 2009-07-09  Maxim Kuvyrkov  <maxim@codesourcery.com>
15388
15389         * varasm.c (build_constant_desc): Don't share RTL in pool entries.
15390
15391 2009-07-09  Basile Starynkevitch  <basile@starynkevitch.net>
15392
15393         * plugin.c (try_init_one_plugin): passes RTLD_GLOBAL to dlopen.
15394
15395 2009-07-09  Jakub Jelinek  <jakub@redhat.com>
15396
15397         PR middle-end/40692
15398         * fold-const.c (fold_cond_expr_with_comparison): Don't replace
15399         arg1 with arg01 if arg1 is already INTEGER_CST.
15400
15401 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15402
15403         * simplify-rtx.c (simplify_binary_operation_1) <AND>:
15404         Transform (and (truncate)) into (truncate (and)).
15405
15406 2009-07-08  Adam Nemet  <anemet@caviumnetworks.com>
15407
15408         * combine.c (make_extraction): Check TRULY_NOOP_TRUNCATION before
15409         creating LHS paradoxical subregs.  Fix surrounding returns to
15410         use NULL_RTX rather than 0.
15411
15412 2009-07-08  DJ Delorie  <dj@redhat.com>
15413
15414         * config/mep/mep.c (mep_option_can_inline_p): New.
15415         (TARGET_OPTION_CAN_INLINE_P): Define.
15416
15417 2009-07-08  Mark Wielaard  <mjw@redhat.com>
15418
15419         PR debug/40659
15420         * dwarf2out.c (add_data_member_location_attribute): When we have
15421         only a constant offset don't emit a new location description using
15422         DW_OP_plus_uconst, but just add the constant with add_AT_int, when
15423         dwarf_version > 2.
15424
15425 2009-07-08  Richard Henderson  <rth@redhat.com>
15426
15427         PR target/38900
15428         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
15429         (enum reg_class): Add CLOBBERED_REGS.
15430         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
15431         * config/i386/i386.c (ix86_conditional_register_usage): Moved
15432         from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
15433         (ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
15434         (ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
15435         force 64-bit sibcalls into R11.
15436         * config/i386/constraints.md (U): New constraint.
15437         * config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
15438         (sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
15439         (sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.
15440
15441 2009-07-08  Shujing Zhao  <pearly.zhao@oracle.com>
15442
15443         * basic-block.h (dump_regset, debug_regset): Remove duplicate
15444         prototypes.
15445         * c-objc-common.h (c_initialize_diagnostics): Ditto.
15446         * ebitmap.h (dump_ebitmap): Ditto.
15447         * optabs.h (optab_libfunc): Ditto.
15448         * tree.h (tree_expr_nonzero_warnv_p): Ditto.
15449         * tree-flow.h (vect_can_force_dr_alignment_p,
15450         get_vectype_for_scalar_type): Ditto.
15451         (vectorize_loops): Move prototype to ...
15452         * tree-vectorizer.h: ... here. Also, adjust comment.
15453         (vect_set_verbosity_level): Remove duplicate prototype.
15454         * tree-ssa-loop.c: Include tree-vectorizer.h.
15455         * Makefile.in (tree-ssa-loop.o): Depend on tree-vectorizer.h.
15456
15457 2009-07-08  Nick Clifton  <nickc@redhat.com>
15458
15459         * config/i386/unix.h (ASM_COMMENT_START): Add a space after the
15460         forward slash.
15461
15462 2009-07-08  DJ Delorie  <dj@redhat.com>
15463
15464         * config/mep/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
15465         cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
15466         cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
15467         written to.
15468         * config/mep/intrinsics.md: Regenerated.
15469         * config/mep/mep.c (mep_interrupt_saved_reg): Save IVC2 control
15470         registers when asm() or calls are detected.
15471
15472 2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15473
15474         PR c++/31246
15475         * gimplify.c (gimplify_expr): Propagate no_warning flag when
15476         gimplifying.
15477         * gimple (gimple_build_call_from_tree): Likewise.
15478         * tree-cfg.c (remove_useless_stmts_warn_notreached): Check
15479         no_warning flag before warning.
15480
15481 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15482
15483         * tree.c (set_expr_locus): Remove.
15484         * tree.h (EXPR_LOCUS,SET_EXPR_LOCUS,set_expr_locus): Remove.
15485         * c-typeck.c (c_finish_stmt_expr):  Replace EXPR_LOCUS by
15486         EXPR_LOCATION.
15487         * gimplify.c (internal_get_tmp_var): Likewise.
15488         (gimplify_call_expr): Likewise.
15489         (gimplify_one_sizepos): Likewise.
15490
15491 2009-07-07  Eric Botcazou  <ebotcazou@adacore.com>
15492
15493         PR debug/40666
15494         * dbxout.c (dbxout_symbol) <PARM_DECL>: Deal with parameters pointing
15495         to variables for debugging purposes.
15496
15497 2009-06-23  Mark Loeser  <mark@halcy0n.com>
15498
15499         PR build/40010
15500         * Makefile.in (gcc.pod): Depend on gcc-vers.texi.
15501
15502 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15503
15504         * pretty-print.c (pp_base_format): Remove %J.
15505         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15506         gcc_cxxdiag_char_table): Likewise.
15507         (init_dynamic_diag_info): Likewise.
15508
15509 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15510
15511         * pretty-print.c (pp_base_format): Remove %H.
15512         * c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
15513         gcc_cxxdiag_char_table): Likewise.
15514         (init_dynamic_diag_info): Likewise.
15515         * config/mep/mep.c (mep_select_section): Likewise.
15516
15517 2009-07-07  Duncan Sands  <baldrick@free.fr>
15518
15519         * final.c (pass_clean_state): Give the pass a name.
15520         * passes.c (pass_rest_of_compilation): Likewise.
15521         * tree-optimize.c (pass_all_optimizations): Likewise.
15522
15523 2009-07-07  H.J. Lu  <hongjiu.lu@intel.com>
15524
15525         * config/ia64/ia64.c (ia64_handle_model_attribute): Remove
15526         an extra 'decl' for error_at.
15527
15528 2009-07-07  Jakub Jelinek  <jakub@redhat.com>
15529
15530         PR middle-end/40669
15531         * tree-tailcall.c (adjust_return_value_with_ops,
15532         create_tailcall_accumulator): Set DECL_GIMPLE_REG_P on the temporary
15533         if it has complex or vector type.
15534
15535 2009-07-07  Olivier Hainque  <hainque@adacore.com>
15536
15537         * config/alpha/t-osf4 (SHLIB_LINK): Do not hide the dummy weak
15538         pthread symbols.
15539
15540 2009-07-07  Basile Starynkevitch  <basile@starynkevitch.net>
15541
15542         * Makefile.in: added more lists of includes to PLUGIN_HEADERS.
15543
15544 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15545
15546         * cgraphunit.c: Replace %J by an explicit location.  Update all calls.
15547         * c-decl.c: Likewise.
15548         * function.c: Likewise.
15549         * varasm.c: Likewise.
15550         * tree-ssa.c: Likewise.
15551         * c-common.c: Likewise.
15552         * tree-cfg.c: Likewise.
15553         * config/spu/spu.c: Likewise.
15554         * config/ia64/ia64.c: Likewise.
15555         * config/v850/v850.c: Likewise.
15556
15557 2009-07-06  DJ Delorie  <dj@redhat.com>
15558
15559         * config/mep/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
15560         * config/mep/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
15561         unspecified accesses to control registers.
15562         * config/mep/intrinsics.md: Regenerate.
15563         * config/mep/intrinsics.h: Regenerate.
15564         * config/mep/mep-intrin.h: Regenerate.
15565
15566 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
15567
15568         * c-lex.c: Replace %H by an explicit location. Update all calls.
15569         * c-common.c: Likewise.
15570         * c-decl.c: Likewise.
15571         * c-typeck.c: Likewise.
15572         * fold-const.c: Likewise.
15573         * gimplify.c: Likewise.
15574         * stmt.c: Likewise.
15575         * tree-cfg.c: Likewise.
15576         * tree-ssa-loop-niter.c: Likewise.
15577         * tree-vrp.c: Likewise.
15578         * value-prof.c: Likewise.
15579
15580 2009-07-06  Diego Novillo  <dnovillo@google.com>
15581
15582         * tree-dfa.c (dump_variable): Write DECL_INITIAL for VAR
15583         if it has one.  Handle cases where VAR does not have an
15584         annotation or cfun is NULL.
15585
15586 2009-07-06  Diego Novillo  <dnovillo@google.com>
15587
15588         * tree.c: Include debug.h.
15589         (initialize_tree_contains_struct): New.
15590         (init_ttree): Call it.
15591         (tree_node_structure_for_code): Factor out of ...
15592         (tree_node_structure): ... here.
15593         * treestruct.def (TS_PHI_NODE): Remove.
15594         (TS_GIMPLE_STATEMENT): Remove.
15595
15596 2009-07-06  Diego Novillo  <dnovillo@google.com>
15597
15598         * tree-pretty-print.c (dump_generic_node): Protect against NULL op0.
15599         (debug_tree_chain): Handle cycles.
15600
15601 2009-07-06  Nick Clifton  <nickc@redhat.com>
15602             DJ Delorie  <dj@redhat.com>
15603
15604         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
15605         __FMOVD_ENABLED__ is defined.
15606         * config/sh/sh.h
15607         (TARGET_FMOVD): Provide a default definition.
15608         (MASK_FMOVD): Likewise.
15609         (TARGET_CPU_CPP_BUILTINS): Define
15610         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
15611         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
15612         two fmov instructions depending upon whether TARGET_FMOVD is enabled.
15613         (split for DF load from memory into register): Also handle
15614         MEMs which consist of REG+DISP addressing.
15615         (split for DF store from register to memory): Likewise.
15616         (movsf_ie): Always use single fp_mode.
15617         * config/sh/sh.c (sh_override_options): Do not automatically
15618         enable TARGET_MOVD for the SH2A when supporting doubles - leave
15619         that to the -mfmovd command line switch.
15620         (broken_move): Do not restrict fldi test to only the SH4 and SH4A.
15621         (fldi_ok): Always allow.
15622         * config/sh/sh.opt (mfmovd): Remove this switch.
15623         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
15624
15625 2009-07-06  J"orn Rennecke  <joern.rennecke@arc.com>
15626             Kaz Kojima  <kkojima@gcc.gnu.org>
15627
15628         PR rtl-optimization/30807
15629         * postreload.c (reload_combine): For every new use of REG_SUM,
15630         record the use of BASE.
15631
15632 2009-07-06  Jan Hubicka  <jh@suse.cz>
15633
15634         * params.def: Revert my accidental commit at 2009-06-30.
15635
15636 2009-07-04  Ian Lance Taylor  <iant@google.com>
15637
15638         PR target/40636
15639         * config/i386/msformat-c.c (mingw_format_attributes): Declare as
15640         EXPORTED_CONST.
15641         (mingw_format_attribute_overrides): Likewise.
15642
15643 2009-07-04  Jakub Jelinek  <jakub@redhat.com>
15644
15645         PR debug/40596
15646         * dwarf2out.c (based_loc_descr): For crtl->stack_realign_tried
15647         don't check cfa.reg.  Instead of cfa.indirect use
15648         fde && fde->drap_reg != INVALID_REGNUM test.
15649
15650 2009-07-04  Eric Botcazou  <ebotcazou@adacore.com>
15651
15652         * postreload.c (reload_combine): Replace CONST_REG with INDEX_REG.
15653
15654 2009-07-03  Vladimir Makarov  <vmakarov@redhat.com>
15655
15656         PR target/40587
15657         * ira.c (build_insn_chain): Use DF_LR_OUT instead of df_get_live_out.
15658
15659 2009-07-03  Richard Guenther  <rguenther@suse.de>
15660
15661         PR tree-optimization/40640
15662         * tree-switch-conversion.c (build_arrays): Perform arithmetic
15663         in original type.
15664
15665 2009-07-03  Jan Hubicka  <jh@suse.cz>
15666
15667         * ipa-inline.c (cgraph_decide_inlining_incrementally): When optimizing
15668         for size, reduce amount of inlining.
15669
15670 2009-07-03  Richard Guenther  <rguenther@suse.de>
15671
15672         PR middle-end/34163
15673         * tree-chrec.c (chrec_convert_1): Fold (T2)(t +- x) to (T2)t +- (T2)x
15674         if t +- x is known to not overflow and the conversion widens the
15675         operation.
15676         * Makefile.in (tree-chrec.o): Add $(FLAGS_H) dependency.
15677
15678 2009-07-03  Jan Hubicka  <jh@suse.cz>
15679
15680         * ipa-pure-const.c (analyze): Update loop optimizer init.
15681         * tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
15682         try_remove_empty_loop, remove_empty_loops): Remove.
15683         * tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
15684         * tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
15685         to mark regular loops as neccesary.
15686         (degenerate_phi_p): New function.
15687         (propagate_necessity, remove_dead_phis): Use it.
15688         (forward_edge_to_pdom): Likewise.
15689         (eliminate_unnecessary_stmts): Take care to remove uses of results of
15690         virtual PHI nodes that became unreachable.
15691         (perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
15692         * tree-flow.h (remove_empty_loops): Remove.
15693         * passes.c (init_optimization_passes): Remove.
15694
15695 2009-07-03  Uros Bizjak  <ubizjak@gmail.com>
15696
15697         * config/i386/i386.md (fix_trunc<mode>_fisttp_i387_1): Use
15698         can_create_pseudo_p.
15699         (*fix_trunc<mode>_i387_1): Ditto.
15700         (*floathi<mode>2_1): Ditto.
15701         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Ditto.
15702         (*fistdi2_1): Ditto.
15703         (*fist<mode>2_1): Ditto.
15704         (frndintxf2_floor): Ditto.
15705         (*fist<mode>2_floor_1): Ditto.
15706         (frndintxf2_ceil): Ditto.
15707         (*fist<mode>2_ceil_1): Ditto.
15708         (frndintxf2_trunc): Ditto.
15709         (frndintxf2_mask_pm): Ditto.
15710         (fxam<mode>2_i387_with_temp): Ditto.
15711         * config/i386/sse.md (mulv16qi3): Ditto.
15712         (*sse2_mulv4si3): Ditto.
15713         (mulv2di3): Ditto.
15714         (sse4_2_pcmpestr): Ditto.
15715         (sse4_2_pcmpistr): Ditto.
15716
15717 2009-07-03  Jan Hubicka  <jh@suse.cz>
15718
15719         * tree-ssa-dce.c (bb_contains_live_stmts): New bitmap.
15720         (mark_stmt_necessary): Set it.
15721         (mark_operand_necessary): Set it.
15722         (mark_control_dependent_edges_necessary): Set it.
15723         (mark_virtual_phi_result_for_renaming): New function.
15724         (get_live_post_dom): New function.
15725         (forward_edge_to_pdom): New function.
15726         (remove_dead_stmt): Fix handling of control dependences.
15727         (tree_dce_init): Init new bitmap.
15728         (tree_dce_done): Free it.
15729
15730 2009-07-02  Richard Guenther  <rguenther@suse.de>
15731
15732         PR bootstrap/40617
15733         * tree-ssa-structalias.c (new_var_info): Initialize
15734         is_restrict_var.
15735
15736 2009-07-02  Jan Hubicka  <jh@suse.cz>
15737
15738         * ipa-pure-const.c (check_op): Use PTA info to see if indirect_ref is
15739         local.
15740
15741 2009-07-02  Paolo Bonzini  <bonzini@gnu.org>
15742
15743         * expmed.c (emit_cstore, emit_store_flag_1): Accept target_mode
15744         instead of recomputing it.  Adjust calls.
15745         (emit_store_flag): Adjust recursive calls.
15746
15747 2009-07-02  Richard Guenther  <rguenther@suse.de>
15748
15749         * tree-ssa-live.c (remove_unused_locals): Do not remove
15750         heap variables.
15751         * tree-ssa-structalias.c (handle_lhs_call): Delay setting
15752         of DECL_EXTERNAL for HEAP variables.
15753         (compute_points_to_sets): Set DECL_EXTERNAL for escaped
15754         HEAP variables.  Do not adjust RESTRICT vars.
15755         (find_what_var_points_to): Nobody cares if something
15756         points to READONLY.
15757
15758 2009-07-02  Ben Elliston  <bje@au.ibm.com>
15759
15760         * unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Move
15761         pc_low and pc_high declarations to the top of the function.
15762
15763 2009-07-01  DJ Delorie  <dj@redhat.com>
15764
15765         * config/mep/mep.c (mep_handle_option): Leave IVC2 control
15766         registers as fixed.
15767         (mep_interrupt_saved_reg): Save appropriate IVC2 control registers.
15768         * config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
15769         unspecified accesses to control registers.
15770         * config/mep/intrinsics.md: Regenerate.
15771         * config/mep/intrinsics.h: Regenerate.
15772         * config/mep/mep-intrin.h: Regenerate.
15773
15774 2009-07-01  Anthony Green  <green@moxielogic.com>
15775
15776         * config/moxie/moxie.c (moxie_expand_prologue): Use dec
15777         instruction when possible.
15778         (moxie_expand_prologue): Ditto.  Also, save an instruction and
15779         some complexity by popping off of $r12 instead of $sp.
15780         * config/moxie/moxie.md (movsi_pop): Don't assume $sp.  Take two
15781         operands.
15782
15783 2009-07-01  Richard Henderson  <rth@redhat.com>
15784
15785         PR bootstrap/40347
15786         * function.c (reposition_prologue_and_epilogue_notes): If epilogue
15787         contained no insns, reposition note before last insn.
15788
15789 2009-07-01  Richard Henderson  <rth@redhat.com>
15790
15791         PR debug/40431
15792         * dwarf2out.c (def_cfa_1): Revert 2009-06-11 change for
15793         DW_CFA_def_cfa_offset and DW_CFA_def_cfa.
15794
15795 2009-07-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
15796
15797         PR bootstrap/40558
15798         * config/rs6000/rs6000.c (print_operand): Undo change that breaks
15799         darwin9 for printing reg addresses with %y.
15800
15801 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15802
15803         * combine.c (force_to_mode): Handle TRUNCATE.  Factor out
15804         truncation from operands in binary operations.
15805
15806 2009-07-01  Adam Nemet  <anemet@caviumnetworks.com>
15807
15808         Revert:
15809         2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
15810         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
15811         subreg of op0 to the original op0.
15812
15813         * expmed.c (store_bit_field_1): Use a temporary as the destination
15814         instead of a paradoxical subreg when we need to truncate the result.
15815
15816 2009-07-01  DJ Delorie  <dj@redhat.com>
15817
15818         * config/mep/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic
15819         names to VLIW variants.
15820         (ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.
15821         * config/mep/intrinsics.md: Regenerate.
15822         * config/mep/intrinsics.h: Regenerate.
15823         * config/mep/mep-intrin.h: Regenerate.
15824
15825 2009-07-01  Jakub Jelinek  <jakub@redhat.com>
15826
15827         PR debug/40462
15828         * jump.c (returnjump_p): Revert last patch.
15829         * dwarf2out.c (dwarf2out_begin_epilogue): Handle SEQUENCEs.
15830
15831 2009-07-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
15832
15833         PR target/40575
15834         * pa.md (casesi32p): Use jump table label to determine the offset
15835         of the jump table.
15836         (casesi64p): Likewise.
15837
15838         * pa.c (forward_branch_p): Return bool type.  Use instruction
15839         addresses when available.  Assert that INSN has a jump label.
15840         (pa_adjust_insn_length): Don't call forward_branch_p if INSN doesn't
15841         have a jump label.
15842
15843 2009-07-01  Richard Guenther  <rguenther@suse.de>
15844
15845         PR tree-optimization/19831
15846         * tree-ssa-dce.c (propagate_necessity): Calls to functions
15847         that only act as barriers do not make any previous stores necessary.
15848         * tree-ssa-structalias.c (handle_lhs_call): Delay making
15849         HEAP variables global, do not add a constraint from nonlocal.
15850         (find_func_aliases): Handle escapes through return statements.
15851         (compute_points_to_sets): Make escaped HEAP variables global.
15852
15853 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15854
15855         PR bootstrap/40597
15856         * expmed.c (emit_store_flag): Perform a conversion if necessary,
15857         after reducing a DImode cstore to SImode.
15858
15859 2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
15860
15861         * expr.c (expand_expr_real_1): Reinstate fallthrough to
15862         TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
15863
15864 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
15865
15866         * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
15867         * config/vax/linux.h (TARGET_BSD_DIVMOD): New macro.  Redefine the
15868         to 0.
15869         * config/vax/vax.c (vax_init_libfuncs): Only redefine udiv_optab
15870         and umod_optab if TARGET_BSD_DIVMOD.
15871         * config/vax/lib1funcs.asm: New file.
15872         * config/vax/t-linux: New file.
15873         * config.gcc (vax-*-linux*): Set tmake_file to vax/t-linux.
15874
15875 2009-06-30  Jakub Jelinek  <jakub@redhat.com>
15876
15877         PR c++/40566
15878         * convert.c (convert_to_integer) <case COND_EXPR>: Don't convert
15879         to type arguments that have void type.
15880
15881         PR debug/40573
15882         * dwarf2out.c (gen_formal_parameter_die): Call
15883         equate_decl_number_to_die if node is different from origin.
15884
15885 2009-06-30  Anthony Green  <green@moxielogic.com>
15886
15887         Clean up moxie port for --enable-build-with-cxx.
15888         * config/moxie/moxie.c (moxie_function_value): First two
15889         parameters are const_tree, not tree.
15890         * config/moxie/moxie.h (enum reg_class): Rename CC_REG to CC_REGS.
15891         (REG_CLASS_NAMES): Ditto.
15892         (REGNO_REG_CLASS): Ditto.
15893         * config/moxie/moxie-protos.h (moxie_override_options): Declare.
15894         (moxie_function_value): Fix constyness of arguments.
15895
15896 2009-06-30  Eric Botcazou  <ebotcazou@adacore.com>
15897
15898         * cgraphunit.c (cgraph_finalize_compilation_unit): Call
15899         finalize_size_functions before further processing.
15900         * stor-layout.c: Include cgraph.h, tree-inline.h and tree-dump.h.
15901         (variable_size): Call self_referential_size on size expressions
15902         that contain a PLACEHOLDER_EXPR.
15903         (size_functions): New static variable.
15904         (copy_self_referential_tree_r): New static function.
15905         (self_referential_size): Likewise.
15906         (finalize_size_functions): New global function.
15907         * tree.c: Include tree-inline.h.
15908         (push_without_duplicates): New static function.
15909         (find_placeholder_in_expr): New global function.
15910         (substitute_in_expr) <tcc_declaration>: Return the replacement object
15911         on equality.
15912         <tcc_expression>: Likewise.
15913         <tcc_vl_exp>: If the replacement object is a constant, try to inline
15914         the call in the expression.
15915         * tree.h (finalize_size_functions): Declare.
15916         (find_placeholder_in_expr): Likewise.
15917         (FIND_PLACEHOLDER_IN_EXPR): New macro.
15918         (substitute_placeholder_in_expr): Update comment.
15919         * tree-inline.c (remap_decl): Do not unshare trees if do_not_unshare
15920         is true.
15921         (copy_tree_body_r): Likewise.
15922         (copy_tree_body): New static function.
15923         (maybe_inline_call_in_expr): New global function.
15924         * tree-inline.h (struct copy_body_data): Add do_not_unshare field.
15925         (maybe_inline_call_in_expr): Declare.
15926         * Makefile.in (tree.o): Depend on TREE_INLINE_H.
15927         (stor-layout.o): Depend on CGRAPH_H, TREE_INLINE_H, TREE_DUMP_H and
15928         GIMPLE_H.
15929
15930 2009-06-30  Richard Guenther  <rguenther@suse.de>
15931
15932         * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Always
15933         continue walking.
15934         (propagate_necessity): Do not mark reaching defs of stores
15935         as necessary.
15936
15937 2009-06-30  Jan Hubicka  <jh@suse.cz>
15938
15939         * cfgloopanal.c (check_irred): Move into ...
15940         (mark_irreducible_loops): ... here; return true if ireducible
15941         loops was found.
15942         * ipa-pure-const.c: Include cfgloop.h and tree-scalar-evolution.h
15943         (analyze_function): Try to prove loop finiteness.
15944         * cfgloop.h (mark_irreducible_loops): Update prototype.
15945         * Makefile.in (ipa-pure-const.o): Add dependency on SCEV and CFGLOOP.
15946
15947 2009-06-30  Basile Starynkevitch  <basile@starynkevitch.net>
15948
15949         * Makefile.in (PLUGIN_HEADERS): added ggc, tree-dump, pretty-print.
15950
15951 2009-06-30  Ira Rosen  <irar@il.ibm.com>
15952
15953         PR tree-optimization/40542
15954         * tree-vect-stmts.c (vect_analyze_stmt): Don't vectorize volatile
15955         types.
15956
15957 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15958
15959         PR tree-optimization/40582
15960         * tree-sra.c (build_ref_for_offset_1): Use types_compatible_p rather
15961         than useless_type_conversion_p.
15962         (generate_subtree_copies): Increment sra_stats.subtree_copies at a
15963         proper place.
15964
15965 2009-06-30  Martin Jambor  <mjambor@suse.cz>
15966
15967         PR middle-end/40554
15968         * tree-sra.c (sra_modify_expr): Add access->offset to start_offset.
15969
15970 2009-06-30  Richard Guenther  <rguenther@suse.de>
15971
15972         * tree-ssa-alias.c (walk_aliased_vdefs_1): Change interface to
15973         use ao_ref references.
15974         (walk_aliased_vdefs): Likewise.
15975         * tree-ssa-alias.h (walk_aliased_vdefs): Adjust prototype.
15976         * tree-ssa-dce.c (struct ref_data): Remove.
15977         (mark_aliased_reaching_defs_necessary_1): Use the ao_ref argument.
15978         (mark_aliased_reaching_defs_necessary): Adjust.
15979         (mark_all_reaching_defs_necessary_1): Likewise.
15980
15981 2009-06-30  Paolo Bonzini  <bonzini@gnu.org>
15982
15983         PR boostrap/40597
15984         * expmed.c (emit_cstore): New name of emit_store_flag_1.
15985         (emit_store_flag_1): Extract from emit_store_flag, adjust
15986         calls to (what now is) emit_cstore.
15987         (emit_store_flag): Call emit_store_flag_1 and also use it
15988         for what used to be recursive calls.
15989
15990 2009-06-30  Wei Guozhi  <carrot@google.com>
15991
15992         PR/40416
15993         * tree-ssa-sink.c (statement_sink_location): Stop sinking expression
15994         if the target bb post dominates from bb.
15995         * config/i386/i386.c (memory_address_length): Check existence of base
15996         register before using it.
15997
15998 2009-06-30  Nick Clifton  <nickc@redhat.com>
15999             DJ Delorie  <dj@redhat.com>
16000
16001         * config.sh/lib1funcs.h (FMOVD_WORKS): Only define if
16002         __FMOVD_ENABLED__ is defined.
16003         * config/sh/sh.h
16004         (TARGET_FMOVD): Provide a default definition.
16005         (MASK_FMOVD): Likewise.
16006         (TARGET_CPU_CPP_BUILTINS): Define
16007         __FMOVD_ENABLED__ if TARGET_FMOVD is true.
16008         * config/sh/sh.md (movdf_i4): For alternative 0 use either one or
16009         two fmov instructions depending upon whether TARGET_FMOVD is
16010         enabled.
16011         (split for DF load from memory into register): Also handle
16012         MEMs which consist of REG+DISP addressing.
16013         (split for DF store from register to memory): Likewise.
16014         * config/sh/sh.opt (mfmovd): Remove this switch.
16015         * doc/invoke.texi (-mfmovd): Remove documentation of this switch.
16016         * config/sh/sh.c (sh_override_options): Do not automatically
16017         enable TARGET_MOVD for the SH2A when supporting doubles - leave
16018         that to the -mfmovd command line switch.
16019
16020         * config/sh/sh.c (broken_move): Do not restrict fldi test to only
16021         the SH4 and SH4A.
16022         (fldi_ok): Always allow.
16023         * config/sh/sh.md (movsf_ie): Always use single fp_mode.
16024
16025 2009-06-29  DJ Delorie  <dj@redhat.com>
16026
16027         * doc/install.texi (mep-x-elf): Correct chip's full name.
16028
16029 2009-06-29  H.J. Lu  <hongjiu.lu@intel.com>
16030
16031         * doc/extend.texi: Fix typo.
16032
16033 2009-06-29  Tom Tromey  <tromey@redhat.com>
16034
16035         * dwarf2.h: Remove.
16036         * Makefile.in (DWARF2_H): New variable.
16037         (except.o): Use it.
16038         (dwarf2out.o): Likewise.
16039         (dwarf2asm.o): Likewise.
16040         * config/i386/t-i386: Use DWARF2_H.
16041         * except.c: Include elf/dwarf2.h.
16042         * unwind-dw2.c: Include elf/dwarf2.h.
16043         * dwarf2out.c: Include elf/dwarf2.h.
16044         (dw_loc_descr_struct) <dw_loc_opc>: Now a bitfield.
16045         <dtprel>: New field.
16046         (dwarf_stack_op_name): Don't handle INTERNAL_DW_OP_tls_addr.
16047         (size_of_loc_descr): Likewise.
16048         (output_loc_operands_raw): Likewise.
16049         (output_loc_operands): Handle new dtprel field.
16050         (loc_checksum): Update.
16051         (loc_descriptor_from_tree_1) <VAR_DDECL>: Set dtprel field.
16052         * unwind-dw2-fde-glibc.c: Include elf/dwarf2.h.
16053         * unwind-dw2-fde.c: Include elf/dwarf2.h.
16054         * dwarf2asm.c: Include elf/dwarf2.h.
16055         * unwind-dw2-fde-darwin.c: Include elf/dwarf2.h.
16056         * config/mmix/mmix.c: Include elf/dwarf2.h.
16057         * config/rs6000/darwin-fallback.c: Include elf/dwarf2.h.
16058         * config/xtensa/unwind-dw2-xtensa.c: Include elf/dwarf2.h.
16059         * config/sh/sh.c: Include elf/dwarf2.h.
16060         * config/i386/i386.c: Include elf/dwarf2.h.
16061
16062 2009-06-29  DJ Delorie  <dj@redhat.com>
16063
16064         * config/mep/mep.h (CPP_SPEC): Remove __cop macro.
16065
16066         * doc/extend.texi: Add MeP attributes and pragmas.
16067         * doc/invoke.text: Add MeP Options.
16068         * doc/contrib.texi: Add MeP contribution.
16069         * doc/md.texi: Add MeP constraints.
16070         * doc/install.texi: Add MeP target.
16071
16072 2009-06-30  Anatoly Sokolov  <aesok@post.ru>
16073
16074         * target.h (struct gcc_target): Add frame_pointer_required field.
16075         * target-def.h (TARGET_FRAME_POINTER_REQUIRED): New.
16076         (TARGET_INITIALIZER): Use TARGET_FRAME_POINTER_REQUIRED.
16077         * ira.c (setup_eliminable_regset): Use frame_pointer_required target
16078         hook.
16079         * reload1.c (update_eliminables): (Ditto.).
16080         * gcc/system.h (FRAME_POINTER_REQUIRED): Poison.
16081         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
16082         (INITIAL_FRAME_POINTER_OFFSET): (Ditto.).
16083
16084         * config/arc/arc.h (FRAME_POINTER_REQUIRED): Remove macro.
16085
16086         * config/arm/arm.h (FRAME_POINTER_REQUIRED): Remove macro.
16087         * config/arm/arm.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16088         (arm_frame_pointer_required): New function.
16089
16090         * config/avr/avr.h (FRAME_POINTER_REQUIRED): Remove macro.
16091         * config/avr/avr.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16092         (avr_frame_pointer_required_p): Declare as static.
16093         * config/avr/avr-protos.h (avr_frame_pointer_required_p): Remove.
16094
16095         * config/bfin/bfin.h (FRAME_POINTER_REQUIRED): Remove macro.
16096         * config/bfin/bfin.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16097         (bfin_frame_pointer_required): Make as static, change return type
16098         to bool.
16099         * config/bfin/bfin-protos.h (bfin_frame_pointer_required): Remove.
16100
16101         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Remove macro.
16102         * config/cris/cris.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16103         (cris_frame_pointer_required): New function.
16104
16105         * config/crx/crx.h (FRAME_POINTER_REQUIRED): Remove macro.
16106
16107         * config/fr30/fr30.h (FRAME_POINTER_REQUIRED): Remove macro.
16108         * config/fr30/fr30.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16109         (fr30_frame_pointer_required): New function.
16110
16111         * config/frv/frv.h (FRAME_POINTER_REQUIRED): Remove macro.
16112         * config/frv/frv.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16113         (frv_frame_pointer_required): Make as static, change return type
16114         to bool.
16115         * config/bfin/bfin-protos.h (frv_frame_pointer_required): Remove.
16116
16117         * config/i386/i386.h (FRAME_POINTER_REQUIRED): Remove macro.
16118         * config/i386/i386.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16119         (ix86_frame_pointer_required): Make as static, change return type to
16120         bool.
16121         * config/i386/i386-protos.h (ix86_frame_pointer_required): Remove.
16122
16123         * config/m32c/m32c.h (FRAME_POINTER_REQUIRED): Remove macro.
16124         * config/m32c/m32c.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16125
16126         * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Remove macro.
16127
16128         * config/mcore/mcore.h (CAN_ELIMINATE): Remove macro.
16129
16130         * config/mep/mep.h (FRAME_POINTER_REQUIRED): Remove macro.
16131
16132         * config/mips/mips.h (FRAME_POINTER_REQUIRED): Remove macro.
16133         * config/mips/mips.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16134         (mips_frame_pointer_required): Make as static.
16135         * config/mips/mips-protos.h (mips_frame_pointer_required): Remove.
16136
16137         * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Remove macro.
16138         * config/mmix/mmix.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16139         (mmix_frame_pointer_required): Mew function.
16140
16141         * config/moxie/moxie.h (FRAME_POINTER_REQUIRED): Remove macro.
16142         * config/moxie/moxie.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16143
16144         * config/pa/pa.h (FRAME_POINTER_REQUIRED): Remove macro.
16145
16146         * config/score/score.h (FRAME_POINTER_REQUIRED): Remove macro.
16147
16148         * config/sh/sh.h (CAN_ELIMINATE): Remove macro.
16149
16150         * config/sparc/sparc.h (FRAME_POINTER_REQUIRED): Remove macro.
16151         (CAN_ELIMINATE): Redefine.
16152         * config/sparc/sparc.c (TARGET_FRAME_POINTER_REQUIRED): Define macro.
16153         (sparc_frame_pointer_required): New function.
16154         (sparc_can_eliminate): New function.
16155         * config/sparc/sparc-protos.h (sparc_can_eliminate): Declare.
16156
16157         * config/vax/vax.h (FRAME_POINTER_REQUIRED): Remove macro.
16158         * config/vax/vax.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16159
16160         * config/xtensa/xtensa.h (FRAME_POINTER_REQUIRED): Remove macro.
16161         * config/xtensa/xtensa.c (TARGET_FRAME_POINTER_REQUIRED): Define.
16162         (xtensa_frame_pointer_required): Make as static, change return type
16163         to bool.
16164         * config/xtensa/xtensa-protos.h (xtensa_frame_pointer_required):
16165         Remove.
16166
16167 2009-06-29  Olatunji Ruwase  <tjruwase@google.com>
16168
16169         * doc/plugins.texi: Document PLUGIN_START_UNIT.
16170         * toplev.c (compile_file): Call PLUGIN_START_UNIT.
16171         * gcc-plugin.h (PLUGIN_START_UNIT): Added new event.
16172         * plugin.c (plugin_event_name): Added PLUGIN_START_UNIT.
16173         (register_callback): Handle PLUGIN_START_UNIT.
16174         (invoke_plugin_callbacks): Handle PLUGIN_START_UNIT.
16175
16176 2009-06-29  Eric Botcazou  <ebotcazou@adacore.com>
16177
16178         * tree.c (process_call_operands): Propagate TREE_READONLY from the
16179         operands.
16180         (PROCESS_ARG): Do not clear TREE_READONLY if CONSTANT_CLASS_P.
16181         (build3_stat): Propagate TREE_READONLY for COND_EXPR.
16182
16183 2009-06-29  Daniel Jacobowitz  <dan@codesourcery.com>
16184
16185         * config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
16186         move cost.
16187
16188 2009-06-29  Uros Bizjak  <ubizjak@gmail.com>
16189
16190         * doc/extend.texi (Additional Floating Types): __float128 is also
16191         supported on i386 targets.
16192
16193 2009-06-29  Richard Guenther  <rguenther@suse.de>
16194
16195         PR middle-end/14187
16196         * tree-ssa-alias.h (struct pt_solution): Add vars_contains_restrict
16197         flag.
16198         (pt_solutions_same_restrict_base): Declare.
16199         * tree-ssa-structalias.c (struct variable_info): Add is_restrict_var
16200         flag.
16201         (new_var_info): Initialize is_global_var properly for SSA_NAMEs.
16202         (make_constraint_from, make_copy_constraint): Move earlier.
16203         (make_constraint_from_heapvar): New function.
16204         (make_constraint_from_restrict): Likewise.
16205         (handle_lhs_call): Use it.
16206         (find_func_aliases): Use it to track conversions to restrict
16207         qualified pointers.
16208         (struct fieldoff): Add only_restrict_pointers flag.
16209         (push_fields_onto_fieldstack): Initialize it.
16210         (create_variable_info_for): Track global restrict qualified pointers.
16211         (intra_create_variable_infos): Use make_constraint_from_heapvar.
16212         Track restrict qualified pointer arguments.
16213         (set_uids_in_ptset): Use varinfo is_global_var flag.
16214         (find_what_var_points_to): Set the vars_contains_restrict flag.
16215         Always create the points-to solution for sets including restrict tags.
16216         (pt_solutions_same_restrict_base): New function.
16217         * tree-ssa-alias.c (ptr_derefs_may_alias_p): For two restrict
16218         qualified pointers use pt_solutions_same_restrict_base as
16219         additional source for disambiguation.
16220
16221 2009-06-29  Richard Guenther  <rguenther@suse.de>
16222
16223         PR middle-end/38212
16224         * alias.c (find_base_decl): Remove.
16225         (get_deref_alias_set_1): Remove restrict handling.
16226         * c-common.c (c_apply_type_quals_to_decl): Do not set
16227         DECL_POINTER_ALIAS_SET.
16228         * gimplify.c (find_single_pointer_decl_1): Remove.
16229         (find_single_pointer_decl): Likewise.
16230         (internal_get_tmp_var): Remove restrict handling.
16231         (gimple_regimplify_operands): Likewise.
16232         * omp-low.c (expand_omp_atomic_pipeline): Do not set
16233         DECL_POINTER_ALIAS_SET. Use ref-all pointers.
16234         * print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
16235         * tree.c (restrict_base_for_decl): Remove.
16236         (init_ttree): Do not allocate it.
16237         (make_node_stat): Do not set DECL_POINTER_ALIAS_SET.  Set
16238         LABEL_DECL_UID for label decls.
16239         (copy_node_stat): Do not copy restrict information.
16240         (decl_restrict_base_lookup): Remove.
16241         (decl_restrict_base_insert): Likewise.
16242         (print_restrict_base_statistics): Likewise.
16243         (dump_tree_statistics): Do not call print_restrict_base_statistics.
16244         * tree.h (DECL_POINTER_ALIAS_SET): Remove.
16245         (DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
16246         (struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
16247         (LABEL_DECL_UID): Adjust.
16248         (DECL_BASED_ON_RESTRICT_P): Remove.
16249         (DECL_GET_RESTRICT_BASE): Likewise.
16250         (SET_DECL_RESTRICT_BASE): Likewise.
16251         (struct tree_decl_with_vis): Remove based_on_restrict_p flag.
16252
16253         * config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
16254         instead of DECL_POINTER_ALIAS_SET.
16255         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
16256         * config/s390/s390.c (s390_gimplify_va_arg): Likewise.
16257         * config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
16258
16259 2009-06-29  Richard Guenther  <rguenther@suse.de>
16260
16261         PR tree-optimization/40579
16262         * tree-vrp.c (vrp_evaluate_conditional): Bail out early if
16263         the IL to simplify has constants that overflowed.
16264
16265 2009-06-28  Uros Bizjak  <ubizjak@gmail.com>
16266
16267         PR tree-optimization/40550
16268         * tree-vect-generic.c (expand_vector_operations_1): Compute in
16269         vector_compute_type only when the size of vector_compute_type is
16270         less than the size of type.
16271
16272 2009-06-28  Eric Botcazou  <ebotcazou@adacore.com>
16273
16274         * fold-const.c (contains_label_1): Fix comments.
16275         (contains_label_p): Do not walk trees multiple time.
16276
16277 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16278
16279         * config/i386/i386.h (enum ix86_fpcmp_strategy): New.
16280         * config/i386/i386.md (cbranchxf4, cstorexf4, cbranch<MODEF>4,
16281         cstore<MODEF>4, mov<X87MODEF>cc): Change predicate to
16282         ix86_fp_comparison_operator.
16283         (*fp_jcc_1_mixed, *fp_jcc_1_sse, *fp_jcc_1_387, *fp_jcc_2_mixed,
16284         *fp_jcc_2_sse, *fp_jcc_2_387): Delete
16285         (*fp_jcc_3_387, *fp_jcc_4_387, *fp_jcc_5_387, *fp_jcc_6_387,
16286         *fp_jcc_7_387, *fp_jcc_8<MODEF>_387): Eliminate call to
16287         !ix86_use_fcomi_compare, change ix86_fp_jump_nontrivial_p call
16288         to !TARGET_CMOVE, change predicate to ix86_fp_comparison_operator.
16289         (related splits): Change predicate to ix86_fp_comparison_operator.
16290         * config/i386/predicates.md: Use ix86_trivial_fp_comparison_operator
16291         instead of ix86_fp_comparison_codes.
16292         (ix86_trivial_fp_comparison_operator,
16293         ix86_fp_comparison_operator): New.
16294         * config/i386/i386-protos.h (ix86_fp_comparison_strategy): New.
16295         (ix86_expand_compare): Eliminate last two parameters.
16296         (ix86_fp_jump_nontrivial_p): Kill.
16297         * config/i386/i386.c (put_condition_code): Eliminate call to
16298         ix86_fp_comparison_codes and subsequent assertion.
16299         (ix86_fp_comparison_codes): Eliminate.
16300         (ix86_fp_swap_condition): New.
16301         (ix86_fp_comparison_arithmetics_cost, ix86_fp_comparison_fcomi_cost,
16302         ix86_fp_comparison_sahf_cost, ix86_use_fcomi_compare): Consolidate
16303         into ix86_fp_comparison_cost and ix86_fp_comparison_strategy.
16304         (ix86_prepare_fp_compare_args): Use ix86_fp_comparison_strategy
16305         and ix86_fp_swap_condition.
16306         (ix86_expand_fp_compare): Eliminate code for second jump/bypass jump.
16307         Use ix86_fp_comparison_strategy.
16308         (ix86_expand_compare): Likewise.  Eliminate last two arguments.
16309         (ix86_fp_jump_nontrivial_p): Eliminate.
16310         (ix86_expand_branch): Treat SFmode/DFmode/XFmode as simple.  Adjust
16311         call to ix86_expand_compare.
16312         (ix86_split_fp_branch, ix86_expand_setcc,
16313         ix86_expand_carry_flag_compare, ix86_expand_int_movcc,
16314         ix86_expand_fp_movcc): Eliminate code for second jump/bypass jump.
16315
16316 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16317
16318         * config/arm/arm.c (arm_final_prescan_ins): Eliminate code
16319         related to jump_clobbers.
16320         * config/arm/arm.md (conds): Remove jump_clob case.
16321         (addsi3_cbranch, addsi3_cbranch_scratch, subsi3_cbranch, two
16322         splits): Change comparison_operator to arm_comparison_operator.
16323         (*arm_buneq, *arm_bltgt, *arm_buneq_reversed, *arm_bltgt_reversed):
16324         Eliminate.
16325
16326 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16327
16328         * dojump.c (do_compare_rtx_and_jump): Try swapping the
16329         condition for floating point modes.
16330         * expmed.c (emit_store_flag_1): Move here a bigger part
16331         of emit_store_flag.
16332         (emit_store_flag): Try swapping the condition for floating point
16333         modes.
16334         * optabs.c (emit_cmp_and_jump_insns): Cope with constant op0 better.
16335
16336 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16337
16338         * expr.c (expand_expr_real_1): Just use do_store_flag.
16339         (do_store_flag): Drop support for TRUTH_NOT_EXPR.  Use
16340         emit_store_flag_force.
16341         * expmed.c (emit_store_flag_force): Copy here trick
16342         previously in expand_expr_real_1.  Try reversing the comparison.
16343         (emit_store_flag_1): Work if target is NULL.
16344         (emit_store_flag): Work if target is NULL, using the result mode
16345         from the comparison.  Use split_comparison, restructure final part
16346         to simplify conditionals.
16347
16348 2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
16349
16350         * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
16351         * dojump.c (do_jump): Change handling of floating-point
16352         ops to use just do_compare_and_jump.
16353         (split_comparison): New.
16354         (do_compare_rtx_and_jump): Add here logic coming previously
16355         in do_jump, using split_comparison.
16356
16357 2009-06-27  H.J. Lu  <hongjiu.lu@intel.com>
16358
16359         PR target/40489
16360         * config/ia64/ia64.c (ia64_reorg): Check NULL insn.
16361
16362 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16363
16364         * tree-ssa-alias.c: Fix unintentional commit.
16365
16366 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16367
16368         * passes.c (execute_one_pass): Fix unintentional commit.
16369
16370 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16371
16372         * df-problems.c (df_set_seen, df_unset_seen): Delete.
16373         (df_rd_local_compute, df_md_local_compute): Inline them.
16374
16375         (df_md_scratch): New.
16376         (df_md_alloc, df_md_free): Allocate/free it.
16377         (df_md_local_compute): Only include live registers in init.
16378         (df_md_transfer_function): Prune the in-set computed by
16379         the confluence function, and the gen-set too.
16380
16381 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16382
16383         PR rtl-optimization/26854
16384         * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
16385         * df-problems.c (df_rd_add_problem): Fix comment.
16386         (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
16387         df_md_simulate_artificial_defs_at_top,
16388         df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
16389         df_md_bb_local_compute, df_md_local_compute, df_md_reset,
16390         df_md_transfer_function, df_md_init, df_md_confluence_0,
16391         df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
16392         problem_MD, df_md_add_problem): New.
16393         * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
16394         df_md_get_bb_info): New.
16395         (DF_LAST_PROBLEM_PLUS1): Adjust.
16396
16397         * Makefile.in (fwprop.o): Include domwalk.h.
16398         * fwprop.c: Include domwalk.h.
16399         (reg_defs, reg_defs_stack): New.
16400         (bitmap_only_bit_between): Remove.
16401         (process_defs): New.
16402         (process_uses): Use reg_defs and local_md instead of
16403         bitmap_only_bit_between and local_rd.
16404         (single_def_use_enter_block): New, from build_single_def_use_links.
16405         (single_def_use_leave_block): New.
16406         (build_single_def_use_links): Remove code moved to
16407         single_def_use_enter_block, invoke domwalk.
16408         (use_killed_between): Adjust comment.
16409
16410 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16411
16412         * bitmap.h (bitmap_ior_and_into): New.
16413         * bitmap.c (bitmap_ior_and_into): New.
16414
16415 2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
16416
16417         * domwalk.h (struct dom_walk_data): Remove all callbacks except
16418         before_dom_children_before_stmts and after_dom_children_after_stmts.
16419         Rename the two remaining callbacks to just before_dom_children and
16420         after_dom_children. Remove other GIMPLE statement walking bits.
16421         * domwalk.c (walk_dominator_tree): Remove now unsupported features.
16422         * graphite.c: Do not include domwalk.h.
16423         * tree-into-ssa.c (interesting_blocks): New global.
16424         (struct mark_def_sites_global_data): Remove it and names_to_rename.
16425         (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
16426         rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
16427         now that they're not domwalk callbacks.
16428         (rewrite_initialize_block): Rename to...
16429         (rewrite_enter_block): ... this, place after called functions.  Test
16430         interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
16431         (rewrite_finalize_block): Rename to...
16432         (rewrite_leave_block): ... this, place after called functions.
16433         (rewrite_update_init_block): Rename to...
16434         (rewrite_update_enter_block): ... this, place after called functions.
16435         Test interesting_blocks, call rewrite_update_stmt and
16436         rewrite_update_phi_arguments.
16437         (rewrite_update_fini_block): Rename to...
16438         (rewrite_leave_block): ... this, place after called functions.
16439         (rewrite_blocks): Remove last argument, simplify initialization of
16440         walk_data.
16441         (mark_def_sites_initialize_block): Rename to...
16442         (mark_def_sites_block): ... this, call mark_def_sites.
16443         (mark_def_sites_blocks): Remove argument, simplify initialization of
16444         walk_data.
16445         (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
16446         (update_ssa): Likewise.
16447         * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
16448         callback.
16449         (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
16450         (dom_opt_initialize_block): Rename to...
16451         (dom_opt_enter_block): ... this, place after called functions.  Walk
16452         statements here, inline propagate_to_outgoing_edges.
16453         (dom_opt_finalize_block): Rename to...
16454         (dom_opt_leave_block): ... this, place after called functions.
16455         * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
16456         domwalk callback.
16457         (dse_enter_block, dse_record_phi): New.
16458         (dse_record_phis): Delete.
16459         (dse_finalize_block): Rename to...
16460         (dse_leave_block): ... this.
16461         (tree_ssa_dse): Simplify initialization of walk_data.
16462         * tree-ssa-loop-im.c (determine_invariantness, move_computations):
16463         Adjust initialization of walk_data.
16464         * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
16465         * tree-ssa-loop-phiopt.c (get_non_trapping):
16466         Adjust initialization of walk_data.
16467         * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
16468         * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
16469         it's not a domwalk callback.
16470         (uncprop_initialize_block): Rename to...
16471         (dse_enter_block): ... this, call uncprop_into_successor_phis.
16472         (dse_finalize_block): Rename to...
16473         (dse_leave_block): ... this.
16474         (tree_ssa_uncprop): Simplify initialization of walk_data.
16475         * Makefile.in: Adjust dependencies.
16476
16477 2009-06-27  Richard Earnshaw  <rearnsha@arm.com>
16478
16479         * arm.md (casesi): Fix test for Thumb1.
16480         (thumb1_casesi_internal_pic): Likewise.
16481         (thumb1_casesi_dispatch): Likewise.
16482
16483 2009-06-26  Daniel Gutson  <dgutson@codesourcery.com>
16484
16485         * config/arm/arm-cores.def: Added core cortex-m0.
16486         * config/arm/arm-tune.md: Regenerated.
16487         * doc/invoke.texi: Added entry for cpu ARM Cortex-M0.
16488
16489 2009-06-26  DJ Delorie  <dj@redhat.com>
16490
16491         * config/mep/mep.opt (mfar): Remove -mfar as it doesn't do anything.
16492
16493         * config/mep/mep.c (mep_bundle_insns): Account for the fact that
16494         the scheduler doesn't tag jump insns.
16495
16496 2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
16497
16498         * c-decl.c (merge_decls): Re-indent.
16499
16500 2009-06-26  Janis Johnson  <janis187@us.ibm.com>
16501
16502         PR c/39902
16503         * tree.c (real_zerop, real_onep, real_twop, real_minus_onep):
16504         Special-case decimal float constants.
16505
16506 2009-06-26  Richard Henderson  <rth@redhat.com>
16507
16508         * function.h (struct function): Add cannot_be_copied_reason,
16509         and cannot_be_copied_set.
16510         * tree-inline.c (has_label_address_in_static_1): Rename from
16511         inline_forbidden_p_2; don't set inline_forbidden_reason here.
16512         (cannot_copy_type_1): Rename from inline_forbidden_p_op; likewise
16513         don't set inline_forbidden_reason.
16514         (copy_forbidden): New function, split out of inline_forbidden_p.
16515         (inline_forbidden_p_stmt): Don't check for nonlocal labels here.
16516         (inline_forbidden_p): Use copy_forbidden.
16517         (tree_versionable_function_p): Likewise.
16518         (inlinable_function_p): Merge into tree_inlinable_function_p.
16519         (tree_function_versioning): Remap cfun->nonlocal_goto_save_area.
16520         * ipa-cp.c (ipcp_versionable_function_p): New function.
16521         (ipcp_cloning_candidate_p): Use it.
16522         (ipcp_node_modifiable_p): Likewise.
16523
16524 2009-06-26  Olatunji Ruwase  <tjruwase@google.com>
16525
16526         * builtins.c (expand_builtin_alloca): Handle builtin alloca
16527         that is marked not to be inlined. Remove flag_mudflap use.
16528         * tree-mudflap.c: Rename mf_xform_derefs to mf_xfrom_statements.
16529         (mf_xform_statements): Mark builtin alloca calls as un-inlineable.
16530
16531 2009-06-26  Steve Ellcey  <sje@cup.hp.com>
16532
16533         PR bootstrap/40338
16534         * config/pa/t-pa-hpux10 (TARGET_LIBGCC2_CFLAGS): Add -frandom-seed.
16535         * config/pa/t-pa-hpux11 (TARGET_LIBGCC2_CFLAGS): Ditto.
16536
16537 2009-06-26  Kai Tietz  <kai.tietz@onevision.com>
16538
16539         * config/i386/mingw-tls.c (__mingwthr_key_dtor): Remove for none
16540         shared libgcc.
16541         (__mingwthr_remove_key_dtor): Likewise.
16542
16543 2009-06-26  Richard Guenther  <rguenther@suse.de>
16544
16545         * tree-ssa-structalias.c (do_ds_constraint): Simplify escape handling.
16546
16547 2009-06-26  Steven Bosscher  <steven@gcc.gnu.org>
16548
16549         PR middle-end/40525
16550         * ifcvt.c (dead_or_predicable): If predicating MERGE_BB fails,
16551         try the non-cond_exec path also.
16552
16553 2009-06-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
16554
16555         PR target/40468
16556         * pa.c (branch_to_delay_slot_p, branch_needs_nop_p): New functions.
16557         (output_cbranch): Use new functions.
16558         (output_lbranch, output_bb, output_bvb, output_dbra, output_movb):
16559         Likewise.
16560
16561 2009-06-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
16562             Pat Haugen  <pthaugen@us.ibm.com>
16563             Revital Eres <ERES@il.ibm.com>
16564
16565         * config/rs6000/rs6000.c (print_operand): Correct lossage message
16566         for %c error.  Add %x support to print VSX registers as a unified
16567         register set, instead of separate float and altivec registers.
16568         Switch to use VECTOR_MEM_ALTIVEC_P instead of TARGET_ALTIVEC for
16569         %y case, and add support for VSX pre-modify addresses.
16570         (output_toc): Add assert for CONST containing an integer constant
16571         in the PLUS case.
16572         (rs6000_adjust_cost): Add POWER7 support.
16573         (insn_must_be_first_in_group): Ditto.
16574         (insn_must_be_last_in_group): Ditto.
16575         (rs6000_emit_popcount): Ditto.
16576         (rs6000_vector_mode_supported_p): Ditto.
16577
16578         * config/rs6000/rs6000-protos.h (rs6000_secondary_reload_class):
16579         Change some of the functions called by macros to being called
16580         through a pointer, so debug functions can be inserted if
16581         -mdebug=addr or -mdebug=cost.
16582         (rs6000_preferred_reload_class_ptr): Ditto.
16583         (rs6000_secondary_reload_class_ptr): Ditto.
16584         (rs6000_secondary_memory_needed_ptr): Ditto.
16585         (rs6000_cannot_change_mode_class_ptr): Ditto.
16586         (rs6000_secondary_reload_inner): Ditto.
16587         (rs6000_legitimize_reload_address): Ditto.
16588         (rs6000_legitimize_reload_address_ptr): Ditto.
16589         (rs6000_mode_dependent_address): Ditto.
16590         (rs6000_mode_dependent_address_ptr): Ditto.
16591
16592         * config/rs6000/rs6000.c (reg_offset_addressing_ok_p): New
16593         function to return true if the mode allows reg + integer
16594         addresses.
16595         (virtual_stack_registers_memory_p): New function to return true if
16596         the address refers to a virtual stack register.
16597         (rs6000_legitimate_offset_address_p): Move code to say whether a
16598         mode supports reg+int addressing to reg_offset_addressing_ok_p and
16599         call it.
16600         (rs6000_legitimate_address_p): Add checks for modes that only can
16601         do reg+reg addressing.  Start adding VSX support.
16602         (rs6000_legitimize_reload_address): Ditto.
16603         (rs6000_legitimize_address): Ditto.
16604         (rs6000_debug_legitimate_address_p): New debug functions for
16605         -mdebug=addr and -mdebug=cost.
16606         (rs6000_debug_rtx_costs): Ditto.
16607         (rs6000_debug_address_costs): Ditto.
16608         (rs6000_debug_adjust_cost): Ditto.
16609         (rs6000_debug_legitimize_address): Ditto.
16610         (rs6000_legitimize_reload_address_ptr): Point to call normal
16611         function or debug function.  Make functions called via pointer
16612         static.
16613         (rs6000_mode_dependent_address_ptr): Ditto.
16614         (rs6000_secondary_reload_class_ptr): Ditto.
16615         (rs6000_hard_regno_mode_ok): Add preliminary VSX support.
16616         (rs6000_emit_move): Add -mdebug=addr support.  Change an abort
16617         into a friendlier error.
16618         (rs6000_init_builtins): Add initial VSX support.
16619         (rs6000_adjust_cost): Fix some spacing issues.
16620
16621         * config/rs6000/rs6000.h (enum reg_class): Add VSX_REGS.
16622         (REG_CLASS_NAMES): Ditto.
16623         (REG_CLASS_CONTENTS): Ditto.
16624         (PREFERRED_RELOAD_CLASS): Move from a macro to calling through a
16625         pointer, to add -mdebug=addr support.
16626         (CANNOT_CHANGE_MODE_CLASS): Ditto.
16627         (SECONDARY_RELOAD_CLASS): Call through a pointer to add
16628         -mdebug=addr support.
16629         (LEGITIMIZE_RELOAD_ADDRESS): Ditto.
16630         (GO_IF_MODE_DEPENDENT_ADDRESS): Ditto.
16631         (enum rs6000_builtins): Add RS6000_BUILTIN_BSWAP_HI.
16632
16633         * config/rs6000/rs6000.md (bswaphi*): Add support for swapping
16634         16-bit values.
16635         (bswapsi*): Set attribute types for load/store.  Add combiner
16636         patterns to eliminate zero extend on 64-bit.
16637         (bswapdi*): Add support for swapping 64-bit values.  Use ldbrx and
16638         stdbrx if the hardware supports those instructions.
16639
16640 2009-06-25  Ian Lance Taylor  <iant@google.com>
16641
16642         * doc/invoke.texi (Option Summary): Mention -static-libstdc++.
16643         (Link Options): Document -static-libstdc++.
16644
16645 2009-06-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
16646
16647         PR target/38731
16648         * config/rs6000/rs6000.c (LOCAL_ALIGNMENT): Redefine to just use
16649         DATA_ALIGNMENT instead.
16650
16651 2009-06-25  Richard Guenther  <rguenther@suse.de>
16652
16653         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Disambiguate
16654         indirect references against the callused/escaped solutions.
16655         (call_may_clobber_ref_p_1): Likewise.
16656
16657 2009-06-25  Martin Jambor  <mjambor@suse.cz>
16658
16659         PR tree-optimization/40493
16660         * tree-sra.c (sra_modify_expr): Correct BIT_FIELD_REF argument numbers.
16661         (enum unscalarized_data_handling): New type.
16662         (handle_unscalarized_data_in_subtree): Return what has been done.
16663         (load_assign_lhs_subreplacements): Handle left flushes differently.
16664         (sra_modify_assign): Use unscalarized_data_handling, simplified
16665         condition determining whether to remove the statement.
16666
16667 2009-06-25  Basile Starynkevitch  <basile@starynkevitch.net>
16668
16669         * doc/plugins.texi (Building GCC plugins): Correct typo in Makefile
16670         excerpt - @ should be doubled for texinfo.
16671
16672 2009-06-24  Ian Lance Taylor  <iant@google.com>
16673
16674         * config/arc/arc.c: Include "df.h".
16675         (arc_attribute_table): Make static.  Move higher in file.
16676         (arc_address_cost): Call SMALL_INT on INTVAL, not rtx.
16677         (output_shift): Initialize n later to avoid warning.
16678         * config/arm/arm.c (arm_attribute_table): Make static.  Move
16679         higher in file.
16680         * config/avr/avr.c (avr_attribute_table): Make static.  Move
16681         higher in file.
16682         (reg_class_tab): Change array type from int to enum reg_class.
16683         (avr_jump_mode): Change GET_MODE to GET_CODE when checking for
16684         LABEL_REF.
16685         (out_tsthi, ashlhi3_out): Don't use AS2 with "or" or "and".
16686         (lshrhi3_out): Likewise.
16687         (class_likely_spilled_p): Change return type to bool.
16688         (avr_rtx_costs): Use local code variable with enum type.
16689         * config/avr/avr.md (movmemhi): Use add_reg_note.
16690         (andhi3, andsi3): Don't use AS2 with "and".
16691         (iorhi3, iorsi3): Don't use AS2 with "or".
16692         * config/avr/avr-protos.h (class_likely_spilled_p): Update declaration.
16693         * config/crx/crx.c: Include "df.h".
16694         (crx_attribute_table): Make static.
16695         * config/m32r/m32r.c: Include "df.h".
16696         (m32r_attribute_table): Make static.  Move higher in file.
16697         (pop): Use add_reg_note.
16698         (block_move_call): Change 0 to LCT_NORMAL in function call.
16699         * config/m32r/m32r.md (movsi_insn): Remove unused local value.
16700         * config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Likewise.
16701         * config/m32r/m32r-protos.h (m32r_compute_function_type): Always
16702         declare, not just when TREE_CODE is defined.
16703         * config/m68hc11/m68hc11.c: Include "expr.h".
16704         (m68hc11_attribute_table): Make static.  Move higher in file.
16705         (m68hc11_small_indexed_indirect_p): Change 0 to VOIDmode in
16706         function call.
16707         (m68hc11_register_indirect_p): Likewise.
16708         (m68hc11_function_arg_padding): Change return type to enum
16709         direction.
16710         (emit_move_after_reload): Use add_reg_note.
16711         (m68hc11_emit_logical): Change code parameter to enum rtx_code.
16712         (m68hc11_split_logical): Likewise.
16713         (m68hc11_rtx_costs): Add local code_and outer_code variables with
16714         enum type.
16715         * config/m68hc11/predicates.md (reg_or_some_mem_operand): Change 0
16716         to VOIDmode in function call.
16717         * config/m68hc11/m68hc11-protos.h: Don't check TREE_CODE to see if
16718         tree is defined.
16719         (m68hc11_split_logical): Update declaration.
16720         (m68hc11_function_arg_padding): Update declaration.
16721         * config/mcore/mcore.c (regno_reg_class): Change form array of int
16722         to array of enum reg_class.
16723         (mcore_attribute_table): Make static.  Move higher in file.
16724         (mcore_rtx_costs): Add cast to enum type.
16725         * config/mcore/mcore.h (regno_reg_class): Update declaration.
16726         (GO_IF_LEGITIMATE_INDEX): Add cast to avoid warning.
16727         * config/sh/sh.c (sh_attribute_table): Make static.  Move higher
16728         in file.
16729         * config/sh/predicates.md (trapping_target_operand): Rename and to
16730         and_expr.
16731         * config/sparc/sparc.c (sparc_attribute_table): Make static.  Move
16732         higher in file.
16733         * config/spu/spu.c (spu_attribute_table): Make static.  Move
16734         higher in file.
16735         * config/v850/v850.c (v850_attribute_table): Make static.  Move
16736         higher in file.
16737         (v850_rtx_costs): Use local code with enum type.
16738         (expand_epilogue): Add cast.
16739         * config/v850/v850-c.c (ghs_pragma_section): Initialize repeat.
16740
16741 2009-06-23  Takashi YOSHII  <yoshii.takashi@renesas.com>
16742
16743         PR target/40515
16744         * doc/invoke.texi (SH Options): Document -m2a, -m2a-single,
16745         -m2a-single-only and -m2a-nofpu.
16746         * config/sh/sh.opt: Document m2a generates FPU code.
16747
16748 2009-06-24  Anatoly Sokolov  <aesok@post.ru>
16749
16750         * defaults.h (CAN_ELIMINATE): Provide default.
16751         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
16752         * config/alpha/alpha.h (CAN_ELIMINATE): Delete.
16753         * config/m32c/m32c.h (CAN_ELIMINATE): Delete.
16754         * config/spu/spu.h (CAN_ELIMINATE): Delete.
16755         * config/xtensa/xtensa.h (CAN_ELIMINATE): Delete.
16756         * config/moxie/moxie.h (CAN_ELIMINATE): Delete.
16757         * config/cris/cris.h (CAN_ELIMINATE): Delete.
16758         * config/mn10300/mn10300.h (CAN_ELIMINATE): Delete.
16759         * config/pa/pa64-linux.h (CAN_ELIMINATE): Delete.
16760         * config/mmix/mmix.h (CAN_ELIMINATE): Delete.
16761
16762 2009-06-24  DJ Delorie  <dj@redhat.com>
16763
16764         * mep-ext-cop.cpu: Fix copyright notice.
16765         * mep-default: Fix copyright notice.
16766         * mep-core: Fix copyright notice.
16767         * mep: Fix copyright notice.
16768         * mep-ivc2: Fix copyright notice.
16769         * mep-c5: Fix copyright notice.
16770
16771 2009-06-24  Denis Chertykov  <chertykov@gmail.com>
16772
16773         * doc/contrib.texi (Contributors):
16774
16775 2009-06-24  Andreas Krebbel  <krebbel1@de.ibm.com>
16776
16777         PR middle-end/40501
16778         * tree-ssa-math-opts.c (execute_optimize_bswap): Convert the bswap
16779         src and dst operands if necessary.
16780
16781 2009-06-23  DJ Delorie  <dj@redhat.com>
16782
16783         Add MeP port.
16784         * config.gcc: Add mep support.
16785         * recog.c: Resurrect validate_replace_rtx_subexp().
16786         * recog.h: Likewise.
16787         * config/mep/: Add new port:
16788         * config/mep/constraints.md: New file.
16789         * config/mep/default.h: New file.
16790         * config/mep/intrinsics.h: New file.
16791         * config/mep/intrinsics.md: New file.
16792         * config/mep/ivc2-template.h: New file.
16793         * config/mep/mep-c5.cpu: New file.
16794         * config/mep/mep-core.cpu: New file.
16795         * config/mep/mep-default.cpu: New file.
16796         * config/mep/mep-ext-cop.cpu: New file.
16797         * config/mep/mep-intrin.h: New file.
16798         * config/mep/mep-ivc2.cpu: New file.
16799         * config/mep/mep-lib1.asm: New file.
16800         * config/mep/mep-lib2.c: New file.
16801         * config/mep/mep-pragma.c: New file.
16802         * config/mep/mep-protos.h: New file.
16803         * config/mep/mep-tramp.c: New file.
16804         * config/mep/mep.c: New file.
16805         * config/mep/mep.cpu: New file.
16806         * config/mep/mep.h: New file.
16807         * config/mep/mep.md: New file.
16808         * config/mep/mep.opt: New file.
16809         * config/mep/predicates.md: New file.
16810         * config/mep/t-mep: New file.
16811
16812 2009-06-23  Ian Lance Taylor  <iant@google.com>
16813
16814         * configure.ac: Invoke AC_PROG_CXX.  Separate C specific warnings
16815         from loose_warn into c_loose_warn and from strict_warn into
16816         c_strict_warn.  Set and substitute warn_cxxflags.  Check for
16817         --enable-build-with-cxx.  Set and substitute
16818         ENABLE_BUILD_WITH_CXX.  Set and substitute HOST_LIBS.
16819         * Makefile.in (CXXFLAGS): New variable.
16820         (C_LOOSE_WARN, C_STRICT_WARN): New variables.
16821         (GCC_WARN_CFLAGS): Add $(C_LOOSE_WARN).  Add $(C_STRICT_WARN) if
16822         the default is the same as $(STRICT_WARN).
16823         (GCC_WARN_CXXFLAGS, WARN_CXXFLAGS): New variables.
16824         (CXX): New variable.
16825         (COMPILER): New value if ENABLE_BUILD_WITH_CXX.
16826         (COMPILER_FLAGS, LINKER, LINKER_FLAGS): Likewise.
16827         (ALL_COMPILERFLAGS, ALL_LINKERFLAGS): Likewise.
16828         (HOST_LIBS): New variable.
16829         (GCC_CFLAGS): Add $(C_LOOSE_WARN).
16830         (ALL_CXXFLAGS): New variable.
16831         (LIBS, BACKENDLIBS): Add $(HOST_LIBS).
16832         * doc/install.texi (Configuration): Document
16833         --enable-build-with-cxx, --with-stage1-ldflags,
16834         --with-stage1-libs, --with-boot-ldflags, --with-boot-libs.
16835         * configure: Rebuild.
16836
16837 2009-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
16838
16839         * config/arm/arm.c (arm_override_options): Fix braces and formatting
16840         from previous commit.
16841
16842 2009-06-23  Ian Lance Taylor  <iant@google.com>
16843
16844         * Makefile.in ($(out_object_file)): Depend upon $(DF_H).
16845
16846 2009-06-23  Ian Lance Taylor  <iant@google.com>
16847
16848         * reload.c (alternative_allows_const_pool_ref): Mark mem parameter
16849         with ATTRIBUTE_UNUSED.
16850
16851 2009-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
16852             Pat Haugen  <pthaugen@us.ibm.com>
16853             Revital Eres  <eres@il.ibm.com>
16854
16855         * config.in (HAVE_AS_POPCNTD): Add default definition.
16856         (HAVE_AS_LWSYNC): Ditto.
16857
16858         * configure.ac (gcc_cv_as_powerpc_mfpgpr): Provide real binutils
16859         release number.
16860         (gcc_cv_as_powerpc_cmpb): Ditto.
16861         (gcc_cv_as_powerpc_dfp): Ditto.
16862         (gcc_cv_as_powerpc_vsx): Ditto.
16863         (gcc_cv_as_powerpc_popcntd): Add feature test for assembler
16864         supporting the popcntd/lwsync instructions.
16865         (gcc_cv_as_powerpc_lwsync): Ditto.
16866         * configure: Regenerate.
16867
16868         * config/rs6000/aix53.h (ASM_CPU_SPEC): Add support for
16869         -mcpu=native and -mcpu=power7.
16870         * config/rs6000/aix61.h (ASM_CPU_SPEC): Ditto.
16871
16872         * config/rs6000/linux64.opt (-mprofile-kernel): Move switch to be
16873         a variable instead of a mask to reduce the number of mask bits.
16874         * config/rs6000/sysv4.opt (-mbit-align): Ditto.
16875         (-mbit-word): Ditto.
16876         (-mregnames): Ditto.
16877         * config/rs6000/rs6000.opt (-mupdate): Ditto.
16878         (-mfused-madd): Ditto.
16879
16880         * config/rs6000/rs6000.opt (-mpopcntd): New switch for non-VSX ISA
16881         2.06 instructions.
16882         (-mvsx): New switch for VSX instructions.
16883         (-misel): Move from a variable to a mask to allow it to be set by
16884         -mcpu=.
16885
16886         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_nregs): Change
16887         function declaration to an array declaration.
16888         (rs6000_hard_regno_nregs): New external array declaration.
16889
16890         * config/rs6000/t-rs6000 (MD_INCLUDES): Define, add all of the .md
16891         files included by rs6000.md.
16892
16893         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Use
16894         SET_PROFILE_KERNEL macro to reset the -mprofile-kernel switch.
16895
16896         * config/rs6000/rs6000.c (rs6000_isel): Delete, -misel moved to be
16897         a target mask.
16898         (rs6000_debug_reg): New -mdebug= variables.
16899         (rs6000_debug_addr): Ditto.
16900         (rs6000_debug_cost): Ditto.
16901         (rs6000_pmode): New variable to hold Pmode.
16902         (rs6000_pointer_size): New variable to hold POINTER_SIZE.
16903         (rs6000_class_max_nregs): New array to hold CLASS_MAX_NREGS
16904         calculated at compiler start.
16905         (rs6000_hard_regno_nregs): Change function to an array which holds
16906         HARD_REGNO_NREGS calculated at compiler start.
16907         (rs6000_explicit_options): Delete isel field.
16908         (rs6000_vector_unit): New array to hold which vector unit
16909         supports arithmetic options for a given type.
16910         (rs6000_vector_mem): New array to hold which vector unit supports
16911         memory reference operations for a given type.
16912         (rs6000_vector_align): New array to given the alignment of each
16913         vector type.
16914         (power7_cost): New basic costs for power7.
16915         (SET_PROFILE_KERNEL): New macro for resetting -mprofile-kernel.
16916         (rs6000_hard_regno_nregs_internal): New function, moved from
16917         HARD_REGNO_NREGS, to calculate the number of registers each hard
16918         register takes for each type.
16919         (rs6000_debug_reg_print): New function for -mdebug=reg support.
16920         (rs6000_debug_vector_unit): New array, map rs6000_vector to string.
16921         (+rs6000_init_hard_regno_mode_ok): New function, move calculation
16922         of HARD_REGNO_NREGS, CLASS_MAX_NREGS, REGNO_REG_CLASS, and vector
16923         unit information here so it is calculated once at compiler startup
16924         time.
16925         (rs6000_override_options): Make -misel a target mask.  Add more
16926         power7 target masks.  Setup Pmode and POINTER_SIZE.  Add initial
16927         VSX support.  Add support for -mdebug=reg, -mdebug=addr, and
16928         -mdebug=cost.
16929         (POWERPC_MASKS): Add MASK_POPCNTD, MASK_VSX, and MASK_ISEL.
16930         (rs6000_handle_option): Move -misel from variable to target mask.
16931         (rs6000_builtin_mask_for_load): Add VSX support.
16932         (rs6000_conditional_register_usage): Ditto.
16933         (USE_ALTIVEC_FOR_ARG_P): Ditto.
16934         (function_arg_boundary): Ditto.
16935         (rs6000_expand_builtin): Ditto.
16936         (def_builtin): Make abort message a little friendlier.
16937         (rs6000_emit_int_cmove): Add support for 64-bit isel.
16938
16939         * config/rs6000/rs6000.h (ASM_CPU_POWER7_SPEC): Depend on the
16940         assembler support the popcntd instruction instead of a vsx
16941         instruction to enable power7 support.
16942         (ASM_CPU_SPEC): Add support for -mcpu=native and -mcpu=power7.
16943         (EXTRA_SPECS): Add ASM_CPU_NATIVE_SPEC to allow passing the right
16944         option to the assembler if -mcpu=native.
16945         (ASM_CPU_NATIVE_SPEC): Ditto.
16946         (TARGET_POPCNTD): If assembler doesn't support popcntd, turn off
16947         ISA 2.06 features.
16948         (TARGET_LWSYNC_INSTRUCTION): Define whether it is safe to issue
16949         the lwsync instruction.
16950         (enum processor_type): Add PROCESSOR_POWER7.
16951         (rs6000_debug_reg): New -mdebug= options.
16952         (rs6000_debug_addr): Ditto.
16953         (rs6000_debug_cost): Ditto.
16954         (rs6000_isel): Delete.
16955         (enum rs6000_vector): New enum to say what vector unit we have.
16956         (VECTOR_UNIT_*): New macros to say which vector unit has
16957         arithmetic operations for a given type.
16958         (VECTOR_MEM_*): New macros to say which vector unit has memory
16959         operations for a given type.
16960         (TARGET_LDBRX): Whether the machine supports the ldbrx
16961         instruction.
16962         (TARGET_ISEL): Delete, -misel moved to be a mask.
16963         (TARGET_ISEL64): New macro for 64-bit isel support.
16964         (UNITS_PER_VSX_WORD): New macro.
16965         (POINTER_SIZE): Move to be an external variable, rather than
16966         calculating whether we are generating 32 ot 64-bit code.
16967         (Pmode): Ditto.
16968         (STACK_BOUNDARY): Add VSX support.
16969         (LOCAL_ALIGNMENT): Ditto.
16970         (SLOW_UNALIGNED_ACCESS): Ditto.
16971         (VSX_REGNO_P): New macro for VSX support.
16972         (VFLOAT_REGNO_P): Ditto.
16973         (VINT_REGNO_P): Ditto.
16974         (VLOGICAL_REGNO_P): Ditto.
16975         (VSX_VECTOR_MODE): Ditto.
16976         (VSX_SCALAR_MODE): Ditto.
16977         (VSX_MODE): Ditto.
16978         (VSX_MOVE_MODE): Ditto.
16979         (VSX_REG_CLASS_P): Ditto.
16980         (HARD_REGNO_NREGS): Instead of calling a function, use an array
16981         lookup.
16982         (UNITS_PER_SIMD_WORD): Add VSX support.
16983         (MODES_TIEABLE_P): Ditto.
16984         (STARTING_FRAME_OFFSET): Ditto.
16985         (STACK_DYNAMIC_OFFSET): Ditto.
16986         (EPILOGUE_USES): Ditto.
16987         (REGNO_REG_CLASS): Move to array lookup.
16988         (CLASS_MAX_NREGS): Ditto.
16989         (rs6000_vector_reg_class): Add declaration.
16990         (ADDITIONAL_REGISTER_NAMES): Add VSX names for the registers that
16991         overlap with the floating point and Altivec registers.
16992
16993         * config/rs6000/e500.h (CHECK_E500_OPTIONS): Disallow -mvsx.
16994
16995         * config/rs6000/driver-rs6000.c (asm_names): New static array to
16996         give the appropriate asm switches if -mcpu=native.
16997         (host_detect_local_cpu): Add support for "asm".
16998         (host_detect_local_cpu): Follow GNU code guidelines for name.
16999
17000         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Move
17001         -mbit-word to a variable instead of being a target mask.
17002
17003         * config/rs6000/sync.md (lwsync): If the assembler supports it,
17004         emit the lwsync instruction instead of emitting the instruction as
17005         an integer constant.
17006
17007         * config/rs6000/spe.md (spe_fixuns_truncdfsi2): Rename from
17008         fixuns_trundfsi2, move expander into rs6000.md.
17009
17010         * config/rs6000/rs6000.md (cpu): Add power7.
17011         (sel, *ptrsize): New mode attributes for 32/64-bit isel.
17012         (logical predicate patterns): Change the single instruction
17013         primitives that set CR0 to be fast_compare instead of compare.
17014         (norsi*): Ditto.
17015         (popcntwsi2): Add support for ISA 2.06 popcount instructions.
17016         (popcntddi2): Ditto.
17017         (popcount<mode>): Ditto.
17018         (floating multiply/add insns): Name the floating point
17019         multiply/add insns.
17020         (isel_signed_<mode>): Add support for -misel on 64-bit systems.
17021         (isel_unsigned_<mode>): Ditto.
17022         (fixuns_trundfsi2): Move expander here from spe.md.
17023         (smindi3): Define if we have -misel on 64-bit systems.
17024         (smaxdi3): Ditto.
17025         (umindi3): Ditto.
17026         (umaxdi3): Ditto.
17027
17028 2009-06-23  Anatoly Sokolov  <aesok@post.ru>
17029
17030         * config.gcc (avr-*-rtems*, avr-*-*): Set extra_gcc_objs and
17031         extra_objs.
17032         * config/avr/avr.c (avr_current_device): New variable.
17033         (avr_arch_types, avr_mcu_types): Move to avr-deveces.c.
17034         (avr_arch, mcu_type_s): Move to avr.h.
17035         * config/avr/avr.h (base_arch_s). Add reserved2, arch_name and
17036         default_data_section_start fields.
17037         (avr_arch): Moved from avr.c.
17038         (mcu_type_s): Moved from avr.c. Add short_sp, data_section_start and
17039         library_name fields.
17040         (avr_current_device, avr_mcu_types, avr_arch_types,
17041         avr_device_to_arch, avr_device_to_data_start,
17042         avr_device_to_startfiles, avr_device_to_devicelib): Declare.
17043         (EXTRA_SPEC_FUNCTIONS): Define.
17044         (LINK_SPEC): Remove device name to '-m ...' and '-Tdata ...' linker
17045         options mapping. Use device_to_arch and device_to_data_start insted.
17046         (STARTFILE_SPEC): Use device_to_startfile instead of crt_binutils.
17047         (CRT_BINUTILS_SPECS, EXTRA_SPECS): Remove.
17048         * config/avr/t-avr (driver-avr.o, avr-devices.o): New rules.
17049         * config/avr/driver-avr.c: New file.
17050         * config/avr/avr-devices.c: New file.
17051
17052 2009-06-23  Jakub Jelinek  <jakub@redhat.com>
17053
17054         * var-tracking.c (unshare_variable): Force initialized to
17055         be VAR_INIT_STATUS_INITIALIZED unless flag_var_tracking_uninit.
17056         (set_variable_part): Likewise.
17057         (struct variable_union_info): Remove pos_src field.
17058         (vui_vec, vui_allocated): New variables.
17059         (variable_union): Pass VAR_INIT_STATUS_UNKNOWN to unshare_variable
17060         unconditionally.  Avoid XCVECNEW/free for every sorting, for dst_l
17061         == 1 use a simpler sorting algorithm.  Compute pos field right
17062         away, don't fill in pos_src.  For dst_l == 2 avoid qsort.
17063         Avoid quadratic comparison if !flag_var_tracking_uninit.
17064         (variable_canonicalize): Pass VAR_INIT_STATUS_UNKNOWN to
17065         unshare_variable unconditionally.
17066         (dataflow_set_different_2): Removed.
17067         (dataflow_set_different): Don't traverse second hash table.
17068         (compute_bb_dataflow): Pass VAR_INIT_STATUS_UNINITIALIZED
17069         unconditionally to var_reg_set or var_mem_set.
17070         (emit_notes_in_bb): Likewise.
17071         (delete_variable_part): Pass VAR_INIT_STATUS_UNKNOWN to
17072         unshare_variable.
17073         (emit_note_insn_var_location): Don't set initialized to
17074         VAR_INIT_STATUS_INITIALIZED early.
17075         (vt_finalize): Free vui_vec if needed, clear vui_vec and
17076         vui_allocated.
17077         * rtl.c (rtx_equal_p): Don't implement on top of rtx_equal_p_cb.
17078
17079         * tree-object-size.c (addr_object_size): Instead of checking
17080         for non-NULL TREE_CHAIN of the FIELD_DECL check that there
17081         are no FIELD_DECLs following it.
17082
17083 2009-06-23  Andreas Krebbel  <krebbel1@de.ibm.com>
17084
17085         * tree-ssa-math-opts.c (find_bswap): Increase the search depth in
17086         order to match bswaps with signed source operands.
17087
17088 2009-06-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17089
17090         * sdbout.c (sdbout_one_type): Fix braces in switch.
17091
17092 2009-06-23  Richard Guenther  <rguenther@suse.de>
17093
17094         * tree-ssa-structalias.c (struct variable_info): Add is_global_var
17095         member.
17096         (var_anything, anything_tree, var_nothing, nothing_tree, var_readonly,
17097         readonly_tree, var_escaped, escaped_tree, var_nonlocal, nonlocal_tree,
17098         var_callused, callused_tree, var_storedanything, storedanything_tree,
17099         var_integer, integer_tree): Remove global variables.
17100         (new_var_info): Do not pass new id, append the new var to the
17101         global variable vector.
17102         (do_ds_constraint): Use is_global_var member of the variable-info.
17103         (new_scalar_tmp_constraint_exp): Adjust.
17104         (create_function_info_for): Likewise.
17105         (create_variable_info_for): Likewise.
17106         (find_what_var_points_to): Remove dead code.
17107         (init_base_vars): Simplify.
17108         (compute_points_to_sets): Adjust.
17109
17110 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17111
17112         * combine.c (try_combine): Dump information about the insns we're
17113         combining.
17114
17115 2009-06-22  Adam Nemet  <anemet@caviumnetworks.com>
17116
17117         * combine.c (combine_simplify_rtx): Remove TRULY_NOOP_TRUNCATION
17118         check when calling force_to_mode on TRUNCATE's operand.
17119
17120 2009-06-22  Ian Lance Taylor  <iant@google.com>
17121
17122         * config/rs6000/rs6000.opt: Move msched-epilog before msched-prolog.
17123
17124 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17125
17126         * config/arm/arm.md (prologue_use): Set length of fake insn to 0.
17127
17128 2009-06-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
17129
17130         * doc/invoke.texi (Link Options): -nodefaultlibs and -nostdlib
17131         override library linkage flags such as -static-libgcc or
17132         -shared-libgcc.
17133
17134 2009-06-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
17135
17136         * config/m68k/m68k-devices.def: Add line for MCF5221x.
17137
17138 2009-06-22  Ian Lance Taylor  <iant@google.com>
17139
17140         * config/linux.opt: Put mglibc ahead of muclibc.
17141
17142         * c-decl.c (diagnose_mismatched_decls): Add -Wc++-compat warning
17143         for duplicate decls.
17144
17145 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17146
17147         * Makefile.in (install-plugin): Remove extra `/' after $(DESTDIR).
17148
17149 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
17150
17151         PR objc/28050
17152         * c-parser.c (c_parser_objc_message_args): Return error_mark_node
17153         instead of NULL if a parser error occurs.
17154
17155 2009-06-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
17156
17157         * dwarf2out.c (dwarf2_debug_hooks): Initialize
17158         non-DWARF2_DEBUGGING_INFO version.
17159
17160 2009-06-22  Kai Tietz  <kai.tietz@onevision.com>
17161
17162         * config.gcc (i[34567]86-*-mingw*, x86_64-*-mingw*): Add
17163         i386/t-fprules-softfp and soft-fp/t-softfp to tmake_file.
17164
17165         * config/i386/mingw32.h (LIBGCC2_HAS_TF_MODE): Define.
17166         (LIBGCC2_TF_CEXT): Define.
17167         (TF_SIZE): Define.
17168
17169 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17170
17171         PR target/40463
17172         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Fix definition.
17173
17174 2009-06-22  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17175
17176         * config/arm/arm.c (arm_override_options): Disable
17177         -mcaller-super-interworking and -mcallee-super-interworking.
17178         * doc/invoke.texi (ARM Options): Document this.
17179
17180 2009-06-22  Nathan Sidwell  <nathan@codesourcery.com>
17181
17182         * config/arm/arm.c (arm_print_operand): Deal with HIGH.
17183         * config/arm/constraints.md (j): New constraint for movw operands.
17184         (N): Remove thumb2 meaning.
17185         * config/arm/arm.md (*arm_movw): Delete.
17186         (*arm_movsi_insn): Use j constraint for movw instead of N constraint.
17187         * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp): Likewise.
17188         * config/arm/thumb2.md (*thumb2_movsi_insn): Likewise.
17189
17190 2009-06-22  Martin Jambor  <mjambor@suse.cz>
17191
17192         PR tree-optimization/40492
17193         * tree-sra.c (sra_modify_assign): Pass zero offsets to
17194         build_ref_for_offset.
17195
17196 2009-06-22  Shujing Zhao  <pearly.zhao@oracle.com>
17197
17198         * alias.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P, CALL_P, NOTE_P and
17199         JUMP_TABLE_DATA_P predicates where applicable.
17200         * auto-inc-dec.c: Ditto.
17201         * builtins.c: Ditto.
17202         * caller-save.c: Ditto.
17203         * calls.c: Ditto.
17204         * cfgcleanup.c: Ditto.
17205         * cfglayout.c: Ditto.
17206         * cfgrtl.c: Ditto.
17207         * combine.c: Ditto.
17208         * combine-stack-adj.c: Ditto.
17209         * cse.c: Ditto.
17210         * cselib.c: Ditto.
17211         * dbxout.c: Ditto.
17212         * df-scan.c: Ditto.
17213         * dse.c: Ditto.
17214         * dwarf2asm.c: Ditto.
17215         * dwarf2out.c: Ditto.
17216         * emit-rtl.c: Ditto.
17217         * except.c: Ditto.
17218         * explow.c: Ditto.
17219         * expmed.c: Ditto.
17220         * expr.c: Ditto.
17221         * final.c: Ditto.
17222         * function.c: Ditto.
17223         * fwprop.c: Ditto.
17224         * gcse.c: Ditto.
17225         * genpreds.c: Ditto.
17226         * genrecog.c: Ditto.
17227         * ifcvt.c: Ditto.
17228         * ira-costs.c: Ditto.
17229         * ira-lives.c: Ditto.
17230         * jump.c: Ditto.
17231         * loop-iv.c: Ditto.
17232         * lower-subreg.c: Ditto.
17233         * modulo-sched.c: Ditto.
17234         * optabs.c: Ditto.
17235         * postreload.c: Ditto.
17236         * print-rtl.c: Ditto.
17237         * recog.c: Ditto.
17238         * reginfo.c: Ditto.
17239         * regmove.c: Ditto.
17240         * reload1.c: Ditto.
17241         * reload.c: Ditto.
17242         * reorg.c: Ditto.
17243         * rtlanal.c: Ditto.
17244         * rtl.c: Ditto.
17245         * sched-vis.c: Ditto.
17246         * sdbout.c: Ditto.
17247         * sel-sched-ir.c: Ditto.
17248         * simplify-rtx.c: Ditto.
17249         * targhooks.c: Ditto.
17250         * var-tracking.c: Ditto.
17251         * vmsdbgout.c: Ditto.
17252
17253 2009-06-22  Matthias Klose  <doko@ubuntu.com>
17254
17255         * Makefile.in (install-plugin): Always use DESTDIR.
17256
17257 2009-06-22  Olivier Hainque  <hainque@adacore.com>
17258
17259         * config/pa/pa.c (output_call): Don't optimize post call jumps
17260         into return address adjustments if the call may throw.
17261
17262 2009-06-21  Richard Earnshaw  <rearnsha@arm.com>
17263
17264         * arm.c (thumb1_output_casesi): New function.
17265         * arm.h (CASE_VECTOR_PC_RELATIVE): Thumb-1 code is also relative if
17266         optimizing for size or PIC.
17267         (CASE_VECTOR_SHORTEN_MODE): Handle thumb-1.
17268         * arm.md (UNSPEC_THUMB1_CASESI): New constant.
17269         (casesi): Handle Thumb-1 when optimizing for size or PIC.
17270         (thumb1_casesi_internal_pic): New expand rule.
17271         (thumb1_casesi_dispatch): New pattern.
17272         * aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Use shortened vectors for
17273         thumb-1 mode.
17274         * coff.h (JUMP_TABLES_IN_TEXT_SECTION): Thumb-1 jump tables are now
17275         in the text seciton when PIC or optimizing for size.
17276         * elf.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
17277         * lib1funcs.asm ([__ARM_EABI__]): Add an attribute describing stack
17278         preservation properties of code.
17279         (__gnu_thumb1_case_sqi, __gnu_thumb1_case_uqi): New functions.
17280         (__gnu_thumb1_case_shi, __gnu_thumb1_case_uhi): New functions.
17281         (__gnu_thumb1_case_si): New function.
17282         * t-arm (LIB1ASMSRC): Define here.
17283         (LIB1ASMFUNCS): Add some common functions.
17284         * t-arm-elf (LIB1ASMSRC): Delete.
17285         (LIB1ASMFUNCS): Append to existing set.
17286         * t-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17287         * t-strongarm-elf (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17288         * t-symbian (LIB1ASMFUNCS): Likewise.
17289         * t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17290         * t-wince-pe (LIB1ASMSRC, LIB1ASMFUNCS): Likewise.
17291
17292 2009-06-21  Richard Guenther  <rguenther@suse.de>
17293
17294         PR tree-optimization/38729
17295         * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Restrict
17296         to loops with a single exit if -fno-expensive-optimizations.
17297
17298 2009-06-21  Jakub Jelinek  <jakub@redhat.com>
17299
17300         * var-tracking.c (struct shared_hash_def, shared_hash): New types.
17301         (dataflow_set): Change vars type from htab_t to shared_hash.
17302         (shared_hash_pool, empty_shared_hash): New variables.
17303         (vars_clear): Removed.
17304         (shared_hash_shared, shared_hash_htab, shared_hash_copy,
17305         shared_hash_find_slot_unshare, shared_hash_find_slot,
17306         shared_hash_find_slot_noinsert, shared_hash_find): New
17307         static inlines.
17308         (shared_hash_unshare, shared_hash_destroy): New functions.
17309         (unshare_variable): Unshare set->vars if shared, use
17310         shared_hash_htab.
17311         (vars_copy): Use htab_traverse_noresize instead of htab_traverse.
17312         (get_init_value, find_src_set_src, dump_dataflow_set,
17313         clobber_variable_part, emit_notes_for_differences): Use
17314         shared_hash_htab.
17315         (dataflow_set_init): Remove second argument, set vars to
17316         empty_shared_hash instead of creating a new htab.
17317         (dataflow_set_clear): Call shared_hash_destroy and set vars
17318         to empty_shared_hash instead of calling vars_clear.
17319         (dataflow_set_copy): Don't call vars_copy, instead just share
17320         the src htab with dst.
17321         (variable_union): Use shared_hash_*, use initially NO_INSERT
17322         lookup if set->vars is shared.  Don't keep slot cleared before
17323         calling unshare_variable.  Unshare set->vars if needed.
17324         Even ->refcount == 1 vars must be unshared if set->vars is shared
17325         and var needs to be modified.
17326         (variable_canonicalize): New function.
17327         (dataflow_set_union): If dst->vars is empty, just share src->vars
17328         with dst->vars and traverse with variable_canonicalize to canonicalize
17329         and unshare what is needed.
17330         (dataflow_set_different): If old_set and new_set use the same shared
17331         htab, they aren't different.  If number of htab elements is different,
17332         htabs are different.  Use shared_hash_*.
17333         (dataflow_set_destroy): Call shared_hash_destroy instead of
17334         htab_delete.
17335         (compute_bb_dataflow, emit_notes_in_bb, vt_emit_notes): Don't pass
17336         second argument to dataflow_set_init.
17337         (vt_initialize): Likewise.  Initialize shared_hash_pool and
17338         empty_shared_hash, move bb in/out initialization afterwards.
17339         Use variable_htab_free instead of NULL as changed_variables del hook.
17340         (variable_was_changed): Change type of second argument to pointer to
17341         dataflow_set.  When inserting var into changed_variables, bump
17342         refcount.  Unshare set->vars if set is shared htab and slot needs to
17343         be cleared.
17344         (set_variable_part): Use shared_hash_*, use initially NO_INSERT
17345         lookup if set->vars is shared.  Unshare set->vars if needed.
17346         Even ->refcount == 1 vars must be unshared if set->vars is shared
17347         and var needs to be modified.  Adjust variable_was_changed caller.
17348         (delete_variable_part): Use shared_hash_*.  Even ->refcount == 1
17349         vars must be unshared if set->vars is shared and var needs to be
17350         modified.  Adjust variable_was_changed caller.
17351         (emit_note_insn_var_location): Don't pool_free var.
17352         (emit_notes_for_differences_1): Initialize empty_var->refcount to 0
17353         instead of 1.
17354         (vt_finalize): Call htab_delete on empty_shared_hash->htab and
17355         free_alloc_pool on shared_hash_pool.
17356
17357 2009-06-20  Anthony Green  <green@moxielogic.com>
17358
17359         * config/moxie/sfp-machine.h (__gcc_CMPtype, CMPtype): Define.
17360         * config/moxie/moxie.h (LOAD_EXTEND_OP): Define.
17361
17362 2009-06-20  Richard Guenther  <rguenther@suse.de>
17363
17364         * tree-ssa-structalias.c (find_func_aliases): For memset use
17365         a constraint from NULL if we memset to zero.
17366         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Add builtins
17367         we explicitly handle that do not read from memory.
17368         (call_may_clobber_ref_p_1): Properly handle builtins that may
17369         set errno.
17370
17371 2009-06-20  Richard Guenther  <rguenther@suse.de>
17372
17373         PR tree-optimization/40495
17374         * tree-ssa-structalias.c (get_constraint_exp_for_temp): Remove.
17375         (new_scalar_tmp_constraint_exp): New function.
17376         (process_constraint): Do not create temporary decls.
17377         (process_all_all_constraints): Likewise.
17378         (handle_const_call): Likewise.
17379         (create_function_info_for): Do not set decl.
17380
17381 2009-06-19  Ian Lance Taylor  <iant@google.com>
17382
17383         * config/rs6000/rs6000.c (rs6000_explicit_options): Make static.
17384         (rs6000_attribute_table): Make static; move before use.
17385
17386 2009-06-19  Eric Botcazou  <ebotcazou@adacore.com>
17387
17388         * tree.c (substitute_in_expr) <COMPONENT_REF>: Tweak and reformat.
17389         <tcc_vl_exp>: Call process_call_operands on the new CALL_EXPR.
17390         Propagate the TREE_READONLY flag without overwriting it.
17391         (substitute_placeholder_in_expr) <tcc_vl_exp>: Likewise.
17392         Propagate the TREE_READONLY flag onto the result.
17393         (process_call_operands): Move around.  Use correct constant value.
17394
17395 2009-06-19  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
17396
17397         PR target/40482
17398         * config/arm/arm.c (thumb_shiftable_const): Truncate val to 32 bits.
17399         * config/arm/arm.md: Likewise.
17400
17401 2009-06-19  Ian Lance Taylor  <iant@google.com>
17402
17403         * tree-cfg.c (gimple_redirect_edge_and_branch): Change ERROR_MARK
17404         to GIMPLE_ERROR_MARK.
17405
17406         * c-typeck.c (build_conditional_expr): Add op1_original_type and
17407         op2_original_type parameters.  Warn about using different enum types.
17408         * c-parser.c (c_parser_conditional_expression): Pass original
17409         types to build_conditional_expr.
17410         * c-tree.h (build_conditional_expr): Update declaration.
17411
17412 2009-06-19  Ian Lance Taylor  <iant@google.com>
17413
17414         * config/i386/i386.c (ix86_function_specific_save): Test that
17415         fields match values, rather than testing the values are in a
17416         certain range.
17417
17418 2009-06-19  Richard Guenther  <rguenther@suse.de>
17419
17420         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Handle
17421         ADDR_EXPR pointers.
17422         (ptr_derefs_may_alias_p): Likewise.
17423         (ptr_deref_may_alias_ref_p_1): New function.
17424         (ptr_deref_may_alias_ref_p): Likewise.
17425         (ref_maybe_used_by_call_p_1): Handle builtins that are not
17426         covered by looking at the ESCAPED solution.
17427         (call_may_clobber_ref_p_1): Likewise.
17428         * tree-ssa-structalias.c (get_constraint_for_ptr_offset):
17429         Handle NULL_TREE offset.  Do not produce redundant constraints.
17430         (process_all_all_constraints): New helper function.
17431         (do_structure_copy): Use it.
17432         (handle_lhs_call): Likewise.
17433         (find_func_aliases): Handle some builtins with pointer arguments
17434         and/or return values explicitly.
17435
17436 2009-06-19  Ian Lance Taylor  <iant@google.com>
17437
17438         * varasm.c (const_rtx_hash_1): Remove const qualifier from shift.
17439
17440 2009-06-19  Ian Lance Taylor  <iant@google.com>
17441
17442         * rtl.h (SUBREG_PROMOTED_UNSIGNED_P): Add cast to int.
17443
17444 2009-06-19  Ian Lance Taylor  <iant@google.com>
17445
17446         * ggc-page.c (ggc_pch_write_object): Initialize emptyBytes.
17447         * sdbout.c (sdb_debug_hooks): Initialize non-SDB_DEBUGGING_INFO
17448         version.
17449
17450         * c-decl.c (finish_decl): If -Wc++-compat, warn about
17451         uninitialized const.
17452
17453 2009-06-19  Ian Lance Taylor  <iant@google.com>
17454
17455         * dse.c (struct store_info): Rename bitmap field to bmap.  Change
17456         all uses.
17457
17458         * c-decl.c (in_struct, struct_types): Remove.
17459         (struct c_binding): Add in_struct field.
17460         (c_binding_ptr): Define type, along with VEC.
17461         (struct c_struct_parse_info): Define.
17462         (struct_parse_info): New static variable.
17463         (bind): Initialize in_struct field.
17464         (start_struct): Remove enclosing_in_struct and
17465         enclosing_struct_types parameters.  Add
17466         enclosing_struct_parse_info parameter.  Change all callers.  Set
17467         struct_parse_info rather than in_struct and struct_types.
17468         (grokfield): If -Wc++-compat and there is a symbol binding for the
17469         field name, set the in_struct flag and push it on the
17470         struct_parse_info->fields vector.
17471         (warn_cxx_compat_finish_struct): New static function.
17472         (finish_struct): Remove enclosing_in_struct and
17473         enclosing_struct_types parameters.  Add
17474         enclosing_struct_parse_info parameter.  Change all callers.  Don't
17475         set C_TYPE_DEFINED_IN_STRUCT here.  Call
17476         warn_cxx_compat_finish_struct.  Free struct_parse_info and set to
17477         parameter.  Only push on struct_types if warn_cxx_compat.
17478         (finish_enum): Only push on struct_types if warn_cxx_compat.
17479         (declspecs_add_type): Add loc parameter.  Change all callers.
17480         Change all error calls to error_at.  Pass loc, not input_location,
17481         to pedwarn calls.  Warn if -Wc++-compat and a typedef name is
17482         defined in a struct.  If -Wc++-compat and parsing a struct, record
17483         that a typedef name was used.
17484         * c-parser.c (c_parser_declspecs): Get location to pass to
17485         declspecs_add_type.
17486         (c_parser_struct_or_union_specifier): Update calls to start_struct
17487         and finish_struct.
17488         * c-tree.h (struct c_struct_parse_info): Declare.
17489         (finish_struct, start_struct): Update declarations.
17490         (declspecs_add_type): Update declaration.
17491
17492 2009-06-19  Ian Lance Taylor  <iant@google.com>
17493
17494         * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
17495         variable with an anonymous type.
17496
17497 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17498
17499         * see.c: Remove for real.
17500
17501 2009-06-19  Uros Bizjak  <ubizjak@gmail.com>
17502
17503         * optabs.h (enum optab_index): Add new OTI_significand.
17504         (significand_optab): Define corresponding macro.
17505         * optabs.c (init_optabs): Initialize significand_optab.
17506         * genopinit.c (optabs): Implement significand_optab using
17507         significand?f2 patterns.
17508         * builtins.c (expand_builtin_mathfn): Handle
17509         BUILT_IN_SIGNIFICAND{,F,L}.
17510         (expand_builtin): Expand BUILT_IN_SIGNIFICAND{,F,L} using
17511         expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
17512
17513         * config/i386/i386.md (significandxf2, significand<mode>2): New
17514         expanders to implement significandf, significand and significandl
17515         built-ins as inline x87 intrinsics.
17516
17517 2009-06-18  Anatoly Sokolov  <aesok@post.ru>
17518
17519         * config/avr/avr.c (avr_override_options): Remove setting value of
17520         PARAM_INLINE_CALL_COST.
17521
17522 2009-06-18  Richard Henderson  <rth@redhat.com>
17523
17524         PR 40488
17525         * tree-pass.h (TDF_ASMNAME): New.
17526         * tree-dump.c (dump_options): Add asmname.
17527         * doc/invoke.texi: Document it.
17528
17529         * tree-pretty-print.c (maybe_dump_asm_name): Merge into...
17530         (dump_decl_name): ...here.
17531         (dump_function_name): New flags arg; mind TDF_ASMNAME.
17532         (dump_generic_node): Update dump_function_name calls.
17533         (print_call_name): New flags arg; update all dump calls.
17534         * diagnostic.h (print_call_name): Update.
17535         * gimple-pretty-print.c (dump_gimple_call): Update.
17536
17537 2009-06-18  H.J. Lu  <hongjiu.lu@intel.com>
17538
17539         PR target/40470
17540         * config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Add SSE_FIRST_REG.
17541
17542 2009-06-18  Diego Novillo  <dnovillo@google.com>
17543
17544         * doc/plugins.texi: Document plugin_is_GPL_compatible.
17545         * plugin.c (str_license): Declare.
17546         (try_init_one_plugin): Assert that the symbol
17547         'plugin_is_GPL_compatible' exists.
17548
17549 2009-06-18  Sergei Dyshel  <sergeid@il.ibm.com>
17550
17551         * see.c: Remove.
17552         * Makefile.in (OBJS-common): Remove see.o.
17553         (see.o): Remove.
17554         * common.opt (fsee): Mark as preserved for backward compatibility.
17555         * opts.c (common_handle_option): Add OPT_fsee to the backward
17556         compatibility section.
17557         * passes.c (init_optimization_passes, pass_see): Remove pass.
17558         * timevar.def (TV_SEE): Remove.
17559         * tree-pass.h (pass_see): Remove declaration.
17560         * doc/invoke.texi (-fsee): Remove documentation.
17561
17562 2009-06-18  Martin Jambor  <mjambor@suse.cz>
17563
17564         * tree-sra.c: Include statistics.h
17565         (sra_stats): New variable.
17566         (sra_initialize): Clear sra_stats.
17567         (create_access_replacement): Increment sra_stats.replacements.
17568         (get_access_replacement): Do not return twice.
17569         (analyze_all_variable_accesses): Increment statistics counter by the
17570         number of scalarized aggregates.
17571         (generate_subtree_copies): Increment sra_stats.subtree_copies.
17572         (sra_modify_expr): Increment sra_stats.exprs.
17573         (load_assign_lhs_subreplacements): Increment sra_stats.subreplacements.
17574         (sra_modify_assign): Increment sra_stats.exprs,
17575         sra_stats.separate_lhs_rhs_handling and sra_stats.deleted.
17576         (perform_intra_sra): Update statistics counters.
17577         * Makefile.in (tree-sra.o): Add statistics.h to dependencies.
17578
17579 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17580
17581         * config/arm/arm.c (TARGET_SCALAR_MODE_SUPPORTED_P): Redefine.
17582         (arm_scalar_mode_supported_p): New function.
17583
17584 2009-06-18  Paul Brook  <paul@codesourcery.com>
17585             Sandra Loosemore  <sandra@codesourcery.com>
17586
17587         * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANSIGN_H): Define.
17588         (__extendhfsf2, __truncsfhf2): Define.
17589         * config/arm/fp16.c: New file.
17590         * config/arm/t-bpabi (LIB2FUNCS_STATIC_EXTRA): Add fp16.c.
17591         * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA):  Add fp16.c.
17592
17593 2009-06-18  Sandra Loosemore  <sandra@codesourcery.com>
17594
17595         * doc/extend.texi (Half-Precision): New section.
17596         * doc/invoke.texi (Option Summary): List -mfp16-format.
17597         (ARM Options): List neon-fp16 as -mfpu value.  Document -mfp16-format.
17598         * config/arm/arm.opt (mfp16-format=): New.
17599         * config/arm/arm.c: Include intl.h.
17600         (TARGET_INVALID_PARAMETER_TYPE): Redefine.
17601         (TARGET_INVALID_RETURN_TYPE): Redefine.
17602         (TARGET_PROMOTED_TYPE): Redefine.
17603         (TARGET_CONVERT_TO_TYPE): Redefine.
17604         (arm_fp16_format): Define.
17605         (all_fpus): Add entry for neon-fp16.
17606         (fp_model_for_fpu): Likewise.
17607         (struct fp16_format): Declare.
17608         (all_fp16_formats): Define.
17609         (arm_init_libfuncs): Add entries for HFmode conversions and arithmetic
17610         functions.
17611         (arm_override_options): Set arm_fp16_format. Call sorry for fp16
17612         and no ldrh.
17613         (arm_legitimate_index_p): Treat HFmode like HImode.
17614         (thumb1_legitimate_address_p): Make it recognize HFmode constants.
17615         (coproc_secondary_reload_class): Special-case HFmode.
17616         (arm_print_operand): Add 'z' specifier for vld1.16/vst1.16.
17617         (arm_hard_regno_mode_ok): Allow HFmode values in VFP registers.
17618         (arm_init_fp16_builtins): New.
17619         (arm_init_builtins): Call it.
17620         (arm_invalid_parameter_type): New.
17621         (arm_invalid_return_type): New.
17622         (arm_promoted_type): New.
17623         (arm_convert_to_type).
17624         (arm_file_start): Deal with neon-fp16 as fpu_name.  Emit tag for fp16
17625         format.
17626         (arm_emit_fp16_const): New function.
17627         (arm_mangle_type): Mangle __fp16 as "Dh".
17628         * config/arm/arm.h (TARGET_VFPD32): Make it know about
17629         FPUTYPE_NEON_FP16.
17630         (TARGET_NEON_FP16): New.
17631         (TARGET_NEON): Make it know about FPUTYPE_NEON_FP16.
17632         (enum fputype): Add FPUTYPE_NEON_FP16.
17633         (enum arm_fp16_format_type): Declare.
17634         (arm_fp16_format): Declare.
17635         (LARGEST_EXPONENT_IS_NORMAL): Define.
17636         * config/arm/arm-protos.h (arm_emit_fp16_const): Declare.
17637         * config/arm/arm-modes.def (HFmode): Define.
17638         * config/arm/vfp.md (*movhf_vfp): New.
17639         (extendhfsf2): New.
17640         (truncsfhf2): New.
17641         * config/arm/arm.md (fpu): Add neon_fp16.
17642         (floatsihf2, floatdihf2): New.
17643         (fix_trunchfsi2, fix_trunchfdi2): New.
17644         (truncdfhf2): New.
17645         (extendhfdf2): New.
17646         (movhf): New.
17647         (*arm32_movhf): New.
17648         (*thumb1_movhf): New.
17649         (consttable_2): Add check for HFmode constants.
17650         (consttable_4): Handle HFmode constants.
17651
17652 2009-06-18  Uros Bizjak  <ubizjak@gmail.com>
17653
17654         * convert.c (convert_to_integer): Convert (int)logb() into ilogb().
17655
17656 2009-06-17  Olivier Hainque  <hainque@adacore.com>
17657
17658         * collect2.c (main): Use CONST_CAST2 to perform char ** to
17659         const char ** conversion in AIX specific section.
17660
17661 2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>
17662
17663         * config/i386/i386.c (ix86_special_builtin_type): Remove
17664         UINT64_FTYPE_PINT.  Add UINT64_FTYPE_PUNSIGNED.
17665         (bdesc_special_args): Updated.
17666         (ix86_init_mmx_sse_builtins): Likewise.
17667         (ix86_expand_special_args_builtin): Likewise.
17668
17669 2009-06-17  Richard Henderson  <rth@redhat.com>
17670
17671         * tree-pretty-print.c (maybe_dump_asm_name): New.
17672         (dump_decl_name): Use it.
17673         (PRINT_FUNCTION_NAME): Merge into...
17674         (dump_function_name): ... here.  Use maybe_dump_asm_name.
17675
17676 2009-06-17  Cary Coutant  <ccoutant@google.com>
17677
17678         * dbxout.c (dbxout_source_line): Add is_stmt parameter.
17679         Change caller.
17680         * debug.c (struct gcc_debug_hooks): Change placeholder for
17681         source_line hook.
17682         (debug_nothing_int_charstar_int): Replaced by...
17683         (debug_nothing_int_charstar_int_bool): ...this.
17684         * debug.h (struct gcc_debug_hooks): Add is_stmt parameter to
17685         source_line prototype.
17686         (debug_nothing_int_charstar_int): Replaced by...
17687         (debug_nothing_int_charstar_int_bool): ...this.
17688         * defaults.h (SUPPORTS_DISCRIMINATOR): New constant.
17689         * dwarf2out.c (dwarf2out_source_line): Add is_stmt parameter.
17690         Output is_stmt operand when necessary.
17691         * final.c (final_scan_insn): Pass is_stmt to source_line debug hook.
17692         (notice_source_line): Add is_stmt parameter.
17693         * sdbout.c (sdbout_source_line): Add is_stmt parameter.
17694         * vmsdbgout.c (vmsdbgout_source_line): Add is_stmt parameter.
17695         Change callers.
17696         * xcoffout.c (xcoffout_source_line): Add is_stmt parameter.
17697         * xcoffout.h (xcoffout_source_line): Add is_stmt parameter.
17698
17699 2009-06-17  Ian Lance Taylor  <iant@google.com>
17700
17701         * expr.c (struct move_by_pieces_d): Rename from move_by_pieces.
17702         Change all uses.
17703         (struct store_by_pieces_d): Rename from store_by_pieces.  Change
17704         call uses.
17705
17706 2009-06-17  Adam Nemet  <anemet@caviumnetworks.com>
17707
17708         * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS,
17709         STRIP_USELESS_TYPE_CONVERSION): Use tree_strip_nop_conversions,
17710         tree_strip_sign_nop_conversions and
17711         tree_ssa_strip_useless_type_conversions rather than stripping
17712         the operations here.
17713         (tree_strip_nop_conversions, tree_strip_sign_nop_conversions):
17714         Declare them.
17715         * gimple.h (tree_ssa_strip_useless_type_conversions): Declare it.
17716         * tree-ssa.c (tree_ssa_strip_useless_type_conversions): New function.
17717         * tree.c (tree_nop_conversion, tree_sign_nop_conversion,
17718         tree_strip_nop_conversions, tree_strip_sign_nop_conversions): New
17719         functions.
17720
17721 2009-06-17  Michael Eager  <eager@eagercon.com>
17722
17723         * config/rs6000/constraints.md (register_constraint "d"): New.
17724         * config/rs6000/dfp.md (movsd_store, extendsddd2, extendsdtd2,
17725         truncddsd2, *negdd2_fpr, *absdd2_fpr, *nabsdd2_fpr,
17726         *movdd_hardfloat32, *movdd_hardfloat64_mfpgpr, *movdd_hardfloat64,
17727         *negtd2_fp, *abstd2_fpr, *nabstd2_fpr, *movtd_internal, extendddtd2,
17728         trunctddd2, adddd3, addtd3, subdd3, subtd3, muldd3, multd3, divdd3,
17729         divtd3, *cmpdd_internal1, *cmptd_internal1, floatditd2, ftruncdd2,
17730         fixdddi2, ftrunctd2, fixtddi2): replace 'f' constraint with 'd'
17731         * config/rs6000/ppu_intrinsics.h (__mffs, __mtfsf, __mtfsfi, __fabs,
17732         __fnabs, __fmadd, __fmsub, __fnmadd, __fnmsub, __fsel, __frsqrte,
17733         __fsqrt, __fmul, __fmuls, __frsp, __fcfid, __fctid, __fctidz, __fctiw,
17734         __fctiwz): Same.
17735         * config/rs6000/rs6000.md (*extendsfdf2_fpr, *truncdfsf2_fpr,
17736         *fseldfsf4, *negdf2_fpr, *absdf2_fpr, *nabsdf2_fpr, *adddf3_fpr,
17737         *subdf3_fpr, *muldf3_fpr, *divdf3_fpr, recipdf3, fred, sqrtdf2,
17738         *fseldfdf4, *fselsfdf4, *floatsidf2_internal, *floatunssidf2_internal,
17739         *fix_truncdfsi2_internal, fix_truncdfsi2_internal_gfxopt,
17740         fix_truncdfsi2_mfpgpr, fctiwz, btruncdf2, ceildf2, floordf2, rounddf2,
17741         stfiwx, floatdidf2, fix_truncdfdi2, floatdisf2_internal1,
17742         *movdf_hardfloat32, *movdf_hardfloat64_mfpgpr, *movdf_hardfloat64,
17743         *movtf_internal, *extenddftf2_internal, trunctfdf2_internal1,
17744         trunctfdf2_internal2, trunctfsf2_fprs, fix_trunc_helper,
17745         *fix_trunctfsi2_internal, negtf2_internal, *movdi_internal32,
17746         *movdi_mfpgpr, *movdi_internal64, *movdf_update1, *movdf_update2,
17747         *cmpdf_internal1, *cmptf_internal1, *cmptf_internal2): Same.
17748         * doc/md.texi: Describe PowerPC 'd' constraint, update 'f' constraint.
17749
17750 2009-06-16  Ian Lance Taylor  <iant@google.com>
17751
17752         * profile.c (total_num_never_executed): Don't define.
17753         (compute_branch_probabilities): Don't count or print
17754         num_never_executed.
17755         (init_branch_prob): Don't set total_num_never_executed.
17756         (end_branch_prob): Don't print total_num_never_executed.
17757
17758 2009-06-17  David Daney  <ddaney@caviumnetworks.com>
17759
17760         * jump.c (cleanup_barriers): Handle case of no insns before a barrier.
17761
17762 2009-06-17  David Edelsohn  <edelsohn@gnu.org>
17763
17764         * config/rs6000/dfp.md (nabsdd2_fpr): Correct mode.
17765         (nabstd2_fpr): Same.
17766
17767 2009-06-17  Steve Ellcey  <sje@cup.hp.com>
17768
17769         * expr.c (expand_assignment): Change complex type check.
17770
17771 2009-06-17  Basile Starynkevitch  <basile@starynkevitch.net>
17772
17773         * doc/plugins.texi (Building GCC plugins): Added new section.
17774
17775 2009-06-17  Ian Lance Taylor  <iant@google.com>
17776
17777         * c-pch.c (get_ident): Don't set size of templ array.
17778         (pch_init): Don't set size of partial_pch array.
17779
17780         * c-typeck.c (digest_init): If -Wc++-compat, warn about using a
17781         string constant to intialize an array whose size is the length of
17782         the string.
17783
17784 2009-06-17  Richard Guenther  <rguenther@suse.de>
17785
17786         PR tree-optimization/40389
17787         * tree-ssa-structalias.c (handle_rhs_call): Restrict NRV case
17788         to addressable types.
17789         * gimple.c (walk_stmt_load_store_addr_ops): Likewise.
17790
17791 2009-06-17  Richard Guenther  <rguenther@suse.de>
17792
17793         PR middle-end/40460
17794         * tree-chrec.h (build_polynomial_chrec): If we cannot determine
17795         if there is no evolution of left in the loop bail out.
17796         * tree-chrec.c (chrec_fold_multiply_poly_poly): CSE one
17797         chrec_fold_multiply.
17798
17799 2009-06-16  J"orn Rennecke  <joern.rennecke@arc.com>
17800             Janis Johnson  <janis187@us.ibm.com>
17801
17802         PR target/39254
17803         * config/rs6000/rs6000.c (rs6000_emit_move): Don't emit a USE
17804         for the symbol ref of a constant that is the source of a move
17805         - nor for any other not-obvious-label-ref constants.
17806
17807 2009-06-16  Olatunji Ruwase  <tjruwase@google.com>
17808
17809         * plugin.c (position_pass): Skip newly inserted pass during list
17810         traversal to avoid repeated insertion.
17811
17812 2009-06-16  Ian Lance Taylor  <iant@google.com>
17813
17814         * vec.h (VEC_stack_alloc): Define different version if
17815         GATHER_STATISTICS is defined, to accept and ignore MEM_STAT.
17816         (DEF_VEC_ALLOC_FUNC_P_STACK): Remove MEM_STAT_DECL.
17817         (DEF_VEC_ALLOC_FUNC_O_STACK): Likewise.
17818         (DEF_VEC_ALLOC_FUNC_I_STACK): Likewise.
17819
17820 2009-06-16  H.J. Lu  <hongjiu.lu@intel.com>
17821
17822         * config.gcc (extra_headers): Add ia32intrin.h for x86.
17823
17824         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_BSRSI,
17825         IX86_BUILTIN_BSRDI.  IX86_BUILTIN_RDPMC, IX86_BUILTIN_RDTSC.
17826         IX86_BUILTIN_RDTSCP.  IX86_BUILTIN_ROLQI, IX86_BUILTIN_ROLHI,
17827         IX86_BUILTIN_RORQI and IX86_BUILTIN_RORHI.
17828         (ix86_special_builtin_type): Add UINT64_FTYPE_VOID,
17829         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17830         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17831         (bdesc_special_args): Add __builtin_ia32_rdtsc and
17832         __builtin_ia32_rdtscp.
17833         (bdesc_args): Add __builtin_ia32_bsrsi, __builtin_ia32_bsrdi,
17834         __builtin_ia32_rolqi, __builtin_ia32_rolhi, __builtin_ia32_rorqi
17835         and __builtin_ia32_rorhi.
17836         (ix86_init_mmx_sse_builtins): Handle UINT64_FTYPE_VOID,
17837         UINT64_FTYPE_PINT, INT_FTYPE_INT, UINT64_FTYPE_INT,
17838         INT64_FTYPE_INT64, UINT16_FTYPE_UINT16_INT and UINT8_FTYPE_UINT8_INT.
17839         (ix86_expand_args_builtin): Likewise.
17840         (ix86_expand_special_args_builtin): Likewise.
17841
17842         * config/i386/i386.md (UNSPECV_RDTSCP): New.
17843         (UNSPECV_RDTSC): Likewise.
17844         (UNSPECV_RDPMC): Likewise.
17845         (*bsr): Renamed to ...
17846         (bsr): This
17847         (*bsr_rex64): Renamed to ...
17848         (bsr_rex64): This.
17849         (rdpmc): New.
17850         (*rdpmc): Likewise.
17851         (*rdpmc_rex64): Likewise.
17852         (rdtsc): Likewise.
17853         (*rdtsc): Likewise.
17854         (*rdtsc_rex64): Likewise.
17855         (rdtscp): Likewise.
17856         (*rdtscp): Likewise.
17857         (*rdtscp_rex64): Likewise.
17858
17859         * config/i386/ia32intrin.h: New.
17860
17861         * config/i386/x86intrin.h: Include <ia32intrin.h>.
17862
17863 2009-06-16  Ian Lance Taylor  <iant@google.com>
17864
17865         * ira-build.c (copy_info_to_removed_store_destinations):
17866         Initialize parent_a.
17867
17868 2009-06-16  Ian Lance Taylor  <iant@google.com>
17869
17870         * c-decl.c (grokdeclarator): Change size_varies to bool.
17871
17872 2009-06-16  Ian Lance Taylor  <iant@google.com>
17873
17874         * sel-sched.c: Make forward declarations of move_op_hooks and
17875         fur_hooks explicitly extern.
17876
17877 2009-06-16  Ian Lance Taylor  <iant@google.com>
17878
17879         * df-problems.c (df_byte_lr_alloc): Don't set problem_data to itself.
17880         * vec.c (vec_gc_o_reserve_1): Don't set alloc to itself.
17881
17882 2009-06-16  Ian Lance Taylor  <iant@google.com>
17883
17884         * resource.c (mark_referenced_resources): Change
17885         include_delayed_effects parameter to bool.  Change all callers.
17886         (mark_end_of_function_resources): Likewise.
17887         * reorg.c (insn_references_resource_p): Likewise.
17888         (insn_sets_resource_p): Likewise.
17889         * resource.h (mark_referenced_resources): Update declaration.
17890         (mark_end_of_function_resources): Update declaration.
17891
17892 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17893
17894         * config/rs6000/aix.h (LIBSTDCXX_STATIC): Remove -lstdc++.
17895
17896 2009-06-16  David Edelsohn  <edelsohn@gnu.org>
17897
17898         * doc/install.texi (*-*-aix): Update explanation of XLC bootstrap.
17899         GCC can bootstrap on AIX with GNU Binutils 2.20.
17900
17901 2009-06-16  Ian Lance Taylor  <iant@google.com>
17902
17903         * Makefile.in (tree-vect-stmts.o): Depend upon $(TOPLEV_H).
17904
17905 2009-06-16  Ian Lance Taylor  <iant@google.com>
17906
17907         * toplev.h (floor_log2): If GCC_VERSION >= 3004, declare as static
17908         inline, not extern inline.
17909         (exact_log2): Likewise.
17910         * toplev.c (floor_log2): Only define if GCC_VERSION < 3004. Don't
17911         test CLZ_HWI.
17912         (exact_log2): Likewise, but don't test CTZ_HWI.
17913
17914 2009-06-16  Ian Lance Taylor  <iant@google.com>
17915
17916         * bitmap.c (bitmap_clear): Don't declare as inline.
17917         * gimple.c (gimplify_assign): Likewise.
17918         * tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
17919         * haifa-sched.c (insn_cost): Don't declare with HAIFA_INLINE.
17920         (sched_scan_info): Remove duplicate definition.
17921
17922 2009-06-16  Ian Lance Taylor  <iant@google.com>
17923
17924         * c-common.c (skip_evaluation): Don't define.
17925         (c_inhibit_evaluation_warnings): Define global variable.
17926         (overflow_warning): Check c_inhibit_evaluation_warnings rather
17927         than skip_evaluation.
17928         (convert_and_check, warn_for_div_by_zero): Likewise.
17929         * c-common.h (skip_evaluation): Don't declare.
17930         (c_inhibit_evaluation_warnings): Declare.
17931         * c-parser.c (c_parser_typeof_specifier): Set
17932         c_inhibit_evaluation_warnings rather than skip_evaluation.
17933         (c_parser_conditional_expression): Likewise.
17934         (c_parser_binary_expression): Likewise.
17935         (c_parser_sizeof_expression): Likewise.
17936         (c_parser_alignof_expression): Likewise.
17937         * c-typeck.c (build_indirect_ref): Check
17938         c_inhibit_evaluation_warnings rather than skip_evaluation.
17939         (build_conditional_expr, build_binary_op): Likewise.
17940
17941 2009-06-16  Richard Guenther  <rguenther@suse.de>
17942
17943         * tree-ssa-alias.c (is_escape_site): Remove.
17944         * tree-ssa-alias.h (enum escape_type): Remove.
17945         (is_escape_site): Likewise.
17946         * tree-ssa-structalias.c (find_func_aliases): Handle escapes
17947         via casts and asms without deferring to is_escape_site.
17948
17949 2009-06-16  Jakub Jelinek  <jakub@redhat.com>
17950
17951         PR middle-end/40446
17952         * expr.c (expand_expr_real_1) <case VIEW_CONVERT_EXPR>: Don't
17953         use gen_lowpart if op0 has complex mode.
17954
17955 2009-06-16  Richard Guenther  <rguenther@suse.de>
17956
17957         * tree-ssa-structalias.c (do_ds_constraint): Stores in global
17958         variables add them to ESCAPED.
17959         (find_func_aliases): Do not make all indirectly stored values escaped.
17960
17961 2009-06-16  Rafael Avila de Espindola  <espindola@google.com>
17962
17963         * config/i386/winnt.c (i386_pe_encode_section_info): Update call to
17964         make_decl_one_only.
17965
17966 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17967
17968         PR tree-optimization/40432
17969         * tree-sra.c (sra_modify_assign): When creating VIEW_CONVERT_EXPR,
17970         check whether we need to force gimple register operand.
17971
17972 2009-06-16  Martin Jambor  <mjambor@suse.cz>
17973
17974         PR tree-optimization/40413
17975         * tree-sra.c (load_assign_lhs_subreplacements): Pass offset to
17976         build_ref_for_offset.
17977         (propagate_subacesses_accross_link): Fix a typo in a comment.
17978
17979 2009-06-16  Ira Rosen  <irar@il.ibm.com>
17980
17981         * tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
17982         with additional parameter.
17983         * tree-vectorizer.h (enum vect_def_type): Add new value
17984         vect_nested_cycle.
17985         (enum vect_relevant): Add comments.
17986         (vect_is_simple_reduction): Add new argument.
17987         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
17988         Detect nested cycles.
17989         (vect_is_simple_reduction): Update documentation, add an argument to
17990         distinguish inner-loop reduction from nested cycle, detect nested
17991         cycles, fix printings and indentation, don't swap operands in case
17992         of nested cycle.
17993         (get_initial_def_for_reduction): Handle subtraction.
17994         (vect_create_epilog_for_reduction): Add new argument to specify
17995         reduction variable.
17996         (vect_finalize_reduction): Handle subtraction, fix comments.
17997         (vectorizable_reduction): Handle nested cycles. In case of nested
17998         cycle keep track of the reduction variable position. Call
17999         vect_is_simple_reduction with additional parameter. Use original
18000         statement code in reduction epilogue for nested cycle. Call
18001         vect_create_epilog_for_reduction with additional parameter.
18002         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert
18003         inner-loop vectorization.
18004         (vect_recog_widen_sum_pattern): Likewise.
18005         * tree-vect-stmts.c (process_use): Distinguish between nested cycles
18006         and reductions.
18007         (vect_mark_stmts_to_be_vectorized): Likewise.
18008         (vect_get_vec_def_for_operand): Handle nested cycles.
18009
18010 2009-06-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
18011
18012         * doc/invoke.texi (Debugging Options): Fix option index entries
18013         for -fdump-statistics, -frandom-seed add entries for
18014         -fdump-tree-original, -fdump-tree-optimized, -frandom-seed.
18015         (FRV Options): Fix entries for -mTLS, -mtls.
18016         (HPPA Options): Fix entries for -mgnu-ld, -mhp-ld.
18017         (i386 and x86-64 Options): Fix entry for -mno-red-zone.
18018         (M68hc1x Options): Fix @itemx for -mnominmax.
18019         (MCore Options): Fix entry for -mno-lsim.
18020         (MMIX Options): Fix entry for -mabi=mmixware.
18021         (PDP-11 Options): Fix entry for -mbcopy-builtin.
18022
18023 2009-06-16  Basile Starynkevitch  <basile@starynkevitch.net>
18024
18025         * doc/plugins.texi (Interacting with the GCC Garbage Collector):
18026         Mention the plugin mode of gengtype.
18027         * doc/gty.texi (Source Files Containing Type Information): Likewise.
18028         * gengtype.c: Updated copyright.
18029         (plugin_files, nb_plugin_files) Added new static variables.
18030         (measure_input_list) Care about plugin_files.
18031         (write_rtx_next): Added early return in plugin mode.
18032         (create_file): Updated copyright year in generated file. Added
18033         asserts.
18034         (oprintf): Added early return if NULL outf.
18035         (get_output_file_with_visibility): Care of plugin_files.
18036         (get_output_file_name): May return null.
18037         (write_local): Added early return.
18038         (put_mangled_filename): Ditto.
18039         (finish_root_table): Added check for base_files.
18040         (write_roots): Care about null when plugins.
18041         (main): Added plugin mode.
18042
18043 2009-06-15  Ian Lance Taylor  <iant@google.com>
18044
18045         * df-problems.c (df_simulate_one_insn_forwards): Fix braces in switch.
18046         * gcov.c (read_count_file): Add braces around variables declared
18047         before label.
18048
18049         * c.opt (Wjump-misses-init): New warning.
18050         * c-opts.c (c_common_handle_option): Set warn_jump_misses_init for
18051         -Wall and -Wc++-compat if not already set.
18052         (c_common_post_options): Clear warn_jump_misses_init if it was not
18053         set.
18054         * c-decl.c (struct c_binding): Change type field to a union with
18055         new label field.  Make it the first field in the struct.  Update
18056         references to type to use u.type instead.
18057         (struct c_spot_bindings): Define.
18058         (struct c_goto_bindings): Define.
18059         (c_goto_bindings_p): Define, along with VECs.
18060         (struct c_label_vars): Define.
18061         (struct c_scope): Add has_label_bindings field.
18062         (bind_label, set_spot_bindings): New static functions.
18063         (decl_jump_unsafe, update_spot_bindings): New static functions.
18064         (update_label_decls): New static function.
18065         (pop_scope): Call update_label_decls.  Don't call c_end_vm_scope.
18066         Update binding u.label field to shadowed field.
18067         (c_binding_start_stmt_expr): New function.
18068         (c_binding_end_stmt_expr): New function.
18069         (pushdecl): Don't call c_begin_vm_scope.
18070         (make_label): Add defining and p_label_vars parameters.  Change
18071         all callers.
18072         (lookup_label): Correct test for whether a label has not yet been
18073         defined.  Call bind_label rather than bind.
18074         (warn_about_goto): New static function.
18075         (lookup_label_for_goto): New function.
18076         (declare_label): Call bind_label rather than bind.
18077         (check_earlier_gotos): New static function.
18078         (define_label): Don't give errors about jumping into statement
18079         expressions or scopes of variably modified types.  Call
18080         set_spot_bindings and check_earlier_gotos.  Call bind_label
18081         instead of bind.  Don't set label_context_stack_se or
18082         label_context_stack_vm.
18083         (c_get_switch_bindings): New function.
18084         (c_release_switch_bindings): New function.
18085         (c_check_switch_jump_warnings): New function.
18086         (start_function): Don't set label_context_stack_se or
18087         label_context_stack_vm.
18088         (finish_function): Likewise.
18089         * c-typeck.c (label_context_stack_se): Don't define.
18090         (label_context_stack_vm): Don't define.
18091         (c_finish_goto_label): Call lookup_label_for_goto rather than
18092         lookup_label.  Don't give errors about jumping into a statement
18093         expression or the scope of a variably modified type.  Don't set
18094         label_context_stack_se or label_context_stack_vm.
18095         (struct c_switch): Remove blocked_stmt_expr and blocked_vm
18096         fields.  Add bindings field.
18097         (c_start_case): Don't set deleted fields.  Set bindings field.
18098         (do_case): Rework order of tests.  Don't check blocked_stmt_expr
18099         or blocked_vm.  Call c_check_switch_jump_warnings.
18100         (c_finish_case): Don't test blocked_stmt_expr field.  Call
18101         c_release_switch_bindings.
18102         (c_begin_stmt_expr): Don't increment blocked_stmt_expr in
18103         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18104         set label_context_stack_se.  Call c_bindings_start_stmt_expr.
18105         (c_finish_stmt_expr): Don't decrement blocked_stmt_expr in
18106         c_switch_stack.  Don't walk label_context_stack_se labels.  Don't
18107         set label_context_stack_se.  Call c_bindings_end_stmt_expr.
18108         (c_begin_vm_scope, c_end_vm_scope): Don't define.
18109         * c-tree.h (C_DECL_UNJUMPABLE_STMT_EXPR): Don't define.
18110         (C_DECL_UNDEFINABLE_STMT_EXPR): Don't define.
18111         (C_DECL_UNJUMPABLE_VM): Don't define.
18112         (C_DECL_UNDEFINABLE_VM): Don't define.
18113         (struct c_label_list): Don't define.
18114         (struct c_label_context_se): Don't define.
18115         (struct c_label_context_vm): Don't define.
18116         (struct c_spot_bindings): Declare.
18117         (c_bindings_start_stmt_expr): Declare.
18118         (c_bindings_end_stmt_expr): Declare.
18119         (lookup_label_for_goto): Declare.
18120         (c_get_switch_bindings, c_release_switch_bindings): Declare.
18121         (c_check_switch_jump_warnings): Declare.
18122         (label_context_stack_se, label_context_stack_vm): Don't declare.
18123         (c_finish_goto_label): Update declaration.
18124         (c_begin_vm_scope, c_end_vm_scope): Don't declare.
18125         * doc/invoke.texi (Option Summary): Mention -Wjump-misses-init.
18126         (Warning Options): Document -Wjump-misses-init.
18127
18128 2009-06-15  Jakub Jelinek  <jakub@redhat.com>
18129
18130         * tree-object-size.c (addr_object_size): Fix a pasto in the last
18131         change.
18132
18133 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18134
18135         * cgraph.c (cgraph_make_node_local): Use DECL_COMDAT_GROUP.
18136
18137 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18138
18139         * except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.
18140
18141 2009-06-15  Aldy Hernandez  <aldyh@redhat.com>
18142
18143         * tree-eh.c (lower_try_finally_switch): Initialize tf_loc.
18144
18145 2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
18146
18147         * cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
18148         Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
18149         * cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
18150         * config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
18151         * dwarf2asm.c (dw2_force_const_mem): Update call to
18152         make_decl_one_only.
18153         * langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
18154         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
18155         * langhooks.c (lhd_comdat_group): Remove.
18156         * langhooks.h (lang_hooks_for_decls): Remove comdat_group.
18157         * tree.h (DECL_COMDAT_GROUP): New.
18158         (DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
18159         (tree_decl_with_vis): Add comdat_group. Remove one_only.
18160         (make_decl_one_only): Change signature.
18161         * varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
18162         make_decl_one_only.
18163         (make_decl_one_only): Change signature.
18164         (default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
18165
18166 2009-06-15  Richard Guenther  <rguenther@suse.de>
18167
18168         PR middle-end/40439
18169         * tree.c (widest_int_cst_value): Fix bootstrap on 32bit HWI hosts.
18170
18171 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18172
18173         * tree-ssa-math-opts.c: Remove extra divide.
18174
18175 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18176
18177         * config/s390/s390.md ("bswap<mode>2"): Only available on z900.
18178
18179 2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
18180
18181         * passes.c: Add bswap pass.
18182         * tree-pass.h: Add pass_optimize_bswap declaration.
18183         * tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
18184         Include rtl.h, expr.h and optabs.h for optab_handler check.
18185         (struct symbolic_number, pass_optimize_bswap): New definition.
18186         (do_shift_rotate, verify_symbolic_number_p): New functions.
18187         (find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
18188         (gate_optimize_bswap): New function.
18189         * tree.c (widest_int_cst_value): New function.
18190         * tree.h (widest_int_cst_value): Prototype added.
18191
18192 2009-06-14  Steven Bosscher  <steven@gcc.gnu.org>
18193
18194         * cfgcleanup.c (old_insns_match_p): Remove code to substitute
18195         REG_EQUAL/REG_EQUIV notes.
18196
18197 2009-06-14  Richard Guenther  <rguenther@suse.de>
18198
18199         PR middle-end/40389
18200         * gimple.c (walk_stmt_load_store_addr_ops): The LHS of a call
18201         has its address taken if NRV was applied and it is addressable.
18202         * tree-ssa-structalias.c (get_constraint_for_address_of): New
18203         function split out from ...
18204         (get_constraint_for_1): ... here.
18205         (handle_rhs_call): Use it to mark the return slot escaped if
18206         it is addressable and NRV was applied.
18207
18208 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18209
18210         * config/rs6000/rs6000-protos.h (altivec_resolve_overloaded_builtin):
18211         Change first argument type to location_t.
18212         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Same.
18213         Do not set input_location.
18214         Use loc instead of input_location throughout.
18215
18216 2009-06-13  Richard Guenther  <rguenther@suse.de>
18217
18218         PR tree-optimization/40421
18219         * tree-predcom.c (should_unroll_loop_p): Remove.
18220         (tree_predictive_commoning_loop): Use can_unroll_loop_p.
18221
18222 2009-06-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
18223
18224         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18225         Add location argument.
18226
18227 2009-06-13  Aldy Hernandez  <aldyh@redhat.com>
18228
18229         * config/alpha/alpha.c (alpha_build_builtin_va_list): Pass location to
18230         build_decl.
18231         * config/s390/s390.c (s390_build_builtin_va_list): Same.
18232         (s390_gimplify_va_arg): Pass location to create_artificial_label.
18233         * config/spu/spu-protos.h: Add location to
18234         spu_resolve_overloaded_builtin.
18235         * config/spu/spu.c (spu_build_builtin_va_list): Pass location to
18236         spu_build_builtin_va_list.
18237         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Add location
18238         argument.  Pass location to build_function_call_vec.
18239         * config/sh/sh.c (sh_build_builtin_va_list): Pass location to
18240         build_decl.
18241         (emit_fpu_switch): Same.
18242         (sh_gimplify_va_arg_expr): Pass location to create_artificial_label.
18243         * config/xtensa/xtensa.c (xtensa_build_builtin_va_list): Pass location
18244         to build_decl and create_artificial_label.
18245         (xtensa_gimplify_va_arg_expr): Same.
18246         * config/stormy16/stormy16.c (xstormy16_build_builtin_va_list): Same.
18247         (xstormy16_gimplify_va_arg_expr): Same.
18248         * config/iq2000/iq2000.c (iq2000_expand_prologue): Same.
18249         * config/arm/arm.c (arm_build_builtin_va_list): Same.
18250         * config/mips/mips.c (mips_build_builtin_va_list): Same.
18251         (mips16_build_function_stub): Same.
18252         (mips16_build_call_stub): Same.
18253
18254 2009-06-13  Richard Earnshaw  <rearnsha@arm.com>
18255
18256         PR target/40327
18257         * arm/constraints.md (Pa, Pb): New constraints.
18258         * arm/arm.md (thumb1_addsi3): Support more complex additions.  Add a
18259         split pattern to deal with them.
18260
18261 2009-06-13  Joerg Sonnenberger  <joerg@britannica.bec.de>
18262
18263         * doc/invoke.texi: Add missing option -Wp,OPTION in list,
18264         fix index entry for -Xpreprocessor.
18265
18266 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18267
18268         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
18269         Add location argument to build_decl call.
18270         * config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Same.
18271         (rs6000_init_builtins): Same.
18272         (spe_init_builtins): Same.
18273         (rs6000_gimplify_va_arg): Add location argument to
18274         create_artificial_label call.
18275
18276 2009-06-12  Steven Bosscher  <steven@gcc.gnu.org>
18277
18278         * timevar.def (TV_COMBINE_STACK_ADJUST): New timevar.
18279         * combine-stack-adj.c (pass_stack_adjustments): Use it.
18280         * Makefile.in: Fix GGC dependency for gcse.o.
18281
18282 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
18283
18284         * tree-pretty-print.c (dump_generic_node): Dump column numbers.
18285         * gimple-pretty-print.c (dump_gimple_stmt): Same.
18286         * gimplify.c (gimplify_modify_expr): Set location for GIMPLE_ASSIGNs
18287         created.
18288         * c-parser.c (c_parser_binary_expression): Use current column while
18289         building binary operations.
18290         * common.opt (fshow-column): Enable by default.
18291         * tree-vrp.c (check_array_ref): Use warning_at.
18292         (check_array_bounds): Use location from call back if expr has no
18293         location.
18294         * tree.h: Add location argument to maybe_fold_*.
18295         * tree-ssa-ccp.c (ccp_fold): Pass location to maybe_fold_*.
18296         (maybe_fold_offset_to_array_ref): Add location argument and use it.
18297         (maybe_fold_offset_to_component_ref): Same.
18298         (maybe_fold_offset_to_reference): Same.
18299         (maybe_fold_offset_to_address): Same.
18300         (maybe_fold_stmt_indirect): Same.
18301         (maybe_fold_stmt_addition): Same.
18302         (fold_stmt_r): Pass location to maybe_fold_*.
18303         (fold_gimple_assign): Same.
18304         * c-tree.h: Add location argument to finish_decl,
18305         default_function_array_conversion, store_init_value.
18306         * c-decl.c (define_label): Use error_at.
18307         (c_make_fname_decl): Pass location to finish_decl.
18308         (finish_decl): New location argument.
18309         (build_compound_literal): Pass location to store_init_value.
18310         (grokdeclarator): Pass location to finish_decl.
18311         (grokfield): Same.
18312         * c-typeck.c (array_to_pointer_conversion): New location argument.
18313         (function_to_pointer_conversion): Same.
18314         (default_function_array_conversion): Same.
18315         (parser_build_unary_op): Pass location to overflow_warning.
18316         (parser_build_binary_op): Same.  Use warning_at.
18317         (build_unary_op): Pass location to array_to_pointer_conversion.
18318         (build_c_cast): Pass location to digest_init.
18319         (build_modify_expr): New location argument.
18320         (convert_for_assignment): Same.
18321         (store_init_value): Same.
18322         (digest_init): Same.
18323         (output_init_element): Pass location to digest_init and
18324         array_to_pointer_conversion.
18325         (c_finish_return): Pass location to convert_for_assignment.
18326         * gimplify.c (gimplify_conversion): Pass location to
18327         maybe_fold_offset_to_address.
18328         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Pass location
18329         to maybe_fold_stmt_addition.
18330         * c-omp.c (c_finish_omp_atomic): Pass new location to
18331         build_modify_expr.
18332         (c_finish_omp_for): Same.
18333         * c-common.c (overflow_warning): New argument.
18334         * c-common.h: New argument to build_modify_expr, overflow_warning.
18335         * c-parser.c (c_parser_declaration_or_fndef): Pass location to
18336         finish_decl.
18337         (c_parser_initializer): Pass location to
18338         default_function_array_conversion.
18339         (c_parser_initelt): Same.
18340         (c_parser_initval): Same.
18341         (c_parser_asm_operands): Same.
18342         (c_parser_expr_no_commas): Same.  Pass location to build_modify_expr.
18343         (c_parser_conditional_expression): Same.
18344         (c_parser_binary_expression): Add location info to stack.  Use it.
18345         (c_parser_unary_expression): Pass location to
18346         default_function_array_conversion, parser_build_unary_op,
18347         build_indirect_ref, c_parser_postfix_expression_after_primary.
18348         (c_parser_postfix_expression_after_primary): New location argument.
18349         Use it.
18350         (c_parser_expression_conv): Pass location to
18351         default_function_array_conversion.
18352         (c_parser_expr_list): Same.
18353         (c_parser_omp_atomic): Same.
18354         (c_parser_omp_for_loop): Same.
18355         * c-tree.h (struct c_declarator): Add comment to id_loc.
18356         (build_array_declarator): New argument.
18357         * c-decl.c (build_array_declarator): Add location argument.
18358         (grokdeclarator): Set id_loc for cdk_array.
18359         * c-parser.c (c_parser_direct_declarator_inner): Pass location to
18360         build_array_declarator.
18361         * tree.c (build_omp_clause): Add location argument.
18362         * tree.h (OMP_CLAUSE_HAS_LOCATION): New macro.
18363         (OMP_CLAUSE_LOCATION): New macro.
18364         (struct tree_omp_clause): Add location field.
18365         (build_omp_clause): Add argument.
18366         * cp/pt.c (tsubst_omp_for_iterator): Pass location to
18367         build_omp_clause.
18368         * cp/parser.c (cp_parser_omp_var_list_no_open): Same.
18369         (cp_parser_omp_clause_collapse): Same.
18370         (cp_parser_omp_clause_default): Same.
18371         (cp_parser_omp_clause_if): Same.
18372         (cp_parser_omp_clause_nowait): Same.
18373         (cp_parser_omp_clause_num_threads): Same.
18374         (cp_parser_omp_clause_ordered): Same.
18375         (cp_parser_omp_clause_schedule): Same.
18376         (cp_parser_omp_clause_untied): Same.
18377         (cp_parser_omp_for_loop): Same.
18378         (cp_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18379         * c-tree.h (c_start_case): Add location argument.
18380         (c_process_expr_stmt): Same.
18381         (c_finish_goto_*): Same.
18382         * tree-parloops.c (initialize_reductions): Pass location to
18383         build_omp_clause.
18384         (create_parallel_loop): Same.
18385         * fortran/trans-openmp.c (gfc_trans_omp_variable_list): Same.
18386         (gfc_trans_omp_reduction_list): Same.
18387         (gfc_trans_omp_clauses): Same.
18388         (gfc_trans_omp_do): Same.
18389         * c-typeck.c (c_finish_goto_label): Same.
18390         (c_finish_goto_ptr): New location argument.
18391         (c_start_case): Same.
18392         (emit_side_effect_warnings): Same.
18393         (c_process_expr_stmt): Same.
18394         (c_finish_stmt_expr): Same.
18395         (c_finish_omp_clauses): Use error_at instead of error.
18396         * gimplify.c (gimplify_adjust_omp_clauses_1): Pass location to
18397         build_omp_clause.
18398         * c-omp.c (c_split_parallel_clauses): New location argument.
18399         * tree-nested.c (convert_nonlocal_reference_stmt): Pass location
18400         to build_omp_clause.
18401         (convert_local_reference_stmt): Same.
18402         (convert_gimple_call): Same.
18403         * c-common.h (c_split_parallel_clauses): New argument.
18404         * c-parser.c (c_parser_statement_after_labels): Pass location to
18405         c_finish_goto_label.
18406         (c_parser_switch_statement): Pass location to c_start_case.
18407         (c_parser_for_statement): Pass location to c_finish_expr_stmt,
18408         and c_process_expr_stmt.
18409         (c_parser_omp_variable_list): Add location argument.
18410         (c_parser_omp_clause_collapse): Pass location to build_omp_clause.
18411         (c_parser_omp_clause_default): Same.
18412         (c_parser_omp_clause_if): Same.
18413         (c_parser_omp_clause_num_threads): Same.
18414         (-c_parser_omp_clause_ordered): Same.
18415         (c_parser_omp_clause_reduction): Pass location to
18416         c_parser_omp_variable_list.
18417         (c_parser_omp_clause_schedule): Pass location to build_omp_clause.
18418         (c_parser_omp_clause_untied): Same.
18419         (c_parser_omp_for_loop): Pass location to c_process_expr_stmt.
18420         (c_parser_omp_parallel): Pass location to c_split_parallel_clauses.
18421
18422         * c-tree.h (check_for_loop_decls, undeclared_variable,
18423         build_component_ref, build_array_ref, build_external_ref,
18424         c_expr_sizeof_expr, c_expr_sizeof_type, parser_build_unary_op,
18425         build_conditional_expr, build_compound_expr, c_cast_expr,
18426         build_c_cast, build_asm_expr, c_end_compound_stmt, c_finish_stmt_expr,
18427         c_finish_return, c_finish_omp_parallel, c_finish_omp_task): New
18428         argument.
18429         * c-semantics.c (build_stmt): Same.
18430         (build_case_label): Same.
18431         * c-decl.c (c_finish_incomplete_decl): Pass location on down.
18432         (undeclared_variable): New argument.
18433         (make_label): Same.
18434         (lookup_label): Pass location on down.
18435         (define_label): Same.
18436         (finish_decl): Same.
18437         (build_compound_literal): Same.
18438         (finish_struct): Same.
18439         (finish_function): Do not set location here.
18440         (check_for_loop_decls): New argument.
18441         * tree.c (save_expr): Set location.
18442         (build_empty_stmt): New argument.
18443         * tree.h (build_empty_stmt): New argument to build_empty_stmt.
18444         (CAN_HAVE_LOCATION_P): Make sure we have a non empty node.
18445         * builtins.c (gimplify_va_arg_expr): Use locations.
18446         (expand_builtin_sync_operation): Same.
18447         * c-typeck.c (build_component_ref): New argument.
18448         (build_array_ref): Same.
18449         (build_external_ref): Same.
18450         (c_expr_sizeof_expr): Same.
18451         (c_expr_sizeof_type): Same.
18452         (parser_build_unary_op): Same.
18453         (build_conditional_expr): Same.
18454         (build_compound_expr): Pass location on down.
18455         (build_compound_expr): New argument.
18456         (build_c_cast): Same.
18457         (c_cast_expr): Same.
18458         (build_asm_expr): Same.
18459         (c_finish_return): Same.
18460         (c_process_expr_stmt): Pass location on down.
18461         (c_finish_stmt_expr): New argument.
18462         (push_clenaup): Same.
18463         (c_finish_omp_parallel): Same.
18464         (c_finish_omp_task): Same.
18465         * gimplify.c (gimplify_call_expr): Pass location on down.
18466         * c-omp.c (c_finish_omp_master): New argument.
18467         (c_finish_omp_critical): Same.
18468         (c_finish_omp_ordered): Same.
18469         (c_finish_omp_barrier): Same.
18470         (-c_finish_omp_taskwait): Same.
18471         (c_finish_omp_atomic): Same.
18472         (c_finish_omp_flush): Same.
18473         * tree-inline.c (copy_tree_body_r): Pass location on down.
18474         (inline_forbidden_p): Remove use of input_location.
18475         * c-gimplify.c (c_build_bind_expr): New argument.
18476         * c-common.c (c_common_truthvalue_conversion): Pass location on down.
18477         (c_sizeof_or_alignof_type): New argument.
18478         (c_alignof_expr): Same.
18479         (build_va_arg): Same.
18480         (c_add_case_label): Same.
18481         * c-common.h (c_sizeof_or_alignof_type, c_alignof_expr,
18482         c_sizeof, c_alignof, build_va_arg, build_stmt, build_case_label,
18483         c_build_bind_expr, objc_build_selector_expr, objc_build_throw_stmt,
18484         c_finish_omp_master, c_finish_omp_critical, c_finish_omp_ordered,
18485         c_finish_omp_barrier, c_finish_omp_atomic, c_finish_omp_flush,
18486         c_finish_omp_taskwait, c_finish_omp_for, c_split_parallel_clauses):
18487         New argument.
18488         * stub-objc.c (objc_build_selector_expr): Same.
18489         (objc_build_throw_stmt): Same.
18490         * c-parser.c (c_parser_declaration_or_fndef): Pass location on down.
18491         (c_parser_initelt): Same.
18492         (c_parser_compound_statement): Same.
18493         (c_parser_compound_statement_nostart): Same.
18494         (c_parser_label): Same.
18495         (c_parser_statement_after_labels): Same.
18496         (c_parser_if_body): Same.
18497         (c_parser_else_body): Same.
18498         (c_parser_if_statement): Same.
18499         (c_parser_switch_statement): Same.
18500         (c_parser_while_statement): Same.
18501         (c_parser_do_statement): Same.
18502         (c_parser_for_statement): Same.
18503         (c_parser_asm_statement): Same.
18504         (c_parser_conditional_expression): Same.
18505         (c_parser_binary_expression): Same.
18506         (c_parser_cast_expression): Same.
18507         (c_parser_unary_expression): Same.
18508         (c_parser_sizeof_expression): Same.
18509         (c_parser_alignof_expression): Same.
18510         (c_parser_postfix_expression): Same.
18511         (c_parser_expression): Same.
18512         (c_parser_objc_receiver): Same.
18513         (c_parser_omp_variable_list): Same.
18514         (c_parser_omp_structured_block): Same.
18515         (c_parser_omp_atomic): New argument.
18516         (c_parser_omp_barrier): Same.
18517         (c_parser_omp_critical): Same.
18518         (c_parser_omp_flush): Pass location on down.
18519         (c_parser_omp_for_loop): New argument.
18520         (c_parser_omp_for): Same.
18521         (c_parser_omp_master): Same.
18522         (c_parser_omp_ordered): Same.
18523         (c_parser_omp_sections_scope): Same.
18524         (c_parser_omp_sections): Same.
18525         (c_parser_omp_parallel): Same.
18526         (c_parser_omp_single): Same.
18527         (c_parser_omp_task): Same.
18528         (c_parser_omp_taskwait): Pass location on down.
18529         (c_parser_omp_construct): Same.
18530         (c_parser_omp_threadprivate): Same.
18531         * dwarf2asm.c, targhooks.c, optabs.c, tree.c, tree.h, target.h,
18532         builtins.c, omp-low.c, cgraphunit.c, tree-call-cdce.c,
18533         tree-ssa-alias.c, gimple-low.c, c-tree.h, expr.c, tree-parloops.c,
18534         c-decl.c, tree-eh.c, langhooks.c, function.c, stor-layout.c,
18535         c-typeck.c, gimplify.c, c-pragma.c, expmed.c, except.c, coverage.c,
18536         emit-rtl.c, cfgexpand.c, tree-mudflap.c, varasm.c, tree-nested.c,
18537         rtl.h, tree-inline.c, tree-profile.c, c-common.c, c-common.h,
18538         tree-switch-conversion.c, tree-cfg.c, ipa-struct-reorg.c, c-parser.c,
18539         config/i386/i386.c, stmt.c:
18540         Add location argument to the following function definitions and/or
18541         function calls: build_decl, objcp_start_struct, objcp_finish_struct,
18542         start_struct, finish_struct, PUSH_FIELD, create_artificial_label,
18543         cp_make_fname_decl, pushtag, implicitly_declare, c_make_fname_decl,
18544         build_compound_literal, parser_xref_tag, resolve_overloaded_builtin,
18545         do_case, c_finish_bc_stmt, build_compound_literal,
18546         build_function_call.
18547         * c-decl.c (build_compound_literal): Add location argument.
18548         Make all diagnostic calls use location.
18549         (start_struct): Same.
18550         (finish_struct): Same.
18551         (start_enum): Same.
18552         (build_enumerator): Same.
18553         (start_function): Same.
18554         (grokdeclarator): Make all diagnostic calls use location.
18555         (store_parm_decls_oldstyle): Same.
18556         * c-typeck.c (build_function_call): Add location argument.
18557         Make all diagnostic calls use location.
18558         (do_case): Same.
18559         (c_finish_bc_stmt): Same.
18560         * tree-nested.c (get_trampoline_type): Add argument.
18561         Pass location to build_decl.
18562         (lookup_tramp_for_decl): Pass location to get_trampoline_type.
18563         * rtl.h (RTL_LOCATION): New.
18564         * c-common.c (c_add_case_label): Add location argument.
18565         Make all diagnostic calls use location.
18566         * c-common.h: Add location argument to make_fname_decl, do_case,
18567         c_add_case_label, build_function_call, resolve_overloaded_builtin.
18568         * c-parser.c (c_parser_enum_specifier): Rename ident_loc to enum_loc.
18569         Set it appropriately for every case.  Pass enum_loc to start_enum
18570         call.  Pass value_loc first to build_enumerator.  Pass enum_loc to
18571         parser_xref_tag.
18572         (c_parser_struct_or_union_specifier): Save location.  Use it for
18573         start_struct, finish_struct, and parser_xref_tag.
18574
18575 2009-06-12  Ian Lance Taylor  <iant@google.com>
18576
18577         * fold-const.c (fold_unary): Rename local variable and to and_expr.
18578
18579         * c-opts.c (c_common_handle_option): For -Wc++-compat set
18580         cpp_opts->warn_cxx_operator_names.
18581
18582 2009-06-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
18583
18584         PR tree-opt/38865
18585         * tree-ssa-sccvn.c (visit_reference_op_load): If vn_reference_lookup
18586         is returns NULL and OP is a VCE, look through the VCE.
18587
18588 2009-06-12  Ian Lance Taylor  <iant@google.com>
18589
18590         PR bootstrap/40430
18591         * collect2.c (main): Use CONST_CAST2 in code inside #if
18592         LINK_ELIMINATE_DUPLICATE_LDIRECTORIES.
18593
18594 2009-06-12  Joey Ye  <joey.ye@intel.com>
18595
18596         PR middle-end/39146
18597         * cfgexpand.c (get_decl_align_unit): Update
18598         max_used_stack_slot_alignment with align instead of
18599         stack_alignment_needed.
18600
18601         * function.c (assign_stack_local_1): Update
18602         max_used_stack_slot_alignment with alignment_in_bits instead
18603         of stack_alignment_needed.
18604         (locate_and_pad_parm): Don't update max_used_stack_slot_alignment
18605         here.
18606
18607 2009-06-12  Jakub Jelinek  <jakub@redhat.com>
18608
18609         * dwarf2out.c (last_var_location_insn): New variable.
18610         (dwarf2out_end_epilogue): Clear last_var_location_insn.
18611         (dwarf2out_var_location): Don't record anything after last real
18612         insn.  Only change labels if there were any real instructions
18613         in between last note and this one, or if changed sections.
18614
18615 2009-06-11  Richard Henderson  <rth@redhat.com>
18616
18617         * alpha.c (alpha_expand_prologue): Add a REF_CFA_REGISTER
18618         note when storing the frame pointer in a register.
18619         (FRP): Don't redefine to nothing for epilogue.
18620         (alpha_expand_epilogue): Mark register and sp restores.
18621         (unicosmk_gen_dsib): Don't mark weird frame pointer adjust.
18622
18623         * config/alpha/alpha.c (alpha_emit_setcc): Fix test for
18624         when gen_lowpart is needed.
18625
18626 2009-06-11  Richard Henderson  <rth@redhat.com>
18627
18628         * dwarf2out.c (def_cfa_1): Likewise for DW_CFA_cfa_offset.
18629
18630         * dwarf2out.c (need_data_align_sf_opcode): New.
18631         (div_data_align): Move earlier.
18632         (def_cfa_1, reg_save): Use it.
18633
18634 2009-06-11  H.J. Lu  <hongjiu.lu@intel.com>
18635
18636         * config/i386/i386.c (OPTION_MASK_ISA_CRC32_SET): New.
18637         (OPTION_MASK_ISA_CRC32_UNSET): Likewise.
18638         (ix86_handle_option): Handle OPT_mcrc32.
18639         (ix86_target_string): Add -mcrc32.
18640         (bdesc_args): Enable crc32 builtins with OPTION_MASK_ISA_CRC32.
18641
18642         * config/i386/i386.h (TARGET_CRC32): New.
18643
18644         * config/i386/i386.md (sse4_2_crc32<mode>): Also check TARGET_CRC32.
18645         (sse4_2_crc32di): Likewise.
18646
18647         * config/i386/i386.opt (mcrc32): New.
18648
18649         * doc/invoke.texi: Document -mcrc32.
18650
18651 2009-06-11  Richard Henderson  <rth@redhat.com>
18652
18653         * common.opt (gdwarf-): Accept a version number.
18654         * doc/invoke.texi (gdwarf-): Update docs.
18655         * opth-gen.awk: Special case -gdwarf+ to OPT_gdwarfplus.
18656         * opts.c (common_handle_option) [OPT_gdwarf_]: Verify dwarf
18657         version level, and record it.
18658
18659         * dwarf2.h (DW_CIE_VERSION): Remove.
18660         * dwarf2out.c (DWARF_VERSION): Remove.
18661         (add_fde_cfi): Skip DW_CFA_set_loc addition for dwarf3.
18662         (output_call_frame_info): Use CIE version 3 for dwarf3,
18663         or if the return register column is out of range for version 1.
18664         (dwarf_stack_op_name): Add all dwarf3 values.
18665         (DEBUG_PUBTYPES_SECTION): New.
18666         (size_of_die) [dw_val_class_die_ref]: Handle DW_FORM_ref_addr
18667         encoding change for dwarf3.
18668         (output_die) [dw_val_class_die_ref]: Likewise.
18669         (output_compilation_unit_header): Emit correct version for dwarf3.
18670         (output_line_info): Likewise.
18671         (output_pubnames): Update for DWARF_VERSION removal.
18672         (output_aranges): Likewise.
18673         (gen_subprogram_die): Emit DW_OP_call_frame_cfa if emitting dwarf3.
18674         (dwarf2out_init): Don't ifdef DEBUG_PUBTYPES_SECTION.
18675         (dwarf2out_finish): Likewise.
18676
18677 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18678
18679         * system.h (gcc_assert, gcc_unreachable): Revert accidental commit
18680         in r148403.
18681
18682 2009-06-11  David Daney  <ddaney@caviumnetworks.com>
18683
18684         PR c/39252
18685         * doc/extend.texi ( __builtin_unreachable): Document new builtin.
18686         * builtins.c (expand_builtin_unreachable): New function.
18687         (expand_builtin): Handle BUILT_IN_UNREACHABLE case.
18688         * builtins.def (BUILT_IN_UNREACHABLE): Add new builtin.
18689         * cfgcleanup.c (try_optimize_cfg): Delete empty blocks with no
18690         successors.
18691         * cfgrtl.c (rtl_verify_flow_info): Handle empty blocks when
18692         searching for missing barriers.
18693
18694 2009-06-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
18695
18696         * config/darwin.h (LINK_COMMAND_SPEC): Adjust spec to link libcov
18697         when -fprofile-generate* was passed.
18698         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
18699
18700 2009-06-11  Anthony Green  <green@moxielogic.com>
18701
18702         * config/moxie/moxie.md: Define length attribute for all instructions.
18703         (rCC): Define.
18704         (*b<cond:code>): Support limited branch ranges for new PC-relative
18705         branch instructions.
18706         * config/moxie/moxie.h (HAS_LONG_UNCOND_BRANCH): Define.
18707
18708 2009-06-11  Jakub Jelinek  <jakub@redhat.com>
18709
18710         * config/i386/i386.c (min_insn_size): Use get_attr_length
18711         for normal insns other than TYPE_MULTI, TYPE_OTHER and TYPE_FCMP.
18712         For __asm return 0.
18713
18714         * config/i386/i386.c (ix86_pad_returns): Use emit_jump_insn_before
18715         instead of emit_insn_before.
18716
18717 2009-06-10  Ian Lance Taylor  <iant@google.com>
18718
18719         PR bootstrap/40408
18720         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
18721         GIMPLE_SWITCH.
18722
18723 2009-06-10  Revital Eres  <eres@il.ibm.com>
18724
18725         * passes.c (init_optimization_passes): Reschedule
18726         predictive-commoning pass before complete unroll pass.
18727
18728 2009-06-10  Martin Jambor  <mjambor@suse.cz>
18729
18730         * cgraph.c (cgraph_node_can_be_local_p): New function.
18731         (cgraph_make_node_local): New function.
18732         * cgraph.h (cgraph_node_can_be_local_p): Declare.
18733         (cgraph_make_node_local): Declare.
18734
18735 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
18736
18737         * tree.h (tree_base): Add packed_flag and user_align fields.
18738         Decrease size of spare field.
18739         (TYPE_USER_ALIGN): Use user_align from tree_base.
18740         (DECL_USER_ALIGN): Likewise.
18741         (TYPE_PACKED): Use packed_flag from tree_base.
18742         (DECL_PACKED): Likewise.
18743         (tree_type): Delete packed_flag and user_align fields.  Widen
18744         precision field.  Widen mode field and shuffle fields to align
18745         mode on an 8-bit boundary.
18746         (tree_decl_common): Delete decl_flag_1 and user_align fields.
18747         Renumber decl_flag_* fields.  Fix comments.  Widen
18748         decl_common_unused field.
18749         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_* fields.
18750         (DECL_EXTERNAL): Likewise.
18751         (DECL_BIT_FIELD): Likewise.
18752         (DECL_NONADDRESSABLE_P): Likewise.
18753         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
18754         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
18755
18756 2009-06-10  Ian Lance Taylor  <iant@google.com>
18757
18758         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
18759         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
18760         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
18761         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
18762         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
18763         DEF_VEC_ALLOC_FUNC_P.
18764         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
18765         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
18766         DEF_VEC_ALLOC_FUNC_O.
18767         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
18768         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
18769         DEF_VEC_ALLOC_FUNC_I.
18770         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
18771         (vec_stack_p_reserve_exact_1): Declare.
18772         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
18773         (vec_stack_free): Declare.
18774         (VEC_stack_alloc): Define.
18775         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
18776         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
18777         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
18778         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
18779         for void_p.
18780         (stack_vecs): New static variable.
18781         (vec_stack_p_reserve_exact_1): New function.
18782         (vec_stack_o_reserve_1): New static function.
18783         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
18784         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
18785         (vec_stack_free): New function.
18786         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
18787         (VEC_df_ref_stack_alloc): Define.
18788         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
18789         DEF_VEC_ALLOC_P_STACK.
18790         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
18791         (struct df_collection_rec): Change _vec fields to VEC.  Remove
18792         _use fields.
18793         (df_free_collection_rec): Adjust for new fields.
18794         (df_insn_rescan): Use new df_collection_rec fields.
18795         (df_notes_rescan, df_canonize_collection_rec): Likewise.
18796         (df_ref_create_structure, df_ref_record): Likewise.
18797         (df_get_conditional_uses, df_get_call_refs): Likewise.
18798         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
18799         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
18800         (df_record_exit_block_uses, df_bb_verify): Likewise.
18801         (df_swap_refs): Change ref_vec parameter to VEC.  Change all callers.
18802         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
18803         Remove count parameter.  Change return type to void.  Change all
18804         callers.
18805         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
18806         Remove count parameter.  Change return type to void.  Change all
18807         callers.
18808         (df_install_refs): Change old_vec parameter to VEC.  Remove count
18809         parameter.  Change all callers.
18810         (df_install_mws): Change old_vec parameter to VEC.  Remove count
18811         parameter.  Change all callers.
18812         (df_refs_verify): Change new_rec parameter to VEC.  Change call
18813         callers.
18814         (df_mws_verify): Likewise.
18815
18816 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
18817
18818         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
18819
18820 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
18821
18822         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
18823
18824 2009-06-10  Anthony Green  <green@moxielogic.com>
18825
18826         * config/moxie/crti.asm: New file.
18827         * config/moxie/crtn.asm: New file.
18828         * config/moxie/moxie.c: New file.
18829         * config/moxie/moxie.h: New file.
18830         * config/moxie/sfp-machine.h: New file.
18831         * config/moxie/moxie-protos.h: New file.
18832         * config/moxie/t-moxie: Created.
18833         * config/moxie/t-moxie-softfp: Created.
18834         * config/moxie/moxie.md: Created.
18835         * config/moxie/constraints.md: Created.
18836         * config.gcc: Add moxie support.
18837         * doc/md.texi (Machine Constraints): Add moxie constraints.
18838         * doc/contrib.texi (Contributors): Mention moxie port.
18839         * doc/install.texi (Specific): Mention the moxie port.
18840
18841 2009-06-09  Ian Lance Taylor  <iant@google.com>
18842
18843         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
18844         compiling with C++.
18845         * optabs.c (optab_table): Only use designated initializers if
18846         HAVE_DESIGNATED_INITIALIZERS is defined.
18847         (convert_optab_table): Likewise.
18848         (init_optabs): Always call init_insn_codes if
18849         HAVE_DESIGNATED_INITIALIZERS is not defined.
18850
18851 2009-06-09  Ian Lance Taylor  <iant@google.com>
18852
18853         * targhooks.c (default_builtin_vectorized_function): Change fn
18854         parameter to unsigned int.
18855         (default_builtin_vectorized_conversion): Change code parameter to
18856         unsigned int.
18857         (default_builtin_reciprocal): Change fn parameter to unsigned int.
18858         * targhooks.h: Update declarations.
18859         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
18860         parameter to unsigned int.
18861
18862         * c-typeck.c (comptypes_check_enum_int): New static function.
18863         (comptypes_internal): Add enum_and_int_p parameter.  Change all
18864         callers.
18865         (comp_target_types): Add location parameter.  Change all callers.
18866         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
18867         Change all callers.
18868         (function_types_compatible_p, type_lists_compatible_p): Likewise.
18869         (build_conditional_expr): Add colon_loc parameter.  Change all
18870         callers.
18871         (convert_for_assignment): Add location parameter.  Change all callers.
18872         * c-parser.c (c_parser_conditional_expression): Pass location of
18873         colon to build_conditional_expr.
18874         * c-tree.h (build_conditional_expr): Update declaration.
18875
18876 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18877
18878         * graphite.c: Revert previous patch.
18879
18880 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
18881
18882         PR bootstrap/40103
18883         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
18884
18885 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18886
18887         * tree-ssa-loop-prefetch.c
18888         (loop_prefetch_arrays): Fixed a portability problem in printf format
18889         string.
18890
18891 2009-06-09  Martin Jambor  <mjambor@suse.cz>
18892
18893         PR tree-optimization/40351
18894         * tree-sra.c (propagate_subacesses_accross_link): Check that a
18895         refrence to a potential artifical subaccess can be constructed.
18896
18897 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
18898
18899         * config/sh/sh-protos.h (sh_optimization_options): Declare.
18900         (sh_override_options): Likewise.
18901         * config/sh/sh.c: Include params.h.
18902         (sh_optimization_options): New.
18903         (sh_override_options): Likewise.
18904         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
18905         (OVERRIDE_OPTIONS): Use sh_override_options.
18906
18907 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18908
18909         * dwarf2out.c (emit_cfa_remember): New variable.
18910         (add_fde_cfi): If emit_cfa_remember, recurse to add
18911         DW_CFA_remember_state first.
18912         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
18913         instead just set emit_cfa_remember.
18914
18915 2009-06-08  Jan Hubicka  <jh@suse.cz>
18916
18917         PR debug/40126
18918         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
18919
18920 2009-06-08  Jan Hubicka  <jh@suse.cz>
18921
18922         PR middle-end/39834
18923         * cgraphunit.c (save_inline_function_body): Do not copy transform
18924         hooks for saved inline bodies.
18925         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
18926         for given function.
18927
18928 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
18929
18930         * jump.c (returnjump_p): Handle delayed branches.  Add missing
18931         function comment.
18932
18933 2009-06-08  Jan Hubicka  <jh@suse.cz>
18934
18935         PR middle-end/40102
18936         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
18937         original node might've been modified.
18938         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
18939
18940 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
18941
18942         * tree-object-size.c (addr_object_size): Add OSI argument.
18943         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
18944         (compute_builtin_object_size, expr_object_size): Adjust callers.
18945         (plus_stmt_object_size): Call addr_object_size instead of
18946         compute_builtin_object_size.
18947
18948 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
18949             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
18950
18951         * tree-ssa-loop-prefetch.c
18952         (gather_memory_references): Introduced a counter for the number of
18953         memory references.
18954         (anything_to_prefetch_p): Introduced a counter for the number of
18955         prefetches.
18956         (is_loop_prefetching_profitable): New function with a cost model
18957         for prefetching.
18958         (loop_prefetch_arrays): Use the new cost model to determine if
18959         prefetching is profitable.
18960         * params.def (MIN_INSN_TO_PREFETCH_RATIO,
18961         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18962         * params.h (MIN_INSN_TO_PREFETCH_RATIO,
18963         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18964         * doc/invoke.texi (MIN_INSN_TO_PREFETCT_RATIO,
18965         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
18966
18967 2009-06-08  Michael Matz  <matz@suse.de>
18968
18969         PR debug/40012
18970         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
18971         partitions use the same.
18972         (expand_one_var): Deal with DECL_RTL sometimes begin set also
18973         for basevars of SSA_NAMEs.
18974         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
18975         to not expand them twice.
18976         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
18977         multiple places.
18978
18979 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
18980
18981         * common.opt (fcompare-debug=, fcompare-debug-second): New.
18982         (fdump-final-insns=, gtoggle): New.
18983         * doc/invoke.texi: Document them.
18984         * final.c (rest_of_clean_state): Dump final insn stream.
18985         * gcc.c (invoke_as): Hook in -fcompare-debug.
18986         (static_spec_functions): Add compare-debug-dump-opt,
18987         compare-debug-self-opt and compare-debug-auxbase-opt.
18988         (compare_debug, compare_debug_second, compare_debug_opt): New.
18989         (switches_debug_check, n_switches_debug_check): New.
18990         (debug_auxbase_opt, debug_check_temp_file): New.
18991         (process_command): Handle -fno-compare-debug, -fcompare-debug and
18992         -fcompare-debug=*.
18993         (do_self_spec): Handle arguments after switches.
18994         (do_spec_1): Add .gk extension to temp file basenames for compare.
18995         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
18996         (cc1_options): Use it instead of normal auxbase computation for
18997         the second compare-debug compilation.
18998         (compare_files): New.
18999         (main): Set up and implement compare debug mode.
19000         (compare_debug_dump_opt_spec_function): New.
19001         (compare_debug_self_opt_spec_function): New.
19002         (compare_debug_auxbase_opt_spec_function): New.
19003         * toplev.c (process_options): Handle flag_gtoggle,
19004         flag_dump_final_insns.
19005         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
19006         during -fcompare-debug-second compilation.
19007
19008 2009-06-07  Ian Lance Taylor  <iant@google.com>
19009
19010         * dwarf2.h (enum dwarf_location_atom): Add INTERNAL_DW_OP_tls_addr.
19011         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
19012
19013         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
19014         with no default node.  Change warning with %H to warning_at.
19015         Don't clear warn_switch around case checking.
19016         * doc/invoke.texi (Warning Options): Clarify distinction between
19017         -Wswitch and -Wswitch-enum.
19018
19019 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19020
19021         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
19022
19023 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19024
19025         * gbl-ctors.h: Add header guard.
19026
19027 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19028
19029         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
19030         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
19031         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
19032         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
19033         prototypes for removed functions.
19034         (expressions_equal_p): Move to ...
19035         * tree-ssa-sccvn.h: ... here and ...
19036         * matrix-reorg.c: ... adjust includes.
19037
19038 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19039
19040         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
19041
19042 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19043
19044         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
19045         (finish_function): Remove erroneous whitespace.
19046
19047 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19048
19049         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
19050         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
19051
19052 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19053
19054         * errors.c (internal_error): Commentary typo fix.
19055         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
19056         * tree-ssa-pre.c: Ditto.
19057
19058 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
19059
19060         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
19061         them is supposed to hold actual statements.
19062
19063 2009-06-06  Ian Lance Taylor  <iant@google.com>
19064
19065         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
19066         empty statements can now have attributes.
19067
19068 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
19069
19070         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
19071         * config/mips/mips.md: Ditto.
19072
19073 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19074
19075         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
19076         _RELOCATABLE.
19077         (__eabi_uconvert): Likewise.
19078
19079 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
19080
19081         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
19082         CFI_* definitions with IN_GCC.
19083
19084 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
19085
19086         * xcoffout.h (xcoffout_source_line): Update prototype.
19087
19088 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19089
19090         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
19091         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
19092
19093 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19094
19095         PR middle-end/40340
19096         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
19097         inlined_function_outer_scope_p blocks for artificial inlines
19098         even at -g0/-g1.
19099         * tree.c (tree_nonartificial_location): Rewrite using
19100         block_nonartificial_location.
19101
19102 2009-06-05  Revital Eres  <eres@il.ibm.com>
19103             Leehod Baruch  <leehod@il.ibm.com>
19104
19105         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
19106         (expand_expr_real_1): Remove comment.
19107         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
19108         Vectorize misaligned access when the target supports it.
19109         (vect_supportable_dr_alignment): Check for unaligned access support.
19110         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
19111         and remove asset.
19112
19113 2009-06-05  Julian Brown  <julian@codesourcery.com>
19114
19115         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
19116         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
19117
19118 2009-06-05  Richard Guenther  <rguenther@suse.de>
19119
19120         PR bootstrap/40350
19121         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
19122         as possibly unused.
19123
19124 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
19125
19126         * config/s390/s390.c (global_not_special_regno_p): New static inline.
19127         (save_gprs): Don't tell unwinder when a global register is saved.
19128         (s390_emit_epilogue): Emit needed epilogue unwind info.
19129
19130 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19131
19132         * dwarf2out.c (deferred_asm_name): New.
19133         (add_name_and_src_coords_attributes): Defer creation of
19134         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
19135         computed yet.
19136         (move_linkage_attr): New.
19137         (dwarf2out_finish): Revisit deferrals and emit attributes at the
19138         right place.
19139
19140 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
19141
19142         * tree-nested.c (finalize_nesting_tree_1): Declare the
19143         frame_decl in the binding tree.
19144
19145 2009-06-04  Cary Coutant  <ccoutant@google.com>
19146
19147         * basic-block.h (struct basic_block_def): Add discriminator field.
19148         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
19149         callers.
19150         * debug.c (do_nothing_debug_hooks): Add additional entry.
19151         (debug_nothing_int_charstar_int): New function.
19152         * debug.h (struct gcc_debug_hooks): Add parameter to source_line hook.
19153         (debug_nothing_int_charstar_int): New declaration.
19154         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
19155         discriminator value in .loc directive.
19156         * final.c (last_discriminator): New variable.
19157         (discriminator): New variable.
19158         (final_start_function): Initialize above variables, pass current
19159         discriminator to debug hook.
19160         (notice_source_line): Check for discriminator change.
19161         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
19162         * sdbout.c (sdbout_source_line): New parameter.
19163         * tree-cfg.c (struct locus_discrim_map): New structure type.
19164         (discriminator_per_locus): New hash table.
19165         (build_gimple_cfg): Allocate and free discriminator hash table.
19166         (make_edges): Call assign_discriminator.
19167         (locus_map_hash): New function.
19168         (locus_map_eq): New function.
19169         (next_discriminator_for_locus): New function.
19170         (same_line_p): New function.
19171         (assign_discriminator): New function.
19172         (make_cond_expr_edges): Call assign_discriminator.
19173         (make_gimple_switch_edges): Likewise.
19174         (first_non_label_stmt): New function.
19175         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
19176         all callers.
19177         * xcoffout.c (xcoffout_source_line): Add new parameter.
19178
19179         * configure.ac (gcc_cv_as_discriminator): New configury check for
19180         gas support for discriminator.
19181         * configure: Regenerate.
19182         * config.in: Regenerate.
19183
19184 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
19185
19186         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
19187         val after checking for integers.
19188
19189 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
19190
19191         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
19192         X64_REGPARM_MAX.
19193         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
19194         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
19195         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
19196         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
19197         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
19198         X64_SSE_REGPARM_MAX.
19199         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
19200         X64_SSE_REGPARM_MAX.
19201
19202 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19203
19204         * gcc.c (report_times_to_file): New.
19205         (execute): Implement it.
19206         (process_command): Support -time=.
19207         * doc/invoke.texi: Document it.
19208
19209 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19210
19211         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
19212         that have value exprs.
19213
19214 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
19215
19216         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
19217         declarations for constants until...
19218         (dw2_output_indirect_constant_1): ... this point.
19219
19220 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
19221
19222         PR target/10242
19223         * arm.md (arm_addsi3): Don't try to split an add with an
19224         eliminable register until after reload has completed.
19225
19226 2009-06-03  Ian Lance Taylor  <iant@google.com>
19227
19228         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
19229         * genattrtab.c (write_length_unit_log): Likewise.
19230         * genchecksum.c (dosum): Likewise.
19231         * gengtype.c (write_rtx_next): Likewise.
19232         (finish_root_table, write_roots): Likewise.
19233         * gimple.c (gimple_ops_offset_): Likewise.
19234         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
19235         * config/arc/arc.c (arc_attribute_table): Likewise.
19236         * config/arm/arm.c (arm_attribute_table): Likewise.
19237         * config/avr/avr.c (avr_attribute_table): Likewise.
19238         * config/crx/crx.c (crx_attribute_table): Likewise.
19239         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
19240         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
19241         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
19242         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
19243         * config/sh/sh.c (sh_attribute_table): Likewise.
19244         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
19245         * config/spu/spu.c (spu_attribute_table): Likewise.
19246         * config/v850/v850.c (v850_attribute_table): Likewise.
19247
19248         * config/alpha/alpha.c (vms_attribute_table): Make static.
19249         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
19250         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
19251         * config/mips/mips.c (mips_attribute_table): Likewise.
19252
19253         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
19254         $(SYSTEM_H).
19255         (cc1-checksum.o): Likewise.
19256
19257 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
19258
19259         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
19260
19261 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
19262
19263         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
19264         insn if it is changing sp.  Use gen_add3_insn instead of
19265         conditionally gen_addsi3 and gen_adddi3.
19266         (offset_below_red_zone_p): New static inline function.
19267         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
19268         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
19269         * config/rs6000/ppc-asm.h: Include auto-host.h.
19270         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
19271         CFI_RESTORE): Define.
19272         * config/rs6000/crtresxgpr.asm: Add unwind info.
19273         * config/rs6000/crtresxfpr.asm: Likewise.
19274         * config/rs6000/crtresgpr.asm: Likewise.
19275         * config/rs6000/crtresfpr.asm: Likewise.
19276         * config/rs6000/crtsavgpr.asm: Likewise.
19277         * config/rs6000/crtsavfpr.asm: Likewise.
19278
19279         * dwarf2out.c (output_cfi_directive): Pass 1 instead of 0 to second
19280         argument of DWARF2_FRAME_REG_OUT macros.
19281
19282 2009-06-03  Julian Brown  <julian@codesourcery.com>
19283
19284         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
19285         words or less (including TImode) in core registers.
19286
19287 2009-06-03  Richard Guenther  <rguenther@suse.de>
19288
19289         PR middle-end/40328
19290         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
19291
19292 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
19293
19294         * statistics.c (statistics_counter_event): Do not record event
19295         in pass dump if its number == -1.
19296         (curr_statistics_hash): Add assert that we never get passes
19297         with static number == -1.
19298
19299 2009-06-03  Richard Guenther  <rguenther@suse.de>
19300             Andrey Belevantsev  <abel@ispras.ru>
19301
19302         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only
19303         non-BLKmode arrays addressable.
19304
19305 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
19306
19307         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
19308         * config/m68k/m68k.h: ... here.
19309
19310 2009-06-03  Martin Jambor  <mjambor@suse.cz>
19311
19312         PR tree-optimization/40323
19313         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
19314         assignment.
19315
19316 2009-06-03  Richard Guenther  <rguenther@suse.de>
19317
19318         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19319         consistently.
19320
19321 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
19322
19323         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
19324         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
19325         JUMP_TABLE_DATA_P where applicable.
19326         * config/sh/sh.c: Ditto.
19327         * config/sh/sh.h: Ditto.
19328         * config/sh/sh.md: Ditto.
19329         * config/sh/symbian.c: Ditto.
19330
19331 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
19332
19333         * config/i386/driver-i386.c (describe_cache): Optimize
19334         concatenation of strings.  Use snprintf instead of sprintf.
19335         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
19336         target when not compiling with GCC.
19337
19338 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
19339
19340         * config/sh/sh.c: Revert last change.
19341         (sh_expand_epilogue): Emit a blockage insn before the frame
19342         pointer adjustment unconditionally.
19343
19344 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19345
19346         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
19347         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
19348         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
19349         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
19350         to COLLECT_GCC_OPTIONS.
19351
19352 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19353
19354         * collect2.c (target_system_root): New variable.
19355         (main): Handle --sysroot=.
19356         (ignore_library): Strip the sysroot from the library path.
19357
19358 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19359
19360         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
19361         (collect2.o): Depend on collect2-aix.h.
19362         (collect2-aix.o): New rule.
19363         * collect2-aix.h: New file.
19364         * collect2-aix.c: Likewise.
19365         * collect2.c: Include collect2-aix.h.  Don't undefine
19366         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
19367         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
19368         Use TARGET_AIX_VERSION instead of _AIX51.
19369         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
19370         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
19371         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
19372         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
19373         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
19374
19375 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19376
19377         * collect2.c (ignore_library): Avoid premature post-increment
19378         and null deference.
19379
19380 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
19381
19382         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
19383         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
19384         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
19385         CROSS_DIRECTORY_STRUCTURE too.
19386         (LINK_LIBG_SPEC): Likewise.
19387         (LIB_SPEC): Add %R to sysroot paths.
19388         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
19389         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
19390         * config/rs6000/aix51.h: As for aix43.h.
19391         * config/rs6000/aix52.h: Likewise.
19392         * config/rs6000/aix53.h: Likewise.
19393         * config/rs6000/aix61.h: Likewise.
19394         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
19395         to the beginning of sysroot paths.
19396
19397 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19398
19399         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
19400         INSN_LISTs that are out of the REG_NOTE range.
19401
19402 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19403
19404         * loop-unroll.c (struct iv_to_split): Add pointer to next.
19405         (struct var_to_expand): Likewise.
19406         (struct opt_info): Add head and tail for linked lists of the above.
19407         (analyze_insn_to_expand_var): Initialize next.
19408         (analyze_iv_to_split_insn): Likewise.
19409         (analyze_insns_in_loop): Create linked lists.
19410         (allocate_basic_variable): Simplify for use without hash table.
19411         (insert_var_expansion_initialization): Likewise, make it type-safer.
19412         (combine_var_copies_in_loop_exit): Likewise.
19413         (apply_opt_in_copies): Walk lists rather than hash tables.
19414         (release_var_copies): Simplified and inlined by hand into...
19415         (free_opt_info): ... this function.
19416
19417 2009-06-02  Richard Guenther  <rguenther@suse.de>
19418
19419         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
19420         for field decls.
19421
19422 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19423
19424         * cfgexpand.c (gimple_expand_cfg): Discard the source location
19425         only for builtins that are not overridden.
19426
19427 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19428
19429         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
19430         label string.
19431
19432 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19433
19434         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
19435
19436 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19437
19438         * combine.c (move_deaths): Compare LUIDs within the same BB only.
19439
19440 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
19441
19442         * common.opt (fdump-unnumbered-links): New.
19443         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
19444         * print-rtl.c (flag_dump_unnumbered_links): New.
19445         (print_rtx): Test it.
19446
19447 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
19448
19449         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
19450         push/pop multiple to 8-byte alignment.
19451
19452 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
19453
19454         * config/i386/i386.c (queued_cfa_restores): New static variable.
19455         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
19456         functions.
19457         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
19458         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
19459         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
19460         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
19461         note unconditionally.
19462         (ix86_emit_restore_regs_using_mov): Likewise.
19463         (ix86_emit_restore_sse_regs_using_mov): Likewise.
19464         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
19465         it through to ix86_emit_restore_reg_using_pop.
19466         (ix86_emit_leave): Add RED_OFFSET argument.  Call
19467         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
19468         instead of adding REG_CFA_OFFSET note unconditionally.
19469         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
19470         the above functions.  Call ix86_add_queued_cfa_restore_notes when
19471         needed.
19472
19473         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
19474         force output of the label even for dwarf2out_do_cfi_asm.
19475         (add_fde_cfi): If -g2 and above and cfi might change CFA,
19476         force creation of CFI label and chain DW_CFA_set_loc jumping to it
19477         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
19478         caller.
19479         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
19480         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
19481         dwarf2out_cfi_label callers.
19482         * tree.h (dwarf2out_cfi_label): Adjust prototype.
19483         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
19484         Adjust dwarf2out_cfi_label callers.
19485         * config/vax/vax.c (vax_output_function_prologue): Likewise.
19486
19487         * config/i386/i386.h (struct machine_cfa_state,
19488         struct machine_function): Guard with ifndef USED_FOR_TARGET
19489         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
19490
19491         PR other/40024
19492         * emutls.c (__emutls_get_address): Change arr->size to mean number
19493         of allocated arr->data entries instead of # of slots + 1.
19494
19495         PR middle-end/40316
19496         * recog.c (peep2_reinit_state): New function.
19497         (peephole2_init_state): Use it at the end of a basic block and also
19498         when seeing a RTX_FRAME_RELATED_P insn.
19499
19500 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
19501
19502         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
19503         fixuns_truncrfdi2): New.
19504         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
19505         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
19506         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
19507         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
19508         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
19509         *recip_approx): Remove.
19510         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
19511         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
19512         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
19513         move to div.md.
19514         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
19515         setf_exp_rf): New.
19516
19517 2009-06-01  Ian Lance Taylor  <iant@google.com>
19518
19519         * attribs.c (register_attribute): Use CONST_CAST.
19520         * collect2.c (main): Use CONST_CAST2.
19521         (scan_prog_file): Likewise.
19522         * gcc.c (process_command, main): Likewise.
19523         * toplev.c (toplev_main): Likewise.
19524
19525         * c-typeck.c (handle_warn_cast_qual): New static function,
19526         partially broken out of build_c_cast.
19527         (build_c_cast): Call handle_warn_cast_qual.
19528         * doc/invoke.texi (Warning Options): Document new effect of
19529         -Wcast-qual.
19530
19531 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
19532
19533         * diagnostic.c (diagnostic_build_prefix): Always print columns.
19534         (diagnostic_report_current_module): Print columns.
19535         * common.opt (flag_show_column): Enable by default.
19536
19537 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
19538
19539         * alias.c (find_base_term): Check for NULL term before returning.
19540
19541 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19542
19543         Revert due to PR40320:
19544         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19545         * calls.c (emit_library_call_value_1): Don't force_operand for move
19546         and push insns.
19547
19548 2009-06-01  Olivier Hainque  <hainque@adacore.com>
19549             Eric Botcazou  <ebotcazou@adacore.com>
19550
19551         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
19552         to be processed as a bitfield for constructor output purposes.
19553         * output.h (initializer_constant_valid_for_bitfield_p): Declare
19554         new function.
19555         * varasm.c (oc_local_state): New type, output_constructor
19556         local state to support communication with helpers.
19557         (oc_outer_state): New type, output_constructor outer state of
19558         relevance in recursive calls.
19559         (output_constructor_array_range): New output_constructor helper,
19560         extracted code for an array range element.
19561         (output_constructor_regular_field): New output_constructor helper,
19562         extracted code for an element that is not a bitfield.
19563         (output_constructor_bitfield): New output_constructor helper,
19564         extracted code for a bitfield element.  Accept an OUTER state
19565         argument for recursive processing.  Recurse on record or array
19566         CONSTRUCTOR values, possibly past noop conversions.
19567         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
19568         VALUE is a valid constant-valued expression for use in a static
19569         bit-field initializer.
19570         (output_constructor): Rework to use helpers.  Accept and honor an
19571         OUTER state argument for recursive calls.  Return total size.  Be
19572         prepared for nested constructors initializing bitfields.
19573         (output_constant): Feed OUTER in calls to output_constructor.
19574
19575 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
19576
19577         * calls.c (emit_library_call_value_1): Don't force_operand for move
19578         and push insns.
19579
19580 2009-06-01  Nick Clifton  <nickc@redhat.com>
19581
19582         * doc/invoke.texi (IA-64 Options): Fix typo.
19583
19584 2009-06-01  Ira Rosen  <irar@il.ibm.com>
19585
19586         PR tree-optimization/39129
19587         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the
19588         printed message.
19589         (vect_do_peeling_for_loop_bound): Use
19590         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19591         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19592         (vect_loop_versioning): Likewise.
19593         (vect_create_cond_for_alias_checks): Fix indentation.
19594         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the
19595         macros.
19596         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
19597         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
19598         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to
19599         "control flow in loop".
19600         (vect_estimate_min_profitable_iters): Use
19601         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
19602         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
19603         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
19604         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
19605         * tree-vect-stmts.c (vectorizable_store): Replace the check that the
19606         statement belongs to a group of strided accesses with the exact code
19607         check.
19608         (vectorizable_load): Likewise.
19609         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
19610         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
19611
19612 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
19613
19614         * config/freebsd-stdint.h: New file.
19615         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
19616         Add freebsd-stdint.h to tm_file.
19617
19618 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
19619
19620         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
19621         (thumb2_extendhidi2): Likewise.
19622
19623 2009-05-31  Ian Lance Taylor  <iant@google.com>
19624
19625         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
19626
19627 2009-05-31  Ian Lance Taylor  <iant@google.com>
19628
19629         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
19630         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
19631         (ipa-reference.o): Depend upon gt-ipa-reference.h.
19632
19633 2009-05-31  Jason Merrill  <jason@redhat.com>
19634
19635         * tree-pretty-print.c (print_call_name): Take the callee, not the
19636         call itself.  Make non-static.  Use dump_function_name for functions.
19637         (dump_generic_node): Adjust.
19638         * diagnostic.h: Declare print_call_name.
19639         * gimple-pretty-print.c (dump_gimple_call): Use it.
19640
19641 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19642
19643         * config/sh/sh.md (ashldi3_std): New define_expand.
19644         (ashldi3): Use it.
19645
19646 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
19647
19648         PR target/40313
19649         * config/sh/sh.c: Include debug.h.
19650         (sh_expand_epilogue): Emit a blockage insn before the frame
19651         pointer adjustment also when dwarf2out_do_frame returns true.
19652
19653 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
19654
19655         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
19656         (thumb2_extendqidi2): New pattern.
19657
19658 2009-05-31  Ira Rosen  <irar@il.ibm.com>
19659
19660         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
19661         mark phis for renaming.
19662         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
19663         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
19664         Call mark_sym_for_renaming.
19665         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
19666         * tree-vect-loop.c (vect_transform_loop): Remove
19667         vect_memsyms_to_rename initialization and a call to
19668         mark_set_for_renaming.
19669
19670 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
19671
19672         PR middle-end/40304
19673         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
19674         frame related even if !set_cfa && style < 0.
19675
19676 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
19677
19678         * config/i386/mingw-tls.c: New file.
19679         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
19680         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
19681         defining _WIN32 but not __CYGWIN__.
19682
19683 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
19684
19685         * configure.ac: Add MPC support.
19686
19687         * config.in, configure: Regenerate.
19688
19689 2009-05-29  Richard Henderson  <rth@redhat.com>
19690
19691         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
19692         NOTE_INSN_BASIC_BLOCK.
19693         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
19694         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
19695         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
19696         to be deleted.
19697         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
19698         add in_use field.
19699         (add_cfi): Disable check redefining cfa away from drap.
19700         (lookup_cfa_1): Add remember argument; handle remember/restore.
19701         (lookup_cfa): Pass remember argument.
19702         (cfa_remember): New.
19703         (compute_barrier_args_size_1): Remove sibcall check.
19704         (dwarf2out_frame_debug_def_cfa): New.
19705         (dwarf2out_frame_debug_adjust_cfa): New.
19706         (dwarf2out_frame_debug_cfa_offset): New.
19707         (dwarf2out_frame_debug_cfa_register): New.
19708         (dwarf2out_frame_debug_cfa_restore): New.
19709         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
19710         (dwarf2out_begin_epilogue): New.
19711         (dwarf2out_frame_debug_restore_state): New.
19712         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
19713         DW_CFA_restore_state.
19714         (output_cfi_directive): Likewise.
19715         (convert_cfa_to_fb_loc_list): Likewise.
19716         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
19717         * dwarf2out.h: Update.
19718         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
19719         (copy_insn_1): Early out for null.
19720         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
19721         and dwarf2out_frame_debug_restore_state.
19722         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
19723         (prologue_insn_hash, epilogue_insn_hash): New.
19724         (free_after_compilation): Adjust freeing accordingly.
19725         (record_insns): Create hash table if needed; push insns into
19726         hash instead of array.
19727         (maybe_copy_epilogue_insn): New.
19728         (contains): Search hash table instead of array.
19729         (sibcall_epilogue_contains): Remove.
19730         (thread_prologue_and_epilogue_insns): Split eh_return insns
19731         and mark them as epilogues.
19732         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
19733         scanning in terms of basic blocks.
19734         * insn-notes.def (CFA_RESTORE_STATE): New.
19735         * jump.c (returnjump_p_1): Accept EH_RETURN.
19736         (eh_returnjump_p_1, eh_returnjump_p): New.
19737         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
19738         CFA_REGISTER, CFA_RESTORE): New.
19739         * rtl.def (EH_RETURN): New.
19740         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
19741
19742         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
19743         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
19744
19745         * config/i386/i386.c (gen_push): Update cfa state.
19746         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
19747         add a CFA_ADJUST_CFA note.
19748         (ix86_dwarf_handle_frame_unspec): Remove.
19749         (ix86_expand_prologue): Update cfa state.
19750         (ix86_emit_restore_reg_using_pop): New.
19751         (ix86_emit_restore_regs_using_pop): New.
19752         (ix86_emit_leave): New.
19753         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
19754         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
19755         * config/i386/i386.h (struct machine_cfa_state): New.
19756         (ix86_cfa_state): New.
19757         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
19758         (eh_return_internal): Merge from eh_return_<mode>,
19759         use eh_return rtx, split w/ epilogue.
19760
19761 2009-05-29  Ian Lance Taylor  <iant@google.com>
19762
19763         * builtins.c (validate_gimple_arglist): Don't use va_arg with
19764         enum type.
19765         * calls.c (emit_library_call_value_1): Likewise.
19766
19767         * c-typeck.c (c_build_va_arg): New function.
19768         * c-tree.h (c_build_va_arg): Declare.
19769         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
19770         instead of build_va_arg.
19771
19772 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
19773
19774         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
19775         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
19776         (ptr_difference_cost): Use affine combinations to compute it.
19777         (difference_cost): Likewise.
19778         (get_computation_cost_at): Compute more accurate cost for addresses
19779         if the ratio is a multiplier allowed in addresses.
19780         For non-addresses, consider that an additional offset or symbol is
19781         added only once.
19782
19783 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
19784
19785         * config/i386/i386.c (ix86_decompose_address): Avoid useless
19786         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
19787
19788         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
19789         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
19790         (prefix_rex): For UNIT_MMX don't imply the prefix by default
19791         if MODE_DI.
19792         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
19793         to 1 for TYPE_SSE{IADD1,CVT1}.
19794         (prefix_vex_imm8): Removed.
19795         (length_vex): Only pass 1 as second argument to
19796         ix86_attr_length_vex_default if prefix_extra is 0.
19797         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
19798         (length): For prefix vex computation use length_immediate
19799         attribute instead of prefix_vex_imm8.
19800         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
19801         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
19802         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
19803         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
19804         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
19805         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
19806         a space in between the operands.
19807         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
19808         if one operand is 0xff and the other one si, di, bp or sp.
19809         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
19810         other one si, di, bp or sp.
19811         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
19812         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
19813         type and mode attributes.
19814         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
19815         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
19816         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
19817         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
19818         prefix_data16 attribute iff MODE_DF.
19819         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
19820         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
19821         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
19822         constm128_operand in length_immediate computation.
19823         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
19824         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
19825         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
19826         length_immediate attribute to 1.
19827         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
19828         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
19829         for certain alternatives.
19830         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
19831         prefix_data16 attribute if MODE_V1DF.
19832         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
19833         length_immediate to 1.
19834         (set_got_rex64, set_rip_rex64): Remove length attribute, set
19835         length_address to 4, set mode attribute to MODE_DI.
19836         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
19837         (fxam<mode>2_i387): Set length attribute to 4.
19838         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
19839         *prefetch_3dnow_rex): Override length_address attribute.
19840         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
19841         attributes.
19842         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
19843         (constm128_operand): Removed.
19844         * config/i386/i386.c (memory_address_length): For
19845         disp && !index && !base in 64-bit mode account for SIB byte if
19846         print_operand_address can't optimize disp32 into disp32(%rip)
19847         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
19848         for fs: or gs: segment.
19849         (ix86_attr_length_immediate_default): When checking if shortform
19850         is possible, truncate immediate to the length of the non-shortened
19851         immediate.
19852         (ix86_attr_length_address_default): Ignore MEM_P operands
19853         with X constraint.
19854         (ix86_attr_length_vex_default): Only check for DImode on
19855         GENERAL_REG_P operands.
19856         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
19857         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
19858         (sse_cvttps2pi): Clear prefix_rep attribute.
19859         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
19860         attribute.
19861         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
19862         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
19863         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
19864         iff operand 2 is const_int_operand.
19865         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
19866         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
19867         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
19868         instead of vex.
19869         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
19870         prefix_data16.
19871         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
19872         prefix_data16 attribute for movlpd and movhpd instructions.
19873         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
19874         length_immediate for shufpd instruction.
19875         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
19876         (avx_cmpp<avxmodesuffixf2c><mode>3,
19877         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
19878         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
19879         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
19880         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
19881         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
19882         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
19883         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
19884         prefix_data16 attribute for the first alternative to 1.
19885         (*avx_loadlps): Override length_immediate for the first alternative.
19886         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
19887         attributes for second alternative.
19888         (*vec_concatv2sf_sse4_1): Override length_immediate and
19889         prefix_data16 attributes for second alternative.
19890         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
19891         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
19892         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
19893         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
19894         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
19895         prefix_data16 and length_immediate to 1.
19896         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
19897         to 1.
19898         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
19899         prefix_extra attribute for variants that don't have 0f prefix alone.
19900         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
19901         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
19902         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
19903         *sse4_1_pextrd): Set length_immediate to 1.
19904         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
19905         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
19906         to 1.
19907         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
19908         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
19909         length_immediate to 1 for second alternative.
19910         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
19911         prefix_extra and length_immediate attributes for the first
19912         alternative.
19913         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
19914         first alternative.
19915         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
19916         to 1 for the first and third alternative.
19917         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
19918         alternative.
19919         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
19920         attribute.
19921         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
19922         attribute to 0.
19923         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
19924         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
19925         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
19926         *avx_psign<mode>3): Set prefix_extra attribute to 1.
19927         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
19928         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
19929         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
19930         ssse3_psign<mode>3): Override prefix_rex attribute.
19931         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
19932         (ssse3_palignrti): Override length_immediate to 1.
19933         (ssse3_palignrdi): Override length_immediate to 1, override
19934         prefix_rex attribute.
19935         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
19936         (sse4a_extrqi): Override length_immediate to 2.
19937         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
19938         (sse4a_insertq): Override prefix_data16 to 0.
19939         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
19940         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
19941         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
19942         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
19943         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
19944         and length_immediate to 1.
19945         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
19946         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
19947         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
19948         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
19949         and length_immediate to 1.
19950         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
19951         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
19952         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
19953         avx_ptest256): Override prefix_extra to 1.
19954         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
19955         Override prefix_data16 and length_immediate to 1.
19956         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
19957         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
19958         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
19959         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
19960         prefix_data16 to 0 and prefix_extra to 2.
19961         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
19962         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
19963         attribute.
19964         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
19965         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
19966         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
19967         and prefix_extra to 2.
19968         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
19969         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
19970         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
19971         avx_vpermilvar<mode>3,
19972         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
19973         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
19974         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
19975         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
19976         Override prefix_extra to 1.
19977         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
19978         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
19979         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
19980         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
19981         prefix_extra and length_immediate to 1.
19982         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
19983         modrm to 0.
19984         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
19985         to 1 for the first alternative.
19986         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
19987         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
19988         cases.
19989         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
19990         *movv2sf_internal_avx, *movv2sf_internal): Override
19991         prefix_rep attribute for certain alternatives.
19992         (*mov<mode>_internal): Override prefix_rep or prefix_data16
19993         attributes for certain alternatives.
19994         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
19995         attributes for certain alternatives.
19996         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
19997         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
19998         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
19999         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
20000         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
20001         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
20002         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
20003         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
20004         length_immediate to 1 if operand 2 is const_int_operand.
20005         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
20006         *vec_extractv2si_1): Set length_immediate attribute to 1.
20007         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
20008         using old 3DNOW insn rather than SSE/3DNOW_A.
20009         (mmx_emms, mmx_femms): Clear modrm attribute.
20010
20011 2009-05-29  Martin Jambor  <mjambor@suse.cz>
20012
20013         * tree-sra.c:  New implementation of SRA.
20014
20015         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
20016         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
20017         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
20018         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
20019         (SRA_MAX_STRUCTURE_COUNT): Removed.
20020         (SRA_FIELD_STRUCTURE_RATIO): Removed.
20021         * doc/invoke.texi (sra-max-structure-size): Removed.
20022         (sra-field-structure-ratio): Removed.
20023
20024 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20025
20026         PR middle-end/40291
20027         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
20028         before expansion.
20029
20030 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
20031
20032         PR rtl-optimization/40101
20033         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
20034         seqno.  Adjust comment.
20035         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when
20036         inserting bookkeeping before a jump, the jump is not scheduled.
20037         When no positive seqno found, provide a value.  Add comment.
20038
20039 2009-05-29  Richard Guenther  <rguenther@suse.de>
20040
20041         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
20042         short-cutting on the first component.
20043
20044 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20045
20046         PR middle-end/39958
20047         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
20048         for trees other than decls/types.
20049
20050 2009-05-29  Richard Guenther  <rguenther@suse.de>
20051
20052         * tree-ssa-operands.c (get_expr_operands): Do not handle
20053         INDIRECT_REFs in the handled-component case.  Remove
20054         unused get_ref_base_and_extent case.
20055         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
20056         tree_low_cst and host_integerp where possible.
20057         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
20058         codes for equivalence.
20059         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
20060
20061 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
20062
20063         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
20064         to tmake_file for i[34567]86-*-cygwin*.
20065
20066 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
20067
20068         PR target/40017
20069         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
20070         (altivec_categorize_keyword, init_vector_keywords,
20071         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
20072         similar to bool.
20073
20074 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
20075
20076         * tree.c (handle_dll_attribute): Check if node is
20077         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
20078
20079 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
20080
20081         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
20082         component.
20083         (thumb2_zero_extendqidi2): Likewise.
20084
20085 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
20086
20087         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
20088         instead of gen_movrt.
20089         * config/sh/sh.md (movrt): Remove.
20090
20091 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
20092
20093         * doc/invoke.texi (IA-64 Options):
20094         Add -msdata, -mfused-madd, -mno-inline-float-divide,
20095         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
20096         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
20097         -msched-prefer-non-control-spec-insns,
20098         -msched-stop-bits-after-every-cycle,
20099         -msched-count-spec-in-critical-path,
20100         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
20101         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
20102         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
20103         and -msched-spec-verbose.
20104
20105 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
20106
20107         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
20108         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
20109         error if used.
20110         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
20111
20112 2009-05-28  Richard Guenther  <rguenther@suse.de>
20113
20114         * tree-ssa-alias.c (ao_ref_init): New function.
20115         (ao_ref_base): Likewise.
20116         (ao_ref_base_alias_set): Likewise.
20117         (ao_ref_alias_set): Likewise.
20118         (refs_may_alias_p_1): Change signature.
20119         (refs_may_alias_p): Adjust.
20120         (refs_anti_dependent_p): Likewise.
20121         (refs_output_dependent_p): Likewise.
20122         (call_may_clobber_ref_p_1): Change signature.
20123         (call_may_clobber_ref_p): Adjust.
20124         (stmt_may_clobber_ref_p_1): New function split out from ...
20125         (stmt_may_clobber_ref_p): ... here.
20126         (maybe_skip_until): Adjust signature.
20127         (get_continuation_for_phi): Likewise.
20128         (walk_non_aliased_vuses): Likewise.
20129         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
20130         (ao_ref_init): Declare.
20131         (ao_ref_base): Likewise.
20132         (ao_ref_alias_set): Likewise.
20133         (stmt_may_clobber_ref_p_1): Likewise.
20134         (walk_non_aliased_vuses): Adjust.
20135         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
20136         (get_ref_from_reference_ops): remove.
20137         (vn_reference_lookup_2): Adjust signature.
20138         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
20139         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
20140         (vn_reference_lookup): Adjust.
20141         (vn_reference_insert): Likewise.
20142         (vn_reference_insert_pieces): Adjust signature.
20143         (visit_reference_op_call): Adjust.
20144         * tree-ssa-pre.c (get_expr_type): Simplify.
20145         (phi_translate_1): Adjust.
20146         (compute_avail): Likewise.
20147         (translate_vuse_through_block): Do not re-build trees.
20148         (value_dies_in_block_x): Likewise.
20149         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
20150         fields.
20151         (vn_reference_lookup_pieces): Adjust declaration.
20152         (vn_reference_insert_pieces): Likewise.
20153
20154 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
20155
20156         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
20157         with checking disabled.
20158
20159 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
20160
20161         PR target/37216
20162
20163         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
20164         macro definition for support of three-operand format aligned
20165         .comm directive in assembler on cygwin/pe/mingw target OS.
20166         * configure:  Regenerate.
20167         * config.h:  Regenerate.
20168
20169         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
20170         aligned form of .comm directive if -mpe-aligned-commons is in effect.
20171         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
20172
20173         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
20174         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
20175
20176 2009-05-28  Ira Rosen  <irar@il.ibm.com>
20177
20178         PR tree-optimization/40254
20179         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
20180         in analysis of basic blocks.
20181
20182 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
20183
20184         PR middle-end/33699
20185         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
20186         * target-def.h (TARGET_CONST_ANCHOR): New macro.
20187         (TARGET_INITIALIZER): Use it.
20188         * cse.c (CHEAPER): Move it up to the other macros.
20189         (insert): Rename this ...
20190         (insert_with_costs): ... to this.  Add cost parameters.  Update
20191         function comment.
20192         (insert): New function.  Call insert_with_costs.
20193         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
20194         find_reg_offset_for_const, try_const_anchors): New functions.
20195         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
20196         when using a const-anchor.  Call insert_const_anchors.
20197         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
20198         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
20199
20200 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20201
20202         * tree-inline.c (remap_decls): Enable nonlocalized variables
20203         when not optimizing.
20204
20205 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
20206
20207         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
20208         Simplify other tests involving optimize.
20209
20210 2009-05-27  Tom Tromey  <tromey@redhat.com>
20211
20212         * unwind-dw2.c (_Unwind_DebugHook): New function.
20213         (uw_install_context): Call _Unwind_DebugHook.
20214
20215 2009-05-27  Tom Tromey  <tromey@redhat.com>
20216
20217         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
20218
20219 2009-05-27  Ian Lance Taylor  <iant@google.com>
20220
20221         * Makefile.in (LINKER, LINKER_FLAGS): Define.
20222         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
20223         (ALL_LINKERFLAGS): Define.
20224         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
20225         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20226         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
20227         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20228         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
20229         $(LINKER_FOR_BUILD).
20230         (build/gcov-iov$(build_exeext)): Likewise.
20231
20232 2009-05-27  Julian Brown  <julian@codesourcery.com>
20233
20234         * gcse.c (target.h): Include.
20235         (can_assign_to_reg_without_clobbers_p): Check that the target allows
20236         copy of argument to a pseudo register.
20237
20238 2009-05-27  Diego Novillo  <dnovillo@google.com>
20239
20240         * tree-ssa-live.c (dump_scope_block): Document arguments.
20241         (dump_scope_blocks): Document.
20242         (debug_scope_blocks): New.
20243         * tree-flow.h (debug_scope_blocks): Declare.
20244
20245 2009-05-21  Denis Chertykov  <denisc@overta.ru>
20246
20247         * doc/contrib.texi (Contributors): Add myself to the list.
20248
20249 2009-05-27  Olivier Hainque  <hainque@adacore.com>
20250
20251         * expr.c (target_align): New function.  Alignment the TARGET of an
20252         assignment may be assume to have.
20253         (highest_pow2_factor_for_target): Use it instead of relying on
20254         immediate tree attributes of TARGET, not necessarily honored when
20255         intermediate bitfields are involved.
20256
20257 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
20258
20259         PR target/40266
20260         * config/i386/driver-i386.c (host_detect_local_cpu): Support
20261         AVX, SSE4, AES, PCLMUL and POPCNT.
20262
20263 2009-05-27  Diego Novillo  <dnovillo@google.com>
20264
20265         * tree-pretty-print.c (dump_location): New.
20266         (dump_generic_node): Call it.
20267         Factor code to handle BLOCK nodes ...
20268         (dump_block_node): ... here.
20269
20270 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
20271
20272         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
20273         with it.
20274         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
20275         included.
20276         * gcc-plugin.h: Include config.h and system.h.
20277         (IN_GCC): Define if not defined.
20278
20279 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
20280
20281         PR middle-end/40249
20282         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
20283         with -fno-inline.
20284
20285 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
20286
20287         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
20288         applicable.
20289         * config/m32r/m32r.h: Ditto.
20290         * config/m32r/m32r.md: Ditto.
20291         * config/m32r/predicates.md: Ditto.
20292
20293 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
20294
20295         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
20296
20297 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
20298
20299         * doc/plugins.texi
20300         (Loading plugins): typo.
20301         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
20302         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20303         (Interacting with the GCC Garbage Collector): Added new section.
20304         (Giving information about a plugin): Added new section for
20305         PLUGIN_INFO.
20306         * ggc.h (ggc_register_root_tab): Added declaration.
20307         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
20308         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
20309         (register_callback): Improved comment in declaration.
20310         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
20311         (extra_root_vec) Added static variable for dynamic roots registration.
20312         (ggc_register_root_tab) Added new routine.
20313         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
20314         PLUGIN_GGC_MARKING event.
20315         * ggc-zone.c: Include plugin.h.
20316         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20317         * ggc-page.c: Include plugin.h.
20318         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
20319         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
20320         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
20321         (register_callback): check lack of callbacks for
20322         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
20323         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
20324         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
20325         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
20326         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
20327         dependency on plugin.h.
20328         (plugin.o): Added dependency on ggc.h...
20329
20330 2009-05-26  Richard Guenther  <rguenther@suse.de>
20331
20332         PR middle-end/40248
20333         Revert
20334         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
20335         with mismatched comparison modes.
20336
20337         * expr.c (expand_expr_real_1): Expand the operand of a
20338         VIEW_CONVERT_EXPR in its natural mode.
20339
20340 2009-05-26  Ian Lance Taylor  <iant@google.com>
20341
20342         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
20343         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
20344         (ALL_COMPILERFLAGS): Define.
20345         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
20346         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
20347         (collect2$(exeext), collect2.o): Likewise.
20348         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
20349         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
20350         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
20351         (libbackend.o, intl.o, cppdefault.o): Likewise.
20352         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
20353         (build/%.o): Use $(COMPILER_FOR_BUILD).
20354         (build/gen%$(build_exeext)): Likewise.
20355         (build/gcov-iov$(build_exeext)): LIkewise.
20356         * config/t-darwin (darwin.o): Use $(COMPILER).
20357         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
20358         * config/t-sol2 (sol2-c.o): Likewise.
20359         (sol2.o): Likewise.
20360         * config/t-vxworks (vxworks.o): Likewise.
20361         * config/x-darwin (host-darwin.o): Likewise.
20362         * config/x-hpux (host-hpux.o): Likewise.
20363         * config/x-linux (host-linux.o): Likewise.
20364         * config/x-solaris (host-solaris.o): Likewise.
20365         * config/alpha/x-alpha (driver-alpha.o): Likewise.
20366         * config/arm/t-arm (arm-c.o): Likewise.
20367         * config/arm/t-pe (pe.o): Likewise.
20368         * config/arm/t-wince-pe (pe.o): Likewise.
20369         * config/i386/t-cygming (winnt.o): Likewise.
20370         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
20371         * config/i386/t-cygwin (cygwin1.o): Likewise.
20372         (cygwin2.o): Likewise.
20373         * config/i386/t-i386 (i386-c.o): Likewise.
20374         * config/i386/t-interix (winnt.o): Likewise.
20375         * config/i386/t-netware (netware.o): Likewise.
20376         * config/i386/t-nwld (nwld.o): Likewise.
20377         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
20378         * config/i386/x-i386 (driver-i386.o): Likewise.
20379         * config/i386/x-cygwin (host-cygwin.o): Likewise.
20380         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
20381         * config/ia64/t-ia64 (ia64-c.o): Likewise.
20382         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
20383         * config/mips/x-native (driver-native.o): Likewise.
20384         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
20385         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
20386         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
20387         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
20388         * config/score/t-score-elf (score7.o): Likewise.
20389         (score3.o): Likewise.
20390         * config/sh/t-sh (sh-c.o): Likewise.
20391         * config/sh/t-symbian (sh-c.o): Likewise.
20392         (symbian.o): Likewise.
20393         * config/spu/t-spu-elf (spu-c.o): Likewise.
20394         * config/v850/t-v850 (v850-c.o): Likewise.
20395         * config/v850/t-v850e (v850-c.o): Likewise.
20396
20397 2009-05-26  Richard Guenther  <rguenther@suse.de>
20398
20399         PR tree-optimization/40122
20400         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
20401         VECTOR_CSTs if possible.
20402         (fold_gimple_assign): Likewise.
20403
20404 2009-05-26  Richard Guenther  <rguenther@suse.de>
20405
20406         PR middle-end/40252
20407         * fold-const.c (fold_binary): Use the correct types for building
20408         rotates.
20409
20410 2009-05-26  Richard Guenther  <rguenther@suse.de>
20411
20412         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
20413         redundant calls to merge_alias_info.
20414         (bump_vector_ptr): Likewise.
20415         * tree-ssa-copy.c (merge_alias_info): Remove.
20416         (replace_exp_1): Remove call to merge_alias_info.
20417         (propagate_tree_value): Likewise.
20418         (fini_copy_prop): Propagate points-to info.
20419         * tree-flow.h (merge_alias_info): Remove.
20420
20421 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
20422
20423         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
20424
20425 2009-05-25  Jan Hubicka  <jh@suse.cz>
20426
20427         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
20428         * cgraph.h (struct inline_summary): New filed self_wize,
20429         size_inlining_benefit, self_time and time_inlining_benefit.
20430         (struct cgraph_global_info): Replace insns by time ans size fields.
20431         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
20432         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
20433         (ipcp_update_callgraph): Do not touch function bodies.
20434         * ipa-inline.c: Include except.h
20435         (MAX_TIME): New constant.
20436         (overall_insns): Remove.
20437         (leaf_node_p): New.
20438         (overall_size, max_benefit): New static variables.
20439         (cgraph_estimate_time_after_inlining): New function.
20440         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
20441         (cgraph_clone_inlined_nodes): Update size.
20442         (cgraph_mark_inline_edge): Update size.
20443         (cgraph_estimate_growth): Use size info.
20444         (cgraph_check_inline_limits): Check size.
20445         (cgraph_default_inline_p): Likewise.
20446         (cgraph_edge_badness): Compute badness based on benefit and size cost.
20447         (cgraph_decide_recursive_inlining): Check size.
20448         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
20449         and times.
20450         (cgraph_decide_inlining): Likewise.
20451         (cgraph_decide_inlining_incrementally): Likewise; honor
20452         PARAM_EARLY_INLINING_INSNS.
20453         (likely_eliminated_by_inlining_p): New predicate.
20454         (estimate_function_body_sizes): New function.
20455         (compute_inline_parameters): Use it.
20456         * except.c (must_not_throw_labels): New function.
20457         * except.h (must_not_throw_labels): Declare.
20458         * tree-inline.c (init_inline_once): Kill inlining_weigths
20459         * tree-ssa-structalias.c: Avoid uninitialized warning.
20460         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
20461         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
20462         (PARAM_INLINE_CALL_COST): Remove.
20463         (PARAM_EARLY_INLINING_INSNS): New.
20464
20465 2009-05-25  Richard Guenther  <rguenther@suse.de>
20466
20467         PR tree-optimization/36327
20468         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
20469         callback for reference translation or lookup at the point of may-defs.
20470         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
20471         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
20472         for union COMPONENT_REFs.
20473         (vn_reference_lookup_3): New callback.  Lookup from memset
20474         and CONSTRUCTOR assignment, translate through struct copies.
20475         (vn_reference_lookup_pieces): Make sure to not free the
20476         passed operands array.  Adjust walk_non_aliased_vuses call.
20477         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
20478         make sure we do not leak memory.
20479
20480 2009-05-25  Richard Guenther  <rguenther@suse.de>
20481
20482         * tree-ssa-alias.h (dump_points_to_solution): Declare.
20483         * tree-inline.c (expand_call_inline): Reset the escaped and
20484         callused solutions.
20485         * tree-ssa-structalias.c (pass_build_ealias): New.
20486         * tree-pass.h (pass_build_ealias): Declare.
20487         * passes.c (init_optimization_passes): Add PTA during
20488         early optimizations.
20489         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
20490         and CALLUSED solutions.
20491         (dump_points_to_solution): New function, split out from ...
20492         (dump_points_to_info_for): ... here.
20493         * tree-parloops.c (parallelize_loops): Reset the escaped and
20494         callused solutions.
20495
20496 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
20497
20498         PR bootstrap/40027
20499         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
20500         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
20501
20502 2009-05-25  Ira Rosen  <irar@il.ibm.com>
20503
20504         PR tree-optimization/40238
20505         * tree-vect-stmts.c (vect_init_vector): Insert initialization
20506         statements after basic block's labels.
20507         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
20508         to free the allocated memory.
20509
20510 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
20511
20512         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
20513         return address with a USE.
20514
20515 2009-05-24  Richard Guenther  <rguenther@suse.de>
20516
20517         PR middle-end/40233
20518         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
20519         array type from the main variant of the inner type.
20520
20521 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
20522
20523         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
20524         definition to bool (from int) to un-break build.
20525         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
20526
20527 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
20528
20529         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
20530         discard_stmt_changes): Delete.
20531         * tree-ssa-operands.c (scb_stack): Delete.
20532         (init_ssa_operands): Do not initialize it.
20533         (fini_ssa_operands): Do not free it.
20534         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
20535
20536         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with
20537         update_stmt, remove the others.  Fix comments.
20538         * tree-dfa.c (optimize_stack_restore): Likewise.
20539         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
20540         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
20541         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
20542         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
20543         Likewise.
20544         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
20545         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
20546         (dom_opt_finalize_block): Likewise, adjusting access to
20547         stmts_to_rescan.
20548         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
20549         (stmts_to_rescan): Change item type to gimple.
20550         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
20551
20552 2009-05-24  Ira Rosen  <irar@il.ibm.com>
20553
20554         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
20555         * tree-pass.h (pass_slp_vectorize): New pass.
20556         * params.h (SLP_MAX_INSNS_IN_BB): Define.
20557         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
20558         * tree-vectorizer.c (timevar.h): Include.
20559         (user_vect_verbosity_level): Declare.
20560         (vect_location): Fix comment.
20561         (vect_set_verbosity_level): Update user_vect_verbosity_level
20562         instead of vect_verbosity_level.
20563         (vect_set_dump_settings): Add an argument. Ignore user defined
20564         verbosity if dump flags require higher level of verbosity. Print to
20565         stderr only for loop vectorization.
20566         (vectorize_loops): Update call to vect_set_dump_settings.
20567         (execute_vect_slp): New function.
20568         (gate_vect_slp): Likewise.
20569         (struct gimple_opt_pass pass_slp_vectorize): New.
20570         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
20571         access its members.
20572         (vec_info_for_bb): New function.
20573         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
20574         (VECTORIZATION_ENABLED): New macro.
20575         (SLP_ENABLED, SLP_DISABLED): Likewise.
20576         (vect_is_simple_use): Add bb_vec_info argument.
20577         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
20578         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
20579         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
20580         vect_schedule_slp, vect_analyze_slp): Likewise.
20581         (vect_analyze_stmt): Add slp_tree argument.
20582         (find_bb_location): Declare.
20583         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
20584         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
20585         (vect_analyze_loop_operations, vect_analyze_loop,
20586         get_initial_def_for_induction, vect_create_epilog_for_reduction,
20587         vect_finalize_reduction, vectorizable_reduction,
20588         vectorizable_live_operation, vect_transform_loop): Likewise.
20589         * tree-data-ref.c (dr_analyze_innermost): Update comment,
20590         skip evolution analysis if analyzing a basic block.
20591         (dr_analyze_indices): Likewise.
20592         (initialize_data_dependence_relation): Skip the test whether the
20593         object is invariant for basic blocks.
20594         (compute_all_dependences): Skip dependence analysis for data
20595         references in basic blocks.
20596         (find_data_references_in_stmt): Don't fail in case of invariant
20597         access in basic block.
20598         (find_data_references_in_bb): New function.
20599         (find_data_references_in_loop): Move code to
20600         find_data_references_in_bb and add a call to it.
20601         (compute_data_dependences_for_bb): New function.
20602         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
20603         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
20604         that STEP is 0.
20605         (vect_analyze_data_ref_dependence): Check for interleaving in case of
20606         unknown dependence in basic block and fail in case of dependence in
20607         basic block.
20608         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
20609         dependence instances from either loop or basic block vectorization
20610         info.
20611         (vect_compute_data_ref_alignment): Check if it is loop vectorization
20612         before calling nested_in_vect_loop_p.
20613         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
20614         dependence instances from either loop or basic block vectorization
20615         info.
20616         (vect_verify_datarefs_alignment): Likewise.
20617         (vect_enhance_data_refs_alignment): Adjust function calls.
20618         (vect_analyze_data_refs_alignment): Likewise.
20619         (vect_analyze_group_access): Fix printing. Skip different checks if
20620         DR_STEP is 0. Keep strided stores either in loop or basic block
20621         vectorization data structure. Fix indentation.
20622         (vect_analyze_data_ref_access): Fix comments, allow zero step in
20623         basic blocks.
20624         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
20625         dependence instances from either loop or basic block vectorization
20626         info.
20627         (vect_analyze_data_refs): Update comment. Call
20628         compute_data_dependences_for_bb to analyze basic blocks.
20629         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
20630         case of loop vectorization. In case of basic block vectorization use
20631         data-ref itself as a base.
20632         (vect_create_data_ref_ptr): In case of basic block vectorization:
20633         don't advance the pointer, add new statements before the current
20634         statement.  Adjust function calls.
20635         (vect_supportable_dr_alignment): Support only aligned accesses in
20636         basic block vectorization.
20637         * common.opt (ftree-slp-vectorize): New flag.
20638         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
20639         (vect_pattern_recog_1): Likewise.
20640         * tree-vect-stmts.c (process_use): Likewise.
20641         (vect_init_vector): Add new statements in the beginning of the basic
20642         block in case of basic block SLP.
20643         (vect_get_vec_def_for_operand): Adjust function calls.
20644         (vect_finish_stmt_generation): Likewise.
20645         (vectorizable_call): Add assert that it is loop vectorization, adjust
20646         function calls.
20647         (vectorizable_conversion, vectorizable_assignment): Likewise.
20648         (vectorizable_operation): In case of basic block SLP, take
20649         vectorization factor from statement's type and skip the relevance
20650         check. Adjust function calls.
20651         (vectorizable_type_demotion): Add assert that it is loop
20652         vectorization, adjust function calls.
20653         (vectorizable_type_promotion): Likewise.
20654         (vectorizable_store): Check for outer loop only in case of loop
20655         vectorization. Adjust function calls. For basic blocks, skip the
20656         relevance check and don't advance pointers.
20657         (vectorizable_load): Likewise.
20658         (vectorizable_condition): Add assert that it is loop vectorization,
20659         adjust function calls.
20660         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
20661         that it is not reduction, get vector type, call only supported
20662         functions, skip loop specific parts.
20663         (vect_transform_stmt): Check for outer loop only in case of loop
20664         vectorization.
20665         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
20666         (vect_is_simple_use): Fix comment, add new argument, fix conditions
20667         for external definition.
20668         * passes.c (pass_slp_vectorize): New pass.
20669         * tree-vect-slp.c (find_bb_location): New function.
20670         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
20671         check for patterns only in loops.
20672         (vect_build_slp_tree): Add argument, adjust function calls, fail in
20673         case of multiple types in basic block SLP.
20674         (vect_mark_slp_stmts_relevant): New function.
20675         (vect_supported_load_permutation_p): Fix comment.
20676         (vect_analyze_slp_instance): Add argument. In case of basic block
20677         SLP, take vectorization factor from statement's type, check that
20678         unrolling factor is 1. Adjust function call. Save SLP instance in
20679         either loop or basic block vectorization structure. Return FALSE,
20680         if SLP failed.
20681         (vect_analyze_slp): Add argument. Get strided stores groups from
20682         either loop or basic block vectorization structure. Return FALSE
20683         if basic block SLP failed.
20684         (new_bb_vec_info): New function.
20685         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
20686         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
20687         (vect_schedule_slp): Add argument. Get SLP instances from either
20688         loop or basic block vectorization structure. Set vectorization factor
20689         to be 1 for basic block SLP.
20690         (vect_slp_transform_bb): New function.
20691         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
20692
20693 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
20694
20695         * final.c (shorten_branches): Do not align labels for jump tables.
20696         (final_scan_insn): Use JUMP_TABLE_DATA_P.
20697
20698 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
20699
20700         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
20701         Remove outdated reference to flow.c and fix nits.
20702         * doc/gccint.texi: Tweak RTL description.
20703         * doc/rtl.texi: Likewise.
20704
20705 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
20706
20707         * config/avr/avr.c: Change my email address.
20708         * config/avr/avr.h: Likewise.
20709         * config/avr/avr.md: Likewise.
20710         * config/avr/avr-protos.h: Likewise.
20711         * config/avr/libgcc.S: Likewise.
20712
20713 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
20714
20715         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
20716         (spu_split_load, spu_split_store): Change return type to int.
20717         (spu_split_convert): Declare.
20718         * config/spu/predicates.md (spu_mem_operand): Remove.
20719         (spu_mov_operand): Update.
20720         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
20721         * config/spu/spu.c (regno_aligned_for_load): Remove.
20722         (reg_aligned_for_addr, spu_expand_load): Define.
20723         (spu_expand_extv): Reimplement and handle MEM.
20724         (spu_expand_insv): Handle MEM.
20725         (spu_sched_reorder): Handle insn's with length 0.
20726         (spu_legitimate_address_p): Reimplement.
20727         (store_with_one_insn_p): Return TRUE for any mode with size
20728         larger than 16 bytes.
20729         (address_needs_split): Define.
20730         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
20731         operands.
20732         (spu_convert_move): Define.
20733         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
20734         (spu_split_store): Change all MEM's to TImode.
20735         (spu_init_expanders): Preallocate registers that correspond to
20736         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
20737         mark_reg_pointer.
20738         (spu_split_convert): Define.
20739         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
20740         (_move<mode>, _movdi, _movti): Update predicate and condition.
20741         (load, store): Change to define_split.
20742         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
20743         extend<mode>ti2.
20744         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
20745         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
20746         define_insn_and_split of lshr<mode>3.
20747         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
20748         (<v>ashr<mode>3_imm): Define.
20749         (extv, extzv, insv): Allow MEM operands.
20750         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
20751         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
20752         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
20753         (_spu_convert2): Change to define_insn_and_split and remove the
20754         corresponding define_peephole2.
20755         (stack_protect_set, stack_protect_test, stack_protect_test_si):
20756         Change predicates to memory_operand.
20757
20758 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20759
20760         * config/arm/thumb2.md: Add 16-bit multiply instructions.
20761
20762 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20763
20764         PR tree-optimization/40219
20765         * tree.c (iterative_hash_expr): Make sure the builtin function is
20766         a normal builtin function and not a front end or back end builtin
20767         before indexing into the built_in_decls array.
20768
20769 2009-05-22  Richard Guenther  <rguenther@suse.de>
20770
20771         PR middle-end/38964
20772         * alias.c (write_dependence_p): Do not use TBAA for answering
20773         anti-dependence or output-dependence.
20774         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
20775         (emit_pointer_definition): Remove.
20776         (emit_alias_warning): Likewise.
20777         (find_what_var_points_to): Remove TBAA pruning code.
20778         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
20779         violations.
20780         (compute_points_to_sets): Remove code computing the set of
20781         dereferenced pointers.
20782         * tree-data-ref.c (dr_may_alias_p): Properly use the split
20783         oracle for querying anti and output dependencies.
20784         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
20785         if TBAA may be applied.
20786         (refs_anti_dependent_p): New function.
20787         (refs_output_dependent_p): Likewise.
20788         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
20789         (refs_output_dependent_p): Likewise.
20790         * doc/tree-ssa.texi (Memory model): New section.
20791         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20792         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20793         * cfgexpand.c (expand_gimple_basic_block): Do not handle
20794         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
20795         * expr.c (expand_expr_real_1): Likewise.
20796         * gimple-low.c (lower_stmt): Likewise.
20797         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
20798         (dump_gimple_cdt): Remove.
20799         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20800         (gimple_size): Likewise.
20801         (walk_gimple_op): Likewise.
20802         (is_gimple_stmt): Likewise.
20803         (walk_stmt_load_store_addr_ops): Likewise.
20804         (gimple_build_cdt): Remove.
20805         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
20806         * gimple.h (gimple_cdt_new_type): Remove.
20807         (gimple_cdt_new_type_ptr): Likewise.
20808         (gimple_cdt_set_new_type): Likewise.
20809         (gimple_cdt_location): Likewise.
20810         (gimple_cdt_location_ptr): Likewise.
20811         (gimple_cdt_set_location): Likewise.
20812         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20813         * tree-cfg.c (remove_useless_stmts_1): Do not handle
20814         GIMPLE_CHANGE_DYNAMIC_TYPE.
20815         (verify_types_in_gimple_stmt): Likewise.
20816         * tree-inline.c (estimate_num_insns): Likewise.
20817         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
20818         (copy_decl_to_var): Likewise.
20819         (copy_result_decl_to_var): Likewise.
20820         * tree-pretty-print.c (dump_generic_node): Do not handle
20821         CHANGE_DYNAMIC_TYPE_EXPR.
20822         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
20823         * tree-ssa-operands.c (get_expr_operands): Likewise.
20824         * tree-ssa-structalias.c (struct variable_info): Remove
20825         no_tbaa_pruning member.
20826         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
20827         (unify_nodes): Do not copy it.
20828         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
20829         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
20830         (set_uids_in_ptset): Do not check it.
20831         (find_what_var_points_to): Likewise.
20832         (compute_tbaa_pruning): Remove.
20833         (compute_points_to_sets): Do not call it.
20834         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
20835         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
20836         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
20837         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
20838         (DECL_NO_TBAA_P): Likewise.
20839         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
20840         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
20841         (expand_omp_atomic_pipeline): Do not set it.
20842         * print-tree.c (print_node): Do not dump it.
20843         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
20844         redundant check.
20845
20846 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
20847
20848         PR target/39856
20849         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
20850         for clobber.
20851
20852 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
20853
20854         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
20855         non-external.
20856
20857 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20858
20859         * Makefile.in (bversion.h, s-bversion): New targets.
20860         (TOPLEV_H): Add bversion.h.
20861         * toplev.h: Include "bversion.h".
20862         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
20863         the __format__ attribute only if compiling with the same version
20864         of GCC as the sources (the "build version").
20865
20866 2009-05-22  Ben Elliston  <bje@au.ibm.com>
20867
20868         * c-format.c (handle_format_attribute): Fix comment typo.
20869
20870 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
20871
20872         PR target/37846
20873         * config/ia64/ia64.opt (mfused-madd): New.
20874         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
20875         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
20876         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
20877         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
20878         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
20879         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
20880         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
20881         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms
20882         instruction if !TARGET_FUSED_MADD.
20883         (fpma, fpms): Remove colon from name.
20884
20885 2009-05-22  Richard Guenther  <rguenther@suse.de>
20886
20887         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
20888         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
20889         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
20890         TARGET_MEM_REF.
20891         (create_expression_by_pieces): Only convert if necessary.
20892         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
20893         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
20894
20895 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
20896
20897         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
20898         regular pattern from a template and rename it ...
20899         (*extzv_truncsi_exts): ... to this.
20900
20901 2009-05-21  Richard Guenther  <rguenther@suse.de>
20902
20903         * cgraph.h (struct cgraph_node): Remove inline_decl member.
20904         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
20905         (cgraph_default_inline_p): Likewise.
20906         (cgraph_decide_inlining_incrementally): Likewise.
20907
20908 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
20909             Uros Bizjak  <ubizjak@gmail.com>
20910
20911         * config/i386/cpuid.h (bit_MOVBE): New.
20912
20913         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
20914
20915         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
20916         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
20917         (ix86_handle_option): Handle OPT_mmovbe.
20918         (ix86_target_string): Add -mmovbe.
20919         (pta_flags): Add PTA_MOVBE.
20920         (processor_alias_table): Add PTA_MOVBE to "atom".
20921         (override_options): Handle PTA_MOVBE.
20922
20923         * config/i386/i386.h (TARGET_MOVBE): New.
20924
20925         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
20926         (*bswapsi_movbe): New.
20927         (*bswapdi_movbe): Likewise.
20928         (bswapdi2): Renamed to ...
20929         (*bswapdi_1): This.
20930         (bswapdi2): New expander.
20931
20932         * config/i386/i386.opt (mmovbe): New.
20933
20934         * doc/invoke.texi: Document -mmovbe.
20935
20936 2009-05-21  Taras Glek  <tglek@mozilla.com>
20937
20938         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
20939         * gcc-plugin.h (plugin_init): Updated signature.
20940         * gcc-plugin.h (plugin_name_args): Moved to this header.
20941         * doc/plugins.texi (plugin_init): Updated documention to reflect
20942         API change.
20943         * doc/plugins.texi (plugin_name_args): Added to documention.
20944
20945 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
20946
20947         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
20948         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
20949
20950 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
20951
20952         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
20953         JUMP_TABLE_DATA_P predicates where applicable.
20954         * config/i386/predicates.md: Ditto.
20955         * config/i386/sse.md: Ditto.
20956
20957 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
20958
20959         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
20960         operand2 -128 override length_immediate attribute to 1.
20961         * config/i386/predicates.md (constm128_operand): New predicate.
20962
20963         * config/i386/i386.c (memory_address_length): Handle %r12
20964         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
20965         also check REGNO.
20966         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
20967         mode look through optional ZERO_EXTEND and SUBREG.
20968         * config/i386/i386.md (R12_REG): New define_constant.
20969         (prefix_data16): For sse unit set also for MODE_TI insns.
20970         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
20971         insns set if operand 1 is ext_QIreg_operand.
20972         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
20973         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
20974         immediate.
20975         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
20976         mode from MODE_DI to MODE_SI.
20977         (movdi_1_rex64): Override modrm and length_immediate attributes
20978         only for movabs (TYPE_IMOV, alternative 2).
20979         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
20980         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
20981         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
20982         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
20983         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
20984         prefix_rex attribute if DImode.
20985         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
20986         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
20987         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
20988         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
20989         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
20990         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
20991         Likewise.  For TYPE_IMOV clear length_immediate attribute.
20992         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
20993         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
20994         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
20995         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
20996         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
20997         or one operand TYPE_ISHIFT.
20998         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
20999         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
21000         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
21001         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
21002         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
21003         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
21004         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
21005         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
21006         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
21007         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
21008         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
21009         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
21010         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
21011         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
21012         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
21013         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
21014         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
21015         set mode attribute, don't override length attribute.
21016         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
21017         to 1.
21018         (return_internal_long): Set length attribute to 2 instead of 1.
21019         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
21020         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
21021         prefix_rex attribute.
21022         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
21023         New predicates.
21024         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
21025
21026 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21027
21028         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
21029
21030 2009-05-20  Ian Lance Taylor  <iant@google.com>
21031
21032         * tree.c (build_tree_list_vec_stat): New function.
21033         (ctor_to_vec): New function.
21034         (build_nt_call_vec): New function.
21035         (build_call_array): Change args to be a const pointer.
21036         (build_call_vec): New function.
21037         * tree.h (build_nt_call_vec): Declare.
21038         (build_tree_list_vec_stat): Declare.
21039         (build_tree_list_vec): Define.
21040         (build_call_array): Update declaration.
21041         (build_call_vec): Declare.
21042         (ctor_to_vec): Declare.
21043         * c-common.c (tree_vector_cache): New static variable.
21044         (make_tree_vector): New function.
21045         (release_tree_vector): New function.
21046         (make_tree_vector_single): New function.
21047         (make_tree_vector_copy): New function.
21048         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
21049         (make_tree_vector_single, make_tree_vector_copy): Declare.
21050         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
21051         (c_parser_expr_list): Don't manage cache here, instead call
21052         make_tree_vector.
21053         (c_parser_release_expr_list): Remove static function.
21054         (c_parser_vec_to_tree_list): Remove static function.
21055         (c_parser_attributes): Call build_tree_list_vec instead of
21056         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
21057         c_parser_release_expr_list.
21058         (c_parser_postfix_expression_after_primary): Likewise.
21059         (c_parser_objc_keywordexpr): Likewise.
21060
21061 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
21062
21063         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
21064         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
21065         TARGET_CONVERT_TO_TYPE.
21066         * hooks.c (hook_tree_const_tree_null): Define.
21067         * hooks.h (hook_tree_const_tree_null): Declare.
21068         * target.h (struct gcc_target):  Add invalid_parameter_type,
21069         invalid_return_type, promoted_type, and convert_to_type fields.
21070         * target-def.h (TARGET_INVALID_PARAMETER_TYPE): Define.
21071         (TARGET_INVALID_RETURN_TYPE): Define.
21072         (TARGET_PROMOTED_TYPE): Define.
21073         (TARGET_CONVERT_TO_TYPE): Define.
21074         (TARGET_INITIALIZER): Update for new fields.
21075         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
21076         (grokparms): Check targetm.invalid_parameter_type.
21077         * c-typeck.c (default_conversion): Check targetm.promoted_type.
21078         * c-convert.c (convert): Check targetm.convert_to_type.
21079
21080 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
21081
21082         * config/mips/mips.md (*extenddi_truncate<mode>,
21083         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
21084         defintions.
21085         (*extendhi_truncateqi): New define_insn_and_sptit.
21086
21087 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
21088
21089         PR middle-end/40204
21090         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
21091         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
21092
21093 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
21094
21095         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
21096         the operand of VIEW_CONVERT_EXPR.
21097
21098 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
21099
21100         * config/i386/driver-i386.c (host_detect_local_cpu): Check
21101         extended family and model for Intel processors.  Support Intel Atom.
21102
21103 2009-05-20  Olivier Hainque  <hainque@adacore.com>
21104
21105         * gstab.h (stab_code_type): Define, to be used instead of the
21106         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
21107         notice.
21108         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
21109         occurrences by stab_code_type.
21110         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
21111
21112 2009-05-20  Martin Jambor  <mjambor@suse.cz>
21113
21114         * tree-flow.h (insert_edge_copies_seq): Undeclare.
21115         (sra_insert_before): Likewise.
21116         (sra_insert_after): Likewise.
21117         (sra_init_cache): Likewise.
21118         (sra_type_can_be_decomposed_p): Likewise.
21119         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
21120         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
21121         (sra_insert_before): Likewise.
21122         (sra_insert_after): Likewise.
21123         (sra_init_cache): Likewise.
21124         (insert_edge_copies_seq): Made static and moved upwards.
21125
21126         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
21127         case.
21128
21129         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
21130
21131         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
21132         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
21133         simple copies.
21134
21135 2009-05-20  Richard Guenther  <rguenther@suse.de>
21136
21137         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
21138         with mismatched comparison modes.
21139
21140 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
21141
21142         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
21143         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
21144         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
21145         with shifts for Thumb2.
21146         (orsi_notsi): New for orn.
21147         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
21148         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
21149         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
21150         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
21151         Don't invert remainder for IOR.
21152
21153 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
21154
21155         PR tree-optimization/40087
21156         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
21157         number_of_iterations_ne): Rename never_infinite argument.
21158         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
21159         number_of_iterations_le): Handle pointer-type ivs when
21160         exit_must_be_taken is false.
21161         (number_of_iterations_cond):  Do not always assume that
21162         exit_must_be_taken if the control variable is a pointer.
21163
21164 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
21165
21166         * c-typeck.c (build_binary_op): Allow % on integal vectors.
21167         * doc/extend.texi (Vector Extension): Document that % is allowed too.
21168
21169 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
21170
21171         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
21172         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
21173
21174 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21175
21176         PR c/40172
21177         * c.opt (Wlogical-op): Disabled by default.
21178         * c-opt (c_common_post_options): Do not enable Wlogical-op with
21179         Wextra.
21180         * doc/invoke.texi (Wlogical-op): Likewise.
21181
21182 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
21183
21184         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
21185         into CASE_CONVERT.
21186         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
21187         Propagate the type of the first operand.
21188         <ASSERT_EXPR>: Simplify.
21189         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
21190         Rewrite using the RHS code as discriminant.
21191         <NOP_EXPR>: Turn into CASE_CONVERT.
21192         <PLUS_EXPR>: Propagate the type of the first operand.
21193
21194 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
21195
21196         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
21197         (ia64_dconst_0_375): New.
21198         * config/ia64/ia64.c (ia64_override_options): Remove
21199         -minline-sqrt-min-latency warning.
21200         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
21201         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
21202         * config/ia64/ia64.md (*sqrt_approx): Remove.
21203         (sqrtsf2): Remove #if 0.
21204         (sqrtsf2_internal_thr): Rewrite and move to div.md.
21205         (sqrtdf): Remove assert.
21206         (sqrtdf2_internal_thr): Rewrite and move to div.md.
21207         (sqrtxf2): Remove #if 0.
21208         (sqrtxf2_internal_thr): Rewrite and move to div.md.
21209         * div.md (sqrt_approx_rf): New.
21210         (sqrtsf2_internal_thr): New implementation.
21211         (sqrtsf2_internal_lat): New.
21212         (sqrtdf2_internal_thr: New implementation.
21213         (sqrtxf2_internal): New implementation.
21214
21215 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21216             Hans-Peter Nilsson  <hp@axis.com>
21217
21218         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
21219         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
21220         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
21221         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
21222         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
21223         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
21224         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
21225         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
21226         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
21227         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
21228         * c-common.c: ...from here.
21229
21230 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21231
21232         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
21233
21234 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21235
21236         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
21237
21238 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21239
21240         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
21241         assignments with memcpy calls.
21242         (add_fdes): Likewise.
21243         (binary_search_unencoded_fdes): Likewise.
21244         (linear_search_fdes): Eliminate type puns.
21245
21246 2009-05-19  Richard Guenther  <rguenther@suse.de>
21247
21248         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
21249         not falsely claim to have propagated into all uses.
21250
21251 2009-05-19  Ben Elliston  <bje@au.ibm.com>
21252
21253         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
21254         version to v3.0.
21255
21256 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21257
21258         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
21259         * config/sh/sh.c (sh_legitimate_address_p): Make static.
21260         (TARGET_LEGITIMATE_ADDRESS_P): New.
21261         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21262         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21263
21264 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
21265
21266         PR debug/40109
21267         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
21268         child of the containing namespace's DIE.
21269
21270 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
21271
21272         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
21273         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
21274         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
21275         extend patterns.
21276
21277 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
21278
21279         PR target/39942
21280         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
21281         gen_align with gen_pad.
21282         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
21283         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
21284
21285         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
21286         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
21287
21288         * config/i386/i386.md (align): Renamed to ...
21289         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
21290         ASM_OUTPUT_MAX_SKIP_PAD.
21291
21292 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
21293
21294         * config.gcc: Fix variable syntax.
21295
21296         PR target/39531
21297         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
21298         before calling exact_log2.
21299         (output_iorsi3): Likewise.
21300         (output_xorsi3): Likewise.
21301
21302 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
21303
21304         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
21305         for the none zero constant operand except for EQ and NE
21306         comprisons even when the first operand is R0.
21307
21308 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
21309
21310         * config/s390/2064.md: Remove trailing whitespaces.
21311         * config/s390/2084.md: Likewise.
21312         * config/s390/constraints.md: Likewise.
21313         * config/s390/fixdfdi.h: Likewise.
21314         * config/s390/libgcc-glibc.ver: Likewise.
21315         * config/s390/s390-modes.def: Likewise.
21316         * config/s390/s390-protos.h: Likewise.
21317         * config/s390/s390.c: Likewise.
21318         * config/s390/s390.h: Likewise.
21319         * config/s390/s390.md: Likewise.
21320         * config/s390/tpf-unwind.h: Likewise.
21321
21322 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21323
21324         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
21325
21326 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
21327
21328         M68K TLS support.
21329         * configure.ac (m68k-*-*): Check if binutils support TLS.
21330         * configure: Regenerate.
21331         * config/m68k/predicates.md (symbolic_operand): Extend comment.
21332         * config/m68k/constraints.md (Cu): New constraint.
21333         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
21334         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
21335         (movsi): Handle TLS symbols.
21336         (addsi3_5200): Handle XTLS symbols, indent.
21337         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
21338         (m68k_tls_reference_p): Declare.
21339         (m68k_legitimize_address): Declare.
21340         (m68k_unwrap_symbol): Declare.
21341         * config/m68k/m68k.opt (mxtls): New option.
21342         * config/m68k/m68k.c (ggc.h): Include.
21343         (m68k_output_dwarf_dtprel): Implement hook.
21344         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
21345         (m68k_expand_prologue): Load GOT pointer when function needs it.
21346         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
21347         (m68k_legitimate_constant_address_p): Same.
21348         (m68k_decompose_address): Handle TLS references.
21349         (m68k_get_gp): New static function.
21350         (enum m68k_reloc): New contants.
21351         (TLS_RELOC_P): New macro.
21352         (m68k_wrap_symbol): New static function.
21353         (m68k_unwrap_symbol): New function.
21354         (m68k_final_prescan_insn_1): New static function.
21355         (m68k_final_prescan_insn): New function.
21356         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
21357         functions.
21358         (legitimize_pic_address): Handle TLS references..
21359         (m68k_tls_get_addr, m68k_get_tls_get_addr)
21360         (m68k_libcall_value_in_a0_p)
21361         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
21362         (m68k_call_m68k_read_tp): Helper variables and functions for ...
21363         (m68k_legitimize_tls_address): Handle TLS references.
21364         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
21365         New functions.
21366         (m68k_legitimize_address): Handle TLS symbols.
21367         (m68k_get_reloc_decoration): New static function.
21368         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
21369         UNSPEC_RELOC32.
21370         (m68k_output_dwarf_dtprel): Implement hook.
21371         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
21372         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
21373         m68k_call_* routines.
21374         (sched_attr_op_type): Handle TLS symbols.
21375         (gt-m68k.h): Include.
21376         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
21377         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
21378
21379 2009-05-18  Martin Jambor  <mjambor@suse.cz>
21380
21381         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
21382         (visit_store_addr_for_mod_analysis): New function.
21383         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
21384         (determine_cst_member_ptr): Use gimple_assign_single_p.
21385         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
21386         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
21387         operands.  Don't check number of operands of a NOP_EXPR.
21388
21389 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
21390
21391         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
21392
21393 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21394
21395         PR c/40172
21396         * c-common.c (warn_logical_operator): Don't warn if one of
21397         expression isn't always true or false.
21398
21399 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
21400
21401         * config/i386/biarch32.h: New file.
21402         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
21403
21404 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
21405
21406         * config/mips/mips.md (*zero_extend<mode>_trunchi,
21407         *zero_extend<mode>_truncqi): Merge these into ...
21408         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
21409         Name the pattern following this as *zero_extendhi_truncqi.
21410
21411 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
21412
21413         PR middle-end/39301
21414         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
21415         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
21416         (output_info): Make field HOST_WIDEST_INT.
21417         (print_statistics): Use HOST_WIDEST_INT_PRINT.
21418         (dump_bitmat_statistics): Same.
21419
21420 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
21421
21422         * config.gcc (use_gcc_stdint):  Set to wrap.
21423         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
21424         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
21425         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
21426         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
21427         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
21428         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
21429         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
21430         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
21431
21432 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
21433
21434         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
21435         tune_64.
21436         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
21437         Move definitions earlier.
21438         (OPT_ARCH64, OPT_ARCH32): Define.
21439         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
21440         and tune_64.
21441
21442 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21443
21444         PR target/40153
21445         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
21446         implies.
21447
21448 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
21449
21450         * arm.md (movdi2): Copy non-reg values to DImode registers.
21451
21452 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
21453
21454         PR target/39942
21455         * final.c (label_to_max_skip): New function.
21456         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
21457         CODE_LABEL_NUMBER <= max_labelno.
21458         * output.h (label_to_max_skip): New prototype.
21459         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
21460         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
21461         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
21462         Handle CODE_LABELs with >= 16 byte alignment or with
21463         max_skip == (1 << align) - 1.
21464         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
21465         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
21466
21467         PR target/39942
21468         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
21469         .p2align 3 if MAX_SKIP is smaller than 7.
21470         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
21471
21472 2009-05-15  Ian Lance Taylor  <iant@google.com>
21473
21474         * alias.c (struct alias_set_entry_d): Rename from struct
21475         alias_set_entry.  Change all uses.
21476         * except.c (struct call_site_record_d): Rename from struct
21477         call_site_record.  Change all uses.
21478         * except.h (struct eh_region_d): Rename from struct eh_region.
21479         Change all uses.
21480         * gcse.c (struct hash_table_d): Rename from struct hash_table.
21481         Change all uses.
21482         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
21483         ivtype_map_elt.  Change all uses.
21484         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
21485         Change all uses.
21486         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
21487         * graphite.h (struct name_tree_d): Rename from struct name_tree.
21488         Change all uses.
21489         (struct sese_d): Rename from struct sese.  Change all uses.
21490         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
21491         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
21492         * optabs.h (struct optab_d): Rename from struct optab.  Change all
21493         uses.
21494         (struct convert_optab_d): Rename from struct convert_optab.
21495         Change all uses.
21496         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
21497         ipa_opt_pass.  Change all uses.
21498         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
21499         all uses.
21500
21501         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
21502         defined as a typedef.
21503         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
21504         defined as a tag.
21505
21506 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21507
21508         PR 16302
21509         * fold-const.c (make_range,build_range_check,merge_ranges): Move
21510         declaration to...
21511         (merge_ranges): Returns bool.
21512         * tree.h (make_range): .. to here.
21513         (build_range_check): Likewise.
21514         (merge_ranges): Likewise. Renamed from merge_ranges.
21515         * c-typeck.c (parser_build_binary_op): Update calls to
21516         warn_logical_operator.
21517         * c-common.c (warn_logical_operator): Add new warning.
21518         * c-common.h (warn_logical_operator): Update declaration.
21519
21520 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
21521
21522         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
21523
21524 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
21525
21526         * doc/install.texi: Document MPC requirements, flags etc.
21527
21528         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
21529         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
21530         Evaluate constant arguments.
21531         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
21532         (fold_builtin_1): Likewise, also evaluate constant arguments.
21533         Remove superfluous break.
21534         (do_mpc_ckconv): New.
21535         * real.h: Include mpc.h.
21536         * toplev.c (print_version): Output MPC version info if available.
21537
21538 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21539
21540         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
21541
21542 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
21543
21544         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
21545         only once.
21546
21547 2009-05-15  Jan Hubicka  <jh@suse.cz>
21548
21549         * doc/invoke.texi (max-early-inliner-iterations): New flag.
21550         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
21551         (try_inline): Fix return value.
21552         (cgraph_decide_inlining_incrementally): Honor new value.
21553         (cgraph_early_inlining): Handle indirect inlining.
21554         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
21555
21556 2009-05-15  Jan Hubicka  <jh@suse.cz>
21557
21558         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
21559         * cgraphunit.c (cgraph_finalize_function): Set it.
21560         (cgraph_expand_function): Use it.
21561
21562 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21563
21564         * real.c (encode_ieee_half): Define.
21565         (decode_ieee_half): Define.
21566         (ieee_half_format): Define.
21567         (arm_half_format): Define.
21568         * real.h (ieee_half_format): Declare.
21569         (arm_half_format): Declare.
21570
21571 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
21572
21573         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
21574         swapped, and reversed optabs exist before trying to use them.
21575
21576 2009-05-15  Paul Brook  <paul@codesourcery.com>
21577             Sandra Loosemore  <sandra@codesourcery.com>
21578
21579         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
21580         loads.  Allow PRE_DEC.
21581         (output_move_neon): Handle PRE_DEC.
21582         (arm_print_operand): Add 'A' for neon structure loads.
21583         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
21584         * config/arm/neon.md (neon_mov): Update comment.
21585         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
21586         calls.
21587         (Um): New constraint.
21588
21589 2009-05-15  Jan Hubicka  <jh@suse.cz>
21590
21591         Revert the following patch until testsuite fallout is fixed:
21592         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21593         * cgraph.h (struct inline_summary): New filed self_wize,
21594         size_inlining_benefit, self_time and time_inlining_benefit.
21595         (struct cgraph_global_info): Replace insns by time ans size fields.
21596         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21597         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21598         (ipcp_update_callgraph): Do not touch function bodies.
21599         * ipa-inline.c: Include except.h
21600         (MAX_TIME): New constant.
21601         (overall_insns): Remove
21602         (overall_size, max_benefit): New static variables.
21603         (cgraph_estimate_time_after_inlining): New function.
21604         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21605         (cgraph_clone_inlined_nodes): Update size.
21606         (cgraph_mark_inline_edge): Update size.
21607         (cgraph_estimate_growth): Use size info.
21608         (cgraph_check_inline_limits): Check size.
21609         (cgraph_default_inline_p): Likewise.
21610         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21611         (cgraph_decide_recursive_inlining): Check size.
21612         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21613         and times.
21614         (cgraph_decide_inlining): Likewise.
21615         (cgraph_decide_inlining_incrementally): Likewise; honor
21616         PARAM_EARLY_INLINING_INSNS.
21617         (likely_eliminated_by_inlining_p): New predicate.
21618         (estimate_function_body_sizes): New function.
21619         (compute_inline_parameters): Use it.
21620         * except.c (must_not_throw_labels): New function.
21621         * except.h (must_not_throw_labels): Declare.
21622         * tree-inline.c (init_inline_once): Kill inlining_weigths
21623         * tree-ssa-structalias.c: Avoid uninitialized warning.
21624         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21625         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21626         (PARAM_INLINE_CALL_COST): Remove.
21627         (PARAM_EARLY_INLINING_INSNS): New.
21628
21629 2009-05-15  Richard Guenther  <rguenther@suse.de>
21630
21631         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
21632         not TODO_update_ssa.
21633
21634 2009-05-15  Richard Guenther  <rguenther@suse.de>
21635
21636         PR tree-optimization/39999
21637         * gimple.h (gimple_expr_type): Use the expression type looking
21638         through useless conversions.
21639         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
21640         (vn_nary_op_insert_stmt): Likewise.
21641         (simplify_binary_expression): Likewise.
21642
21643 2009-05-15  Richard Guenther  <rguenther@suse.de>
21644
21645         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21646         New options, enabled by default.
21647         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
21648         Document.
21649         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
21650         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
21651         * tree-ssa-structalias.c (gate_tree_pta): New function.
21652         (pass_build_alias): Use it.
21653
21654 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
21655
21656         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
21657         recurse on an invariant address if a conversion from a pointer
21658         type to a wider integer type is involved.
21659
21660 2009-05-15  Jan Hubicka  <jh@suse.cz>
21661
21662         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
21663         * cgraph.h (struct inline_summary): New filed self_wize,
21664         size_inlining_benefit, self_time and time_inlining_benefit.
21665         (struct cgraph_global_info): Replace insns by time ans size fields.
21666         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
21667         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
21668         (ipcp_update_callgraph): Do not touch function bodies.
21669         * ipa-inline.c: Include except.h
21670         (MAX_TIME): New constant.
21671         (overall_insns): Remove
21672         (overall_size, max_benefit): New static variables.
21673         (cgraph_estimate_time_after_inlining): New function.
21674         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
21675         (cgraph_clone_inlined_nodes): Update size.
21676         (cgraph_mark_inline_edge): Update size.
21677         (cgraph_estimate_growth): Use size info.
21678         (cgraph_check_inline_limits): Check size.
21679         (cgraph_default_inline_p): Likewise.
21680         (cgraph_edge_badness): Compute badness based on benefit and size cost.
21681         (cgraph_decide_recursive_inlining): Check size.
21682         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
21683         and times.
21684         (cgraph_decide_inlining): Likewise.
21685         (cgraph_decide_inlining_incrementally): Likewise; honor
21686         PARAM_EARLY_INLINING_INSNS.
21687         (likely_eliminated_by_inlining_p): New predicate.
21688         (estimate_function_body_sizes): New function.
21689         (compute_inline_parameters): Use it.
21690         * except.c (must_not_throw_labels): New function.
21691         * except.h (must_not_throw_labels): Declare.
21692         * tree-inline.c (init_inline_once): Kill inlining_weigths
21693         * tree-ssa-structalias.c: Avoid uninitialized warning.
21694         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
21695         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
21696         (PARAM_INLINE_CALL_COST): Remove.
21697         (PARAM_EARLY_INLINING_INSNS): New.
21698         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
21699         (inline-call-cost): Remove.
21700         (early-inlining-insns): New.
21701
21702 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
21703
21704         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
21705         for bounds.
21706         (print_int_cst_bounds_in_octal_p): Likewise.
21707         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
21708         with subtypes.
21709         * dwarf2out.c (base_type_die): Likewise.
21710         (is_subrange_type): Delete.
21711         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
21712         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
21713         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
21714         if the destination type is boolean.
21715         (build_range_check): Do not special-case subtypes.
21716         (fold_sign_changed_comparison): Likewise.
21717         (fold_unary): Likewise.
21718         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
21719         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
21720         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
21721         * tree.c (subrange_type_for_debug_p): New predicate based on the
21722         former is_subrange_type.
21723         * tree.h (subrange_type_for_debug_p): Declare.
21724         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
21725         (convert_affine_scev): Remove call to above function.
21726         (chrec_convert_aggressive): Likewise.
21727         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
21728         false for conversions involving subtypes.
21729         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
21730         (vrp_val_min): Likewise.
21731         (needs_overflow_infinity): Likewise.
21732         (extract_range_from_unary_expr): Likewise.
21733
21734 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
21735
21736         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
21737         * config/frv/frv.c: Likewise.
21738         * config/s390/s390.c: Likewise.
21739         * config/sparc/sparc.h: Likewise.
21740         * config/i386/i386.h: Likewise.
21741         * config/i386/i386.c: Likewise.
21742         * config/crx/crx.c: Likewise.
21743         * config/m68hc11/m68hc11.h: Likewise.
21744         * config/iq2000/iq2000.c: Likewise.
21745         * config/mn10300/mn10300.h: Likewise.
21746         * config/mn10300/mn10300.c: Likewise.
21747         * config/m68k/m68k.c: Likewise.
21748         * config/rs6000/rs6000.c: Likewise.
21749         * config/rs6000/xcoff.h: Likewise.
21750         * config/rs6000/linux64.h: Likewise.
21751         * config/rs6000/sysv4.h: Likewise.
21752         * config/score/score3.c: Likewise.
21753         * config/score/score7.c: Likewise.
21754         * config/score/score.c: Likewise.
21755         * config/arm/arm.md: Likewise.
21756         * config/mips/mips.c: Likewise.
21757         * config/mips/mips.md: Likewise.
21758         * config/bfin/bfin.h: Likewise.
21759         * config/pa/pa.c: Likewise.
21760         * config/pa/constraints.md: Likewise.
21761
21762         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
21763         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
21764         * config/pdp11/pdp11.h: Use memory_address_p instead.
21765
21766 2009-05-14  Ian Lance Taylor  <iant@google.com>
21767
21768         * passes.c (finish_optimization_passes): Change i to int.
21769         * plugin.c (plugins_active_p): Change event to int.
21770         (dump_active_plugins): Likewise.
21771         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
21772         Add cast.
21773         * tree.c (tree_range_check_failed): Change c to unsigned int.
21774         (omp_clause_range_check_failed): Likewise.
21775         (build_common_builtin_nodes): Change mode to int.  Add cast.
21776         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
21777         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
21778
21779         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
21780         ++ or -- with a variable of enum type.
21781
21782 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21783
21784         PR driver/40144
21785         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
21786
21787 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21788
21789         * store-motion.c: Do not include params.h
21790         * Makefile.in: Fix dependencies for various files.
21791
21792 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
21793
21794         * auto-inc-dec.c: Fix pass description, remove apparent
21795         accidental duplication.
21796
21797 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
21798
21799         PR middle-end/40147
21800         * ipa-utils.h (memory_identifier_string): Moved to ...
21801         * tree.h (memory_identifier_string): Here.  Add GTY(()).
21802
21803 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21804
21805         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
21806         in the former documentation of...
21807         (GO_IF_LEGITIMATE_ADDRESS): ... this.
21808         * ira-conflicts.c (get_dup_num): Use address_operand.
21809         * targhooks.c (default_legitimate_address_p): New.
21810         * targhooks.h (default_legitimate_address_p): New.
21811         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
21812         Call hook.
21813         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
21814         * target.h (struct target): Add legitimate_address_p.
21815         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
21816         (TARGET_INITIALIZER): Include it.
21817
21818         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21819         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
21820         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
21821         (TARGET_LEGITIMATE_ADDRESS_P): New.
21822
21823         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21824         (REG_OK_STRICT_P): Delete.
21825         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
21826         (frv_legitimate_address_p_1): ... this.
21827         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
21828         (frv_legitimate_address_p_1): ... the renamed old
21829         frv_legitimate_address_p.
21830         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
21831         (TARGET_LEGITIMATE_ADDRESS_P): New.
21832
21833         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21834         * config/s390/s390-protos.h (legitimate_address_p): Remove.
21835         * config/s390/s390.c (legitimate_address_p): Rename to...
21836         (s390_legitimate_address_p): ... this, make static.
21837         (legitimize_address): Adjust call.
21838         (TARGET_LEGITIMATE_ADDRESS_P): New.
21839         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
21840
21841         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21842         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
21843         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
21844         (TARGET_LEGITIMATE_ADDRESS_P): New.
21845
21846         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21847         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
21848         * config/spu/spu.c (spu_legitimate_address): Rename to...
21849         (spu_legitimate_address_p): ... this, make static.
21850         (TARGET_LEGITIMATE_ADDRESS_P): New.
21851
21852         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21853         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
21854         * config/sparc/sparc.c (legitimate_address_p): Rename to...
21855         (sparc_legitimate_address_p): ... this, make static and return bool.
21856         (legitimize_address): Adjust call.
21857         (TARGET_LEGITIMATE_ADDRESS_P): New.
21858
21859         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21860         * config/i386/i386-protos.h (legitimate_address_p): Remove.
21861         * config/i386/i386.c (legitimate_address_p): Rename to...
21862         (ix86_legitimate_address_p): ... this, make static.
21863         (constant_address_p): Move after it, adjust call.
21864         (TARGET_LEGITIMATE_ADDRESS_P): New.
21865
21866         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21867         * config/avr/avr-protos.h (legitimate_address_p): Remove.
21868         * config/avr/avr.c (legitimate_address_p): Rename to...
21869         (avr_legitimate_address_p): ... this, make static.
21870         (legitimize_address): Adjust call.
21871         (TARGET_LEGITIMATE_ADDRESS_P): New.
21872
21873         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21874         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
21875         * config/crx/crx.c (crx_legitimate_address_p): Make static.
21876         (TARGET_LEGITIMATE_ADDRESS_P): New.
21877
21878         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21879         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
21880         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
21881         (TARGET_LEGITIMATE_ADDRESS_P): New.
21882
21883         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21884         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
21885         Remove.
21886         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
21887         Make static.
21888         (TARGET_LEGITIMATE_ADDRESS_P): New.
21889
21890         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21891         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
21892         Remove.
21893         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
21894         Rename to...
21895         (m68hc11_legitimate_address_p): ... this, make static.
21896         (go_if_legitimate_address_internal): Rename to...
21897         (m68hc11_legitimate_address_p_1): ... this.
21898         (legitimize_address): Adjust call.
21899         (TARGET_LEGITIMATE_ADDRESS_P): New.
21900
21901         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21902         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
21903         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
21904         (TARGET_LEGITIMATE_ADDRESS_P): New.
21905
21906         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21907         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
21908         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
21909         (mn10300_legitimate_address_p): ... this, make static.
21910         (TARGET_LEGITIMATE_ADDRESS_P): New.
21911
21912         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21913         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
21914         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
21915         (TARGET_LEGITIMATE_ADDRESS_P): New.
21916
21917         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21918         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
21919         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
21920         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21921         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
21922         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
21923         (rs6000_legitimate_address_p): ... this, make static.
21924         (TARGET_LEGITIMATE_ADDRESS_P): New.
21925         (REG_MODE_OK_FOR_BASE_P): Delete.
21926         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
21927
21928         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21929         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
21930         Delete.
21931         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
21932         static, adjust types.
21933         (TARGET_LEGITIMATE_ADDRESS_P): New.
21934
21935         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21936         * config/score/score.c (score_address_p): Rename to...
21937         (score_legitimate_address_p): ... this.
21938         (TARGET_LEGITIMATE_ADDRESS_P): New.
21939         * config/score/score3.c (score3_address_p): Rename to...
21940         (score3_legitimate_address_p): ... this.
21941         * config/score/score7.c (score7_address_p): Rename to...
21942         (score7_legitimate_address_p): ... this.
21943
21944         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
21945         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
21946         GO_IF_LEGITIMATE_ADDRESS): Delete.
21947         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
21948         thumb2_legitimate_address_p): Delete.
21949         (arm_legitimate_address_p): Rename to...
21950         (arm_legitimate_address_outer_p): ... this.
21951         * config/arm/constraints.md ("Uq"): Adjust call.
21952         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
21953         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
21954         to...
21955         (arm_legitimate_address_outer_p): ... this.
21956         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
21957         static.
21958         (TARGET_LEGITIMATE_ADDRESS_P): New.
21959
21960         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21961         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
21962         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
21963         (TARGET_LEGITIMATE_ADDRESS_P): New.
21964
21965         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21966         * config/vax/vax-protos.h (legitimate_address_p): Remove.
21967         * config/vax/vax.c (legitimate_address_p): Rename to...
21968         (vax_legitimate_address_p): ... this, make static.
21969         (TARGET_LEGITIMATE_ADDRESS_P): New.
21970
21971         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21972         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
21973         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
21974         (TARGET_LEGITIMATE_ADDRESS_P): New.
21975
21976         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21977         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
21978         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
21979         (mmix_legitimate_address_p): ... this, make static.
21980         (TARGET_LEGITIMATE_ADDRESS_P): New.
21981
21982         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
21983         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
21984         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
21985         (TARGET_LEGITIMATE_ADDRESS_P): New.
21986
21987 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
21988
21989         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
21990         of MODE_COMPLEX_INT.
21991
21992 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
21993
21994         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
21995         LCT_NORMAL in function call.
21996         * mips-tdump.c (print_file_desc): Add cast to enum type.
21997         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
21998         (mark_stabs): Add casts to enum types.
21999         (parse_stabs_common): Add casts to enum types.
22000
22001 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22002
22003         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
22004         Check for invalid values of LETTER.
22005
22006 2009-05-13  Taras Glek  <tglek@mozilla.com>
22007
22008         * attribs.c (register_attribute): moved out attribute registration
22009         into register_attribute.
22010         * doc/plugins.texi: Documented register_attribute and
22011         PLUGIN_ATTRIBUTES.
22012         * gcc-plugin.h: Added forward decl for register_attribute.
22013         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
22014         * plugin.c (register_callback, invoke_plugin_callbacks): Added
22015         PLUGIN_ATTRIBUTES boilerplate.
22016
22017 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
22018
22019         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
22020         values even in sentinel and empty entries.
22021         (ms_printf_flag_specs):  Likewise.
22022         (ms_scanf_flag_specs):  Likewise.
22023         (ms_strftime_flag_specs):  Likewise.
22024         (ms_print_char_table):  Likewise.
22025         (ms_scan_char_table):  Likewise.
22026         (ms_time_char_table):  Likewise.
22027
22028 2009-05-13  Doug Kwan  <dougkwan@google.com>
22029
22030         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
22031
22032 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
22033
22034         * config/mips/mips.md (store): Add attributes for QI and HI.
22035         Update comment.
22036         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
22037         (truncdi<mode>2): ... this new pattern.
22038
22039 2009-05-13  Brad Hards  <bradh@kde.org>
22040
22041         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
22042
22043 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
22044             Ben Elliston <bje@au.ibm.com>
22045
22046         PR middle-end/40035
22047         * dse.c (check_mem_read_rtx): Guard against width == -1.
22048
22049 2009-05-13  Michael Matz  <matz@suse.de>
22050
22051         PR middle-end/39976
22052         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
22053         (trivially_conflicts_p): New function.
22054         (insert_backedge_copies): Use it.
22055
22056 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
22057
22058         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
22059         (handle_stdc_pragma): Use new enum constant names.
22060         (handle_pragma_float_const_decimal64): Ditto.
22061
22062 2009-05-13  Ian Lance Taylor  <iant@google.com>
22063
22064         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
22065         tree.def.
22066
22067 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
22068
22069         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
22070         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
22071         multilibs.
22072         * config/m68k/m68k.h (FL_UCLINUX): Define.
22073
22074 2009-05-13  Jan Hubicka  <jh@suse.cz>
22075
22076         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
22077
22078 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22079
22080         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
22081         unless -fschedule-insns is specified.
22082
22083 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22084
22085         PR target/39561
22086         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set
22087         TARGET_EXPAND_CBRANCHDI4.
22088         * config/sh/sh.md (cbranchdi4): Don't check TARGET_EXPAND_CBRANCHDI4.
22089         * config/sh/sh.opt (mexpand-cbranchdi): Remove.
22090         (cmpeqdi): Fix comment.
22091
22092 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
22093
22094         * config/sh/sh-protos.h (sh_legitimate_index_p): Declare.
22095         (sh_legitimate_address_p): Likewise.
22096         * config/sh/sh.c (sh_legitimate_index_p): New.
22097         (sh_legitimate_address_p): Likewise.
22098         * config/sh/sh.h (REG_OK_FOR_BASE_P): Add STRICT parameter.
22099         (REG_OK_FOR_INDEX_P, SUBREG_OK_FOR_INDEX_P): Likewise.
22100         (MODE_DISP_OK_4, MODE_DISP_OK_8): Remove.
22101         (MAYBE_BASE_REGISTER_RTX_P): New macro.
22102         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
22103         (BASE_REGISTER_RTX_P): Use MAYBE_BASE_REGISTER_RTX_P.
22104         (INDEX_REGISTER_RTX_P): Use MAYBE_INDEX_REGISTER_RTX_P.
22105         (GO_IF_LEGITIMATE_INDEX): Use sh_legitimate_index_p.
22106         (GO_IF_LEGITIMATE_ADDRESS): Use sh_legitimate_address_p.
22107
22108 2009-05-12  Jan Hubicka  <jh@suse.cz>
22109
22110         * tree-inline.c (estimate_operator_cost): Add operands;
22111         when division happens by constant, it is cheap.
22112         (estimate_num_insns): Loads and stores are not having cost of 0;
22113         EH magic stuff is cheap; when computing runtime cost of switch,
22114         use log2 base of amount of its cases; builtin_expect has cost of 0;
22115         compute cost for moving return value of call.
22116         (init_inline_once): Initialize time_based flags.
22117         * tree-inline.h (eni_weights_d): Add time_based flag.
22118
22119 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22120
22121         * df-core.c: Update head documentation.
22122
22123 2009-05-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
22124
22125         PR bootstrap/40118
22126         * rs6000.c (rs6000_generate_compare): Use op1b instead of
22127         shadowing exisiting variable op1.
22128
22129 2009-05-12  Uros Bizjak  <ubizjak@gmail.com>
22130
22131         PR target/37179
22132         * config/i386/driver-i386.c (processor_signatures): New enum.
22133         (SIG_GEODE): Move from vendor_signatures to processor_signatures.
22134         (host_detect_local_cpu): For SIG_AMD vendor, check for SIG_GEODE
22135         processor signature to detect geode processor.
22136
22137 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22138
22139         Revert:
22140
22141         2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22142
22143         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22144         causes spurious differences between trunk and cond-optab branch.
22145
22146 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22147
22148         * dojump.c (compare_from_rtx): Delete.
22149         * expmed.c (emit_store_flag): Only try cstore_optab.  Canonicalize
22150         any MODE_CC mode to the cstorecc4 pattern.  Use prepare_operand, fail
22151         if the comparison does not satisfy the predicate; test predicates for
22152         operands 2 and 3 of a cstore pattern.  Don't try cstore optab
22153         further if one existing pattern fails.
22154         * expr.h (compare_from_rtx): Delete.
22155         (prepare_operand): Declare it.
22156         * optabs.c: Change "lib call" to "libcall" throughout.
22157         (bcc_gen_fctn, setcc_gen_code, trap_rtx,
22158         HAVE_conditional_trap, emit_cmp_insn): Delete.
22159         (can_compare_p): Delete cmp_optab case.
22160         (prepare_float_lib_cmp): Return an rtx and a machine mode.
22161         Accept other parameters by value.
22162         (prepare_operand): Make non-static.
22163         (prepare_cmp_insn): Return an rtx and a machine mode.  Accept
22164         other parameters by value.  Try to widen operands here based on
22165         an optab_methods argument and looking at cbranch_optab.
22166         (emit_cmp_and_jump_insn_1): Accept test and mode, remove widening
22167         loop.  Use cbranch_optab directly.
22168         (emit_cmp_and_jump_insns): Fix comment.  Adjust call to
22169         prepare_cmp_insn and emit_cmp_and_jump_insn_1, remove obsolete
22170         assertion.
22171         (emit_conditional_move, emit_conditional_add): Inline what's needed
22172         of compare_from_rtx, using new prepare_cmp_insn for the rest.
22173         (init_optabs): Init cmp_optab with UNKNOWN, cbranch_optab
22174         with COMPARE.  Move cmov_optab and cstore_optab above
22175         with cbranch_optab, move cmp_optab down with ucmp_optab,
22176         remove tst_otpab.  Do not initialize trap_rtx.
22177         (gen_cond_trap): Do it here.  Use ctrap_optab.  Test predicate
22178         for trap code.  Do not check HAVE_conditional_trap.  Use
22179         prepare_cmp_insn.  Accept no predicate for operand 3.
22180         * optabs.h (OTI_cmp): Mark as used only for libcalls.
22181         (OTI_ctrap, ctrap_optab): New.
22182         (tst_optab): Delete.
22183         (bcc_gen_fctn, setcc_gen_code, emit_cmp_insn): Delete.
22184         * ifcvt.c (find_if_header): Replace HAVE_conditional_trap
22185         with lookup of ctrap_optab.
22186         * genopinit.c (cmp_optab, tst_optab, bcc_gen_fctn, setcc_gen_code):
22187         Delete.
22188         (ctrap_optab): New.
22189
22190         * combine.c (combine_simplify_rtx, simplify_set): Do not
22191         special case comparing against zero for cc0 machines.
22192         * simplify-rtx.c (simplify_binary_operation_1): Never remove
22193         COMPARE on cc0 machines.
22194         (simplify_relational_operation): Return a new expression when
22195         a COMPARE could be removed.
22196         * final.c (final_scan_insn): Compare cc_status values
22197         against LHS of a (compare FOO (const_int 0)) cc0 source.
22198         Also check if cc_status.value is the full compare.
22199
22200         * doc/md.texi (bCC, sCC, tstMM, cmpMM): Delete.
22201         (cstoreMM4): Document.
22202         (conditional_trap): Document ctrapMM4 instead.
22203         (sync_compare_and_swapMM): Refer to cbranchcc4.
22204         (Dependent Patterns): Eliminate obsolete information referring to
22205         the old jump optimization phase.
22206         (Canonicalization): Include cbranchcc4 case, omit canonicalization
22207         of compares with 0 on cc0 machines.
22208         (Jump Patterns): Refer to MODE_CC jump patterns preferably,
22209         avoiding references to cc0.  Remove text about storing operands
22210         in cmpMM.
22211         * doc/tm.texi (Condition Codes): Include blurb on different
22212         condition code representations, separate into subsections for
22213         CC0, MODE_CC and conditional execution.
22214
22215         * config/alpha/alpha-protos.h (alpha_emit_conditional_branch,
22216         alpha_emit_setcc): Accept operands and a machine mode.
22217         * config/alpha/alpha.c (alpha_emit_conditional_branch):
22218         Get code/op0/op1 from operands, use machine mode argument
22219         instead of alpha_compare.fp_p.  Emit the branch here.
22220         (alpha_emit_setcc): Likewise, and return boolean.
22221         (alpha_emit_conditional_move): Likewise.  Assert that
22222         cmp_op_mode == cmp_mode, and simplify accordingly.
22223         * config/alpha/alpha.h (struct alpha_compare, alpha_compare): Delete.
22224         * config/alpha/alpha.md (cmpdf, cmptf, cmpdi, bCC, sCC): Delete.
22225         (cbranchdf4, cbranchtf4, cbranchdi4, cstoredf4, cstoretf4,cstoredi4):
22226         Delete.
22227         (stack probe test): Use cbranchdi4.
22228         * config/alpha/predicates.md (alpha_cbranch_operator): New.
22229
22230         * config/arc/arc.c (gen_compare_reg): Do not emit cmp.
22231         * config/arc/arc.h (movsicc, movsfcc): Use it.
22232         (movdicc, *movdicc_insn, movdfcc, *movdfcc_insn): Remove.
22233         (cbranchsi4, cstoresi4): New.
22234         (cmpsi, bCC and sCC expanders): Remove.
22235
22236         * config/arm/arm.c (arm_compare_op0, arm_compare_op1): Delete.
22237         * config/arm/arm.h (arm_compare_op0, arm_compare_op1): Delete.
22238         * config/arm/predicates.md (arm_comparison_operator): Only include
22239         floating-point operators if there is a hardware floating-point unit.
22240         * config/arm/arm.md (cbranchsi4, cstoresi4): Enable for TARGET_32BIT,
22241         deferring to cbranch_cc and cstore_cc respectively.
22242         (cbranchsf4, cbranchdf4, cbranchdi4, cstoresf4, cstoredf4, cstoredi4,
22243         cbranch_cc, cstore_cc): New.
22244         (movsicc, movsfcc, movdfcc): Do not use arm_compare_op0 and
22245         arm_compare_op1.
22246         (bCC, sCC, cmpsi, cmpsf, cmpdf, cmpdi): Delete.
22247
22248         * config/avr/avr-protos.h (out_tstsi, out_tsthi): Adjust prototype.
22249         * config/avr/avr.c (out_tstsi, out_tsthi): Get the tested operand
22250         as an argument.
22251         (adjust_insn_length): Adjust calls.
22252         (avr_reorg): Handle (compare (foo) (const_int 0)).
22253         * config/avr/avr.md (tstqi, tsthi, tstsi): Remove.
22254         (*negated_tstqi, *negated_tsthi, *negated_tstsi): Unmacroize.
22255         (*reversed_tsthi, *reversed_tstsi): Add a scratch for simplicity.
22256         (cmpqi, cmphi, cmpsi): Prepend asterisk, fuse tst[qhs]i here.
22257         (bCC): Remove.
22258         (cbranchqi4, cbranchhi4, cbranchsi4): New.
22259         (tst -> sbrc/sbrs peephole2, cpse peephole): Wrap RHS with COMPARE.
22260
22261         * config/bfin/bfin.md (cmpbi, cmpsi, bCC, sCC): Delete.
22262         (cbranchsi4, cstorebi4, cstoresi4): New.
22263         (movbisi): This insn is duplicate, split it to zero_extend.
22264         * config/bfin/bfin.c (bfin_compare_op0, bfin_compare_op1): Delete
22265         (bfin_gen_compare): Do not use them.  Emit VOIDmode SET, not BImode.
22266         (bfin_optimize_loop): Use cbranch expander.
22267         * config/bfin/bfin.h (bfin_compare_op0, bfin_compare_op1): Delete.
22268         * config/bfin/predicates.md (bfin_cbranch_operator): Rename to...
22269         (bfin_bimode_comparison_operator): ... this.
22270         (bfin_direct_comparison_operator): New.
22271
22272         * config/cris/cris.c (cris_normal_notice_update_cc): Look
22273         inside (compare FOO (const_int 0)).
22274         (cris_rtx_costs): Handle ZERO_EXTRACT.
22275         * config/cris/cris.md (tstdi, tst<mode>, cmpdi): Delete.
22276         (*tstdi_non_v32): Fold in *cmpdi_non_v32.
22277         (*tstdi_v32): Delete.
22278         (*cmpdi_non_v32): Add M alternative for operand 1.
22279         (cmpsi, cmp<mode>): Make private.
22280         (*tstsi, *tst<mode>_cmp, *tst<mode>_non_cmp, *btst): Wrap LHS
22281         with COMPARE.
22282         (cbranch<mode>4, cbranchdi4, cstore<mode>4): New.
22283
22284         * config/crx/crx.md (cstore<mode>4, cbranchcc4): New.
22285         (cmp<mode>, bCOND_internal, b<code>, s<code>): Delete.
22286         (cbranch<mode>4, sCOND_internal): Use ordered_comparison_operator.
22287         (cc_reg_operand): New.
22288         (any_cond): Delete.
22289         * config/crx/crx.c (crx_compare_op0, crx_compare_op1,
22290         crx_expand_compare, crx_expand_branch, crx_expand_scond): Delete.
22291         * config/crx/crx.h (crx_compare_op0, crx_compare_op1): Delete.
22292         * config/crx/crx-protos.h (crx_expand_compare, crx_expand_branch,
22293         crx_expand_scond): Delete.
22294
22295         * config/fr30/fr30.md (cmp<mode>, bCC): Delete.
22296         (cbranchsi4): New.
22297         * config/fr30/fr30.c (fr30_compare_op0, fr30_compare_op1): Delete
22298         * config/fr30/fr30.h (fr30_compare_op0, fr30_compare_op1): Delete.
22299
22300         * config/frv/frv.md (cbranchsi4, cbranchsf4, cbranchdf4,
22301         cstoresi4, cstoresf4, cstoredf4): New.
22302         (cmpdi, cmpsi, cmpsf, cmpdf, bCC, sCC): Remove.
22303         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22304         Receive the entire operands array.
22305         * config/frv/frv.h (frv_compare_op0, frv_compare_op1): Delete.
22306         * config/frv/frv.c (frv_compare_op0, frv_compare_op1): Delete.
22307         * config/frv/frv-protos.h (frv_emit_cbranch, frv_emit_scc):
22308         Get test/op0/op1 from the operands array.
22309         (frv_emit_cond_move): Get test/op0/op1 from the test_rtx.
22310
22311         * config/h8300/h8300-protos.h (h8300_expand_branch): Accept operands.
22312         (h8300_expand_store): New.
22313         * config/h8300/h8300.c (h8300_rtx_costs): Handle (compare FOO
22314         (const_int 0)).
22315         (h8300_expand_branch): Emit compare here.  Adjust for new arguments.
22316         (h8300_expand_store): New.
22317         * config/h8300/h8300.md (btst combine patterns): Wrap with COMPARE
22318         or do not try to produce (set (cc0) REG).
22319         (peepholes): Wrap arguments with COMPARE.  Add a peephole to
22320         change a compare into a move to a scratch register.  Disable some
22321         peepholes when comparing with zero.
22322         (tstsi, tsthi, tstsi, cmpqi): Make private.
22323         (cmphi): Delete.
22324         (bCC, sCC): Delete.
22325         (cbranchqi4, cbranchhi4, cbranchsi4, cstoreqi4, cstorehi4,
22326         cstoresi4): New.
22327
22328         * config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_int_addcc,
22329         ix86_expand_fp_movcc): Set ix86_compare_op0 and ix86_compare_op1.
22330         (ix86_emit_i387_log1p): Use gen_cbranchxf4.
22331         (ix86_emit_i387_log1p): Use cbranchxf2.
22332         (ix86_expand_setcc): Return void.
22333         * config/i386/i386-protos.h (ix86_expand_setcc): Return void.
22334         * config/i386/i386.md (cmpti, cmpdi, cmpsi, cmphi, cmpqi, cmpxf,
22335         cmp<MODEF>, cmpcc): Remove.
22336         (cbranchti4, cbranchdi4, cbranchsi4, cbranchhi4, cbranchqi4,
22337         cbranchxf4, cbranch<MODEF>4, cbranchcc4, cstoredi4, cstoresi4,
22338         cstorehi4, cstoreqi4, cstorexf4, cstore<MODEF>4, cstorecc): New.
22339         (sCC and bCC expanders): Remove.
22340         (stack_protect_test): Use cbranchcc4.
22341
22342         * config/ia64/ia64-protos.h (ia64_compare_op0, ia64_compare_op1):
22343         Delete.
22344         (ia64_expand_compare): Accept three rtx by reference and return void.
22345         * config/ia64/ia64.c (ia64_compare_op0, ia64_compare_op1): Delete.
22346         (ia64_expand_compare): Replace op0/op1 with *op0/*op1.  Get code
22347         from *expr.  Update *expr with the BImode comparison to do.
22348         * config/ia64/ia64.md (cmpbi, cmpsi, cmpdi, cmpsf, cmpdf, cmpxf,
22349         cmptf, bCC, sCC, conditional_trap): Delete.
22350         (cbranchbi4, cbranchsi4, cbranchdi4, cbranchsf4, cbranchdf4,
22351         cbranchxf4, cbranchtf4, cstorebi4, cstoresi4, cstoredi4, cstoresf4,
22352         cstoredf4, cstorexf4, cstoretf4, ctrapbi4, ctrapsi4, ctrapdi4,
22353         ctrapsf4, ctrapdf4, ctrapxf4, ctraptf4): New.
22354         * config/ia64/predicates.md (ia64_cbranch_operator): New.
22355
22356         * config/iq2000/iq2000-protos.h (gen_conditional_branch): Change
22357         type of last argument.
22358         * config/iq2000/iq2000.c (branch_cmp, branch_type): Remove.
22359         (gen_conditional_branch): Get code/cmp0/cmp1 from operands,
22360         use machine mode argument instead of branch_type.  Remove dead
22361         code for floating-point comparisons.
22362         * config/iq2000/iq2000.h (branch_cmp, branch_type): Remove.
22363         * config/iq2000/iq2000.md (cmpsi, cmpdi, cmpsf, cmpdf, tstsi, bCC):
22364         Remove.
22365         (cbranchsi4, cstoresi4): New.
22366         * config/iq2000/predicates.md (reg_or_const_operand): New.
22367
22368         * config/m32c/m32c.md (cbranch splitter): Use match_op_dup.
22369         * config/m32c/m32c.md (any_cond, gl_cond): Delete.
22370         (b<code>_op): Rewrite to...
22371         (bcc_op): ... this, using match_operator.
22372         (s<code>_op): Rewrite to...
22373         (scc_op): ... this, using match_operator.
22374         (s<code>_24_op): Rewrite to...
22375         (scc_op_24): ... this, using match_operator.
22376         (s<code>_<mode>): Rewrite to...
22377         (cstore<mode>4): ... this, using match_operator.
22378         (s<code>_<mode>_24): Rewrite to...
22379         (cstore<mode>4_24): ... this, using match_operator.
22380         * config/m32c/m32c-protos.h (m32c_cmp_flg_0, m32c_pend_compare,
22381         m32c_unpend_compare, m32c_expand_scc): Delete.
22382         * config/m32c/m32c.c (compare_op0, compare_op1, m32c_cmp_flg_0,
22383         m32c_pend_compare, m32c_unpend_compare, m32c_expand_scc): Delete.
22384         (m32c_expand_movcc): Change NE to EQ if necessary.
22385         (m32c_init_libfuncs): Modify cstore optab instead of setcc_gen_code.
22386
22387         * config/m32r/m32r-protos.h (gen_cond_store): New.
22388         * config/m32r/m32r.c (m32r_compare_op0, m32r_compare_op1): Delete.
22389         (gen_cond_store): New, from sCC patterns.
22390         (m32r_expand_block_move): Use cbranchsi4.
22391         * config/m32r/m32r.h (m32r_compare_op0, m32r_compare_op1): Delete.
22392         * config/m32r/m32r.md (cmpsi, bCC, sCC): Delete.
22393         (cbranchsi4, cstoresi4): New.
22394
22395         * config/m68hc11/m68hc11.c (m68hc11_compare_op0, m68hc11_compare_op1):
22396         Delete.
22397         (m68hc11_rtx_costs_1, m68hc11_rtx_costs): Handle ZERO_EXTRACT.
22398         (m68hc11_notice_update_cc): Look into a compare with 0.
22399         * config/m68hc11/m68hc11.h (m68hc11_compare_op0, m68hc11_compare_op1):
22400         Delete.
22401         * config/m68hc11/m68hc11.md (tstsi, tsthi, tstqi, cmpsi,
22402         cmphi, cmpqi, bCC): Delete.
22403         (cbranchsi4, cbranchhi4, cbranchqi4): New.
22404         (tstqi_1, tstqi_z_used, tstqi_1, bitcmpqi, bitcmpqi_z_used,
22405         bitcmpqi_12, bitcmphi, various splits and peephole2s): Wrap cc0<-reg
22406         sets with COMPARE.
22407
22408         * config/m68k/predicates.md (m68k_cstore_comparison_operator,
22409         const0_operand, const1_operand, m68k_subword_comparison_operand): New.
22410         * config/m68k/constraints.md (H): New.
22411         * config/m68k/m68k.md (tstdi): Remove define_expand, use name for
22412         the define_insn below.
22413         (tstsi, tsthi, tst<FP:mode>, cmphi, cmpqi, cmp<FP:mode>): Delete.
22414         (*tstsi_internal_68020_cf, *tstsi_internal, *tsthi_internal,
22415         *tstqi_internal, tst<mode>_6881, tst<mode>_cf, many unnamed
22416         patterns): Wrap RHS with COMPARE.
22417         (tst<FP>_68881, tst<FP>_cf): Use const0_operand.
22418         (*cmpdi_internal): Name this pattern.
22419         (cmpdi): Change to define_insn.
22420         (cbranchdi4, cstoredi4, cbranchsi4, cstoresi4, cbranchhi4, cstorehi4,
22421         cbranchqi4, cstoreqi4, cbranch<FP:mode>4, cstore<FP:mode>4): New.
22422         (scc0_di, scc0_di_5200, scc_di): Use the ordered_comparison_operator
22423         predicate.
22424         (seq, sne, sgt, sgtu, slt, sltu, sge, sgeu, sle, sleu, sordered,
22425         sunordered, suneq, sunge, sungt, sunle, sunlt, sltgt): Delete
22426         (conditional_trap): Change to...
22427         (ctrapdi4, ctrapsi4, ctraphi4, ctrapqi4): ... these.
22428         (*conditional_trap): Use the ordered_comparison_operator and
22429         const1_operand predicates.
22430         * config/m68k/m68k.c (m68k_last_compare_had_fp_operands): Delete.
22431         (m68k_expand_prologue): Use ctrapsi4 instead of cmpsi+conditional_trap.
22432         (m68k_rtx_costs): Look for ZERO_EXTRACT in a COMPARE.
22433         * config/m68k/m68k.h (m68k_last_compare_had_fp_operands): Delete.
22434
22435         * config/mcore/mcore-protos.h (arch_compare_op0, arch_compare_op1,
22436         mcore_modify_comparison, mcore_gen_compare_reg): Remove.
22437         (mcore_gen_compare): New.
22438         * config/mcore/mcore.c (arch_compare_op0, arch_compare_op1): Delete.
22439         (mcore_modify_comparison, mcore_gen_compare_reg): Fold into...
22440         (mcore_gen_compare): ... this.
22441         * config/mcore/mcore.md (cmpsi, bCC, sCC): Remove.
22442         (cbranchsi4, cstoresi4): New, using mcore_gen_compare.
22443         (stack probe pattern): Use cbranchsi4.
22444
22445         * config/mips/predicates.md (mips_cstore_operator): New.
22446         * config/mips/mips-ps-3d.md (movv2sfcc): Do not use cmp_operands.
22447         * config/mips/mips.md (any_cond): Delete.
22448         (conditional_trap): Rename to ctrap<GPR:mode>4.  Adjust predicates,
22449         always succeed.
22450         (fixuns_truncdfsi2, fixuns_truncdfdi2, fixuns_truncsfsi2,
22451         fixuns_truncsfdi2): Use cbranch patterns.
22452         (cmp<GPR:mode>, cmp<SCALARF:mode>): Delete.
22453         (b<code>): Change to cbranch<GPR:mode>4 and cbranch<SCALARF:mode>4.
22454         Adjust call to mips_expand_conditional_branch.
22455         (seq, sne, slt<u>, sle<u>, sgt<u>, sge<u>): Change to
22456         cstore<GPR:mode>4.
22457         * config/mips/mips-protos.h (mips_expand_conditional_branch,
22458         mips_expand_scc, mips_expand_conditional_trap): Adjust prototypes.
22459         * config/mips/mips.c (cmp_operands): Delete.
22460         (mips_emit_compare): Get comparison operands from *op0/*op1.
22461         (mips_expand_scc): Get code/op0/op1/target from operands.  Assert
22462         that it succeeds.  Use op0/op1 instead of cmp_operands.
22463         (mips_expand_conditional_branch, mips_expand_conditional_move,
22464         mips_expand_conditional_trap): Likewise.
22465         (mips_block_move_loop): Use cbranch patterns.
22466         * config/mips/mips.h (cmp_operands): Delete.
22467
22468         * config/mmix/mmix.c (mmix_valid_comparison): Delete.
22469         (mmix_gen_compare_reg): Just return a register in the right CC mode.
22470         * config/mmix/mmix.h (mmix_compare_op0, mmix_compare_op1): New.
22471         * config/mmix/mmix.md (cmpdi, cmpdf): Remove.
22472         (*cmpcc_folded): Rename to...
22473         (*cmpdi_folded): this.
22474         (*cmpcc): Rename to...
22475         (*cmps): ... this.
22476         (movdfcc, movdicc): Adjust for new semantics of mmix_gen_compare_reg.
22477         (bCC): Remove.
22478         (cbranchdi4): New.
22479         (cbranchdf4): New.  Handle invalid comparisons here.
22480         * config/mmix/predicates.md (float_comparison_operator): New.
22481
22482         * config/mn10300/mn10300.c (mn10300_rtx_costs): Consider 0 and
22483         zero_extract to be cheap in (compare (zero_extract) (const_int 0).
22484         * config/mn10300/mn10300.md (tst): Delete.
22485         (*tst_extqisi_am33, *tst_extqisi, *tst_exthisi_am33, *tst_exthisi):
22486         Name these patterns and wrap RHS in a compare.
22487         (*cmpsi): Make this pattern private.  Include tst.
22488         (*cmpsf): Make this pattern private.
22489         (and and zero_extract cc0 set): Wrap RHS in a COMPARE.
22490         (compare with zero peepholes): Likewise.
22491         (bCC): Remove.
22492         (cbranchsi4, cbranchsf4): New.
22493         (casesi): Use cbranchsi4.
22494
22495         * config/pa/pa.c (hppa_compare_op0, hppa_compare_op1,
22496         hppa_branch_type): Delete.
22497         (return_addr_rtx): Use cbranchsi4.
22498         (emit_bcond_fp): Accept all operands.  Replace CODE with NE.
22499         Emit CCFPmode comparison here.
22500         (gen_cmp_fp): Delete, now part of emit_bcond_fp.
22501         * config/pa/pa.h (enum cmp_type, hppa_compare_op0, hppa_compare_op1,
22502         hppa_branch_type): Delete.
22503         * config/pa/pa.md (cmpdi, cmpsi, cmpsf, cmpdf, sCC, bCC): Delete.
22504         (movsicc, movdicc): Remove references to hppa_compare_op0,
22505         hppa_compare_op1 and compare_from_rtx.
22506         (cbranchdi4, cbranchsi4, cbranchsf4, cbranchdf4, cstoresi4): New.
22507         (casesi): Use cbranchsi4.
22508
22509         * config/pdp11/pdp11-protos.h (output_jump): Change prototype.
22510         * config/pdp11/pdp11.c (output_jump): Embed opcodes here.
22511         * config/pdp11/pdp11.md (register_or_const0_operand): New.
22512         (cmpdf, cmphi, cmpqi): Make private.  Add tst alternatives.
22513         (cmpsi, tstsi, tstdf, tsthi, tstqi): Delete.
22514         (bCC): Delete.
22515         (cbranchdf4, cbranchhi4, cbranchqi4): New.
22516         (*branch, *branch_inverted): New.
22517
22518         * config/picochip/picochip.md (cbranchhi4): Use
22519         ordered_comparison_operator.
22520         (cmphi, bCC): Remove.
22521
22522         * config/rs6000/predicates.md (rs6000_cbranch_operator): New.
22523         (trap_comparison_operator): Delete.
22524         * config/rs6000/rs6000-protos.h (rs6000_emit_sCOND,
22525         rs6000_emit_cbranch): Accept mode and operands.
22526         * config/rs6000/rs6000.c (rs6000_compare_op0, rs6000_compare_op1,
22527         rs6000_compare_fp_p): Delete.
22528         (rs6000_generate_compare): Accept mode and comparison.  Extract code
22529         and op0/op1 from there.  Replace references to rs6000_compare_op0
22530         and rs6000_compare_op1.
22531         (rs6000_emit_sCOND): Adjust call to rs6000_generate_compare and
22532         extract result from passed operands.
22533         (rs6000_emit_cbranch): Adjust call to rs6000_generate_compare and
22534         extract loc from passed operands.
22535         (rs6000_emit_cmove): Likewise.
22536         * config/rs6000/rs6000.h (rs6000_compare_op0, rs6000_compare_op1,
22537         rs6000_compare_fp_p): Delete.
22538         * config/rs6000/rs6000.md (cmp<GPR>, cmp<FP>, bCC, sCC): Delete.
22539         (cbranch<GPR>4, cbranch<FP>4): New.
22540         (cstore<mode>4): New.  Consolidate here all choices about when to use
22541         portable or specialized sCC sequences.
22542         (stack_protect_test): Use cbranchsi4.
22543         (conditional_trap): Replace with ctrap<GPR>4.
22544         (conditional trap insn): Replace trap_comparison_operator with
22545         ordered_comparison_operator.
22546
22547         * config/s390/s390.c (s390_compare_op0, s390_compare_op1): Delete.
22548         (s390_emit_prologue): Use ctrap.
22549         * config/s390/s390.h (s390_compare_op0, s390_compare_op1): Delete.
22550         * config/s390/predicates.md (s390_eqne_operator, s390_scond_operator):
22551         New predicates replacing...
22552         * config/s390/s390.md (COMPARE, SCOND): ... these iterators.
22553         (cmp<GPR>, cmp<FP>, cmpcc): Delete.
22554         (trunc patterns): Use emit_cmp_and_jump_insns instead of cmp/branch.
22555         (add<mode>cc): Do not use s390_compare_op0/op1.
22556         (s<code>): Change to...
22557         (cstore<mode>4): ... this. Do not use s390_compare_op0/op1.
22558         (seq): Change to...
22559         (cstorecc4): ... this.  Handle EQ or NE equally.
22560         (*sne): Un-privatize for use in cstorecc4.
22561         (b<code>): Change to...
22562         (cbranch<GPR>4, cbranch<FP>4, cbranchcc4): ... these.
22563         (conditional_trap): Replace with...
22564         (ctrap<GPR>4, ctrap<FP>4): ... these.
22565         (stack_protect): Use cbranchcc4.
22566
22567         * config/score/score-conv.h (cmp_op0, cmp_op1): Delete.
22568         * config/score/score-protos.h (score_gen_cmp): Delete.
22569         * config/score/score.c (cmp_op0, cmp_op1, score_gen_cmp): Delete.
22570         (score_block_move-loop): Use cbranchsi4.
22571         * config/score/score.md (cbranchsi4): New.
22572         (cmpsi, bCC): Delete.
22573         * config/score/score3.c (cmp_op0, cmp_op1, score3_gen_cmp): Delete.
22574         (score3_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22575         * config/score/score7.c (cmp_op0, cmp_op1, score7_gen_cmp): Delete.
22576         (score7_movsicc): Use ops[1] operands instead of cmp_op0/cmp_op1.
22577         * config/score/score3.h (score3_gen_cmp): Delete.
22578         * config/score/score7.h (score7_gen_cmp): Delete.
22579
22580         * config/sh/sh-protos.h (prepare_scc_operands): Rename to...
22581         (sh_emit_scc_to_t): ... this.  Return void.
22582         (from_compare): Rename to...
22583         (sh_emit_compare_and_branch): ... this.
22584         (sh_emit_compare_and_set): New.
22585         (sh_expand_t_scc): Accept operands.
22586         * config/sh/predicates.md (sh_float_comparison_operator): New.
22587         * config/sh/sh.c (sh_compare_op0, sh_compare_op1): Delete.
22588         (prepare_scc_operands): Rename to...
22589         (sh_emit_scc_to_t): ... this.  Return void.  Get op0/op1 from
22590         arguments.
22591         (sh_emit_cheap_store_flag): New.
22592         (sh_emit_set_t_insn): New.
22593         (from_compare): Rename to...
22594         (sh_emit_compare_and_branch): ... this.  Accept mode.  Rewrite
22595         handling of TARGET_SH2E floating point to avoid recursive call.
22596         Generate branch here.
22597         (sh_emit_compare_and_set): New.
22598         (sh_expand_t_scc): Get op0/op1 from arguments.
22599         (sh_emit_cheap_store_flag): New.
22600         * config/sh/sh.md (cbranchdi4, cbranchsi4): Include -mno-cbranchdi
22601         cases.
22602         (cbranchdi4_i): Use an "I08" constraint instead of an "i" constraint.
22603         (cmpsi, cmpdi, cmpsf, cmpdf): Delete.
22604         (movsicc, movdicc): Do nothing when it recreated operands from
22605         sh_compare_*. Use sh_emit_cheap_store_flag.  Adjust call to
22606         prepare_scc_operands (now sh_emit_scc_to_t).
22607         (udivdi3): Use cstoresi4.
22608         (beq_media, bne_media, bge_media, bgtu_media, bgeu_media, beq,
22609         bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu, bunordered): Delete.
22610         (cbranchint4_media, cbranchfp4_media): New.
22611         (casesi): Use cbranchdi4.
22612         (seq, slt, sle, sgt, sge, sgtu, sltu, sgeu, sne, sleu, sunordered):
22613         Delete.
22614         (cstore4_media, cstoresi4, cstoredi4, cstoresf4, cstoredf4): New.
22615         (movnegt): Remove second operand.
22616         (cbranchsf4, cbranchdf4): New.
22617         (stack_protect): Use cbranchdi4/cbranchsi4.
22618
22619         * config/sparc/sparc.c (sparc_compare_op0, sparc_compare_op1): Delete.
22620         (gen_compare_reg): Accept comparison, extract part of it to...
22621         (gen_compare_reg_1): ... this.
22622         (gen_compare_operator): Delete.
22623         (gen_v9_scc): Accept separate destination, comparison code and arms.
22624         Do not use sparc_compare_op0/sparc_compare_op1.
22625         (emit_scc_insn, emit_conditional_branch_insn): New.
22626         (emit_v9_brxx): Make static.  Remove useless assertion.
22627         (sparc_emit_float_lib_cmp): Return RTL instead of calling
22628         emit_cmp_insn.
22629         (sparc_expand_compare_and_swap_12): Use gen_compare_reg_1+cbranchcc4.
22630         * config/sparc/sparc-protos.h (gen_compare_reg,
22631         sparc_emit_float_lib_cmp): Adjust prototype.
22632         (emit_scc_insn, emit_conditional_branch_insn): New.
22633         (gen_v9_scc, emit_v9_brxx_insn, gen_compare_operator): Delete.
22634         * config/sparc/sparc.h (sparc_compare_op0, sparc_compare_op1): Delete.
22635         * config/sparc/sparc.md (P, I, F, V32, V32I, V64, V64I): Move all
22636         iterators to the top.
22637         (cmpsi, cmpdi, cmpsf, cmpdf, cmptf, seqsi_special_extend,
22638         snesi_special_extend, sCC, bCC, seqdi_special_trunc,
22639         snedi_special_trunc): Delete.
22640         (seqdi_special, snedi_special): Use expansion of seqdi_special_trunc
22641         and snedi_special_trunc.
22642         (cstoresi4, cstoredi4, cstore<F:mode>4, cbranchcc4, cbranchsi4,
22643         cbranchdi4, cbranch<F:mode>4): New.
22644         (mov<I:mode>cc, mov<F:mode>cc): Handle sparc_emit_float_lib_cmp
22645         here.  Use gen_compare_reg instead of gen_compare_operator.
22646         (conditional_trap): Replace with...
22647         (ctrapsi4, ctrapdi4): ... this.
22648         (stack_protect_test): Use cbranchcc4.
22649
22650         * config/spu/spu-protos.h (spu_emit_branch_or_set): Change second
22651         argument to rtx.
22652         * config/spu/spu.c (spu_compare_op0, spu_compare_op1): Remove.
22653         (spu_emit_branch_or_set): Get code/op0/op1 from second argument.
22654         Change spu_compare_op0/op1 to op0/op1 throughout.  Get target
22655         from operands[0] or operands[3] depending on is_set.
22656         * config/spu/spu.h (spu_compare_op0, spu_compare_op1): Remove.
22657         * config/spu/spu.md (cmp<mode:VQHSI>, cmp<mode:DTI>, cmp<mode:VSF>,
22658         cmpdf, bCC), sCC: Remove.
22659         (cbranch<mode:VQHSI>4, cbranch<mode:DTI>, cbranch<mode:VSF>4,
22660         cbranchdf4, cstore<mode:VQHSI>4, cstore<mode:DTI>, cstore<mode:VSF>4,
22661         cstoredf4): New.
22662         (mov<mode>cc): Accept ordered_comparison_operator, adjust call to
22663         spu_emit_branch_or_set.
22664
22665         * config/stormy16/stormy16-protos.h (xstormy16_emit_cbranch):
22666         Add two arguments.
22667         * config/stormy16/stormy16.h (xstormy16_compare_op0,
22668         xstormy16_compare_op1): Delete.
22669         * config/stormy16/stormy16.c (xstormy16_compare_op0,
22670         xstormy16_compare_op1): Delete.
22671         (xstormy16_emit_cbranch): Get op0/op1 from the new arguments.
22672         Adjust calls.
22673         * config/stormy16/stormy16.md (cbranchsi4, cbranchhi4): New.
22674         (cmphi, cmpsi, bCC): Remove.
22675
22676         * config/v850/v850.md (tstsi, cmpsi): Fold into...
22677         (*cmpsi): ... this one.
22678         (cbranchsi4, cstoresi4): New.
22679         (bCC expanders): Delete.
22680         (sCC insns): Fold into...
22681         (*setcc): ... this one.
22682         (casesi): Do not use gen_cmpsi and gen_bgtu.
22683         (various splits): Wrap "naked" RHS of a cc0 set with COMPARE.
22684         (movsicc): Simplify.
22685         * config/v850/v850.c (v850_rtx_costs): Handle ZERO_EXTRACT in COMPARE.
22686
22687         * config/vax/vax-protos.h (cond_name): New.
22688         (vax_output_conditional_branch): Remove.
22689         * config/vax/vax.c (cond_name): New.
22690         (vax_output_conditional_branch): Remove.
22691         * config/vax/vax.h (PRINT_OPERAND): Dispatch %c to cond_name.
22692         * config/vax/vax.md (tst<VAXint>, tst<VAXfp>): Remove.
22693         (cmp<VAXint>, cmp<VAXfp>): Privatize.  Add constraints for tst.
22694         (bit<VAXint>): Wrap source with (compare).
22695         (b<code> and following unnamed pattern): Rename to *branch and
22696         *branch_reversed.  Change macroization to match_operator.
22697         (cbranch<VAXint>4, cbranch<VAXfp>4): New.
22698
22699         * config/xtensa/predicates.md (xtensa_cstoresi_operator): New.
22700         * config/xtensa/xtensa-protos.h (xtensa_expand_conditional_branch):
22701         Change last argument to machine_mode.
22702         (xtensa_expand_scc): Add machine_mode argument.
22703         * config/xtensa/xtensa.c (branch_cmp, branch_type): Remove.
22704         (gen_conditional_move, xtensa_expand_conditional_branch,
22705         xtensa_expand_scc, xtensa_expand_conditional_move): Use mode
22706         instead of branch_type, fetch cmp0/cmp1/test_code from operands[].
22707         Adjust operand numbers.
22708         * config/xtensa/xtensa.h (enum cmp_type, branch_cmp, branch_type):
22709         Delete.
22710         * config/xtensa/xtensa.md (any_cond, any_scc): Delete.
22711         (cmpsi, cmpsf, b<code>, s<code>): Delete.
22712         (cbranchsi4, cbranchsf4, cstoresi4, cstoresf4): New.
22713
22714 2009-05-12  Paolo Bonzini  <bonzini@gnu.org>
22715
22716         * optabs.c (prepare_cmp_insn): Temporarily disable test that
22717         causes spurious differences between trunk and cond-optab branch.
22718
22719 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22720
22721         PR target/37137
22722         * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document.
22723
22724 2009-05-12  Alexandre Oliva  <aoliva@redhat.com>
22725
22726         * tree.c (iterative_hash_pointer): Delete.
22727         (iterative_hash_expr): Short-circuit handling of NULL pointer.
22728         Hash UIDs and versions of SSA names.  Don't special-case built-in
22729         function declarations.
22730
22731 2009-05-11  Ian Lance Taylor  <iant@google.com>
22732
22733         PR bootstrap/40103
22734         * graphite.c: Force -Wc++-compat to only be a warning before
22735         #including "cloog/cloog.h".
22736
22737 2009-05-11  Martin Jambor  <mjambor@suse.cz>
22738
22739         * ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
22740
22741 2009-05-11  Jan Hubicka  <jh@suse.cz>
22742
22743         * tree-ssa-loop-ivcanon.c: Include target.h
22744         (struct loop_size): new structure.
22745         (constant_after_peeling): New predicate.
22746         (tree_estimate_loop_size): New function.
22747         (estimated_unrolled_size): Rewrite for new estimates.
22748         (try_unroll_loop_completely): Use new estimates.
22749         * Makefile.in (tree-ssa-loop-ivcanon.o): Add dependenc on target.h
22750
22751 2009-05-11  Andrew Pinski  <andrew_pinski@playstation.sony.com>
22752
22753         * config/spu/spu-c.c (spu_categorize_keyword): Update for recent
22754         libcpp interface change.
22755         (spu_macro_to_expand): Likewise.
22756
22757 2009-05-11  Paolo Bonzini  <bonzini@gnu.org>
22758
22759         PR tree-optimization/40026
22760         * gimplify.c (gimplify_init_constructor): Change initial conditional
22761         to assertion.  Rewrite TREE_OPERAND (*expr_p, 1) after
22762         optimize_compound_literals_in_ctor.
22763
22764 2009-05-11  Nathan Sidwell  <nathan@codesourcery.com>
22765
22766         * config/m68k/m68k-devices.def (52274, 52277, 5301x, 5225x, 51xx):
22767         New devices.
22768         * doc/invoke.texi (M680x0 Options): Document new coldfire cpus.
22769
22770 2009-05-11  H.J. Lu  <hongjiu.lu@intel.com>
22771
22772         * tree-vect-data-refs.c (vect_analyze_group_access): Use
22773         HOST_WIDE_INT for gap.
22774
22775 2009-05-11  Ira Rosen  <irar@il.ibm.com>
22776
22777         PR tree-optimization/40074
22778         * tree-vect-data-refs.c (vect_analyze_group_access): Take gaps into
22779         account in group size and step comparison.
22780
22781 2009-05-11  Richard Guenther  <rguenther@suse.de>
22782
22783         * passes.c (init_optimization_passes): Strip now incorrect comment.
22784         (execute_function_todo): Do not set PROP_alias.
22785         * tree-pass.h (PROP_alias): Remove.
22786         * tree-ssa-structalias.c (pass_build_alias): Do not provide PROP_alias.
22787         * tree-if-conv.c (pass_if_conversion): Do not require PROP_alias.
22788         * tree-nrv.c (pass_return_slot): Likewise.
22789         * tree-object-size.c (pass_object_sizes): Likewise.
22790         * tree-ssa-dom.c (pass_dominator): Likewise.
22791         (pass_phi_only_cprop): Likewise.
22792         * tree-ssa-dse.c (pass_dse): Likewise.
22793         * tree-ssa-phiopt.c (pass_phiopt): Likewise.
22794         (pass_cselim): Likewise.
22795         * tree-ssa-pre.c (pass_pre): Likewise.
22796         (pass_fre): Likewise.
22797         * tree-ssa-reassoc.c (pass_reassoc): Likewise.
22798         * tree-ssa-sink.c (pass_sink_code): Likewise.
22799         * tree-stdarg.c (pass_stdarg): Likewise.
22800         * tree-tailcall.c (pass_tail_calls): Likewise.
22801         * tree-vrp.c (pass_vrp): Likewise.
22802
22803 2009-05-10  Ian Lance Taylor  <iant@google.com>
22804
22805         * basic-block.h (enum profile_status): Break out of struct
22806         control_flow_graph.
22807         * cgraph.h (struct inline_summary): Break out of struct
22808         cgraph_local_info.
22809         * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
22810         of struct cgraph_order_sort.
22811         * combine.c (enum undo_kind): New enum, broken out of struct undo.
22812         * cse.c (struct branch_path): Break out of struct
22813         cse_basic_block_data.
22814         * except.h (enum eh_region_type): Break out of struct eh_region.
22815         * gcc.c (enum add_del): Break out of struct modify_target.
22816         * genrecog.c (enum decision_type): Break out of struct decision_test.
22817         * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
22818         ggc_pch_data.
22819         * matrix-reorg.c (struct free_info): Break out of struct matrix_info.
22820         * regmove.c (enum match_use): New enum, broken out of struct match.
22821         * sched-int.h (enum post_call_group): New enum, broken out of
22822         struct deps.
22823         (struct deps_reg): Break out of struct deps.
22824         * target.h (struct asm_int_op): Break out of struct gcc_target.
22825         * tree-eh.c (struct goto_queue_node): Break out of struct
22826         leh_tf_state.
22827         * tree-inline.h (enum copy_body_cge_which): Break out of
22828         copy_body_data.
22829         * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
22830
22831         * c-decl.c (in_struct, struct_types): New static variables.
22832         (pushtag): Add loc parameter.  Change all callers.
22833         (lookup_tag): Add ploc parameter.  Change all callers.
22834         (check_compound_literal_type): New function.
22835         (parser_xref_tag): Add loc parameter.  Change all callers.  If
22836         -Wc++-compat, warn about struct/union/enum types defined within a
22837         struct or union.
22838         (start_struct): Add enclosing_in_struct, enclosing_struct_types,
22839         and loc parameters.  Change all callers.  Change error calls to
22840         error_at, using loc.  For a redefinition, if the location of the
22841         original definition is known, report it.  Set in_struct and
22842         struct_types.  If -Wc++-compat warn if in sizeof, typeof, or alignof.
22843         (finish_struct): Add new parameters enclosing_in_struct and
22844         enclosing_struct_types.  Change all callers.  Set
22845         C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
22846         in the struct.  If in a struct, add this struct to struct_types.
22847         (start_enum): Add loc parameter.  Change all callers.  Use
22848         error_at for errors, using loc.  For a redefinition, if the
22849         location of the original definition is known, report it.  If in a
22850         struct, add this enum type to struct_types.  If -Wc++-compat warn
22851         if in sizeof, typeof, or alignof.
22852         * c-parser.c (disable_extension_diagnostics): Disable -Wc++-compat.
22853         (enable_extension_diagnostics): Reenable -Wc++-compat if appropriate.
22854         (c_parser_enum_specifier): Get enum location for start_enum.
22855         (c_parser_struct_or_union_specifier): Get struct location for
22856         start_struct.  Save in_struct and struct_types status between
22857         start_struct and finish_struct.
22858         (c_parser_cast_expression): Get location of cast.
22859         (c_parser_alignof_expression): Get location of type.
22860         (c_parser_postfix_expression): Likewise.
22861         (c_parser_postfix_expression_after_paren_type): Add type_loc
22862         parameter.  Change all callers.  Call check_compound_literal_type.
22863         Use type_loc for error about variable size type.
22864         * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a use
22865         of an enum constant from an enum type defined in a struct or union.
22866         (c_cast_expr): Add loc parameter.  Change all callers.  If
22867         -Wc++-compat, warn about defining a type in a cast.
22868         * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
22869         (start_enum, start_struct, finish_struct): Update declarations.
22870         (parser_xref_tag, c_cast_expr): Update declarations.
22871         (check_compound_literal_type): Declare.
22872
22873 2009-05-11  Ben Elliston  <bje@au.ibm.com>
22874
22875         * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
22876         for recent libcpp interface change.
22877         (rs6000_macro_to_expand): Likewise.
22878
22879 2009-05-10  Michael Matz  <matz@suse.de>
22880
22881         PR target/40031
22882         * config/arm/arm.c (require_pic_register): Emit on entry edge,
22883         not at entry of function.
22884
22885 2009-05-10  Richard Guenther  <rguenther@suse.de>
22886
22887         PR tree-optimization/40081
22888         Revert
22889         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22890         using the main variant of the element type.  Do not fiddle with
22891         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22892
22893         * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
22894         structs with volatile fields.
22895
22896 2009-05-10  Jan Hubicka  <jh@suse.cz>
22897
22898         * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
22899         (estimate_move_cost): Assert that it does not get called for
22900         VOID_TYPE_P.
22901         (estimate_num_insns): Skip VOID types in argument handling.
22902         (optimize_inline_calls): Delete unreachable blocks and verify that
22903         callgraph is valid.
22904
22905 2009-05-10  Jan Hubicka  <jh@suse.cz>
22906
22907         * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
22908         * cgraph.c (cgraph_mark_address_taken_node): New function.
22909         (dump_cgraph_node): Dump new flag.
22910         * cgraph.h (struct cgraph_node): Add address_taken.
22911         (cgraph_mark_address_taken_node): New function.
22912         * ipa.c (cgraph_postorder): Prioritize functions with address taken
22913         since new direct calls can be born.
22914
22915 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22916
22917         * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
22918         tok->val.node.node.
22919
22920 2009-05-10  Jan Hubicka  <jh@suse.cz>
22921
22922         PR middle-end/40084
22923         * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
22924         argument; rewrite.
22925         (cgraph_update_edges_for_call_stmt): Take old_decl argument.
22926         * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
22927         * tree-inline.c (copy_bb): Set frequency correctly.
22928         (fold_marked_statements): Update call to
22929         cgraph_update_edges_for_call_stmt.
22930
22931 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22932
22933         * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
22934         identifiers in diagnostics.
22935         * config/arm/arm.c (arm_handle_fndecl_attribute,
22936         arm_handle_isr_attribute): Likewise.
22937         * config/avr/avr.c (avr_handle_progmem_attribute,
22938         avr_handle_fndecl_attribute, avr_handle_fntype_attribute): Likewise.
22939         * config/bfin/bfin.c (handle_int_attribute,
22940         bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
22941         bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
22942         bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
22943         Likewise.
22944         * config/darwin.c (darwin_handle_kext_attribute,
22945         darwin_handle_weak_import_attribute): Likewise.
22946         * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
22947         h8300_handle_eightbit_data_attribute,
22948         h8300_handle_tiny_data_attribute): Likewise.
22949         * config/i386/i386.c (ix86_handle_cconv_attribute,
22950         ix86_handle_abi_attribute, ix86_handle_struct_attribute): Likewise.
22951         * config/i386/winnt.c (ix86_handle_shared_attribute,
22952         ix86_handle_selectany_attribute): Likewise.
22953         * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
22954         * config/m32c/m32c.c (function_vector_handler): Likewise.
22955         * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
22956         m68hc11_handle_fntype_attribute): Likewise.
22957         * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
22958         * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
22959         * config/mips/mips.c (mips_insert_attributes,
22960         mips_merge_decl_attributes, mips_expand_builtin): Likewise.
22961         * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
22962         rs6000_handle_struct_attribute): Likewise.
22963         * config/sh/sh.c (sh_insert_attributes,
22964         sh_handle_resbank_handler_attribute,
22965         sh_handle_interrupt_handler_attribute,
22966         sh2a_handle_function_vector_handler_attribute,
22967         sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
22968         Likewise.
22969         * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
22970         * config/spu/spu.c (spu_handle_fndecl_attribute,
22971         spu_handle_vector_attribute): Likewise.
22972         * config/stormy16/stormy16.c
22973         (xstormy16_handle_interrupt_attribute): Likewise.
22974         * config/v850/v850-c.c (ghs_pragma_section): Likewise.
22975         * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
22976
22977 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
22978
22979         * pretty-print.h (struct pretty_print_info): Add translate_identifiers.
22980         (pp_translate_identifiers): New.
22981         (pp_identifier): Only conditionally translate identifier to locale
22982         character set.
22983         * pretty-print.c (pp_construct): Set pp_translate_identifiers.
22984         (pp_base_tree_identifier): Only conditionally translate identifier
22985         to locale character set.
22986         * c-pretty-print.c (M_): Define.
22987         (pp_c_type_specifier, pp_c_primary_expression): Mark English
22988         fragments for conditional translation with M_.
22989         * tree-pretty-print.c (maybe_init_pretty_print): Disable
22990         identifier translation.
22991
22992 2009-05-10  Richard Guenther  <rguenther@suse.de>
22993
22994         PR tree-optimization/40081
22995         * tree-sra.c (instantiate_element): Instantiate scalar replacements
22996         using the main variant of the element type.  Do not fiddle with
22997         TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
22998
22999 2009-05-09  Jan Hubicka  <jh@suse.cz>
23000
23001         PR middle-end/40080
23002         * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
23003         indirect calls; verify cgraph afterwards.
23004
23005 2009-05-09  Jan Hubicka  <jh@suse.cz>
23006
23007         PR bootstrap/40082
23008         * ipa.c (update_inlined_to_pointer): New function.
23009         (cgraph_remove_unreachable_nodes): Use it.
23010
23011 2009-05-09  Jan Hubicka  <jh@suse.cz>
23012
23013         * tree-eh.c (struct leh_state): Remove prev_try.
23014         (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
23015         not track prev_try.
23016         * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
23017         copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
23018         remove_eh_handler_and_replace, foreach_reachable_handler,
23019         verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
23020         * except.h (struct eh_region): Remove eh_region_u_cleanup.
23021         (gen_eh_region_cleanup): Update prototype.
23022
23023 2009-05-09  Jan Hubicka  <jh@suse.cz>
23024
23025         PR middle-end/40043
23026         * except.c (copy_eh_region): Always set prev_try.
23027         (redirect_eh_edge_to_label): Find outer try.
23028         (foreach_reachable_handler): When looking for prev try
23029         handle case where previous try is not going to be taken.
23030
23031 2009-05-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
23032
23033         PR tree-optimization/40049
23034         * tree-vect-stmts.c (vectorizable_operation): If the machine has
23035         only vector/vector shifts, convert the type of the constant to the
23036         appropriate type to avoid building incorrect trees, which
23037         eventually have problems with garbage collection.
23038
23039 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23040
23041         * fold-const.c (fold_binary): Do not fold multiplication by 1 or
23042         -1 for complex floating-point types if honoring signed zeros.
23043
23044 2009-05-08  Jan Hubicka  <jh@suse.cz>
23045
23046         * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
23047         argument; handle correctly when profile is absent.
23048         (build_cgraph_edges): Update.
23049         (rebuild_cgraph_edges): Update.
23050         * cgraph.c: Do not include varray.h.
23051         (cgraph_set_call_stmt_including_clones): New function.
23052         (cgraph_create_edge_including_clones): Likewise
23053         (cgraph_update_edges_for_call_stmt_node): New static cfunction.
23054         (cgraph_update_edges_for_call_stmt): Handle clones.
23055         (cgraph_remove_node): Handle clone tree.
23056         (cgraph_remove_node_and_inline_clones): New function.
23057         (dump_cgraph_node): Dump clone tree.
23058         (cgraph_clone_node): Handle clone tree.
23059         (clone_function_name): Bring here from tree-inline.c.
23060         (cgraph_create_virtual_clone): New function.
23061         * cgraph.h (ipa_replace_map): Move here from ipa.h.
23062         (cgraph_clone_info): New function.
23063         (strut cgraph_node): Add clone_info and new clone tree pointers.
23064         (cgraph_remove_node_and_inline_clones,
23065         cgraph_set_call_stmt_including_clones,
23066         cgraph_create_edge_including_clones,
23067         cgraph_create_virtual_clone): Declare.
23068         (cgraph_function_versioning): Use VEC argument.
23069         (compute_call_stmt_bb_frequency): Update prototype.
23070         (cgraph_materialize_all_clones): New function.
23071         * ipa-cp.c (ipcp_update_cloned_node): Remove.
23072         (ipcp_create_replace_map): Update to VECtors.
23073         (ipcp_update_callgraph): Use virtual clones.
23074         (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
23075         (ipcp_update_profiling): Do not update local profiling.
23076         (ipcp_insert_stage): Use VECtors and virtual clones.
23077         * cgraphunit.c (verify_cgraph_node): Verify clone tree.
23078         (clone_of_p): New function.
23079         (cgraph_preserve_function_body_p): Use clone tree.
23080         (cgraph_optimize): Materialize clones.
23081         (cgraph_function_versioning): Update for VECtors.
23082         (save_inline_function_body): Use clone tree.
23083         (cgraph_materialize_clone): New function.
23084         (cgraph_materialize_all_clones): Likewise.
23085         * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
23086         * ipa.c: Include gimple.h.
23087         (cgraph_remove_unreachable_nodes): Use clone tree.
23088         * ipa-prop.c (ipa_note_param_call): Update call to
23089         compute_call_stmt_bb_frequencycall.
23090         * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
23091         * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
23092         (copy_bb): Handle updating of clone tree; add new edge when new call
23093         appears.
23094         (expand_call_inline): Be strict about every call having edge.
23095         (clone_fn_id_num, clone_function_name): Move to cgraph.c.
23096         (delete_unreachable_blocks_update_callgraph): New function.
23097         (tree_function_versioning): Use VECtors; always remove unreachable
23098         blocks and fold conditionals.
23099         * tree-inline.h: Do not include varray.h.
23100         (tree_function_versioning): Remove.
23101         * Makefile.in (GTFILES): Remove tree-inline.c
23102         * passes.c (do_per_function): Do only functions having body.
23103         * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
23104         tree.
23105
23106 2009-05-08  H.J. Lu  <hongjiu.lu@intel.com>
23107             Andrew Morrow  <acm@google.com>
23108
23109         PR c/36892
23110         * c-common.c (c_common_attribute_table): Permit deprecated
23111         attribute to take an optional argument.
23112         (handle_deprecated_attribute): If the optional argument to
23113         __attribute__((deprecated)) is not a string ignore the attribute
23114         and emit a warning.
23115
23116         * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
23117         * c-typeck.c (build_component_ref): Likewise.
23118         (build_external_ref): Likewise.
23119
23120         * toplev.c (warn_deprecated_use): Add an attribute argument.
23121         Emit the message associated with __attribute__((deprecated)).
23122
23123         * toplev.h (warn_deprecated_use): Updated.
23124
23125         * doc/extend.texi: Document new optional parameter to
23126         __attribute__((deprecated))
23127
23128 2009-05-08  Michael Eager <eager@eagercon.com>
23129
23130         * config/rs6000/rs6000.md (*movdf_softfloat32): replace
23131         !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
23132
23133 2009-05-08  Richard Guenther  <rguenther@suse.de>
23134
23135         PR tree-optimization/40062
23136         * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
23137         Avoid exponential behavior.
23138
23139 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23140
23141         PR rtl-optimization/33928
23142         PR 26854
23143         * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
23144         process_uses, build_single_def_use_links): New.
23145         (update_df): Update use_def_ref.
23146         (forward_propagate_into): Use get_def_for_use instead of use-def
23147         chains.
23148         (fwprop_init): Call build_single_def_use_links and let it initialize
23149         dataflow.
23150         (fwprop_done): Free use_def_ref.
23151         (fwprop_addr): Eliminate duplicate call to df_set_flags.
23152         * df-problems.c (df_rd_simulate_artificial_defs_at_top,
23153         df_rd_simulate_one_insn): New.
23154         (df_rd_bb_local_compute_process_def): Update head comment.
23155         (df_chain_create_bb): Use the new RD simulation functions.
23156         * df.h (df_rd_simulate_artificial_defs_at_top,
23157         df_rd_simulate_one_insn): New.
23158         * opts.c (decode_options): Enable fwprop at -O1.
23159         * doc/invoke.texi (-fforward-propagate): Document this.
23160
23161 2009-05-08  Joseph Myers  <joseph@codesourcery.com>
23162
23163         PR c/24581
23164         * c-typeck.c (build_binary_op): Handle arithmetic between one real
23165         and one complex operand specially.
23166         * tree-complex.c (some_nonzerop): Do not identify a real value as
23167         zero if flag_signed_zeros.
23168
23169 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23170
23171         PR rtl-optimization/33928
23172         * loop-invariant.c (record_use): Fix && vs. || mishap.
23173
23174 2009-05-08  Paolo Bonzini  <bonzini@gnu.org>
23175
23176         PR rtl-optimization/33928
23177         * loop-invariant.c (struct use): Add addr_use_p.
23178         (struct def): Add n_addr_uses.
23179         (struct invariant): Add cheap_address.
23180         (create_new_invariant): Set cheap_address.
23181         (record_use): Accept df_ref.  Set addr_use_p and update n_addr_uses.
23182         (record_uses): Pass df_ref to record_use.
23183         (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
23184         used only as such.
23185
23186 2009-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
23187
23188         * config/sh/sh.c: Do not include c-pragma.h.
23189
23190 2009-05-07  Andrew Pinski  <andrew_pinski@playstation.sony.com>
23191
23192         * config/spu/spu.c: Remove include of c-common.h.
23193
23194 2009-05-07  Janis Johnson  <janis187@us.ibm.com>
23195
23196         PR c/39037
23197         * c-common.h (mark_valid_location_for_stdc_pragma,
23198         valid_location_for_stdc_pragma_p, set_float_const_decimal64,
23199         clear_float_const_decimal64, float_const_decimal64_p): New.
23200         * c.opt (Wunsuffixed-float-constants): New.
23201         * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
23202         unsuffixed float constant, handle new warning.
23203         * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
23204         * c-decl.c (c_scope): New flag float_const_decimal64.
23205         (set_float_const_decimal64, clear_float_const_decimal64,
23206         float_const_decimal64_p): New.
23207         (push_scope): Set new flag.
23208         * c-parser.c (c_parser_translation_unit): Mark when it's valid
23209         to use STDC pragmas.
23210         (c_parser_external_declaration): Ditto.
23211         (c_parser_compound_statement_nostart): Ditto.
23212         * c-pragma.c (valid_location_for_stdc_pragma,
23213         mark_valid_location_for_stdc_pragma,
23214         valid_location_for_stdc_pragma_p, handle_stdc_pragma,
23215         handle_pragma_float_const_decimal64): New.
23216         (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
23217         * cp/semantics.c (valid_location_for_stdc_pragma_p,
23218         set_float_const_decimal64, clear_float_const_decimal64,
23219         float_const_decimal64_p): New dummy functions.
23220         * doc/extend.texi (Decimal Float): Remove statement that the
23221         pragma, and suffix for double constants, are not supported.
23222         * doc/invoke.texi (Warning Options): List new option.
23223         (-Wunsuffixed-float-constants): New.
23224
23225 2009-05-08  Steven Bosscher  <steven@gcc.gnu.org>
23226
23227         * config/i386/i386.c: Do not include c-common.h.
23228
23229 2009-05-07  Mark Heffernan  <meheff@google.com>
23230
23231         * doc/invoke.texi (Debugging Options): Document change of debugging
23232         dump location.
23233         * opts.c (decode_options): Make dump_base_name relative to
23234         aux_base_name directory.
23235
23236 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
23237
23238         * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
23239         * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
23240
23241 2009-05-07  Rafael Avila de Espindola  <espindola@google.com>
23242
23243         * Makefile.in (install-plugin): Simplify a bit.
23244
23245 2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
23246
23247         * Makefile.in (OBJS-common): Add regcprop.o.
23248         (regcprop.o): New.
23249         * timevar.def (TV_CPROP_REGISTERS): New.
23250         * regrename.c (regrename_optimize): Return 0.
23251         (rest_of_handle_regrename): Delete.
23252         (pass_rename_registers): Point to regrename_optimize.
23253         (struct value_data_entry, struct value_data,
23254         kill_value_one_regno, kill_value_regno, kill_value,
23255         set_value_regno, init_value_data, kill_clobbered_value,
23256         kill_set_value, kill_autoinc_value, copy_value,
23257         mode_change_ok, maybe_mode_change, find_oldest_value_reg,
23258         replace_oldest_value_reg, replace_oldest_value_addr,
23259         replace_oldest_value_mem, copyprop_hardreg_forward_1,
23260         debug_value_data, validate_value_data): Move...
23261         * regcprop.c: ... here.
23262         (rest_of_handle_cprop): Delete.
23263         (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
23264
23265 2009-05-07  Jakub Jelinek  <jakub@redhat.com>
23266
23267         PR middle-end/40057
23268         * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
23269         GEN_INT for 1 << bitnum.
23270         (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
23271         build_int_cst_type.
23272
23273 2009-05-07  Uros Bizjak  <ubizjak@gmail.com>
23274
23275         * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
23276         Remove wrong description of "nand" operation.
23277
23278 2009-05-06  Richard Guenther  <rguenther@suse.de>
23279             Adam Nemet  <anemet@caviumnetworks.com>
23280
23281         * gimple.def (GIMPLE_ASSIGN): Fix incorrect information in the
23282         comment.  Add that if LHS is not a gimple register, then RHS1 has
23283         to be a single object (GIMPLE_SINGLE_RHS).
23284
23285 2009-05-06  Adam Nemet  <anemet@caviumnetworks.com>
23286
23287         * expr.c (get_def_for_expr): Move it up in the file.
23288         (store_field): When expanding a bit-field store, look at the
23289         defining gimple stmt for the masking conversion.
23290
23291 2009-05-06  Janis Johnson  <janis187@us.ibm.com>
23292
23293         PR middle-end/39986
23294         * dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
23295         decode_decimal64, encode_decimal128, decode_decimal128): Avoid
23296         32-bit memcpy into long.
23297
23298 2009-05-06  Jakub Jelinek  <jakub@redhat.com>
23299
23300         * dwarf2out.c (new_reg_loc_descr): Don't ever create DW_OP_regX.
23301         (one_reg_loc_descriptor): Create DW_OP_regX here instead of calling
23302         new_reg_loc_descr.
23303         (loc_by_reference): If loc is DW_OP_regX, change it into DW_OP_bregX 0
23304         instead of appending DW_OP_deref*.
23305
23306 2009-05-06  Michael Matz  <matz@suse.de>
23307
23308         PR middle-end/40021
23309         * cfgexpand.c (maybe_cleanup_end_of_block): New static function.
23310         (expand_gimple_cond): Use it to cleanup CFG and superfluous jumps.
23311
23312 2009-05-06  Rafael Avila de Espindola  <espindola@google.com>
23313
23314         * Makefile.in (install-plugin): Fix srcdir handling.
23315
23316 2009-05-06  Andrey Belevantsev  <abel@ispras.ru>
23317
23318         * tree-ssa.c (execute_update_address_taken): Handle TARGET_MEM_REF
23319         when processing for not_regs_needed bitmap.
23320         * gimple.c (walk_stmt_load_store_addr_ops): When visiting address,
23321         handle TARGET_MEM_REF in lhs.  Check TMR_BASE for NULL while
23322         handling it for rhs.
23323
23324 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23325
23326         * config/i386/i386.md (unnamed inc/dec peephole): Use
23327         optimize_insn_for_size_p instead of optimize_size.
23328         * config/i386/predicates.md (incdec_operand): Likewise.
23329         (aligned_operand): Likewise.
23330         * config/i386/sse.md (divv8sf3): Likewise.
23331         (sqrtv8sf2): Likewise.
23332
23333 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23334
23335         * config/i386/i386.c (ix86_build_signbit_mask): Make it static.
23336
23337         * config/i386/i386-protos.h (ix86_build_signbit_mask): Removed.
23338
23339 2009-05-06  H.J. Lu  <hongjiu.lu@intel.com>
23340
23341         * config/i386/i386.md (*avx_<code><mode>3_finite): Replace
23342         ssemodesuffixf2c with avxmodesuffixf2c.
23343
23344 2009-05-06  Joseph Myers  <joseph@codesourcery.com>
23345
23346         PR c/40032
23347         * c-decl.c (grokdeclarator): Handle incomplete type of unnamed field.
23348
23349 2009-05-05  Jakub Jelinek  <jakub@redhat.com>
23350
23351         * tree.h: Remove DECL_BY_REFERENCE from private_flag comment.
23352         (struct tree_base): Adjust spacing for 8 bit boundaries.
23353         (struct tree_decl_common): Add decl_by_reference_flag bit.
23354         (DECL_BY_REFERENCE): Adjust.
23355         * print-tree.c (print_node): For VAR_DECL, PARM_DECL or RESULT_DECL,
23356         print DECL_BY_REFERENCE bit.
23357         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Revert last change.
23358         * dwarf2out.c (loc_by_reference, gen_decl_die): Check
23359         DECL_BY_REFERENCE for all VAR_DECLs, not just non-static ones.
23360         (gen_variable_die): Likewise.  Check TREE_PRIVATE/TREE_PROTECTED
23361         unconditionally.
23362
23363         PR middle-end/39666
23364         * gimplify.c (gimplify_switch_expr): If case labels cover the whole
23365         range of the type, but default label is missing, add it with one
23366         of the existing labels instead of adding a new label for it.
23367
23368 2009-05-05  Joseph Myers  <joseph@codesourcery.com>
23369
23370         * dwarf.h: Remove.
23371
23372 2009-05-05  Rafael Avila de Espindola  <espindola@google.com>
23373
23374         * Makefile.in (enable_plugin, plugin_includedir): New.
23375         (install): Depend on install-plugin.
23376         (PLUGIN_HEADERS): New.
23377         (install-plugin): New.
23378         * config.gcc: Add vxworks-dummy.h to tm_file for x86 and x86-64.
23379
23380 2009-05-05  Richard Guenther  <rguenther@suse.de>
23381
23382         PR tree-optimization/40022
23383         * tree-ssa-phiprop.c (struct phiprop_d): Exchange vop_stmt for
23384         the only vuse.
23385         (phivn_valid_p): Fix tuplification error, simplify.
23386         (phiprop_insert_phi): Add dumps.
23387         (propagate_with_phi): Simplify.
23388
23389 2009-05-05  Richard Guenther  <rguenther@suse.de>
23390
23391         PR middle-end/40023
23392         * builtins.c (gimplify_va_arg_expr): Properly build the address.
23393
23394 2009-05-05  Shujing Zhao  <pearly.zhao@oracle.com>
23395
23396         * tree.h (strip_float_extensions): Remove duplicate declaration.
23397         (build_low_bits_mask, debug_fold_checksum, expand_function_end,
23398         expand_function_start, stack_protect_prologue, stack_protect_epilogue,
23399         block_ultimate_origin): Rearrange the declarations line to match the
23400         comment that indicates the .c file which the functions are defined.
23401         (dwarf2out_*, set_decl_rtl): Add comment.
23402         (get_base_address): Adjust comment.
23403         (change_decl_assembler_name, maybe_fold_*, build_addr): Rearrange the
23404         declarations line and add comment.
23405         (is_builtin_name): Add blank after function name, for clarity.
23406
23407 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23408
23409         * attribs.c (decl_attributes): Use %qE for identifiers in
23410         diagnostics.
23411         * cgraphunit.c (verify_cgraph_node): Translate function names to
23412         locale character set in diagnostics.
23413         * coverage.c (get_coverage_counts): Use %qE for identifiers in
23414         diagnostics.
23415         * doc/invoke.texi (-finstrument-functions-exclude-function-list):
23416         Document that functions are named in UTF-8.
23417         * expr.c (expand_expr_real_1): Translate function names to locale
23418         character set in diagnostics.
23419         * gimplify.c (omp_notice_variable, omp_is_private,
23420         gimplify_scan_omp_clauses): Use %qE for identifiers in
23421         diagnostics.
23422         * langhooks.c (lhd_print_error_function): Translate function names
23423         to locale character set.
23424         * langhooks.h (decl_printable_name): Document that return value is
23425         in internal character set.
23426         * stmt.c: Include pretty-print.h
23427         (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
23428         diagnostics.
23429         (resolve_operand_name_1): Translate named operand name to locale
23430         character set.
23431         * stor-layout.c (finalize_record_size): Use %qE for identifiers in
23432         diagnostics.
23433         * toplev.c (announce_function): Translate function names to locale
23434         character set.
23435         (warn_deprecated_use): Use %qE for identifiers in diagnostics.
23436         (default_tree_printer): Use pp_identifier or translate identifiers
23437         to locale character set.  Mark "<anonymous>" for translation.
23438         * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
23439         for identifiers in diagnostics.
23440         * tree.c (handle_dll_attribute): Use %qE for identifiers in
23441         diagnostics.
23442         * varasm.c (output_constructor): Use %qE for identifiers in
23443         diagnostics.
23444
23445 2009-05-04  Rafael Avila de Espindola  <espindola@google.com>
23446
23447         * configure.ac: use ` ` instead of $()
23448         * configure: Regenerate.
23449
23450 2009-05-05  Ben Elliston  <bje@au.ibm.com>
23451
23452         * config/pa/linux-atomic.c: Eliminate conditional include of
23453         errno.h on non-LP64 systems to simplify build requirements.
23454
23455 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23456
23457         * c-common.c (handle_mode_attribute): Use %qE for identifiers in
23458         diagnostics.
23459         * c-decl.c (check_bitfield_type_and_width): Make orig_name a tree
23460         and pass value to identifier_to_locale.
23461         (warn_variable_length_array): Make name a tree.
23462         (grokdeclarator): Separate diagnostic texts for named and unnamed
23463         declarators.  Use %qE for named declarators.
23464         * c-parser.c (c_lex_one_token): Use %qE for identifiers in
23465         diagnostics.
23466         * c-pragma.c (pop_alignment, handle_pragma_pack): Use %qE for
23467         identifiers in diagnostics.
23468         * c-typeck.c (push_member_name, start_init): Pass identifiers to
23469         identifier_to_locale.  Mark "anonymous" strings for translation.
23470
23471 2009-05-04  Michael Eager <eager@eagercon.com>
23472
23473         * config/rs6000/rs6000.c (rs6000_legitimate_address): Allow
23474         address for DImode/DFmode only if double-precision FP regs.
23475
23476 2009-05-04  Michael Eager <eager@eagercon.com>
23477
23478         * config/rs6000/rs6000.c (rs6000_libcall_value): Add
23479         TARGET_SINGLE_FLOAT check.
23480
23481 2009-05-04  Michael Eager <eager@eagercon.com>
23482
23483         * config/rs6000/xilinx.h: Add CPP_SPEC for -mxilinx-fpu options.
23484
23485 2009-05-04  Michael Eager <eager@eagercon.com>
23486
23487         * gcc/config.gcc (powerpc-xilinx-eabi*): Add tm t-xilinx
23488         * config/rs6000/t-xilinx: New
23489
23490 2009-05-04  Paolo Bonzini  <bonzini@gnu.org>
23491
23492         * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
23493         * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
23494         * gcc/explow.c (memory_address): Use target hook.
23495         * gcc/targhooks.c (default_legitimize_address): New.
23496         * gcc/targhooks.h (default_legitimize_address): New.
23497         * gcc/target.h (legitimize_address): New.
23498         * gcc/target-def.h (TARGET_LEGITIMIZE_ADDRESS): New.
23499         (TARGET_INITIALIZER): Include it.
23500         * gcc/system.h (LEGITIMIZE_ADDRESS): Poison.
23501
23502         * config/bfin/bfin-protos.h (legitimize_address): Remove.
23503         * config/bfin/bfin.c (legitimize_address): Remove.
23504         * config/bfin/bfin.h (LEGITIMIZE_ADDRESS): Remove.
23505         * config/m68hc11/m68hc11-protos.h (m68hc11_legitimize_address):
23506         Remove.
23507         * config/m68hc11/m68hc11.c (m68hc11_legitimize_address): Remove.
23508         * config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Remove.
23509
23510         * gcc/config/arm/arm.h (LEGITIMIZE_ADDRESS, ARM_LEGITIMIZE_ADDRESS,
23511         THUMB_LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS): Delete.
23512         * gcc/config/s390/s390.h (LEGITIMIZE_ADDRESS): Delete.
23513         * gcc/config/m32c/m32c.h (LEGITIMIZE_ADDRESS): Delete.
23514         * gcc/config/sparc/sparc.h (LEGITIMIZE_ADDRESS): Delete.
23515         * gcc/config/m32r/m32r.h (LEGITIMIZE_ADDRESS): Delete.
23516         * gcc/config/i386/i386.h (LEGITIMIZE_ADDRESS): Delete.
23517         * gcc/config/sh/sh.h (LEGITIMIZE_ADDRESS): Delete.
23518         * gcc/config/avr/avr.h (LEGITIMIZE_ADDRESS): Delete.
23519         * gcc/config/m68hc11/m68hc11.h (LEGITIMIZE_ADDRESS): Delete.
23520         * gcc/config/iq2000/iq2000.h (LEGITIMIZE_ADDRESS): Delete.
23521         * gcc/config/mn10300/mn10300.h (LEGITIMIZE_ADDRESS): Delete.
23522         * gcc/config/m68k/m68k.h (LEGITIMIZE_ADDRESS): Delete.
23523         * gcc/config/score/score.h (LEGITIMIZE_ADDRESS): Delete.
23524         * gcc/config/pa/pa.h (LEGITIMIZE_ADDRESS): Delete.
23525         * gcc/config/mips/mips.h (LEGITIMIZE_ADDRESS): Delete.
23526         * gcc/config/alpha/alpha.h (LEGITIMIZE_ADDRESS): Delete.
23527         * gcc/config/frv/frv.h (LEGITIMIZE_ADDRESS): Delete.
23528         * gcc/config/spu/spu.h (LEGITIMIZE_ADDRESS): Delete.
23529         * gcc/config/xtensa/xtensa.h (LEGITIMIZE_ADDRESS): Delete.
23530         * gcc/config/cris/cris.h (LEGITIMIZE_ADDRESS): Delete.
23531         * gcc/config/rs6000/rs6000.h (LEGITIMIZE_ADDRESS): Delete.
23532         * gcc/config/picochip/picochip.h (LEGITIMIZE_ADDRESS): Delete.
23533
23534         * gcc/config/s390/s390-protos.h (legitimize_address): Delete.
23535         * gcc/config/m32c/m32c-protos.h (m32c_legitimize_address): Delete.
23536         * gcc/config/sparc/sparc-protos.h (legitimize_address): Delete.
23537         * gcc/config/i386/i386-protos.h (legitimize_address): Delete.
23538         * gcc/config/avr/avr-protos.h (legitimize_address): Delete.
23539         * gcc/config/mn10300/mn10300-protos.h (legitimize_address): Delete.
23540         * gcc/config/score/score-protos.h (score_legitimize_address): Delete.
23541         * gcc/config/arm/arm-protos.h (arm_legitimize_address,
23542         (thumb_legitimize_address): Delete.
23543         * gcc/config/pa/pa-protos.h (hppa_legitimize_address): Delete.
23544         * gcc/config/mips/mips-protos.h (mips_legitimize_address): Delete.
23545         * gcc/config/alpha/alpha-protos.h (alpha_legitimize_address): Delete.
23546         * gcc/config/frv/frv-protos.h (frv_legitimize_address): Delete.
23547         * gcc/config/spu/spu-protos.h (spu_legitimize_address): Delete.
23548         * gcc/config/xtensa/xtensa-protos.h (xtensa_legitimize_address):
23549         Delete.
23550         * gcc/config/rs6000/rs6000-protos.h (rs6000_legitimize_address):
23551         Delete.
23552
23553         * config/arm/arm.c (arm_legitimize_address): Maybe call Thumb version.
23554         * config/m32c/m32c.c (m32c_legitimize_address): Standardize.
23555         * config/m32r/m32r.c (m32r_legitimize_address): New.
23556         * config/m68k/m68k.c (m68k_legitimize_address): New.
23557         * config/score/score.c (score_legitimize_address): Standardize.
23558         * config/score/score3.c (score3_legitimize_address): Standardize.
23559         * config/score/score3.h (score3_legitimize_address): Adjust.
23560         * config/score/score7.c (score7_legitimize_address): Standardize.
23561         * config/score/score7.h (score7_legitimize_address): Adjust.
23562         * config/sh/sh.c (sh_legitimize_address): New.
23563         * config/iq2000/iq2000.c (iq2000_legitimize_address): New.
23564
23565         * gcc/config/s390/s390.c (legitimize_address): Rename to...
23566         (s390_legitimize_address): ... this.
23567         * gcc/config/sparc/sparc.c (legitimize_address): Rename to...
23568         (sparc_legitimize_address): ... this.
23569         * gcc/config/i386/i386.c (legitimize_address): Rename to...
23570         (ix86_legitimize_address): ... this.
23571         * gcc/config/avr/avr.c (legitimize_address): Rename to...
23572         (avr_legitimize_address): ... this.
23573         * gcc/config/mn10300/mn10300.c (legitimize_address): Rename to...
23574         (mn10300_legitimize_address): ... this.
23575         * config/alpha/alpha.c (alpha_legitimize_address): Wrap...
23576         (alpha_legitimize_address_1): ... the old alpha_legitimize_address.
23577         (alpha_expand_mov): Adjust call.
23578
23579         * config/frv/frv.c (frv_legitimize_address): Return x on failure.
23580         * config/spu/spu.c (spu_legitimize_address): Likewise.
23581         * config/xtensa/xtensa.c (xtensa_legitimize_address): Likewise.
23582         * config/rs6000/rs6000.c (rs6000_legitimize_address): Likewise.
23583
23584 2009-05-04  Joseph Myers  <joseph@codesourcery.com>
23585
23586         * intl.c (locale_encoding, locale_utf8): New.
23587         (gcc_init_libintl): Initialize locale_encoding and locale_utf8.
23588         * intl.h (locale_encoding, locale_utf8): Declare.
23589         * pretty-print.c: Include ggc.h.  Include iconv.h if HAVE_ICONV.
23590         (pp_base_tree_identifier, decode_utf8_char, identifier_to_locale):
23591         New.
23592         * pretty-print.h (pp_identifier): Call identifier_to_locale on ID
23593         argument.
23594         (pp_tree_identifier): Define to call pp_base_tree_identifier.
23595         (pp_base_tree_identifier): Declare as function.
23596         (identifier_to_locale): Declare.
23597         * Makefile.in (pretty-print.o): Update dependencies.
23598         * varasm.c (finish_aliases_1): Use %qE for identifiers in diagnostics.
23599
23600 2009-05-04  Richard Guenther  <rguenther@suse.de>
23601
23602         PR middle-end/40015
23603         * builtins.c (fold_builtin_memory_op): Do not decay to element
23604         type if the size matches the whole array.
23605
23606 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23607
23608         * expmed.c (synth_mult): When trying out a shift, pass the result
23609         of a signed shift.
23610
23611 2009-05-04  Kazu Hirata  <kazu@codesourcery.com>
23612
23613         * expmed.c (shiftsub_cost): Rename to shiftsub0_cost.
23614         (shiftsub1_cost): New.
23615         (init_expmed): Compute shiftsub1_cost.
23616         (synth_mult): Optimize multiplications by constants of the form
23617         -(2^^m-1) for some constant positive integer m.
23618
23619 2009-05-03  Richard Guenther  <rguenther@suse.de>
23620
23621         PR c/39983
23622         * c-typeck.c (array_to_pointer_conversion): Do not built
23623         ADDR_EXPRs of arrays of pointer-to-element type.
23624         * c-gimplify.c (c_gimplify_expr): Revert change fixing
23625         up wrong ADDR_EXPRs after-the-fact.
23626         * c-common.c (strict_aliasing_warning): Strip pointer
23627         conversions for obtaining the original type.
23628         * builtins.c (fold_builtin_memset): Handle array types.
23629         (fold_builtin_memory_op): Handle folded POINTER_PLUS_EXPRs
23630         and array types
23631
23632 2009-05-03  Richard Guenther  <rguenther@suse.de>
23633
23634         PR middle-end/23329
23635         * tree-ssa.c (useless_type_conversion_p_1): Use get_deref_alias_set.
23636         Do not lose casts from array types with unknown extent to array
23637         types with known extent.
23638         * tree-ssa-copy.c (may_propagate_copy): Remove hack checking for
23639         alias set compatibility.
23640
23641 2009-05-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
23642
23643         * flags.h (extra_warnings): Delete.
23644         * toplev.c (process_options): Handle Wuninitialized here.
23645         * opts.c (extra_warnings): Delete.
23646         (set_Wextra): Delete.
23647         (common_handle_option): -Wextra can be handled automatically.
23648         * c-opts.c (c_common_handle_option): Delete obsolete code.
23649         (c_common_post_options): Simplify comment.
23650         * common.opt (W): Add Var.
23651         (Wextra): Add Var.
23652         (Wuninitialized): Initialize to -1.
23653
23654 2009-05-03  Adam Nemet  <anemet@caviumnetworks.com>
23655             Richard Guenther  <rguenther@suse.de>
23656
23657         * expr.c (get_def_for_expr): New function.
23658         (expand_expr_real_1) <PLUS_EXPR, MINUS_EXPR>: Adjust to work with
23659         SSA rather than trees.
23660         <MULT_EXPR>: Likewise.  Use subexp0 and subexp1 instead of
23661         TREE_OPERAND (exp, 0) and TREE_OPERAND (exp, 1).
23662
23663 2009-05-03  Joseph Myers  <joseph@codesourcery.com>
23664
23665         * c-common.c (reswords): Add _Imaginary.
23666         * c-common.c (enum rid): Add RID_IMAGINARY.
23667
23668 2009-05-03  Paolo Bonzini  <bonzini@gnu.org>
23669
23670         * tree.h (TYPE_VECTOR_OPAQUE): Fix documentation.
23671         Patch by Richard Guenther.
23672
23673 2009-05-03  Anatoly Sokolov  <aesok@post.ru>
23674
23675         * defaults.h (FRAME_POINTER_REQUIRED): Provide default.
23676         * doc/tm.texi (FRAME_POINTER_REQUIRED): Revise documentation.
23677         * config/alpha/alpha.h (FRAME_POINTER_REQUIRED): Delete.
23678         * config/s390/s390.h (FRAME_POINTER_REQUIRED): Delete.
23679         * config/spu/spu.h (FRAME_POINTER_REQUIRED): Delete.
23680         * config/sh/sh.h (FRAME_POINTER_REQUIRED): Delete.
23681         * config/pdp11/pdp11.h (FRAME_POINTER_REQUIRED): Delete.
23682         * config/stormy16/stormy16.h (FRAME_POINTER_REQUIRED): Delete.
23683         * config/m68hc11/m68hc11.h (FRAME_POINTER_REQUIRED): Delete.
23684         * config/iq2000/iq2000.h (FRAME_POINTER_REQUIRED): Delete.
23685         * config/mn10300/mn10300.h (FRAME_POINTER_REQUIRED): Delete.
23686         * config/ia64/ia64.h (FRAME_POINTER_REQUIRED): Delete.
23687         * config/m68k/m68k.h (FRAME_POINTER_REQUIRED): Delete.
23688         * config/rs6000/rs6000.h (FRAME_POINTER_REQUIRED): Delete.
23689         * config/picochip/picochip.h (FRAME_POINTER_REQUIRED): Delete.
23690         * config/mcore/mcore.h (FRAME_POINTER_REQUIRED): Delete.
23691         * config/h8300/h8300.h (FRAME_POINTER_REQUIRED): Delete.
23692         * config/v850/v850.h (FRAME_POINTER_REQUIRED): Delete.
23693
23694 2009-05-02  Richard Guenther  <rguenther@suse.de>
23695
23696         PR tree-optimization/39940
23697         * tree-ssa-pre.c (eliminate): Make sure we may propagate before
23698         doing so.
23699
23700 2009-05-02  Richard Guenther  <rguenther@suse.de>
23701
23702         PR middle-end/40001
23703         * tree-ssa.c (execute_update_addresses_taken): Properly check
23704         if we can mark a variable DECL_GIMPLE_REG_P.
23705         * gimple.c (is_gimple_reg): Re-order check for DECL_GIMPLE_REG_P
23706         back to the end of the function.
23707         (is_gimple_reg_type): Remove complex type special casing.
23708         * gimplify.c (gimplify_bind_expr): Do not set DECL_GIMPLE_REG_P
23709         if not optimizing.
23710
23711 2009-05-02  Ben Elliston  <bje@au.ibm.com>
23712
23713         * doc/collect2.texi (Collect2): Document search path behaviour
23714         when configured with --with-ld.
23715
23716 2009-05-02  Jan Hubicka  <jh@suse.cz>
23717
23718         * tree-ssa-coalesce.c (coalesce_cost): Do not take ciritical
23719         parameter; update callers.
23720         (coalesce_cost_edge): EH edges are costier because they needs
23721         splitting even if not critical and even more costier when there are
23722         multiple EH predecestors.
23723
23724 2009-05-02  Jan Hubicka  <jh@suse.cz>
23725
23726         * except.c (remove_eh_handler_and_replace): Handle updating after
23727         removing TRY blocks.
23728
23729 2009-05-02  Eric Botcazou  <ebotcazou@adacore.com>
23730
23731         * store-motion.c (compute_store_table): Add ENABLE_CHECKING guard.
23732
23733 2009-05-02  Steven Bosscher  <steven@gcc.gnu.org>
23734
23735         * varasm.c: Do not include c-pragma.h.
23736         * attribs.c: Do not incude c-common.h.
23737
23738 2009-05-01  Michael Matz  <matz@suse.de>
23739
23740         * calls.c (initialize_argument_information): Handle SSA names like
23741         decls with a non MEM_P DECL_RTL.
23742
23743 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23744
23745         * ipa-reference.c: Do not include c-common.h, include splay-tree.h.
23746         * ipa-utils.c: Likewise.
23747         * ipa-type-escape.c: Likewise.
23748         * cgraphunit.c Do not include c-common.h.
23749         * ipa-pure-const.c: Likewise.
23750         * tree-if-conv.c: Likewise.
23751         * matrix-reorg.c: Do not include c-common.h and c-tree.h.
23752         * ipa-struct-reorg.c: Likewise.
23753         * tree-nomudflap.c: Likewise.
23754         * tree-ssa-structalias.c: Likewise.
23755
23756 2009-05-01  Steven Bosscher  <steven@gcc.gnu.org>
23757
23758         * store-motion.c: Many cleanups to make this pass a first-class
23759         citizen instead of an appendix to gcse load motion.  Add TODO list
23760         to make this pass faster/cleaner/better.
23761
23762         (struct ls_expr): Post gcse.c-split cleanups.
23763         Rename to st_expr.  Rename "loads" field to "antic_stores".  Rename
23764         "stores" field to "avail_stores".
23765         (pre_ldst_mems): Rename to store_motion_mems.
23766         (pre_ldst_table): Rename to store_motion_mems_table.
23767         (pre_ldst_expr_hash): Rename to pre_st_expr_hash, update users.
23768         (pre_ldst_expr_eq): Rename to pre_st_expr_eq, update users.
23769         (ldst_entry): Rename to st_expr_entry, update users.
23770         (free_ldst_entry): Rename to free_st_expr_entry, update users.
23771         (free_ldst_mems): Rename to free_store_motion_mems, update users.
23772         (enumerate_ldsts): Rename to enumerate_store_motion_mems,
23773         update caller.
23774         (first_ls_expr): Rename to first_st_expr, update users.
23775         (next_ls_expr): Rename to next_st_expr, update users.
23776         (print_ldst_list): Rename to print_store_motion_mems.  Print names of
23777         fields properly for store motion instead of names inherited from load
23778         motion in gcse.c.
23779         (ANTIC_STORE_LIST, AVAIL_STORE_LIST): Remove.
23780         (LAST_AVAIL_CHECK_FAILURE): Explain what this is.  Undefine when we
23781         are done with it.
23782
23783         (ae_kill): Rename to st_kill, update users.
23784         (ae_gen): Rename to st_avloc, update users.
23785         (transp): Rename to st_transp, update users.
23786         (pre_insert_map): Rename to st_insert_map, update users.
23787         (pre_delete_map): Rename to st_delete_map, update users.
23788         (insert_store, build_store_vectors, free_store_memory,
23789         one_store_motion_pass): Update for abovementioned changes.
23790
23791         (gcse_subst_count, gcse_create_count): Remove.
23792         (one_store_motion_pass): New statistics counters "n_stores_deleted"
23793         and "n_stores_created", local variables.
23794
23795         (extract_mentioned_regs, extract_mentioned_regs_1): Rewrite to
23796         use for_each_rtx.
23797
23798         (regvec, compute_store_table_current_insn): Remove.
23799         (reg_set_info, reg_clear_last_set): Remove.
23800         (compute_store_table): Use DF caches instead of local dataflow
23801         solvers.
23802
23803 2009-05-01  Joseph Myers  <joseph@codesourcery.com>
23804
23805         * c-objc-common.c (c_tree_printer): Print identifiers with
23806         pp_identifier, not pp_string.  Mark "({anonymous})" for
23807         translation.
23808         * c-pretty-print.c (pp_c_ws_string): New.
23809         (pp_c_cv_qualifier, pp_c_type_specifier,
23810         pp_c_specifier_qualifier_list, pp_c_parameter_type_list,
23811         pp_c_storage_class_specifier, pp_c_function_specifier,
23812         pp_c_attributes, pp_c_bool_constant, pp_c_constant,
23813         pp_c_primary_expression, pp_c_postfix_expression,
23814         pp_c_unary_expression, pp_c_shift_expression,
23815         pp_c_relational_expression, pp_c_equality_expression,
23816         pp_c_logical_and_expression, pp_c_logical_or_expression): Mostly
23817         use pp_string and pp_c_ws_string in place of pp_identifier and
23818         pp_c_identifier for non-identifiers.  Mark English strings for
23819         translation.
23820         * c-pretty-print.h (pp_c_ws_string): Declare.
23821
23822 2009-04-30  Paul Pluzhnikov  <ppluzhnikov@google.com>
23823             Roland McGrath <roland@redhat.com>
23824
23825         * configure.ac (HAVE_LD_BUILDID): New check for ld --build-id support.
23826         (ENABLE_LD_BUILDID): New configuration option.
23827         * gcc.c [HAVE_LD_BUILDID and ENABLE_LD_BUILDID]
23828         (LINK_BUILDID_SPEC): New macro.
23829         (init_spec): If defined, prepend it between LINK_EH_SPEC and
23830         link_spec.
23831         * doc/install.texi: Document --enable-linker-build-id option.
23832         * configure: Rebuild.
23833         * config.in: Rebuild.
23834
23835 2009-04-30  Adam Nemet  <anemet@caviumnetworks.com>
23836
23837         * config/mips/mips.h (FRAME_GROWS_DOWNWARD,
23838         MIPS_GP_SAVE_AREA_SIZE): Define new macros.
23839         (STARTING_FRAME_OFFSET): Return 0 if FRAME_GROWS_DOWNWARD.  Use
23840         MIPS_GP_SAVE_AREA_SIZE.
23841         * config/mips/mips.c (struct mips_frame_info): Update comment
23842         before arg_pointer_offset and hard_frame_pointer_offset.
23843         (mips_compute_frame_info): Update diagram before function: to
23844         correctly use stack_pointer_rtx for fp_sp_offset and gp_sp_offset, to
23845         indicate the position of frame_pointer_rtx with -fstack-protector and
23846         to show args_size.  Don't allocate cprestore area for leaf functions
23847         if FRAME_GROWS_DOWNWARD.  Use MIPS_GP_SAVE_AREA_SIZE to set
23848         cprestore_size.
23849         (mips_initial_elimination_offset): Update for FRAME_GROWS_DOWNWARD.
23850
23851 2009-04-30  Michael Matz  <matz@suse.de>
23852
23853         PR tree-optimization/39955
23854         * config/rs6000/rs6000.c (rs6000_check_sdmode): Also check SSA_NAMEs.
23855
23856 2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
23857
23858         * ira.c (setup_cover_and_important_classes):  Use safe macro
23859         REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint
23860         directly.
23861         * genpreds.c (write_tm_preds_h):  Output suitable definition of
23862         REG_CLASS_FOR_CONSTRAINT.
23863
23864 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23865
23866         * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
23867         instead of an int.
23868         * bitmap.c (bitmap_descriptor): Likewise.
23869         * ggc-common.c (loc_descriptor): Likewise.
23870         * varray.c (varray_descriptor): Likewise.
23871         * vec.c (vec_descriptor): Likewise.
23872
23873 2009-04-30  Eric Botcazou  <ebotcazou@adacore.com>
23874
23875         * Makefile.in (dce.o): Add $(EXCEPT_H).
23876         * dce.c: Include except.h and delete redundant vector definitions.
23877         (deletable_insn_p): Return false for non-call insns that can throw
23878         if DF is running.
23879
23880 2009-04-30  Steven Bosscher  <steven@gcc.gnu.org>
23881
23882         * gcse.c (ae_gen): Remove.
23883         (can_assign_to_reg_p): Rename to can_assign_to_reg_without_clobbers_p
23884         and make non-static function to make it available in store-motion.c.
23885         Update call sites with search-and-replace.
23886         (enumerate_ldsts, reg_set_info, reg_clear_last_set, store_ops_ok,
23887         extract_mentioned_regs, extract_mentioned_regs_helper,
23888         find_moveable_store, compute_store_table, load_kills_store, find_loads,
23889         store_killed_in_insn, store_killed_after, store_killed_before,
23890         build_store_vectors, insert_insn_start_basic_block, insert-store,
23891         remove_reachable_equiv_notes, replace_store_insn, delete_store,
23892         free_store_memory, one_store_motion_pass, gate_rtl_store_motion,
23893         execute_rtl_store_motion, pass_rtl_store_motion): Move to...
23894         * store-motion.c: ...new file.  Also copy data structures from gcse.c
23895         and clean up to remove parts not used by store motion.
23896         * rtl.h (can_assign_to_reg_without_clobbers_p): Add prototype.
23897         * Makefile.in (store-motion.o): New rule. Add to OBJS-common.
23898
23899 2009-04-30  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
23900
23901         PR target/38571
23902         * config/arm/arm.h (FUNCTION_BOUNDARY): Set to 16 for thumb
23903         when optimizing for size.
23904
23905 2009-04-30  Hans-Peter Nilsson  <hp@axis.com>
23906
23907         * gcse.c (gcse_constant_p): Fix typo in last change.
23908
23909 2009-04-30  Rafael Avila de Espindola  <espindola@google.com>
23910
23911         * plugin.c: Include plugin-version.h only if ENABLE_PLUGIN is defined.
23912
23913 2009-04-30  Andreas Krebbel  <krebbel1@de.ibm.com>
23914
23915         * gcse.c (gcse_constant_p): Make sure the constant is sharable.
23916
23917 2009-04-29  James E. Wilson  <wilson@codesourcery.com>
23918
23919         * config/mips/mips.c (mips_add_offset): Use gen_int_mode for
23920         CONST_HIGH_PART result.
23921
23922 2009-04-29  Anatoly Sokolov  <aesok@post.ru>
23923
23924         * config/avr/avr.c (initial_elimination_offset): Rename to
23925         avr_initial_elimination_offset.
23926         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p,
23927         change return type to bool.
23928         (avr_can_eliminate): New function.
23929         * config/avr/avr.h (CAN_ELIMINATE): Use avr_can_eliminate.
23930         (FRAME_POINTER_REQUIRED): Use avr_frame_pointer_required_p.
23931         (INITIAL_ELIMINATION_OFFSET): Use avr_initial_elimination_offset.
23932         * config/avr/avr-protos.h (initial_elimination_offset): Rename to
23933         avr_initial_elimination_offset.
23934         (frame_pointer_required_p): Rename to avr_frame_pointer_required_p.
23935         (avr_initial_elimination_offset): Define.
23936
23937 2009-04-29  Eric Botcazou  <ebotcazou@adacore.com>
23938             Steven Bosscher  <steven@gcc.gnu.org>
23939
23940         PR rtl-optimization/39938
23941         * Makefile.in (cfgrtl.o): Add $(INSN_ATTR_H).
23942         * cfgrtl.c: Include insn-attr.h.
23943         (rest_of_pass_free_cfg): New function.
23944         (pass_free_cfg): Use rest_of_pass_free_cfg as execute function.
23945         * resource.c (init_resource_info): Remove call to df_analyze.
23946
23947 2009-04-29  Richard Guenther  <rguenther@suse.de>
23948
23949         PR target/39943
23950         * config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
23951         allow conversion to signed integers.
23952
23953 2009-04-29  Richard Guenther  <rguenther@suse.de>
23954
23955         * tree-cfg.c (verify_gimple_assign_binary): Allow vector
23956         shifts of floating point vectors if the shift amount is
23957         a constant multiple of the element size.
23958
23959 2009-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>
23960             Michael Matz  <matz@suse.de>
23961
23962         PR middle-end/39927
23963         PR bootstrap/39929
23964         * tree-outof-ssa.c (emit_partition_copy): New function.
23965         (insert_partition_copy_on_edge, insert_rtx_to_part_on_edge,
23966         insert_part_to_rtx_on_edge): Perform the partition base var
23967         copy using emit_partition_copy.
23968         (insert_value_copy_on_edge): Convert constants to the right mode.
23969         (insert_rtx_to_part_on_edge): Add UNSIGNEDSRCP parameter.
23970         (elim_create): Pass the sign of the src to insert_rtx_to_part_on_edge.
23971
23972 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23973
23974         * config/bfin/bfin.c (bfin_optimize_loop): If we need a scratch reg,
23975         scan backwards to try to find a constant to initialize it.
23976
23977         * config/bfin/bfin.c (bfin_optimize_loop): When looking for the last
23978         insn before the loop_end instruction, don't look past labels.
23979
23980 2009-04-29  Richard Guenther  <rguenther@suse.de>
23981
23982         PR middle-end/39937
23983         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
23984         loose type conversions.
23985         (forward_propagate_addr_expr): Fix tuplification bug.  Remove
23986         stmts only if there are no uses of its definition.
23987
23988 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
23989
23990         * config/bfin/bfin.h (splitting_loops): Declare.
23991         * config/bfin/bfin-protos.h (WA_05000257, WA_05000283, WA_05000315):
23992         Reorder bit definitions to be ascending.
23993         (WA_LOAD_LCREGS, ENABLE_WA_LOAD_LCREGS): New macros.
23994         * config/bfin/bfin.c (splitting_loops): New variable.
23995         (bfin_cpus): Add WA_LOAD_LCREGS as needed.
23996         (struct loop_info): Remove members INIT and LOOP_INIT.
23997         (bfin_optimize_loop): Don't set them.  Reorder the code that generates
23998         the LSETUP sequence.  Allow LC to be loaded from any register, but
23999         also add a case to push/pop a PREG scratch if ENABLE_WA_LOAD_LCREGS.
24000         (bfin_reorg_loops): When done, split all BB_ENDs with splitting_loops
24001         set to 1.
24002         * config/bfin/bfin.md (loop_end splitter): Use splitting_loops instead
24003         of reload_completed.
24004
24005         From Jie Zhang:
24006         * config/bfin/bfin.md (movsi_insn): Refine constraints.
24007
24008 2009-04-29  Rafael Avila de Espindola  <espindola@google.com>
24009
24010         * Makefile.in (PLUGIN_VERSION_H): New.
24011         (OBJS-common): Remove plugin-version.o.
24012         (plugin.o): Depend on (PLUGIN_VERSION_H).
24013         (plugin-version.o): Remove.
24014         * configure: Regenerate
24015         * configure.ac: Create plugin-version.h.
24016         * gcc-plugin.h (plugin_gcc_version): Remove.
24017         (plugin_default_version_check): Change signature.
24018         * plugin-version.c: Remove.
24019         * plugin.c: Include plugin-version.h.
24020         (str_plugin_gcc_version_name): Remove.
24021         (try_init_one_plugin): Pass gcc version to plugin_init.
24022         (plugin_default_version_check): Both gcc and plugin versions are now
24023         arguments.
24024
24025 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24026
24027         * config/bfin/bfin.c (bfin_optimize_loop): Unify handling of
24028         problematic last insns.  Test for TYPE_CALL rather than CALL_P.
24029         Remove special case testing for last insn of inner loops. Don't fail
24030         if the loop ends with a jump, emit an extra nop instead.
24031
24032         * config/bfin/bfin.c (bfin_register_move_cost): Test for subsets of
24033         DREGS rather than comparing directly.  Remove code that tries to
24034         account for latencies.
24035
24036 2009-04-29  Richard Guenther  <rguenther@suse.de>
24037
24038         PR tree-optimization/39941
24039         * tree-ssa-pre.c (eliminate): Schedule update-ssa after
24040         eliminating an indirect call.
24041
24042 2009-04-29  Richard Guenther  <rguenther@suse.de>
24043
24044         * tree-cfg.c (verify_types_in_gimple_reference): Add require_lvalue
24045         parameter.  Allow invariants as base if !require_lvalue.
24046         (verify_gimple_assign_single): Adjust.
24047
24048 2009-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
24049
24050         * config/bfin/bfin.md (sp_or_sm, spm_string, spm_name): New macro.
24051         (ss<spm_name>hi3, ss<spm_name>hi3_parts, ss<spm_name>hi3_low_parts,
24052         ss<spm_name_hi3_high_parts): New patterns, replacing ssaddhi3,
24053         ssubhi3, ssaddhi3_parts and sssubhi3_parts.
24054         (flag_mulhi3_parts): Produce a HImode output rather than trying to set
24055         a VEC_SELECT.
24056         * config/bfin/bfin.c (bfin_expand_builtin,
24057         case BFIN_BUILTIN_CPLX_SQU): Adjust accordingly.
24058
24059 2009-04-28  Richard Guenther  <rguenther@suse.de>
24060
24061         * tree-vect-loop.c (get_initial_def_for_induction): Use
24062         correct types for pointer increment.
24063
24064 2009-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
24065
24066         * toplev.c (print_version): Update GMP version string calculation.
24067
24068 2009-04-28  Eric Botcazou  <ebotcazou@adacore.com>
24069
24070         PR rtl-optimization/39938
24071         * resource.c (init_resource_info): Add call to df_analyze.
24072
24073 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24074
24075         * config/alpha/alpha.md (usegp): Cast the result of
24076         alpha_find_lo_sum_using_gp to enum attr_usegp.
24077         * config/alpha/alpha.c (override_options): Remove end-of-structure
24078         marker element from cpu_table.  Use array size of cpu_table to handle
24079         -mcpu and -mtune options.
24080         (tls_symbolic_operand_type): Change 0 to TLS_MODEL_NONE.
24081
24082 2009-04-28  Joseph Myers  <joseph@codesourcery.com>
24083
24084         * config.gcc (powerpc*-*-* | rs6000-*-*): Add
24085         rs6000/option-defaults.h to tm_file.  Support cpu_32, cpu_64,
24086         tune_32 and tune_64.
24087         * doc/install.texi (--with-cpu-32, --with-cpu-64): Document
24088         support on PowerPC.
24089         * config/rs6000/rs6000.h (OPTION_DEFAULT_SPECS): Move to ...
24090         * config/rs6000/option-defaults.h: ... here.  New file.
24091         (OPT_64, OPT_32): Define.
24092         (MASK_64BIT): Define to 0 if not already defined.
24093         (OPT_ARCH64, OPT_ARCH32): Define.
24094         (OPTION_DEFAULT_SPECS): Add entries for cpu_32, cpu_64, tune_32
24095         and tune_64.
24096
24097 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24098
24099         * config/arm/arm.c (arm_override_options): Emit error on using
24100         fpa with AAPCS.
24101
24102 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24103
24104         PR rtl-optimization/39914
24105         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
24106         registers for allocnos created from user-defined variables only
24107         when not optimizing.
24108
24109 2009-04-28  Richard Guenther  <rguenther@suse.de>
24110
24111         PR middle-end/39937
24112         * fold-const.c (fold_binary): Use distribute_real_division only
24113         on float types.
24114
24115 2009-04-28  Steve Ellcey  <sje@cup.hp.com>
24116
24117         * config.gcc (hppa*64*-*-hpux11*): Set use_gcc_stdint and
24118         add hpux-stdint.h to tm_file.
24119         (hppa[12]*-*-hpux11*): Ditto.
24120         (ia64*-*-hpux*): Ditto.
24121         * config/hpux-stdint.h: New.
24122         * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Set
24123         __STDC_EXT__ for all compiles.
24124         * config/pa/pa-hpux.h: Ditto.
24125         * config/pa/pa-hpux10.h: Ditto.
24126         * config/pa/pa-hpux11.h: Ditto.
24127
24128 2009-04-28  Catherine Moore  <clm@codesourcery.com>
24129
24130         * debug.h (set_name): Add comment.
24131
24132 2009-04-28  Andrew Pinski  <pinskia@gmail.com>
24133
24134         PR target/39929
24135         * config/darwin.c (machopic_gen_offset): Check
24136         currently_expanding_to_rtl if current_ir_type returns IR_GIMPLE.
24137         * config/arm/arm.c (require_pic_register): Likewise.
24138
24139 2009-04-28  Paolo Bonzini  <bonzini@gnu.org>
24140
24141         * config/m32c/m32c.c (TARGET_PROMOTE_FUNCTION_RETURN,
24142         m32c_promote_function_return, TARGET_PROMOTE_PROTOTYPES,
24143         m32c_promote_prototypes): Delete.
24144
24145 2009-04-28  Michael Matz  <matz@suse.de>
24146
24147         PR middle-end/39922
24148         * tree-outof-ssa.c (insert_value_copy_on_edge): Don't convert
24149         constants.
24150
24151 2009-04-28  Richard Guenther  <rguenther@suse.de>
24152
24153         * tree-vect-stmts.c (vect_get_vec_def_for_operand): Fix type error.
24154
24155 2009-04-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24156
24157         * config/arm/arm-cores.def: Add support for arm1156t2f-s.
24158         * doc/invoke.texi (ARM Options): Document support for arm1156t2f-s.
24159         * config/arm/arm-tune.md: Regenerate.
24160
24161 2009-04-28  Alexander Monakov  <amonakov@ispras.ru>
24162
24163         * sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
24164         block if there are complex incoming edges.
24165         (sel_merge_blocks): Remove useless assert.
24166         (sel_redirect_edge_and_branch): Check that edge was redirected.
24167         * sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
24168         (sel_find_rgns): Delete declaration.
24169         * sel-sched.c (purge_empty_blocks): Attempt to remove first block of
24170         the region when it is not a preheader.
24171
24172 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24173
24174         PR c/39323
24175         * config/alpha/elf.h (MAX_OFILE_ALIGNMENT): Sync with elfos.h
24176
24177 2009-04-28  Richard Guenther  <rguenther@suse.de>
24178
24179         * tree.h (SSA_NAME_VALUE): Remove.
24180         (struct tree_ssa_name): Remove value_handle member.
24181         * tree-vrp.c (execute_vrp): Initialize/free the value-handle
24182         array for jump threading.
24183         * tree-ssa-propagate.c (ssa_prop_init): Do not initialize
24184         SSA_NAME_VALUEs.
24185         * print-tree.c (print_node): Do not dump SSA_NAME_VALUEs.
24186         * tree-flow.h (threadedge_initialize_values): Declare.
24187         (threadedge_finalize_values): Likewise.
24188         * tree-ssa-threadedge.c (ssa_name_values): New global variable.
24189         (SSA_NAME_VALUE): Define.
24190         (threadedge_initialize_values): New function.
24191         (threadedge_finalize_values): Likewise.
24192         * tree-ssa-dom.c (ssa_name_values): New global variable.
24193         (SSA_NAME_VALUE): Define.
24194         (tree_ssa_dominator_optimize): Initialize/free the value-handle array.
24195
24196 2009-04-28  Ira Rosen  <irar@il.ibm.com>
24197
24198         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks):
24199         Use REPORT_VECTORIZED_LOCATIONS instead
24200         REPORT_VECTORIZED_LOOPS.
24201         * tree-vectorizer.c (vect_verbosity_level): Make static.
24202         (vect_loop_location): Rename to vect_location.
24203         (vect_set_verbosity_level): Update comment.
24204         (vect_set_dump_settings): Use REPORT_VECTORIZED_LOCATIONS
24205         and vect_location.
24206         (vectorize_loops): Fix comment. Use REPORT_VECTORIZED_LOCATIONS
24207         and vect_location. Use REPORT_UNVECTORIZED_LOCATIONS
24208         instead REPORT_UNVECTORIZED_LOOPS.
24209         * tree-vectorizer.h (enum vect_def_type): Rename vect_invariant_def
24210         and vect_loop_def to vect_external_def and vect_internal_def.
24211         (enum verbosity_levels): Rename REPORT_VECTORIZED_LOOPS
24212         and REPORT_UNVECTORIZED_LOOPS to REPORT_VECTORIZED_LOCATIONS and
24213         REPORT_UNVECTORIZED_LOCATIONS.
24214         (enum vect_relevant): Update comment. Rename vect_unused_in_loop
24215         and vect_used_in_loop and to vect_unused_in_scope and
24216         vect_used_in_scope.
24217         (STMT_VINFO_RELEVANT_P): Use vect_unused_in_scope.
24218         (vect_verbosity_level): Remove declaration.
24219         (vect_analyze_operations): Likewise.
24220         (vect_analyze_stmt): Declare.
24221         * tree-vect-loop.c (vect_determine_vectorization_factor): Use
24222         REPORT_UNVECTORIZED_LOCATIONS.
24223         (vect_get_loop_niters): Fix indentation.
24224         (vect_analyze_loop_form): Use REPORT_UNVECTORIZED_LOCATIONS.
24225         (vect_analyze_loop_operations): New function.
24226         (vect_analyze_loop): Call vect_analyze_loop_operations instead of
24227         vect_analyze_operations.
24228         (vect_is_simple_reduction): Use new names.
24229         (vectorizable_live_operation, vect_transform_loop): Likewise.
24230         * tree-vect-data-refs.c (vect_check_interleaving): Add a return value
24231         to specify whether the data references can be a part of interleaving
24232         chain.
24233         (vect_analyze_data_ref_dependence): Use new names.
24234         (vect_analyze_data_refs_alignment, vect_analyze_data_refs): Likewise.
24235         (vect_create_addr_base_for_vector_ref): Remove redundant code.
24236         * tree-vect-patterns.c (widened_name_p): Use new names.
24237         (vect_recog_dot_prod_pattern): Likewise.
24238         * tree-vect-stmts.c (vect_stmt_relevant_p): Use new names.
24239         (process_use, vect_mark_stmts_to_be_vectorized,
24240         vect_model_simple_cost, vect_model_store_cost,
24241         vect_get_vec_def_for_operand, vect_get_vec_def_for_stmt_copy,
24242         vectorizable_call, vectorizable_conversion, vectorizable_assignment,
24243         vectorizable_operation, vectorizable_type_demotion,
24244         vectorizable_type_promotion, vectorizable_store, vectorizable_load,
24245         vectorizable_condition): Likewise.
24246         (vect_analyze_operations): Split into vect_analyze_loop_operations
24247         and ...
24248         (vect_analyze_stmt): ... new function.
24249         (new_stmt_vec_info): Use new names.
24250         (vect_is_simple_use): Use new names and fix comment.
24251         * tree-vect-slp.c (vect_get_and_check_slp_defs): Use new names.
24252         (vect_build_slp_tree, vect_analyze_slp, vect_schedule_slp): Likewise.
24253
24254 2009-04-28  Uros Bizjak  <ubizjak@gmail.com>
24255
24256         PR target/39911
24257         * config/i386/i386.c (print_operand) ['Z']: Handle floating point
24258         and integer modes for x87 operands.  Do not ICE for unsupported size,
24259         generate error instead.  Generate error for unsupported operand types.
24260         ['z']: Do not handle HImode memory operands specially.  Warning
24261         for floating-point operands.  Fallthru to 'Z' for unsupported operand
24262         types.  Do not ICE for unsupported size, generate error instead.
24263         (output_387_binary_op): Use %Z to output operands.
24264         (output_fp_compare): Ditto.
24265         (output_387_reg_move): Ditto.
24266
24267 2009-04-28  Ben Elliston  <bje@au.ibm.com>
24268
24269         PR c++/35652
24270         Revert:
24271
24272         2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
24273
24274         * builtins.c (c_strlen): Do not warn here.
24275         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
24276         * c-common.c (pointer_int_sum): Take an explicit location.
24277         Warn about offsets out of bounds.
24278         * c-common.h (pointer_int_sum): Adjust declaration.
24279
24280 2009-04-27  Ian Lance Taylor  <iant@google.com>
24281
24282         * collect2.c (is_ctor_dtor): Change type of ret field in struct
24283         names to symkind.
24284         * dce.c (run_fast_df_dce): Change type of old_flags to int.
24285         * df-core.c (df_set_flags): Change return type to int.  Change
24286         type of old_flags to int.
24287         (df_clear_flags): Likewise.
24288         * df-scan.c (df_def_record_1): Change 0 to VOIDmode.
24289         (df_get_conditional_uses): Likewise.
24290         * df.h (df_set_flags, df_clear_flags): Update declarations.
24291         * dwarf2out.c (struct indirect_string_node): Change type of form
24292         field to enum dwarf_form.
24293         (AT_string_form): Change return type to enum dwarf_form.
24294         * fixed-value.c (fixed_compare): Add cast to enum type.
24295         * fwprop.c (update_df): Change 0 to VOIDmode.
24296         * gensupport.c: Change 0 to UNKNOWN.
24297         * gimple.h (gimple_cond_code): Add cast to enum type.
24298         * haifa-sched.c (reemit_notes): Add cast to enum type.
24299         * hooks.c (hook_int_void_no_regs): Remove function.
24300         * hooks.h (hook_int_void_no_regs): Remove declaration.
24301         * optabs.c (expand_widen_pattern_expr): Change 0 to VOIDmode.
24302         * predict.c (combine_predictions_for_insn): Add casts to enum type.
24303         * real.c (real_arithmetic): Add cast to enum type.
24304         (real_compare): Likewise.
24305         * target.h (struct gcc_target): Change return type of
24306         branch_target_register_class to enum reg_class.
24307         * target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define as
24308         default_branch_target_register_class.
24309         * targhooks.c (default_branch_target_register_class): New function.
24310         * targhooks.h (default_branch_target_register_class): Declare.
24311         * tree-data-ref.c (print_direction_vector): Add cast to enum type.
24312         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Remove
24313         cast to int.
24314         * tree-vect-loop.c (vect_create_epilog_for_reduction): Change 0 to
24315         ERROR_MARK.
24316         * tree-vect-slp.c (vect_build_slp_tree): Change 0 to
24317         vect_uninitialized_def.  Change 0 to ERROR_MARK.
24318         * tree-vect-stmts.c (supportable_widening_operation): Don't
24319         initialize icode1 and icode2.
24320         * tree-vectorizer.h (enum vect_def_type): Add vect_uninitialized_def.
24321         * config/sol2-c.c (cmn_err_length_specs): Change 0 to FMT_LEN_none
24322         and to STD_C89.
24323         (cmn_err_flag_specs): Change 0 to STD_C89.
24324         (cmn_err_char_table): Likewise.
24325         * config/arm/arm.c (get_arm_condition_code): Change type of code
24326         to enum arm_cond_code.
24327         (IWMMXT_BUILTIN): Change 0 to UNKNOWN.
24328         (IWMMXT_BUILTIN2): Likewise.
24329         (neon_builtin_type_bits): Don't define typedef.
24330         (neon_builtin_datum): Change type of bits field to int.
24331         (arm_expand_neon_args): Add cast to enum type.
24332         * config/ia64/ia64.c (tls_symbolic_operand_type): Change 0 to
24333         TLS_MODEL_NONE.
24334         * config/i386/i386.c (bdesc_multi_arg): Change 0 to UNKNOWN.  Add
24335         casts to enum type.
24336         * config/mips/mips.c (LOONGSON_BUILTIN_ALIAS): Change 0 to
24337         MIPS_FP_COND_f.
24338         * config/mips/mips.md (jal_macro): Return enum constant.
24339         (single_insn): Likewise.
24340         * config/rs6000/rs6000.c (bdesc_altivec_preds): Change 0 to
24341         CODE_FOR_nothing.
24342         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
24343         casts to enum type.
24344         * config/s390/s390.c (s390_tune_flags): Change type to int.
24345         (s390_arch_flags): Likewise.
24346         (s390_handle_arch_option): Change flags field of struct pta to int.
24347         * config/s390/s390.h (s390_tune_flags): Update declaration.
24348         (s390_arch_flags): Likewise.
24349         * config/sh/sh.c (prepare_move_operands): Compare
24350         tls_symbolic_operand result with enum constant.
24351         (sh_reorg): Change PUT_MODE to PUT_REG_NOTE_KIND.
24352         (sh_expand_prologue): Add cast to enum type.
24353         (sh_expand_epilogue): Likewise.
24354         (tls_symbolic_operand): Change return type to enum tls_model.
24355         (fpscr_set_from_mem): Add cast to enum type.
24356         (legitimize_pic_address): Compare tls_symbolic_operand result with
24357         enum constant.
24358         (sh_target_reg_class): Change return type to enum reg_class.
24359         * config/sh/sh.h (OVERRIDE_OPTIONS): Change CPU_xxx to
24360         PROCESSOR_xxx.
24361         * config/sh/sh-protos.h (tls_symbolic_operand): Update declaration.
24362         * config/sparc/sparc.c (sparc_override_options): Add cast to enum type.
24363         * config/sparc/sparc.md (empty_delay_slot): Return enum constant.
24364         (pic, calls_alloca, calls_eh_return, leaf_function): Likewise.
24365         (delayed_branch, tls_call_delay): Likewise.
24366         (eligible_for_sibcall_delay): Likewise.
24367         (eligible_for_return_delay): Likewise.
24368         * config/spu/spu.c (expand_builtin_args): Add cast to enum type.
24369         (spu_expand_builtin_1): Likewise.
24370
24371         * c-typeck.c (convert_for_assignment): Issue -Wc++-compat warnings
24372         for all types of conversions.
24373         (output_init_element): Issue -Wc++-compat warning if needed when
24374         initializing a bitfield with enum type.
24375         * c-parser.c (c_parser_expression): Set original_type to
24376         original_type of right hand operand of comma operator.
24377
24378 2009-04-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24379
24380         * doc/c-tree.texi (Types, Functions, Expression trees): Fix
24381         grammar nits.
24382         * doc/cfg.texi (Maintaining the CFG, Liveness information): Likewise.
24383         * doc/cpp.texi (Standard Predefined Macros)
24384         (Implementation-defined behavior): Likewise.
24385         * doc/extend.texi (Function Attributes, Type Attributes): Likewise.
24386         * doc/gimple.texi (GIMPLE Exception Handling)
24387         (@code{GIMPLE_ASSIGN}): Likewise.
24388         * doc/install.texi (Prerequisites, Configuration, Specific): Likewise.
24389         * doc/invoke.texi (Warning Options, Optimize Options)
24390         (AVR Options, Darwin Options): Likewise.
24391         (Optimize Options): Reformulate -fwhole-program description.
24392         * doc/loop.texi (Lambda): Likewise.
24393         * doc/md.texi (Output Template, Define Constraints)
24394         (Standard Names, Insn Splitting): Likewise.
24395         * doc/options.texi (Option properties): Likewise.
24396         * doc/passes.texi (Tree-SSA passes): Likewise.
24397         * doc/rtl.texi (Side Effects, Assembler, Insns): Likewise.
24398         * doc/tm.texi (Register Classes, Old Constraints, Scalar Return)
24399         (File Names and DBX): Likewise.
24400         * doc/trouble.texi (Incompatibilities): Likewise.
24401
24402 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24403
24404         * spu.c (spu_machine_dependent_reorg): Make sure branch label on hint
24405         instruction is correct.
24406
24407 2009-04-27  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
24408
24409         Allow non-constant arguments to conversion intrinsics.
24410         * spu-protos.h (exp2_immediate_p, spu_gen_exp2): Declare.
24411         * predicates.md (spu_inv_exp2_operand, spu_exp2_operand): New.
24412         * spu.c (print_operand): Handle 'v' and 'w'.
24413         (exp2_immediate_p, spu_gen_exp2): Define.
24414         * spu-builtins.def (spu_convts, spu_convtu, spu_convtf_0,
24415         spu_convtf_1): Update parameter descriptions.
24416         * spu-builtins.md (spu_csflt, spu_cuflt, spu_cflts, spu_cfltu): Update.
24417         * constraints.md ('v', 'w'): New.
24418         * spu.md (UNSPEC_CSFLT, UNSPEC_CFLTS, UNSPEC_CUFLT, UNSPEC_CFLTU):
24419         Remove.
24420         (i2f, I2F): New define_mode_attr.
24421         (floatsisf2, floatv4siv4sf2, fix_truncsfsi2, fix_truncv4sfv4si2,
24422         floatunssisf2, floatunsv4siv4sf2, fixuns_truncsfsi2,
24423         fixuns_truncv4sfv4si2):  Update to use mode attribute.
24424         (float<mode><i2f>2_mul, float<mode><i2f>2_div,
24425         fix_trunc<mode><f2i>2_mul, floatuns<mode><i2f>2_mul,
24426         floatuns<mode><i2f>2_div, fixuns_trunc<mode><f2i>2_mul): New
24427         patterns for combine.
24428
24429 2009-04-27  Steven Bosscher  <steven@gcc.gnu.org>
24430
24431         * dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
24432         (cprop, hoist, pre, store_motion): New debug counters.
24433         * tree-pass.h (pass_tracer): Move to list of gimple passes, it
24434         is not an RTL pass anymore.
24435         (pass_profiling): Remove extern decl for pass removed in 2005.
24436         (pass_gcse, pass_jump_bypass): Remove.
24437         * final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
24438         to 0 for clean state.
24439         * toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
24440         * cse.c (gate_handle_cse_after_global_opts,
24441         rest_of_handle_cse_after_global_opts): New functions.
24442         (pass_cse_after_global_opts): New pass, does local CSE.
24443         * timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
24444         (TV_CPROP): New timevar.
24445         * gcse.c (flag_rerun_cse_after_global_opts): New global variable.
24446         (run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
24447         (gcse_main, recompute_all_luids): Remove.
24448         (compute_hash_table_work): Call max_reg_num instead of reading
24449         max_gcse_regno.
24450         (cprop_jump): Don't set run_jump_opt_after_gcse.
24451         (constprop_register): Always allow to alter jumps.
24452         (cprop_insn): Likewise.
24453         (do_local_cprop): Likewise.
24454         (local_cprop_pass): Likewise.  Return non-zero if something changed.
24455         (cprop): Remove function, fold interesting bits into one_cprop_pass.
24456         (find_implicit_sets): Add note about missed optimization opportunity.
24457         (one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
24458         pass_rtl_cprop execute function.
24459         Don't bother tracking the pass number, each pass gets its own dumpfile
24460         now anyway.
24461         Always allow to alter jumpsand bypass jumps.
24462         (bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
24463         will just find no suitable set.
24464         (pre_edge_insert): Fix dumping, this function is for PRE only.
24465         (one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
24466         pass_rtl_pre execute function.
24467         (hoist_code): Return non-zero if something changed.  Keep track of
24468         substitutions and insertions for statistics gathering similar to PRE.
24469         (one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
24470         called from the pass_rtl_hoist execute function.  Show pass statistics.
24471         (compute_store_table): Use max_reg_num directly instead of using the
24472         formerly global max_gcse_regno.
24473         (build_store_vectors): Likewise.
24474         (replace_store_insn): Fix dumping.
24475         (store_motion): Rename to ...
24476         (one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
24477         pass, called from the pass_rtl_store_motion execute function.  Keep
24478         track of substitutions and insertions for statistics gathering similar
24479         to PRE.
24480         (bypass_jumps): Remove, fold interesting bits into ...
24481         (one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
24482         from the pass_rtl_cprop execute function.
24483         (gate_handle_jump_bypass, rest_of_handle_jump_bypass,
24484         pass_jump_bypass): Remove.
24485         (gate_handle_gcse, rest_of_handle_gcse): Remove.
24486         (gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
24487         (gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
24488         (gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
24489         (gate_rtl_store_motion, execute_rtl_store_motion,
24490         pass_rtl_store_motion): New.
24491         * common.opt: Remove flag_cse_skip_blocks, adjust documentation to
24492         make it clear that -fcse-skip-blocks is a no-op for backward compat.
24493         * passes.c (init_optimization_passes): Remove pass_gcse and
24494         pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
24495         and cse_after_global_opts in place of pass_gcse.  Schedule cprop
24496         instead of pass_jump_bypass.
24497
24498 2009-04-27  Richard Guenther  <rguenther@suse.de>
24499
24500         PR middle-end/39928
24501         * gimplify.c (gimplify_expr): If we are required to create
24502         a temporary make sure it ends up as register.
24503
24504 2009-04-27  H.J. Lu  <hongjiu.lu@intel.com>
24505
24506         PR target/39903
24507         * config/i386/i386.c (construct_container): Don't call
24508         gen_reg_or_parallel with BLKmode on X86_64_SSE_CLASS,
24509         X86_64_SSESF_CLASS and X86_64_SSEDF_CLASS.
24510
24511 2009-04-27  Michael Matz  <matz@suse.de>
24512
24513         * ssaexpand.h (struct ssaexpand): Member 'values' is a bitmap.
24514         (get_gimple_for_ssa_name): Adjust, lookup using SSA_NAME_DEF_STMT.
24515         * tree-ssa-live.h (find_replaceable_exprs): Return a bitmap.
24516         (dump_replaceable_exprs): Take a bitmap.
24517         * cfgexpand.c (gimple_cond_pred_to_tree): Handle bitmap instead of
24518         array.
24519         (expand_gimple_basic_block): Likewise.
24520         * tree-ssa-ter.c (struct temp_expr_table_d): Make
24521         replaceable_expressions member a bitmap.
24522         (free_temp_expr_table): Pass back and deal with bitmap, not gimple*.
24523         (mark_replaceable): Likewise.
24524         (find_replaceable_in_bb, dump_replaceable_exprs): Likewise.
24525         * tree-outof-ssa.c (remove_ssa_form): 'values' is a bitmap.
24526
24527 2009-04-27  Richard Guenther  <rguenther@suse.de>
24528
24529         * tree-cfg.c (remove_useless_stmts): Verify stmts afterwards.
24530         (verify_stmts): Dispatch to gimple/type verification code.
24531         * tree-inline.c (remap_gimple_op_r): Work around C++ FE
24532         issue with call argument types.
24533
24534 2009-04-27  Michael Matz  <matz@suse.de>
24535
24536         * tree-into-ssa.c (regs_to_rename, mem_syms_to_rename): Remove.
24537         (init_update_ssa, delete_update_ssa, update_ssa): Remove references
24538         to above.
24539
24540 2009-04-27  Richard Sandiford  <rdsandiford@googlemail.com>
24541             Eric Botcazou  <ebotcazou@adacore.com>
24542
24543         * resource.c (find_basic_block): Use BLOCK_FOR_INSN to look up
24544         a label's basic block.
24545         (mark_target_live_regs): Tidy and rework obsolete comments.
24546         Change back DF problem to LIVE.  If a label starts a basic block,
24547         assume that all registers that used to be live then still are.
24548         (init_resource_info): If a label starts a basic block, set its
24549         BLOCK_FOR_INSN accordingly.
24550         (fini_resource_info): Undo the setting of BLOCK_FOR_INSN.
24551
24552 2009-04-27  Richard Guenther  <rguenther@suse.de>
24553
24554         * tree-flow-inline.h (function_ann): Remove.
24555         (get_function_ann): Likewise.
24556         * tree-dfa.c (create_function_ann): Remove.
24557         * tree-flow.h (struct static_var_ann_d): Remove.
24558         (struct function_ann_d): Likewise.
24559         (union tree_ann_d): Remove fdecl member.
24560         (function_ann_t): Remove.
24561         (function_ann, get_function_ann, create_function_ann): Remove
24562         declarations.
24563
24564 2009-04-27  Uros Bizjak  <ubizjak@gmail.com>
24565
24566         * config/alpha/alpha.c (code_for_builtin): Declare as enum insn_code.
24567
24568 2009-04-27  Jan Hubicka  <jh@suse.cz>
24569
24570         * ipa-pure-const.c (struct funct_state_d): New fields
24571         state_previously_known, looping_previously_known; remove
24572         state_set_in_source.
24573         (analyze_function): Use new fields.
24574         (propagate): Avoid assumption that state_set_in_source imply
24575         nonlooping.
24576
24577         * tree-ssa-loop-niter.c (finite_loop_p): New function.
24578         * tree-ssa-loop-ivcanon.c (empty_loop_p): Use it.
24579         * cfgloop.h (finite_loop_p): Declare.
24580
24581 2009-04-26  Michael Matz  <matz@suse.de>
24582
24583         * tree-flow.h (tree_ann_common_d): Remove aux and value_handle members.
24584
24585 2009-04-26  Michael Matz  <matz@suse.de>
24586
24587         * tree-pass.h (pass_del_ssa, pass_mark_used_blocks,
24588         pass_free_cfg_annotations, pass_free_datastructures): Remove decls.
24589         * gimple-low.c (mark_blocks_with_used_vars, mark_used_blocks,
24590         pass_mark_used_blocks): Remove.
24591         * tree-optimize.c (pass_free_datastructures,
24592         execute_free_cfg_annotations, pass_free_cfg_annotations): Remove.
24593         * passes.c (init_optimization_passes): Don't call
24594         pass_mark_used_blocks, remove dead code.
24595
24596 2009-04-26  H.J. Lu  <hongjiu.lu@intel.com>
24597
24598         * tree-outof-ssa.c (rewrite_trees): Add ATTRIBUTE_UNUSED.
24599         * tree-ssa-live.h (register_ssa_partition): Likewise.
24600
24601 2009-04-26  Michael Matz  <matz@suse.de>
24602
24603         Expand from SSA.
24604         * builtins.c (fold_builtin_next_arg): Handle SSA names.
24605         * tree-ssa-copyrename.c (rename_ssa_copies): Use ssa_name() directly.
24606         * tree-ssa-coalesce.c (create_outofssa_var_map): Mark only useful
24607         SSA names.
24608         (compare_pairs): Swap cost comparison.
24609         (coalesce_ssa_name): Don't use change_partition_var.
24610         * tree-nrv.c (struct nrv_data): Add modified member.
24611         (finalize_nrv_r): Set it.
24612         (tree_nrv): Use it to update statements.
24613         (pass_nrv): Require PROP_ssa.
24614         * tree-mudflap.c (mf_decl_cache_locals,
24615         mf_build_check_statement_for): Use make_rename_temp.
24616         (pass_mudflap_2): Require PROP_ssa, run ssa update at finish.
24617         * alias.c (find_base_decl): Handle SSA names.
24618         * emit-rtl (set_reg_attrs_for_parm): Make non-static.
24619         (component_ref_for_mem_expr): Don't leak SSA names into RTL.
24620         * rtl.h (set_reg_attrs_for_parm): Declare.
24621         * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Rename
24622         to "optimized", remove unused locals at finish.
24623         (execute_free_datastructures): Make global, call
24624         delete_tree_cfg_annotations.
24625         (execute_free_cfg_annotations): Don't call
24626         delete_tree_cfg_annotations.
24627
24628         * ssaexpand.h: New file.
24629         * expr.c (toplevel): Include ssaexpand.h.
24630         (expand_assignment): Handle SSA names the same as register variables.
24631         (expand_expr_real_1): Expand SSA names.
24632         * cfgexpand.c (toplevel): Include ssaexpand.h.
24633         (SA): New global variable.
24634         (gimple_cond_pred_to_tree): Fold TERed comparisons into predicates.
24635         (SSAVAR): New macro.
24636         (set_rtl): New helper function.
24637         (add_stack_var): Deal with SSA names, use set_rtl.
24638         (expand_one_stack_var_at): Likewise.
24639         (expand_one_stack_var): Deal with SSA names.
24640         (stack_var_size_cmp): Use code (SSA_NAME / DECL) as tie breaker
24641         before unique numbers.
24642         (expand_stack_vars): Use set_rtl.
24643         (expand_one_var): Accept SSA names, add asserts for them, feed them
24644         to above subroutines.
24645         (expand_used_vars): Expand all partitions (without default defs),
24646         then only the local decls (ignoring those expanded already).
24647         (expand_gimple_cond): Remove edges when jumpif() expands an
24648         unconditional jump.
24649         (expand_gimple_basic_block): Don't clear EDGE_EXECUTABLE here,
24650         or remove abnormal edges.  Ignore insns setting the LHS of a TERed
24651         SSA name.
24652         (gimple_expand_cfg): Call into rewrite_out_of_ssa, initialize
24653         members of SA; deal with PARM_DECL partitions here; expand
24654         all PHI nodes, free tree datastructures and SA.  Commit instructions
24655         on edges, clear EDGE_EXECUTABLE and remove abnormal edges here.
24656         (pass_expand): Require and destroy PROP_ssa, verify SSA form, flow
24657         info and statements at start, collect garbage at finish.
24658         * tree-ssa-live.h (struct _var_map): Remove partition_to_var member.
24659         (VAR_ANN_PARTITION) Remove.
24660         (change_partition_var): Don't declare.
24661         (partition_to_var): Always return SSA names.
24662         (var_to_partition): Only accept SSA names.
24663         (register_ssa_partition): Only check argument.
24664         * tree-ssa-live.c (init_var_map): Don't allocate partition_to_var
24665         member.
24666         (delete_var_map): Don't free it.
24667         (var_union): Only accept SSA names, simplify.
24668         (partition_view_init): Mark only useful SSA names as used.
24669         (partition_view_fini): Only deal with SSA names.
24670         (change_partition_var): Remove.
24671         (dump_var_map): Use ssa_name instead of partition_to_var member.
24672         * tree-ssa.c (delete_tree_ssa): Don't remove PHI nodes on RTL
24673         basic blocks.
24674         * tree-outof-ssa.c (toplevel): Include ssaexpand.h and expr.h.
24675         (struct _elim_graph): New member const_dests; nodes member vector of
24676         ints.
24677         (set_location_for_edge): New static helper.
24678         (create_temp): Remove.
24679         (insert_partition_copy_on_edge, insert_part_to_rtx_on_edge,
24680         insert_value_copy_on_edge, insert_rtx_to_part_on_edge): New functions.
24681         (new_elim_graph): Allocate const_dests member.
24682         (clean_elim_graph): Truncate const_dests member.
24683         (delete_elim_graph): Free const_dests member.
24684         (elim_graph_size): Adapt to new type of nodes member.
24685         (elim_graph_add_node): Likewise.
24686         (eliminate_name): Likewise.
24687         (eliminate_build): Don't take basic block argument, deal only with
24688         partition numbers, not variables.
24689         (get_temp_reg): New static helper.
24690         (elim_create): Use it, deal with RTL temporaries instead of trees.
24691         (eliminate_phi): Adjust all calls to new signature.
24692         (assign_vars, replace_use_variable, replace_def_variable): Remove.
24693         (rewrite_trees): Only do checking.
24694         (edge_leader, stmt_list, leader_has_match, leader_match): Remove.
24695         (same_stmt_list_p, identical_copies_p, identical_stmt_lists_p,
24696         init_analyze_edges_for_bb, fini_analyze_edges_for_bb,
24697         contains_tree_r, MAX_STMTS_IN_LATCH,
24698         process_single_block_loop_latch, analyze_edges_for_bb,
24699         perform_edge_inserts): Remove.
24700         (expand_phi_nodes): New global function.
24701         (remove_ssa_form): Take ssaexpand parameter.  Don't call removed
24702         functions, initialize new parameter, remember partitions having a
24703         default def.
24704         (finish_out_of_ssa): New global function.
24705         (rewrite_out_of_ssa): Make global.  Adjust call to remove_ssa_form,
24706         don't reset in_ssa_p here, don't disable TER when mudflap.
24707         (pass_del_ssa): Remove.
24708         * tree-flow.h (struct var_ann_d): Remove out_of_ssa_tag and
24709         partition members.
24710         (execute_free_datastructures): Declare.
24711         * Makefile.in (SSAEXPAND_H): New variable.
24712         (tree-outof-ssa.o, expr.o, cfgexpand.o): Depend on SSAEXPAND_H.
24713         * basic-block.h (commit_one_edge_insertion): Declare.
24714         * passes.c (init_optimization_passes): Move pass_nrv and
24715         pass_mudflap2 before pass_cleanup_cfg_post_optimizing, remove
24716         pass_del_ssa, pass_free_datastructures, pass_free_cfg_annotations.
24717         * cfgrtl.c (commit_one_edge_insertion): Make global, don't declare.
24718         (redirect_branch_edge): Deal with super block when expanding, split
24719         out jump patching itself into ...
24720         (patch_jump_insn): ... here, new static helper.
24721
24722 2009-04-26  Michael Matz  <matz@suse.de>
24723
24724         * tree-ssa-copyrename.c (rename_ssa_copies): Don't iterate
24725         beyond num_ssa_names.
24726         * tree-ssa-ter.c (free_temp_expr_table): Likewise.
24727         * tree-ssa-coalesce.c (create_outofssa_var_map): Likewise.
24728
24729 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24730
24731         PR inline-asm/39543
24732         * fwprop.c (forward_propagate_asm): New function.
24733         (forward_propagate_and_simplify): Propagate also into __asm, if it
24734         doesn't increase the number of referenced registers.
24735
24736         PR c/39889
24737         * stmt.c (warn_if_unused_value): Look through NON_LVALUE_EXPR.
24738
24739 2009-04-26  Jakub Jelinek  <jakub@redhat.com>
24740
24741         * tree-nested.c (get_nonlocal_vla_type): If not optimizing, call
24742         note_nonlocal_vla_type for nonlocal VLAs.
24743         (note_nonlocal_vla_type, note_nonlocal_block_vlas,
24744         contains_remapped_vars, remap_vla_decls): New functions.
24745         (convert_nonlocal_reference_stmt): If not optimizing, call
24746         note_nonlocal_block_vlas on GIMPLE_BIND block vars.
24747         (nesting_copy_decl): Return {VAR,PARM,RESULT}_DECL unmodified
24748         if it wasn't found in var_map.
24749         (finalize_nesting_tree_1): Call remap_vla_decls.  If outermost
24750         GIMPLE_BIND doesn't have gimple_bind_block, chain debug_var_chain
24751         to BLOCK_VARS (DECL_INITIAL (root->context)) instead of calling
24752         declare_vars.
24753         * gimplify.c (nonlocal_vlas): New variable.
24754         (gimplify_var_or_parm_decl): Add debug VAR_DECLs for non-local
24755         referenced VLAs.
24756         (gimplify_body): Create and destroy nonlocal_vlas.
24757
24758         * dwarf2out.c (loc_descr_plus_const): New function.
24759         (build_cfa_aligned_loc, tls_mem_loc_descriptor,
24760         mem_loc_descriptor, loc_descriptor_from_tree_1,
24761         descr_info_loc, gen_variable_die): Use it.
24762
24763         * tree.h (DECL_BY_REFERENCE): Note that it is also valid for
24764         !TREE_STATIC VAR_DECLs.
24765         * dwarf2out.c (loc_by_reference, gen_decl_die): Handle
24766         DECL_BY_REFERENCE on !TREE_STATIC VAR_DECLs.
24767         (gen_variable_die): Likewise.  Don't look at TREE_PRIVATE if
24768         DECL_BY_REFERENCE is valid.
24769         * dbxout.c (DECL_ACCESSIBILITY_CHAR): Don't look at TREE_PRIVATE
24770         for PARM_DECLs, RESULT_DECLs or !TREE_STATIC VAR_DECLs.
24771         * tree-nested.c (get_nonlocal_debug_decl, get_local_debug_decl):
24772         Copy DECL_BY_REFERENCE.
24773         (struct nesting_copy_body_data): New type.
24774         (nesting_copy_decl): New function.
24775         (finalize_nesting_tree_1): Remap types of debug_var_chain variables,
24776         if they have variable length.
24777
24778 2009-04-26  Michael Matz  <matz@suse.de>
24779
24780         * tree-sra.c (sra_build_assignment): Don't use into_ssa mode,
24781         mark new temporaries for renaming.
24782
24783 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24784
24785         PR c/39581
24786         * c-decl.c (global_bindings_p): Return negative value.
24787         (c_variable_size): New.  Based on variable_size from
24788         stor-layout.c.
24789         (grokdeclarator): Call c_variable_size not variable_size.
24790
24791 2009-04-26  Uros Bizjak  <ubizjak@gmail.com>
24792
24793         * config/i386/i386.c (print_operand) ['z']: Fix typo.
24794
24795 2009-04-26  Kai Tietz  <kai.tietz@onevision.com>
24796
24797         * config/i386/mingw-w64.h (STANDARD_INCLUDE_DIR):
24798         Redefine it to just use mingw/include.
24799         (ASM_SPEC): Rules for -m32 and -m64.
24800         (LINK_SPEC): Use Likewise.
24801         (SPEC_32): New define.
24802         (SPEC_64): Likewise.
24803         (SUB_LINK_SPEC): Likewise.
24804         (MULTILIB_DEFAULTS): New define.
24805         * config/i386/t-mingw-w64 (MULTILIB_OPTIONS):
24806         Add multilib options.
24807         (MULTILIB_DIRNAMES): Likewise.
24808         (MULTILIB_OSDIRNAMES): Likewise.
24809         (LIBGCC): Likewise.
24810         (INSTALL_LIBGCC): Likewise.
24811
24812 2009-04-26  Joseph Myers  <joseph@codesourcery.com>
24813
24814         PR c/39556
24815         * c-tree.h (enum c_inline_static_type): New.
24816         (record_inline_static): Declare.
24817         * c-decl.c (struct c_inline_static, c_inline_statics,
24818         record_inline_static, check_inline_statics): New.
24819         (pop_file_scope): Call check_inline_statics.
24820         (start_decl): Call record_inline_static instead of pedwarning
24821         directly for static in inline function.
24822         * c-typeck.c (build_external_ref): Call record_inline_static
24823         instead of pedwarning directly for static referenced in inline
24824         function.
24825
24826 2009-04-26  Steven Bosscher  <steven@gcc.gnu.org>
24827
24828         * df-scan.c (df_insn_rescan): Salvage insn's LUID if the insn is
24829         not new but only being rescanned.
24830         * gcse.c (uid_cuid, max_uid, INSN_CUID, max_cuid, struct reg_set,
24831         reg_set_table, REG_SET_TABLE_SLOP, reg_set_in_block,
24832         alloc_reg_set_mem, free_reg_set_mem, record_one_set,
24833         record_set_info, compute_set, grealloc): Remove.
24834         (recompute_all_luids): New function.
24835         (gcse_main): Don't compute sets, and don't do related memory
24836         allocations/free-ing.  If something changed before the end of the
24837         pass, update LUIDs using recompute_all_luids.
24838         (alloc_gcse_mem): Don't compute LUIDs.  Don't allocate reg_set memory.
24839         (free_gcse_mem): Don't free it either.
24840         (oprs_unchanged_p, load_killed_in_block, record_last_reg_set_info):
24841         Use the df insn LUIDs.
24842         (load_killed_in_block): Likewise.
24843         (compute_hash_table_work): Don't compute reg_set_in_block.
24844         (compute_transp): Use DF_REG_DEF_CHAINs.
24845         (local_cprop_pass): Don't use compute_sets and related functions.
24846         (one_cprop_pass, pre_gcse, one_pre_gcse_pass, one_code_hoisting_pass):
24847         Use get_max_uid() instead of max_cuid.
24848         (insert_insn_end_basic_block, pre_insert_copy_insn,
24849         update_ld_motion_stores): Don't try to
24850         keep reg_set tables up to date.
24851         (pre_insert_copies): Use df insn LUIDs.
24852         (sbitmap pre_redundant_insns): Replace with uses of INSN_DELETED_P.
24853         (reg_set_info): Don't use extra bitmap argument.
24854         (compute_store_table): Don't compute reg_set_in_block.  Use DF scan
24855         information to compute regs_set_in_block.
24856         (free_store_memory, store_motion): Don't nullify reg_set_in_block.
24857         (bypass_jumps): Don't use compute_sets and friends.
24858
24859 2009-04-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
24860
24861         PR testsuite/39710
24862         * opts.c (undocumented_msg): Do not leave blank even with
24863         ENABLE_CHECKING.
24864
24865 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24866
24867         * c-decl.c (build_enumerator): Allow values folding to integer
24868         constants but not integer constant expressions with a pedwarn if
24869         pedantic.
24870
24871 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24872
24873         PR c/39582
24874         * c-typeck.c (c_expr_sizeof_type): Create a C_MAYBE_CONST_EXPR
24875         with non-null C_MAYBE_CONST_EXPR_PRE if size of a variable-length
24876         type is an integer constant.
24877
24878 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24879
24880         PR target/39897
24881         * config/i386/i386.c (print_operand) ['z']: Revert handling of
24882         HImode operands.
24883
24884 2009-04-25  Joseph Myers  <joseph@codesourcery.com>
24885
24886         PR c/39564
24887         * c-decl.c (grokdeclarator): Diagnose declarations of functions
24888         with variably modified return type and no storage class
24889         specifiers, except for the case of nested functions.  Distinguish
24890         extern declarations of functions with variably modified return
24891         types from those of objects with variably modified types.
24892
24893 2009-04-25  Jan Hubicka  <jh@suse.cz>
24894
24895         * tree.c (list_equal_p): New function.
24896         * tree.h (list_equal_p): Declare.
24897         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24898         basic_block_def, basic_block, const_basic_block): New.
24899         * tree-eh.c (make_eh_edge): EH edges are not abnormal.
24900         (redirect_eh_edge): New function.
24901         (make_eh_edge_update_phi): EH edges are not abnormal.
24902         * except.c: Include tree-flow.h.
24903         (list_match): New function.
24904         (eh_region_replaceable_by_p): New function.
24905         (replace_region): New function.
24906         (hash_type_list): New function.
24907         (hash_eh_region): New function.
24908         (eh_regions_equal_p): New function.
24909         (merge_peers): New function.
24910         (remove_unreachable_regions): Verify EH tree when checking;
24911         merge peers.
24912         (copy_eh_region_1): New function.
24913         (copy_eh_region): New function.
24914         (push_reachable_handler): New function.
24915         (build_post_landing_pads, dw2_build_landing_pads): Be ready for
24916         regions without label but with live RESX.
24917         * except.h (redirect_eh_edge_to_label): New.
24918         * tree-flow.h (redirect_eh_edge): New.
24919         * coretypes.h (edge_def, edge, const_edge, basic_block_def
24920         basic_block_def, basic_block, const_basic_block): Remove.
24921         * Makefile.in (except.o): Add dependency on tree-flow.h
24922         * tree-cfg.c (gimple_redirect_edge_and_branch): Handle EH edges.
24923         * basic-block.h (edge, const_edge, basic_block, const_basic_block):
24924         Remove.
24925
24926 2009-04-25  Eric Botcazou  <ebotcazou@adacore.com>
24927
24928         PR bootstrap/39645
24929         * config/sparc/sparc.c (sparc_gimplify_va_arg): Set TREE_ADDRESSABLE
24930         on the destination of memcpy.
24931
24932 2009-04-25  Paolo Bonzini  <bonzini@gnu.org>
24933
24934         * doc/tm.texi (REGNO_OK_FOR_BASE_P, REGNO_MODE_OK_FOR_BASE_P,
24935         REGNO_MODE_OK_FOR_REG_BASE_P, REGNO_MODE_CODE_OK_FOR_BASE_P,
24936         REGNO_OK_FOR_INDEX_P): Mention strict/nonstrict difference.
24937
24938 2009-04-25  Jan Hubicka  <jh@suse.cz>
24939
24940         * tree-eh.c (tree_remove_unreachable_handlers): Handle shared labels.
24941         (tree_empty_eh_handler_p): Allow non-EH predecestors; allow region
24942         to be reached by different label than left.
24943         (update_eh_edges): Update comment; remove edge_to_remove if possible
24944         and return true if suceeded.
24945         (cleanup_empty_eh): Accept sharing map; handle shared regions.
24946         (cleanup_eh): Compute sharing map.
24947         * except.c (remove_eh_handler_and_replace): Add argument if we should
24948         update regions.
24949         (remove_unreachable_regions): Update for label sharing.
24950         (label_to_region_map): Likewise.
24951         (get_next_region_sharing_label): New function.
24952         (remove_eh_handler_and_replace): Add update_catch_try parameter; update
24953         prev_try pointers.
24954         (remove_eh_handler): Update.
24955         (remove_eh_region_and_replace_by_outer_of): New function.
24956         * except.h (struct eh_region): Add next_region_sharing_label.
24957         (remove_eh_region_and_replace_by_outer_of,
24958         get_next_region_sharing_label): Declare.
24959         * tree-cfgcleanup.c (tree_forwarder_block_p): Simplify.
24960
24961 2009-04-25  Jan Hubicka  <jh@suse.cz>
24962
24963         * tree-cfg.c (split_critical_edges): Split also edges where we can't
24964         insert code even if they are not critical.
24965
24966 2009-04-25  Jan Hubicka  <jh@suse.cz>
24967
24968         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24969         (gimple_can_remove_branch_p): EH edges won't remove branch by
24970         redirection.
24971         * tree-inline.c (update_ssa_across_abnormal_edges): Do handle
24972         updating of non-abnormal EH edges.
24973         * tree-cfg.c (gimple_can_merge_blocks_p): EH edges are unmergable.
24974         (gimple_can_remove_branch_p): EH edges are unremovable by redirection.
24975         (split_critical_edges): Split also edges where emitting code on them
24976         will lead to splitting later.
24977
24978 2009-04-25  Uros Bizjak  <ubizjak@gmail.com>
24979             H.J. Lu  <hongjiu.lu@intel.com>
24980
24981         PR target/39590
24982         * configure.ac (HAVE_AS_IX86_FILDQ): On x86 targets check whether
24983         the configured assembler supports fildq and fistpq mnemonics.
24984         (HAVE_AS_IX86_FILDS): Rename from HAVE_GAS_FILDS_FISTS.
24985         * configure: Regenerated.
24986         * config.in: Ditto.
24987
24988         * config/i386/i386.c (print_operand): Handle 'Z'.
24989         ['z']: Remove handling of special fild/fist suffixes.
24990         (output_fix_trunc): Use '%Z' to output suffix of fist{,p,tp} insn.
24991         * config/i386/i386.md (*floathi<mode>2_i387): Use '%Z' to output
24992         suffix of fild insn.
24993         (*floatsi<mode>2_vector_mixed): Ditto.
24994         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit): Ditto.
24995         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit): Ditto.
24996         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
24997         (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387): Ditto.
24998         * config/i386/gas.h (GAS_MNEMONICS): Remove.
24999
25000 2009-04-25  Ben Elliston  <bje@au.ibm.com>
25001
25002         * genrecog.c (validate_pattern): Do not warn for VOIDmode CALLs as
25003         the source of a set operation.
25004
25005 2009-04-25  Anatoly Sokolov  <aesok@post.ru>
25006
25007         * target.h (struct gcc_target): Add case_values_threshold field.
25008         * target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
25009         (TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
25010         * targhooks.c (default_case_values_threshold): New function.
25011         * targhooks.h (default_case_values_threshold): Declare function.
25012         * stmt.c (expand_case): Use case_values_threshold target hook.
25013         * expr.h (case_values_threshold): Remove declartation.
25014         * expr.c (case_values_threshold): Remove function.
25015         * doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
25016
25017         * config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
25018         * config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25019         (avr_case_values_threshold): Declare as static.
25020         * config/avr/avr-protos.h (avr_case_values_threshold): Remove.
25021
25022         * config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
25023         * config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
25024         (mn10300_case_values_threshold): New function.
25025
25026 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25027
25028         * ira.c (setup_cover_and_important_classes): Add enum cast.
25029
25030 2009-04-24  Vladimir Makarov  <vmakarov@redhat.com>
25031
25032         * genpreds.c (write_enum_constraint_num): Output definition of
25033         CONSTRAINT_NUM_DEFINED_P macro.
25034         * ira.c (setup_cover_and_important_classes): Use
25035         CONSTRAINT_NUM_DEFINED_P instead of CONSTRAINT__LIMIT in #ifdef.
25036
25037 2009-04-24  DJ Delorie  <dj@redhat.com>
25038
25039         * config/sh/sh.h (LIBGCC2_DOUBLE_TYPE_SIZE): Test
25040         __SH2A_SINGLE_ONLY__ also.
25041
25042 2009-04-24  Steve Ellcey  <sje@cup.hp.com>
25043
25044         * config/ia64/ia64.md (movfs_internal): Allow flt constants.
25045         (movdf_internal): Ditto.
25046         * config/ia64/ia64.c (ia64_legitimate_constant_p): Allow
25047         SFmode and DFmode constants.
25048         (ia64_print_operand): Add 'G' format for printing
25049         floating point constants.
25050
25051 2009-04-24  Richard Guenther  <rguenther@suse.de>
25052
25053         * tree-vrp.c (extract_range_from_binary_expr): Handle overflow
25054         from unsigned additions.
25055
25056 2009-04-24  Joseph Myers  <joseph@codesourcery.com>
25057
25058         * c-typeck.c (set_init_index): Allow array designators that are
25059         not integer constant expressions with a pedwarn if pedantic.
25060
25061 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25062
25063         * simplify-rtx.c (simplify_binary_operation_1, case AND): Result is
25064         zero if no overlap in nonzero bits between the operands.
25065
25066 2009-04-24  Ian Lance Taylor  <iant@google.com>
25067
25068         * combine.c (record_value_for_reg): Change 0 to VOIDmode, twice.
25069         (record_dead_and_set_regs): Likewise.
25070         * df.h (struct df_mw_hardreg): Change flags field to int.
25071         (struct df_base_ref): Likewise.
25072         (struct df): Change changeable_flags field to int.
25073         * df-scan.c (df_defs_record): Change clobber_flags to int.
25074         * dwarf2.h (enum dwarf_tag): Make lo_user and hi_user values enum
25075         constants rather than #define macros.
25076         (enum dwarf_attribute, enum dwarf_location_atom): Likewise.
25077         (enum dwarf_type, enum dwarf_endianity_encoding): Likewise.
25078         (enum dwarf_calling_convention): Likewise.
25079         (enum dwarf_line_number_x_ops): Likewise.
25080         (enum dwarf_call_frame_info): Likewise.
25081         (enum dwarf_source_language): Likewise.
25082         * dwarf2out.c (int_loc_descriptor): Add cast to enum type.
25083         (add_calling_convention_attribute): Likewise.
25084         * fold-const.c (fold_undefer_overflow_warnings): Add cast to enum type.
25085         (combine_comparisons): Change compcode to int.  Add cast to enum type.
25086         * genrecog.c (maybe_both_true_2): Change c to int.
25087         (write_switch): Likewise.  Add cast to enum type.
25088         * gimplify.c (gimplify_omp_for): Handle return values from
25089         gimplify_expr using MIN rather than bitwise or.
25090         (gimplify_expr): Add cast to enum type.
25091         * ipa-prop.c (update_jump_functions_after_inlining): Change
25092         IPA_BOTTOM to IPA_JF_UNKNOWN.
25093         * ira.c (setup_class_subset_and_memory_move_costs): Change mode to int.
25094         Add casts to enum type.
25095         (setup_cover_and_important_classes): Change cl to int.  Add casts
25096         to enum type.
25097         (setup_class_translate): Change cl and mode to int.
25098         (ira_init_once): Change mode to int.
25099         (free_register_move_costs): Likewise.
25100         (setup_prohibited_mode_move_regs): Add casts to enum type.
25101         * langhooks.c (add_builtin_function_common): Rework assertion that
25102         value fits bitfield.
25103         * mcf.c (add_fixup_edge): Change type parameter to edge_type.
25104         * omega.c (omega_do_elimination): Avoid math on enum types.
25105         * optabs.c (expand_vec_shift_expr): Remove casts to int.
25106         * opts.c (set_debug_level): Change 2 to enum constant.  Use new
25107         int local to handle integral_argment value.
25108         * regmove.c (try_auto_increment): Change PUT_MODE to
25109         PUT_REG_NOTE_KIND.
25110         * reload.c (push_secondary_reload): Add casts to enum type.
25111         (secondary_reload_class, find_valid_class): Likewise.
25112         * reload1.c (emit_input_reload_insns): Likewise.
25113         * rtl.h (NOTE_VAR_LOCATION_STATUS): Likewise.
25114         * sel-sched.c (init_hard_regs_data): Change cur_mode to int.
25115         * sel-sched-ir.c (hash_with_unspec_callback): Change 0 to enum
25116         constant.
25117         * tree.c (build_common_builtin_nodes): Add casts to enum type.
25118         * tree-complex.c (complex_lattice_t): Typedef to int rather than
25119         enum type.
25120         (expand_complex_libcall): Add casts to enum type.
25121         * tree-into-ssa.c (get_ssa_name_ann): Change 0 to enum constant.
25122         * tree-vect-loop.c (vect_model_reduction_cost): Compare reduc_code
25123         with ERROR_MARK, not NUM_TREE_CODES.
25124         (vect_create_epilog_for_reduction): Likewise.
25125         (vectorizable_reduction): Don't initialize epiloc_reduc_code.
25126         When not using it, set it to ERROR_MARK rather than NUM_TREE_CODES.
25127         * tree-vect-patterns.c (vect_pattern_recog_1): Change vec_mode to
25128         enum machine_mode.
25129         * tree-vect-stmts.c (new_stmt_vec_info): Change 0 to
25130         vect_unused_in_loop.  Change 0 to loop_vect.
25131         * tree-vectorizer.c (vect_set_verbosity_level): Add casts to enum type.
25132         * var-tracking.c (get_init_value): Change return type to enum
25133         var_init_status.
25134         * vec.h (DEF_VEC_FUNC_P) [iterate]: Cast 0 to type T.
25135         * config/arm/arm.c (fp_model_for_fpu): Change to array to enum
25136         arm_fp_model.
25137         (arm_override_options): Add casts to enum type.
25138         (arm_emit_tls_decoration): Likewise.
25139         * config/i386/i386.c (ix86_function_specific_restore): Add casts
25140         to enum type.
25141         * config/i386/i386-c.c (ix86_pragma_target_parse): Likewise.
25142         * config/ia64/ia64.c (ia64_expand_compare): Change magic to int.
25143         * config/rs6000/rs6000.c (rs6000_override_options): Add casts to
25144         enum type.
25145         * config/s390/s390.c (code_for_builtin_64): Change to array of
25146         enum insn_code.
25147         (code_for_builtin_31): Likewise.
25148         (s390_expand_builtin): Change code_for_builtin to enum insn_code
25149         const *.
25150         * config/sparc/sparc.c (sparc_override_options): Change value
25151         field in struct code_model to enum cmodel.  In initializer change
25152         0 to NULL and add cast to enum type.
25153
25154         * c-typeck.c (build_modify_expr): Add lhs_origtype parameter.
25155         Change all callers.  Issue a -Wc++-compat warning using
25156         lhs_origtype if necessary.
25157         (convert_for_assignment): Issue -Wc++-compat warnings about
25158         invalid conversions to enum type on assignment.
25159         * c-common.h (build_modify_expr): Update declaration.
25160
25161 2009-04-24  Nick Clifton  <nickc@redhat.com>
25162
25163         * config/iq2000/iq2000.c (function_arg): Handle TImode values.
25164         (function_arg_advance): Likewise.
25165         * config/iq2000/iq2000.md (movsi_internal2): Fix the length of the
25166         5th alternative.
25167
25168 2009-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
25169
25170         * config/s390/constraints.md ('I', 'J'): Fix condition.
25171
25172 2009-04-24  Diego Novillo  <dnovillo@google.com>
25173
25174         * gengtype-parse.c (parse_error): Add newline after message.
25175
25176 2009-04-24  H.J. Lu  <hongjiu.lu@intel.com>
25177
25178         * config/i386/sse.md (avxmodesuffixs): Removed.
25179         (*avx_pinsr<avxmodesuffixs>): Renamed to ...
25180         (*avx_pinsr<ssevecsize>): This.
25181
25182 2009-04-24  Bernd Schmidt  <bernd.schmidt@analog.com>
25183
25184         * loop-iv.c (replace_single_def_regs): Look for REG_EQUAL notes;
25185         follow chains of regs with a single definition, and allow expressions
25186         that are function_invariant_p.
25187         (simple_rhs_p): Allow expressions that are function_invariant_p.
25188
25189 2009-04-24  Paolo Bonzini  <bonzini@gnu.org>
25190
25191         PR middle-end/39867
25192         * fold-const.c (fold_cond_expr_with_comparison): When folding
25193         > and >= to MAX, make sure the MAX uses the same type as the
25194         comparison's operands.
25195
25196 2009-04-24  Nick Clifton  <nickc@redhat.com>
25197
25198         * config/frv/frv.c (frv_frame_access): Do not use reg+reg
25199         addressing for DImode accesses.
25200         (frv_print_operand_address): Handle PLUS case.
25201         * config/frv/frv.h (FIXED_REGISTERS): Mark link register as fixed.
25202
25203 2009-04-24  Jakub Jelinek  <jakub@redhat.com>
25204
25205         PR rtl-optimization/39794
25206         * alias.c (canon_true_dependence): Add x_addr argument.
25207         * rtl.h (canon_true_dependence): Adjust prototype.
25208         * cse.c (check_dependence): Adjust canon_true_dependence callers.
25209         * cselib.c (cselib_invalidate_mem): Likewise.
25210         * gcse.c (compute_transp): Likewise.
25211         * dse.c (scan_reads_nospill): Likewise.
25212         (record_store, check_mem_read_rtx): Likewise.  For non-const-or-frame
25213         addresses pass base->val_rtx as mem_addr, for const-or-frame addresses
25214         canon_base_addr of the group, plus optional offset.
25215         (struct group_info): Rename canon_base_mem to
25216         canon_base_addr.
25217         (get_group_info): Set canon_base_addr to canon_rtx of base, not
25218         canon_rtx of base_mem.
25219
25220 2009-04-23  Paolo Bonzini  <bonzini@gnu.org>
25221
25222         * config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
25223         Use memory_address_p instead of GO_IF_LEGITIMATE_ADDRESS.
25224
25225 2009-04-23  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25226
25227         * config/spu/spu-builtins.h: Delete file.
25228
25229         * config/spu/spu.h (enum spu_builtin_type): Move here from
25230         spu-builtins.h.
25231         (struct spu_builtin_description): Likewise.  Add GTY marker.
25232         Do not use enum spu_function_code or enum insn_code.
25233         (spu_builtins): Add extern declaration.
25234
25235         * config/spu/spu.c: Do not include "spu-builtins.h".
25236         (enum spu_function_code, enum spu_builtin_type_index,
25237         V16QI_type_node, V8HI_type_node, V4SI_type_node, V2DI_type_node,
25238         V4SF_type_node, V2DF_type_node, unsigned_V16QI_type_node,
25239         unsigned_V8HI_type_node, unsigned_V4SI_type_node,
25240         unsigned_V2DI_type_node): Move here from spu-builtins.h.
25241         (spu_builtin_types): Make static.  Add GTY marker.
25242         (spu_builtins): Add extern declaration with GTY marker.
25243         Include "gt-spu.h".
25244
25245         * config/spu/spu-c.c: Do not include "spu-builtins.h".
25246         (spu_resolve_overloaded_builtin): Do not use spu_function_code.
25247         Check programmatically whether all parameters are scalar.
25248
25249         * config/spu/t-spu-elf (spu.o, spu-c.o): Update dependencies.
25250
25251 2009-04-23  Eric Botcazou  <ebotcazou@adacore.com>
25252
25253         * gimplify.c (gimplify_modify_expr_rhs) <VAR_DECL>: Do not do a direct
25254         assignment from the constructor either if the target is volatile.
25255
25256 2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>
25257
25258         * config/arm/arm.md (insv): Do not share operands[0].
25259
25260 2009-04-23  Nathan Sidwell  <nathan@codesourcery.com>
25261
25262         * config/vxlib-tls.c (active_tls_threads): Delete.
25263         (delete_hook_installed): New.
25264         (tls_delete_hook): Don't delete the delete hook.
25265         (tls_destructor): Delete it here.
25266         (__gthread_set_specific): Adjust installing the delete hook.
25267         (tls_delete_hook): Use __gthread_enter_tsd_dtor_context and
25268         __gthread_leave_tsd_dtor_context.
25269
25270 2009-04-23  Rafael Avila de Espindola  <espindola@google.com>
25271
25272         * c-format.c (gcc_tdiag_char_table): Add support for %E.
25273
25274 2009-04-23  Uros Bizjak  <ubizjak@gmail.com>
25275
25276         * config/alpha/alpha.c (alpha_legitimize_reload_address): Add cast to
25277         enum type.
25278         (alpha_rtx_costs): Ditto.
25279         (emit_unlikely_jump): Use add_reg_note.
25280         (emit_frame_store_1): Ditto.
25281         (alpha_expand_prologue): Ditto.
25282         (alpha_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25283         * config/alpha/alpha.c (Unicos/Mk address splitter): Use add_reg_note.
25284
25285 2009-04-23  Nick Clifton  <nickc@redhat.com>
25286
25287         * config/v850/v850.md (epilogue): Remove suppressed code.
25288         (return): Rename to return_simple and remove test of frame size.
25289         * config/v850/v850.c (expand_epilogue): Rename call to gen_return
25290         to gen_return_simple.
25291
25292 2009-04-22  Jing Yu  <jingyu@google.com>
25293
25294         PR testsuite/39781
25295         * config/arm/arm.h: Define HANDLE_PRAGMA_PACK_PUSH_POP.
25296
25297 2009-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
25298
25299         PR C/31499
25300         * c-typeck.c (process_init_element): Treat VECTOR_TYPE like ARRAY_TYPE
25301         and RECORD_TYPE/UNION_TYPE.  When outputing the actual element and the
25302         value is a VECTOR_CST, the element type is the element type of the
25303         vector.
25304
25305 2009-04-22  DJ Delorie  <dj@redhat.com>
25306
25307         * config/m32c/m32c.h: Update GTY annotations to new syntax.
25308
25309 2009-04-22  Jakub Jelinek  <jakub@redhat.com>
25310
25311         * alias.c (find_base_term): Move around LO_SUM case, so that
25312         CONST falls through into PLUS/MINUS handling.
25313
25314         PR c/39855
25315         * fold-const.c (fold_binary) <case LSHIFT_EXPR>: When optimizing
25316         into 0, use omit_one_operand.
25317
25318 2009-04-23  Ben Elliston  <bje@au.ibm.com>
25319
25320         * config/rs6000/linux-unwind.h (get_regs): Remove type
25321         puns. Change the type of `pc' to an array of unsigned ints and
25322         update all users.  Constify frame24.
25323
25324 2009-04-22  DJ Delorie  <dj@redhat.com>
25325
25326         * config/m32c/m32c.c (m32c_special_page_vector_p): Move
25327         declarations before code.
25328         (current_function_special_page_vector): Likewise.
25329         (m32c_expand_insv): Silence a warning.
25330
25331 2009-04-21  Taras Glek  <tglek@mozilla.com>
25332
25333         * alias.c: Update GTY annotations to new syntax.
25334         * basic-block.h: Likewise.
25335         * bitmap.h: Likewise.
25336         * c-common.h: Likewise.
25337         * c-decl.c: Likewise.
25338         * c-parser.c: Likewise.
25339         * c-pragma.c: Likewise.
25340         * c-tree.h: Likewise.
25341         * cfgloop.h: Likewise.
25342         * cgraph.h: Likewise.
25343         * config/alpha/alpha.c: Likewise.
25344         * config/arm/arm.h: Likewise.
25345         * config/avr/avr.h: Likewise.
25346         * config/bfin/bfin.c: Likewise.
25347         * config/cris/cris.c: Likewise.
25348         * config/darwin.c: Likewise.
25349         * config/frv/frv.c: Likewise.
25350         * config/i386/i386.c: Likewise.
25351         * config/i386/i386.h: Likewise.
25352         * config/i386/winnt.c: Likewise.
25353         * config/ia64/ia64.h: Likewise.
25354         * config/iq2000/iq2000.c: Likewise.
25355         * config/mips/mips.c: Likewise.
25356         * config/mmix/mmix.h: Likewise.
25357         * config/pa/pa.c: Likewise.
25358         * config/pa/pa.h: Likewise.
25359         * config/rs6000/rs6000.c: Likewise.
25360         * config/s390/s390.c: Likewise.
25361         * config/sparc/sparc.c: Likewise.
25362         * config/xtensa/xtensa.c: Likewise.
25363         * cselib.h: Likewise.
25364         * dbxout.c: Likewise.
25365         * dwarf2out.c: Likewise.
25366         * except.c: Likewise.
25367         * except.h: Likewise.
25368         * fixed-value.h: Likewise.
25369         * function.c: Likewise.
25370         * function.h: Likewise.
25371         * gimple.h: Likewise.
25372         * integrate.c: Likewise.
25373         * optabs.c: Likewise.
25374         * output.h: Likewise.
25375         * real.h: Likewise.
25376         * rtl.h: Likewise.
25377         * stringpool.c: Likewise.
25378         * tree-data-ref.c: Likewise.
25379         * tree-flow.h: Likewise.
25380         * tree-scalar-evolution.c: Likewise.
25381         * tree-ssa-address.c: Likewise.
25382         * tree-ssa-alias.h: Likewise.
25383         * tree-ssa-operands.h: Likewise.
25384         * tree.c: Likewise.
25385         * tree.h: Likewise.
25386         * varasm.c: Likewise.
25387         * varray.h: Likewise.
25388         * vec.h: Likewise.
25389         * coretypes.h: Do not define GTY macro if it is already defined.
25390         * doc/gty.texi: Update GTY documentation to new syntax.
25391         * gengtype-lex.l: Enforce attribute-like syntax for GTY
25392         annotations on structs.
25393         * gengtype-parse.c: Likewise.
25394
25395 2009-04-22  Mark Heffernan  <meheff@google.com>
25396
25397         * gcc.c (LINK_COMMAND_SPEC): Link with gcov with -fprofile-generate=.
25398
25399 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25400
25401         * config/arm/arm.c (arm_rtx_costs_1): Use power_of_two_operand
25402         where appropriate.
25403
25404 2009-04-22  Kazu Hirata  <kazu@codesourcery.com>
25405
25406         * config/arm/arm.c (arm_size_rtx_costs): Treat a PLUS with a shift
25407         the same as a PLUS without a shift.  Increase the cost of a
25408         CONST_INT in MULT.
25409
25410 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25411
25412         * Makefile.in: Update dependencies.
25413         * errors.c (warning): Remove unused parameter 'opt'. Returns 'void'.
25414         * errors.h: Remove bogus comment about compatibility.
25415         (warning): Update declaration.
25416         * genautomata.c: Update all calls to warning.
25417         * gimple.c: Do not include errors.h. Include toplev.h.
25418         * tree-ssa-structalias.c: Do not include errors.h.
25419         * omega.c: Likewise.
25420         * tree-ssa-reassoc.c: Likewise.
25421         * config/spu/spu-c.c: Likewise.
25422         * config/spu/t-spu-elf: Update dependencies.
25423
25424 2009-04-22  Richard Guenther  <rguenther@suse.de>
25425
25426         PR tree-optimization/39824
25427         * tree-ssa-ccp.c (fold_const_aggregate_ref): For INDIRECT_REFs
25428         make sure the types are compatible.
25429
25430 2009-04-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25431
25432         PR c++/14875
25433         * c-common.c (c_parse_error): Take a token_flags parameter.
25434         Use token_type for the token type instead.
25435         Pass token_flags to cpp_type2name.
25436         * c-common.h (c_parse_error): Update declaration.
25437         * c-parser.c (c_parser_error): Pass 0 as token flags.
25438
25439 2009-04-22  Andrey Belevantsev  <abel@ispras.ru>
25440
25441         PR rtl-optimization/39580
25442         * sel-sched-ir.c (insert_in_history_vect): Remove incorrect gcc_assert.
25443
25444 2009-04-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
25445
25446         * function.c (expand_function_end): Do not emit a jump to the "naked"
25447         return label for fall-through returns.
25448         * except.c (sjlj_emit_function_exit): Always place the call to the
25449         unregister function at the location installed by expand_function_end.
25450
25451 2009-04-22  Richard Guenther  <rguenther@suse.de>
25452
25453         PR tree-optimization/39845
25454         * tree-switch-conversion.c (build_arrays): Add new referenced vars.
25455         (gen_inbound_check): Likewise.
25456
25457 2009-04-22  Nathan Sidwell  <nathan@codesourcery.com>
25458
25459         * gthr-vxworks.h (struct __gthread_once_t): Add alignment and
25460         padding for PPC.
25461         (__GTHREAD_ONCE_INIT): Adjust ppc initializer.
25462         * config/vxlib.c (__gthread_once): Add race guard for PPC.
25463
25464 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25465
25466         * config/sh/sh.c (shift_insns_rtx, shiftcosts, gen_shifty_op,
25467         sh_dynamicalize_shift_p, shl_and_scr_length): Truncate
25468         shift counts to avoid out-of-bounds array accesses.
25469
25470 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25471
25472         * config/sparc/sparc.h (POINTER_SIZE): Fix comment.
25473         (Pmode): Move above.
25474
25475 2009-04-22  Uros Bizjak  <ubizjak@gmail.com>
25476
25477         * config/alpha/alpha.c: Use REG_P, MEM_P, CONST_INT_P, JUMP_P,
25478         NONJUMP_INSN_P, CALL_P, LABEL_P and NOTE_P predicates instead of
25479         GET_CODE macro.  Use IN_RANGE macro where appropriate.
25480         * config/alpha/alpha.h: Ditto.
25481         * config/alpha/alpha.md: Ditto.
25482         * config/alpha/constraints.md: Ditto.
25483         * config/alpha/predicates.md: Ditto.
25484
25485 2009-04-22  Paolo Bonzini  <bonzini@gnu.org>
25486
25487         * defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Provide empty default.
25488         * config/frv/frv.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25489         * config/s390/s390.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25490         * config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25491         * config/spu/spu.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25492         * config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25493         * config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25494         * config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25495         * config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25496         * config/crx/crx.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25497         * config/fr30/fr30.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25498         * config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25499         * config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25500         * config/iq2000/iq2000.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25501         * config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25502         * config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25503         * config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25504         * config/picochip/picochip.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25505         * config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25506         * config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25507         * config/score/score.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25508         * config/arm/arm.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25509         * config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25510         * config/mips/mips.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25511         * config/v850/v850.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25512         * config/mmix/mmix.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25513         * config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
25514
25515 2009-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
25516
25517         * cfghooks.c (tidy_fallthru_edges): Remove find_basic_blocks
25518         references from comments.
25519         * cfgbuild.c (count_basic_blocks): Delete.
25520         (find_basic_blocks_1): Delete.
25521         (find_basic_blocks): Delete.
25522         * except.c (finish_eh_generation): Make static.  Move comment from
25523         except.h here.  Remove find_basic_blocks references from comments.
25524         * except.h (finish_eh_generation): Delete.
25525         * basic-block.h (find_basic_blocks): Delete.
25526         * config/sh/sh.c (sh_output_mi_thunk): Delete a "#if 0" block.
25527
25528 2009-04-22  Dave Korn  <dave.korn.cygwin@gmail.com>
25529
25530         * sdbout.c (sdbout_symbol):  Pass VOIDmode to eliminate_regs.
25531         (sdbout_parms):  Likewise.
25532
25533 2009-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
25534
25535         * config/sh/sh.c (prepare_cbranch_operands): Use
25536         LAST_AND_UNUSED_RTX_CODE instead of CODE_FOR_nothing.
25537         (expand_cbranchdi4): Likewise.
25538         (from_compare): Add cast to enum type.
25539         (expand_cbranchsi4): Use add_reg_note.
25540         (output_stack_adjust, push, pop, sh_expand_prologue): Likewise.
25541         (sh_insn_length_adjustment): Use sh_cpu_attr instead of sh_cpu.
25542         (sh_initialize_trampoline): Change 0 to LCT_NORMAL in function call.
25543         (sh_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25544         * config/sh/sh.md (cbranchsi4): Use LAST_AND_UNUSED_RTX_CODE
25545         instead of CODE_FOR_nothing.
25546         (cbranchdi4): Likewise.  Fix the order of arguments for
25547         gen_rtx_fmt_ee.
25548         (push_fpscr): Use add_reg_note.
25549         (pop_fpscr, movdf_i4+1, reload_outdf__RnFRm+3, reload_outdf__RnFRm+4,
25550         reload_outdf__RnFRm+5, fpu_switch+1, fpu_switch+2): Likewise.
25551
25552 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
25553
25554         * ABOUT-GCC-NLS, ChangeLog, ChangeLog-1997, ChangeLog-1998,
25555         ChangeLog-1999, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25556         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25557         ChangeLog-2007, ChangeLog-2008, ChangeLog.dataflow, ChangeLog.lib,
25558         ChangeLog.ptr, ChangeLog.tree-ssa, ChangeLog.tuples, FSFChangeLog,
25559         FSFChangeLog.10, FSFChangeLog.11, LANGUAGES, ONEWS, acinclude.m4,
25560         config/alpha/gnu.h, config/alpha/libgcc-alpha-ldbl.ver,
25561         config/alpha/t-osf4, config/alpha/t-vms, config/alpha/va_list.h,
25562         config/alpha/x-vms, config/arc/t-arc,
25563         config/arm/README-interworking, config/arm/arm-c.c,
25564         config/arm/gentune.sh, config/arm/libgcc-bpabi.ver,
25565         config/arm/t-arm, config/arm/t-arm-elf, config/arm/t-arm-softfp,
25566         config/arm/t-bpabi, config/arm/t-linux, config/arm/t-linux-eabi,
25567         config/arm/t-netbsd, config/arm/t-pe, config/arm/t-strongarm-elf,
25568         config/arm/t-symbian, config/arm/t-vxworks, config/arm/t-wince-pe,
25569         config/avr/t-avr, config/bfin/elf.h, config/bfin/libgcc-bfin.ver,
25570         config/bfin/linux.h, config/bfin/t-bfin, config/bfin/t-bfin-elf,
25571         config/bfin/t-bfin-linux, config/bfin/t-bfin-uclinux,
25572         config/bfin/uclinux.h, config/cris/mulsi3.asm, config/cris/t-cris,
25573         config/cris/t-elfmulti, config/crx/t-crx,
25574         config/darwin-ppc-ldouble-patch.def, config/darwin-sections.def,
25575         config/divmod.c, config/fr30/t-fr30, config/frv/libgcc-frv.ver,
25576         config/frv/t-frv, config/frv/t-linux, config/h8300/genmova.sh,
25577         config/h8300/t-h8300, config/i386/athlon.md,
25578         config/i386/darwin-libgcc.10.4.ver,
25579         config/i386/darwin-libgcc.10.5.ver, config/i386/libgcc-glibc.ver,
25580         config/i386/mach.h, config/i386/netbsd.h, config/i386/t-crtpc,
25581         config/i386/t-cygming, config/i386/t-cygwin, config/i386/t-i386,
25582         config/i386/t-linux64, config/i386/t-nwld,
25583         config/i386/t-rtems-i386, config/i386/t-sol2-10,
25584         config/i386/x-mingw32, config/ia64/div.md, config/ia64/elf.h,
25585         config/ia64/ia64.opt, config/ia64/libgcc-glibc.ver,
25586         config/ia64/libgcc-ia64.ver, config/ia64/linux.h,
25587         config/ia64/sysv4.h, config/ia64/t-hpux, config/ia64/t-ia64,
25588         config/iq2000/abi, config/iq2000/lib2extra-funcs.c,
25589         config/iq2000/t-iq2000, config/libgcc-glibc.ver,
25590         config/m32r/libgcc-glibc.ver, config/m32r/t-linux,
25591         config/m32r/t-m32r, config/m68hc11/t-m68hc11,
25592         config/m68k/t-floatlib, config/m68k/t-linux, config/m68k/t-mlibs,
25593         config/m68k/t-uclinux, config/mcore/t-mcore,
25594         config/mcore/t-mcore-pe, config/mips/20kc.md, config/mips/4130.md,
25595         config/mips/5400.md, config/mips/5500.md, config/mips/crti.asm,
25596         config/mips/crtn.asm, config/mips/irix-crti.asm,
25597         config/mips/irix-crtn.asm, config/mips/libgcc-mips16.ver,
25598         config/mips/mips-dsp.md, config/mips/mips-dspr2.md,
25599         config/mips/mips-fixed.md, config/mips/sb1.md,
25600         config/mips/sr71k.md, config/mips/t-elf, config/mips/t-gofast,
25601         config/mips/t-iris6, config/mips/t-isa3264,
25602         config/mips/t-libgcc-mips16, config/mips/t-linux64,
25603         config/mips/t-mips, config/mips/t-r3900, config/mips/t-rtems,
25604         config/mips/t-sb1, config/mips/t-sde, config/mips/t-sdemtk,
25605         config/mips/t-slibgcc-irix, config/mips/t-sr71k, config/mips/t-st,
25606         config/mips/t-vr, config/mips/t-vxworks, config/mmix/t-mmix,
25607         config/mn10300/t-linux, config/mn10300/t-mn10300,
25608         config/pa/pa32-regs.h, config/pa/t-hpux-shlib, config/pa/t-linux,
25609         config/pa/t-linux64, config/pa/t-pa64, config/pdp11/t-pdp11,
25610         config/picochip/libgccExtras/clzsi2.asm,
25611         config/picochip/t-picochip, config/rs6000/darwin-ldouble-format,
25612         config/rs6000/darwin-libgcc.10.4.ver,
25613         config/rs6000/darwin-libgcc.10.5.ver,
25614         config/rs6000/libgcc-ppc-glibc.ver, config/rs6000/ppc-asm.h,
25615         config/rs6000/t-aix43, config/rs6000/t-aix52,
25616         config/rs6000/t-darwin, config/rs6000/t-fprules,
25617         config/rs6000/t-fprules-fpbit, config/rs6000/t-linux64,
25618         config/rs6000/t-lynx, config/rs6000/t-netbsd,
25619         config/rs6000/t-ppccomm, config/rs6000/t-ppcendian,
25620         config/rs6000/t-ppcgas, config/rs6000/t-rs6000,
25621         config/rs6000/t-rtems, config/rs6000/t-spe,
25622         config/rs6000/t-vxworks, config/s390/libgcc-glibc.ver,
25623         config/score/t-score-elf, config/sh/divcost-analysis,
25624         config/sh/libgcc-glibc.ver, config/sh/t-netbsd, config/sh/t-sh,
25625         config/sh/t-sh64, config/sh/t-superh, config/sh/t-symbian,
25626         config/sparc/libgcc-sparc-glibc.ver, config/sparc/sol2-bi.h,
25627         config/sparc/sol2-gas.h, config/sparc/sol2-gld-bi.h,
25628         config/sparc/t-elf, config/sparc/t-linux64, config/sparc/t-sol2,
25629         config/stormy16/stormy-abi, config/stormy16/t-stormy16,
25630         config/t-darwin, config/t-libunwind, config/t-libunwind-elf,
25631         config/t-linux, config/t-lynx, config/t-slibgcc-elf-ver,
25632         config/t-slibgcc-sld, config/t-sol2, config/t-vxworks,
25633         config/udivmod.c, config/udivmodsi4.c, config/v850/t-v850,
25634         config/v850/t-v850e, config/xtensa/t-xtensa, diagnostic.def,
25635         gdbinit.in, glimits.h, gstab.h, gsyms.h, java/ChangeLog,
25636         java/ChangeLog.ptr, java/ChangeLog.tree-ssa, libgcc-std.ver,
25637         limitx.h, version.c, xcoff.h: Add copyright and license notices.
25638         * config/h8300/genmova.sh: Include copyright and license notices
25639         in generated output.
25640         * config/h8300/mova.md: Regenerate.
25641         * doc/install.texi2html: Include word "Copyright" in copyright
25642         notice and use name "Free Software Foundation, Inc.".
25643         * ChangeLog, ChangeLog-2000, ChangeLog-2001, ChangeLog-2002,
25644         ChangeLog-2003, ChangeLog-2004, ChangeLog-2005, ChangeLog-2006,
25645         ChangeLog-2007, ChangeLog-2008: Correct dates.
25646
25647 2009-04-21  Eric Botcazou  <ebotcazou@adacore.com>
25648
25649         * c-common.c (c_common_truthvalue_conversion): Use LOCATION to build
25650         NE_EXPR operations as well.
25651         * c-parser.c (c_parser_condition): Do not set location information on
25652         the condition.
25653         (c_parser_conditional_expression): Likewise.
25654         (c_parser_binary_expression): Set location information on operators.
25655         * c-typeck.c (build_unary_op) <TRUTH_NOT_EXPR>: Reset the location if
25656         TRUTH_NOT_EXPR has been folded.
25657         * fold-const.c (fold_truth_not_expr): Copy location information from
25658         the incoming expression to the outgoing one.
25659         * gimplify.c (shortcut_cond_r): Add locus parameter.  Pass it to
25660         recursive calls on the LHS of the operator but pass that of the
25661         operator to recursive calls on the RHS of the operator.  Set it
25662         on the COND_EXPR.
25663         (shortcut_cond_expr): Set the locus of the operator on the second
25664         COND_EXPR and that of the expression on the first in degenerate cases.
25665         Pass the locus of the expression to calls to shortcut_cond_r.
25666         Set the locus of the 'then' block on the associated jump, if any.
25667         (gimplify_boolean_expr): Add locus parameter.  Set it on the COND_EXPR.
25668         (gimplify_expr) <TRUTH_ANDIF_EXPR>: Pass the locus of the outer
25669         expression to call to gimplify_boolean_expr.
25670
25671 2009-04-21  Kai Tietz  <kai.tietz@onevision.com>
25672
25673         * config.gcc: Add additional configuration for
25674         i686-w64-mingw* and x86_64-w64-mingw* triplet.
25675         * config/i386/mingw-w64.h: New mingw-w64 specific header.
25676         (CPP_SPEC): Redefine for allowing -municode option.
25677         (STARTFILE_SPEC): Likewise.
25678         * config/i386/t-mingw-w64: New.
25679         * config/i386/mingw-w64.opt: New.
25680         (municode): Add new target option.
25681         * doc/invoke.texi (municode): Add documentation for new option.
25682
25683 2009-04-21  Ian Lance Taylor  <iant@google.com>
25684
25685         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25686         Correct test for number of arguments.
25687         * config/spu/spu-c.c (spu_resolve_overloaded_builtin): Likewise.
25688
25689 2009-04-21  Andreas Schwab  <schwab@linux-m68k.org>
25690
25691         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Use enum for second
25692         argument of emit_library_call.
25693
25694 2009-04-21  Richard Guenther  <rguenther@suse.de>
25695
25696         PR middle-end/39829
25697         * gimple.c (walk_stmt_load_store_addr_ops): Catch addresses
25698         inside VIEW_CONVERT_EXPRs.
25699
25700 2009-04-21  Martin Jambor  <mjambor@suse.cz>
25701
25702         * tree-switch-conversion.c (build_constructors): Split a long line.
25703         (constructor_contains_same_values_p): New function.
25704         (build_one_array): Create assigns of constants if possible, do not
25705         call mark_sym_for_renaming, call update_stmt.
25706         (build_arrays): Call make_ssa_name (create_tmp_var ()) instead of
25707         make_rename_temp.  Do not call mark_symbols_for_renaming, call
25708         update_stmt.
25709         (gen_def_assigns): Do not call mark_symbols_for_renaming or
25710         find_new_referenced_vars, call update_stmt.
25711         (gen_inbound_check): Use create_tmp_var and create ssa names manually
25712         instead of calling make_rename_temp.  Do not call
25713         find_new_referenced_vars or mark_symbols_for_renaming, call
25714         update_stmt.
25715
25716 2009-04-21  Richard Guenther  <rguenther@suse.de>
25717
25718         PR tree-optimization/39827
25719         * tree-ssa-phiprop.c (propagate_with_phi): Check SSA_NAME is in range.
25720         (tree_ssa_phiprop): Pass the correct array size.
25721
25722 2009-04-21  Uros Bizjak  <ubizjak@gmail.com>
25723
25724         * config/alpha/alpha.md (tune): Add cast to enum attr_tune.
25725
25726 2009-04-21  Manuel López-Ibáñez  <manu@gcc.gnu.org>
25727
25728         PR 16202
25729         * c-typeck.c (lvalue_p): Move declaration ...
25730         * c-common.h (lvalue_p): ... to here.
25731         * c-common.c (candidate_equal_p): New.
25732         (add_tlist): Use it.
25733         (merge_tlist): Use it.
25734         (warn_for_collisions_1): Likewise.
25735         (warning_candidate_p): Accept more candidates.
25736         (verify_tree): A warning candidate can be an expression. Use
25737         candidate_equal_p.
25738
25739 2009-04-21  Ben Elliston  <bje@au.ibm.com>
25740
25741         PR target/5267
25742         * doc/invoke.texi (RS/6000 and PowerPC Options): Add documentation
25743         for -mcall-eabi, -mcall-aixdesc, -mcall-freebsd and -mcall-openbsd
25744         options.  Remove -mcall-solaris documentation.
25745
25746 2009-04-21  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
25747
25748         PR c++/13358
25749         * doc/invoke.texi (-Wlong-long): Update description.
25750         * c-lex (interpret_integer): Only warn if there was no previous
25751         overflow and -Wlong-long is enabled.
25752         * c-decl.c (declspecs_add_type): Drop redundant flags.
25753         * c.opt (Wlong-long): Init to -1.
25754         * c-opts.c (sanitize_cpp_opts): Synchronize cpp's warn_long_long
25755         and front-end warn_long_long. Wlong-long only depends on other
25756         flags if it is uninitialized.
25757         * c-parser.c (disable_extension_diagnostics): warn_long_long is
25758         the same for CPP and FE.
25759         (restore_extension_diagnostics): Likewise.
25760
25761 2009-04-20  Ian Lance Taylor  <iant@google.com>
25762
25763         Fix enum conversions which are invalid in C++:
25764         * auto-inc-dec.c (attempt_change): Change 0 to SET in function call.
25765         * calls.c (store_one_arg): Change 0 to EXPAND_NORMAL in function call.
25766         * cse.c (hash_rtx_cb): Change 0 to VOIDmode in function call.
25767         * dbgcnt.c (dbg_cnt_set_limit_by_name): Add cast to enum type.
25768         * dbxout.c (dbxout_symbol): Change 0 to VOIDmode in function call.
25769         (dbxout_parms): Likewise.
25770         * df-core.c (df_set_flags): Change changeable_flags parameter to int.
25771         (df_clear_flags): Likewise.
25772         * df-problems.c (df_rd_bb_local_compute_process_def): Change
25773         top_flag parameter to int.
25774         (df_chain_create_bb_process_use): Likewise.
25775         (df_chain_add_problem): Change chain_flags parameter to unsigned int.
25776         Remove cast.
25777         * df-scan.c (df_ref_create): Change ref_flags parameter to int.
25778         (df_ref_create_structure, df_def_record_1): Likewise.
25779         (df_defs_record, df_uses_record, df_get_call_refs): Likewise.
25780         (df_notes_rescan): Change 0 to VOIDmode in function call.
25781         (df_get_call_refs, df_insn_refs_collect): Likewise.
25782         (df_bb_regs_collect): Likewise.
25783         (df_entry_block_defs_collect): Likewise.
25784         (df_exit_block_uses_collect): Likewise.
25785         * df.h: Update declarations.
25786         * double-int.c (double_int_divmod): Add cast to enum type.
25787         * dse.c (replace_inc_dec): Reverse parameters to gen_int_mode.
25788         * dwarf2out.c (new_reg_loc_descr): Add casts to enum type.
25789         (based_loc_descr): Likewise.
25790         (loc_descriptor_from_tree_1): Change first_op and second_op to
25791         enum dwarf_location_atom.  Add cast to enum type.
25792         * expmed.c (init_expmed): Change 0 to SET in function call.
25793         * expr.c (init_expr_target): Change 0 to VOIDmode in function call.
25794         (expand_expr_real_1): Change 0 to EXPAND_NORMAL in function call.
25795         (do_store_flag): Likewise.
25796         * fixed-value.h (struct fixed_value): Change mode to enum
25797         machine_mode.
25798         * function.c (assign_parms): Change 0 to VOIDmode in function call.
25799         * genautomata.c (insert_automaton_decl): Change 1 to INSERT in
25800         function call.
25801         (insert_insn_decl, insert_decl, insert_state): Likewise.
25802         (automata_list_finish): Likewise.
25803         * genrecog.c (process_define_predicate): Add cast to enum type.
25804         * gensupport.c (init_predicate_table): Add cast to enum type.
25805         * gimple.c (gimple_build_return): Change 0 to ERROR_MARK in
25806         function call.
25807         (gimple_build_call_1, gimple_build_label): Likewise.
25808         (gimple_build_goto, gimple_build_asm_1): Likewise.
25809         (gimple_build_switch_1, gimple_build_cdt): Likewise.
25810         * gimple.h (GIMPLE_CHECK): Change 0 to ERROR_MARK in function call.
25811         (enum fallback): Rename from enum fallback_t.
25812         (fallback_t): Typedef as int.
25813         * gimple-low.c (lower_builtin_setjmp): Change TSI_SAME_STMT to
25814         GSI_SAME_STMT in function call.
25815         * ira.c (setup_class_subset_and_memory_move_costs): Add casts to
25816         enum type.
25817         (setup_reg_class_relations): Likewise.
25818         (setup_reg_class_nregs): Change cl to int.  Add casts to enum type.
25819         (setup_prohibited_class_mode_regs): Add cast to enum type.
25820         (setup_prohibited_mode_move_regs): Likewise.
25821         * ira-costs.c (record_reg_classes): Change rclass to enum reg_class.
25822         (record_address_regs): Change i to enum reg_class.
25823         * lists.c (alloc_EXPR_LIST): Add cast to enum type.
25824         * machmode.h (GET_MODE_CLASS): Cast value to enum mode_class.
25825         (GET_MODE_WIDER_MODE): Cast value to enum machine_mode.
25826         (GET_MODE_2XWIDER_MODE): Likewise.
25827         (GET_CLASS_NARROWEST_MODE): Likewise.
25828         * omp-low.c (expand_omp_for): Add cast to enum type.
25829         * optabs.c (debug_optab_libfuncs): Add casts to enum type.
25830         * opts.c (enable_warning_as_error): Change kind to diagostic_t.
25831         * postreload.c (reload_cse_simplify_operands): Change rclass local
25832         to enum reg_class.
25833         * predict.c (combine_predictions_for_insn): Change best_predictor
25834         and predictor to enum br_predictor.
25835         (combine_predictions_for_bb): Likewise.
25836         (build_predict_expr): Change assignment to PREDICT_EXPR_OUTCOME to
25837         use SET_PREDICT_EXPR_OUTCOME.
25838         * real.c (real_arithmetic): Change icode to code in function call.
25839         * reginfo.c (init_move_cost): Add casts to enum type.
25840         (init_reg_sets_1, init_fake_stack_mems): Likewise.
25841         * regmove.c (regclass_compatible_p): Change class0 and class1 to
25842         enum reg_class.
25843         * reload.c (find_valid_class): Add casts to enum type.
25844         (push_reload): Change 0 to NO_REGS in function call.
25845         (find_reloads): Change this_alternative to array of enum
25846         reg_class.  Remove some now-unnecessary casts.
25847         (make_memloc): Change 0 to VOIDmode in function call.
25848         * reload1.c (reload): Change 0 to VOIDmode in function call.
25849         (eliminate_regs_1, elimination_effects): Likewise.
25850         (eliminate_regs_in_insn): Likewise.
25851         (emit_input_reload_insns): Add cast to enum type.
25852         (delete_output_reload): Change 0 to VOIDmode in function call.
25853         * reorg.c (insn_sets_resource_p): Convert include_delayed_effects
25854         to enum type in function call.
25855         * tree.h (PREDICT_EXPR_OUTCOME): Add cast to enum type.
25856         (SET_PREDICT_EXPR_OUTCOME): Define.
25857         * tree-dump.c (get_dump_file_info): Change phase parameter to int.
25858         (get_dump_file_name, dump_begin, dump_enabled_p): Likewise.
25859         (dump_initialized_p, dump_flag_name, dump_end): Likewise.
25860         (dump_function): Likewise.
25861         * tree-dump.h: Update declarations.
25862         * tree-pass.h: Update declarations.
25863         * varasm.c (assemble_integer): Change mclass to enum mode_class.
25864         * config/arm/arm.c (thumb_legitimize_reload_address): Add cast to
25865         enum type.
25866         (arm_rtx_costs_1): Correct parenthesization.
25867         (arm_rtx_costs): Add casts to enum type.
25868         (adjacent_mem_locations): Reverse arguments to const_ok_for_op.
25869         (vfp_emit_fstmd): Use add_rg_note.
25870         (emit_multi_reg_push, emit_sfm): Likewise.
25871         (thumb_set_frame_pointer): Likewise.
25872         (arm_expand_prologue): Likewise.
25873         (arm_regno_class): Change return type to enum reg_class.
25874         (thumb1_expand_prologue): Use add_reg_note.
25875         * config/arm/arm-protos.h (arm_regno_class): Update declaration.
25876         * config/arm/arm.h (INITIALIZE_TRAMPOLINE): Change 0 to LCT_NORMAL
25877         in function call.
25878         * config/arm/gentune.sh: Add cast to enum type.
25879         * config/arm/arm-tune.md: Rebuild.
25880         * config/i386/i386.c (ix86_expand_prologue): Use add_reg_note.
25881         (ix86_split_fp_branch, predict_jump): Likewise.
25882         (ix86_expand_multi_arg_builtin): Change sub_code from enum
25883         insn_code to enum rtx_code.
25884         (ix86_builtin_vectorized_function): Add cast to enum type.
25885         * config/i386/i386.md (truncdfsf2): Change slot to enum
25886         ix86_stack_slot.
25887         (truncxf<mode>2, isinf<mode>2): Likewise.
25888         * config/i386/i386-c.c (ix86_pragma_target_parse): Add cast to
25889         enum type.
25890         * config/ia64/ia64.c (ia64_split_tmode_move): Use add_reg_note.
25891         (spill_restore_mem, do_spill, ia64_expand_prologue): Likewise.
25892         (insert_bundle_state): Change 1 to INSERT in function call.
25893         (ia64_add_bundle_selector_before): Likewise.
25894         * config/ia64/ia64.md (cpu attr): Add cast to enum type.
25895         (save_stack_nonlocal): Change 0 to LCT_NORMAL in function call.
25896         (restore_stack_nonlocal): Likewise.
25897         * config/mips/mips.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL in
25898         function call.
25899         * config/mips/mips.c (mips_binary_cost): Change 0 to SET in
25900         function call.
25901         (mips_rtx_costs): Likewise.
25902         (mips_override_options): Add casts to enum type.
25903         * config/mips/sdemtk.h (MIPS_ICACHE_SYNC): Change 0 to LCT_NORMAL
25904         in function call.
25905         * config/pa/pa.c (legitimize_pic_address): Use add_reg_note.
25906         (store_reg, set_reg_plus_d): Likewise.
25907         (hppa_expand_prologue, hppa_profile_hook): Likewise.
25908         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add
25909         cast to enum type.
25910         (altivec_expand_vec_set_builtin): Change 0 to EXPAND_NORMAL in
25911         function call.
25912         (emit_unlikely_jump): Use add_reg_note.
25913         (rs6000_emit_allocate_stack): Likewise.
25914         (rs6000_frame_related, rs6000_emit_prologue): Likewise.
25915         (output_toc): Change 1 to INSERT in function call.
25916         (output_profile_hook): Change 0 to LCT_NORMAL in function call.
25917         (rs6000_initialize_trampoline): Likewise.
25918         (rs6000_init_dwarf_reg_sizes_extra): Change 0 to EXPAND_NORMAL in
25919         function call.
25920         * config/s390/s390.c (s390_rtx_costs): Add cast to enum type.
25921         (s390_expand_movmem): Change 0 to OPTAB_DIRECT in function call.
25922         (s390_expand_setmem, s390_expand_cmpmem): Likewise.
25923         (save_gprs): Use add_reg_note.
25924         (s390_emit_prologue): Likewise.
25925         (s390_expand_builtin): Change 0 to EXPAND_NORMAL in function call.
25926         * config/sparc/sparc.c (sparc_expand_prologue): Use add_reg_note.
25927         (sparc_fold_builtin): Add cast to enum type.
25928         * config/spu/spu.c (spu_emit_branch_or_set): Change ior_code to
25929         enum insn_code.
25930         (spu_expand_prologue): Use add_reg_note.
25931         (expand_builtin_args): Change 0 to EXPAND_NORMAL in function call.
25932
25933 2009-04-20  Ian Lance Taylor  <iant@google.com>
25934
25935         * c-parser.c (c_parser_attributes): Change VEC back to tree list.
25936         (c_parser_postfix_expression_after_primary): Get VEC for list of
25937         arguments.  Get original types of arguments.  Call
25938         build_function_call_vec.
25939         (cached_expr_list_1, cached_expr_list_2): New static variables.
25940         (c_parser_expr_list): Change return type to VEC *.  Add
25941         p_orig_types parameter.  Change all callers.
25942         (c_parser_release_expr): New static function.
25943         (c_parser_vec_to_tree_list): New static function.
25944         * c-typeck.c (build_function_call): Rewrite to build a VEC and
25945         call build_function_call_vec.
25946         (build_function_call_vec): New function, based on old
25947         build_function_call.
25948         (convert_arguments): Remove nargs and argarray parameters.  Change
25949         values to a VEC.  Add origtypes parameter.
25950         (build_modify_expr): Add rhs_origtype parameter.  Change all callers.
25951         (convert_for_assignment): Add origtype parameter.  Change all
25952         callers.  If warn_cxx_compat, check for conversion to an enum
25953         type when calling a function.
25954         (store_init_value): Add origtype parameter.  Change all callers.
25955         (digest_init): Likewise.
25956         (struct init_node): Add origtype field.
25957         (add_pending_init): Add origtype parameter.  Change all callers.
25958         (output_init_element): Likewise.
25959         (output_pending_init_elements): Pass origtype from init_node to
25960         output_init_element.
25961         (process_init_element): Pass origtype from c_expr to
25962         output_init_element.
25963         (c_finish_return): Add origtype parameter.  Change all callers.
25964         * c-common.c (sync_resolve_size): Change params to VEC *.  Change
25965         caller.
25966         (sync_resolve_params): Likewise.
25967         (sync_resolve_return): Change params to first_param.  Change caller.
25968         (resolve_overloaded_builtins): Change params to VEC *.  Change
25969         callers.  Save first parameter around call to build_function_call_vec.
25970         * c-decl.c (finish_decl): Add origtype parameter.  Change all
25971         callers.  Call build_function_call_vec rather than
25972         build_function_call for cleanup.
25973         * c-tree.h: Update declarations.
25974         * c-common.h: Update declarations.
25975         * stub-objc.c (objc_rewrite_function_call): Change parameter from
25976         params to first_param.
25977         * target.h (struct gcc_target): Change resolve_overloaded_builtin
25978         params parameter from tree to void *.
25979         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
25980         Change arglist parameter to have type void *, and to be a pointer
25981         to a VEC.
25982         * config/rs6000/rs6000-protos.h
25983         (altivec_resolve_overloaded_builtin): Update declaration.
25984         * config/spu/spu-c.c (spu_resolved_overloaded_builtin): Change
25985         fnargs parameter to have type void *, and to be a pointer to a
25986         VEC.  Call build_function_call_vec instead of
25987         build_function_call.
25988         * config/spu/spu-protos.h (spu_expand_builtin): Update declaration.
25989
25990 2009-04-20  Joey Ye  <joey.ye@intel.com>
25991             Xuepeng Guo  <xuepeng.guo@intel.com>
25992             H.J. Lu  <hongjiu.lu@intel.com>
25993
25994         * config/i386/atom.md: Add bypasses with ix86_dep_by_shift_count.
25995
25996         * config/i386/i386.c (LEA_SEARCH_THRESHOLD): New macro.
25997         (IX86_LEA_PRIORITY): Likewise.
25998         (distance_non_agu_define): New function.
25999         (distance_agu_use): Likewise.
26000         (ix86_lea_for_add_ok): Likewise.
26001         (ix86_dep_by_shift_count): Likewise.
26002
26003         * config/i386/i386.md: Call ix86_lea_for_add_ok to decide we
26004         should split for LEA.
26005
26006         * config/i386/i386-protos.h (ix86_lea_for_add_ok): Declare new
26007         function.
26008         (ix86_dep_by_shift_count): Likewise.
26009
26010 2009-04-20  Richard Guenther  <rguenther@suse.de>
26011
26012         * expr.c (handled_component_p): Move ...
26013         * tree.h (handled_component_p): ... here.
26014         * tree.def: Re-order BIT_FIELD_REF, COMPONENT_REF,
26015         ARRAY_REF, ARRAY_RANGE_REF, VIEW_CONVERT_EXPR, IMAGPART_EXPR
26016         and REALPART_EXPR to be in one group.
26017
26018 2009-04-20  Richard Guenther  <rguenther@suse.de>
26019
26020         * basic-block.h (get_all_dominated_blocks): Declare.
26021         * dominance.c (get_all_dominated_blocks): New function.
26022         * tree-cfg.c (get_all_dominated_blocks): Remove.
26023         (remove_edge_and_dominated_blocks): Adjust.
26024         * tree-ssa-phiprop.c (tree_ssa_phiprop_1): Fold in ...
26025         (tree_ssa_phiprop): ... here.  Use get_all_dominated_blocks
26026         instead of recursing.
26027
26028 2009-04-20  Doug Kwan  <dougkwan@google.com>
26029
26030         * cgraph.h (cgraph_node_ptr): New type for vector functions.
26031         (struct cgraph_node_set_def): New type.
26032         (cgraph_node_set) New type. Also declare vector functions.
26033         (struct cgraph_node_set_element_def): New type.
26034         (cgraph_node_set_element): Ditto.
26035         (cgraph_node_set_iterator): New iterator type.
26036         (cgraph_node_set_new, cgraph_node_set_find, cgraph_node_set_add,
26037         cgraph_node_set_remove, dump_cgraph_node_set,
26038         debug_cgraph_node_set): New prototypes.
26039         (csi_end_p, csi_next, csi_node, csi_start, cgraph_node_in_set_p,
26040         cgraph_node_set_size): New inlines.
26041         * tree-pass.h (struct cgraph_node_set_def): New decl to avoid
26042         including cgraph.h.
26043         (struct ipa_opt_pass): Add struct cgraph_node_set_def
26044         argument to function 'write_summary'.
26045         * ipa.c: Include ggc.h.
26046         (hash_cgraph_node_set_element,
26047         eq_cgraph_node_set_element, cgraph_node_set_new,
26048         cgraph_node_set_add, cgraph_node_set_remove,
26049         cgraph_node_set_find, dump_cgraph_node_set,
26050         debug_cgraph_node_set): New functions.
26051         * Makefile.in (ipa.o): Add dependency on GGC_H.
26052
26053 2009-04-20  Ira Rosen  <irar@il.ibm.com>
26054
26055         PR tree-optimization/39675
26056         * tree-vect-loop.c (vect_transform_loop): Remove currently redundant
26057         check of the return code of vect_schedule_slp. Check that
26058         stmt_vec_info still exists for the statement, before checking its
26059         vectorization type.
26060
26061 2009-04-20  Michael Matz  <matz@suse.de>
26062
26063         * Makefile.in (generated_files): Take out $(simple_generated_c).
26064
26065 2009-04-19  Dave Korn  <dave.korn.cygwin@gmail.com>
26066
26067         * config/i386/cygwin-stdint.h (INTPTR_TYPE):  Remove "long".
26068         (UINTPTR_TYPE):  Likewise.
26069
26070 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26071
26072         PR c/37481
26073         * c-typeck.c (digest_init): Check for initializing an array with a
26074         string literal.
26075
26076 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26077
26078         PR c/19771
26079         * c-semantics.c (pop_stmt_list): Propagate
26080         STATEMENT_LIST_HAS_LABEL to parent statement list.
26081
26082 2009-04-19  Adam Nemet  <anemet@caviumnetworks.com>
26083
26084         * config/mips/mips.h (mips_tune_attr): New macro.
26085         * config/mips/mips.md (cpu): Use it.
26086
26087 2009-04-19  Joseph Myers  <joseph@codesourcery.com>
26088
26089         PR c/38243
26090         * c-decl.c (shadow_tag_warned): Diagnose use of restrict when
26091         declaring a tag.
26092
26093 2009-04-19  Diego Novillo  <dnovillo@google.com>
26094
26095         * toplev.c (compile_file): Move call to coverage_finish ...
26096         * cgraphunit.c (ipa_passes): ... here.
26097         Call cgraph_process_new_functions.
26098         * ipa-utils.c (get_base_var): Handle CONSTRUCTOR.
26099         * Makefile.in (cgraphunit.o): Add dependency on COVERAGE_H.
26100
26101 2009-04-19  Jan Hubicka  <jh@suse.cz>
26102
26103         * cgraph.c (cgraph_create_edge, cgraph_set_call_stmt): Set proper
26104         cfun.
26105         (dump_cgraph_node): Dump can throw external flag.
26106         * ipa-pure-const.c (propagate): Fix propagation of nothrow flags.
26107
26108 2009-04-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26109
26110         PR c/32061
26111         PR c++/36954
26112         * doc/invoke.texi: Add -Wlogical-op to -Wextra.
26113         * common.opt (Wlogical-op): Move from here...
26114         * c.opt (Wlogical-op): ... to here.
26115         * c-typeck.c (parser_build_binary_op): Update call to
26116         warn_logical_operator.
26117         * c-opts.c (c_common_post_options): Enable warn_logical_op with
26118         extra_warnings.
26119         * c-common.c (warn_logical_op): Update.
26120         * c-common.h (warn_logical_op): Update declaration.
26121
26122 2009-04-19  Eric Botcazou  <ebotcazou@adacore.com>
26123
26124         * tree.c (protected_set_expr_location): Fix formatting.
26125
26126 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26127
26128         PR c/27676
26129         * c-typeck.c (readonly_warning): new.
26130         (build_unary_op, build_modify_expr): Use readonly_warning for
26131         storing into something readonly but not const-qualified.
26132
26133 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26134
26135         PR c/22367
26136         * c-typeck.c (build_unary_op): Check for taking address of
26137         expression of type void.
26138
26139 2009-04-18  Joseph Myers  <joseph@codesourcery.com>
26140
26141         PR c/35210
26142         * c-typeck.c (build_function_call): Check for calling a function
26143         with qualified void return types.  Call require_complete_type when
26144         generating a trap.
26145
26146 2009-04-18  Jan Hubicka  <jh@suse.cz>
26147
26148         * cgraph.c (cgraph_make_edge, dump_cgraph_node, cgraph_set_call_stmt):
26149         Set nothrow flag.
26150         * cgraph.h (struct function): Reduce loop_nest to 30 bits; add
26151         can_throw_external flag.
26152         * ipa-reference.c (ipa_utils_reduced_inorder): Update call.
26153         * ipa-pure-const.c (ignore_edge): New function.
26154         (propagate): Compute order for NOTHROW computation; set NOTHROWs
26155         only over can_throw_external edges.
26156         (local_pure_const): Add nothrow flag.
26157         * ipa-utils.c (searchc): Add ignore_edge callback.
26158         (ipa_utils_reduced_inorder): Add ignore_edge callback.
26159         * ipa-utils.h (ipa_utils_reduced_inorder): Update prototype.
26160         (set_nothrow_function_flags): Update cgraph.
26161         * tree-cfg.c (verify_stmt): Relax nothrow checking when in IPA mode.
26162
26163 2009-04-18  Richard Guenther  <rguenther@suse.de>
26164
26165         PR middle-end/39804
26166         * tree-ssa-ccp.c (fold_stmt_1): New function factored from ...
26167         (fold_stmt): ... this and ...
26168         (fold_stmt_inplace): ... this.
26169         (fold_stmt_1): Fold references in calls and asms.
26170         * tree-cfg.c (remove_useless_stmts_cond): Use fold_stmt.
26171
26172 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26173
26174         * tree-vrp.c (ssa_name_nonzero_p): Remove.
26175         * tree.h: Remove the prototype for ssa_name_nonzero_p.
26176
26177 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26178
26179         * tree.c (function_args_count): Remove.
26180         * tree.h: Remove the prototype for function_args_count.
26181
26182 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26183
26184         * tree-iterator.c (expr_only): Remove.
26185         * tree.h: Remove the prototype for expr_only.
26186
26187 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26188
26189         * reginfo.c (cannot_change_mode_set_regs): Remove.
26190         * rtl.h: Remove the prototype for cannot_change_mode_set_regs.
26191
26192 2009-04-08  Anatoly Sokolov  <aesok@post.ru>
26193
26194         * config/avr/avr.md (*rotlsi3_8, *rotlsi3_16, *rotlsi3_24 ): Check
26195         whether operands 0 and 1 overlaps.
26196
26197 2009-04-18  Manuel López-Ibáñez  <manu@gcc.gnu.org>
26198
26199         PR middle-end/36902
26200         * tree-vrp.c (check_array_ref): Pass a location_t instead of a
26201         pointer. Use warning_at instead of warning.
26202         (search_for_addr_array): Likewise.
26203         (check_array_bounds): Likewise.
26204         (check_all_array_refs): Check that the incoming edge is not in the
26205         list of edges to be removed.
26206         (check_all_array_refs): Avoid the temporal pointer.
26207         (vrp_visit_cond_stmt): Fix typo.
26208         (simplify_switch_using_ranges): Handle the case where the switch
26209         index is an integer constant.
26210
26211 2009-04-18  Adam Nemet  <anemet@caviumnetworks.com>
26212
26213         * config/mips/mips.c (mips_final_postscan_insn): Make it static.
26214
26215 2009-04-18  Kazu Hirata  <kazu@codesourcery.com>
26216
26217         * doc/extend.texi, doc/invoke.texi: Fix typos.
26218
26219 2009-04-17  Cary Coutant  <ccoutant@google.com>
26220
26221         * tree-flow-inline.h (get_lineno): Fix inverted test.
26222
26223 2009-04-17  Diego Novillo  <dnovillo@google.com>
26224
26225         * tree-ssa-pre.c (create_expression_by_pieces): Remove
26226         assertion for AVAIL_OUT.
26227
26228 2009-04-17  Mike Frysinger  <vapier@gentoo.org>
26229
26230         PR target/38627
26231         * config/sh/lib1funcs.asm [__ELF__ && __linux__]: Add .note.GNU-stack.
26232         * config/sh/linux-atomic.asm: Likewise.
26233
26234 2009-04-17  Diego Novillo  <dnovillo@google.com>
26235
26236         * except.c (debug_eh_tree): New.
26237         (struct eh_region, struct eh_status): Move ...
26238         * except.h: ... here.
26239         (add_type_for_runtime): Declare extern.
26240         (lookup_type_for_runtime): Likewise.
26241         (debug_eh_tree): Declare.
26242         * Makefile.in (GTFILES): List except.h before except.c
26243
26244 2009-04-17  Diego Novillo  <dnovillo@google.com>
26245
26246         * omp-low.c (create_omp_child_function): Set DECL_CONTEXT for DECL.
26247         * cgraphunit.c (cgraph_build_static_cdtor): Likewise.
26248         * tree-dfa.c (find_referenced_vars_in): Factor out of ...
26249         (find_vars_r): ... here.
26250         * tree-flow.h (find_referenced_vars_in): Declare.
26251         * tree-ssa-pre.c (create_expression_by_pieces): Assert
26252         that AVAIL_OUT exists for BLOCK.
26253         * Makefile.in (CGRAPH_H): Add dependency on cif-code.def
26254         (tree-loop-distribution.o): Fix dependency on TREE_VECTORIZER_H.
26255         (tree-parloops.o): Likewise.
26256
26257 2009-04-17  Simon Baldwin  <simonb@google.com>
26258
26259         * toplev.c (default_tree_printer): Add handling for %E format.
26260
26261 2009-04-17  Diego Novillo  <dnovillo@google.com>
26262
26263         * tree-pretty-print.c (dump_generic_node): Add break after
26264         TREE_BINFO handler.  Handle COMPLEX_TYPE, REAL_TYPE and
26265         FIXED_POINT_TYPE.  Handle NULL TREE_TYPEs.  Handle METHOD_TYPE and
26266         FUNCTION_TYPE together.  Call print_struct_decl when printing
26267         structures and TDF_SLIM is not given.
26268         (print_struct_decl): Fix logic for detecting recursion.
26269
26270 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26271
26272         PR 31567
26273         * gcc.c (create_at_file): New.
26274         (compile_input_file_p): New.
26275         (do_spec_1): Use @args files for %i. Use create_at_file for %o.
26276         * main.c (main): Update call to toplev_main.
26277         * toplev.c (toplev_main): Change signature. Call expandargv.
26278         * toplev.h (toplev_main): Change signature.
26279
26280 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26281
26282         * dwarf2out.c (field_byte_offset): Use the type size as the field size
26283         if the latter is not constant.
26284
26285 2009-04-17  David Edelsohn  <edelsohn@gnu.org>
26286
26287         * dbxout.c (xcoff_debug_hooks): Add set_name_debug_nothing.
26288
26289 2009-04-17  Eric Botcazou  <ebotcazou@adacore.com>
26290
26291         * dbxout.c (dbxout_block): Reinstate test on TREE_USED.
26292         * tree-ssa-live.c (remove_unused_scope_block_p): Update TREE_USED bit.
26293
26294 2009-04-17  Richard Guenther  <rguenther@suse.de>
26295
26296         * tree-ssa-structalias.c (get_constraint_for_component_ref):
26297         Handle component references view-converting an invariant address.
26298
26299 2009-04-17  Adam Nemet  <anemet@caviumnetworks.com>
26300
26301         * doc/tm.texi (TARGET_DEFAULT_TARGET_FLAGS,
26302         TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET,
26303         TARGET_HAVE_SRODATA_SECTION, TARGET_HAVE_TLS,
26304         TARGET_UNWIND_TABLES_DEFAULT, TARGET_TERMINATE_DW2_EH_FRAME_INFO):
26305         Use @deftypevr rather than @deftypevar.
26306
26307 2009-04-17  Richard Guenther  <rguenther@suse.de>
26308
26309         * tree-ssa-forwprop.c (get_prop_dest_stmt): Clean up tuplification.
26310         (get_prop_source_stmt): Likewise.
26311         (can_propagate_from): Likewise.
26312
26313 2009-04-17  Andrew Stubbs  <ams@codesourcery.com>
26314
26315         * configure.ac: Add new AC_SUBST for TM_ENDIAN_CONFIG,
26316         TM_MULTILIB_CONFIG and TM_MULTILIB_EXCEPTIONS_CONFIG.
26317         (--with-multilib-list): Add default value.
26318         * configure: Regenerate.
26319         * Makefile.in (TM_ENDIAN_CONFIG): Define.
26320         (TM_MULTILIB_CONFIG, TM_MULTILIB_EXCEPTIONS_CONFIG): Define.
26321         * config.gcc (sh-*-*): Switch to using TM_ENDIAN_CONFIG,
26322         TM_MULTILIB_CONFIG, and TM_MULTILIB_EXCEPTIONS_CONFIG.
26323         Don't add default cpu to multilib list unnecessarily, but do enable
26324         the relevant compiler option..
26325         Add support for --with-multilib-list=<blank> and
26326         --with-multilib-list=!<somelib> to supress unwanted multilibs.
26327         * config/sh/t-sh (DEFAULT_ENDIAN, OTHER_ENDIAN): New variables.
26328         (MULTILIB_ENDIAN, MULTILIB_CPUS): Delete variables.
26329         (MULTILIB_OPTIONS): Redefine using OTHER_ENDIAN and
26330         TM_MULTILIB_CONFIG.
26331         (MULTILIB_EXCEPTIONS): Add TM_MULTILIB_EXCEPTIONS_CONFIG.
26332         (MULTILIB_OSDIRNAMES): New variable.
26333         * config/sh/t-1e: Delete file.
26334         * config/sh/t-mlib-sh1: Delete file.
26335         * config/sh/t-mlib-sh2: Delete file.
26336         * config/sh/t-mlib-sh2a: Delete file.
26337         * config/sh/t-mlib-sh2a-nofpu: Delete file.
26338         * config/sh/t-mlib-sh2a-single: Delete file.
26339         * config/sh/t-mlib-sh2a-single-only: Delete file.
26340         * config/sh/t-mlib-sh2e: Delete file.
26341         * config/sh/t-mlib-sh3e: Delete file.
26342         * config/sh/t-mlib-sh4: Delete file.
26343         * config/sh/t-mlib-sh4-nofpu: Delete file.
26344         * config/sh/t-mlib-sh4-single: Delete file.
26345         * config/sh/t-mlib-sh4-single-only: Delete file.
26346         * config/sh/t-mlib-sh4a: Delete file.
26347         * config/sh/t-mlib-sh4a-nofpu: Delete file.
26348         * config/sh/t-mlib-sh4a-single: Delete file.
26349         * config/sh/t-mlib-sh4a-single-only: Delete file.
26350         * config/sh/t-mlib-sh4al: Delete file.
26351         * config/sh/t-mlib-sh5-32media: Delete file.
26352         * config/sh/t-mlib-sh5-32media-nofpu: Delete file.
26353         * config/sh/t-mlib-sh5-64media: Delete file.
26354         * config/sh/t-mlib-sh5-64media-nofpu: Delete file.
26355         * config/sh/t-mlib-sh5-compact: Delete file.
26356         * config/sh/t-mlib-sh5-compact-nofpu: Delete file.
26357         * config/sh/t-linux: Don't override MULTILIB_EXCEPTIONS.
26358         * doc/install.texi (Options specification): Add
26359         --with-multilib-list and --with-endian.
26360
26361 2009-04-17  Rafael Avila de Espindola  <espindola@google.com>
26362
26363         * Makefile.in (REVISION_s): Always include quotes. Change ifdef to use
26364         REVISION_c.
26365         (OBJS-common): Add plugin-version.o.
26366         (plugin-version.o): New.
26367         * gcc-plugin.h (plugin_gcc_version): New.
26368         (plugin_default_version_check): New.
26369         (plugin_init_func, plugin_init): Add version argument.
26370         * plugin-version.c: New.
26371         * plugin.c (str_plugin_gcc_version_name): New.
26372         (try_init_one_plugin): Read plugin_gcc_version from the plugin and
26373         pass it to the init function.
26374         (plugin_default_version_check): New.
26375
26376 2009-04-17  Richard Guenther  <rguenther@suse.de>
26377
26378         * tree-ssa-alias.c (refs_may_alias_p_1): Do not use TBAA
26379         for decl-vs-decl disambiguation.
26380
26381 2009-04-17  Andreas Krebbel  <krebbel1@de.ibm.com>
26382
26383         * config/s390/s390.h (s390_tune_attr): New macro definition.
26384         * config/s390/s390.md (cpu attribute): Map to s390_tune_attr.
26385
26386 2009-04-17  Richard Guenther  <rguenther@suse.de>
26387
26388         * tree-ssa-ccp.c (struct fold_stmt_r_data): Remove.
26389         (fold_stmt_r): Likewise.
26390         (maybe_fold_reference): New function.
26391         (fold_gimple_assign): Handle cases fold_stmt_r did.
26392         (fold_stmt): Do not use fold_stmt_r.
26393         (fold_stmt_inplace): Likewise.
26394
26395 2009-04-17  Richard Guenther  <rguenther@suse.de>
26396
26397         * tree-ssa-dom.c (gimple_assign_unary_useless_conversion_p): Remove.
26398         (record_equivalences_from_stmt): Remove useless checks and
26399         simplifications.
26400         * tree-ssa-pre.c (eliminate): Avoid converting a constant if
26401         the type is already suitable.
26402
26403 2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
26404
26405         * config/sh/sh.h (FUNCTION_VALUE): Fix call to sh_promote_prototypes.
26406
26407 2009-04-17  Uros Bizjak  <ubizjak@gmail.com>
26408
26409         * config/arm/sfp-machine.h (__gcc_CMPtype): New typedef.
26410         (CMPtype): Define as __gcc_CMPtype.
26411
26412 2009-04-17  Aurelien Jarno  <aurelien@aurel32.net>
26413
26414         * config.gcc: Add soft-fp/t-softfp and i386/t-linux to tmake_file
26415         for i[34567]86-*-kfreebsd*-gnu*, x86_64-*-kfreebsd*-gnu*.
26416
26417 2009-04-17  Richard Guenther  <rguenther@suse.de>
26418
26419         PR tree-optimization/39746
26420         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Remove
26421         special-casing for builtins and static variable use/def.
26422         (call_may_clobber_ref_p_1): Likewise.
26423
26424 2009-04-16  Ian Lance Taylor  <iant@google.com>
26425
26426         * df.h: Include "timevar.h".
26427         (struct df_problem): Change tv_id field to timevar_id_t.
26428         * tree-pass.h: Include "timevar.h".
26429         (struct opt_pass): Change tv_id field to timevar_id_t.
26430         * timevar.h (timevar_id_t): Define TV_NONE.
26431         * passes.c (execute_one_ipa_transform_pass): Check for tv_id !=
26432         TV_NONE rather than tv_id != 0.
26433         (execute_one_pass): Likewise.
26434         * Makefile.in (DF_H): Add $(TIMEVAR_H).
26435         (TREE_PASS_H): Define.  Change all instances of tree-pass.h in
26436         dependencies to $(TREE_PASS_H).
26437         * bt-load.c (pass_branch_target_load_optimize1): Set tv_id field
26438         to TV_NONE.
26439         (pass_branch_target_load_optimize2): Likewise.
26440         * cfglayout.c (pass_into_cfg_layout_mode): Likewise.
26441         (pass_outof_cfg_layout_mode): Likewise.
26442         * cgraphbuild.c (pass_remove_cgraph_callee_edges): Likewise.
26443         (pass_rebuild_cgraph_edges): Likewise.
26444         (pass_remove_cgraph_callee_edges): Likewise.
26445         * df-core.c (pass_df_initialize_opt): Likewise.
26446         (pass_df_initialize_no_opt): Likewise.
26447         (pass_df_finish): Likewise.
26448         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
26449         * except.c (pass_set_nothrow_function_flags): Likewise.
26450         (pass_convert_to_eh_region_ranges): Likewise.
26451         * final.c (pass_compute_alignments): Likewise.
26452         * function.c (pass_instantiate_virtual_regs): Likewise.
26453         (pass_init_function): Likewise.
26454         (pass_leaf_regs): Likewise.
26455         (pass_match_asm_constraints): Likewise.
26456         * gimple-low.c (pass_lower_cf): Likewise.
26457         (pass_mark_used_blocks): Likewise.
26458         * init-regs.c (pass_initialize_regs): Likewise.
26459         * integrate.c (pass_initial_value_sets): Likewise.
26460         * ira.c (pass_ira): Likewise.
26461         * jump.c (pass_cleanup_barriers): Likewise.
26462         * omp-low.c (pass_expand_omp): Likewise.
26463         (pass_lower_omp): Likewise.
26464         * matrix-reorg.c (pass_ipa_matrix_reorg): Likewise.
26465         * recog.c (pass_split_all_insns): Likewise.
26466         (pass_split_after_reload): Likewise.
26467         (pass_split_before_regstack): Likewise.
26468         (pass_split_before_sched2): Likewise.
26469         (pass_split_for_shorten_branches): Likewise.
26470         * reginfo.c (pass_reginfo_init): Likewise.
26471         (pass_subregs_of_mode_init): Likewise.
26472         (pass_subregs_of_mode_finish): Likewise.
26473         * passes.c (pass_postreload): Likewise.
26474         * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
26475         * tree-cfg.c (pass_remove_useless_stmts): Likewise.
26476         (pass_warn_function_return): Likewise.
26477         (pass_warn_function_noreturn): Likewise.
26478         * tree-complex.c (pass_lower_complex): Likewise.
26479         (pass_lower_complex_O0): Likewise.
26480         * tree-if-conv.c (pass_if_conversion): Likewise.
26481         * tree-into-ssa.c (pass_build_ssa): Likewise.
26482         * tree-mudflap.c (pass_mudflap_1): Likewise.
26483         (pass_mudflap_2): Likewise.
26484         * tree-nomudflap.c (pass_mudflap_1): Likewise.
26485         (pass_mudflap_2): Likewise.
26486         * tree-nrv.c (pass_return_slot): Likewise.
26487         * tree-object-size.c (pass_object_sizes): Likewise.
26488         * tree-optimize.c (pass_all_optimizations): Likewise.
26489         (pass_early_local_passes): Likewise.
26490         (pass_all_early_optimizations): Likewise.
26491         (pass_cleanup_cfg): Likewise.
26492         (pass_cleanup_cfg_post_optimizing): Likewise.
26493         (pass_free_datastructures): Likewise.
26494         (pass_free_cfg_annotations): Likewise.
26495         (pass_fixup_cfg): Likewise.
26496         (pass_init_datastructures): Likewise.
26497         * tree-ssa.c (pass_early_warn_uninitialized): Likewise.
26498         (pass_late_warn_uninitialized): Likewise.
26499         (pass_update_address_taken): Likewise.
26500         * tree-ssa-ccp.c (pass_fold_builtins): Likewise.
26501         * tree-ssa-math-opts.c (pass_cse_reciprocals): Likewise.
26502         (pass_cse_sincos): Likewise.
26503         (pass_convert_to_rsqrt): Likewise.
26504         * tree-ssa-structalias.c (pass_build_alias): Likewise.
26505         * tree-stdarg.c (pass_stdarg): Likewise.
26506         * tree-tailcall.c (pass_tail_recursion): Likewise.
26507         (pass_tail_calls): Likewise.
26508         * tree-vect-generic.c (pass_lower_vector): Likewise.
26509         (pass_lower_vector_ssa): Likewise.
26510         * tree-vectorizer.c (pass_ipa_increase_alignment): Likewise.
26511
26512 2009-04-16  Joseph Myers  <joseph@codesourcery.com>
26513
26514         * config/mips/mips.c (mips_rtx_cost_data): Use SOFT_FP_COSTS in
26515         XLR entry.
26516         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC, MIPS_ARCH_FLOAT_SPEC):
26517         Handle -march=xlr.
26518         * config/mips/xlr.md (ir_xlr_alu): Also accept insn types move,
26519         logical and signext.
26520
26521 2009-04-16  Kaz Kojima  <kkojima@gcc.gnu.org>
26522
26523         PR target/39767
26524         * config/sh/predicates.md (arith_operand): Check if the operand
26525         of TRUNCATE is a REG.
26526
26527 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26528
26529         * cfgrtl.c (delete_insn_chain_and_edges): Remove.
26530         * rtl.h: Remove the prototype for delete_insn_chain_and_edges.
26531
26532 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26533
26534         * tree-iterator.c (tsi_split_statement_list_after,
26535         tsi_split_statement_list_before): Remove.
26536         * tree-iterator.h: Remove the prototypes for
26537         tsi_split_statement_list_after and tsi_split_statement_list_before.
26538
26539 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26540
26541         * tree-ssa-propagate.c (stmt_makes_single_load): Remove.
26542         * tree-ssa-propagate.h: Remove the prototype for
26543         stmt_makes_single_load.
26544
26545 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26546
26547         * emit-rtl.c (set_mem_attrs_from_reg): Remove.
26548         * rtl.h: Remove the prototype for set_mem_attrs_from_reg.
26549
26550 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26551
26552         * tree-iterator.c (EXPR_LAST_BODY): Remove.
26553
26554 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26555
26556         * except.c (eh_region_outer_p): Remove.
26557         * except.h: Remove the prototype for eh_region_outer_p.
26558
26559 2009-04-16  Kazu Hirata  <kazu@codesourcery.com>
26560
26561         * function.c (current_function_assembler_name): Remove.
26562         * function.h: Remove the prototype for
26563         current_function_assembler_name.
26564
26565 2009-04-16  Ian Lance Taylor  <iant@google.com>
26566
26567         * rtlanal.c (alloc_reg_note): New function, broken out of add_reg_note.
26568         (add_reg_note): Call alloc_reg_note.
26569         * rtl.h (alloc_reg_note): Declare.
26570         * combine.c (try_combine): Use alloc_reg_note.
26571         (recog_for_combine, move_deaths): Likewise.
26572         (distribute_notes): Use alloc_reg_note and add_reg_note.
26573         * haifa-sched.c (sched_create_recovery_edges): Use add_reg_note.
26574         * combine-stack-adj.c (adjust_frame_related_expr): Likewise.
26575         * reload1.c (eliminate_regs_1): Use alloc_reg_note.
26576
26577 2009-04-16  Vladimir Makarov  <vmakarov@redhat.com>
26578
26579         PR rtl-optimization/39762
26580         * ira-int.h (ira_register_move_cost, ira_may_move_in_cost,
26581         ira_may_move_out_cost): Add comments about way of their usage.
26582         (ira_get_register_move_cost, ira_get_may_move_cost): New functions.
26583
26584         * ira-conflicts.c (process_regs_for_copy): Use function
26585         ira_get_register_move_cost instead of global
26586         ira_register_move_cost.
26587
26588         * ira-color.c (update_copy_costs, calculate_allocno_spill_cost,
26589         color_pass, move_spill_restore, update_curr_costs): Ditto.
26590
26591         * ira-lives.c (process_single_reg_class_operands): Ditto.
26592
26593         * ira-emit.c (emit_move_list): Ditto.
26594
26595         * ira-costs.c (copy_cost): Don't call ira_init_register_move_cost.
26596         (record_reg_classes): Ditto.  Use functions
26597         ira_get_register_move_cost and ira_get_may_move_cost instead of
26598         global vars ira_register_move_cost, ira_may_move_out_cost and
26599         ira_may_move_in_cost.
26600         (record_address_regs): Don't call ira_init_register_move_cost.
26601         Use function ira_get_may_move_cost instead of global
26602         ira_may_move_in_cost.
26603         (process_bb_node_for_hard_reg_moves): Use function
26604         ira_get_register_move_cost instead of global ira_register_move_cost.
26605         (ira_costs): Don't call ira_init_register_move_cost.
26606
26607 2009-04-16  Richard Guenther  <rguenther@suse.de>
26608
26609         * tree-cfg.c (verify_gimple_assign_binary):
26610         Allow POINTER_PLUS_EXPR-like PLUS_EXPR for vectors.
26611         * ipa-struct-reorg.c (gen_size): Fold the built expressions.
26612         (create_general_new_stmt): Note that this function is broken.
26613
26614 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26615
26616         * common.opt (fhelp): Add Var(help_flag).
26617         * gcc-plugin.h (plugin_info): Add help.
26618         * plugin.c (plugin_name_args): Add help.
26619         (register_plugin_info): Set plugin->help.
26620         (print_help_one_plugin): New.
26621         (print_plugins_help): New.
26622         * plugin.h (print_plugins_help): New.
26623         * toplev.c (toplev_main): Call print_plugins_help if needed.
26624
26625 2009-04-16  Richard Guenther  <rguenther@suse.de>
26626
26627         * gimple.c (gimple_copy): Do not clear addresses_taken bitmap.
26628         (gimple_ior_addresses_taken_1): New function.
26629         (gimple_ior_addresses_taken): Likewise.
26630         * gimple.h (struct gimple_statement_with_ops_base): Remove
26631         addresses_taken member.
26632         (gimple_ior_addresses_taken): Declare.
26633         (gimple_addresses_taken, gimple_addresses_taken_ptr,
26634         gimple_set_addresses_taken): Remove.
26635         * ipa-reference.c (mark_address): New function.
26636         (scan_stmt_for_static_refs): Use it for marking addresses taken.
26637         * tree-ssa-operands.c (add_to_addressable_set): Rename to ...
26638         (mark_address_taken): ... this.  Just set TREE_ADDRESSABLE.
26639         (gimple_add_to_addresses_taken): Remove.
26640         (get_tmr_operands): Call mark_address_taken.
26641         (get_asm_expr_operands): Likewise.
26642         (get_expr_operands): Likewise.
26643         (build_ssa_operands): Do not clear the addresses_taken bitmap.
26644         (free_stmt_operands): Do not free it.
26645         * tree-ssa.c (delete_tree_ssa): Likewise.
26646         (execute_update_addresses_taken): Use gimple_ior_addresses_taken.
26647
26648 2009-04-16  Richard Guenther  <rguenther@suse.de>
26649
26650         * gimple.h (walk_stmt_load_store_addr_ops): Declare.
26651         (walk_stmt_load_store_ops): Likewise.
26652         * gimple.c (get_base_loadstore): New function.
26653         (walk_stmt_load_store_addr_ops): Likewise.
26654         (walk_stmt_load_store_ops): Likewise.
26655         * ipa-pure-const.c (check_op): Simplify.
26656         (check_load, check_store): New functions.
26657         (check_stmt): Use walk_stmt_load_store_ops.
26658         * ipa-reference.c (mark_load): Adjust signature.
26659         (mark_store): Likewise.
26660         (scan_stmt_for_static_refs): Use walk_stmt_load_store_addr_ops.
26661
26662 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26663
26664         * gcc-plugin.h (plugin_event): Add PLUGIN_INFO.
26665         (plugin_info): New.
26666         * opts.c (common_handle_option): Don't call print_version.
26667         * plugin.c (plugin_name_args): Add version.
26668         (register_plugin_info): New.
26669         (register_callback): Handle PLUGIN_INFO.
26670         (try_init_one_plugin): New.
26671         (init_one_plugin): Use try_init_one_plugin. Only free plugin_name_args
26672         if failed to init.
26673         (finalize_one_plugin): New.
26674         (finalize_plugins): New.
26675         (print_one_plugin): New.
26676         (print_plugins_versions): New.
26677         * plugin.h (print_plugins_versions): New.
26678         (finalize_plugins): New.
26679         * toplev.c (compile_file): Don't call initialize_plugins.
26680         (print_version): Call print_plugins_versions.
26681         (toplev_main): Call initialize_plugins. Print version if needed.
26682         Call finalize_plugins.
26683
26684 2009-04-16  Rafael Avila de Espindola  <espindola@google.com>
26685
26686         * common.opt (fversion): New.
26687         * gcc.c (print_version): New.
26688         (process_command): Don't print the version. Just set print_version.
26689         (main): Print version. Call subprocesses if print_version and
26690         verbose_flag are set.
26691         * opts.c (common_handle_option): Handle OPT_fversion.
26692
26693 2009-04-16  Richard Guenther  <rguenther@suse.de>
26694             Ira Rosen  <irar@il.ibm.com>
26695
26696         PR tree-optimization/39698
26697         * tree-vect-loop.c (get_initial_def_for_reduction): Use the
26698         type of the reduction variable.  Only generate the def if
26699         it is needed.
26700
26701         * omp-low.c (expand_omp_for_generic): When converting to a pointer
26702         make sure to first convert to an integer of the same precision.
26703         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Retain
26704         the type of the evolution correctly in computing the new
26705         induction variable base.
26706
26707 2009-04-16  Richard Guenther  <rguenther@suse.de>
26708
26709         PR middle-end/39625
26710         * tree-cfg.c (make_blocks): Split statements with to-be
26711         abnormal SSA names on the lhs.
26712
26713 2009-04-16  Paolo Bonzini  <bonzini@gnu.org>
26714
26715         * c-common.c (vector_targets_convertible_p, vector_types_convertible_p):
26716         Use TYPE_VECTOR_OPAQUE instead of targetm.vector_opaque_p.
26717         * c-typeck.c (really_start_incremental_init): Likewise.
26718         * target-def.h (TARGET_VECTOR_OPAQUE_P): Remove.
26719         (TARGET_INITIALIZER): Remove it.
26720         * target.h (struct target): Remove vector_opaque_p.
26721         * tree.c (build_opaque_vector_type): New.
26722         * tree.h (TYPE_VECTOR_OPAQUE): New.
26723         (build_opaque_vector_type): Declare.
26724         * doc/tm.texi (TARGET_VECTOR_OPAQUE_P): Remove.
26725         * config/rs6000/rs6000.c (build_opaque_vector_type,
26726         rs6000_is_vector_type, TARGET_VECTOR_OPAQUE_P): Remove.
26727         (rs6000_init_builtins): Use build_opaque_vector_type for
26728         opaque_V4SI_type_node.
26729
26730 2009-04-15  Catherine Moore  <clm@codesourcery.com>
26731
26732         * debug.h (set_name):  Declare.
26733         * dwarf2out.c (dwarf2out_set_name): Declare.
26734         (dwarf2_debug_hooks): Add set_name.
26735         (find_AT_string): New.
26736         (add_AT_string): Call find_AT_string.
26737         (dwarf2out_set_name): New.
26738         * cp/decl.c (grokdeclarator): Call set_name.
26739         * vmsdbgout.c (vmsdbg_debug_hooks): Add set_name_debug_nothing.
26740         * debug.c (do_nothing_debug_hooks):  Likewise.
26741         * dbxout.c (dbx_debug_hooks): Likewise.
26742         * sdbout.c (sdb_debug_hooks): Likewise.
26743
26744 2009-04-15  Michael Eager  <eager@eagercon.com>
26745
26746         * config/rs6000/rs6000.c (rs6000_function_value): Set function return
26747         reg for single-precision FPU.
26748         * config/rs6000/rs6000.md (movsi_internal1): Only for
26749         !TARGET_SINGLE_FPU.
26750         (movsi_internal1_single): New. Add pattern to move SI values to/from
26751         single-precision FP regs.
26752
26753 2009-04-15  Richard Guenther  <rguenther@suse.de>
26754
26755         * omp-low.c (lower_rec_input_clauses): Build correct address
26756         expressions.
26757         (expand_omp_for_generic): Fix multiplication type.
26758         * tree-loop-distribution.c (build_size_arg): Build a size_t argument.
26759         (generate_memset_zero): Fix types.
26760         * tree-profile.c (prepare_instrumented_value): Correctly
26761         widen a pointer.
26762
26763 2009-04-15  Ian Lance Taylor  <iant@google.com>
26764
26765         * c.opt (Wenum-compare): Enable for C and Objc.  Initialize to -1.
26766         * c-opts.c (c_common_handle_option): For C, set warn_enum_compare
26767         for -Wall and for -Wc++-compat.
26768         (c_common_post_options): For C++, set warn_enum_compare if not
26769         already set.
26770         * c-tree.h (struct c_expr): Add field original_type.
26771         (build_external_ref): Update declaration.
26772         * c-parser.c (c_parser_braced_init): Set original_type.
26773         (c_parser_initelt): Likewise.
26774         (c_parser_expr_no_commas): Likewise.
26775         (c_parser_conditional_expression): Likewise.
26776         (c_parser_cast_expression): Likewise.
26777         (c_parser_unary_expression): Likewise.  Pull setting of
26778         original_code to top of function.
26779         (c_parser_sizeof_expression): Set original_type.
26780         (c_parser_alignof_expression): Likewise.
26781         (c_parser_postfix_expression): Likewise.  Pull setting of
26782         original_code to top of function.
26783         (c_parser_postfix_expression_after_paren_type): Set original_type.
26784         (c_parser_postfix_expression_after_primary): Likewise.
26785         (c_parser_expression): Likewise.
26786         * c-typeck.c (build_external_ref): Add type parameter.  Change all
26787         callers.
26788         (c_expr_sizeof_expr): Set original_type field.
26789         (parser_build_unary_op): Likewise.
26790         (parser_build_binary_op): Likewise.  Optionally warn about
26791         comparisons of enums of different types.
26792         (digest_init): Set original_type field.
26793         (really_start_incremental_init): Likewise.
26794         (push_init_level, pop_init_level): Likewise.
26795         * doc/invoke.texi (Warning Options): -Wenum-compare now
26796         supported in C.
26797
26798 2009-04-15  Richard Guenther  <rguenther@suse.de>
26799
26800         * tree-ssa-pre.c (eliminate): When replacing a PHI node carry
26801         out a necessary conversion.
26802         * tree-ssa-sccvn.c (run_scc_vn): Also assign value-ids to
26803         names we didn't value number.
26804         * tree-mudflap.c (mf_build_check_statement_for): Use correct types.
26805
26806 2009-04-15  Richard Guenther  <rguenther@suse.de>
26807
26808         PR tree-optimization/39764
26809         * tree-ssa-ccp.c (get_value): Canonicalize value with
26810         canonicalize_float_value.
26811
26812 2009-04-15  Jan Hubicka  <jh@suse.cz>
26813
26814         * builtins.def (va_start, va_end, va_copy): Fix my previous commit.
26815         Wrong version of patch.
26816
26817 2009-04-15  Jan Hubicka  <jh@suse.cz>
26818
26819         * builtins.def (va_start, va_end, va_copy): Mark nothrow.
26820
26821 2009-04-15  Nathan Sidwell  <nathan@codesourcery.com>
26822
26823         * config/rs6000/rs6000.c (rs6000_init_builtins): Set TYPE_NAME of
26824         our distinct integral and vector types.
26825
26826 2009-04-15  Rafael Avila de Espindola  <espindola@google.com>
26827
26828         * class.c (build_vtbl_ref_1): Remove call to assemble_external.
26829         * init.c (build_vtbl_address): Remove call to assemble_external.
26830
26831 2009-04-14  Daniel Jacobowitz  <dan@codesourcery.com>
26832
26833         * config/rs6000/rs6000.c (rs6000_dwarf_register_span): Fix debug
26834         output for other floating point modes.
26835
26836 2009-04-14  Diego Novillo  <dnovillo@google.com>
26837
26838         * diagnostic.c (diagnostic_report_diagnostic): Do not
26839         warn about loaded plugins for DK_ERROR and DK_WARNING.
26840         * c-decl.c (declspecs_add_type): Move call to
26841         invoke_plugin_callbacks ...
26842         * c-parser.c (c_parser_declspecs): ... here.
26843         * plugin.c (dump_active_plugins): Tidy output.
26844
26845 2009-04-14  Diego Novillo  <dnovillo@google.com>
26846             Le-Chun Wu  <lcwu@google.com>
26847
26848         * configure.ac: Add --enable-plugin support.
26849         Define ENABLE_PLUGIN and PLUGINLIBS when specified.
26850         * Makefile.in (PLUGIN_H): Define.
26851         Export ENABLE_PLUGIN and GMPINC to site.exp.
26852         Add PLUGINLIBS to link command.
26853         Add/modify dependencies for plugin.o and files including plugin.h.
26854         (plugin.o): New.
26855         * config.in: Regenerate.
26856
26857         * opts.c (common_handle_option): Handle OPT_fplugin_ and
26858         OPT_fplugin_arg_.
26859
26860 2009-04-14  Le-Chun Wu  <lcwu@google.com>
26861
26862         * tree-pass.h (register_one_dump_file): Add a prototype for
26863         register_one_dump_file.
26864         * toplev.c (compile_file): Call initialize_plugins.
26865         (do_compile): Call invoke_plugin_callbacks.
26866         (toplev_main): Call invoke_plugin_callbacks.
26867         * common.opt: Add -fplugin= and -fplugin-arg-.
26868         * gcc-plugin.h: New public header file for plugins to include.
26869         * plugin.c: New source file.
26870         * plugin.h: New internal header file.
26871         * passes.c (register_one_dump_file): Make it external.
26872
26873         * c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
26874
26875 2009-04-14  Diego Novillo  <dnovillo@google.com>
26876
26877         * doc/plugins.texi: New.
26878         * doc/gccint.texi: Add reference to Plugins chapter.
26879         * doc/invoke.texi: Document -fplugin and -fplugin-arg
26880         * diagnostic.c (diagnostic_report_diagnostic): Warn about
26881         loaded plugins, if any.
26882         * timevar.def (TV_PLUGIN_INIT): Define.
26883         (TV_PLUGIN_RUN): Define.
26884         * plugin.c: Include timevar.h
26885         (plugins_active_p): New.
26886         (dump_active_plugins): New.
26887         (debug_active_plugins): New.
26888
26889 2009-04-14  Joseph Myers  <joseph@codesourcery.com>
26890
26891         * config/sol2.h (LINK_ARCH32_SPEC_BASE): Use %R with absolute
26892         library paths.
26893         * config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Likewise.
26894
26895 2009-04-14  Kazu Hirata  <kazu@codesourcery.com>
26896
26897         * config/arm/arm.c (arm_rtx_costs_1): Treat a minus with a shift
26898         the same as a minus without a shift.
26899
26900 2009-04-14  Nick Clifton  <nickc@redhat.com>
26901
26902         * config/stormy16/stormy16.md (ineqbranch_1): Do not assume that
26903         comparisons with small integers will always produce a short
26904         branch.
26905
26906 2009-04-14  Rafael Avila de Espindola  <espindola@google.com>
26907
26908         Merge:
26909         2008-12-19  Diego Novillo  <dnovillo@google.com>
26910
26911         * cgraph.c (dump_cgraph_node): Show memory address of NODE.
26912
26913 2009-04-14  Richard Guenther  <rguenther@suse.de>
26914
26915         * tree-cfg.c (verify_gimple_assign_unary): Adjust vector code
26916         verification.
26917         (verify_gimple_assign_binary): Likewise.  Handle shifts and
26918         rotates correctly.
26919         (verify_gimple_phi): Print the mismatched argument position.
26920         * tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer):
26921         Fix types.
26922         (vect_update_init_of_dr): Likewise.
26923         * matrix-reorg.c (transform_access_sites): Do what the
26924         comment suggests.
26925         * omp-low.c (expand_omp_atomic_pipeline): Use the correct types.
26926
26927 2009-04-13  Michael Eager  <eager@eagercon.com>
26928
26929         * config/rs6000/rs6000-c.c: generate defines if rs6000_xilinx_fpu:
26930         _XFPU, _XFPU_SP_LITE, _XFPU_SP_FULL, _XFPU_DP_LITE, _XFPU_DP_FULL
26931         * config/rs6000/xilinx.h: New.  Spec for powerpc-xilinx-eabi
26932         * config.gcc (powerpc-xilinx-eabi): add xilinx.h to tm_file,
26933         remove duplicate config
26934
26935 2009-04-13  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
26936
26937         * ipa-inline.c (cgraph_decide_inlining_of_small_function): Dump
26938         file_name:line_number type locator of the call site.
26939
26940 2009-04-13  Vladimir Makarov  <vmakarov@redhat.com>
26941
26942         * genautomata.c: Put blank after comma.
26943         (automaton_decls): New.
26944         (struct unit_usage): Add comments to member next.
26945         (store_alt_unit_usage): Keep the list ordered.
26946         (unit_present_on_list_p, equal_alternatives_p): New.
26947         (check_regexp_units_distribution): Check units distribution
26948         correctness correctly.
26949         (main): Don't write automata if error is found.  Return correct
26950         exit code.
26951
26952         * config/m68k/cf.md (cfv4_ds): Remove.
26953         (cfv4_pOEP1, cfv4_sOEP1, cfv4_pOEP2,cfv4_sOEP2, cfv4_pOEP3,
26954         cfv4_sOEP3): Assign to cfv4_oep instead of cfv4_ds.
26955
26956         * config/rs6000/power4.md (lsuq_power4, iq_power4, fpq_power4,
26957         power4-load-ext, power4-store, power4-store-update,
26958         power4-fpstore, power4-fpstore-update, power4-two, power4-three,
26959         power4-insert, power4-compare, power4-lmul-cmp, power4-imul-cmp,
26960         power4-lmul, , power4-imul, power4-imul3, power4-sdiv,
26961         power4-sqrt, power4-isync): Modify reservation to make correct
26962         unit distribution to automata.
26963
26964         * config/rs6000/power5.md (iq_power5, fpq_power5, power5-store,
26965         power5-store-update, power5-two, power5-three, power5-lmul,
26966         power5-imul, power5-imul3, power5-sdiv, power5-sqrt): Ditto.
26967
26968 2009-04-13  Adam Nemet  <anemet@caviumnetworks.com>
26969
26970         * except.c (pass_set_nothrow_function_flags): Set name and add
26971         TODO_dump_func.
26972         (set_nothrow_function_flags): Mention in the dump file when
26973         changing a function to nothrow.
26974
26975 2009-04-13  Ozkan Sezer  <sezeroz@gmail.com>
26976
26977         PR/39066
26978         * gbl-ctors.h (DO_GLOBAL_CTORS_BODY): Use __SIZE_TYPE__
26979         instead of unsigned long.
26980
26981 2009-04-13  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26982
26983         * config/arm/arm.c (return_used_this_function): Remove.
26984         (arm_output_function_prologue): Remove use of
26985         return_used_this_function.
26986         (output_return_instruction): Replace use of
26987         return_used_this_function
26988         by cfun->machine->return_used_this_function.
26989         (arm_output_epilogue): Likewise.
26990         (arm_output_function_epilogue): Likewise.
26991         (thumb_unexpanded_epilogue): Likewise.
26992         * config/arm/arm.h (struct machine_function):
26993         New member return_used_this_function.
26994
26995 2009-04-12  Mark Mitchell  <mark@codesourcery.com>
26996
26997         * doc/install.texi: Correct description of default directory for
26998         --with-gxx-include-dir.
26999
27000 2009-04-12  Eric Botcazou  <ebotcazou@adacore.com>
27001
27002         * fold-const.c (build_range_check): Properly deal with enumeral and
27003         boolean base types.
27004
27005 2009-04-12  Steven Bosscher  <steven@gcc.gnu.org>
27006
27007         * doc/invoke.texi (max_gcse_passes): Remove documentation.
27008         * params.def (PARAM_MAX_GCSE_PASSES): Remove.
27009         * params.h (MAX_GCSE_PASSES): Remove.
27010         * gcse.c (gcse_main): Run CPROP1, PRE or HOIST, and CPROP2
27011         in sequence.  Remove ability to run multiple passes.
27012         (bypass_jumps): Report run as third CPROP pass.
27013
27014 2009-04-12  Adam Nemet  <anemet@caviumnetworks.com>
27015
27016         PR middle-end/39651
27017         * except.c (can_throw_external): Look at each insn in a SEQUENCE
27018         when deciding whether the whole SEQUENCE can throw.
27019
27020 2009-04-12  Uros Bizjak  <ubizjak@gmail.com>
27021
27022         PR target/39740
27023         * config/alpha/predicates.md (local_symbolic_operand): Return 1 for
27024         offseted label references.
27025
27026 2009-04-11  Jan Hubicka  <jh@suse.cz>
27027
27028         * tree-ssa-pre.c (eliminate): Fix call of update_stmt.
27029
27030 2009-04-11  Richard Guenther  <rguenther@suse.de>
27031
27032         PR middle-end/39732
27033         * tree-inline.c (declare_return_variable): Mark DECL_BY_REFERENCE
27034         return variables as TREE_ADDRESSABLE.
27035
27036 2009-04-11  Richard Guenther  <rguenther@suse.de>
27037
27038         PR tree-optimization/39713
27039         * tree-ssa-sccvn.c (vn_get_expr_for): Make sure built
27040         reference trees have SSA_NAME operands.
27041
27042 2009-04-11  Richard Guenther  <rguenther@suse.de>
27043
27044         PR c/39712
27045         * c-gimplify.c (c_gimplify_expr): Adjust check for mismatched
27046         address expressions.
27047
27048 2009-04-11  Dave Korn  <dave.korn.cygwin@gmail.com>
27049
27050         * config/i386/cygwin-stdint.h (INT_LEAST32_TYPE):  Update to
27051         match changes in Cygwin 1.7
27052         (UINT_LEAST32_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE,
27053         UINT_FAST16_TYPE, UINT_FAST32_TYPE):  Likewise.
27054
27055 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27056
27057         PR tree-optimization/39701
27058         * doc/invoke.texi (Optimization Options): Document change in
27059         meaning and initialization of -fdelete-null-pointer-checks.
27060
27061 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27062
27063         PR middle-end/39701
27064         * common.opt (-fdelete-null-pointer-checks): Initialize to 1.
27065
27066         * opts.c (decode_options): Don't set flag_delete_null_pointer_checks
27067         here.
27068
27069         * doc/invoke.texi: Update -fdelete-null-pointer-checks.
27070
27071 2009-04-10  Chao-ying Fu  <fu@mips.com>
27072
27073         * doc/tm.texi (Instruction Output): Document
27074         TARGET_ASM_FINAL_POSTSCAN_INSN.
27075         * target.h (final_postscan_insn): New field in asm_out.
27076         * target-def.h (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27077         (TARGET_ASM_OUT): Add TARGET_ASM_FINAL_POSTSCAN_INSN.
27078         * final.c (final_scan_insn): Call
27079         targetm.asm_out.final_postscan_insn after outputting
27080         an asm macro and a normal instruction.
27081
27082         * config/mips/mips.h (FINAL_PRESCAN_INSN): New define.
27083         * config/mips/mips-protos.h (mips_final_prescan_insn): Declare.
27084         * config/mips/mips.c (mips_at_reg_p): New for_each_rtx callback.
27085         (mips_final_prescan_insn, mips_final_postscan_insn): New functions.
27086         (TARGET_ASM_FINAL_POSTSCAN_INSN): New define.
27087
27088 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
27089
27090         PR middle-end/39701
27091         * fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
27092         variables as non-NULL even with -fdelete-null-pointer-checks.
27093
27094 2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>
27095
27096         * config/rs6000/darwin-vecsave.asm: Remove extra "*/".
27097
27098 2009-04-09  H.J. Lu  <hongjiu.lu@intel.com>
27099
27100         PR target/39678
27101         * config/i386/i386.c (classify_argument): Handle SCmode with
27102         (bit_offset % 64) != 0.
27103
27104 2009-04-09  Sandra Loosemore  <sandra@codesourcery.com>
27105
27106         * doc/invoke.texi (Optimize Options): Add cross-reference to
27107         -Q --help=optimizers examples.
27108
27109 2009-04-10  Ben Elliston  <bje@au.ibm.com>
27110
27111         PR target/36800
27112         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Do not set
27113         regalign for the reg == fpr and TDmode case.
27114
27115 2009-04-09  David Ayers  <ayers@fsfe.org>
27116
27117         PR objc/29200
27118         * objc/objc-act.c (warn_with_method): Remove helper function.
27119         (check_duplicates): Call warning and inform directly.
27120         (really_start_method): Likewise.
27121
27122 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27123
27124         * expmed.c (expand_divmod): Always use a comparison for a division
27125         by a large unsigned integer.
27126
27127         * fold-const.c (tree_single_nonzero_warnv_p): Always treat decls
27128         for things others than variables or functions as nonzero.
27129
27130 2009-04-09  Nick Clifton  <nickc@redhat.com>
27131
27132         * unwind-compat.c: Change copyright header to refer to version
27133         3 of the GNU General Public License with version 3.1 of the
27134         GCC Runtime Library Exception and to point readers at the
27135         COPYING3 and COPYING3.RUNTIME files and the FSF's license web page.
27136         * config/alpha/crtfastmath.c: Likewise.
27137         * config/alpha/linux-unwind.h: Likewise.
27138         * config/alpha/qrnnd.asm: Likewise.
27139         * config/alpha/vms-crt0-64.c: Likewise.
27140         * config/alpha/vms-crt0.c: Likewise.
27141         * config/alpha/vms-dwarf2.asm: Likewise.
27142         * config/alpha/vms-dwarf2eh.asm: Likewise.
27143         * config/alpha/vms-psxcrt0-64.c: Likewise.
27144         * config/alpha/vms-psxcrt0.c: Likewise.
27145         * config/alpha/vms_tramp.asm: Likewise.
27146         * config/arc/initfini.c: Likewise.
27147         * config/arc/lib1funcs.asm: Likewise.
27148         * config/arm/bpabi-v6m.S: Likewise.
27149         * config/arm/bpabi.S: Likewise.
27150         * config/arm/bpabi.c: Likewise.
27151         * config/arm/crti.asm: Likewise.
27152         * config/arm/crtn.asm: Likewise.
27153         * config/arm/ieee754-df.S: Likewise.
27154         * config/arm/ieee754-sf.S: Likewise.
27155         * config/arm/lib1funcs.asm: Likewise.
27156         * config/arm/libunwind.S: Likewise.
27157         * config/arm/linux-atomic.c: Likewise.
27158         * config/arm/mmintrin.h: Likewise.
27159         * config/arm/pr-support.c: Likewise.
27160         * config/arm/unaligned-funcs.c: Likewise.
27161         * config/arm/unwind-arm.c: Likewise.
27162         * config/arm/unwind-arm.h: Likewise.
27163         * config/avr/libgcc.S: Likewise.
27164         * config/bfin/crti.s: Likewise.
27165         * config/bfin/crtlibid.s: Likewise.
27166         * config/bfin/crtn.s: Likewise.
27167         * config/bfin/lib1funcs.asm: Likewise.
27168         * config/bfin/linux-unwind.h: Likewise.
27169         * config/cris/arit.c: Likewise.
27170         * config/cris/cris_abi_symbol.c: Likewise.
27171         * config/darwin-64.c: Likewise.
27172         * config/darwin-crt2.c: Likewise.
27173         * config/darwin-crt3.c: Likewise.
27174         * config/darwin.h: Likewise.
27175         * config/dbxelf.h: Likewise.
27176         * config/dfp-bit.c: Likewise.
27177         * config/dfp-bit.h: Likewise.
27178         * config/elfos.h: Likewise.
27179         * config/fixed-bit.c: Likewise.
27180         * config/fixed-bit.h: Likewise.
27181         * config/fp-bit.c: Likewise.
27182         * config/fp-bit.h: Likewise.
27183         * config/fr30/crti.asm: Likewise.
27184         * config/fr30/crtn.asm: Likewise.
27185         * config/fr30/lib1funcs.asm: Likewise.
27186         * config/freebsd-spec.h: Likewise.
27187         * config/frv/cmovd.c: Likewise.
27188         * config/frv/cmovh.c: Likewise.
27189         * config/frv/cmovw.c: Likewise.
27190         * config/frv/frvbegin.c: Likewise.
27191         * config/frv/frvend.c: Likewise.
27192         * config/frv/lib1funcs.asm: Likewise.
27193         * config/glibc-stdint.h: Likewise.
27194         * config/h8300/clzhi2.c: Likewise.
27195         * config/h8300/crti.asm: Likewise.
27196         * config/h8300/crtn.asm: Likewise.
27197         * config/h8300/ctzhi2.c: Likewise.
27198         * config/h8300/fixunssfsi.c: Likewise.
27199         * config/h8300/lib1funcs.asm: Likewise.
27200         * config/h8300/parityhi2.c: Likewise.
27201         * config/h8300/popcounthi2.c: Likewise.
27202         * config/i386/ammintrin.h: Likewise.
27203         * config/i386/att.h: Likewise.
27204         * config/i386/avxintrin.h: Likewise.
27205         * config/i386/biarch64.h: Likewise.
27206         * config/i386/bmmintrin.h: Likewise.
27207         * config/i386/cpuid.h: Likewise.
27208         * config/i386/cross-stdarg.h: Likewise.
27209         * config/i386/crtfastmath.c: Likewise.
27210         * config/i386/crtprec.c: Likewise.
27211         * config/i386/cygming-crtbegin.c: Likewise.
27212         * config/i386/cygming-crtend.c: Likewise.
27213         * config/i386/cygwin.asm: Likewise.
27214         * config/i386/emmintrin.h: Likewise.
27215         * config/i386/gmm_malloc.h: Likewise.
27216         * config/i386/gthr-win32.c: Likewise.
27217         * config/i386/i386.h: Likewise.
27218         * config/i386/immintrin.h: Likewise.
27219         * config/i386/linux-unwind.h: Likewise.
27220         * config/i386/linux64.h: Likewise.
27221         * config/i386/mm3dnow.h: Likewise.
27222         * config/i386/mmintrin-common.h: Likewise.
27223         * config/i386/mmintrin.h: Likewise.
27224         * config/i386/nmmintrin.h: Likewise.
27225         * config/i386/pmm_malloc.h: Likewise.
27226         * config/i386/pmmintrin.h: Likewise.
27227         * config/i386/smmintrin.h: Likewise.
27228         * config/i386/sol2-c1.asm: Likewise.
27229         * config/i386/sol2-ci.asm: Likewise.
27230         * config/i386/sol2-cn.asm: Likewise.
27231         * config/i386/sol2-gc1.asm: Likewise.
27232         * config/i386/tmmintrin.h: Likewise.
27233         * config/i386/unix.h: Likewise.
27234         * config/i386/w32-unwind.h: Likewise.
27235         * config/i386/wmmintrin.h: Likewise.
27236         * config/i386/x86-64.h: Likewise.
27237         * config/i386/x86intrin.h: Likewise.
27238         * config/i386/xmmintrin.h: Likewise.
27239         * config/ia64/crtbegin.asm: Likewise.
27240         * config/ia64/crtend.asm: Likewise.
27241         * config/ia64/crtfastmath.c: Likewise.
27242         * config/ia64/crti.asm: Likewise.
27243         * config/ia64/crtn.asm: Likewise.
27244         * config/ia64/fde-glibc.c: Likewise.
27245         * config/ia64/lib1funcs.asm: Likewise.
27246         * config/ia64/linux-unwind.h: Likewise.
27247         * config/ia64/quadlib.c: Likewise.
27248         * config/ia64/unwind-ia64.c: Likewise.
27249         * config/linux.h: Likewise.
27250         * config/m32c/m32c-lib1.S: Likewise.
27251         * config/m32c/m32c-lib2-trapv.c: Likewise.
27252         * config/m32c/m32c-lib2.c: Likewise.
27253         * config/m32r/initfini.c: Likewise.
27254         * config/m68hc11/larith.asm: Likewise.
27255         * config/m68hc11/m68hc11-crt0.S: Likewise.
27256         * config/m68k/cf.md: Likewise.
27257         * config/m68k/crti.s: Likewise.
27258         * config/m68k/crtn.s: Likewise.
27259         * config/m68k/lb1sf68.asm: Likewise.
27260         * config/m68k/linux-unwind.h: Likewise.
27261         * config/mcore/crti.asm: Likewise.
27262         * config/mcore/crtn.asm: Likewise.
27263         * config/mcore/lib1.asm: Likewise.
27264         * config/mips/linux-unwind.h: Likewise.
27265         * config/mips/loongson.h: Likewise.
27266         * config/mips/mips16.S: Likewise.
27267         * config/mmix/crti.asm: Likewise.
27268         * config/mmix/crtn.asm: Likewise.
27269         * config/pa/fptr.c: Likewise.
27270         * config/pa/hpux-unwind.h: Likewise.
27271         * config/pa/lib2funcs.asm: Likewise.
27272         * config/pa/linux-atomic.c: Likewise.
27273         * config/pa/linux-unwind.h: Likewise.
27274         * config/pa/milli64.S: Likewise.
27275         * config/pa/quadlib.c: Likewise.
27276         * config/pa/stublib.c: Likewise.
27277         * config/picochip/libgccExtras/adddi3.asm: Likewise.
27278         * config/picochip/libgccExtras/ashlsi3.asm: Likewise.
27279         * config/picochip/libgccExtras/ashlsi3.c: Likewise.
27280         * config/picochip/libgccExtras/ashrsi3.asm: Likewise.
27281         * config/picochip/libgccExtras/ashrsi3.c: Likewise.
27282         * config/picochip/libgccExtras/cmpsi2.asm: Likewise.
27283         * config/picochip/libgccExtras/divmod15.asm: Likewise.
27284         * config/picochip/libgccExtras/divmodhi4.asm: Likewise.
27285         * config/picochip/libgccExtras/divmodsi4.asm: Likewise.
27286         * config/picochip/libgccExtras/longjmp.asm: Likewise.
27287         * config/picochip/libgccExtras/lshrsi3.asm: Likewise.
27288         * config/picochip/libgccExtras/lshrsi3.c: Likewise.
27289         * config/picochip/libgccExtras/parityhi2.asm: Likewise.
27290         * config/picochip/libgccExtras/popcounthi2.asm: Likewise.
27291         * config/picochip/libgccExtras/setjmp.asm: Likewise.
27292         * config/picochip/libgccExtras/subdi3.asm: Likewise.
27293         * config/picochip/libgccExtras/ucmpsi2.asm: Likewise.
27294         * config/picochip/libgccExtras/udivmodhi4.asm: Likewise.
27295         * config/picochip/libgccExtras/udivmodsi4.asm: Likewise.
27296         * config/rs6000/750cl.h: Likewise.
27297         * config/rs6000/altivec.h: Likewise.
27298         * config/rs6000/biarch64.h: Likewise.
27299         * config/rs6000/crtresfpr.asm: Likewise.
27300         * config/rs6000/crtresgpr.asm: Likewise.
27301         * config/rs6000/crtresxfpr.asm: Likewise.
27302         * config/rs6000/crtresxgpr.asm: Likewise.
27303         * config/rs6000/crtsavfpr.asm: Likewise.
27304         * config/rs6000/crtsavgpr.asm: Likewise.
27305         * config/rs6000/darwin-asm.h: Likewise.
27306         * config/rs6000/darwin-fallback.c: Likewise.
27307         * config/rs6000/darwin-fpsave.asm: Likewise.
27308         * config/rs6000/darwin-ldouble.c: Likewise.
27309         * config/rs6000/darwin-tramp.asm: Likewise.
27310         * config/rs6000/darwin-unwind.h: Likewise.
27311         * config/rs6000/darwin-vecsave.asm: Likewise.
27312         * config/rs6000/darwin-world.asm: Likewise.
27313         * config/rs6000/e500crtres32gpr.asm: Likewise.
27314         * config/rs6000/e500crtres64gpr.asm: Likewise.
27315         * config/rs6000/e500crtres64gprctr.asm: Likewise.
27316         * config/rs6000/e500crtrest32gpr.asm: Likewise.
27317         * config/rs6000/e500crtrest64gpr.asm: Likewise.
27318         * config/rs6000/e500crtresx32gpr.asm: Likewise.
27319         * config/rs6000/e500crtresx64gpr.asm: Likewise.
27320         * config/rs6000/e500crtsav32gpr.asm: Likewise.
27321         * config/rs6000/e500crtsav64gpr.asm: Likewise.
27322         * config/rs6000/e500crtsav64gprctr.asm: Likewise.
27323         * config/rs6000/e500crtsavg32gpr.asm: Likewise.
27324         * config/rs6000/e500crtsavg64gpr.asm: Likewise.
27325         * config/rs6000/e500crtsavg64gprctr.asm: Likewise.
27326         * config/rs6000/eabi-ci.asm: Likewise.
27327         * config/rs6000/eabi-cn.asm: Likewise.
27328         * config/rs6000/eabi.asm: Likewise.
27329         * config/rs6000/linux-unwind.h: Likewise.
27330         * config/rs6000/linux64.h: Likewise.
27331         * config/rs6000/paired.h: Likewise.
27332         * config/rs6000/paired.md: Likewise.
27333         * config/rs6000/ppc64-fp.c: Likewise.
27334         * config/rs6000/ppu_intrinsics.h: Likewise.
27335         * config/rs6000/rs6000.h: Likewise.
27336         * config/rs6000/si2vmx.h: Likewise.
27337         * config/rs6000/sol-ci.asm: Likewise.
27338         * config/rs6000/sol-cn.asm: Likewise.
27339         * config/rs6000/spe.h: Likewise.
27340         * config/rs6000/spu2vmx.h: Likewise.
27341         * config/rs6000/sysv4.h: Likewise.
27342         * config/rs6000/tramp.asm: Likewise.
27343         * config/rs6000/vec_types.h: Likewise.
27344         * config/s390/linux-unwind.h: Likewise.
27345         * config/s390/tpf-unwind.h: Likewise.
27346         * config/score/crti.asm: Likewise.
27347         * config/score/crtn.asm: Likewise.
27348         * config/sh/crt1.asm: Likewise.
27349         * config/sh/crti.asm: Likewise.
27350         * config/sh/crtn.asm: Likewise.
27351         * config/sh/divtab-sh4-300.c: Likewise.
27352         * config/sh/divtab-sh4.c: Likewise.
27353         * config/sh/divtab.c: Likewise.
27354         * config/sh/lib1funcs-4-300.asm: Likewise.
27355         * config/sh/lib1funcs-Os-4-200.asm: Likewise.
27356         * config/sh/lib1funcs.asm: Likewise.
27357         * config/sh/lib1funcs.h: Likewise.
27358         * config/sh/linux-atomic.asm: Likewise.
27359         * config/sh/linux-unwind.h: Likewise.
27360         * config/sh/shmedia.h: Likewise.
27361         * config/sh/sshmedia.h: Likewise.
27362         * config/sh/ushmedia.h: Likewise.
27363         * config/sparc/crtfastmath.c: Likewise.
27364         * config/sparc/linux-unwind.h: Likewise.
27365         * config/sparc/sol2-c1.asm: Likewise.
27366         * config/sparc/sol2-ci.asm: Likewise.
27367         * config/sparc/sol2-cn.asm: Likewise.
27368         * config/spu/divmodti4.c: Likewise.
27369         * config/spu/divv2df3.c: Likewise.
27370         * config/spu/float_disf.c: Likewise.
27371         * config/spu/float_unsdidf.c: Likewise.
27372         * config/spu/float_unsdisf.c: Likewise.
27373         * config/spu/float_unssidf.c: Likewise.
27374         * config/spu/mfc_multi_tag_release.c: Likewise.
27375         * config/spu/mfc_multi_tag_reserve.c: Likewise.
27376         * config/spu/mfc_tag_release.c: Likewise.
27377         * config/spu/mfc_tag_reserve.c: Likewise.
27378         * config/spu/mfc_tag_table.c: Likewise.
27379         * config/spu/multi3.c: Likewise.
27380         * config/spu/spu_internals.h: Likewise.
27381         * config/spu/spu_intrinsics.h: Likewise.
27382         * config/spu/spu_mfcio.h: Likewise.
27383         * config/spu/vec_types.h: Likewise.
27384         * config/spu/vmx2spu.h: Likewise.
27385         * config/stormy16/stormy16-lib2.c: Likewise.
27386         * config/svr4.h: Likewise.
27387         * config/sync.c: Likewise.
27388         * config/v850/lib1funcs.asm: Likewise.
27389         * config/vxlib-tls.c: Likewise.
27390         * config/vxlib.c: Likewise.
27391         * config/vxworks-dummy.h: Likewise.
27392         * config/xtensa/crti.asm: Likewise.
27393         * config/xtensa/crtn.asm: Likewise.
27394         * config/xtensa/ieee754-df.S: Likewise.
27395         * config/xtensa/ieee754-sf.S: Likewise.
27396         * config/xtensa/lib1funcs.asm: Likewise.
27397         * config/xtensa/lib2funcs.S: Likewise.
27398         * config/xtensa/linux-unwind.h: Likewise.
27399         * config/xtensa/unwind-dw2-xtensa.c: Likewise.
27400         * config/xtensa/unwind-dw2-xtensa.h: Likewise.
27401         * coretypes.h: Likewise.
27402         * crtstuff.c: Likewise.
27403         * defaults.h: Likewise.
27404         * dwarf2.h: Likewise.
27405         * emutls.c: Likewise.
27406         * gbl-ctors.h: Likewise.
27407         * gcov-io.h: Likewise.
27408         * ginclude/float.h: Likewise.
27409         * ginclude/iso646.h: Likewise.
27410         * ginclude/stdarg.h: Likewise.
27411         * ginclude/stdbool.h: Likewise.
27412         * ginclude/stddef.h: Likewise.
27413         * ginclude/stdfix.h: Likewise.
27414         * ginclude/stdint-gcc.h: Likewise.
27415         * ginclude/tgmath.h: Likewise.
27416         * gthr-aix.h: Likewise.
27417         * gthr-dce.h: Likewise.
27418         * gthr-gnat.c: Likewise.
27419         * gthr-gnat.h: Likewise.
27420         * gthr-lynx.h: Likewise.
27421         * gthr-mipssde.h: Likewise.
27422         * gthr-nks.h: Likewise.
27423         * gthr-posix.c: Likewise.
27424         * gthr-posix.h: Likewise.
27425         * gthr-posix95.h: Likewise.
27426         * gthr-rtems.h: Likewise.
27427         * gthr-single.h: Likewise.
27428         * gthr-solaris.h: Likewise.
27429         * gthr-tpf.h: Likewise.
27430         * gthr-vxworks.h: Likewise.
27431         * gthr-win32.h: Likewise.
27432         * gthr.h: Likewise.
27433         * libgcc2.c: Likewise.
27434         * libgcc2.h: Likewise.
27435         * libgcov.c: Likewise.
27436         * tsystem.h: Likewise.
27437         * typeclass.h: Likewise.
27438         * unwind-c.c: Likewise.
27439         * unwind-compat.h: Likewise.
27440         * unwind-dw2-fde-compat.c: Likewise.
27441         * unwind-dw2-fde-darwin.c: Likewise.
27442         * unwind-dw2-fde-glibc.c: Likewise.
27443         * unwind-dw2-fde.c: Likewise.
27444         * unwind-dw2-fde.h: Likewise.
27445         * unwind-dw2.c: Likewise.
27446         * unwind-dw2.h: Likewise.
27447         * unwind-generic.h: Likewise.
27448         * unwind-pe.h: Likewise.
27449         * unwind-sjlj.c: Likewise.
27450         * unwind.inc: Likewise.
27451         * config/arm/neon-gen.ml: Change generated copyright header to
27452         refer to version 3 of the GNU General Public License with
27453         version 3.1 of the GCC Runtime Library Exception and to point
27454         readers at the COPYING3 and COPYING3.RUNTIME files and the
27455         FSF's license web page.
27456         * config/arm/arm_neon.h: Regenerate.
27457
27458 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
27459
27460         * config/cris/cris.md: Change copyright header to refer to version
27461         3 of the GNU General Public License.
27462         * doc/install.texi2html: Change copyright header to refer to version
27463         3 of the GNU General Public License and to point readers at the
27464         COPYING3 file and the FSF's license web page.
27465         * config/vax/linux.h: Likewise.
27466
27467 2009-04-09  Paolo Bonzini  <bonzini@gnu.org>
27468
27469         * config/i386/i386.md (cmpcc): New.
27470         * config/i386/sync.md (sync_compare_and_swap*): Set FLAGS_REG.
27471         (sync_compare_and_swap_cc*): Delete.
27472
27473         * config/s390/s390.c (s390_compare_emitted): Remove.
27474         (s390_emit_compare): Handle MODE_CC s390_compare_op0 like
27475         s390_compare_emitted used to be handled.  Assert that modes match.
27476         (s390_emit_compare_and_swap): Use s390_emit_compare, do not
27477         refer to sync_compare_and_swap_ccsi.
27478         * config/s390/s390.h (s390_compare_emitted): Remove.
27479         * config/s390/s390.md (seq): Look for MODE_CC s390_compare_op0
27480         instead of s390_compare_emitted.
27481         (stack_protect_test, sync_compare_and_swap_cc): Set s390_compare_op0
27482         instead of s390_compare_emitted.
27483         * config/s390/s390.md (cmpcc): New.
27484         (sync_compare_and_swapqi, sync_compare_and_swaphi): Clobber
27485         CC_REGNUM, do not pretend it's set.
27486         (sync_compare_and_swap_cc*): Delete.
27487         * config/s390/predicates.md (cc_reg_operand): New.
27488
27489         * expr.c (sync_compare_and_swap_cc): Delete.
27490         * optabs.h (sync_compare_and_swap_cc): Delete.
27491         * optabs.c (prepare_cmp_insn): Ignore which specific CCmode
27492         is being used with can_compare_p.
27493         (emit_cmp_and_jump_insn_1): Likewise when looking in the optab.
27494         (find_cc_set): New.
27495         (expand_bool_compare_and_swap): Do not use sync_compare_and_swap_cc,
27496         look for a MODE_CC set instead.  Use emit_store_flag.
27497         (expand_compare_and_swap_loop): Likewise, with some additional
27498         complication to avoid a force_reg when useless.  Use
27499         emit_cmp_and_jump_insns.
27500         * genopinit.c (optabs): Delete sync_compare_and_swap_cc.
27501         * doc/md.texi (sync_compare_and_swap_cc): Merge with
27502         sync_compare_and_swap documentation.
27503
27504 2009-04-09  Jan Hubicka  <jh@suse.cz>
27505
27506         * except.c (find_prev_try): Break out from ....
27507         (duplicate_eh_regions): ... here; properly update prev_try pointers
27508         when duplication part of tree.
27509         (dump_eh_tree): Improve dumping.
27510         (verify_eh_region): New.
27511         (verify_eh_tree): Use it.
27512
27513 2009-04-06  Richard Guenther  <rguenther@suse.de>
27514
27515         * c-gimplify.c (c_gimplify_expr): Fix the invalid GENERIC
27516         &ARRAY addresses by adjusting their types and prepending
27517         a conversion.
27518         * tree-cfg.c (verify_gimple_assign_single): Verify that
27519         addresses are correct.
27520
27521 2009-04-09  Richard Guenther  <rguenther@suse.de>
27522
27523         * tree-ssa-ccp.c (maybe_fold_stmt_addition): Move non-constant
27524         indices into an array reference if possible.
27525         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_vars):
27526         Fold POINTER_PLUS_EXPR statements with invariant address.
27527
27528 2009-04-09  Alan Modra  <amodra@bigpond.net.au>
27529
27530         PR target/39634
27531         * config.gcc (powerpc64-*-linux*): Always build biarch.
27532
27533 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
27534
27535         PR c/39613
27536         * c-typeck.c (do_case): If case label is not an INTEGER_CST, fold
27537         it and pedwarn if this results in an INTEGER_CST.
27538
27539 2009-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
27540
27541         * doc/install.texi: Update minimum GMP version.  Remove obsolete
27542         text in MPFR section.
27543
27544 2009-04-08  Jakub Jelinek  <jakub@redhat.com>
27545
27546         * dwarf2out.c (class_scope_p): New static inline.
27547         (class_or_namespace_scope_p): Use it.
27548         (gen_variable_die): Use DW_TAG_member tag for static data member
27549         declarations instead of DW_TAG_variable.
27550
27551         PR middle-end/39573
27552         * omp-low.c (expand_omp_taskreg): Finalize taskreg static local_decls
27553         variables.
27554
27555 2009-04-08  Richard Guenther  <rguenther@suse.de>
27556
27557         * tree-ssa-sccvn.c (valueize_refs): Do not continue to
27558         valueize random data.
27559
27560 2009-04-08  David Edelsohn  <edelsohn@gnu.org>
27561
27562         * config.gcc (aix tm_file):  Add aix-stdint.h.
27563         (aix tm clause use_gcc_stdint):  Set to wrap.
27564         * config/rs6000/aix-stdint.h:  New file.
27565
27566 2009-04-08  Richard Guenther  <rguenther@suse.de>
27567
27568         PR middle-end/36291
27569         * tree-dfa.c (add_referenced_var): Do not recurse into
27570         global initializers.
27571         * tree-ssa-ccp.c (get_symbol_constant_value): Add newly
27572         exposed variables.
27573         (fold_const_aggregate_ref): Likewise.
27574
27575 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27576
27577         * recog.c (ordered_comparison_operator): New.
27578         * gensupport.c (std_preds): Add it.
27579         * doc/md.texi (Machine-Independent Predicates): Document it.
27580
27581 2009-04-08  Jan Hubicka  <jh@suse.cz>
27582
27583         * tree-eh.c (cleanup_eh): When not optimizing, do not try EH merging.
27584         * function.h (rtl_eh): Remove exception_handler_label_map.
27585         * except.c (ehl_hash, ehl_eq, add_ehl_entry,
27586         remove_exception_handler_label, for_each_eh_label_1): Remove.
27587         (rtl_remove_unreachable_regions): Remove.
27588         (convert_from_eh_region_ranges): Do not remove unreachable regions.
27589         (find_exception_handler_labels): Don't build the hashtable.
27590         (maybe_remove_eh_handler): Remove.
27591         (for_each_eh_label): Rewrite to walk the tree.
27592         (rest_of_handle_eh): Do not cleanup cfg prior EH construction.
27593         * except.h (maybe_remove_eh_handler): Remove.
27594         * passes.c (init_optimization_passes): Schedule second EH cleanup
27595         before out-of-ssa.
27596         * cfgrtl.c (rtl_delete_block, rtl_merge_blocks,
27597         cfg_layout_merge_blocks): Do not call maybe_remove_eh_handler.
27598
27599 2009-04-08  Paolo Bonzini  <bonzini@gnu.org>
27600
27601         * genoutput.c (validate_optab_operands): New.
27602         (gen_insn, gen_expand): Call it.
27603
27604         * genflags.c (gen_insn): Detect misused iterators.
27605         (main): Pass line_no to gen_insn, exit with status 1 on error.
27606
27607         * genextract.c (line_no): Make global.
27608         (VEC_safe_set_locstr): Change assertion to error message.
27609         (main): Exit with status 1 on error.
27610
27611 2009-04-08  Joseph Myers  <joseph@codesourcery.com>
27612
27613         PR c/39614
27614         PR c/39673
27615         * c-common.h (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
27616         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
27617         EXPR_INT_CONST_OPERANDS): Remove duplicate definitions.
27618         * c-convert.c (convert): Do not call fold on results of conversion
27619         functions when the result is a C_MAYBE_CONST_EXPR.
27620         * c-parser.c (c_parser_postfix_expression): Do not fold condition
27621         of __builtin_choose_expr.
27622         * c-typeck.c (remove_c_maybe_const_expr): New.
27623         (build_unary_op, build_conditional_expr, build_compound_expr,
27624         build_binary_op, c_objc_common_truthvalue_conversion): Call
27625         remove_c_maybe_const_expr on any input C_MAYBE_CONST_EXPR with
27626         integer operands.
27627
27628 2009-04-08  Bingfeng Mei  <bmei@broadcom.com>
27629
27630         * fold-const.c (const_binop): Combine two VECTOR_CST under operation
27631         CODE to produce a new one. Add a prototype to use fold_convert_const
27632
27633 2009-04-08  Danny Smith  <dannysmith@users.sourceforge.net>
27634
27635         PR bootstrap/39660
27636         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
27637         mix declarations and code.
27638
27639 2009-04-08  Ben Elliston  <bje@au.ibm.com>
27640
27641         * gcc.c: Replace `CC' with `GCC' throughout.
27642
27643 2009-04-07  H.J. Lu  <hongjiu.lu@intel.com>
27644
27645         * doc/invoke.texi: Document Atom support.
27646
27647 2009-04-07  Jason Merrill  <jason@redhat.com>
27648
27649         PR c++/25185
27650         * c-common.h, c-common.c: Add flag_pretty_templates.
27651         * c-opts.c (c_common_handle_option): Set it.
27652         * c.opt: Add -fno-pretty-templates.
27653         * doc/invoke.texi (C++ Dialect Options): Likewise.
27654
27655 2009-04-07  Uros Bizjak  <ubizjak@gmail.com>
27656
27657         * config/ia64/ia64.c (ia64_builtins): Add IA64_BUILTIN_HUGE_VALQ.
27658         (ia64_init_builtins): Handle IA64_BUILTIN_HUGE_VALQ.
27659         (ia64_expand_builtin): Likewise.
27660
27661 2009-04-07  Martin Jambor  <mjambor@suse.cz>
27662
27663         * tree-ssa-alias.c (refs_may_alias_p_1): Check for
27664         is_gimple_min_invariant rather than CONSTANT_CLASS_P so that invariant
27665         ADDR_EXPRS are include too.
27666
27667 2009-04-07  Richard Guenther  <rguenther@suse.de>
27668
27669         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Non-aliased
27670         decls are only used if passes as parameters or if they are
27671         local statics and the call is not to a builtin.
27672         (call_may_clobber_ref_p_1): Likewise.
27673
27674 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27675
27676         * expr.c (do_store_flag): Remove last argument.  Simplify code
27677         to avoid duplication of tests already done by can_compare_p.
27678         (expand_expr_real_1): Adjust caller.
27679
27680 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27681
27682         * optabs.c (can_compare_p): Test the predicate of a
27683         cbranch and cstore pattern.
27684
27685 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27686
27687         * expr.c (convert_move): Use emit_store_flag instead of
27688         "emulating" it.
27689
27690 2009-04-07  Paolo Bonzini  <bonzini@gnu.org>
27691
27692         * config/i386/i386.c (ix86_compare_emitted): Remove.
27693         (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
27694         ix86_compare_op0 like ix86_compare_emitted used to be handled.
27695         * config/i386/i386.h (ix86_compare_emitted): Remove.
27696         * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
27697         instead of ix86_compare_emitted.
27698         * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
27699
27700 2009-04-07  Andrew Stubbs  <ams@codesourcery.com>
27701
27702         * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
27703         Add t-sysroot-suffix to tmake_file.
27704         * config/print-sysroot-suffix.sh: New file.
27705         * config/t-sysroot-suffix: New file.
27706
27707 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27708
27709         * libgcc2.c (INFINITY): Use __builtin_huge_val, not __builtin_inf,
27710         as the latter produces a warning when the target does not support
27711         infinity.
27712
27713 2009-04-07  Ben Elliston  <bje@au.ibm.com>
27714
27715         * dfp.c: Replace type punning assignments with memcpy throughout.
27716         * Makefile.in (dfp.o-warn): Remove.
27717
27718 2009-04-07  Alan Modra  <amodra@bigpond.net.au>
27719
27720         PR target/39634
27721         * config.gcc: Merge powerpc-*-linux* and powerpc64-*-linux*.
27722         Include soft-fp/t-softfp after rs6000/t-linux64.
27723
27724 2009-04-06  Eric Botcazou  <ebotcazou@adacore.com>
27725
27726         * stor-layout.c (set_sizetype): Use the full precision of their
27727         machine mode for bitsize types.
27728
27729 2009-04-06  H.J. Lu  <hongjiu.lu@intel.com>
27730
27731         * config/i386/i386.md: Revert 2 accidental checkins.
27732
27733 2009-04-06  Joey Ye  <joey.ye@intel.com>
27734             Xuepeng Guo  <xuepeng.guo@intel.com>
27735             H.J. Lu  <hongjiu.lu@intel.com>
27736
27737         Atom pipeline model, tuning and insn selection.
27738         * config.gcc (atom): Add atom config options and target.
27739
27740         * config/i386/atom.md: New.
27741
27742         * config/i386/i386.c (atom_cost): New cost.
27743         (m_ATOM): New macro flag.
27744         (initial_ix86_tune_features): Set m_ATOM.
27745         (x86_accumulate_outgoing_args): Likewise.
27746         (x86_arch_always_fancy_math_387): Likewise.
27747         (processor_target): Add Atom cost.
27748         (cpu_names): Add Atom cpu name.
27749         (override_options): Set Atom ISA.
27750         (ix86_issue_rate): New case PROCESSOR_ATOM.
27751         (ix86_adjust_cost): Likewise.
27752
27753         * config/i386/i386.h (TARGET_ATOM): New target macro.
27754         (ix86_tune_indices): Add X86_TUNE_OPT_AGU.
27755         (TARGET_OPT_AGU): New target option.
27756         (target_cpu_default): Add TARGET_CPU_DEFAULT_atom.
27757         (processor_type): Add PROCESSOR_ATOM.
27758
27759         * config/i386/i386.md (cpu): Add new value "atom".
27760         (use_carry, movu): New attr.
27761         (atom.md): Include atom.md.
27762         (adddi3_carry_rex64): Set attr "use_carry".
27763         (addqi3_carry): Likewise.
27764         (addhi3_carry): Likewise.
27765         (addsi3_carry): Likewise.
27766         (*addsi3_carry_zext): Likewise.
27767         (subdi3_carry_rex64): Likewise.
27768         (subqi3_carry): Likewise.
27769         (subhi3_carry): Likewise.
27770         (subsi3_carry): Likewise.
27771         (x86_movdicc_0_m1_rex64): Likewise.
27772         (*x86_movdicc_0_m1_se): Likewise.
27773         (x86_movsicc_0_m1): Likewise.
27774         (*x86_movsicc_0_m1_se): Likewise.
27775         (*adddi_1_rex64): Emit add insn as much as possible.
27776         (*addsi_1): Likewise.
27777         (return_internal): Set atom_unit.
27778         (return_internal_long): Likewise.
27779         (return_pop_internal): Likewise.
27780         (*rcpsf2_sse): Set atom_sse_attr attr.
27781         (*qrt<mode>2_sse): Likewise.
27782         (*prefetch_sse): Likewise.
27783
27784         * config/i386/i386-c.c (ix86_target_macros_internal): New case
27785         PROCESSOR_ATOM.
27786         (ix86_target_macros_internal): Likewise.
27787
27788         * config/i386/sse.md (cpu): Set attr "atom_sse_attr".
27789         (*prefetch_sse_rex): Likewise.
27790         (sse_rcpv4sf2): Likewise.
27791         (sse_vmrcpv4sf2): Likewise.
27792         (sse_sqrtv4sf2): Likewise.
27793         (<sse>_vmsqrt<mode>2): Likewise.
27794         (sse_ldmxcsr): Likewise.
27795         (sse_stmxcsr): Likewise.
27796         (*sse_sfence): Likewise.
27797         (sse2_clflush): Likewise.
27798         (*sse2_mfence): Likewise.
27799         (*sse2_lfence): Likewise.
27800         (avx_movup<avxmodesuffixf2c><avxmodesuffix>): Set attr "movu".
27801         (<sse>_movup<ssemodesuffixf2c>): Likewise.
27802         (avx_movdqu<avxmodesuffix>): Likewise.
27803         (avx_lddqu<avxmodesuffix>): Likewise.
27804         (sse2_movntv2di): Change attr "type" to "ssemov".
27805         (sse2_movntsi): Likewise.
27806         (rsqrtv8sf2): Change attr "type" to "sseadd".
27807         (sse3_addsubv2df3): Set attr "atom_unit".
27808         (sse3_h<plusminus_insn>v4sf3): Likewise.
27809         (*sse2_pmaddwd): Likewise.
27810         (*vec_extractv2di_1_rex64): Likewise.
27811         (*vec_extractv2di_1_avx): Likewise.
27812         (sse2_psadbw): Likewise.
27813         (ssse3_phaddwv8hi3): Likewise.
27814         (ssse3_phaddwv4hi3): Likewise.
27815         (ssse3_phadddv4si3): Likewise.
27816         (ssse3_phadddv2si3): Likewise.
27817         (ssse3_phaddswv8hi3): Likewise.
27818         (ssse3_phaddswv4hi3): Likewise.
27819         (ssse3_phsubwv8hi3): Likewise.
27820         (ssse3_phsubwv4hi3): Likewise.
27821         (ssse3_phsubdv4si3): Likewise.
27822         (ssse3_phsubdv2si3): Likewise.
27823         (ssse3_phsubswv8hi3): Likewise.
27824         (ssse3_phsubswv4hi3): Likewise.
27825         (ssse3_pmaddubsw128): Likewise.
27826         (sse3_pmaddubsw: Likewise.
27827         (ssse3_palignrti): Likewise.
27828         (ssse3_palignrdi): Likewise.
27829
27830 2009-04-06  Gerald Pfeifer  <gerald@pfeifer.com>
27831
27832         * doc/install.texi (Specific): Fix two cross-references to MinGW.
27833
27834 2009-04-06  Richard Guenther  <rguenther@suse.de>
27835
27836         PR tree-optimization/28868
27837         * tree-ssa-pre.c (inserted_phi_names): New bitmap to keep track
27838         of which PHI results we inserted.
27839         (insert_into_preds_of_block): Record inserted PHIs.
27840         (eliminate): Eliminate redundant PHI nodes.
27841         (init_pre): Init inserted_phi_names.
27842
27843 2009-04-06  Richard Guenther  <rguenther@suse.de>
27844
27845         PR tree-optimization/39643
27846         * tree-ssa-ccp.c (ccp_fold): Fold REALPART_EXPRs and
27847         IMAGPART_EXPRs of complex constants.
27848         (execute_fold_all_builtins): If we folded a call queue
27849         TODO_update_address_taken.
27850
27851 2009-04-06  Jan Hubicka  <jh@suse.cz>
27852
27853         PR middle-end/39659
27854         * except.c (remove_unreachable_regions): Propagate may_contain_throw
27855         flag.
27856
27857 2009-04-06  Andrew Stubbs  <ams@codesourcery.com>
27858
27859         * config/sh/lib1funcs.asm (ic_invalidate): Move ICBI out of the
27860         delay slot.
27861         (ic_invalidate_array): Likewise.
27862
27863 2009-04-06  Hariharan Sandanagobalane  <hariharan@picochip.com>
27864
27865         * calls.c (emit_library_call_value_1): Fix a problem with parameter
27866         alignment for library calls.
27867
27868 2009-04-06  Danny Smith  <dannysmith@users.sourceforge.net>
27869
27870         * config.gcc (mingw32 tm_file):  Add mingw-stdint.h.
27871         (mingw32 tm clause use_gcc_stdint):  Set to wrap.
27872         * config/i386/mingw-stdint.h:  New file.
27873
27874 2009-04-05  Richard Guenther  <rguenther@suse.de>
27875
27876         PR tree-optimization/39648
27877         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Work around
27878         our &A vs. &A[0] IL deficiencies.
27879
27880 2009-04-04  Jan Hubicka  <jh@suse.cz>
27881
27882         * except.c (sjlj_find_directly_reachable_regions): Be ready for
27883         removed toplevel regions.
27884         (sjlj_mark_call_sites): Likewise.
27885
27886 2009-04-04  Dave Korn  <dave.korn.cygwin@gmail.com>
27887
27888         * config.gcc (cygwin tm_file):  Add cygwin-stdint.h.
27889         (cygwin tm clause use_gcc_stdint):  Set to wrap.
27890         * config/i386/cygwin-stdint.h:  New file.
27891
27892 2009-04-04  Richard Guenther  <rguenther@suse.de>
27893
27894         * Makefile.in (tree-ssa-copy.o): Add $(CFGLOOP_H) dependency.
27895         * tree-ssa-copy.c (init_copy_prop): Do not propagate through
27896         single-argument PHIs if we are in loop-closed SSA form.
27897         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Pass extra guards
27898         for the pre-condition.
27899         (slpeel_tree_peel_loop_to_edge): Likewise.
27900         (vect_build_loop_niters): Take an optional sequence to append stmts.
27901         (vect_generate_tmps_on_preheader): Likewise.
27902         (vect_do_peeling_for_loop_bound): Take extra guards for the
27903         pre-condition.
27904         (vect_do_peeling_for_alignment): Adjust.  Unconditionally apply
27905         the cost model check.
27906         (vect_loop_versioning): Take stmt and stmt list to put pre-condition
27907         guards if we are going to peel.  Do not apply versioning in that case.
27908         * tree-vectorizer.h (vect_loop_versioning): Adjust declaration.
27909         (vect_do_peeling_for_loop_bound): Likewise.
27910         * tree-vect-loop.c (vect_transform_loop): If we are peeling for
27911         loop bound only record extra pre-conditions, do not apply loop
27912         versioning.
27913
27914 2009-04-04  Richard Guenther  <rguenther@suse.de>
27915
27916         * tree-ssa-operands.c (pop_stmt_changes): Remove automatic
27917         renaming code.
27918
27919 2009-04-04  Jan Hubicka  <jh@suse.cz>
27920
27921         * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
27922         last_basic_block for size of bb->index indexed array.
27923         * bt-load.c (compute_defs_uses_and_gen, compute_kill,
27924         compute_out, link_btr_uses, build_btr_def_use_webs,
27925         build_btr_def_use_webs, migrate_btr_defs): Likewise.
27926
27927 2009-04-04  Jan Hubicka  <jh@suse.cz>
27928
27929         * except.c (remove_eh_handler_and_replace): Break out from ...
27930         (remove_eh_handler): ... here.
27931         (bring_to_root): New function.
27932         (remove_unreachable_regions): Collect MUST_NOT_THROW, unify runtime
27933         handled ones, bring others to root of tree.
27934
27935 2009-04-04  Jan Hubicka  <jh@suse.cz>
27936
27937         * tree-eh.c (tree_empty_eh_handler_p): Pattern match more curefully.
27938         (all_phis_safe_to_merge): New function.
27939         (update_info): New structure.
27940         (make_eh_edge_and_update_phi, update_eh_edges): New functions.
27941         (cleanup_empty_eh): Update SSA if possible.
27942
27943 2009-04-04  Richard Guenther  <rguenther@suse.de>
27944
27945         * tree-ssa.c (verify_ssa): With -O0 we do not need VOPs.
27946         * tree-ssa-operands.c (append_vdef): Do not append VOPs at -O0.
27947         (append_vuse): Likewise.
27948
27949 2009-04-04  Jakub Jelinek  <jakub@redhat.com>
27950
27951         * unwind-dw2.h (_Unwind_FrameState): Add REG_UNDEFINED enum value.
27952         * unwind-dw2.c (execute_cfa_program): Set how to REG_UNDEFINED
27953         instead of REG_UNSAVED for DW_CFA_undefined.
27954         (uw_update_context_1): Handle REG_UNDEFINED the same as REG_UNSAVED.
27955         (uw_update_context): If RA column is REG_UNDEFINED, mark it as
27956         outermost frame.
27957
27958 2009-04-04  Richard Earnshaw  <rearnsha@arm.com>
27959
27960         PR target/39501
27961         * arm.md (movsfcc): Disable if not TARGET_HARD_FLOAT.
27962
27963 2009-04-04  Richard Guenther  <rguenther@suse.de>
27964
27965         PR tree-optimization/8781
27966         PR tree-optimization/37892
27967         * tree-ssa-sccvn.h (vn_reference_fold_indirect): Declare.
27968         * tree-ssa-sccvn.c (vn_reference_fold_indirect): New function.
27969         (valueize_refs): Call it for *& valueizations.
27970         (shared_reference_ops_from_ref): Rename to ...
27971         (valueize_shared_reference_ops_from_ref): ... this and valueize.
27972         (shared_reference_ops_from_call): Rename to ...
27973         (valueize_shared_reference_ops_from_call): ... this and valueize.
27974         (vn_reference_lookup): Update.
27975         (visit_reference_op_call): Likewise.
27976         * tree-ssa-pre.c (phi_translate_1): Fold *&.
27977         (eliminate): Value-replace the call address in call statements.
27978
27979 2009-04-04  Richard Guenther  <rguenther@suse.de>
27980
27981         PR tree-optimization/39636
27982         * tree-ssa-forwprop.c
27983         (forward_propagate_addr_into_variable_array_index): Check for
27984         GIMPLE_ASSIGN before accessing the rhs code.
27985
27986 2009-04-03  Jason Merrill  <jason@redhat.com>
27987
27988         * stor-layout.c (set_sizetype): Set TYPE_CANONICAL.
27989
27990 2009-04-03  Steve Ellcey  <sje@cup.hp.com>
27991
27992         * config/ia64/ia64.md (extendsfdf2, extendsfxf2, extenddfxf2,
27993         truncdfsf2, truncxfsf2, truncxfdf2, floatdixf2, fix_truncsfdi2,
27994         fix_truncdfdi2, fix_truncxfdi2, fix_truncxfdi2_alts, floatunsdisf2,
27995         floatunsdidf2, floatunsdixf2, fixuns_truncsfdi2, fixuns_truncdfdi2,
27996         fixuns_truncxfdi2, fixuns_truncxfdi2_alts, divsi3_internal,
27997         smuldi3_highpart, umuldi3_highpart, ctzdi2, *getf_exp_xf,
27998         divdi3_internal_lat, divdi3_internal_thr, mulditi3, *mulditi3_internal,
27999         umulditi3, *umulditi3_internal, addsf3, mulsf3, abssf2, negsf2,
28000         *nabssf2, sminsf3, smaxsf3, *maddsf4, *msubsf4, *nmulsf3, *nmaddsf4,
28001         *nmaddsf4_alts, divsf3, *sqrt_approx, sqrtsf2, sqrtsf2_internal_thr,
28002         adddf3, *adddf3_trunc, muldf3, *muldf3_trunc, absdf2, negdf2, *nabsdf2,
28003         smindf3, smaxdf3, *madddf4, *madddf4_trunc, *msubdf4, *msubdf4_trunc,
28004         *nmuldf3, *nmuldf3_trunc, *nmadddf4, *nmadddf4_alts, *nmadddf4_truncsf,
28005         *nmadddf4_truncsf_alts, divdf3, sqrtdf2, sqrtdf2_internal_thr, divxf3,
28006         sqrtxf2, sqrtxf2_internal_thr, *recip_approx):
28007         Use fr_reg_or_fp01_operand instead of fr_register_operand
28008
28009         * config/ia64/div.md (extend<mode>rf2, truncrf<mode>2,
28010         recip_approx_rf, divsf3_internal_thr, divsf3_internal_lat,
28011         divdf3_internal_thr, divdf3_internal_lat divxf3_internal): Ditto.
28012
28013 2009-04-03  Vladimir Makarov  <vmakarov@redhat.com>
28014
28015         PR rtl-optimization/39607
28016         PR rtl-optimization/39631
28017
28018         Revert:
28019
28020         2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
28021         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
28022         instead of DF_LR_OUT.
28023         * ira-lives.c (process_bb_node_lives): Ditto.
28024         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
28025         instead of DF_LR_{OUT,IN}.
28026         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
28027         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
28028
28029 2009-04-03  Steven Bosscher  <steven@gcc.gnu.org>
28030
28031         * omp-low.c (pass_expand_omp): Don't claim to provide PROP_gimple_lomp.
28032         (execute_lower_omp): Always run but take the short way out if -fopenmp
28033         is not given.
28034         (gate_lower_omp): Remove, forcing the pass manager to always run the
28035         pass and always set PROP_gimple_lomp.
28036         (pass_lower_omp): Remove gate function.
28037         * matrix-reorg.c (pass_ipa_matrix_reorg): Don't claim to provide
28038         PROP_trees.  Instead, require it.
28039         * ipa-cp.c (pass_ipa_cp): Likewise.
28040         * ipa-inline.c (pass_early_inline): Don't claim to provide PROP_cfg.
28041         (pass_ipa_early_inline, pass_inline_parameters, pass_ipa_inline): Idem.
28042         * tree-profile.c (pass_tree_profile): Don't claim to provide PROP_cfg
28043         and PROP_gimple_leh.
28044
28045 2009-04-03  Richard Guenther  <rguenther@suse.de>
28046
28047         PR middle-end/13146
28048         PR tree-optimization/23940
28049         PR tree-optimization/33237
28050         PR middle-end/33974
28051         PR middle-end/34093
28052         PR tree-optimization/36201
28053         PR tree-optimization/36230
28054         PR tree-optimization/38049
28055         PR tree-optimization/38207
28056         PR tree-optimization/38230
28057         PR tree-optimization/38301
28058         PR tree-optimization/38585
28059         PR middle-end/38895
28060         PR tree-optimization/38985
28061         PR tree-optimization/39299
28062         * tree-ssa-structalias.h: Remove.
28063         * tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
28064         (NULL_DEF_OPERAND_P): Make of type def_operand_p.
28065         (struct vuse_element_d): Remove.
28066         (struct vuse_vec_d): Likewise.
28067         (VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
28068         VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
28069         SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
28070         VUSE_ELEMENT_VAR): Likewise.
28071         (struct voptype_d): Likewise.
28072         (NUM_VOP_FREE_BUCKETS): Likewise.
28073         (struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
28074         (struct stmt_operands_d): Remove.
28075         (VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
28076         VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
28077         VDEF_NUM, VDEF_VECT): Likewise.
28078         (copy_virtual_operands): Remove.
28079         (operand_build_cmp): Likewise.
28080         (create_ssa_artificial_load_stmt): Likewise.
28081         (enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
28082         (struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
28083         vuse_index and mayuse_index members.  Pack and move done and iter_type
28084         members to the front.
28085         (SSA_OP_VMAYUSE): Remove.
28086         (SSA_OP_VIRTUAL_USES): Adjust.
28087         (FOR_EACH_SSA_VDEF_OPERAND): Remove.
28088         (unlink_stmt_vdef): Declare.
28089         (add_to_addressable_set): Remove.
28090         * tree-vrp.c (stmt_interesting_for_vrp): Adjust.
28091         (vrp_visit_stmt): Likewise.
28092         * doc/tree-ssa.texi (Alias analysis): Update.
28093         * doc/invoke.texi (max-aliased-vops): Remove docs.
28094         (avg-aliased-vops): Likewise.
28095         * tree-into-ssa.c (syms_to_rename): Remove.
28096         (need_to_update_vops_p): Likewise.
28097         (need_to_initialize_update_ssa_p): Rename to ...
28098         (update_ssa_initialized_fn): ... this.  Track function we are
28099         initialized for.
28100         (symbol_marked_for_renaming): Simplify.
28101         (add_new_name_mapping): Do not set need_to_update_vops_p.
28102         (dump_currdefs): Use SYMS_TO_RENAME.
28103         (rewrite_update_stmt): Always walk all uses/defs.
28104         (dump_update_ssa): Adjust.
28105         (init_update_ssa): Take function argument.  Track what we are
28106         initialized for.
28107         (delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
28108         (create_new_def_for): Initialize for cfun, assert we are initialized
28109         for cfun.
28110         (mark_sym_for_renaming): Simplify.
28111         (mark_set_for_renaming): Do not initialize update-ssa.
28112         (need_ssa_update_p): Simplify.  Take function argument.
28113         (name_mappings_registered_p): Assert we ask for the correct function.
28114         (name_registered_for_update_p): Likewise.
28115         (ssa_names_to_replace): Likewise.
28116         (release_ssa_name_after_update_ssa): Likewise.
28117         (update_ssa): Likewise.  Use SYMS_TO_RENAME.
28118         (dump_decl_set): Do not print a newline.
28119         (debug_decl_set): Do it here.
28120         (dump_update_ssa): And here.
28121         * tree-ssa-loop-im.c (move_computations): Adjust.
28122         (movement_possibility): Likewise.
28123         (determine_max_movement): Likewise.
28124         (gather_mem_refs_stmt): Likewise.
28125         * tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
28126         or NAME_MEMORY_TAG.
28127         * tree-complex.c (update_all_vops): Remove.
28128         (expand_complex_move): Adjust.
28129         * tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
28130         Simplify test for memory referencing statement.  Exclude
28131         non-invariant ADDR_EXPRs.
28132         * tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
28133         * tree-loop-distribution.c (generate_memset_zero): Adjust.
28134         (rdg_flag_uses): Likewise.
28135         * tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
28136         related code.
28137         (tree_optimize_tail_calls_1): Also split the
28138         edge from the entry block if we have degenerate PHI nodes in
28139         the first basic block.
28140         * tree.c (init_ttree): Remove memory-tag related code.
28141         (tree_code_size): Likewise.
28142         (tree_node_structure): Likewise.
28143         (build7_stat): Re-write to be build6_stat.
28144         * tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
28145         (SSA_VAR_P): Adjust.
28146         (struct tree_memory_tag): Remove.
28147         (struct tree_memory_partition_tag): Likewise.
28148         (union tree_node): Adjust.
28149         (build7): Re-write to be build6.
28150         * tree-pass.h (pass_reset_cc_flags): Remove.
28151         (TODO_update_address_taken): New flag.
28152         (pass_simple_dse): Remove.
28153         * ipa-cp.c (ipcp_update_callgraph): Update SSA form.
28154         * params.h (MAX_ALIASED_VOPS): Remove.
28155         (AVG_ALIASED_VOPS): Likewise.
28156         * omp-low.c (expand_omp_taskreg): Update SSA form.
28157         * tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
28158         aliases the lhs in a copy stmt.
28159         * tree-ssa-dse.c (struct address_walk_data): Remove.
28160         (memory_ssa_name_same): Likewise.
28161         (memory_address_same): Likewise.
28162         (get_kill_of_stmt_lhs): Likewise.
28163         (dse_possible_dead_store_p): Simplify, use the oracle.  Handle
28164         unused stores.  Look through PHI nodes into post-dominated regions.
28165         (dse_optimize_stmt): Simplify.  Properly remove stores.
28166         (tree_ssa_dse): Compute dominators.
28167         (execute_simple_dse): Remove.
28168         (pass_simple_dse): Likewise.
28169         * ipa-reference.c (scan_stmt_for_static_refs): Open-code
28170         gimple_loaded_syms and gimple_stored_syms computation.
28171         * toplev.c (dump_memory_report): Dump alias and pta stats.
28172         * tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
28173         (vn_reference_eq): Likewise.
28174         (vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
28175         copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
28176         valueize_vuses): Remove.
28177         (get_def_ref_stmt_vuses): Simplify.  Rename to ...
28178         (get_def_ref_stmt_vuse): ... this.
28179         (vn_reference_lookup_2): New function.
28180         (vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
28181         walking equivalent vuses.  Simplify.
28182         (vn_reference_lookup): Likewise.
28183         (vn_reference_insert): Likewise.
28184         (vn_reference_insert_pieces): Likewise.
28185         (visit_reference_op_call): Simplify.
28186         (visit_reference_op_load): Likewise.
28187         (visit_reference_op_store): Likewise.
28188         (init_scc_vn): Remove shared_lookup_vuses initialization.
28189         (free_scc_vn): Remove shared_lookup_vuses freeing.
28190         (sort_vuses, sort_vuses_heap): Remove.
28191         (get_ref_from_reference_ops): Export.
28192         * tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
28193         vector with single vuse pointer.
28194         (vn_reference_lookup_pieces, vn_reference_lookup,
28195         vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
28196         (shared_vuses_from_stmt): Remove.
28197         (get_ref_from_reference_ops): Declare.
28198         * tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
28199         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
28200         memory-tag related code.
28201         * tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
28202         (likely_value): Add comment, skip static-chain of call statements.
28203         (surely_varying_stmt_p): Adjust.
28204         (gimplify_and_update_call_from_tree): Likewise.
28205         (execute_fold_all_builtins): Do not rebuild alias info.
28206         (gimplify_and_update_call_from_tree): Properly update VOPs.
28207         * tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
28208         (copy_ref_info): Remove memory-tag related code.
28209         * tree-call-cdce.c (tree_call_cdce): Rename the VOP.
28210         * ipa-pure-const.c (check_decl): Remove memory-tag related code.
28211         (check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
28212         computation.
28213         * tree-ssa-dom.c (gimple_p): Remove typedef.
28214         (eliminate_redundant_computations): Adjust.
28215         (record_equivalences_from_stmt): Likewise.
28216         (avail_expr_hash): Likewise.
28217         (avail_expr_eq): Likewise.
28218         * tree-ssa-propagate.c (update_call_from_tree): Properly update VOPs.
28219         (stmt_makes_single_load): Likewise.
28220         (stmt_makes_single_store): Likewise.
28221         * tree-ssa-alias.c: Rewrite completely.
28222         (debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
28223         debug_mem_sym_stats, dump_mem_sym_stats_for_var,
28224         debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
28225         delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
28226         dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
28227         Remove public functions.
28228         (pass_reset_cc_flags): Remove.
28229         (pass_build_alias): Move ...
28230         * tree-ssa-structalias.c (pass_build_alias): ... here.
28231         * tree-ssa-alias.c (may_be_aliased): Move ...
28232         * tree-flow-inline.h (may_be_aliased): ... here.
28233         tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
28234         count_uses_and_derefs): Move ...
28235         * gimple.c: ... here.
28236         * gimple.h (count_uses_and_derefs): Declare.
28237         * tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
28238         ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
28239         same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
28240         indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
28241         ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
28242         call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
28243         get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
28244         New functions.
28245         * tree-dfa.c (refs_may_alias_p): Move ...
28246         * tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
28247         * tree-ssa-alias.h: New file.
28248         * tree-ssa-sink.c (is_hidden_global_store): Adjust.
28249         (statement_sink_location): Likewise.
28250         * opts.c (decode_options): Do not adjust max-aliased-vops or
28251         avg-aliased-vops values.
28252         * timevar.def (TV_TREE_MAY_ALIAS): Remove.
28253         (TV_CALL_CLOBBER): Likewise.
28254         (TV_FLOW_SENSITIVE): Likewise.
28255         (TV_FLOW_INSENSITIVE): Likewise.
28256         (TV_MEMORY_PARTITIONING): Likewise.
28257         (TV_ALIAS_STMT_WALK): New timevar.
28258         * tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
28259         * tree-ssa-address.c (create_mem_ref_raw): Use build6.
28260         (get_address_description): Remove memory-tag related code.
28261         * tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
28262         * treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
28263         * tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
28264         and immediate uses in statements.  Document.
28265         * gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
28266         (dump_symbols): Remove.
28267         (dump_gimple_mem_ops): Do not dump loaded or stored syms.
28268         * alias.c (get_deref_alias_set): New function split out from ...
28269         (get_alias_set): ... here.
28270         * alias.h (get_deref_alias_set): Declare.
28271         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
28272         type parameter.  Remove restrict pointer handling.  Create a
28273         ref-all pointer in case type-based alias sets do not conflict.
28274         (vect_analyze_data_refs): Remove SMT related code.
28275         * tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
28276         (vectorizable_load): Likewise.
28277         * tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
28278         (DR_SYMBOL_TAG, DR_VOPS): Remove.
28279         * tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
28280         Ignore vops and SMTs.
28281         (dr_analyze_alias): Likewise..
28282         (free_data_ref): Likewise.
28283         (create_data_ref): Likewise.
28284         (analyze_all_data_dependences): Likewise.
28285         (get_references_in_stmt): Adjust.
28286         * tree-flow-inline.h (gimple_aliases_computed_p,
28287         gimple_addressable_vars, gimple_call_clobbered_vars,
28288         gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
28289         factoring_name_p, mark_call_clobbered, clear_call_clobbered,
28290         compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
28291         gimple_mem_ref_stats): Remove.
28292         (gimple_vop): New function.
28293         (op_iter_next_use): Remove vuses and mayuses cases.
28294         (op_iter_next_def): Remove vdefs case.
28295         (op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
28296         (clear_and_done_ssa_iter): Do not set removed fields.
28297         (op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
28298         Assert we are not iterating over vuses or vdefs if not also
28299         iterating over uses or defs.
28300         (op_iter_init_use): Likewise.
28301         (op_iter_init_def): Likewise.
28302         (op_iter_next_vdef): Remove.
28303         (op_iter_next_mustdef): Likewise.
28304         (op_iter_init_vdef): Likewise.
28305         (compare_ssa_operands_equal): Likewise.
28306         (link_use_stmts_after): Handle vuse operand.
28307         (is_call_used): Use is_call_clobbered.
28308         (is_call_clobbered): Global variables are always call clobbered,
28309         query the call-clobbers bitmap.
28310         (mark_call_clobbered): Ignore global variables.
28311         (clear_call_clobbered): Likewise.
28312         * tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
28313         virtual operands sanity check.
28314         * tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
28315         Remove.
28316         (TARGET_MEM_REF): Remove TMR_TAG operand.
28317         * tree-dfa.c (add_referenced_var): Initialize call-clobber state.
28318         Remove call-clobber related code.
28319         (remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
28320         (dump_variable): Do not dump SMTs, memory stats, may-aliases or
28321         partitions or escape reason.
28322         (get_single_def_stmt, get_single_def_stmt_from_phi,
28323         get_single_def_stmt_with_phi): Remove.
28324         (dump_referenced_vars): Tidy.
28325         (get_ref_base_and_extent): Allow bare decls.
28326         (collect_dfa_stats): Adjust.
28327         * graphite.c (rename_variables_in_stmt): Adjust.
28328         (graphite_copy_stmts_from_block): Likewise.
28329         (translate_clast): Likewise.
28330         * tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
28331         (EXPR_DIES): New.
28332         (translate_vuse_through_block): Use the oracle.
28333         (phi_translate_1): Adjust.
28334         (value_dies_in_block_x): Use the oracle.  Cache the outcome
28335         in EXPR_DIES.
28336         (valid_in_sets): Check if the VUSE for
28337         a REFERENCE is available.
28338         (eliminate): Do not remove stmts during elimination,
28339         instead queue and remove them afterwards.
28340         (do_pre): Do not rebuild alias info.
28341         (pass_pre): Run TODO_rebuild_alias before PRE.
28342         * tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
28343         * tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
28344         (mark_all_v_defs_stmt): Remove.
28345         (mark_all_v_defs_seq): Adjust.
28346         (sra_replace): Likewise.
28347         (scalarize_use): Likewise.
28348         (scalarize_copy): Likewise.
28349         (scalarize_init): Likewise.
28350         (scalarize_ldst): Likewise.
28351         (todoflags): Remove.
28352         (tree_sra): Do not rebuild alias info.
28353         (tree_sra_early): Adjust.
28354         (pass_sra): Run TODO_update_address_taken before SRA.
28355         * tree-predcom.c (set_alias_info): Remove.
28356         (prepare_initializers_chain): Do not call it.
28357         (mark_virtual_ops_for_renaming): Adjust.
28358         (mark_virtual_ops_for_renaming_list): Remove.
28359         (initialize_root_vars): Adjust.
28360         (initialize_root_vars_lm): Likewise.
28361         (prepare_initializers_chain): Likewise.
28362         * tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
28363         (may_propagate_copy_into_stmt): Likewise.
28364         (merge_alias_info): Do nothing for now.
28365         (propagate_tree_value_into_stmt): Adjust.
28366         (stmt_may_generate_copy): Likewise.
28367         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
28368         not mark symbols for renaming.
28369         (forward_propagate_addr_expr): Match up push/pop_stmt_changes
28370         with the same statement, make sure to update the new pointed-to one.
28371         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
28372         call statements, do not mark symbols for renaming.
28373         (mark_operand_necessary): Dump something.
28374         (ref_may_be_aliased): New function.
28375         (mark_aliased_reaching_defs_necessary_1): New helper function.
28376         (mark_aliased_reaching_defs_necessary): Likewise.
28377         (mark_all_reaching_defs_necessary_1): Likewise.
28378         (mark_all_reaching_defs_necessary): Likewise.
28379         (propagate_necessity): Do not process virtual PHIs.  For
28380         non-aliased loads mark all reaching definitions as necessary.
28381         For aliased loads and stores mark the immediate dominating
28382         aliased clobbers as necessary.
28383         (visited): New global static.
28384         (perform_tree_ssa_dce): Free visited bitmap after propagating
28385         necessity.
28386         (remove_dead_phis): Perform simple dead virtual PHI removal.
28387         (remove_dead_stmt): Properly unlink virtual operands when
28388         removing stores.
28389         (eliminate_unnecessary_stmts): Schedule PHI removal after
28390         stmt removal.
28391         * tree-ssa-ter.c (is_replaceable_p): Adjust.
28392         (process_replaceable): Likewise.
28393         (find_replaceable_in_bb): Likewise.
28394         * tree-ssa.c (verify_ssa_name): Verify all VOPs are
28395         based on the single gimple vop.
28396         (verify_flow_insensitive_alias_info): Remove.
28397         (verify_flow_sensitive_alias_info): Likewise.
28398         (verify_call_clobbering): Likewise.
28399         (verify_memory_partitions): Likewise.
28400         (verify_alias_info): Likewise.
28401         (verify_ssa): Adjust..
28402         (execute_update_addresses_taken): Export.  Update SSA
28403         manually.  Optimize only when optimizing.  Use a local bitmap.
28404         (pass_update_address_taken): Remove TODO_update_ssa, add
28405         TODO_dump_func.
28406         (pass_update_address_taken): Just use TODO_update_address_taken.
28407         (init_tree_ssa): Do not initialize addressable_vars.
28408         (verify_ssa): Verify new VUSE / VDEF properties.
28409         Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
28410         Do not call verify_alias_info.
28411         (delete_tree_ssa): Clear the VUSE, VDEF operands.
28412         Do not free the loaded and stored syms bitmaps.  Reset the escaped
28413         and callused solutions.  Do not free addressable_vars.
28414         Remove memory-tag related code.
28415         (warn_uninitialized_var): Aliases are always available.
28416         * tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
28417         * lambda-code.c (can_put_in_inner_loop): Adjust.
28418         (can_put_after_inner_loop): Likewise.
28419         (perfect_nestify): Likewise.
28420         * tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
28421         (vect_gen_widened_results_half): Remove CALL_EXPR handling.
28422         (vectorizable_conversion): Do not mark symbols for renaming.
28423         * tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
28424         (expand_call_inline): Unlink the calls virtual operands before
28425         replacing it.
28426         (tree_function_versioning): Do not call update_ssa if we are not
28427         updating clones.  Simplify.
28428         * tree-ssa-phiprop.c (phivn_valid_p): Adjust.
28429         (propagate_with_phi): Likewise..
28430         * tree-outof-ssa.c (create_temp): Remove memory tag and call
28431         clobber code.  Assert we are not aliased or global.
28432         * tree-flow.h: Include tree-ssa-alias.h
28433         (enum escape_type): Remove.
28434         (struct mem_sym_stats_d): Likewise.
28435         (struct mem_ref_stats_d): Likewise.
28436         (struct gimple_df): Add vop member.  Remove global_var,
28437         call_clobbered_vars, call_used_vars, addressable_vars,
28438         aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
28439         escaped and callused members.
28440         (struct ptr_info_def): Remove all members, add points-to solution
28441         member pt.
28442         (struct var_ann_d): Remove in_vuse_list, in_vdef_list,
28443         call_clobbered, escape_mask, mpt and symbol_mem_tag members.
28444         * Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
28445         (tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
28446         (tree-ssa-alias.o): Likewise.
28447         (toplev.o): Add tree-ssa-alias.h
28448         (GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
28449         * gimple.c (gimple_set_bb): Fix off-by-one error.
28450         (is_gimple_reg): Do not handle memory tags.
28451         (gimple_copy): Also copy virtual operands.
28452         Delay updating the statement.  Do not reset loaded and stored syms.
28453         (gimple_set_stored_syms): Remove.
28454         (gimple_set_loaded_syms): Likewise.
28455         (gimple_call_copy_skip_args): Copy the virtual operands
28456         and mark the new statement modified.
28457         * tree-ssa-structalias.c (may_alias_p): Remove.
28458         (set_uids_in_ptset): Take the alias set to prune with as
28459         parameter.  Fold in the alias test of may_alias_p.
28460         (compute_points_to_sets): Compute whether a ptr is dereferenced
28461         in a local sbitmap.
28462         (process_constraint): Deal with &ANYTHING on the lhs, reject all
28463         other ADDRESSOF constraints on the lhs.
28464         (get_constraint_for_component_ref): Assert that we don't get
28465         ADDRESSOF constraints from the base of the reference.
28466         Properly generate UNKNOWN_OFFSET for DEREF if needed.
28467         (struct variable_info): Remove collapsed_to member.
28468         (get_varinfo_fc): Remove.
28469         (new_var_info): Do not set collapsed_to.
28470         (dump_constraint): Do not follow cycles.
28471         (dump_constraint_graph): Likewise.
28472         (build_pred_graph): Likewise.
28473         (build_succ_graph): Likewise.
28474         (rewrite_constraints): Likewise.
28475         (do_simple_structure_copy): Remove.
28476         (do_rhs_deref_structure_copy): Remove.
28477         (do_lhs_deref_structure_copy): Remove.
28478         (collapse_rest_of_var): Remove.
28479         (do_structure_copy): Re-implement.
28480         (pta_stats): New global variable.
28481         (dump_pta_stats): New function.
28482         (struct constraint_expr): Make offset signed.
28483         (UNKNOWN_OFFSET): Define special value.
28484         (dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
28485         (solution_set_expand): New helper function split out from ...
28486         (do_sd_constraint): ... here.
28487         (solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
28488         (do_ds_constraint): Likewise.
28489         (do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
28490         and CALLUSED = *CALLUSED.
28491         (set_union_with_increment): Make inc argument signed.
28492         (type_safe): Remove.
28493         (get_constraint_for_ptr_offset): Handle unknown and negative
28494         constant offsets.
28495         (first_vi_for_offset): Handle offsets before start.  Bail
28496         out early for offsets beyond the variable extent.
28497         (first_or_preceding_vi_for_offset): New function.
28498         (init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
28499         Together with ESCAPED = *ESCAPED this properly computes reachability.
28500         (find_what_var_points_to): New function.
28501         (find_what_p_points_to): Implement in terms of find_what_var_points_to.
28502         (pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
28503         pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
28504         pt_solutions_intersect): New functions.
28505         (compute_call_used_vars): Remove.
28506         (compute_may_aliases): New main entry into PTA computation.
28507         * gimple.h (gimple_p): New typedef.
28508         (struct gimple_statement_base): Remove references_memory_p.
28509         (struct gimple_statement_with_memory_ops_base): Remove
28510         vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
28511         members.
28512         (gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
28513         gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
28514         gimple_set_references_memory): Remove.
28515         (gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
28516         gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
28517         New functions.
28518         * tree-cfg.c (move_block_to_fn): Fix off-by-one error.
28519         (verify_expr): Allow RESULT_DECL.
28520         (gimple_duplicate_bb): Do not copy virtual operands.
28521         (gimple_duplicate_sese_region): Adjust.
28522         (gimple_duplicate_sese_tail): Likewise.
28523         (mark_virtual_ops_in_region): Remove.
28524         (move_sese_region_to_fn): Do not call it.
28525         * passes.c (init_optimization_passes): Remove pass_reset_cc_flags
28526         and pass_simple_dse.
28527         (execute_function_todo): Handle TODO_update_address_taken,
28528         call execute_update_addresses_taken for TODO_rebuild_alias.
28529         (execute_todo): Adjust.
28530         (execute_one_pass): Init dump files early.
28531         * ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
28532         call-clobbered.
28533         (create_general_new_stmt): Clear vops.
28534         * tree-ssa-reassoc.c (get_rank): Adjust.
28535         * tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
28536         symbols for renaming.
28537         * params.def (PARAM_MAX_ALIASED_VOPS): Remove.
28538         (PARAM_AVG_ALIASED_VOPS): Likewise.
28539         * tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
28540         (duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
28541         * tree-ssa-operands.c: Simplify for new virtual operand representation.
28542         (operand_build_cmp, copy_virtual_operands,
28543         create_ssa_artificial_load_stmt, add_to_addressable_set,
28544         gimple_add_to_addresses_taken): Remove public functions.
28545         (unlink_stmt_vdef): New function.
28546
28547 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28548
28549         * config.gcc (powerpc-*-linux*): Merge variants.
28550
28551 2009-04-02  Chao-ying Fu  <fu@mips.com>
28552             James Grosbach  <james.grosbach@microchip.com>
28553
28554         * config/mips/mips.c (mips_frame_info): Add acc_mask, num_acc,
28555         num_cop0_regs, acc_save_offset, cop0_save_offset, acc_sp_offset,
28556         cop0_sp_offset.
28557         (machine_function): Add interrupt_handler_p, use_shadow_register_set_p,
28558         keep_interrupts_masked_p, use_debug_exception_return_p.
28559         (mips_attribute_table): Add interrupt, use_shadow_register_set,
28560         keep_interrupts_masked, use_debug_exception_return.
28561         (mips_interrupt_type_p, mips_use_shadow_register_set_p,
28562         mips_keep_interrupts_masked_p, mips_use_debug_exception_return_p):
28563         New functions.
28564         (mips_function_ok_for_sibcall): Return false for interrupt handlers.
28565         (mips_print_operand): Process COP0 registers to print $0 .. $31
28566         correctly for GAS to process.
28567         (mips_interrupt_extra_call_saved_reg_p): New function.
28568         (mips_cfun_call_saved_reg_p): For interrupt handlers, we need to check
28569         extra registers.
28570         (mips_cfun_might_clobber_call_saved_reg_p): Likewise.
28571         (mips_compute_frame_info): Add supports for interrupt context that
28572         includes doubleword accumulators and COP0 registers.
28573         (mips_for_each_saved_acc): New function.
28574         (mips_for_each_saved_gpr_and_fpr): Change the function name from
28575         mips_for_each_saved_reg.
28576         (mips_save_reg): Save accumulators.
28577         (mips_kernel_reg_p): A new for_each_rtx callback.
28578         (mips_expand_prologue): Support interrupt handlers.
28579         (mips_restore_reg): Restore accumulators.
28580         (mips_expand_epilogue): Support interrupt handlers.
28581         (mips_can_use_return_insn): Return false for interrupt handlers.
28582         (mips_epilogue_uses): New function.
28583         * config/mips/mips.md (UNSPEC_ERET, UNSPEC_DERET, UNSPEC_DI,
28584         UNSPEC_EHB, UNSPEC_RDPGPR, UNSPEC_COP0): New UNSPEC.
28585         (mips_eret, mips_deret, mips_di, mips_ehb, mips_rdpgpr,
28586         cop0_move): New instructions.
28587         * config/mips/mips-protos.h (mips_epilogue_uses): Declare.
28588         * config/mips/mips.h (K0_REG_NUM, K1_REG_NUM, KERNEL_REG_P): New
28589         defines.
28590         (COP0_STATUS_REG_NUM, COP0_CAUSE_REG_NUM, COP0_EPC_REG_NUM):
28591         New defines.
28592         (CAUSE_IPL, SR_IPL, SR_EXL, SR_IE): New defines.
28593         (MIPS_PROLOGUE_TEMP_REGNUM, MIPS_EPILOGUE_TEMP_REGNUM): For
28594         interrupt handlers, we use K0 as the temporary register.
28595         (EPILOGUE_USES): Change to a function call.
28596         * config/mips/sde.h (MIPS_EPILOGUE_TEMP_REGNUM): For interrupt
28597         handlers, we use K0 as the temporary register.
28598
28599         * doc/extend.texi (Function Attributes): Document interrupt,
28600         use_shadow_register_set, keep_interrupts_masked,
28601         use_debug_exception_return for MIPS attributes.
28602
28603 2009-04-03  Alan Modra  <amodra@bigpond.net.au>
28604
28605         * config.gcc (powerpc64-*-gnu*): Add rs6000/default64.h to tm_file.
28606         Remove a number of t-files from tmake_file.
28607         * config/rs6000/sysv4.opt (mprototype): Name variable target_prototype.
28608         * config/rs6000/sysv4.h (TARGET_PROTOTYPE): Define.
28609         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Set
28610         target_prototype, not TARGET_PROTOTYPE.
28611         (LINK_OS_GNU_SPEC): Define.
28612         * config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Delete tramp.S
28613         and darwin-ldoubdle.c.
28614
28615 2009-04-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
28616
28617         PR driver/39293
28618         * gcc.c (save_temps_flag): Add support for -save-temps=obj.
28619         (cpp_options): Ditto.
28620         (default_compilers): Ditto.
28621         (display_help): Ditto.
28622         (process_command): Ditto.
28623         (do_spec_1): Ditto.
28624         (set_input): Use lbasename instead of duplicate code.
28625         (save_temps_prefix): New static for -save-temps=obj.
28626         (save_temps_length): Ditto.
28627
28628         * doc/invoke.texi (-save-temps=obj): Document new variant to
28629         -save-temps switch.
28630
28631 2009-04-02  Jeff Law  <law@redhat.com>
28632
28633         * reload1.c (fixup_eh_region_notes): Remove write-only "trap_count"
28634         variable.
28635
28636 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28637
28638         * configure.ac: Support -Bstatic/-Bdynamic for linker version > 2.
28639         * configure: Regenerated.
28640
28641 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28642
28643         * c-decl.c (merge_decls): Make sure newdecl and olddecl don't
28644         share the argument list.
28645
28646 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28647
28648         Merge
28649
28650         2009-02-12  Diego Novillo  <dnovillo@google.com>
28651
28652         * varpool.c (debug_varpool): New.
28653         * cgraph.h (debug_varpool): Declare.
28654
28655 2009-04-02  Jan Hubicka  <jh@suse.cz>
28656
28657         * passes.c (init_optimization_passes): Remove two copies of ehcleanup
28658         pass.
28659
28660 2009-04-02  H.J. Lu  <hongjiu.lu@intel.com>
28661
28662         * config/i386/i386.c (ix86_abi): Move initialization to ...
28663         (override_options): Here.
28664
28665 2009-04-02  Christian Bruel  <christian.bruel@st.com>
28666
28667         * config/sh/sh.c (sh_dwarf_register_span): New function.
28668         (TARGET_DWARF_REGISTER_SPAN): Define.
28669         * config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
28670
28671 2009-04-02  Ira Rosen  <irar@il.ibm.com>
28672
28673         PR tree-optimization/39595
28674         * tree-vect-slp.c (vect_build_slp_tree): Check that the size of
28675         interleaved loads group is not  greater than the SLP group size.
28676
28677 2009-04-02  Rafael Avila de Espindola  <espindola@google.com>
28678
28679         * builtins.c (is_builtin_name): New.
28680         (called_as_built_in): Use is_builtin_name.
28681         * tree.h (is_builtin_name): New.
28682         * varasm.c (incorporeal_function_p): Use is_builtin_name
28683
28684 2009-04-02  Andrew Stubbs  <ams@codesourcery.com>
28685
28686         * config/sh/linux-unwind.h: Disable when inhibit_libc is defined.
28687
28688 2009-04-02  Dodji Seketeli  <dodji@redhat.com>
28689
28690         PR c++/26693
28691         * c-decl.c (clone_underlying_type): Move this ...
28692         * c-common.c (set_underlying_type): ... here.
28693         Also, make sure the function properly sets TYPE_STUB_DECL() on
28694         the newly created typedef variant type.
28695         * c-common.h (is_typedef_decl, set_underlying_type): Declare ...
28696         * c-common.c (is_typedef_decl, set_underlying_type): ... new entry
28697         points.
28698
28699 2009-04-02  Richard Guenther  <rguenther@suse.de>
28700
28701         PR tree-optimization/37221
28702         * tree-flow.h (degenerate_phi_result): Declare.
28703         * tree-ssa-dom.c (degenerate_phi_result): Export.
28704         * tree-scalar-evolution.c (analyze_initial_condition): If
28705         the initial condition is defined by a degenerate PHI node
28706         use the degenerate value.
28707
28708 2009-04-01  Eric Botcazou  <ebotcazou@adacore.com>
28709
28710         PR rtl-optimization/39588
28711         * combine.c (merge_outer_ops): Do not set the constant when this
28712         is not necessary.
28713         (simplify_shift_const_1): Do not modify it either in this case.
28714
28715 2009-04-01  Steven Bosscher  <steven@gcc.gnu.org>
28716
28717         * config/ia64/ia64.c (ia64_handle_option): Inform user that Itanium1
28718         tuning is deprecated if -mtune value is set to an Itanium1 variant.
28719
28720 2009-04-01  Janis Johnson  <janis187@us.ibm.com>
28721
28722         PR c/29027
28723         * c-lex.c (interpret_float): Default (no suffix) is double.
28724
28725 2009-04-1  Xinliang David Li  <davidxl@google.com>
28726
28727         * config/i386/i386.c (legitimate_constant_p): Recognize
28728         all one vector constant.
28729
28730 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28731
28732         * config/vax/vax.c: Add #includes to silence warnings.
28733         Change #include order to silence two warnings.
28734
28735 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28736
28737         * config/vax/linux.h (TARGET_DEFAULT): Add the MASK_QMATH flag bit.
28738         (ASM_SPEC): Pass -k to the assembler for PIC code.
28739
28740 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28741
28742         * config.gcc: Add vax-*-linux* to the switch.
28743         * config/vax/linux.h: New file. (TARGET_VERSION,
28744         TARGET_OS_CPP_BUILTINS, TARGET_DEFAULT, CPP_SPEC, LINK_SPEC): Define.
28745
28746 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28747
28748         * config/vax/vax.c (vax_output_int_move, adjacent_operands_p):
28749         Use predicate macros instead of GET_CODE() == foo.
28750         * config/vax/vax.md (movsi_2, movstrictqi, and<mode>3, ashrsi3,
28751         ashlsi3, rotrsi3, <unnamed>): Likewise.
28752
28753 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28754
28755         * config/vax/builtins.md (jbbssiqi, jbbssihi, jbbssisi, jbbcciqi,
28756         jbbccihi, jbbccisi): Remova trailing whitespace.
28757         * config/vax/constraints.md: Likewise.
28758         * config/vax/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): Likewise.
28759         * config/vax/openbsd1.h (OBSD_OLD_GAS): Likewise.
28760         * config/vax/predicates.md: Likewise.
28761         * config/vax/vax.c (print_operand_address, vax_output_int_move,
28762         vax_expand_addsub_di_operands, adjacent_operands_p): Likewise.
28763         * config/vax/vax.h: Likewise.
28764         * config/vax/vax.md (nonlocal_goto): Likewise.
28765
28766 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28767
28768         * config/vax/vax.c (vax_float_literal, vax_output_int_move)
28769         (indirectable_address_p, adjacent_operands_p): Add spaces around
28770         braces.
28771         * config/vax/vax-protos.h (adjacent_operands_p): Likewise.
28772
28773 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28774
28775         * config/vax/vax.c (legitimate_constant_address_p,
28776         legitimate_constant_p, indirectable_address_p, nonindexed_address_p,
28777         index_term_p, reg_plus_index_p, legitimate_address_p,
28778         vax_mode_dependent_address_p): Update comments to match functions
28779         modified by the recent int->bool conversion.
28780
28781 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28782
28783         * config/vax/builtins.md: Update copyright message.
28784         * config/vax/constraints.md: Likewise.
28785         * config/vax/netbsd-elf.h: Likewise.
28786         * config/vax/predicates.md: Likewise.
28787         * config/vax/vax-protos.h: Likewise.
28788         * config/vax/vax.c: Likewise.
28789         * config/vax/vax.h: Likewise.
28790         * config/vax/vax.md: Likewise.
28791         * config/vax/vax.opt: Likewise.
28792
28793 2009-04-01  Jan-Benedict Glaw  <jbglaw@jbglaw-dev.homezone.telefonica.de>
28794
28795         * config/vax/builtins.md (ffssi2, ffssi2_internal,
28796         sync_lock_test_and_set<mode>, sync_lock_release<mode>): Fix indention.
28797         * config/vax/constraints.md (B, R): Likewise.
28798         * config/vax/predicates.md (external_memory_operand,
28799         nonimmediate_addsub_di_operand): Likewise.
28800         * config/vax/vax.c (vax_output_int_add): Likewise.
28801         * config/vax/vax.md (movsi, movsi_2, mov<mode>, call_value,
28802         untyped_call): Likewise.
28803
28804 2009-04-01  Matt Thomas  <matt@3am-software.com>
28805
28806         * config/vax/predicates.md: New file.
28807         (symbolic_operand, local_symbolic_operand, external_symbolic_operand,
28808         external_const_operand, nonsymbolic_operand, external_memory_operand,
28809         indirect_memory_operand, indexed_memory_operand,
28810         illegal_blk_memory_operand, illegal_addsub_di_memory_operand,
28811         nonimmediate_addsub_di_operand, general_addsub_di_operand): New
28812         predicate.
28813         * config/vax/constraints.md: New file.
28814         (Z0, U06,  U08, U16, CN6, S08, S16, I, J, K, L, M, N, O, G, Q, B, R, T):
28815         New constraint.
28816         * config/vax/builtins.md: New file.
28817         (ffssi2, ffssi2_internal, sync_lock_test_and_set<mode>, jbbssiqi,
28818         jbbssihi, jbbssisi, sync_lock_release<mode>, jbbcciqi, jbbccihi,
28819         jbbccisi): Define.
28820         * config/vax/vax.opt (mqmath): Add option.
28821         * config/vax/vax.md (isfx): Extend with DI.
28822         (VAXintQH, VAXintQHSD): Define.
28823         (tst<mode>, cmp<mode>, *bit<mode>, movmemhi1, truncsiqi2, truncsihi2,
28824         mulsidi3, add<mode>3, sub<mode>, mul<mode>3, div<mode>3, and<mode>,
28825         and<mode>_const_int, ior<mode>3, xor<mode>3, neg<mode>2,
28826         one_cmpl<mode>2, ashlsi3, lshrsi3, rotlsi3): Update constraints.
28827         (movdi): Update constraints and use vax_output_int_move().
28828         (movsi, movsi_2, pushlclsymreg, pushextsymreg, movlclsymreg,
28829         movextsymreg, adddi3, adcdi3, subdi3, sbcdi3, pushextsym, movextsym,
28830         pushlclsym, movlclsym, movaddr<mode>, pushaddr<mode>,
28831         nonlocal_goto): New.
28832         (mov<mode>): Extend accepted operand types.
28833         (subdi3_old): Rename from subdi3, change update constraints and use
28834         a new implementation.
28835         * config/vax/vax.h (PCC_BITFIELD_TYPE_MATTERS): Add space.
28836         (FRAME_POINTER_CFA_OFFSET, IRA_COVER_CLASSES, CLASS_MAX_NREGS,
28837         MOVE_RATIO, CLEAR_RATIO): Define.
28838         (REG_CLASS_FROM_LETTER, CONST_OK_FOR_LETTER_P,
28839         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT): Delete.
28840         (PRINT_OPERAND): Redefine using a function instead of inlined code.
28841         * config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
28842         (split_quadword_operands): Make static and really allow variable
28843         splitting.
28844         (print_operand_address): Update for PIC generation.
28845         (print_operand, vax_builtin_setjmp_frame_value, vax_output_int_subtract,
28846         indexable_address_p, fixup_mathdi_operand,
28847         vax_expand_addsub_di_operands, adjacent_operands_p): New.
28848         (vax_float_literal, legitimate_constant_p,
28849         indirectable_constant_address_p, index_term_p,
28850         reg_plus_index_p): Return bool instead of int.
28851         (vax_rtx_costs): Fix cost for CONST_INT, indent and use HOST_WIDE_INT
28852         where needed.
28853         (vax_output_int_move, vax_output_int_add): Extend to allow PIC
28854         generation.
28855         (vax_output_conditional_branch): Indent.
28856         (legitimate_constant_address_p, indirectable_constant_address_p,
28857         indirectable_address_p, nonindexed_address_p, legitimate_address_p,
28858         vax_mode_dependent_address_p): Return bool instead of int, update for
28859         PIC generation.
28860         * config/vax/vax-protos.h (legitimate_constant_address_p,
28861         legitimate_constant_p, legitimate_address_p,
28862         vax_mode_dependent_address_p): Change declaration to bool.
28863         (legitimate_pic_operand_p, adjacent_operands_p, print_operand,
28864         vax_expand_addsub_di_operands, vax_output_int_subtract,
28865         vax_output_movmemsi): Declare.
28866         (split_quadword_operands, vax_float_literal): Delete declaration.
28867         * config/vax/netbsd-elf.h (CC1_SPEC, CC1PLUS_SPEC) Define.
28868         * config/vax/elf.h (NO_EXTERNAL_INDIRECT_ADDRESS,
28869         VAX_CC1_AND_CC1PLUS_SPEC, ASM_PREFERRED_EH_DATA_FORMAT,
28870         ASM_OUTPUT_DWARF_PCREL): Define.
28871         (ASM_SPEC): Change definition to allow PIC generation.
28872
28873 2009-04-01  Steve Ellcey  <sje@cup.hp.com>
28874
28875         * doc/sourcebuild.texi: Update front-end requirements.
28876
28877 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28878
28879         PR target/39226
28880         * config/rs6000/rs6000.md (andsi3_internal5_nomc,
28881         anddi3_internal2_nomc, anddi3_internal3_nomc): Removed.
28882         (booldi3_internal3): Use boolean_or_operator instead of
28883         boolean_operator.
28884
28885 2009-04-01  Joseph Myers  <joseph@codesourcery.com>
28886
28887         PR c/39605
28888         * c-decl.c (grokdeclarator): Pedwarn for file-scope array
28889         declarator whose size is not an integer constant expression but
28890         folds to an integer constant, then treat it as a constant
28891         subsequently.
28892
28893 2009-04-01  Richard Guenther  <rguenther@suse.de>
28894
28895         * fold-const.c (fold_plusminus_mult_expr): Do not fold
28896         i * 4 + 2 to (i * 2 + 1) * 2.
28897
28898 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28899
28900         PR c/37772
28901         * c-parser.c (c_parser_asm_statement): Skip until close paren and
28902         return if c_parser_asm_string_literal returned NULL.
28903
28904 2009-04-01  Nick Clifton  <nickc@redhat.com>
28905
28906         * config/m32c/m32c.h (LIBGCC2_UNITS_PER_WORD): Define if not
28907         already defined.
28908         * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Add m32c-lib2-trapv.c.
28909         * config/m32c/m32c-lib2.c: Remove unused typedefs.  Rename the
28910         other typedefs to avoid conflicts with libgcc2.c.  Define labels
28911         to gain 16-bit bit-manipulation functions from libgcc2.c and then
28912         include it.
28913         * config/m32c/m32c-lib2-trapv.c: New file.  Define labels
28914         to gain 16-bit trapping arithmetic functions from libgcc2.c and
28915         then include it.
28916
28917 2009-04-01  Rafael Avila de Espindola  <espindola@google.com>
28918
28919         * varasm.c (default_function_rodata_section): Declare DOT as
28920         const char*.
28921
28922 2009-04-01  Kai Tietz  <kai.tietz@onevision.com>
28923             Andrey Galkin  <agalkin@hypercom.com>
28924
28925         PR/39492
28926         * config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
28927         Make object_name unique for each process.
28928
28929 2009-04-01  Jakub Jelinek  <jakub@redhat.com>
28930
28931         PR other/39591
28932         * omp-low.c (remove_exit_barrier): Don't optimize if there are any
28933         addressable variables in the parallel that could go out of scope while
28934         running queued tasks.
28935
28936 2009-04-01  Anatoly Sokolov  <aesok@post.ru>
28937
28938         * config/avr/avr.h (avr_case_values_threshold): Remove declaration.
28939         (CASE_VALUES_THRESHOLD): Redefine.
28940         * config/avr/avr.c (avr_override_options): Remove initialization of
28941         avr_case_values_threshold variable.
28942         (avr_case_values_threshold): Remove variable. Add new function.
28943         * config/avr/avr-protos.h (avr_case_values_threshold): Declare.
28944         * config/avr/avr.opt (mno-tablejump): Remove option.
28945         * doc/invoke.texi (AVR Options): Remove -mno-tablejump.
28946
28947 2009-04-01  DJ Delorie  <dj@redhat.com>
28948
28949         * varasm.c (default_function_rodata_section): Don't assume
28950         anything about where the first '.' in the section name is.
28951
28952 2009-04-01  Alan Modra  <amodra@bigpond.net.au>
28953
28954         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Delete redundant
28955         rs6000_emit_stack_tie.
28956
28957 2009-03-31  Ian Lance Taylor  <iant@google.com>
28958
28959         * tree-eh.c (tree_remove_unreachable_handlers): Compare
28960         gimple_code with GIMPLE_RESX, not RESX.
28961
28962 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28963
28964         * c-common.c (c_get_ident): New.
28965         (c_common_nodes_and_builtins): Call it for type names that may be NULL.
28966
28967 2009-04-01  Ben Elliston  <bje@au.ibm.com>
28968
28969         * config/rs6000/sysv4.opt (msdata): Improve option description.
28970
28971 2009-03-31  Steve Ellcey  <sje@cup.hp.com>
28972
28973         * config/ia64/ia64.md (divsf3_internal_lat): Remove.
28974         (divdf3_internal_lat): Remove.
28975         (divxf3_internal_lat): Remove.
28976         (divxf3_internal_thr): Remove.
28977         (divxf): Use divxf3_internal.
28978         * config/ia64/div.md (divsf3_internal_lat): New.
28979         (divdf3_internal_lat): New.
28980         (divxf3_internal): New.
28981
28982 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
28983
28984         PR c/448
28985         * Makefile.in (USE_GCC_STDINT): Define.
28986         (stmp-int-hdrs): Install stdint.h if applicable.
28987         * c-common.c (CHAR16_TYPE): Define in terms of UINT_LEAST16_TYPE
28988         if known.
28989         (CHAR32_TYPE): Define in terms of UINT_LEAST32_TYPE if known.
28990         (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE,
28991         UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
28992         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
28993         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
28994         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
28995         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
28996         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
28997         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
28998         (c_common_nodes_and_builtins): Initialize
28999         underlying_wchar_type_node.  Do not initialize
29000         signed_wchar_type_node or unsigned_wchar_type_node.  Initialize
29001         nodes for new types.
29002         (c_stddef_cpp_builtins): Define macros for new types.
29003         * c-common.h (CTI_SIGNED_WCHAR_TYPE, CTI_UNSIGNED_WCHAR_TYPE):
29004         Remove.
29005         (CTI_UNDERLYING_WCHAR_TYPE, CTI_SIG_ATOMIC_TYPE, CTI_INT8_TYPE,
29006         CTI_INT16_TYPE, CTI_INT32_TYPE, CTI_INT64_TYPE, CTI_UINT8_TYPE,
29007         CTI_UINT16_TYPE, CTI_UINT32_TYPE, CTI_UINT64_TYPE,
29008         CTI_INT_LEAST8_TYPE, CTI_INT_LEAST16_TYPE, CTI_INT_LEAST32_TYPE,
29009         CTI_INT_LEAST64_TYPE, CTI_UINT_LEAST8_TYPE, CTI_UINT_LEAST16_TYPE,
29010         CTI_UINT_LEAST32_TYPE, CTI_UINT_LEAST64_TYPE, CTI_INT_FAST8_TYPE,
29011         CTI_INT_FAST16_TYPE, CTI_INT_FAST32_TYPE, CTI_INT_FAST64_TYPE,
29012         CTI_UINT_FAST8_TYPE, CTI_UINT_FAST16_TYPE, CTI_UINT_FAST32_TYPE,
29013         CTI_UINT_FAST64_TYPE, CTI_INTPTR_TYPE, CTI_UINTPTR_TYPE): Define.
29014         (signed_wchar_type_node, unsigned_wchar_type_node): Remove.
29015         (underlying_wchar_type_node, sig_atomic_type_node, int8_type_node,
29016         int16_type_node, int32_type_node, int64_type_node,
29017         uint8_type_node, uint16_type_node, c_uint32_type_node,
29018         c_uint64_type_node, int_least8_type_node, int_least16_type_node,
29019         int_least32_type_node, int_least64_type_node,
29020         uint_least8_type_node, uint_least16_type_node,
29021         uint_least32_type_node, uint_least64_type_node,
29022         int_fast8_type_node, int_fast16_type_node, int_fast32_type_node,
29023         int_fast64_type_node, uint_fast8_type_node, uint_fast16_type_node,
29024         uint_fast32_type_node, uint_fast64_type_node, intptr_type_node,
29025         uintptr_type_node): Define.
29026         * c-cppbuiltin.c (builtin_define_constants,
29027         builtin_define_type_minmax): New.
29028         (builtin_define_stdint_macros): Define more macros.
29029         (c_cpp_builtins): Define more limit macros.
29030         (type_suffix): New.
29031         (builtin_define_type_max): Define in terms of
29032         builtin_define_type_minmax.  Remove is_long parameter.  All
29033         callers changed.
29034         * config.gcc (use_gcc_stdint): Define.
29035         (tm_file): Add glibc-stdint.h for targets using glibc or uClibc.
29036         Add newlib-stdint.h for generic targets.
29037         * config/glibc-stdint.h, config/newlib-stdint.h,
29038         ginclude/stdint-gcc.h, ginclude/stdint-wrap.h: New.
29039         * config/m32c/m32c.h (UINTPTR_TYPE): Define.
29040         * config/score/score.h (UINTPTR_TYPE): Define.
29041         * config/sol2.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
29042         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
29043         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29044         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29045         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29046         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29047         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29048         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
29049         * config/spu/spu.h (STDINT_LONG32): Define.
29050         * configure.ac (use_gcc_stdint): Substitute.
29051         * configure: Regenerate.
29052         * doc/cpp.texi (__SIG_ATOMIC_TYPE__, __INT8_TYPE__,
29053         __INT16_TYPE__, __INT32_TYPE__, __INT64_TYPE__, __UINT8_TYPE__,
29054         __UINT16_TYPE__, __UINT32_TYPE__, __UINT64_TYPE__,
29055         __INT_LEAST8_TYPE__, __INT_LEAST16_TYPE__, __INT_LEAST32_TYPE__,
29056         __INT_LEAST64_TYPE__, __UINT_LEAST8_TYPE__, __UINT_LEAST16_TYPE__,
29057         __UINT_LEAST32_TYPE_, __UINT_LEAST64_TYPE__, __INT_FAST8_TYPE__,
29058         __INT_FAST16_TYPE__, __INT_FAST32_TYPE__, __INT_FAST64_TYPE__,
29059         __UINT_FAST8_TYPE__, __UINT_FAST16_TYPE__, __UINT_FAST32_TYPE__,
29060         __UINT_FAST64_TYPE__, __INTPTR_TYPE__, __UINTPTR_TYPE__,
29061         __WINT_MAX__, __SIZE_MAX__, __PTRDIFF_MAX__, __UINTMAX_MAX__,
29062         __SIG_ATOMIC_MAX__, __INT8_MAX__, __INT16_MAX__, __INT32_MAX__,
29063         __INT64_MAX__, __UINT8_MAX__, __UINT16_MAX__, __UINT32_MAX__,
29064         __UINT64_MAX__, __INT_LEAST8_MAX__, __INT_LEAST16_MAX__,
29065         __INT_LEAST32_MAX__, __INT_LEAST64_MAX__, __UINT_LEAST8_MAX__,
29066         __UINT_LEAST16_MAX__, __UINT_LEAST32_MAX__, __UINT_LEAST64_MAX__,
29067         __INT_FAST8_MAX__, __INT_FAST16_MAX__, __INT_FAST32_MAX__,
29068         __INT_FAST64_MAX__, __UINT_FAST8_MAX__, __UINT_FAST16_MAX__,
29069         __UINT_FAST32_MAX__, __UINT_FAST64_MAX__, __INTPTR_MAX__,
29070         __UINTPTR_MAX__, __WCHAR_MIN__, __WINT_MIN__, __SIG_ATOMIC_MIN__,
29071         __INT8_C, __INT16_C, __INT32_C, __INT64_C, __UINT8_C, __UINT16_C,
29072         __UINT32_C, __UINT64_C, __INTMAX_C, __UINTMAX_C): Document.
29073         * doc/tm.texi (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE,
29074         INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE,
29075         INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
29076         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
29077         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
29078         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
29079         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
29080         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Document.
29081
29082 2009-03-31  Bernd Schmidt  <bernd.schmidt@analog.com>
29083
29084         * loop-iv.c (suitable_set_for_replacement): Renamed from
29085         simplify_using_assignment; changed to return bool and to accept new
29086         args DEST and SRC.  Return true iff we find a source/destination pair
29087         that can be used to make a replacement, and fill SRC and DEST if so.
29088         Remove arg ALTERED.  Don't deal with altered regs here.  All callers
29089         changed.
29090         (simplify_using_initial_values): Deal with altered regs here and track
29091         more precisely the effect they have on the validity of our expression.
29092
29093         * loop-iv.c (simplify_using_condition): A condition of the form
29094         (EQ REG CONST) can be used to simply make a substitution.
29095         (simplify_using_initial_values): Keep track of conditions we have seen
29096         and keep using them to simplify new expressions, while applying the
29097         same substitutions to them as to the expression.
29098
29099         * simplify-rtx.c (simplify_relational_operation_1): Simplify
29100         (LTU (PLUS a C) C) or (LTU (PLUS a C) a) to (GEU a -C); likewise with
29101         GEU/LTU reversed.
29102
29103         * loop-iv.c (determine_max_iter): New arg OLD_NITER.  All callers
29104         changed.  Use this when trying to improve the upper bound.
29105         Generate the comparison by using simplify_gen_relational.
29106
29107         * loop-iv.c (simple_rhs_p): Allow more kinds of expressions.
29108
29109         * loop-iv.c (replace_single_def_regs, replace_in_expr): New static
29110         functions.
29111         (simplify_using_assignment, simplify_using_initial_values): Call
29112         replace_in_expr to make replacements.  Call replace_single_def_regs
29113         once on the initial version of the expression.
29114
29115 2009-03-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
29116
29117         PR target/27237
29118         * doc/invoke.texi (ARM Options): Update documentation for -mthumb.
29119
29120 2009-03-31  Richard Guenther  <rguenther@suse.de>
29121
29122         PR middle-end/31029
29123         * fold-const.c (fold_binary): Fold X +- Y CMP X to Y CMP 0 for
29124         equality comparisons.  Fold C - X CMP X if C % 2 == 1.
29125
29126 2009-03-31  Richard Guenther  <rguenther@suse.de>
29127
29128         * tree.h (div_if_zero_remainder): Declare.
29129         * fold-const.c (div_if_zero_remainder): Export.
29130         * tree-ssa-forwprop.c
29131         (forward_propagate_addr_into_variable_array_index): Handle
29132         constant array index addition outside of the variable index.
29133
29134 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29135
29136         PR target/39592
29137         * config/i386/i386.md (*floatunssi<mode>2_1, two unnamed
29138         define_splits, floatunssi<mode>2): Require x87 conversions from
29139         DImode to be permitted.
29140
29141 2009-03-31  Joseph Myers  <joseph@codesourcery.com>
29142
29143         PR preprocessor/15638
29144         * c-common.c (c_cpp_error): Handle CPP_DL_FATAL.
29145
29146 2009-03-31  Richard Guenther  <rguenther@suse.de>
29147
29148         PR middle-end/23401
29149         PR middle-end/27810
29150         * tree.h (DECL_GIMPLE_FORMAL_TEMP_P): Remove.
29151         (struct tree_decl_with_vis): Remove gimple_formal_temp member.
29152         * tree-eh.c (lower_eh_constructs_2): Move LHS assignment to
29153         a separate statement.
29154         * gimplify.c (pop_gimplify_context): Remove formal temp handling.
29155         (lookup_tmp_var): Likewise.
29156         (is_gimple_formal_tmp_or_call_rhs): Remove.
29157         (is_gimple_reg_or_call_rhs): Rename to ...
29158         (is_gimple_reg_rhs_or_call): ... this.
29159         (is_gimple_mem_or_call_rhs): Rename to ...
29160         (is_gimple_mem_rhs_or_call): ... this.
29161         (internal_get_tmp_var): Use is_gimple_reg_rhs_or_call.  Set
29162         DECL_GIMPLE_REG_P only if is_formal is true.
29163         (gimplify_compound_lval): Use is_gimple_reg.  Remove workaround
29164         for non-proper post-modify expression gimplification.
29165         (gimplify_self_mod_expr): For post-modify expressions gimplify
29166         the lvalue to a minimal lvalue.
29167         (rhs_predicate_for): Remove formal temp case.
29168         (gimplify_modify_expr_rhs): Likewise.
29169         (gimplify_addr_expr): Use is_gimple_reg.
29170         (gimplify_expr): Remove formal temp cases.
29171         (gimple_regimplify_operands): Likewise.
29172         * tree-ssa-pre.c (get_or_alloc_expr_for): Treat EXC_PTR_EXPR
29173         and FILTER_EXPR like constants.
29174         * gimple.c (walk_gimple_op): Fix val_only initialization, use
29175         is_gimple_reg.
29176         (is_gimple_formal_tmp_rhs): Remove.
29177         (is_gimple_reg_rhs): Remove special casing.
29178         (is_gimple_mem_rhs): Fix.
29179         (is_gimple_reg): Move DECL_GIMPLE_REG_P handling earlier.
29180         (is_gimple_formal_tmp_var): Remove.
29181         (is_gimple_formal_tmp_reg): Likewise.
29182         (is_gimple_min_lval): Allow invariant component ref parts.
29183         * gimple.h (is_gimple_formal_tmp_rhs, is_gimple_formal_tmp_var,
29184         is_gimple_formal_tmp_reg): Remove declarations.
29185         * tree-cfg.c (verify_expr): Verify that variables with address
29186         taken do not have DECL_GIMPLE_REG_P set.
29187         * tree-mudflap.c (mf_build_check_statement_for): Use
29188         force_gimple_operand instead of gimplify_expr.
29189
29190 2009-03-31  Ayal Zaks  <zaks@il.ibm.com>
29191
29192         * modulo-sched.c (sms_schedule_by_order): Pass the actual
29193         schedulable rows to compute_split_row.
29194
29195 2009-03-31  Ben Elliston  <bje@au.ibm.com>
29196
29197         PR target/31635
29198         * config/rs6000/rs6000.c (rs6000_handle_option): Handle
29199         OPT_mvrsave.
29200
29201 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29202
29203         * doc/invoke.texi (RS/6000 and PowerPC Options):Document mtls-markers.
29204         * configure.ac (HAVE_AS_TLS_MARKERS): New gas feature check.
29205         * configure: Regenerate.
29206         * config.in: Regenerate.
29207         * config/rs6000/rs6000.opt (mtls-markers): Add.
29208         * config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Define.
29209         * config/rs6000/rs6000.md (tls_gd_aix, tls_gd_sysv): Add splitter.
29210         (tls_ld_aix, tls_ld_sysv): Likewise.
29211         (tls_gd, tls_gd_call_aix, tls_gd_call_sysv): New insns.
29212         (tls_ld, tls_ld_call_aix, tls_ld_call_sysv): Likewise.
29213
29214 2009-03-31  Alan Modra  <amodra@bigpond.net.au>
29215
29216         * config/spu/spu.c (spu_expand_prologue): Delete redundant code.
29217
29218 2009-03-30  Jan Hubicka  <jh@suse.cz>
29219
29220         * tree-eh.c (make_eh_edges): Set probability 100% to first edge
29221         out of RESX.
29222         (tree_remove_unreachable_handlers): Cleanup EH predecestor
29223         detection and label handling.
29224
29225 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29226
29227         * ira-int.h (ira_allocno): Rename left_conflicts_num to
29228         left_conflicts_size.
29229         (ALLOCNO_LEFT_CONFLICTS_NUM): Rename to
29230         ALLOCNO_LEFT_CONFLICTS_SIZE.
29231
29232         * ira-color.c (allocno_spill_priority, push_allocno_to_stack,
29233         remove_allocno_from_bucket_and_push,
29234         allocno_spill_priority_compare, push_allocnos_to_stack,
29235         setup_allocno_available_regs_num): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29236         instead of ALLOCNO_LEFT_CONFLICTS_NUM.
29237         (setup_allocno_left_conflicts_num): Ditto.  Rename to
29238         setup_allocno_left_conflicts_size.
29239         (put_allocno_into_bucket): Use ALLOCNO_LEFT_CONFLICTS_SIZE
29240         instead of ALLOCNO_LEFT_CONFLICTS_NUM and
29241         setup_allocno_left_conflicts_size instead of
29242         setup_allocno_left_conflicts_num.
29243
29244         * ira-build.c (ira_create_allocno): Use
29245         ALLOCNO_LEFT_CONFLICTS_SIZE instead of
29246         ALLOCNO_LEFT_CONFLICTS_NUM.
29247
29248 2009-03-30  Vladimir Makarov  <vmakarov@redhat.com>
29249
29250         * reload.c (push_reload, find_dummy_reload): Use df_get_live_out
29251         instead of DF_LR_OUT.
29252
29253         * ira-lives.c (process_bb_node_lives): Ditto.
29254
29255         * ira-color.c (ira_loop_edge_freq): Use df_get_live_{out,in}
29256         instead of DF_LR_{OUT,IN}.
29257
29258         * ira-emit.c (generate_edge_moves, add_ranges_and_copies): Ditto.
29259
29260         * ira-build.c (create_bb_allocnos, create_loop_allocnos): Ditto.
29261
29262 2009-03-30  Jan Hubicka  <jh@suse.cz>
29263
29264         * except.c (label_to_region_map): Fix thinko.
29265
29266 2009-03-30  Steve Ellcey  <sje@cup.hp.com>
29267
29268         PR middle-end/38237
29269         * tree.h (tree_find_value): New declaration.
29270         * tree.c (tree_find_value): New function.
29271         * varasm.c (assemble_external): Avoid duplicate entries on lists.
29272
29273 2009-03-30  Jakub Jelinek  <jakub@redhat.com>
29274
29275         PR debug/39563
29276         * c-decl.c (struct c_binding): Add locus field.
29277         (bind): Add locus argument, set locus field from it.
29278         (pop_scope): For b->nested VAR_DECL or FUNCTION_DECL,
29279         add a DECL_EXTERNAL copy of b->decl to current BLOCK_VARS.
29280         (push_file_scope, pushtag, pushdecl, pushdecl_top_level,
29281         implicitly_declare, undeclared_variable, lookup_label,
29282         declare_label, c_make_fname_decl, c_builtin_function,
29283         c_builtin_function_ext_scope, store_parm_decls_newstyle): Adjust
29284         bind callers.
29285
29286 2009-03-30  H.J. Lu  <hongjiu.lu@intel.com>
29287
29288         PR target/38781
29289         * config/i386/i386.c (classify_argument): Check total size of
29290         structure.
29291
29292 2009-03-30  Martin Jambor  <mjambor@suse.cz>
29293
29294         * ipa-prop.h (jump_func_type): Rename IPA_UNKNOWN, IPA_CONST,
29295         IPA_CONST_MEMBER_PTR, and IPA_PASS_THROUGH to IPA_JF_UNKNOWN,
29296         IPA_JF_CONST, IPA_JF_CONST_MEMBER_PTR, and IPA_JF_PASS_THROUGH
29297         respectively.
29298
29299         * tree-dfa.c (get_ref_base_and_extent): Return -1 maxsize if
29300         seen_variable_array_ref while also traversing a union.
29301
29302         * tree-inline.c (optimize_inline_calls): Do not call
29303         cgraph_node_remove_callees.
29304         * cgraphbuild.c (remove_cgraph_callee_edges): New function.
29305         (pass_remove_cgraph_callee_edges): New variable.
29306         * passes.c (init_optimization_passes): Add
29307         pass_remove_cgraph_callee_edges after early inlining and before all
29308         late intraprocedural passes.
29309
29310         * omp-low.c (expand_omp_taskreg): Always set current_function_decl.
29311
29312 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29313
29314         * config/sparc/sparc.md (*nand<V64mode>_vis, *nand<V32mode>_vis):
29315         Fix typos in names.
29316
29317 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29318
29319         * combine.c (simplify_comparison): Use have_insn_for.
29320         * dojump.c (do_jump): Likewise.
29321
29322 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29323
29324         * config/sparc/sparc.c (sparc_compare_emitted): Remove.
29325         (gen_compare_reg, emit_v9_brxx_insn): Handle MODE_CC
29326         sparc_compare_op0 like sparc_compare_emitted used to be handled.
29327         (sparc_expand_compare_and_swap_12): Set sparc_compare_op0
29328         instead of sparc_compare_emitted.
29329         * config/sparc/sparc.h (sparc_compare_emitted): Remove.
29330         * config/sparc/sparc.md (stack_protect_test): Set sparc_compare_op0
29331         instead of sparc_compare_emitted.
29332
29333 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29334
29335         * bb-reorder.c (partition_hot_cold_basic_blocks): Do not
29336         enter/exit cfglayout mode.
29337         (pass_partition_block): Require it.
29338         * combine.c (find_single_use, reg_dead_at_p): Use CFG.
29339         (combine_instructions): Track basic blocks instead of labels.
29340         (update_cfg_for_uncondjump): New.
29341         (try_combine): Use it.  Update jumps after rescanning.
29342         (pass_combine): Require PROP_cfglayout.
29343         * passes.c (pass_outof_cfg_layout_mode): Move after regmove.
29344
29345 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29346
29347         * cfglayout.c (pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode):
29348         Provide/destroy PROP_cfglayout respectively.
29349         * gcse.c (pass_jump_bypass, pass_gcse): Require it.
29350         * tree-pass.h (PROP_cfglayout): New.
29351
29352 2009-03-30  Paolo Bonzini  <bonzini@gnu.org>
29353
29354         * fold-const.c (const_binop, fold_convert_const_real_from_fixed,
29355         fold_convert_const_fixed_from_fixed,
29356         fold_convert_const_fixed_from_int,
29357         fold_convert_const_fixed_from_real, fold_negate_const): Do not
29358         set TREE_CONSTANT_OVERFLOW.
29359         * tree.def: Remove mention of TREE_CONSTANT_OVERFLOW.
29360         * tree.h (TREE_CONSTANT_OVERFLOW): Delete.
29361
29362 2009-03-30  Ira Rosen  <irar@il.ibm.com>
29363
29364         * tree-vect-loop-manip.c: New file.
29365         * tree-vectorizer.c: Update documentation and included files.
29366         (vect_loop_location): Make extern.
29367         (rename_use_op): Move to tree-vect-loop-manip.c
29368         (rename_variables_in_bb, rename_variables_in_loop,
29369         slpeel_update_phis_for_duplicate_loop,
29370         slpeel_update_phi_nodes_for_guard1,
29371         slpeel_update_phi_nodes_for_guard2, slpeel_make_loop_iterate_ntimes,
29372         slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_add_loop_guard,
29373         slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling,
29374         set_prologue_iterations, slpeel_tree_peel_loop_to_edge,
29375         find_loop_location): Likewise.
29376         (new_stmt_vec_info): Move to tree-vect-stmts.c.
29377         (init_stmt_vec_info_vec, free_stmt_vec_info_vec, free_stmt_vec_info,
29378         get_vectype_for_scalar_type, vect_is_simple_use,
29379         supportable_widening_operation, supportable_narrowing_operation):
29380         Likewise.
29381         (bb_in_loop_p): Move to tree-vect-loop.c.
29382         (new_loop_vec_info, destroy_loop_vec_info,
29383         reduction_code_for_scalar_code, report_vect_op,
29384         vect_is_simple_reduction, vect_is_simple_iv_evolution): Likewise.
29385         (vect_can_force_dr_alignment_p): Move to tree-vect-data-refs.c.
29386         (vect_supportable_dr_alignment): Likewise.
29387         * tree-vectorizer.h (tree-data-ref.h): Include.
29388         (vect_loop_location): Declare.
29389         Reorganize function declarations according to the new file structure.
29390         * tree-vect-loop.c: New file.
29391         * tree-vect-analyze.c: Remove. Move functions to tree-vect-data-refs.c,
29392         tree-vect-stmts.c, tree-vect-slp.c, tree-vect-loop.c.
29393         * tree-vect-data-refs.c: New file.
29394         * tree-vect-patterns.c (timevar.h): Don't include.
29395         * tree-vect-stmts.c: New file.
29396         * tree-vect-transform.c: Remove. Move functions to tree-vect-stmts.c,
29397         tree-vect-slp.c, tree-vect-loop.c.
29398         * Makefile.in (OBJS-common): Remove tree-vect-analyze.o and
29399         tree-vect-transform.o. Add tree-vect-data-refs.o, tree-vect-stmts.o,
29400         tree-vect-loop.o, tree-vect-loop-manip.o, tree-vect-slp.o.
29401         (tree-vect-analyze.o): Remove.
29402         (tree-vect-transform.o): Likewise.
29403         (tree-vect-data-refs.o): Add rule.
29404         (tree-vect-stmts.o, tree-vect-loop.o, tree-vect-loop-manip.o,
29405         tree-vect-slp.o): Likewise.
29406         (tree-vect-patterns.o): Remove redundant dependencies.
29407         (tree-vectorizer.o): Likewise.
29408         * tree-vect-slp.c: New file.
29409
29410 2009-03-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
29411
29412         * optc-gen.awk: Warn if an option flag has multiple different
29413         help strings.
29414
29415 2009-03-30  Sebastian Pop  <sebastian.pop@amd.com>
29416
29417         * doc/invoke.texi (-floop-interchange, -floop-strip-mine,
29418         -floop-block): Document dependences on PPL, CLooG and Graphite.
29419
29420 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29421
29422         PR rtl-optimization/323
29423         * c-common.c (c_fully_fold, convert_and_check,
29424         c_common_truthvalue_conversion): Handle EXCESS_PRECISION_EXPR.
29425         (c_fully_fold_internal): Disallow EXCESS_PRECISION_EXPR.
29426         * c-common.def (EXCESS_PRECISION_EXPR): New.
29427         * c-cppbuiltin.c (builtin_define_float_constants): Define
29428         constants with enough digits for long double.
29429         * c-lex.c (interpret_float): Interpret constant with excess
29430         precision where appropriate.
29431         * c-opts.c (c_common_post_options): Set
29432         flag_excess_precision_cmdline.  Give an error for
29433         -fexcess-precision=standard for C++ for processors where the
29434         option is significant.
29435         * c-parser.c (c_parser_conditional_expression): Handle excess
29436         precision in condition.
29437         * c-typeck.c (convert_arguments): Handle arguments with excess
29438         precision.
29439         (build_unary_op): Move excess precision outside operation.
29440         (build_conditional_expr): Likewise.
29441         (build_compound_expr): Likewise.
29442         (build_c_cast): Do cast on operand of EXCESS_PRECISION_EXPR.
29443         (build_modify_expr): Handle excess precision in RHS.
29444         (convert_for_assignment): Handle excess precision in converted
29445         value.
29446         (digest_init, output_init_element, process_init_element): Handle
29447         excess precision in initializer.
29448         (c_finish_return): Handle excess precision in return value.
29449         (build_binary_op): Handle excess precision in operands and add
29450         excess precision as needed for operation.
29451         * common.opt (-fexcess-precision=): New option.
29452         * config/i386/i386.h (X87_ENABLE_ARITH, X87_ENABLE_FLOAT): New.
29453         * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
29454         For standard excess precision, output explicit conversion to and
29455         truncation from XFmode.
29456         (*float<SSEMODEI24:mode><X87MODEF:mode>2_1,
29457         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp,
29458         *float<SSEMODEI24:mode><X87MODEF:mode>2_i387, two unnamed
29459         define_splits, floatdi<X87MODEF:mode>2_i387_with_xmm, two unnamed
29460         define_splits, *floatunssi<mode>2_1, two unnamed define_splits,
29461         floatunssi<mode>2, add<mode>3, sub<mode>3, mul<mode>3, divdf3,
29462         divsf3, *fop_<mode>_comm_i387, *fop_<mode>_1_i387,
29463         *fop_<MODEF:mode>_2_i387, *fop_<MODEF:mode>_3_i387,
29464         *fop_df_4_i387, *fop_df_5_i387, *fop_df_6_i387, two unnamed
29465         define_splits, sqrt<mode>2): Disable where appropriate for
29466         standard excess precision.
29467         * convert.c (convert_to_real): Do not shorten arithmetic to type
29468         for which excess precision would be used.
29469         * defaults.h (TARGET_FLT_EVAL_METHOD_NON_DEFAULT): Define.
29470         * doc/invoke.texi (-fexcess-precision=): Document option.
29471         (-mfpmath=): Correct index entry.
29472         * flags.h (enum excess_precision, flag_excess_precision_cmdline,
29473         flag_excess_precision): New.
29474         * langhooks.c (lhd_post_options): Set
29475         flag_excess_precision_cmdline.
29476         * opts.c (common_handle_option): Handle -fexcess-precision=.
29477         * toplev.c (flag_excess_precision_cmdline, flag_excess_precision,
29478         init_excess_precision): New.
29479         (lang_dependent_init_target): Call init_excess_precision.
29480         * tree.c (excess_precision_type): New.
29481         * tree.h (excess_precision_type): Declare.
29482
29483 2009-03-30  Joseph Myers  <joseph@codesourcery.com>
29484
29485         PR c/35235
29486         * c-typeck.c (build_component_ref): Do not copy qualifiers from
29487         non-lvalue to component.
29488
29489 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29490
29491         PR preprocessor/34695
29492         * Makefile.in (c-opts.o): Depend on c-tree.h.
29493         * c-common.c: Move down include of diagnostic.h.
29494         (done_lexing, c_cpp_error): New.
29495         * c-common.h (done_lexing): Declare.
29496         * c-decl.c (c_write_global_declarations): Don't check cpp_errors
29497         (parse_in).
29498         * c-opts.c: Include c-tree.h.
29499         (c_common_init_options): Set preprocessor error callback.
29500         (c_common_handle_option): Do not set preprocessor
29501         inhibit_warnings, warnings_are_errors, warn_system_headers,
29502         pedantic_errors or inhibit_warnings flags.
29503         (c_common_post_options): Do not check cpp_errors (parse_in).
29504         (c_common_finish): Do not output dependencies if there were
29505         errors.  Do not check return value of cpp_finish.
29506         * c-ppoutput.c (pp_file_change): Set input_location.
29507         * c-tree.h (c_cpp_error): Declare.
29508         * diagnostic.c (diagnostic_set_info_translated): Also initialize
29509         override_column.
29510         (diagnostic_build_prefix): Check override_column.
29511         * diagnostic.h (diagnostic_info): Add override_column field.
29512         (diagnostic_override_column): Define.
29513
29514 2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
29515
29516         * c-common.c (c_expand_expr, c_staticp): Remove.
29517         * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
29518         * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
29519         COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
29520         * c-gimplify.c (gimplify_compound_literal_expr,
29521         optimize_compound_literals_in_ctor): Remove.
29522         (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
29523         * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
29524         * c-semantics.c (emit_local_var): Remove.
29525
29526         * langhooks-def.h (lhd_expand_expr): Remove.
29527         * langhooks.c (lhd_expand_expr): Remove.
29528         * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
29529
29530         * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
29531         handling from c-semantics.c; don't call into langhook.
29532         (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
29533         * gimplify.c (gimplify_compound_literal_expr,
29534         optimize_compound_literals_in_ctor): Move from c-gimplify.c.
29535         (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
29536         (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
29537         as was done in c-gimplify.c.
29538         * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
29539         * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
29540         Move from c-common.h.
29541         * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
29542
29543         * tree.c (staticp): Do not call langhook.
29544         * langhooks.c (lhd_staticp): Delete.
29545         * langhooks-def.h (lhd_staticp): Delete prototype.
29546         (LANG_HOOKS_STATICP): Delete.
29547         (LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
29548
29549         * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
29550         instead of DECL_STMTs.
29551
29552 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
29553
29554         PR c/456
29555         PR c/5675
29556         PR c/19976
29557         PR c/29116
29558         PR c/31871
29559         PR c/35198
29560         * builtins.c (fold_builtin_sincos): Build COMPOUND_EXPR in
29561         void_type_node.
29562         (fold_call_expr): Return a NOP_EXPR from folding rather than the
29563         contained expression.
29564         * c-common.c (c_fully_fold, c_fully_fold_internal, c_save_expr): New.
29565         (c_common_truthvalue_conversion): Use c_save_expr.  Do not fold
29566         conditional expressions for C.
29567         (decl_constant_value_for_optimization): Move from
29568         decl_constant_value_for_broken_optimization in c-typeck.c.  Check
29569         whether optimizing and that the expression is a VAR_DECL not of
29570         array type instead of doing such checks in the caller.  Do not
29571         check pedantic.  Call gcc_unreachable for C++.
29572         * c-common.def (C_MAYBE_CONST_EXPR): New.
29573         * c-common.h (c_fully_fold, c_save_expr,
29574         decl_constant_value_for_optimization): New prototypes.
29575         (C_MAYBE_CONST_EXPR_PRE, C_MAYBE_CONST_EXPR_EXPR,
29576         C_MAYBE_CONST_EXPR_INT_OPERANDS, C_MAYBE_CONST_EXPR_NON_CONST,
29577         EXPR_INT_CONST_OPERANDS): Define.
29578         * c-convert.c (convert): Strip nops from expression.
29579         * c-decl.c (groktypename): Take extra parameters expr and
29580         expr_const_operands.  Update call to grokdeclarator.
29581         (start_decl): Update call to grokdeclarator.  Add statement for
29582         expressions used in type of decl.
29583         (grokparm): Update call to grokdeclarator.
29584         (push_parm_decl): Update call to grokdeclarator.
29585         (build_compound_literal): Add parameter non_const and build a
29586         C_MAYBE_COSNT_EXPR if applicable.
29587         (grokdeclarator): Take extra parameters expr and
29588         expr_const_operands.  Track expressions used in declaration
29589         specifiers and declarators.  Fold array sizes and track whether
29590         they are constant expressions and whether they are integer
29591         constant expressions.
29592         (parser_xref_tag): Set expr and expr_const_operands fields in
29593         return value.
29594         (grokfield): Update call to grokdeclarator.
29595         (start_function): Update call to grokdeclarator.
29596         (build_null_declspecs): Set expr and expr_const_operands fields in
29597         return value.
29598         (declspecs_add_type): Handle expressions in typeof specifiers.
29599         * c-parser.c (c_parser_declspecs): Set expr and
29600         expr_const_operands fields for declaration specifiers.
29601         (c_parser_enum_specifier): Likewise.
29602         (c_parser_struct_or_union_specifier): Likewise.
29603         (c_parser_typeof_specifier): Likewise.  Update call to
29604         groktypename.  Fold expression as needed.  Return expressions with
29605         type instead of adding statements.
29606         (c_parser_attributes): Update calls to c_parser_expr_list.
29607         (c_parser_statement_after_labels): Fold expression before passing
29608         to objc_build_throw_stmt.
29609         (c_parser_condition): Fold expression.
29610         (c_parser_asm_operands): Fold expression.
29611         (c_parser_conditional_expression): Use c_save_expr.  Update call
29612         to build_conditional_expr.
29613         (c_parser_alignof_expression): Update call to groktypename.
29614         (c_parser_postfix_expression): Preserve C_MAYBE_CONST_EXPR as
29615         original_code.  Fold expression argument of va_arg.  Create
29616         C_MAYBE_CONST_EXPR to preserve side effects of expressions in type
29617         argument to va_arg.  Update calls to groktypename.  Fold array
29618         index for offsetof.  Verify that first argument to
29619         __builtin_choose_expr has integer type.
29620         (c_parser_postfix_expression_after_paren_type): Update calls to
29621         groktypename and build_compound_literal.  Handle expressions with
29622         side effects in type name.
29623         (c_parser_postfix_expression_after_primary): Update call to
29624         c_parser_expr_list.  Set original_code for calls to
29625         __builtin_constant_p.
29626         (c_parser_expr_list): Take extra parameter fold_p.  Fold
29627         expressions if requested.
29628         (c_parser_objc_type_name): Update call to groktypename.
29629         (c_parser_objc_synchronized_statement): Fold expression.
29630         (c_parser_objc_receiver): Fold expression.
29631         (c_parser_objc_keywordexpr): Update call to c_parser_expr_list.
29632         (c_parser_omp_clause_num_threads, c_parser_omp_clause_schedule,
29633         c_parser_omp_atomic, c_parser_omp_for_loop): Fold expressions.
29634         * c-tree.h (CONSTRUCTOR_NON_CONST): Define.
29635         (struct c_typespec): Add elements expr and expr_const_operands.
29636         (struct c_declspecs): Add elements expr and expr_const_operands.
29637         (groktypename, build_conditional_expr, build_compound_literal):
29638         Update prototypes.
29639         (in_late_binary_op): Declare.
29640         * c-typeck.c (note_integer_operands): New function.
29641         (in_late_binary_op): New variable.
29642         (decl_constant_value_for_broken_optimization): Move to c-common.c
29643         and rename to decl_constant_value_for_optimization.
29644         (default_function_array_conversion): Do not strip nops.
29645         (default_conversion): Do not call
29646         decl_constant_value_for_broken_optimization.
29647         (build_array_ref): Do not fold result.
29648         (c_expr_sizeof_expr): Fold operand.  Use C_MAYBE_CONST_EXPR for
29649         result when operand is a VLA.
29650         (c_expr_sizeof_type): Update call to groktypename.  Handle
29651         expressions included in type name.  Use C_MAYBE_CONST_EXPR for
29652         result when operand names a VLA type.
29653         (build_function_call): Update call to build_compound_literal.
29654         Only fold result for calls to __builtin_* functions.  Strip
29655         NOP_EXPR from INTEGER_CST returned from such functions.  Fold
29656         the function designator.
29657         (convert_arguments): Fold arguments.  Update call to
29658         convert_for_assignment.
29659         (build_unary_op): Handle increment and decrement of
29660         C_MAYBE_CONST_EXPR.  Move lvalue checks for increment and
29661         decrement earlier.  Fold operand of increment and decrement.
29662         Handle address of C_MAYBE_CONST_EXPR.  Only fold expression being
29663         built for integer operand.  Wrap returns that are INTEGER_CSTs
29664         without being integer constant expressions or that have integer
29665         constant operands without being INTEGER_CSTs.
29666         (lvalue_p): Handle C_MAYBE_CONST_EXPR.
29667         (build_conditional_expr): Add operand ifexp_bcp.  Track whether
29668         result is an integer constant expression or can be used in
29669         unevaluated parts of one and avoid folding and wrap as
29670         appropriate.  Fold operands before possibly doing -Wsign-compare
29671         warnings.
29672         (build_compound_expr): Wrap result for C99 if operands can be used
29673         in integer constant expressions.
29674         (build_c_cast): Update call to digest_init.  Do not ignore
29675         overflow from casting floating-point constants to integers.  Wrap
29676         results that could be confused with integer constant expressions,
29677         null pointer constants or floating-point constants.
29678         (c_cast_expr): Update call to groktypename.  Handle expressions
29679         included in type name.
29680         (build_modify_expr): Handle modifying a C_MAYBE_CONST_EXPR.  Fold
29681         lhs inside possible SAVE_EXPR.  Fold RHS before assignment.
29682         Update calls to convert_for_assignment.
29683         (convert_for_assignment): Take new parameter
29684         null_pointer_constant.  Do not strip nops or call
29685         decl_constant_value_for_broken_optimization.  Set
29686         in_late_binary_op for conversions to boolean.
29687         (store_init_value): Update call to digest_init.
29688         (digest_init): Take new parameter null_pointer_constant.  Do not
29689         call decl_constant_value_for_broken_optimization.  pedwarn for
29690         initializers not constant expressions.  Update calls to
29691         convert_for_assignment.
29692         (constructor_nonconst): New.
29693         (struct constructor_stack): Add nonconst element.
29694         (really_start_incremental_init, push_init_level, pop_init_level):
29695         Handle constructor_nonconst and nonconst element.
29696         (set_init_index): Call constant_expression_warning for array
29697         designators.
29698         (output_init_element): Fold value.  Set constructor_nonconst as
29699         applicable.  pedwarn for initializers not constant expressions.
29700         Update call to digest_init.  Call constant_expression_warning
29701         where constant initializers are required.
29702         (process_init_element): Use c_save_expr.
29703         (c_finish_goto_ptr): Fold expression.
29704         (c_finish_return): Fold return value.  Update call to
29705         convert_for_assignment.
29706         (c_start_case): Fold switch expression.
29707         (c_process_expr_stmt): Fold expression.
29708         (c_finish_stmt_expr): Create C_MAYBE_CONST_EXPR as needed to
29709         ensure statement expression is not evaluated in constant expression.
29710         (build_binary_op): Track whether results are integer constant
29711         expressions or may occur in such, disable folding and wrap results
29712         as applicable.  Fold operands for -Wsign-compare warnings unless
29713         in_late_binary_op.
29714         (c_objc_common_truthvalue_conversion): Handle results folded to
29715         integer constants that are not integer constant expressions.
29716         * doc/extend.texi: Document when typeof operands are evaluated,
29717         that condition of __builtin_choose_expr is an integer constant
29718         expression, and more about use of __builtin_constant_p in
29719         initializers.
29720
29721 2009-03-29  Richard Guenther  <rguenther@suse.de>
29722
29723         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Properly
29724         propagate addresses of array references.
29725
29726 2009-03-29  Steven Bosscher  <steven@gcc.gnu.org>
29727
29728         * regmove.c (perhaps_ends_bb_p): Remove.
29729         (optimize_reg_copy_1): Don't call perhaps_ends_bb_p.  Get basic block
29730         from INSN and check that the main loop stays within that basic block.
29731         (optimize_reg_copy_1, optimize_reg_copy_3, fixup_match_2): Likewise.
29732         (regmove_forward_pass): Split out from regmove_optimize.  Use
29733         FOR_EACH_BB and FOR_BB_INSNS instead of traversing the insns stream.
29734         (regmove_backward_pass): Split out from regmove_optimize.  Use
29735         FOR_EACH_BB_REVERSE and FOR_BB_INSNS_REVERS_SAFE.
29736         (regmove_optimize): Simplify.
29737
29738 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29739
29740         PR target/39545
29741         * config/i386/i386.c (classify_argument): Ignore flexible array
29742         member in struct and warn ABI change.
29743
29744 2009-03-29  H.J. Lu  <hongjiu.lu@intel.com>
29745
29746         * config/i386/i386-protos.h (ix86_agi_dependent): New.
29747
29748         * config/i386/i386.c (ix86_agi_dependent): Rewrite.
29749         (ix86_adjust_cost): Updated.
29750
29751 2009-03-29  Jan Hubicka  <jh@suse.cz>
29752
29753         PR middle-end/28850
29754         * tree-pass.h (pass_cleanup_eh): New function.
29755         (remove_unreachable_regions): Break code handling RTL
29756         to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
29757         that can not be reached by runtime.
29758         (can_be_reached_by_runtime): New function.
29759         (label_to_region_map): New function.
29760         (num_eh_regions): New function.
29761         (rtl_remove_unreachable_regions): New function.
29762         (convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
29763         (remove_eh_region): New function.
29764         * except.h: Include sbitmap and vecprim.
29765         (remove_eh_region, remove_unreachable_regions, label_to_region_map,
29766         num_eh_regions): Declare.
29767         * passes.c (init_optimization_passes): Schedule cleanup_eh.
29768         * Makefile.in (EXCEPT_H): New; replace all uses of except.h by it.
29769         * tree-eh.c (tree_remove_unreachable_handlers): New function.
29770         (tree_empty_eh_handler_p): New function.
29771         (cleanup_empty_eh): New function.
29772         (cleanup_eh): New function.
29773         (pass_cleanup_eh): New function.
29774
29775 2009-03-29  Jan Hubicka  <jh@suse.cz>
29776
29777         * except.c (verify_eh_tree): Fix handling of fun!=cfun; be ready
29778         for removed regions.
29779
29780 2009-03-29  Jan Hubicka  <jh@suse.cz>
29781
29782         * except.c (dump_eh_tree): Dump all datastructures.
29783
29784 2009-03-29  Jan Hubicka  <jh@suse.cz>
29785
29786         * except.c (duplicate_eh_regions_0): Handle AKA bitmap.
29787         (duplicate_eh_regions_1): Likewise.
29788         (duplicate_eh_regions): Likewise; cleanup code gorwing the region
29789         vector; call EH verification.
29790         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
29791         Be ready for region being removed.
29792
29793 2009-03-29  Jan Hubicka  <jh@suse.cz>
29794
29795         * bitmap.c (bitmap_last_set_bit): New function.
29796         * bitmap.h (bitmap_last_set_bit): Declare.
29797
29798 2009-03-29  David Ayers  <ayers@fsfe.org>
29799
29800         PR objc/27377
29801         * c-typeck.c (build_conditional_expr): Emit ObjC warnings
29802         by calling objc_compare_types and surpress warnings about
29803         incompatible C pointers that are compatible ObjC pointers.
29804
29805 2009-03-29  Adam Nemet  <anemet@caviumnetworks.com>
29806
29807         * cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
29808         call initialize_inline_failed.
29809         (initialize_inline_failed): Move it from here ...
29810         * cgraph.c (initialize_inline_failed): ... to here.
29811         (cgraph_create_edge): Call initialize_inline_failed rather than
29812         setting inline_failed directly.
29813
29814 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29815
29816         PR target/32542
29817         * sysv4.opt (msdata): Improve comment.
29818         * linux64.h (ASM_SPEC32): Do not pass -memb when -msdata is given.
29819         * sysv4.h (SVR4_ASM_SPEC): Likewise.
29820
29821 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29822
29823         PR target/30451
29824         * config/rs6000/rs6000.md (*movti_ppc64): Correct the order of
29825         load and store attributes.
29826
29827 2009-03-29  Ben Elliston  <bje@au.ibm.com>
29828
29829         * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_HUGE_VALQ.
29830         (ix86_init_builtins): Add built-in function __builtin_huge_valq.
29831         (ix86_expand_builtin): Handle IX86_BUILTIN_HUGE_VALQ.
29832         * doc/extend.texi (X86 Built-in Functions): Add index entries for
29833         __builtin_infq and __builtin_huge_valq.
29834
29835 2009-03-28  Anatoly Sokolov  <aesok@post.ru>
29836
29837         * config/avr/avr.c (avr_mcu_t): Add atmega8c1, atmega16c1 and
29838         atmega8m1 devices.
29839         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
29840         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.)
29841
29842 2009-03-28  Xinliang David Li  <davidxl@google.com>
29843
29844         * tree-ssa-ccp.c (ccp_finalize): Add dbg_count support.
29845         (do_dbg_cnt): New function.
29846
29847 2009-03-28  Jan Hubicka  <jh@suse.cz>
29848
29849         Merge from pretty-ipa:
29850
29851         2009-03-27  Jan Hubicka  <jh@suse.cz>
29852
29853         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29854         * tree-pass.h (function_called_by_processed_nodes_p): Declare.
29855         * passes.c (function_called_by_processed_nodes_p): New.
29856         * ipa-pure-const.c (check_call): Fix handling of operands.
29857         (analyze_function): Dump debug output for skipped bodies.
29858         (local_pure_const): Use function_called_by_processed_nodes_p.
29859         * dwarf2out.c (reference_to_unused): Use output.
29860         * passes.c (do_per_function_toporder): Likewise.
29861
29862         2008-11-12  Jan Hubicka  <jh@suse.cz>
29863
29864         * tree-pass.h (pass_fixup_cfg, pass_local_pure_const): Declare.
29865         * ipa-pure-const.c (funct_state_d): Add can throw field; make
29866         state_set_in_source enum
29867         (check_decl): Ignore memory tags; do not set fake looping flags;
29868         dump diagnostics.
29869         (check_operand, check_tree, check_rhs_var, check_lhs_var,
29870         get_asm_expr_operands, scan_function_op, scan_function_stmt): Remove.
29871         (check_call, analyze_function): Rewrite.
29872         (check_stmt): New.
29873         (add_new_function): Update call of analyze_function.
29874         (generate_summary): Add call of analyze_function.
29875         (propagate): Propagate can_throw; handle state_set_in_source correctly.
29876         (local_pure_const): New function.
29877         (pass_local_pure_const): New pass.
29878         * ipa-inline.c (inline_transform): Set after_inlining.
29879         * tree-eh.c (stmt_can_throw_external): New.
29880         * tree-optimize.c (execute_fixup_cfg): Do not set after_inlining;
29881         work with aliasing built.
29882         * tree-flow.h (stmt_can_throw_external): New.
29883         * passes.c (init_optimization_passes): Schedule fixup_cfg pass early;
29884         and local pure/const pass in early and late optimization queue.
29885
29886 2009-03-28  Martin Jambor  <mjambor@suse.cz>
29887
29888         * fold-const.c (get_pointer_modulus_and_residue): New parameter
29889         allow_func_align.
29890         (fold_binary): Allow function decl aligment consideration is the
29891         second argument is integer constant one.
29892         * tree-ssa-forwprop.c (simplify_bitwise_and): New function.
29893         (tree_ssa_forward_propagate_single_use_vars): Handle assing statements
29894         with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
29895
29896 2009-03-28  Jan Hubicka  <jh@suse.cz>
29897
29898         * dwarf2out.c (dwarf2out_begin_prologue): Use crtl->nothrow
29899         * tree-eh.c (stmt_could_throw_p): Remove check for WEAK decls.
29900         * function.h (rtl_data): Add nothrow flag.
29901         * except.c (set_nothrow_function_flags): Use crtl->nothrow;
29902         set DECL_NOTHROW for AVAILABLE functions.
29903
29904 2009-03-28  Jakub Jelinek  <jakub@redhat.com>
29905
29906         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
29907         following vector keyword has expansion starting with pixel or bool
29908         keyword, expand vector to __vector and pixel or bool to __pixel or
29909         __bool.
29910
29911         PR c++/39554
29912         * opts.c (warning_disallowed_functions, warn_disallowed_functions,
29913         warn_if_disallowed_function_p): Removed.
29914         (common_handle_option): Don't handle OPT_Wdisallowed_function_list_.
29915         * c-parser.c (c_parser_postfix_expression_after_primary): Don't call
29916         warning_if_disallowed_function_p.
29917         * flags.h (warn_if_disallowed_function_p,
29918         warn_disallowed_functions): Removed.
29919         * common.opt (Wdisallowed-function-list=): Removed.
29920         * doc/invoke.texi (-Wdisallowed-function-list=): Removed.
29921
29922 2009-03-28  Richard Guenther  <rguenther@suse.de>
29923
29924         PR tree-optimization/38723
29925         * tree-ssa-pre.c (compute_avail): Add all default definitions to
29926         the entry block.
29927
29928 2009-03-28  Jan Hubicka  <jh@suse.cz>
29929
29930         * tree-ssa-structalias.c (ipa_pta_execute): Fix bogus node->analyzed
29931         test introduced by my previous patch.
29932
29933 2009-03-28  Richard Guenther  <rguenther@suse.de>
29934
29935         * tree-ssa-copy.c (copy_prop_visit_phi_node): Do not leave
29936         the PHIs value undefined.
29937
29938 2009-03-28  Jan Hubicka  <jh@suse.cz>
29939
29940         * tree-pass.h (pass_fixup_cfg): New pass.
29941         * ipa-inline.c (inline_transform): Set
29942         always_inline_functions_inlined/after_inlining.
29943         * tree-optimize.c (execute_fixup_cfg): Do not set them here.
29944         (pass_fixup_cfg): New pass.
29945         * passes.c (init_optimization_passes): Add fixup_cfg.
29946
29947 2009-03-28  Richard Guenther  <rguenther@suse.de>
29948
29949         PR tree-optimization/38458
29950         * tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
29951         argument use the arguments copy-of value.
29952
29953 2009-03-28  Richard Guenther  <rguenther@suse.de>
29954
29955         PR tree-optimization/38180
29956         * tree-ssa-ccp.c (get_default_value): Simplify.
29957         (likely_value): Likewise.
29958         (surely_varying_stmt_p): Properly handle VOP case.
29959         (ccp_initialize): Likewise.
29960         (ccp_fold): Handle propagating through *&.
29961         (fold_const_aggregate_ref): Also handle decls.
29962
29963 2009-03-28  Jan Hubicka  <jh@suse.cz>
29964
29965         * cgraph.c (dump_cgraph_node): Add replace output flag by process.
29966         * cgraph.h (cgraph_node): Likewise.
29967         * cgraphunit.c (cgraph_process_new_functions): Set process flag.
29968         (cgraph_reset_node): Use process flag.
29969         (cgraph_mark_functions_to_output): Likewise.
29970         (cgraph_expand_function): Likewise.
29971         (cgraph_expand_all_functions): Likewise.
29972         (cgraph_output_in_order): Likewise.
29973         * dwarf2out.c (reference_to_unused): Likewise.
29974         * passes.c do_per_function_toporder): Likewise.
29975
29976 2009-03-28  Jan Hubicka  <jh@suse.cz>
29977
29978         Bring from lto-branch:
29979
29980         2008-09-03  Doug Kwan  <dougkwan@google.com>
29981
29982         * cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
29983         enums instead of reason strings.
29984         * cgraph.c (cgraph_create_edge): Same.
29985         (cgraph_inline_failed_string): New function.
29986         * cgraph.h (cgraph_inline_failed_t): New enum type.
29987         (cgraph_inline_failed_string): New prototype.
29988         (struct cgraph_edge): Change type of INLINED_FAILED from constant
29989         char pointer to cgraph_inline_failed_t.
29990         (cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
29991         (cgraph_default_inline_p): Ditto.
29992         * cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
29993         to cgraph_inline_failed_t pointer.
29994         * cif-code.def: New file.
29995         * ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
29996         reason string.
29997         (cgraph_check_inline_limits): Change type of REASON to pointer to
29998         cgraph_inline_failed_t.  Replace reason strings with enums.
29999         (cgraph_default_inline_p): Ditto.
30000         (cgraph_recursive_inlining_p): Ditto.
30001         (update_caller_keys): Change type of FAILED_REASON to
30002         cgraph_inline_failed_t.
30003         (cgraph_set_inline_failed): Change type of REASON to pointer to
30004         cgraph_inline_failed_t.  Call cgraph_inline_failed_string to
30005         convert enums to strings for text output.
30006         (cgraph_decide_inlining_of_small_function): Change FAILED_REASON
30007         to be of type cgraph_inline_failed_t.  Replace reason strings with
30008         enums.  Call cgraph_inline_failed_string to covert enums
30009         to strings for text output.
30010         (cgraph_decide_inlining): Replace reason strings with enums.
30011         (cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
30012         to cgraph_inline_failed_t type.  Call cgraph_inline_failed_string
30013         for text output.
30014         * tree-inline.c (expand_call_inline): Change type of REASON
30015         to cgraph_inline_failed_t.  Replace reason strings with enums.
30016         Call cgraph_inline_failed_string for text output.
30017         * Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
30018         (cgraph.o): Ditto.
30019
30020 2009-03-28  Jan Hubicka  <jh@suse.cz>
30021
30022         * cgraph.c (cgraph_node, cgraph_remove_node, dump_cgraph_node,
30023         cgraph_clone_node): Remove master clone handling.
30024         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30025         * cgraph.h (master_clone): Remove.
30026         (cgraph_is_master_clone, cgraph_master_clone): Remove.
30027         * ipa-type-escape.c (type_escape_execute): Remove use of master clone.
30028         (tree-ssa-structalias.c (ipa_pta_execute): Likewise.
30029
30030 2009-03-28  Jan Hubicka  <jh@suse.cz>
30031
30032         * cgraph.c (cgraph_function_body_availability): Functions declared
30033         inline are always safe to assume that it is not going to be replaced.
30034
30035 2009-03-28  Richard Guenther  <rguenther@suse.de>
30036
30037         PR tree-optimization/38513
30038         * tree-ssa-pre.c (eliminate): Remove redundant stores.
30039         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
30040         EXC_PTR_EXPR and FILTER_EXPR.
30041         (get_ref_from_reference_ops): Likewise.
30042
30043 2009-03-28  Richard Guenther  <rguenther@suse.de>
30044
30045         PR tree-optimization/38968
30046         * tree-vect-analyze.c (vect_compute_data_ref_alignment):
30047         Use FLOOR_MOD_EXPR to compute misalignment.
30048
30049 2009-03-28  Richard Guenther  <rguenther@suse.de>
30050
30051         PR tree-optimization/37795
30052         * tree.h (combine_comparisons): Declare.
30053         * fold-const.c (combine_comparisons): Export.
30054         * tree-ssa-ifcombine.c (ifcombine_ifandif): Optimize two successive
30055         comparisons.
30056         (ifcombine_iforif): Use combine_comparisons.
30057
30058 2009-03-28  Jan Hubicka  <jh@suse.cz>
30059
30060         * tree-eh.c (inlinable_call_p): New function.
30061         (make_eh_edges): Use it.
30062         (verify_eh_edges): Use it.
30063         (stmt_can_throw_external, stmt_can_throw_internal): Use it.
30064         * except.c (reachable_next_level): Add inlinable_function argument
30065         (sjlj_find_directly_reachable_regions): Update.
30066         (add_reachable_handler): Do not set saw_any_handlers.
30067         (reachable_next_level): Handle MUST_NOT_THROW more curefully.
30068         (foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
30069         Add new inlinable call parameter.
30070         (can_throw_internal, can_throw_external): Update.
30071         * except.h (can_throw_internal_1, can_throw_external_1,
30072         foreach_reachable_handler): Update declaration.
30073
30074 2009-03-28  Joseph Myers  <joseph@codesourcery.com>
30075
30076         * config/arm/t-arm-coff, config/h8300/coff.h,
30077         config/i386/i386-aout.h, config/i386/i386-coff.h,
30078         config/libgloss.h, config/m68k/coff.h, config/m68k/m68k-aout.h,
30079         config/pdp11/2bsd.h, config/rs6000/aix41.h,
30080         config/rs6000/aix41.opt, config/rs6000/t-newas, config/sh/coff.h,
30081         fix-header.c, fixproto, gen-protos.c, protoize.c, scan-decls.c,
30082         scan-types.sh, scan.c, scan.h, sort-protos, sys-protos.h,
30083         sys-types.h: Remove.
30084         * Makefile.in: Remove protoize and fixproto support and references
30085         in comments.
30086         (SYSCALLS.c.X-warn, TARGET_GETGROUPS_T, STMP_FIXPROTO,
30087         PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, FIXPROTO_DEFINES):
30088         Remove.
30089         (ALL_HOST_OBJS): Remove $(PROTO_OBJS).
30090         (MOSTLYCLEANFILES): Remove protoize$(exeext) and
30091         unprotoize$(exeext).
30092         (rest.encap): Don't depend on $(STMP_FIXPROTO)
30093         (.PHONY): Don't depend on proto.
30094         (libgcc-support): Don't depend on $(STMP_FIXPROTO).
30095         (proto, PROTO_OBJS, protoize$(exeext), unprotoize$(exeext),
30096         protoize.o, unprotoize.o, SYSCALLS.c.X, test-protoize-simple,
30097         deduced.h, GEN_PROTOS_OBJS, build/gen-protos$(build_exeext),
30098         build/gen-protos.o, build/scan.o, xsys-protos.h,
30099         build/fix-header$(build_exeext), build/fix-header.o,
30100         build/scan-decls.o, fixhdr.ready, stmp-fixproto,
30101         stmp-install-fixproto): Remove.
30102         (mostlyclean): Don't remove xsys-protos.hT, SYSCALLS.c.X,
30103         SYSCALLS.c or fixproto files.
30104         (install-common): Don't install protoize.
30105         (install-headers-tar, install-headers-cpio, install-headers-cp):
30106         Don't depend on $(STMP_FIXPROTO).
30107         (install-mkheaders): Don't depend on $(STMP_FIXPROTO).  Don't
30108         install fixproto files or write out fixproto settings.
30109         (uninstall): Don't uninstall protoize.
30110         * config.gcc (use_fixproto): Remove.
30111         (arm-*-coff*, armel-*-coff*, h8300-*-*, i[34567]86-*-aout*,
30112         i[34567]86-*-coff*, m68k-*-aout*, m68k-*-coff*, pdp11-*-bsd,
30113         rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*, sh-*-*): Remove.
30114         * config/m32r/t-linux (STMP_FIXPROTO): Remove.
30115         * config/m68k/m68k.c: Remove M68K_TARGET_COFF-conditional code.
30116         * config/mips/t-iris (FIXPROTO_DEFINES): Remove.
30117         * config/pa/t-pa-hpux (FIXPROTO_DEFINES): Remove.
30118         * config/pdp11/pdp11.c: Remove TWO_BSD-conditional code.
30119         * config/t-svr4 (FIXPROTO_DEFINES): Remove.
30120         * config/t-vxworks (STMP_FIXPROTO): Remove.
30121         * configure.ac (AC_TYPE_GETGROUPS, TARGET_GETGROUPS_T,
30122         STMP_FIXPROTO): Remove.
30123         * config.in, configure: Regenerate.
30124         * crtstuff.c (gid_t, uid_t): Don't undefine.
30125         * doc/install.texi: Change m68k-coff to m68k-elf in example.
30126         (arm-*-coff, arm-*-aout: Remove target entries.
30127         (*-ibm-aix*): Mention removal of support for AIX 4.2 and older.
30128         Remove mention of AIX 4.1.
30129         (m68k-*-*): Remove mention of m68k-*-aout and m68k-*-coff*.
30130         * doc/invoke.texi (Running Protoize): Remove.
30131         * doc/trouble.texi (Actual Bugs): Remove mention of fixproto.
30132         (Protoize Caveats): Remove.
30133         * tsystem.h: Update comments on headers assumed to exist.
30134
30135 2009-03-27  Vladimir Makarov  <vmakarov@redhat.com>
30136
30137         * genautomata.c: Add a new year to the copyright.  Add a new
30138         reference.
30139         (struct insn_reserv_decl): Add comments for member bypass_list.
30140         (find_bypass): Remove.
30141         (insert_bypass): New.
30142         (process_decls): Use insert_bypass.
30143         (output_internal_insn_latency_func): Output all bypasses with the
30144         same input insn in one switch case.
30145
30146         * rtl.def (define_bypass): Describe bypass choice.
30147         * doc/md.texi (define_bypass): Ditto.
30148
30149 2009-03-27  Richard Guenther  <rguenther@suse.de>
30150
30151         * gimplify.c (mark_addressable): Export.
30152         * tree-flow.h (mark_addressable): Declare.
30153         * tree-ssa-loop-manip.c (create_iv): Mark the base addressable.
30154         * tree-ssa.c (verify_phi_args): Verify that address taken
30155         variables have TREE_ADDRESSABLE set.
30156
30157 2009-03-27  Richard Guenther  <rguenther@suse.de>
30158
30159         * fold-const.c (build_fold_addr_expr_with_type_1): Rename back to ...
30160         (build_fold_addr_expr_with_type): ... this.  Remove in_fold handling.
30161         Do not mark decls TREE_ADDRESSABLE.
30162         (build_fold_addr_expr): Adjust.
30163         (fold_addr_expr): Remove.
30164         (fold_unary): Use build_fold_addr_expr.
30165         (fold_comparison): Likewise.
30166         (split_address_to_core_and_offset): Likewise.
30167         * coverage.c (tree_coverage_counter_addr): Mark the array decl
30168         TREE_ADDRESSABLE.
30169         * gimplify.c (mark_addressable): Do not exclude RESULT_DECLs.
30170         (gimplify_modify_expr_to_memcpy): Mark source and destination
30171         addressable.
30172         * omp-low.c (create_omp_child_function): Mark the object decl
30173         TREE_ADDRESSABLE.
30174         (lower_rec_input_clauses): Mark the var we take the address of
30175         TREE_ADDRESSABLE.
30176         (lower_omp_taskreg): Mark the sender decl TREE_ADDRESSABLE.
30177
30178 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30179
30180         PR middle-end/39315
30181         * cfgexpand.c (expand_one_stack_var_at): Change alignment
30182         limit to MAX_SUPPORTED_STACK_ALIGNMENT.
30183
30184 2009-03-27  Richard Guenther  <rguenther@suse.de>
30185
30186         PR tree-optimization/39120
30187         * tree-ssa-structalias.c (handle_rhs_call): Fill out return
30188         constraints.
30189         (handle_lhs_call): Process return constraints.  Add escape
30190         constraints if necessary.
30191         (handle_const_call): Fill out return constraints.  Make nested
30192         case more precise.  Avoid consttmp if possible.
30193         (handle_pure_call): Fill out return constraints.  Avoid
30194         callused if possible.
30195         (find_func_aliases): Simplify call handling.
30196
30197 2009-03-27  Richard Guenther  <rguenther@suse.de>
30198
30199         PR tree-optimization/39120
30200         * tree-ssa-structalias.c (do_sd_constraint): Do not use CALLUSED
30201         as a representative.
30202         (solve_graph): Do propagate CALLUSED.
30203         (handle_pure_call): Use a scalar constraint from CALLUSED for
30204         the return value.
30205         (find_what_p_points_to): CALLUSED shall not appear in poins-to
30206         solutions.
30207
30208 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30209
30210         PR c/39323
30211         * c-common.c (handle_aligned_attribute): Properly check alignment
30212         overflow.  Use (1U << i) instead of (1 << i).
30213
30214         * emit-rtl.c (get_mem_align_offset): Use "unsigned int" for align.
30215
30216         * expr.h (get_mem_align_offset): Updated.
30217
30218         * tree.h (tree_decl_common): Change align to "unsigned int" and
30219         move it before pointer_alias_set.
30220
30221 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30222             Jakub Jelinek  <jakub@redhat.com>
30223
30224         PR target/38034
30225         * config/ia64/sync.md (cmpxchg_rel_<mode>): Replace input
30226         gr_register_operand with gr_reg_or_0_operand.
30227         (cmpxchg_rel_di): Likewise.
30228         (sync_lock_test_and_set<mode>): Likewise.
30229
30230 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30231
30232         * jump.c (rtx_renumbered_equal_p): Use subreg_get_info.
30233         (true_regnum): Likewise.
30234
30235         * rtlanal.c (subreg_info): Moved to ...
30236         * rtl.h (subreg_info): Here.  New.
30237         (subreg_get_info): New.
30238
30239         * rtlanal.c (subreg_get_info): Make it extern.
30240
30241 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30242
30243         PR target/39472
30244         * config/i386/i386.c (ix86_abi): New.
30245         (override_options): Handle -mabi=.
30246         (ix86_function_arg_regno_p): Replace DEFAULT_ABI with ix86_abi.
30247         (ix86_call_abi_override): Likewise.
30248         (init_cumulative_args): Likewise.
30249         (function_arg_advance): Likewise.
30250         (function_arg_64): Likewise.
30251         (function_arg): Likewise.
30252         (ix86_pass_by_reference): Likewise.
30253         (ix86_function_value_regno_p): Likewise.
30254         (ix86_build_builtin_va_list_abi): Likewise.
30255         (setup_incoming_varargs_64): Likewise.
30256         (is_va_list_char_pointer): Likewise.
30257         (ix86_init_machine_status): Likewise.
30258         (ix86_reg_parm_stack_space): Use enum calling_abi on call_abi.
30259         (ix86_function_type_abi): Return enum calling_abi.  Rewrite
30260         for 64bit.  Replace DEFAULT_ABI with ix86_abi.
30261         (ix86_function_abi): Make it static and return enum calling_abi.
30262         (ix86_cfun_abi): Return enum calling_abi.  Replace DEFAULT_ABI
30263         with ix86_abi.
30264         (ix86_fn_abi_va_list): Updated.
30265
30266         * config/i386/i386.h (ix86_abi): New.
30267         (STACK_BOUNDARY): Replace DEFAULT_ABI with ix86_abi.
30268         (CONDITIONAL_REGISTER_USAGE): Likewise.
30269         (CUMULATIVE_ARGS): Change call_abi type to enum calling_abi.
30270         (machine_function): Likewise.
30271
30272         * config/i386/i386.md (untyped_call): Replace DEFAULT_ABI
30273         with ix86_abi.
30274         * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Likewise.
30275         (STACK_BOUNDARY): Likewise.
30276         * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Likewise.
30277
30278         * config/i386/i386.opt (mabi=): New.
30279
30280         * config/i386/i386-protos.h (ix86_cfun_abi): Changed to
30281         return enum calling_abi.
30282         (ix86_function_type_abi): Likewise.
30283         (ix86_function_abi): Removed.
30284
30285         * doc/invoke.texi: Document -mabi= option for x86.
30286
30287 2009-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
30288
30289         * builtins.c (real_dconstp): Delete.
30290         (fold_builtin_logarithm): Remove inaccurate log(e) special case.
30291
30292 2009-03-27  Dodji Seketeli  <dodji@redhat.com>
30293             Jakub Jelinek  <jakub@redhat.com>
30294
30295         PR debug/37959
30296         * dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
30297         (gen_subprogram_die): When a function is explicit, generate the
30298         DW_AT_explicit attribute.
30299         * langhooks.h (struct lang_hooks_for_decls): Add
30300         function_decl_explicit_p langhook.
30301         * langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
30302         (LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
30303
30304 2009-03-27  Jakub Jelinek  <jakub@redhat.com>
30305
30306         * builtins.c (fold_builtin_memory_op): Optimize memmove
30307         into memcpy if we can prove source and destination don't overlap.
30308
30309         * tree-inline.c: Include gt-tree-inline.h.
30310         (clone_fn_id_num): New variable.
30311         (clone_function_name): New function.
30312         (tree_function_versioning): Use it.
30313         * Makefile.in (GTFILES): Add tree-inline.c.
30314
30315 2009-03-27  Mark Mitchell  <mark@codesourcery.com>
30316
30317         * BASE-VER: Change to 4.5.0.
30318
30319 2009-03-27  Xinliang David Li  <davidxl@google.com>
30320
30321         PR tree-optimization/39557
30322         * tree-ssa.c (warn_uninitialized_vars): free postdom info.
30323
30324 2009-03-27  Xinliang David Li  <davidxl@google.com>
30325
30326         PR tree-optimization/39548
30327         * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
30328         candidate check.
30329
30330 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30331
30332         * c-common.c (pointer_int_sum): Use %wd on return from
30333         tree_low_cst.
30334
30335 2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
30336
30337         * c-common.c (pointer_int_sum): Use HOST_WIDE_INT_PRINT_DEC
30338         on return from tree_low_cst.
30339
30340 2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>
30341
30342         PR c++/36799
30343         * ginclude/stdarg.h (va_copy): Define also for
30344         __GXX_EXPERIMENTAL_CXX0X__.
30345
30346 2009-03-27  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
30347
30348         PR c++/35652
30349         * builtins.h (c_strlen): Do not warn here.
30350         * c-typeck.c (build_binary_op): Adjust calls to pointer_int_sum.
30351         * c-common.c (pointer_int_sum): Take an explicit location.
30352         Warn about offsets out of bounds.
30353         * c-common.h (pointer_int_sum): Adjust declaration.
30354
30355 2009-03-26  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30356
30357         * doc/invoke.texi (i386 and x86-64 Windows Options): Fix texinfo
30358         markup glitch.
30359
30360 2009-03-26  Jakub Jelinek  <jakub@redhat.com>
30361
30362         PR c++/39554
30363         * opts.c (warn_if_disallowed_function_p): Don't assume
30364         get_callee_fndecl must return non-NULL.
30365
30366 2009-03-26  Vladimir Makarov  <vmakarov@redhat.com>
30367
30368         PR rtl-optimization/39522
30369         * reload1.c (reload_as_needed): Invalidate reg_last_reload_reg too
30370         when reg_reloaded_valid is set.
30371
30372 2009-03-26  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30373
30374         * config/spu/divv2df3.c: New file.
30375         * config/spu/t-spu-elf (LIB2FUNCS_STATIC_EXTRA): Add it.
30376         (DPBIT_FUNCS): Filter out _div_df.
30377
30378 2009-03-26  Bernd Schmidt  <bernd.schmidt@analog.com>
30379
30380         * config/bfin/bfin.c (bfin_optimize_loop): If the LSETUP goes before
30381         a jump insn, count that jump in the distance to the loop start.
30382
30383 2009-03-25  Kaz Kojima  <kkojima@gcc.gnu.org>
30384
30385         PR target/39523
30386         * config/sh/sh.c (calc_live_regs): Fix condition for global
30387         registers except PIC_OFFSET_TABLE_REGNUM.
30388
30389 2009-03-25  Kai Tietz  <kai.tietz@onevision.com>
30390
30391         PR/39518
30392         * doc/invoke.texi (-mconsole): New.
30393         (-mcygwin): New.
30394         (-mno-cygwin): New.
30395         (-mdll): New.
30396         (-mnop-fun-dllimport): New.
30397         (-mthread): New.
30398         (-mwin32): New.
30399         (-mwindows): New.
30400         (sub section "i386 and x86-64 Windows Options"): New.
30401
30402 2009-03-25  Ralf Corsépius  <ralf.corsepius@rtems.org>
30403
30404         * config/arm/rtems-elf.h: Remove LINK_GCC_C_SEQUENCE_SPEC.
30405         * config/rs6000/t-rtems: Remove MULTILIB_EXTRA_OPTS.
30406
30407 2009-03-25  Richard Guenther  <rguenther@suse.de>
30408
30409         PR middle-end/39497
30410         * Makefile.in (dfp.o-warn): Use -fno-strict-aliasing instead
30411         of -Wno-error.
30412
30413 2009-03-25  Andrey Belevantsev  <abel@ispras.ru>
30414
30415         * config/ia64/ia64.c (ia64_set_sched_flags): Zero spec_info->mask when
30416         neither of haifa/selective schedulers are working.
30417
30418 2009-03-25  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30419
30420         * doc/invoke.texi (Debugging Options): Fix description of
30421         -fno-merge-debug-strings.
30422
30423 2009-03-24  Hans-Peter Nilsson  <hp@axis.com>
30424
30425         * config/cris/libgcc.ver: New version-script.
30426         * config/cris/t-linux (SHLIB_MAPFILES): Use it.
30427
30428         * configure.ac <GAS features, nop mnemonic>: Add pattern
30429         crisv32-*-* for "nop".
30430         <GAS features, Thread-local storage>: Add item for CRIS and CRIS v32.
30431         * configure: Regenerate.
30432
30433 2009-03-24  Ira Rosen  <irar@il.ibm.com>
30434
30435         PR tree-optimization/39529
30436         * tree-vect-transform.c (vect_create_data_ref_ptr): Call
30437         mark_sym_for_renaming for the tag copied to the new vector
30438         pointer.
30439
30440 2009-03-24  Arthur Loiret  <aloiret@debian.org>
30441
30442         * config.host (alpha*-*-linux*): Use driver-alpha.o and alpha/x-alpha.
30443         * config/alpha/linux.h (host_detect_local_cpu): Declare, add to
30444         EXTRA_SPEC_FUNCTIONS.
30445         (MCPU_MTUNE_NATIVE_SPECS, DRIVER_SELF_SPECS): New macros.
30446         * config/alpha/driver-alpha.c, config/alpha/x-alpha: New.
30447         * doc/invoke.texi (DEC Alpha Options): Document 'native' value for
30448         -march and -mtune options.
30449
30450 2009-03-24  Ralf Corsépius  <ralf.corsepius@rtems.org>
30451
30452         * config/m68k/t-rtems: Add m5329 multilib.
30453
30454 2009-03-24  Dodji Seketeli  <dodji@redhat.com>
30455             Jakub Jelinek  <jakub@redhat.com>
30456
30457         PR debug/39524
30458         * dwarf2out.c (gen_variable_die): Avoid adding duplicate declaration
30459         nodes.
30460
30461 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30462
30463         PR c/39495
30464         * c-parser.c (c_parser_omp_for_loop): Call c_parser_binary_expression
30465         instead of c_parser_expression_conv, if original_code isn't one of the
30466         4 allowed comparison codes, fail.
30467
30468 2009-03-23  Richard Guenther  <rguenther@suse.de>
30469
30470         * cgraph.h (struct cgraph_node): Reorder fields for 64-bit hosts.
30471         * tree.h (struct tree_type): Likewise.
30472         * reload.h (struct insn_chain): Likewise.
30473         * dwarf2out.c (struct dw_loc_descr_struct): Likewise.
30474         * function.h (struct function): Likewise.
30475         * tree-ssa-structalias.c (struct equiv_class_label): Likewise.
30476
30477 2009-03-23  Jakub Jelinek  <jakub@redhat.com>
30478
30479         PR tree-optimization/39516
30480         * lambda-code.c (perfect_nestify): Fix type of the uboundvar variable.
30481
30482 2009-03-23  Bingfeng Mei  <bmei@broadcom.com>
30483
30484         * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
30485         should be set true if BITS_PER_WORD of target is bigger than 32
30486
30487 2009-03-22  Hans-Peter Nilsson  <hp@axis.com>
30488
30489         * config/cris/linux.h (CRIS_LINK_SUBTARGET_SPEC):
30490         Translate -B-options to -rpath-link.  Correct existing
30491         rpath-link and conditionalize on !nostdlib.
30492
30493 2009-03-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30494
30495         * doc/extend.texi (Function Attributes, Variable Attributes):
30496         Fix typos.
30497         * doc/invoke.texi (Debugging Options, Optimize Options)
30498         (i386 and x86-64 Options, MCore Options): Likewise.
30499
30500 2009-03-20  Jakub Jelinek  <jakub@redhat.com>
30501
30502         PR debug/37890
30503         * dwarf2out.c (gen_namespace_die): Add context_die argument and use
30504         it for block local namespace aliases.
30505         (gen_decl_die): Pass context_die to gen_namespace_die.
30506
30507 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30508
30509         PR c/39495
30510         * c-omp.c (c_finish_omp_for): Allow NE_EXPR with TREE_TYPE (decl)'s
30511         minimum or maximum value.
30512
30513 2009-03-19  Alexandre Oliva  <aoliva@redhat.com>
30514
30515         * reginfo.c (globalize_reg): Recompute derived reg sets.
30516
30517 2009-03-19  Ozkan Sezer  <sezeroz@gmail.com>
30518
30519         PR target/39063
30520         * libgcc2.c (mprotect): Do not use signed arguments for
30521         VirtualProtect, use DWORD arguments.  Also fix the 'may
30522         be used uninitialized' warning for the np variable.
30523
30524 2009-03-19  Jakub Jelinek  <jakub@redhat.com>
30525
30526         PR target/39496
30527         * config/i386/i386.c (ix86_function_regparm): Don't optimize local
30528         functions using regparm calling conventions when not optimizing.
30529         (ix86_function_sseregparm): Similarly for sseregparm calling
30530         conventions.
30531
30532 2009-03-19  Li Feng  <nemokingdom@gmail.com>
30533
30534         PR middle-end/39500
30535         * tree-data-ref.c (analyze_subscript_affine_affine): There is no
30536         dependence if the first conflict is after niter iterations.
30537
30538 2009-03-19  Hans-Peter Nilsson  <hp@axis.com>
30539
30540         PR middle-end/38609
30541         * config/cris/cris.h (FRAME_POINTER_REQUIRED): Force for all
30542         functions with dynamic stack-pointer adjustments.
30543
30544 2009-03-19  Ben Elliston  <bje@au.ibm.com>
30545
30546         * doc/invoke.texi (RS/6000 and PowerPC Options): Fix -msdata-data
30547         option; change to -msdata=data.
30548
30549 2009-03-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30550
30551         * c.opt: Unify help texts for -Wdeprecated, -Wsystem-headers,
30552         and -fopenmp.
30553
30554 2009-03-18  Eric Botcazou  <ebotcazou@adacore.com>
30555
30556         PR target/35180
30557         * config/sparc/sparc.md (do_builtin_setjmp_setup): Prettify asm output.
30558
30559 2009-03-18  Sandra Loosemore  <sandra@codesourcery.com>
30560
30561         * doc/invoke.texi (Code Gen Options): Expand discussion of
30562         -fno-common.
30563
30564 2009-03-18  Jakub Jelinek  <jakub@redhat.com>
30565
30566         * dse.c (struct group_info): Reorder fields for 64-bit hosts.
30567         * matrix-reorg.c (struct matrix_info): Likewise.
30568         * tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
30569         * rtl.h (struct mem_attrs): Likewise.
30570         * df.h (struct df): Likewise.
30571         * tree-data-ref.h (struct data_dependence_relation): Likewise.
30572         * ira-int.h (struct ira_allocno): Likewise.
30573         * df-scan.c (struct df_collection_rec): Likewise.
30574         * ira.c (struct equivalence): Likewise.
30575         * function.c (struct temp_slot): Likewise.
30576         * cfgloop.h (struct loop): Likewise.
30577
30578         PR debug/39485
30579         * function.c (use_register_for_decl): When not optimizing, disregard
30580         register keyword for variables with types containing methods.
30581
30582 2009-03-18  Sebastian Pop  <sebastian.pop@amd.com>
30583
30584         PR middle-end/39447
30585         * graphite.c (exclude_component_ref): Renamed contains_component_ref_p.
30586         (is_simple_operand): Call contains_component_ref_p before calling data
30587         reference analysis that would fail on COMPONENT_REFs.
30588
30589         * tree-vrp.c (search_for_addr_array): Fix formatting.
30590
30591 2009-03-18  Richard Guenther  <rguenther@suse.de>
30592
30593         * tree-vect-transform.c (vect_loop_versioning): Fold the
30594         generated comparisons.
30595         * tree-vectorizer.c (set_prologue_iterations): Likewise.
30596         (slpeel_tree_peel_loop_to_edge): Likewise.
30597
30598 2009-03-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
30599
30600         PR middle-end/37805
30601         * opts.c (print_specific_help): In addition to `undocumented',
30602         accept `separate' and `joined' flags if passed alone.  Describe
30603         output by the first matched one of those.
30604         (common_handle_option): Skip over empty strings.
30605         * gcc.c (display_help): Fix help string for `--help='.
30606         * doc/invoke.texi (Option Summary, Overall Options): With
30607         `--help=', classes and qualifiers can both be repeated, but
30608         only the latter can be negated.  One should not pass only
30609         negated qualifiers.  Fix markup and examples.
30610
30611         Revert
30612         2008-10-14  Jakub Jelinek  <jakub@redhat.com>
30613         PR middle-end/37805
30614         * opts.c (common_handle_option): Don't ICE on -fhelp=joined
30615         and -fhelp=separate.
30616
30617 2009-03-17  Jing Yu  <jingyu@google.com>
30618
30619         PR middle-end/39378
30620         * function.h (struct rtl_data): Move is_thunk from here...
30621         (struct function): ...to here.
30622         * cp/method.c (use_thunk): Change is_thunk from crtl to cfun.
30623         * varasm.c (assemble_start_function): Change is_thunk from crtl to
30624         cfun.
30625         * config/alpha/alpha.c (alpha_sa_mask): Change is_thunk from crtl to
30626         cfun.
30627         (alpha_does_function_need_gp, alpha_start_function): Likewise.
30628         (alpha_output_function_end_prologue): Likewise.
30629         (alpha_end_function, alpha_output_mi_thunk_osf): Likewise.
30630         * config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likewise.
30631         (rs6000_output_function_epilogue): Likewise.
30632         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
30633
30634 2009-03-17  Uros Bizjak  <ubizjak@gmail.com>
30635
30636         PR target/39482
30637         * config/i386/i386.md (*truncdfsf_mixed): Avoid combining registers
30638         from different units in a single alternative.
30639         (*truncdfsf_i387): Ditto.
30640         (*truncxfsf2_mixed): Ditto.
30641         (*truncxfdf2_mixed): Ditto.
30642
30643 2009-03-17  Jakub Jelinek  <jakub@redhat.com>
30644
30645         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Allow
30646         non-NAMESPACE_DECL IMPORTED_DECL_ASSOCIATED_DECL.
30647
30648         PR debug/39474
30649         * tree-ssa-live.c (remove_unused_locals): Don't remove local
30650         unused non-artificial variables when not optimizing.
30651
30652         PR debug/39471
30653         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): Emit
30654         DW_TAG_imported_module even if decl is IMPORTED_DECL with
30655         NAMESPACE_DECL in its DECL_INITIAL.
30656
30657         PR middle-end/39443
30658         * optabs.c (set_user_assembler_libfunc): New function.
30659         * expr.h (set_user_assembler_libfunc): New prototype.
30660         * c-common.c: Include libfuncs.h.
30661         (set_builtin_user_assembler_name): Call set_user_assembler_libfunc
30662         for memcmp, memset, memcpy, memmove and abort.
30663         * Makefile.in (c-common.o): Depend on libfuncs.h.
30664
30665         PR debug/39412
30666         * dwarf2out.c (gen_inlined_enumeration_type_die,
30667         gen_inlined_structure_type_die, gen_inlined_union_type_die,
30668         gen_tagged_type_instantiation_die): Removed.
30669         (gen_decl_die): For TYPE_DECL_IS_STUB with non-NULL decl_origin
30670         do nothing.
30671
30672 2009-03-17  Janis Johnson  <janis187@us.ibm.com>
30673
30674         PR testsuite/38526
30675         * Makefile.in (site.exp): Rename TEST_GCC_EXEC_PREFIX and comment
30676         its use.
30677         (check-%): Don't set GCC_EXEC_PREFIX when invoking runtest.
30678         (check-parallel-%): Ditto.
30679         (check-consistency): Ditto.
30680
30681 2009-03-17  Kai Tietz  <kai.tietz@onevision.com>
30682
30683         * ipa-struct-reorg.c (create_general_new_stmt): Initialize
30684         local variable rhs by NULL_TREE.
30685
30686 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30687
30688         PR target/39477
30689         * doc/extend.texi: Correct register behavior for regparm on Intel 386.
30690
30691 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30692
30693         PR target/39476
30694         * config/i386/i386.c (ix86_function_regparm): Rewrite for 64bit.
30695
30696 2009-03-17  H.J. Lu  <hongjiu.lu@intel.com>
30697
30698         PR target/39473
30699         * config/i386/i386.c (ix86_expand_call): Check extra clobbers
30700         for ms->sysv ABI calls only in 64bit mode.
30701
30702         * config/i386/i386.md (untyped_call): Support 32bit.
30703
30704 2009-03-16  H.J. Lu  <hongjiu.lu@intel.com>
30705
30706         * doc/extend.texi: Replace x86_65 with x86_64.
30707
30708 2009-03-16  Jakub Jelinek  <jakub@redhat.com>
30709
30710         PR tree-optimization/39455
30711         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Fix types
30712         mismatches for POINTER_TYPE_P (type).
30713         (number_of_iterations_le): Likewise.
30714
30715 2009-03-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
30716
30717         * config/picochip/picochip.c: Removed profiling support.
30718         * config/picochip/picochip.md: Removed profiling instruction.
30719         * config/picochip/picochip.h: Removed profiling builtin.
30720
30721 2009-03-16  Joseph Myers  <joseph@codesourcery.com>
30722
30723         * doc/install.texi (--with-host-libstdcxx): Document.
30724
30725 2009-03-14  Anatoly Sokolov  <aesok@post.ru>
30726
30727         PR target/34299
30728         * config/avr/avr.c (avr_handle_fndecl_attribute): Move code for
30729         generate a warning if the function name does not begin with
30730         "__vector" and the function has either the 'signal' or 'interrupt'
30731         attribute, from here to ...
30732         (avr_declare_function_name): ...here. New function.
30733         * config/avr/avr.h (ASM_DECLARE_FUNCTION_NAME): Redefine.
30734         * config/avr/avr-protos.h (avr_declare_function_name): Declare.
30735
30736 2009-03-14  Jakub Jelinek  <jakub@redhat.com>
30737
30738         PR bootstrap/39454
30739         * cse.c (fold_rtx): Don't modify original const_arg1 when
30740         canonicalizing SHIFT_COUNT_TRUNCATED shift count, do it on a
30741         separate variable instead.
30742         * rtlanal.c (nonzero_bits1) <case ASHIFTRT>: Don't assume anything
30743         from out of range shift counts.
30744         (num_sign_bit_copies1) <case ASHIFTRT, case ASHIFT>: Similarly.
30745
30746 2009-03-13  Catherine Moore  <clm@codesourcery.com>
30747
30748         * config/i386/x-mingw32 (host-mingw32.o): Replace
30749         diagnostic.h with $(DIAGNOSTIC_H).
30750
30751 2009-03-12  Jakub Jelinek  <jakub@redhat.com>
30752
30753         PR target/39431
30754         * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): New
30755         predicate.
30756         * config/i386/sync.md (sync_compare_and_swap<mode>,
30757         sync_compare_and_swap_cc<mode>): For DImode with -m32 -fpic check
30758         if operands[1] is cmpxchg8b_pic_memory_operand, if not force address
30759         into a register.
30760         (sync_double_compare_and_swapdi_pic,
30761         sync_double_compare_and_swap_ccdi_pic): Require operand 1 to be
30762         cmpxchg8b_pic_memory_operand instead of just memory_operand.
30763
30764 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30765
30766         PR target/39445
30767         * config/i386/i386.c (ix86_expand_push): Don't set memory alignment.
30768
30769 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30770
30771         PR target/39327
30772         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
30773         (avx_addsubv4df3): Likewise.
30774         (*avx_addsubv4sf3): Likewise.
30775         (sse3_addsubv4sf3): Likewise.
30776
30777 2009-03-12  H.J. Lu  <hongjiu.lu@intel.com>
30778
30779         PR target/38824
30780         * config/i386/i386.md: Compare REGNO on the new peephole2 patterns.
30781
30782 2009-03-12  Vladimir Makarov  <vmakarov@redhat.com>
30783
30784         PR debug/39432
30785         * ira-int.h (struct allocno): Fix comment for calls_crossed_num.
30786         * ira-conflicts.c (ira_build_conflicts): Prohibit call used
30787         registers for allocnos created from user-defined variables.
30788
30789 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30790
30791         PR target/39181
30792         * config/spu/spu.c (spu_expand_mov): Handle invalid subregs
30793         of non-integer mode as well.
30794
30795 2009-03-11  Adam Nemet  <anemet@caviumnetworks.com>
30796
30797         * gimplify.c (gimplify_call_expr): Don't set CALL_CANNOT_INLINE_P
30798         for functions for which the parameter types are unknown.
30799
30800 2009-03-11  Jakub Jelinek  <jakub@redhat.com>
30801
30802         PR target/39137
30803         * cfgexpand.c (get_decl_align_unit): Use LOCAL_DECL_ALIGNMENT macro.
30804         * defaults.h (LOCAL_DECL_ALIGNMENT): Define if not yet defined.
30805         * config/i386/i386.h (LOCAL_DECL_ALIGNMENT): Define.
30806         * config/i386/i386.c (ix86_local_alignment): For
30807         -m32 -mpreferred-stack-boundary=2 use 32-bit alignment for
30808         long long variables on the stack to avoid dynamic realignment.
30809         Allow the first argument to be a decl rather than type.
30810         * doc/tm.texi (LOCAL_DECL_ALIGNMENT): Document.
30811
30812 2009-03-11  Nick Clifton  <nickc@redhat.com>
30813
30814         PR target/5362
30815         * config/mcore/mcore.opt: Remove deprecated m4align and m8align
30816         options.
30817         Add description to mno-lsim option.
30818         * config/mcore/mcore.h: Remove comment about deprecated m4align
30819         option.
30820         (TARGET_DEFAULT): Remove deprecated MASK_M8ALIGN.
30821         * doc/invoke.texi: Add description of mno-lsim and
30822         mstack-increment options.
30823
30824         * config/fr30/fr30.opt: Document the -mno-lsim option.
30825         * doc/invoke.texi: Add descriptions of the FR30's -msmall-model
30826         and -mno-lsim options.
30827
30828 2009-03-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30829
30830         * fold-const.c (fold_comparison): Only call fold_inf_compare
30831         if the mode supports infinities.
30832
30833 2009-03-11  Jason Merrill  <jason@redhat.com>
30834
30835         PR debug/39086
30836         * tree-nrv.c (tree_nrv): Don't do this optimization if the front
30837         end already did.  Notice GIMPLE_CALL modifications of the result.
30838         Don't copy debug information from an ignored decl or a decl from
30839         another function.
30840
30841 2009-03-10  Richard Guenther  <rguenther@suse.de>
30842             Nathan Froyd  <froydnj@codesourcery.com>
30843
30844         PR middle-end/37850
30845         * libgcc2.c (__mulMODE3): Use explicit assignments to form the result.
30846         (__divMODE3): Likewise.
30847
30848 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
30849
30850         PR tree-optimization/39394
30851         * gimplify.c (gimplify_type_sizes): Gimplify DECL_SIZE and
30852         DECL_SIZE_UNIT of variable length FIELD_DECLs.
30853
30854 2009-03-09  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
30855
30856         * recog.c (verfiy_changes): Disallow renaming of hard regs in
30857         inline asms for register asm ("") declarations.
30858
30859 2009-03-09  Eric Botcazou  <ebotcazou@adacore.com>
30860
30861         * fold-const.c (fold_unary): Fix comment.
30862
30863 2009-03-07  Jan Hubicka  <jh@suse.cz>
30864
30865         PR target/39361
30866         * tree-inline.c (setup_one_parameter): Do replacement of const
30867         argument by constant in SSA form.
30868
30869 2009-03-07  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
30870
30871         PR middle-end/38028
30872         * function.c (assign_parm_setup_stack): Use STACK_SLOT_ALIGNMENT to
30873         determine alignment passed to assign_stack_local.
30874         (assign_parms_unsplit_complex): Likewise.
30875         * except.c (sjlj_build_landing_pads): Likewise.
30876
30877 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30878
30879         PR middle-end/39360
30880         * tree-flow.h (add_referenced_var): Return bool instead of void.
30881         * tree-dfa.c (add_referenced_var): Return result of
30882         referenced_var_check_and_insert call.
30883         * tree-inline.c (expand_call_inline): Call add_referenced_var instead
30884         of referenced_var_check_and_insert.
30885
30886         PR debug/39372
30887         * dwarf2out.c (add_abstract_origin_attribute): Return origin_die.
30888         (gen_variable_die): Emit DW_AT_location on abstract static variable's
30889         DIE, don't emit it if abstract origin already has it.
30890         * tree-cfg.c (remove_useless_stmts_bind): GIMPLE_BINDs with any
30891         BLOCK_NONLOCALIZED_VARS in its gimple_bind_block aren't useless.
30892
30893 2009-03-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
30894
30895         * genpreds.c (needs_variable): Fix parentheses at variable name
30896         detection.
30897         (write_tm_constrs_h): Indent generated code.
30898
30899 2009-03-06  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
30900
30901         * doc/extend.texi (Function Attributes): Add documentation
30902         for isr attributes.
30903
30904 2009-03-06  Jakub Jelinek  <jakub@redhat.com>
30905
30906         PR debug/39387
30907         * dwarf2out.c (dwarf2out_imported_module_or_decl_1): For IMPORTED_DECL
30908         take locus from its DECL_SOURCE_LOCATION instead of input_location.
30909
30910 2009-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
30911
30912         * config/bfin/bfin.c (bfin_discover_loop): When retrying fails, mark
30913         the loop as bad.
30914
30915 2009-03-05  Jakub Jelinek  <jakub@redhat.com>
30916
30917         PR debug/39379
30918         * tree-cfg.c (remove_useless_stmts_bind): Don't remove GIMPLE_BINDs
30919         with blocks containing IMPORTED_DECLs in BLOCK_VARS.
30920
30921 2009-03-05  Uros Bizjak  <ubizjak@gmail.com>
30922
30923         * config/i386/i386.md (R8_REG, R9_REG): New constants.
30924         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Use named
30925         constants instead of magic numbers.
30926         (HARD_REGNO_CALLER_SAVE_MODE): Ditto.
30927         (QI_REG_P): Ditto.
30928         * config/i386/i386.c (x86_64_int_parameter_registers): Ditto.
30929         (x86_64_ms_abi_int_parameter_registers): Ditto.
30930         (x86_64_int_return_registers): Ditto.
30931         (ix86_maybe_switch_abi): Ditto.
30932         (ix86_expand_call): Ditto for clobbered_registers array.
30933         (ix86_hard_regno_mode_ok): Ditto.
30934         (x86_extended_QIreg_mentioned_p): Ditto.
30935
30936 2009-03-05  J"orn Rennecke  <joern.rennecke@arc.com>
30937
30938         PR tree-optimization/39349
30939         * cse.c (cse_insn): Fix loop to stop at VOIDmode.
30940
30941         * combine.c (gen_lowpart_for_combine): Use omode when generating
30942         clobber.
30943
30944 2009-03-04  J"orn Rennecke  <joern.rennecke@arc.com>
30945
30946         PR rtl-optimization/39235
30947         * loop-iv.c (get_simple_loop_desc): Use XCNEW.
30948
30949 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30950
30951         * graphite.c (nb_reductions_in_loop): Update simple_iv arguments.
30952
30953 2009-03-04  Richard Guenther  <rguenther@suse.de>
30954
30955         PR tree-optimization/39362
30956         * tree-ssa-sccvn.c (visit_use): Stores and copies from SSA_NAMEs
30957         that occur in abnormal PHIs should be varying.
30958
30959 2009-03-04  Zdenek Dvorak  <ook@ucw.cz>
30960
30961         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop):
30962         Extend comments.
30963         (simple_iv):  Take loop as an argument instead of statement.
30964         * tree-scalar-evolution.h (simple_iv): Declaration changed.
30965         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update calls
30966         to simple_iv.
30967         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev):
30968         Ditto.
30969         * tree-parloops.c (loop_parallel_p, canonicalize_loop_ivs): Ditto.
30970         * matrix-reorg.c (analyze_transpose): Ditto.
30971         * tree-data-ref.c (dr_analyze_innermost): Ditto.
30972         * tree-vect-analyze.c (vect_analyze_data_refs): Ditto.
30973         * tree-predcom.c (ref_at_iteration): Ditto.
30974         * tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
30975
30976 2009-03-04  Richard Guenther  <rguenther@suse.de>
30977
30978         PR tree-optimization/39358
30979         * tree-ssa-structalias.c (do_sd_constraint): Fix check for
30980         escaped_id and callused_id.
30981         (solve_graph): Likewise.
30982
30983 2009-03-04  Richard Guenther  <rguenther@suse.de>
30984
30985         PR tree-optimization/39339
30986         * tree-sra.c (try_instantiate_multiple_fields): Make it
30987         no longer ICE on the above.
30988
30989 2009-03-03  Joseph Myers  <joseph@codesourcery.com>
30990
30991         * emit-rtl.c (adjust_address_1): Reduce offset to a signed value
30992         that fits within Pmode.
30993
30994 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
30995
30996         PR middle-end/10109
30997         * tm.texi (LIBCALL_VALUE): Update description.
30998
30999 2009-03-03  Steve Ellcey  <sje@cup.hp.com>
31000
31001         PR middle-end/34443
31002         * doc/extend.texi (section): Update description.
31003
31004 2009-03-03  H.J. Lu  <hongjiu.lu@intel.com>
31005
31006         PR middle-end/39345
31007         * tree-inline.c (remapped_type): New.
31008         (can_be_nonlocal): Call remapped_type instead of remap_type.
31009
31010 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31011
31012         PR fortran/39354
31013         * gimplify.c (goa_stabilize_expr): Handle tcc_comparison,
31014         TRUTH_ANDIF_EXPR and TRUTH_ORIF_EXPR.
31015
31016 2009-03-03  Richard Guenther  <rguenther@suse.de>
31017
31018         PR middle-end/39272
31019         * tree.c (tree_nonartificial_location): New function.
31020         * tree.h (tree_nonartificial_location): Declare.
31021         * builtins.c (expand_builtin_memory_chk): Provide location
31022         of the call location for artificial function pieces.
31023         (maybe_emit_chk_warning): Likewise.
31024         (maybe_emit_sprintf_chk_warning): Likewise.
31025         (maybe_emit_free_warning): Likewise.
31026         * expr.c (expand_expr_real_1): Likewise.
31027
31028 2009-03-03  Jakub Jelinek  <jakub@redhat.com>
31029
31030         PR tree-optimization/39343
31031         * tree-ssa-ccp.c (maybe_fold_offset_to_address): Don't check if
31032         COMPONENT_REF t has ARRAY_TYPE.
31033
31034 2009-03-02  Sebastian Pop  <sebastian.pop@amd.com>
31035
31036         PR middle-end/39335
31037         * tree-parloops.c (canonicalize_loop_ivs): Call fold_convert
31038         when the type precision of the induction variable should be
31039         larger than the type precision of nit.
31040         (gen_parallel_loop): Update use of canonicalize_loop_ivs.
31041         * graphite.c (graphite_loop_normal_form): Same.
31042         * tree-flow.h (canonicalize_loop_ivs): Update declaration.
31043
31044 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31045
31046         * config/i386/i386.md (ST?_REG, MM?_REG): New constants.
31047         (*call_1_rex64_ms_sysv): Use named constants instead of magic
31048         numbers to describe clobbered registers.
31049         (*call_value_0_rex64_ms_sysv): Ditto.
31050         * config/i386/mmx.md (mmx_emms): Ditto.
31051         (mmx_femms): Ditto.
31052
31053 2009-03-02  Richard Sandiford  <rdsandiford@googlemail.com>
31054
31055         * config/mips/mips.c (mips_mdebug_abi_name): Fix the handling
31056         of ABI_64.
31057
31058 2009-03-02  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31059
31060         * config/spu/spu.c (TARGET_SECTION_TYPE_FLAGS): Define.
31061         (spu_section_type_flags): New function.
31062
31063 2009-03-02  Uros Bizjak  <ubizjak@gmail.com>
31064
31065         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not copy
31066         reg_class_contents of FLOAT_REGS into a temporary.
31067
31068 2009-03-02  Richard Guenther  <rguenther@suse.de>
31069             Ira Rosen  <irar@il.ibm.com>
31070
31071         PR tree-optimization/39318
31072         * tree-vect-transform.c (vectorizable_call): Transfer the EH region
31073         information to the vectorized statement.
31074
31075 2009-03-01  Uros Bizjak  <ubizjak@gmail.com>
31076
31077         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Do not shadow "i"
31078         variable.  Use defined names instead of magic constants for REX SSE
31079         registers.
31080
31081 2009-03-01  Richard Guenther  <rguenther@suse.de>
31082
31083         PR tree-optimization/39331
31084         * omp-low.c (lower_send_shared_vars): Do not receive new
31085         values for the reference of DECL_BY_REFERENCE parms or results.
31086
31087 2009-03-01  Jan Hubicka  <jh@suse.cz>
31088
31089         PR debug/39267
31090         * tree.h (BLOCK_NONLOCALIZED_VARS, BLOCK_NUM_NONLOCALIZED_VARS,
31091         BLOCK_NONLOCALIZED_VAR): New macros.
31092         (tree_block): Add nonlocalized_vars.
31093         * dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
31094         gen_decl_die): Add origin argument.  Allow generation of die with
31095         origin at hand only.
31096         (gen_member_die, gen_type_die_with_usage, force_decl_die,
31097         declare_in_namespace, gen_namescpace_die, dwarf2out_decl): Update use
31098         of gen_*.
31099         (gen_block_die): Fix checking for unused blocks.
31100         (process_scope_var): Break out from .... ; work with origins only.
31101         (decls_for_scope) ... here; process nonlocalized list.
31102         (dwarf2out_ignore_block): Look for nonlocalized vars.
31103         * tree-ssa-live.c (remove_unused_scope_block_p): Look for nonlocalized
31104         vars.
31105         (dump_scope_block): Dump them.
31106         * tree-inline.c (remap_decls): Handle nonlocalized vars.
31107         (remap_block): Likewise.
31108         (can_be_nonlocal): New predicate.
31109         (copy_bind_expr, copy_gimple_bind): Update use of remap_block.
31110
31111 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31112
31113         * configure: Regenerate.
31114
31115 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
31116
31117         * optc-gen.awk: No need to duplicate option flags twice.
31118         Reuse help texts for duplicate options which do not have any.
31119
31120         * gcc.c (display_help): Document --version.
31121
31122         * gcc.c (main): If print_help_list and verbose_flag, ensure
31123         driver output comes before subprocess output.
31124
31125         * optc-gen.awk: Assign all remaining fields to help string,
31126         space-separated, for multi-line help in *.opt.
31127
31128         * doc/invoke.texi (Warning Options): -Wsync-nand is C/C++ only.
31129         -Wno-pedantic-ms-format is for MinGW targets only.
31130
31131         * doc/options.texi (Option file format): Fix bad indentation,
31132         restoring dropped sentence.
31133
31134 2009-02-28  Jan Hubicka  <jh@suse.cz>
31135
31136         * tree-inline.c (tree_function_versioning): Output debug info.
31137
31138 2009-02-28  Jan Hubicka  <jh@suse.cz>
31139
31140         PR debug/39267
31141         * tree-inline.c (setup_one_parameter): Do not copy propagate
31142         arguments when not optimizing.
31143
31144 2009-02-28  H.J. Lu  <hongjiu.lu@intel.com>
31145
31146         PR target/39327
31147         * config/i386/sse.md (avx_addsubv8sf3): Correct item bits.
31148         (avx_addsubv4df3): Likewise.
31149         (*avx_addsubv4sf3): Likewise.
31150         (sse3_addsubv4sf3): Likewise.
31151         (*avx_addsubv2df3): Likewise.
31152         (sse3_addsubv2df3): Likewise.
31153         (avx_unpckhps256): Correct item selectors.
31154         (avx_unpcklps256): Likewise.
31155         (avx_unpckhpd256): Likewise.
31156         (avx_unpcklpd256): Likewise.
31157
31158 2009-02-28  Jan Hubicka  <jh@suse.cz>
31159
31160         * tree-inline.c (expand_call_inline): Avoid duplicate declarations of
31161         static vars.
31162         (copy_arguments_for_versioning): If var is declared don't declare it.
31163         (tree_function_versioning): First setup substitutions and then copy
31164         args.
31165
31166 2009-02-27  Jan Hubicka  <jh@suse.cz>
31167
31168         PR debug/39267
31169         * cgraph.h (varpool_output_debug_info): Remove.
31170         * cgraphunit.c (varpool_output_debug_info): Remove.
31171         * dwarf2out.c (deferred_locations_struct): New struct
31172         (deferred_locations): New type.
31173         (deferred_locations_list): New static var.
31174         (deffer_location): New function.
31175         (gen_variable_die): Use it.
31176         (decls_for_scope): Output info on local static vars.
31177         (dwarf2out_finish): Process deferred locations.
31178         * varpool.c (varpool_output_debug_info): Remove.
31179
31180 2009-02-27  Jan Hubicka  <jh@suse.cz>
31181
31182         PR debug/39267
31183         * tree.h (TREE_PROTECTED): Fix comment.
31184         (BLOCK_HANDLER_BLOCK): Remove.
31185         (struct tree_block): Remove handler_block add body_block.
31186         (inlined_function_outer_scope_p): New.
31187         (is_body_block): Remove.
31188         * dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
31189         * dwarf2out.c (is_inlined_entry_point): Remove.
31190         (add_high_low_attributes): Use inlined_function_outer_scope_p.
31191         (gen_block_die): Use is_inlined_entry_point check.  Remove body block
31192         code.
31193         * langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
31194         * gimplify.c (gimplify_expr): Gimplify body blocks.
31195         * tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper
31196         block with multiple subblocks.
31197         (dump_scope_block): Prettier output; dump more flags and info.
31198         (dump_scope_blocks): New.
31199         (remove_unused_locals): Use dump_scope_blocks.
31200         * tree-flow.h (dump_scope_blocks): Declare.
31201         * tree-cfg.c (execute_build_cfg): Dump scope blocks.
31202         * stmt.c (is_body_block): Remove.
31203         * tree-inline.c (remap_block): Copy BODY_BLOCK info.
31204         * langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
31205
31206 2009-02-27  Sebastian Pop  <sebastian.pop@amd.com>
31207
31208         PR middle-end/39308
31209         * graphite.c (graphite_loop_normal_form): Do not call
31210         number_of_iterations_exit from a gcc_assert.
31211
31212 2009-02-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
31213
31214         * config/s390/s390.c (s390_swap_cmp): Look for conditional
31215         jumps if COND is NULL.
31216         (find_cond_jump): New function.
31217         (s390_z10_optimize_cmp): Handling for reg-reg compares added.
31218         * config/s390/s390.md: Remove z10_cobra attribute value.
31219
31220 2009-02-26  Uros Bizjak  <ubizjak@gmail.com>
31221
31222         * config/alpha/alpha.h (alpha_expand_mov): Return false if
31223         force_const_mem returns NULL_RTX.
31224
31225 2009-02-26  Jan Hubicka  <jh@suse.cz>
31226
31227         PR debug/39267
31228         * cgraph.h (varpool_output_debug_info): Remove.
31229         * cgraphunit.c (varpool_output_debug_info): Remove.
31230         * dwarf2out.c (deferred_locations_struct): New struct
31231         (deferred_locations): New type.
31232         (deferred_locations_list): New static var.
31233         (deffer_location): New function.
31234         (gen_variable_die): Use it.
31235         (decls_for_scope): Output info on local static vars.
31236         (dwarf2out_finish): Process deferred locations.
31237         * varpool.c (varpool_output_debug_info): Remove.
31238
31239 2009-02-25  H.J. Lu  <hongjiu.lu@intel.com>
31240
31241         PR rtl-optimization/39241
31242         * jump.c (rtx_renumbered_equal_p): Remove 2 superfluous calls
31243         to subreg_offset_representable_p.
31244
31245 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31246
31247         * regmove.c (regmove_optimize): Conform to struct rtl_opt_pass
31248         execute function prototype.  Get f and nregs from max_reg_num
31249         and get_insns.  Remove the first backward pass as it's dead,
31250         guard the forward pass by flag_expensive_optimizations.
31251         (rest_of_handle_regmove): Delete.
31252         (pass_regmove): Replace it with regmove_optimize.
31253
31254 2009-02-25  Martin Jambor  <mjambor@suse.cz>
31255
31256         PR tree-optimization/39259
31257         * tree-inline.c (initialize_cfun): Remove asserts for calls_setjmp and
31258         calls_alloca function flags.
31259         (copy_bb): Set calls_setjmp and alls_alloca function flags if such
31260         calls are detected.
31261
31262 2009-02-25  Paolo Bonzini  <bonzini@gnu.org>
31263
31264         * regmove.c (discover_flags_reg, flags_set_1, mark_flags_life_zones,
31265         flags_set_1_rtx, flags_set_1_set): Delete.
31266         (regmove_optimize): Do not call mark_flags_life_zones.
31267
31268 2009-02-24  Julian Brown  <julian@codesourcery.com>
31269
31270         PR target/35965
31271         * config/arm/arm.c (require_pic_register): Only set
31272         cfun->machine->pic_reg once per function.
31273
31274 2009-02-24  Sandra Loosemore  <sandra@codesourcery.com>
31275
31276         * doc/invoke.texi (Link Options): Document an easier way to pass
31277         options that take arguments to the GNU linker using -Xlinker and -Wl.
31278
31279 2009-02-24  Steve Ellcey  <sje@cup.hp.com>
31280
31281         PR target/33785
31282         * doc/tm.texi (TARGET_C99_FUNCTIONS): Fix description.
31283
31284 2009-02-24  Richard Guenther  <rguenther@suse.de>
31285
31286         PR debug/39285
31287         * dwarf2out.c (gen_enumeration_type_die): Handle CONST_DECLs.
31288
31289 2009-02-24  Richard Guenther  <rguenther@suse.de>
31290             Zdenek Dvorak  <ook@ucw.cz>
31291
31292         PR tree-optimization/39233
31293         * tree-ssa-loop-ivopts.c (add_candidate_1): Do not except pointers
31294         from converting them to a generic type.
31295
31296 2009-02-23  Sebastian Pop  <sebastian.pop@amd.com>
31297
31298         PR tree-optimization/39260
31299         * graphite.c (harmful_stmt_in_bb): Stop a SCoP when the basic block
31300         contains a condition with a real type.
31301         (build_scop_conditions_1): Conditions are always last_stmt of a bb.
31302
31303 2009-02-23  Jason Merrill  <jason@redhat.com>
31304
31305         PR c++/38880
31306         * varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
31307         narrowing_initializer_constant_valid_p.
31308         (narrowing_initializer_constant_valid_p): Don't return
31309         null_pointer_node for adding a pointer to itself.
31310
31311 2009-02-23  Jan Hubicka  <jh@suse.cz>
31312
31313         PR c/12245
31314         * ggc.h (htab_create_ggc): Use ggc_free to free hashtable when
31315         resizing.
31316
31317 2009-02-23  Jan Hubicka  <jh@suse.cz>
31318
31319         PR tree-optimization/37709
31320         * tree.c (block_ultimate_origin): Move here from dwarf2out.
31321         * tree.h (block_ultimate_origin): Declare.
31322         * dwarf2out.c (block_ultimate_origin): Move to tree.c
31323         * tree-ssa-live.c (remove_unused_scope_block_p):
31324         Eliminate blocks containig no instructions nor live variables nor
31325         nested blocks.
31326         (dump_scope_block): New function.
31327         (remove_unused_locals): Enable removal of dead blocks by default;
31328         enable dumping at TDF_DETAILS.
31329
31330 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31331
31332         * config/i386/i386.c (classify_argument): Don't allow COImode
31333         and OImode.
31334         (function_arg_advance_32): Don't allow OImode.
31335         (function_arg_32): Likewise.
31336         (function_value_32): Likewise.
31337         (return_in_memory_32): Likewise.
31338         (function_arg_64): Remove OImode comment.
31339
31340 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31341
31342         PR target/39261
31343         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): Use
31344         ix86_expand_vector_set for V4DImode in 64bit mode only.
31345         (ix86_expand_vector_init_one_var): Likewise.
31346
31347 2009-02-21  Sebastian Pop  <sebastian.pop@amd.com>
31348
31349         * graphite.c (graphite_trans_loop_block): Adjust tile size to 51.
31350
31351 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31352
31353         PR bootstrap/39257
31354         * loop-iv.c: Revert last change.
31355         * emit-rtl.c: Likewise.
31356
31357 2009-02-21  H.J. Lu  <hongjiu.lu@intel.com>
31358
31359         PR target/39256
31360         * config/i386/i386.c (type_natural_mode): Remove an extra
31361         space in the warning message.
31362         (function_value_32): Handle 32-byte vector modes.
31363         (return_in_memory_32): Likewise.
31364
31365 2009-02-21  Richard Sandiford  <rdsandiford@googlemail.com>
31366
31367         * loop-iv.c (truncate_value): New function.
31368         (iv_subreg, get_iv_value, iv_number_of_iterations): Use it instead
31369         of lowpart_subreg.
31370         (lowpart_subreg): Move to...
31371         * emit-rtl.c: ...here.
31372
31373 2009-02-21  Danny Smith  <dannysmith@users.sourceforge.net>
31374
31375         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common): Revert
31376         accidental and undocumented change at revision 140860.
31377
31378 2009-02-21  Joseph Myers  <joseph@codesourcery.com>
31379
31380         * config/arm/arm.c (arm_gimplify_va_arg_expr): Update prototype to
31381         take gimple_seq * arguments.
31382         (arm_mangle_type): Use CONST_CAST_TREE on type argument passed to
31383         types_compatible_p langhook.
31384
31385 2009-02-20  Mark Mitchell  <mark@codesourcery.com>
31386             Joseph Myers  <joseph@codesourcery.com>
31387
31388         * config/arm/arm.c (arm_builtin_va_list): New function.
31389         (arm_expand_builtin_va_start): Likewise.
31390         (arm_gimplify_va_arg_expr): Likewise.
31391         (TARGET_BUILD_BUILTIN_VA_LIST): Define.
31392         (TARGET_BUILD_BUILTIN_VA_START): Likewise.
31393         (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise.
31394         (va_list_type): New variable.
31395         (arm_mangle_type): Mangle va_list_type appropriately.
31396
31397 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31398
31399         PR middle-end/39157
31400         * Makefile.in (loop-invariant.o): Depend on $(PARAMS_H).
31401         * params.h (LOOP_INVARIANT_MAX_BBS_IN_LOOP): Define.
31402         * params.def (loop-invariant-max-bbs-in-loop): New parameter.
31403         * opts.c (decode_options): Set loop-invariant-max-bbs-in-loop
31404         parameter to 1000 for -O1 by default.
31405         * doc/invoke.texi (loop-invariant-max-bbs-in-loop): Document new
31406         parameter.
31407         * loop-invariant.c: Include params.h.
31408         (move_loop_invariants): Don't call move_single_loop_invariants on
31409         very large loops.
31410
31411 2009-02-20  Jaka Mocnik  <jaka@xlab.si>
31412
31413         * calls.c (emit_library_call_value_1): Use slot_offset instead of
31414         offset when calculating bounds for indexing stack_usage_map.  Fixes
31415         a buffer overflow with certain target setups.
31416
31417 2009-02-20  Jakub Jelinek  <jakub@redhat.com>
31418
31419         PR target/39240
31420         * calls.c (expand_call): Clear try_tail_call if caller and callee
31421         disagree in promotion of function return value.
31422
31423 2009-02-19  Jakub Jelinek  <jakub@redhat.com>
31424
31425         PR target/39175
31426         * c-common.c (c_determine_visibility): If visibility changed and
31427         DECL_RTL has been already set, call make_decl_rtl to update symbol
31428         flags.
31429
31430 2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>
31431
31432         PR c++/39188
31433         * varasm.c (assemble_variable): Don't check DECL_NAME when
31434         globalizing a variable.
31435
31436 2009-02-19  Joseph Myers  <joseph@codesourcery.com>
31437
31438         PR c/38483
31439         * builtins.c (gimplify_va_arg_expr): Evaluate the va_list
31440         expression before any __builtin_trap call.
31441         * c-typeck.c (build_function_call): Convert and check function
31442         arguments before generating a call to a trap.  Evaluate the
31443         function arguments before the trap.
31444
31445 2009-02-19  Uros Bizjak  <ubizjak@gmail.com>
31446
31447         PR target/39228
31448         * config/i386/i386.md (isinfxf2): Split from isinf<mode>2.
31449         (UNSPEC_FXAM_MEM): New unspec.
31450         (fxam<mode>2_i387_with_temp): New insn and split pattern.
31451         (isinf<mode>2): Use MODEF mode iterator.  Force operand[1] through
31452         memory using fxam<mode>2_i387_with_temp to remove excess precision.
31453
31454 2009-02-19  Richard Guenther  <rguenther@suse.de>
31455
31456         PR tree-optimization/39207
31457         PR tree-optimization/39074
31458         * tree-ssa-structalias.c (storedanything_id, var_storedanything,
31459         storedanything_tree): New.
31460         (do_ds_constraint): Simplify ANYTHING shortcutting.  Update
31461         the STOREDANYTHING solution if the lhs solution contains ANYTHING.
31462         (build_succ_graph): Add edges from STOREDANYTHING to all
31463         non-direct nodes.
31464         (init_base_vars): Initialize STOREDANYTHING.
31465         (compute_points_to_sets): Free substitution info after
31466         building the succ graph.
31467         (ipa_pta_execute): Likewise.
31468
31469         * tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
31470         field.
31471         (do_ds_constraint): Do not add to special var or non-pointer
31472         field solutions.
31473         (type_could_have_pointers): Split out from ...
31474         (could_have_pointers): ... here.  For arrays use the element type.
31475         (create_variable_info_for): Initialize may_have_pointers.
31476         (new_var_info): Likewise.
31477         (handle_lhs_call): Make the HEAP variable unknown-sized.
31478         (intra_create_variable_infos): Use a type with pointers for
31479         PARM_NOALIAS, make it unknown-sized.
31480
31481 2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>
31482
31483         PR target/39224
31484         * config/i386/i386.c (ix86_return_in_memory): Properly check ABI.
31485
31486 2009-02-18  Jason Merrill  <jason@redhat.com>
31487
31488         PR target/39179
31489         * tree-ssa-ccp.c (get_symbol_constant_value): Don't assume zero
31490         value if DECL_EXTERNAL.
31491         * tree-sra.c (sra_walk_gimple_assign): Likewise.
31492         * target.h (gcc_target::binds_local_p): Clarify "module".
31493         * tree.h (TREE_PUBLIC): Clarify "module".
31494
31495 2009-02-17  Xuepeng Guo  <xuepeng.guo@intel.com>
31496
31497         PR target/38891
31498         * config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move the hunk of
31499         initialization for MS_ABI prior to the hunk of !TARGET_MMX.
31500
31501 2009-02-17  H.J. Lu  <hongjiu.lu@intel.com>
31502
31503         PR target/39082
31504         * c.opt (Wabi): Support C and ObjC.
31505         (Wpsabi): New.
31506
31507         * c-opts.c (c_common_handle_option): Handle OPT_Wabi.
31508
31509         * config/i386/i386.c (classify_argument): Warn once about the ABI
31510         change when passing union with long double.
31511
31512         * doc/invoke.texi: Update -Wabi for warning psABI changes.
31513
31514 2009-02-18  Joseph Myers  <joseph@codesourcery.com>
31515
31516         PR c/35447
31517         * c-parser.c (c_parser_compound_statement): Always enter and leave
31518         a scope.
31519
31520 2009-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
31521
31522         PR target/34587
31523         * config/darwin.h (SUPPORTS_INIT_PRIORITY): Define.
31524
31525 2009-02-18  Jakub Jelinek  <jakub@redhat.com>
31526
31527         PR tree-optimization/36922
31528         * tree-data-ref.c (initialize_matrix_A): Handle BIT_NOT_EXPR.
31529         * tree-scalar-evolution.c (interpret_rhs_expr, instantiate_scev_1):
31530         Likewise.
31531
31532 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31533
31534         * config/mips/mips.c (mips_override_options): Set flag_dwarf2_cfi_asm
31535         to 0 for EABI64.
31536
31537 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31538
31539         * config/mips/mips.md (type): Reclassify lui_movf as "unknown".
31540
31541 2009-02-17  Richard Sandiford  <rdsandiford@googlemail.com>
31542
31543         * config/mips/mips.c (mips_gimplify_va_arg_expr): Fix invalid
31544         tree sharing.
31545
31546 2009-02-17  Ruan Beihong  <ruanbeihong@gmail.com>
31547             Richard Sandiford  <rdsandiford@googlemail.com>
31548
31549         * config/mips/mips.c (CODE_FOR_loongson_biadd): Delete.
31550         * config/mips/loongson.md (reduc_uplus_<mode>): Rename to...
31551         (loongson_biadd): ...this.
31552
31553 2009-02-17  Richard Guenther  <rguenther@suse.de>
31554
31555         PR tree-optimization/39202
31556         * tree-ssa-structalias.c (do_structure_copy): Before collapsing
31557         a var make sure to follow existing collapses.
31558
31559 2009-02-17  Richard Guenther  <rguenther@suse.de>
31560
31561         PR middle-end/39214
31562         * langhooks.c (lhd_print_error_function): Check for NULL block.
31563
31564 2009-02-17  Richard Guenther  <rguenther@suse.de>
31565
31566         PR tree-optimization/39204
31567         * tree-ssa-pre.c (phi_translate_1): Lookup the value-number
31568         of the PHI arg.
31569
31570 2009-02-17  Uros Bizjak  <ubizjak@gmail.com>
31571
31572         * config/soft-fp/double.h: Update from glibc CVS.
31573
31574 2009-02-17  Richard Guenther  <rguenther@suse.de>
31575
31576         PR tree-optimization/39207
31577         * tree-ssa-structalias.c (find_what_p_points_to): Do not emit
31578         strict-aliasing warnings for pointers pointing to NULL.
31579
31580 2009-02-16  Joseph Myers  <joseph@codesourcery.com>
31581
31582         PR c/35446
31583         * c-parser.c (c_parser_braced_init): Call pop_init_level when
31584         skipping until next close brace.
31585
31586 2009-02-16  H.J. Lu  <hongjiu.lu@intel.com>
31587
31588         PR target/37049
31589         * config/i386/i386.c (ix86_expand_push): Set memory alignment
31590         to function argument boundary.
31591
31592 2009-02-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
31593
31594         * config/picochip/picochip.md (lea_add): Allow any nonimmediate
31595         in the lea_add. Reload eventually constraints it properly.
31596         * config/picochip/constraints.md: Remove the target constraint
31597         "b", since it is not needed anymore.
31598
31599 2009-02-16  Jakub Jelinek  <jakub@redhat.com>
31600
31601         * gthr-dce.h: Uglify function parameter and local variable names.
31602         * gthr-gnat.h: Likewise.
31603         * gthr-mipssde.h: Likewise.
31604         * gthr-nks.h: Likewise.
31605         * gthr-posix95.h: Likewise.
31606         * gthr-posix.h: Likewise.
31607         * gthr-rtems.h: Likewise.
31608         * gthr-single.h: Likewise.
31609         * gthr-solaris.h: Likewise.
31610         * gthr-tpf.h: Likewise.
31611         * gthr-vxworks.h: Likewise.
31612         * gthr-win32.h: Likewise.
31613
31614 2009-02-15  H.J. Lu  <hongjiu.lu@intel.com>
31615
31616         PR target/39196
31617         * config/i386/i386.md: Restrict the new peephole2 to move
31618         between MMX/SSE registers.
31619
31620 2009-02-15  Richard Guenther  <rguenther@suse.de>
31621
31622         Revert
31623         2009-02-13  Richard Guenther  <rguenther@suse.de>
31624
31625         * configure.ac: Enable LFS.
31626         * configure: Re-generate.
31627         * config.in: Likewise.
31628
31629 2009-02-13  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31630
31631         * config/spu/spu_internals.h (spu_sr, spu_sra, spu_srqw,
31632         spu_srqwbyte, spu_srqwbytebc): Define.
31633         * config/spu/spu-builtins.def (spu_sr, spu_sra, spu_srqw,
31634         spu_srqwbyte, spu_srqwbytebc): New overloaded builtins.
31635         * config/spu/spu.md ("shrqbybi_<mode>", "shrqbi_<mode>",
31636         "shrqby_<mode>"): New insn-and-split patterns.
31637         * config/spu/spu.c (expand_builtin_args): Determine and return
31638         number of operands using spu_builtin_description data.
31639         (spu_expand_builtin_1): Use it.
31640
31641 2009-02-13  Steve Ellcey  <sje@cup.hp.com>
31642
31643         PR target/38056
31644         * config/ia64/ia64.c (ia64_function_ok_for_sibcall): Check
31645         TARGET_CONST_GP.
31646
31647 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31648
31649         PR target/39149
31650         * config/i386/i386.c (override_options): Correct warning
31651         messages for -malign-loops, -malign-jumps and -malign-functions.
31652
31653 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31654
31655         PR target/39152
31656         * config/i386/i386.md: Restrict the new peephole2 to move
31657         between the general purpose registers.
31658
31659 2009-02-13  H.J. Lu  <hongjiu.lu@intel.com>
31660
31661         PR target/39162
31662         * config/i386/i386.c (type_natural_mode): Add a new argument.
31663         Return the original mode and warn ABI change if vector size is 32byte.
31664         (function_arg_advance): Updated.
31665         (function_arg): Likewise.
31666         (ix86_function_value): Likewise.
31667         (ix86_return_in_memory): Likewise.
31668         (ix86_sol10_return_in_memory): Likewise.
31669         (ix86_gimplify_va_arg): Likewise.
31670         (function_arg_32): Don't warn ABX ABI change here.
31671         (function_arg_64): Likewise.
31672
31673 2009-02-13  Bernd Schmidt  <bernd.schmidt@analog.com>
31674
31675         * loop-iv.c (implies_p): In the final case, test that operands 0
31676         of the two comparisons match.
31677
31678         * config/bfin/bfin.c (find_prev_insn_start): New function.
31679         (bfin_optimize_loop): Use it in some cases instead of PREV_INSN.
31680         (find_next_insn_start): Move.
31681
31682 2009-02-13  Richard Guenther  <rguenther@suse.de>
31683
31684         * configure.ac: Enable LFS.
31685         * configure: Re-generate.
31686         * config.in: Likewise.
31687
31688 2009-02-13  Joseph Myers  <joseph@codesourcery.com>
31689
31690         PR c/35444
31691         * c-parser.c (c_parser_parms_list_declarator): Discard pending
31692         sizes on syntax error after some arguments have been parsed.
31693
31694 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31695
31696         * doc/invoke.texi (-fira): Remove.
31697
31698 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31699
31700         * caller-save.c: Replace regclass.c with reginfo.c in comments.
31701         * recog.c: Likewise.
31702         * rtl.h: Likewise.
31703
31704 2009-02-12  Uros Bizjak  <ubizjak@gmail.com>
31705
31706         * longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
31707         (umul_ppmm): Likewise.
31708         (count_leading_zeros): Likewise.
31709         (count_trailing_zeros): Likewise.
31710         (UMUL_TIME): Likewise.
31711
31712 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31713
31714         * config.gcc (ia64*-*-linux*): Add ia64/t-fprules-softfp and
31715         soft-fp/t-softfp to tmake_file.
31716
31717         * config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
31718         (ia64_expand_compare): Use HPUX library for TFmode only for HPUX.
31719         (ia64_builtins) [IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ,
31720         IA64_BUILTIN_INFQ]: New.
31721         (ia64_init_builtins): Initialize __builtin_infq,
31722         __builtin_fabsq and __builtin_copysignq if not HPUX.
31723         (ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
31724         IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
31725
31726         * config/ia64/lib1funcs.asm (__divtf3): Define only if
31727         SHARED is defined.
31728         (__fixtfti): Likewise.
31729         (__fixunstfti): Likewise.
31730         (__floattitf): Likewise.
31731
31732         * config/ia64/libgcc-glibc.ver: New.
31733         * config/ia64/t-fprules-softfp: Likewise.
31734         * config/ia64/sfp-machine.h: Likewise.
31735
31736         * config/ia64/linux.h (LIBGCC2_HAS_TF_MODE): New.
31737         (LIBGCC2_TF_CEXT): Likewise.
31738         (TF_SIZE): Likewise.
31739         (TARGET_INIT_LIBFUNCS): Likewise.
31740
31741         * config/ia64/t-glibc (SHLINB_MAPFILES):
31742         Add $(srcdir)/config/ia64/libgcc-glibc.ver.
31743
31744 2009-02-12  H.J. Lu  <hongjiu.lu@intel.com>
31745
31746         * config/i386/i386.c (construct_container): Rewrite processing
31747         BLKmode with X86_64_SSE_CLASS.
31748
31749 2009-02-12  Paolo Bonzini  <bonzini@gnu.org>
31750
31751         PR target/39152
31752         * config/i386/i386.md: Replace simplify_replace_rtx with
31753         replace_rtx in the new peephole2.
31754
31755 2009-02-12  Nathan Sidwell  <nathan@codesourcery.com>
31756
31757         * doc/invoke.texi (Optimize Options): Stop claiming inlining and
31758         loop unrolling do not happen at -O2.
31759
31760 2009-02-12  Michael Matz  <matz@suse.de>
31761
31762         * gcc.c (ASM_DEBUG_SPEC): Check for -g0.
31763
31764 2009-02-12  Jakub Jelinek  <jakub@redhat.com>
31765
31766         * dwarf2out.c (dwarf2out_finish): Force output of comp_unit_die
31767         for -g3.
31768
31769 2009-02-12  Ben Elliston  <bje@au.ibm.com>
31770
31771         * config/rs6000/rs6000.md (allocate_stack): Use _stack form of
31772         patterns when updating the back chain.  Missed in the 2009-02-10
31773         change.
31774
31775 2009-02-11  Janis Johnson  <janis187@us.ibm.com>
31776
31777         * doc/extend.texi (Decimal Floating Types): Update identifier of
31778         draft TR and list of missing support.
31779
31780 2009-02-11  Jakub Jelinek  <jakub@redhat.com>
31781
31782         PR middle-end/39154
31783         * gimplify.c (omp_notice_variable): If adding GOVD_SEEN
31784         bit to variable length decl's flags, add it also to its
31785         pointer replacement variable.
31786
31787 2009-02-11  Uros Bizjak  <ubizjak@gmail.com>
31788             Jakub Jelinek  <jakub@redhat.com>
31789
31790         PR target/39118
31791         * config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
31792         (memory_blockage): New expander.
31793         (*memory_blockage): New insn pattern.
31794         * config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
31795         instead of general blockage at the end of function prologue when
31796         frame pointer is used to access red zone area.  Do not emit blockage
31797         when profiling, it is emitted in generic code.
31798         (ix86_expand_epilogue): Emit memory_blockage at the beginning of
31799         function epilogue when frame pointer is used to access red zone area.
31800
31801 2009-02-11  Paolo Bonzini  <bonzini@gnu.org>
31802
31803         PR target/38824
31804         * config/i386/i386.md: Add two new peephole2 to avoid mov followed
31805         by arithmetic with memory operands.
31806         * config/i386/predicates.md (commutative_operator): New.
31807
31808 2009-02-10  Janis Johnson  <janis187@us.ibm.com>
31809
31810         * doc/extend.texi (Fixed-Point Types): Break long paragraphs into
31811         bulleted lists.
31812
31813 2009-02-10  Eric Botcazou  <ebotcazou@adacore.com>
31814
31815         * alias.h (record_alias_subset): Declare.
31816         * alias.c (record_alias_subset): Make global.
31817
31818 2009-02-10  Nick Clifton  <nickc@redhat.com>
31819
31820         * tree-parloops.c: Change license to GPLv3.
31821         * ipa-struct-reorg.c: Change license to GPLv3.
31822         * ipa-struct-reorg.h: Change license to GPLv3.
31823
31824 2009-02-10  Steve Ellcey  <sje@cup.hp.com>
31825
31826         PR c/39084
31827         * c-decl.c (start_struct): Return NULL on error.
31828
31829 2009-02-10  Jakub Jelinek  <jakub@redhat.com>
31830
31831         PR middle-end/39124
31832         * cfgloopmanip.c (remove_path): Call remove_bbs after
31833         cancel_loop_tree, not before it.
31834
31835         PR target/39139
31836         * function.h (struct function): Add has_local_explicit_reg_vars bit.
31837         * gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
31838         VAR_DECLs were seen.
31839         * tree-ssa-live.c (remove_unused_locals): Recompute
31840         cfun->has_local_explicit_reg_vars.
31841         * tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
31842         copies or clearings if cfun->has_local_explicit_reg_vars.
31843
31844 2009-02-10  Uros Bizjak  <ubizjak@gmail.com>
31845
31846         PR target/39118
31847         * config/i386/i386.c (expand_prologue): Emit blockage at the end
31848         of function prologue when frame pointer is used to access
31849         red zone area.
31850
31851 2009-02-10  Richard Guenther  <rguenther@suse.de>
31852
31853         PR middle-end/39127
31854         * gimplify.c (gimple_regimplify_operands): Always look if
31855         we need to create a temporary.
31856
31857 2009-02-10  Richard Guenther  <rguenther@suse.de>
31858
31859         PR tree-optimization/39132
31860         * tree-loop-distribution.c (todo): New global var.
31861         (generate_memset_zero): Trigger TODO_rebuild_alias.
31862         (tree_loop_distribution): Return todo.
31863
31864 2009-02-10  H.J. Lu  <hongjiu.lu@intel.com>
31865
31866         PR target/39119
31867         * config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
31868         (x86_64_reg_class_name): Removed.
31869         (classify_argument): Return 0 if bytes > 32.  Return 0 if the
31870         first one isn't X86_64_SSE_CLASS or any other ones aren't
31871         X86_64_SSEUP_CLASS when size > 16bytes.  Don't turn
31872         X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
31873         is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
31874         and 3 X86_64_SSEUP_CLASS.
31875         (construct_container): Remove X86_64_AVX_CLASS.  Handle 4
31876         registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
31877
31878 2009-02-10  Ben Elliston  <bje@au.ibm.com>
31879
31880         * config/rs6000/rs6000.md (allocate_stack): Always use an update
31881         form instruction to update the stack back chain word, even if the
31882         user has disabled the generation of update instructions.
31883         (movdi_<mode>_update_stack): New.
31884         (movsi_update_stack): Likewise.
31885         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
31886         always use an update form instruction to update the stack back
31887         chain word.
31888
31889 2009-02-09  Sebastian Pop  <sebastian.pop@amd.com>
31890
31891         PR middle-end/38953
31892         * graphite.c (if_region_set_false_region): After moving a region in
31893         the false branch of a condition, remove the empty dummy basic block.
31894         (gloog): Remove wrong fix for PR38953.
31895
31896 2009-02-09  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
31897
31898         * config/spu/spu.c (array_to_constant): Fix (latent) wrong-code
31899         generation due to implicit sign extension.
31900
31901 2009-02-09  Eric Botcazou  <ebotcazou@adacore.com>
31902
31903         PR middle-end/38981
31904         * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs
31905         at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST.
31906
31907 2009-02-09  Richard Guenther  <rguenther@suse.de>
31908
31909         PR middle-end/35202
31910         * convert.c (convert_to_real): Disable (float)fn((double)x)
31911         to fnf(x) conversion if errno differences may occur and
31912         -fmath-errno is set.
31913
31914 2009-02-07  Anatoly Sokolov  <aesok@post.ru>
31915
31916         * config/avr/avr.c (avr_mcu_t): Add ata6289 device.
31917         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
31918         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
31919
31920 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31921
31922         PR c/35434
31923         * c-common.c (handle_alias_attribute): Disallow attribute for
31924         anything not a FUNCTION_DECL or VAR_DECL.
31925
31926 2009-02-06  Janis Johnson  <janis187@us.ibm.com>
31927
31928         PR c/39035
31929         * real.c (do_compare): Special-case compare of zero against
31930         decimal float value.
31931
31932 2009-02-06  Joseph Myers  <joseph@codesourcery.com>
31933
31934         PR c/36432
31935         * c-decl.c (grokdeclarator): Don't treat [] declarators in fields
31936         as indicating flexible array members unless the field itself is
31937         being declarared as the incomplete array.
31938
31939 2009-02-06  Jan Hubicka  <jh@suse.cz>
31940
31941         PR tree-optimization/38844
31942         * ipa-inline.c (try_inline): Stop inlining recursion when edge
31943         is already inlined.
31944
31945 2009-02-06  Richard Guenther  <rguenther@suse.de>
31946
31947         PR middle-end/38977
31948         * tree-cfg.c (need_fake_edge_p): Force a fake edge for
31949         fork because we may expand it as __gcov_fork.
31950
31951 2009-02-06  Nick Clifton  <nickc@redhat.com>
31952
31953         * config/m32c/m32c.h (PCC_BITFIELD_TYPE_MATTERS): Define to zero.
31954
31955 2009-02-06  Paolo Bonzini  <bonzini@gnu.org>
31956
31957         PR tree-optimization/35659
31958         * tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
31959         vn_phi_eq): Shortcut if hashcode does not match.
31960         (vn_reference_op_compute_hash): Do not call iterative_hash_expr for
31961         NULL operands.
31962         * tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
31963         and avoid iterative_hash_expr.
31964         (FOR_EACH_VALUE_ID_IN_SET): New.
31965         (value_id_compare): Remove.
31966         (sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
31967         sort expressions by value id.
31968
31969 2009-02-05  Kaz Kojima  <kkojima@gcc.gnu.org>
31970
31971         PR target/38991
31972         * config/sh/predicates.md (general_movsrc_operand): Don't check
31973         the subreg of system registers here.
31974
31975 2009-02-05  Jakub Jelinek  <jakub@redhat.com>
31976
31977         PR c++/39106
31978         * cgraphunit.c (cgraph_function_versioning): Clear also DECL_VIRTUAL_P
31979         on the copied decl.
31980
31981 2009-02-05  Paolo Bonzini  <bonzini@gnu.org>
31982
31983         PR rtl-optimization/39110
31984         * rtlanal.c (rtx_addr_can_trap_p_1): Shortcut unaligned
31985         addresses, not aligned ones.
31986
31987 2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
31988             Richard Guenther  <rguenther@suse.de>
31989
31990         PR tree-optimization/39100
31991         * tree-ssa-structalias.c (do_ds_constraint): Actually do what the
31992         comment says and add edges.
31993
31994 2009-02-05  Joseph Myers  <joseph@codesourcery.com>
31995
31996         PR c/35435
31997         * c-common.c (handle_tls_model_attribute): Ignore attribute for
31998         non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
31999
32000 2009-02-04  Tobias Grosser  <grosser@fim.uni-passau.de>
32001
32002         * graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
32003         sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
32004         register_bb_in_sese, new_sese, free_sese): Moved.
32005         (dot_scop_1, build_scop_loop_nests, build_loop_iteration_domains,
32006         outermost_loop_in_scop, build_scop_iteration_domain,
32007         expand_scalar_variables_ssa_name, get_vdef_before_scop,
32008         limit_scops): Use bb_in_sese_p instead of bb_in_scop_p.
32009         Use loop_in_sese_p instead of loop_in_scop_p.
32010         (new_graphite_bb, gloog): Do not initialize SCOP_BBS_B.
32011         (new_scop, free_scop): Remove SCOP_LOOP2CLOOG_LOOP and SCOP_BBS_B.
32012         (scopdet_basic_block_info): Fix bug in scop detection.
32013         (new_loop_to_cloog_loop_str, hash_loop_to_cloog_loop,
32014         eq_loop_to_cloog_loop): Remove.
32015         (nb_loops_around_loop_in_scop, nb_loop
32016         ref_nb_loops): Moved here...
32017         * graphite.h (ref_nb_loops): ... from here.
32018         (struct scop): Remove bbs_b bitmap and loop2cloog_loop.
32019         (loop_domain_dim, loop_iteration_vector_dim): Remove.
32020         (SCOP_BBS_B, bb_in_scop_p, loop_in_scop_p): Removed.
32021
32022 2009-02-04  Paolo Bonzini  <bonzini@gnu.org>
32023             Hans-Peter Nilsson  <hp@axis.com>
32024
32025         PR rtl-optimization/37889
32026         * rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
32027         Move offset handling from PLUS to before the switch.  Use new
32028         arguments when considering SYMBOL_REFs too.
32029         (rtx_addr_can_trap_p): Pass dummy offset and size.
32030         (enum may_trap_p_flags): Remove.
32031         (may_trap_p_1): Pass size from MEM_SIZE.
32032
32033         PR rtl-optimization/38921
32034         * loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
32035         * rtl.h (may_trap_after_code_motion_p): Delete prototype.
32036         * rtlanal.c (may_trap_after_code_motion_p): Delete.
32037         (may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.
32038
32039 2009-02-04  H.J. Lu  <hongjiu.lu@intel.com>
32040
32041         AVX Programming Reference (January, 2009)
32042         * config/i386/sse.md (*vpclmulqdq): New.
32043
32044 2009-02-04  Jakub Jelinek  <jakub@redhat.com>
32045
32046         PR tree-optimization/38977
32047         PR gcov-profile/38292
32048         * calls.c (special_function_p): Disregard __builtin_ prefix.
32049
32050 2009-02-04  Hariharan Sandanagobalane  <hariharan@picochip.com>
32051
32052         * config/picochip/picochip.c (GO_IF_LEGITIMATE_ADDRESS): Disallow
32053         non-indexable addresses even before reload.
32054
32055 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32056
32057         PR c/29129
32058         * c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
32059         as having variable size.  Do not give an error for unnamed
32060         parameters with [*] declarators.  Give a warning for type names
32061         with [*] declarators and mark them as variable size.
32062         * c-parser.c (c_parser_sizeof_expression): Do not give an error
32063         for sizeof applied to [*] type names.
32064
32065 2009-02-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32066
32067         PR C++/36607
32068         * convert.c (convert_to_integer): Treat OFFSET_TYPE like INTEGER_TYPE.
32069
32070 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32071
32072         * gcc.c (process_command): Update copyright notice dates.
32073         * gcov.c (print_version): Likewise.
32074         * gcov-dump.c (print_version): Likewise.
32075         * mips-tfile.c (main): Likewise.
32076         * mips-tdump.c (main): Likewise.
32077
32078 2009-02-03  Joseph Myers  <joseph@codesourcery.com>
32079
32080         PR c/35433
32081         * c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
32082         for composite type involving a zero-length array type.
32083
32084 2009-02-03  Jakub Jelinek  <jakub@redhat.com>
32085
32086         PR target/35318
32087         * function.c (match_asm_constraints_1): Skip over
32088         initial optional % in the constraint.
32089
32090         PR inline-asm/39059
32091         * c-parser.c (c_parser_postfix_expression): If fixed point is not
32092         supported, don't accept FIXED_CSTs.
32093         * c-decl.c (finish_declspecs): Error if fixed point is not supported
32094         and _Sat is used without _Fract/_Accum.  Set specs->type to
32095         integer_type_node for cts_fract/cts_accum if fixed point is not
32096         supported.
32097
32098 2009-02-02  Catherine Moore  <clm@codesourcery.com>
32099
32100         * sde.h (SUBTARGET_ARM_SPEC): Don't assemble -fpic code as -mabicalls.
32101
32102 2009-02-02  Richard Sandiford  <rdsandiford@googlemail.com>
32103
32104         * config/mips/mips.h (FILE_HAS_64BIT_SYMBOLS): New macro.
32105         (ABI_HAS_64BIT_SYMBOLS): Use it.
32106         (DWARF2_ADDR_SIZE): Use it instead of ABI_HAS_64BIT_SYMBOLS.
32107
32108 2009-02-02  Paul Brook  <paul@codesourcery.com>
32109
32110         * config/arm/arm.md (arm_addsi3): Add r/r/k alternative.
32111
32112 2009-02-02  Jakub Jelinek  <jakub@redhat.com>
32113
32114         PR inline-asm/39058
32115         * recog.h (asm_operand_ok): Add constraints argument.
32116         * recog.c (asm_operand_ok): Likewise.  If it is set, for digits
32117         recurse on matching constraint.
32118         (check_asm_operands): Pass constraints as 3rd argument to
32119         asm_operand_ok.  Don't look up matching constraint here.
32120         * stmt.c (expand_asm_operands): Pass NULL as 3rd argument
32121         to asm_operand_ok.
32122
32123 2009-02-02  Ben Elliston  <bje@au.ibm.com>
32124
32125         * doc/tm.texi (Storage Layout): Fix TARGET_ALIGN_ANON_BITFIELD and
32126         TARGET_NARROW_VOLATILE_BITFIELD macro names.
32127
32128 2009-01-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
32129
32130         * doc/install.texi (hppa*-hp-hpux*): Update binutils and linker
32131         information.  Remove some obsolete information.  Reorganize.
32132
32133         * config/pa/fptr.c: Revert license to GPL 2.
32134         * config/pa/milli64.S: Likewise.
32135
32136 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32137
32138         PR target/38904
32139         * mkmap-flat.awk (END):  Use pe_dll command-line arg to pass
32140         LIBRARY name in, instead of hard-coding it.
32141         * config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*):  Add an
32142         extra target make frag to tmake_files according to EH model.
32143         (i[34567]86-*-mingw* | x86_64-*-mingw*):  Likewise.
32144         * config/i386/t-dw2-eh, config/i386/t-sjlj-eh:  Add new target
32145         frags that define makefile variable EH_MODEL appropriately.
32146         * config/i386/cygming.h (DWARF2_UNWIND_INFO):  Add comment.
32147         * config/i386/cygwin.h (LIBGCC_EH_EXTN):  Define to nothing or
32148         to "-sjlj" according to type of EH configured.
32149         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32150         * config/i386/mingw32.h (LIBGCC_EH_EXTN):  Define to "_dw2" or
32151         to "_sjlj" according to type of EH configured.
32152         (LIBGCC_SONAME):  Concatenate it to shared library base name.
32153         * config/i386/t-cygming (SHLIB_SONAME):  Use EH_MODEL.
32154         (SHLIB_LINK):  Add missing semicolon to if-else construct.
32155         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32156         string value of "pe_dll" command-line option.
32157         * config/i386/t-cygwin (SHLIB_EH_EXTENSION):  New helper.
32158         (SHLIB_SONAME):  Use it when overriding t-cygming default.
32159         (SHLIB_IMPLIB):  Override t-cygming default.
32160         (SHLIB_MKMAP_OPTS):  Pass library name to mkmap-flat.awk as
32161         string value of "pe_dll" command-line option.
32162
32163 2009-01-31  Dave Korn  <dave.korn.cygwin@gmail.com>
32164
32165         PR target/38952
32166         * config/i386/i386.c (ix86_builtin_setjmp_frame_value): New.
32167         (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Override default to point at it.
32168
32169 2009-01-31  Richard Guenther  <rguenther@suse.de>
32170
32171         PR tree-optimization/38937
32172         * tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
32173         computing the transitive closure.
32174
32175 2009-01-30  Richard Guenther  <rguenther@suse.de>
32176
32177         PR tree-optimization/39041
32178         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
32179         Propagate variable indices only if the types match for this stmt.
32180
32181 2009-01-30  Jakub Jelinek  <jakub@redhat.com>
32182
32183         PR target/39013
32184         * c-decl.c (pop_scope): Set DECL_EXTERNAL for functions declared
32185         inline but never defined.
32186
32187 2009-01-30  Wolfgang Gellerich  <gellerich@de.ibm.com>
32188
32189         * config/s390/s390.md (*insv<mode>_reg_extimm): Removed.
32190         (*insv_h_di_reg_extimm): New insn.
32191         (*insv_l<mode>_reg_extimm): New insn.
32192
32193 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32194
32195         * config/picochip/picochip.c (flag_conserve_stack): set
32196         PARAM_LARGE_STACK_FRAME and PARAM_STACK_FRAME_GROWTH to zero under
32197         fconserve-stack. Reduce call-overhead used by inliner.
32198
32199 2009-01-30  Hariharan Sandanagobalane  <hariharan@picochip.com>
32200
32201         PR/38157
32202         * common.opt (flag_conserve_stack): Initialised to zero.
32203
32204 2009-01-30  Kai Tietz  <kai.tietz@onevision.com>
32205
32206         PR/39002
32207         * config/i386/i386.c (ix86_can_use_return_insn_p): Check for nsseregs.
32208         (ix86_expand_epilogue): Take nsseregs in account to use proper restore
32209         method.
32210
32211 2009-01-29  H.J. Lu  <hongjiu.lu@intel.com>
32212
32213         * ira-color.c (allocno_reload_assign): Update comments.
32214         * regmove.c (regmove_optimize): Likewise.
32215
32216         * ra.h: Removed.
32217
32218 2009-01-29  Robert Millan  <rmh@aybabtu.com>
32219
32220         * config.gcc: Recognize GNU/kOpenSolaris (*-*-kopensolaris*-gnu).
32221         * config/i386/kopensolaris-gnu.h: New file.  Undefine
32222         `MD_UNWIND_SUPPORT'.
32223         * config/kopensolaris-gnu.h: New file (based on kfreebsd-gnu.h).
32224
32225 2009-01-29  Kazu Hirata  <kazu@codesourcery.com>
32226
32227         PR tree-optimization/39007
32228         * tree-loop-distribution.c (generate_builtin): Use
32229         recompute_dominator to compute the immediate dominator of the
32230         basic block just after the loop.
32231
32232 2009-01-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
32233
32234         * config/i386/sol2-10.h [!HAVE_AS_IX86_DIFF_SECT_DELTA]
32235         (ASM_OUTPUT_DWARF_PCREL): Define.
32236
32237 2009-01-29  Vladimir Makarov  <vmakarov@redhat.com>
32238
32239         * doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
32240         * doc/passes.texi: Remove entries about regclass, local-alloc, and
32241         global.  Modify entries about regmove and IRA.
32242
32243         * ra-conflict.c: Remove the file.
32244
32245         * reload.c (push_reload, find_dummy_reload): Remove flag_ira.
32246
32247         * tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
32248         (pass_regclass_init): Rename to pass_reginfo_init.
32249
32250         * cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
32251
32252         * toplev.h (flag_ira): Remove.
32253
32254         * caller-save.c (setup_save_areas): Remove flag_ira.
32255
32256         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot): Ditto.
32257
32258         * global.c: Remove the file.
32259
32260         * opts.c (decode_options): Remove flag_ira.
32261
32262         * hard-reg-set.h (losing_caller_save_reg_set): Remove.
32263
32264         * regmove.c: Modify file description.
32265         (find_use_as_address, try_auto_increment): Define them only if
32266         AUTO_INC_DEC is defined.
32267         (replacement_quality, replace_in_call_usage, fixup_match_1,
32268         stable_and_no_regs_but_for_p): Remove.
32269         (reg_set_in_bb): Make it static.
32270         (regmove_optimize): Remove flag_ira and code which worked for
32271         !flag_ira.
32272
32273         * local-alloc.c: Remove the file.
32274
32275         * common.opt (fira): Remove.
32276
32277         * ira.c: Include except.h.
32278         (eliminable_regset): Move from global.c.
32279         (mark_elimination): Ditto.  Remove flag_ira.
32280         (reg_renumber, struct equivalence, reg_equiv, equiv_mem,
32281         equiv_mem_modified, validate_equiv_mem_from_store,
32282         validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
32283         contains_replace_regs, memref_referenced_p, memref_used_between_p,
32284         no_equiv, recorded_label_ref): Move from local-alloc.c.
32285         (update_equiv_regs): Ditto.  Make it static.
32286         (print_insn_chain, print_insn_chains): Move it from global.c.
32287         (pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
32288         (build_insn_chain): Ditto.  Make it static.
32289         (ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
32290         Rename to init_live_subregs.
32291         (gate_ira): Remove flag_ira.
32292
32293         * regclass.c: Rename reginfo.c.  Change file description.
32294         (FORBIDDEN_INC_DEC_CLASSES): Remove.
32295         (reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec): Remove.
32296         (init_reg_sets_1): Remove code for evaluation of
32297         reg_class_superclasses and losing_caller_save_reg_set.
32298         (init_regs): Remove init_reg_autoinc.
32299         (struct costs, costs, init_cost, ok_for_index_p_nonstrict,
32300         ok_for_base_p_nonstrict): Remove.
32301         (regclass_init): Rename to reginfo_init.  Don't initialize init_cost.
32302         (pass_regclass_init): Rename to pass_reginfo_init.  Modify
32303         corresponding entries.
32304         (dump_regclass, record_operand_costs, scan_one_insn,
32305         init_reg_autoinc, regclass, record_reg_classes, copy_cost,
32306         record_address_regs, auto_inc_dec_reg_p): Remove.
32307         (gt-regclass.h): Rename to gt-reginfo.h.
32308
32309         * rtl.h (dump_global_regs, retry_global_alloc,
32310         build_insn_chain, dump_local_alloc, update_equiv_regs): Remove.
32311
32312         * Makefile.in (RA_H): Remove.
32313         (OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
32314         Rename regclass.o to reginfo.o.
32315         (regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
32316         gt-reginfo.h.
32317         (global.o, local-alloc.o, ra-conflict.o): Remove entries.
32318         (GTFILES): Rename regclass.c to reginfo.c.
32319
32320         * passes.c (init_optimization_passes): Remove pass_local_alloc and
32321         pass_global_alloc.  Rename pass_regclass_init to pass_reginfo_init.
32322
32323         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
32324         count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
32325         Remove flag_ira.
32326         (finish_spills): Ditto.  Remove code for !flag_ira.
32327
32328 2009-01-29  Kenneth Zadeck  <zadeck@naturalbridge.com>
32329
32330         PR middle-end/35854
32331         * doc/invoke.texi (rtl debug options): Complete rewrite.
32332         * auto-inc-dec.c (pass_inc_dec): Rename pass from "auto-inc-dec"
32333         to auto_inc_dec".
32334         * mode-switching.c (pass_mode_switching): Rename pass from
32335         "mode-sw" to "mode_sw".
32336         * except.c (pass_convert_to_eh_ranges): Rename pass from
32337         "eh-ranges" to "eh_ranges".
32338         * lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
32339         to "subreg1".
32340
32341
32342 2009-01-29  Andrey Belevantsev  <abel@ispras.ru>
32343             Alexander Monakov  <amonakov@ispras.ru>
32344
32345         PR middle-end/38857
32346         * sel-sched.c (count_occurrences_1): Check that *cur_rtx is a hard
32347         register.
32348         (move_exprs_to_boundary): Change return type and pass through
32349         should_move from move_op.  Relax assert.  Update usage ...
32350         (schedule_expr_on_boundary): ... here.  Use should_move instead of
32351         cant_move.
32352         (move_op_orig_expr_found): Indicate that insn was disconnected from
32353         stream.
32354         (code_motion_process_successors): Do not call after_merge_succs
32355         callback if original expression was not found when traversing any of
32356         the branches.
32357         (code_motion_path_driver): Change return type.  Update prototype.
32358         (move_op): Update comment.  Add a new parameter (should_move).  Update
32359         prototype.  Set *should_move based on indication provided by
32360         move_op_orig_expr_found.
32361
32362 2009-01-28  Pat Haugen  <pthaugen@us.ibm.com>
32363
32364         * doc/invoke.texi (avoid-indexed-addresses): Document new option.
32365         * config/rs6000/rs6000-protos.h (avoiding_indexed_address_p): Declare.
32366         * config/rs6000/rs6000.opt (avoid-indexed-addresses): New option.
32367         * config/rs6000/rs6000.c (rs6000_override_options): Default
32368         avoid-indexed-addresses on for Power6, off for everything else.
32369         (avoiding_indexed_address_p): New function.
32370         (rs6000_legitimize_address): Use it.
32371         (rs6000_legitimate_address): Likewise.
32372         * config/rs6000/rs6000.md (movXX_updateX): Likewise
32373
32374 2009-01-28  Kazu Hirata  <kazu@codesourcery.com>
32375
32376         PR tree-optimization/38997
32377         * tree-loop-distribution.c (generate_memset_zero): Use
32378         POINTER_PLUS_EXPR for a pointer addition.
32379
32380 2009-01-28  Andreas Krebbel  <krebbel1@de.ibm.com>
32381
32382         * config/s390/s390.md (bswap<mode>2): New pattern added.
32383
32384 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32385
32386         * config/s390/s390.md (*tls_load_31): Added type attribute.
32387
32388 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32389
32390         * config/s390/s390.md: Fix a few comments.
32391
32392 2009-01-28  Wolfgang Gellerich  <gellerich@de.ibm.com>
32393
32394         * config/s390/s390.md (*tmsi_reg): Fixed z10prop attribute.
32395         (*tm<mode>_full): Fixed z10prop attribute.
32396         (*tst<mode>_extimm): Fixed z10prop attribute.
32397         (*tst<mode>_cconly_extimm): Fixed z10prop attribute.
32398         (*tstqiCCT_cconly): Fixed z10prop attribute.
32399         (*cmpsi_ccu_zerohi_rlsi): Fixed z10prop attribute.
32400         (*movsi_larl): Fixed z10prop attribute.
32401         (*movsi_zarch): Fixed z10prop attribute.
32402         (*movsi_eas): Fixed z10prop attribute.
32403         (*movhi): Fixed z10prop attribute.
32404         (*movqi): Fixed z10prop attribute.
32405         (*movstrictqi): Fixed z10prop attribute.
32406         (*mov<mode>): Fixed z10prop attribute.
32407         (*movcc): Fixed z10prop attribute.
32408         (*sethighpartdi_64): Fixed z10prop attribute.
32409         (*zero_extendhi<mode>2_z10): Fixed z10prop attribute.
32410         (*negdi2_sign_cc): Fixed z10prop attribute.
32411         (*negdi2_sign): Fixed z10prop attribute.
32412         (*absdi2_sign_cc): Fixed z10prop attribute.
32413         (*absdi2_sign): Fixed z10prop attribute.
32414         (*negabsdi2_sign_cc): Fixed z10prop attribute.
32415         (*negabsdi2_sign): Fixed z10prop attribute.
32416         (*cmp_and_trap_signed_int<mode>): Fixed z10prop attribute.
32417         (*cmp_and_trap_unsigned_int<mode>): Fixed z10prop attribute.
32418         (doloop_si64): Fixed z10prop attribute.
32419         (doloop_si31): Fixed z10prop attribute.
32420         (doloop_long): Fixed z10prop attribute.
32421         (indirect_jump): Fixed z10prop attribute.
32422         (nop): Fixed z10prop attribute.
32423         (main_base_64): Fixed z10prop attribute.
32424         (reload_base_64): Fixed z10prop attribute.
32425
32426 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32427
32428         PR rtl-optimization/38740
32429         * reorg.c (gate_handle_delay_slots): Avoid dbr scheduling
32430         if !optimize.
32431         * config/mips/mips.c (mips_reorg): Likewise.
32432
32433 2009-01-28  Richard Guenther  <rguenther@suse.de>
32434
32435         PR tree-optimization/38926
32436         * tree-ssa-pre.c (add_to_value): Assert we add only expressions
32437         with the correct value id to a value.
32438         (do_regular_insertion): Use the value number of edoubleprime
32439         for the value number of the expr.
32440
32441         Revert
32442         2008-08-21  Richard Guenther  <rguenther@suse.de>
32443
32444         * tree-ssa-pre.c (insert_into_preds_of_block): Before inserting
32445         a PHI ask VN if it is already available.
32446         * tree-ssa-sccvn.h (vn_phi_lookup): Declare.
32447         * tree-ssa-sccvn.c (vn_phi_lookup): Export.
32448
32449 2009-01-28  Jakub Jelinek  <jakub@redhat.com>
32450
32451         PR middle-end/38934
32452         * tree-vrp.c (extract_range_from_assert): For LE_EXPR and LT_EXPR
32453         set to varying whenever max has TREE_OVERFLOW set, similarly
32454         for GE_EXPR and GT_EXPR and TREE_OVERFLOW min.
32455
32456 2009-01-28  Richard Guenther  <rguenther@suse.de>
32457
32458         PR middle-end/38908
32459         * tree-ssa.c (warn_uninitialized_var): Do not warn for seemingly
32460         uninitialized aggregate uses in call arguments.
32461
32462 2009-01-28  Paolo Bonzini  <bonzini@gnu.org>
32463
32464         PR tree-optimization/38984
32465         * tree-ssa-structalias.c (get_constraints_for_1): Do not use
32466         the nothing_id variable if -fno-delete-null-pointer-checks.
32467
32468 2009-01-28  Uros Bizjak  <ubizjak@gmail.com>
32469
32470         PR target/38988
32471         * config/i386/i386.md (set_rip_rex64): Wrap operand 1 in label_ref.
32472         (set_got_offset_rex64): Ditto.
32473
32474 2009-01-27  H.J. Lu  <hongjiu.lu@intel.com>
32475
32476         PR target/38941
32477         * doc/extend.texi: Improve local variable with asm reg.
32478
32479 2009-01-27  Adam Nemet  <anemet@caviumnetworks.com>
32480
32481         * c.opt (Wpacked-bitfield-compat): Change init value to -1.
32482         * c-opts.c (c_common_post_options): If -W*packed-bitfield-compat
32483         was not supplied then set warn_packed_bitfield_compat to the
32484         default value of 1.
32485         * stor-layout.c (place_field): Check warn_packed_bitfield_compat
32486         against 1.
32487
32488 2009-01-27  Richard Guenther  <rguenther@suse.de>
32489
32490         PR tree-optimization/38503
32491         * cfgexpand.c (expand_gimple_basic_block): Ignore
32492         GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
32493         * tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
32494         variables that cannot have TBAA applied.
32495         (compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
32496         statements.
32497
32498 2009-01-27  Uros Bizjak  <ubizjak@gmail.com>
32499
32500         PR middle-end/38969
32501         * calls.c (initialize_argument_information): Do not wrap complex
32502         arguments in SAVE_EXPR.
32503
32504 2009-01-26  Andreas Tobler  <a.tobler@schweiz.org>
32505
32506         * config/t-vxworks (LIBGCC2_INCLUDES): Fix typo.
32507         (INSTALL_LIBGCC): Revert typo commit.
32508
32509 2009-01-26  Richard Guenther  <rguenther@suse.de>
32510
32511         PR tree-optimization/38745
32512         * tree-ssa-alias.c (update_alias_info_1): Exclude RESULT_DECL
32513         from special handling.
32514
32515 2009-01-26  Richard Guenther  <rguenther@suse.de>
32516
32517         PR tree-optimization/38745
32518         * tree-ssa.c (execute_update_addresses_taken): Do not include
32519         variables that cannot possibly be a register in not_reg_needs.
32520         Do not clear TREE_ADDRESSABLE on vars that may not become
32521         registers.
32522         * tree-ssa.c (update_alias_info_1): Include those in the set
32523         of addressable vars.
32524
32525 2009-01-26  Richard Guenther  <rguenther@suse.de>
32526
32527         PR middle-end/38851
32528         * Makefile.in (tree-ssa-dse.o): Add langhooks.h.
32529         * tree-ssa-dse.c: Include langhooks.h
32530         (execute_simple_dse): Remove stores with zero size.
32531
32532 2009-01-24  Jakub Jelinek  <jakub@redhat.com>
32533
32534         PR c/38957
32535         * c-typeck.c (c_finish_return): Handle POINTER_PLUS_EXPR the same way
32536         as PLUS_EXPR.
32537
32538 2009-01-24  Julian Brown  <julian@codesourcery.com>
32539
32540         * config/arm/t-linux-eabi (LIB2FUNCS_STATIC_EXTRA): Add
32541         config/arm/linux-atomic.c.
32542         * config/arm/linux-atomic.c: New.
32543
32544 2009-01-24  Eric Botcazou  <ebotcazou@adacore.com>
32545
32546         * config/sparc/linux.h (DBX_REGISTER_NUMBER): Delete.
32547         * config/sparc/linux64.h (DBX_REGISTER_NUMBER): Likewise.
32548         * config/sparc/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
32549
32550 2009-01-24  H.J. Lu  <hongjiu.lu@intel.com>
32551
32552         PR c/38938
32553         * c-opts.c (c_common_handle_option): Update warn_pointer_sign
32554         properly.
32555
32556 2009-01-24  Sebastian Pop  <sebastian.pop@amd.com>
32557
32558         PR tree-optimization/38953
32559         * graphite.c (graphite_verify): Add a call to verify_loop_closed_ssa.
32560         (scop_adjust_phis_for_liveouts): Initialize false_i to zero.
32561         (gloog): Split the exit of the scop when the scop exit is a loop exit.
32562         (graphite_transform_loops): Only call cleanup_tree_cfg if gloog
32563         changed the CFG.
32564
32565 2009-01-24  Paul Brook  <paul@codesourcery.com>
32566
32567         * config/arm/neon.md (neon_type): Move to arm.md.
32568         (neon_mov<VSTRUCT>): Add neon_type attribute.
32569         * config/arm/arm.md (neon_type): Move to here.
32570         (conds): Add "unconditioal" and use as default for NEON insns.
32571
32572 2009-01-24  Ben Elliston  <bje@au.ibm.com>
32573
32574         * bitmap.h (BITMAP_FREE): Eliminate `implicit conversion from
32575         void *' warning from -Wc++-compat.
32576         * Makefile.in (dominance.o-warn): Remove.
32577
32578 2009-01-23  Paolo Bonzini  <bonzini@gnu.org>
32579
32580         PR tree-optimization/38932
32581         * fold-const.c (fold_unary_ignore_overflow): New.
32582         * tree.h (fold_unary_ignore_overflow): Declare.
32583         * tree-ssa-ccp.c (ccp_fold): Use fold_unary_ignore_overflow.
32584         * tree-ssa-sccvn.c (visit_reference_op_load,
32585         simplify_unary_expression): Likewise.
32586
32587 2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>
32588
32589         * c-decl.c (finish_struct): Move code to set DECL_PACKED after
32590         DECL_BIT_FIELD is alreay known.  Also inherit packed for bitfields
32591         regardless of their type.
32592         * c-common.c (handle_packed_attribute): Don't ignore packed on
32593         bitfields.
32594         * c.opt (Wpacked-bitfield-compat): New warning option.
32595         * stor-layout.c (place_field): Warn if offset of a field changed.
32596         * doc/extend.texi (packed): Mention the ABI change.
32597         * doc/invoke.texi (-Wpacked-bitfield-compat): Document.
32598         (Warning Options): Add it to the list.
32599
32600 2009-01-22  H.J. Lu  <hongjiu.lu@intel.com>
32601
32602         * c-opts.c (c_common_post_options): Fix a typo in comments.
32603
32604 2009-01-22  Steve Ellcey  <sje@cup.hp.com>
32605
32606         PR middle-end/38615
32607         * gimplify.c (gimplify_init_constructor): Fix promotion of const
32608         variables to static.
32609         * doc/invoke.texi (-fmerge-all-constants): Update description.
32610
32611 2009-01-22  Uros Bizjak  <ubizjak@gmail.com>
32612
32613         PR target/38931
32614         * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
32615         (*movdi_1_rex64): Use type "mmx" for alternative 5.
32616
32617 2009-01-22  Richard Earnshaw  <rearnsha@arm.com>
32618
32619         * arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
32620         a word boundary.
32621         (LOCAL_ALIGNMENT): Similarly.
32622
32623 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32624             Joseph Myers  <joseph@codesourcery.com>
32625
32626         * config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
32627         * config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
32628         * config/arm/arm-tune.md: Regenerate.
32629         * doc/invoke.texi (ARM Options): Document -mcpu=iwmmxt2 and
32630         -march=iwmmxt2.
32631
32632 2009-01-22  Mark Shinwell  <shinwell@codesourcery.com>
32633
32634         * config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Bump EABI
32635         version number to five.
32636
32637 2009-01-22  Dodji Seketeli  <dodji@redhat.com>
32638
32639         PR c++/38930
32640         * c-decl.c (clone_underlying_type): Revert PR c++/26693 changes.
32641         * c-common.c (set_underlying_type): Likewise.
32642         (is_typedef_decl ): Likewise
32643         * tree.h: Likewise
32644         (set_underlying_type): Likewise.
32645         (is_typedef_type): Likewise.
32646
32647 2009-01-21  Vladimir Makarov  <vmakarov@redhat.com>
32648
32649         PR middle-end/38587
32650         * ira-color.c (coalesce_spill_slots): Don't coalesce allocnos
32651         crossing setjmps.
32652
32653 2009-01-21  Dave Korn  <dave.korn.cygwin@gmail.com>
32654
32655         PR bootstrap/37660
32656         * config/i386/cygwin.h (SHARED_LIBGCC_SPEC):  New helper macro.
32657         (LIBGCC_SPEC):  Don't define.
32658         (REAL_LIBGCC_SPEC):  Define instead, using SHARED_LIBGCC_SPEC.
32659
32660 2009-01-21  Uros Bizjak  <ubizjak@gmail.com>
32661
32662         PR rtl-optimization/38879
32663         * alias.c (base_alias_check): Unaligned access via AND address can
32664         alias all surrounding object types except those with sizes equal
32665         or wider than the size of unaligned access.
32666
32667 2009-01-21  Dodji Seketeli  <dodji@redhat.com>
32668
32669         PR c++/26693
32670         * c-decl.c (clone_underlying_type): Move this ...
32671         * c-common.c (set_underlying_type): ... here.
32672         Also, make sure the function properly sets TYPE_STUB_DECL() on
32673         the newly created typedef variant type.
32674         (is_typedef_decl ): New entry point.
32675         * tree.h: Added a new member member_types_needing_access_check to
32676         struct tree_decl_non_common.
32677         (set_underlying_type): New entry point.
32678         (is_typedef_type): Likewise.
32679
32680 2009-01-21  Bingfeng Mei  <bmei@broadcom.com>
32681
32682         * alias.c (walk_mems_1, walk_mems_2, insn_alias_sets_conflict_p):
32683         Check whether two instructions have memory references that
32684         belong to conflicting alias sets.  walk_mems_1 and walk_mems_2
32685         are helper functions for traversing.
32686         * alias.h (insn_alias_sets_confilict_p): New prototypes.
32687         * ddg.c (add_inter_loop_mem_dep): Call insn_alias_sets_conflict_p
32688         not to draw dependency edge for instructions with non-conflicting
32689         alias sets.
32690
32691 2009-01-20  Joseph Myers  <joseph@codesourcery.com>
32692
32693         PR other/38758
32694         * longlong.h: Update copyright years.  Use soft-fp license notice.
32695         Sync __clz_tab declaration with glibc.
32696
32697 2009-01-20  Steve Ellcey  <sje@cup.hp.com>
32698
32699         PR target/30687
32700         * doc/extend.texi (syscall_linkage): New.
32701         (version_id): Modify.
32702
32703 2009-01-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
32704             Richard Guenther  <rguenther@suse.de>
32705
32706         PR tree-optimization/38747
32707         PR tree-optimization/38748
32708         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Disable the VCE
32709         conversion if the base address is an indirect reference and the
32710         aliasing sets could cause issues.
32711
32712 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32713
32714         * common.opt (fgraphite, fgraphite-identity): Add comment for
32715         explaining why these options are not documented.
32716
32717 2009-01-20  Sebastian Pop  <sebastian.pop@amd.com>
32718
32719         * graphite.c (stmt_simple_for_scop_p): Also handle cases when
32720         gimple_call_lhs is NULL.
32721
32722 2009-01-20  Paolo Bonzini  <bonzini@gnu.org>
32723
32724         PR target/38868
32725         * emit-rtl.c (adjust_address_1): Make sure memref is never
32726         overwritten.
32727
32728 2009-01-20  Ben Elliston  <bje@au.ibm.com>
32729
32730         * libgcov.c (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32731         const qualifier from arg parameter. Remove unnecessary cast to char *.
32732         * gcov-io.h (__gcov_execl, __gcov_execlp, __gcov_execle): Remove
32733         const qualifier from arg 2.
32734
32735 2009-01-19  Iain Sandoe  <iain.sandoe@sandoe-acoustics.co.uk>
32736
32737         * config/darwin.h: Add static-libgfortran to LINK_SPEC.
32738
32739 2009-01-19  Vladimir Makarov  <vmakarov@redhat.com>
32740
32741         PR c/38869
32742         * rtl.h (reinit_regs): New prototype.
32743         * regclass.c: Include ira.h.
32744         (reinit_regs): New.
32745         * Makefile.in (regclass.o): Add ira.h.
32746         * config/i386/i386.c (ix86_maybe_switch_abi): Use reinit_regs.
32747
32748 2009-01-18  H.J. Lu  <hongjiu.lu@intel.com>
32749
32750         PR target/38736
32751         * c-common.c (handle_aligned_attribute): Use
32752         ATTRIBUTE_ALIGNED_VALUE instead of BIGGEST_ALIGNMENT for
32753         default alignment value.
32754
32755         * c-cppbuiltin.c (c_cpp_builtins): Define __BIGGEST_ALIGNMENT__.
32756
32757         * defaults.h (ATTRIBUTE_ALIGNED_VALUE): New.
32758         * config/i386/i386.h (ATTRIBUTE_ALIGNED_VALUE): Likewise.
32759
32760         * doc/extend.texi: Update __attribute__ ((aligned)).  Document
32761         __BIGGEST_ALIGNMENT__.
32762
32763         * doc/tm.texi: Document ATTRIBUTE_ALIGNED_VALUE.
32764
32765 2009-01-18  Richard Guenther  <rguenther@suse.de>
32766
32767         PR tree-optimization/38819
32768         * tree-flow.h (operation_could_trap_helper_p): Declare.
32769         * tree-eh.c (operation_could_trap_helper_p): Export.
32770         * tree-ssa-sccvn.h (vn_nary_may_trap): Declare.
32771         * tree-ssa-sccvn.c (vn_nary_may_trap): New function.
32772         * tree-ssa-pre.c (insert_into_preds_of_block): Check if we
32773         are about to insert a possibly trapping instruction and fail
32774         in this case.
32775
32776 2009-01-18  Andreas Schwab  <schwab@suse.de>
32777
32778         * doc/install.texi (Configuration): Remove obsolete paragraph
32779         about use of --with-gnu-ld with --with-gnu-as.
32780
32781 2009-01-18  Kazu Hirata  <kazu@codesourcery.com>
32782
32783         * doc/extend.texi, doc/gimple.texi, doc/invoke.texi,
32784         doc/md.texi, doc/sourcebuild.texi, doc/tm.texi: Fix typos.
32785         Follow spelling conventions.
32786
32787 2009-01-18  Ben Elliston  <bje@au.ibm.com>
32788
32789         * bitmap.c (bitmap_obstack_alloc_stat): Adjust cast to eliminate
32790         C++ warning about implicit conversion from void * to struct
32791         bitmap_head_def *.
32792         (bitmap_obstack_free): Likewise for bitmap_element *.
32793         * Makefile.in (bitmap.o-warn): Remove.
32794
32795 2009-01-17  Dave Korn  <dave.korn.cygwin@gmail.com>
32796
32797         * Makefile.in (BACKENDLIBS):  Reorder to match dependencies.
32798
32799 2009-01-17  Sebastian Pop  <sebastian.pop@amd.com>
32800             Tobias Grosser  <tobi.grosser@amd.com>
32801
32802         * graphite.c (graphite_trans_scop_block): Do not block single
32803         nested loops.
32804
32805 2009-01-16  Alexandre Oliva  <aoliva@redhat.com>
32806
32807         * ebitmap.h (ebitmap_iter_init): Initialize all fields.
32808         * ipa-struct-reorg.c (gen_struct_type): Replace known-true
32809         test with assertion.
32810
32811 2009-01-16  Richard Guenther  <rguenther@suse.de>
32812
32813         PR tree-optimization/38835
32814         PR middle-end/36227
32815         * fold-const.c (fold_binary): Remove PTR + INT -> (INT)(PTR p+ INT)
32816         and INT + PTR -> (INT)(PTR p+ INT) folding.
32817         * tree-ssa-address.c (create_mem_ref): Properly use POINTER_PLUS_EXPR.
32818
32819 2009-01-16  Adam Nemet  <anemet@caviumnetworks.com>
32820
32821         PR target/38554
32822         * expmed.c (expand_shift): With SHIFT_COUNT_TRUNCATED, don't lift
32823         the subreg from a lowpart subreg if it is also casting the value.
32824
32825 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32826             Tobias Grosser  <tobi.grosser@amd.com>
32827
32828         * graphite.c (compare_prefix_loops): New.
32829         (build_scop_canonical_schedules): Rewritten.
32830         (graphite_transform_loops): Move build_scop_canonical_schedules
32831         after build_scop_iteration_domain.
32832
32833 2009-01-16  Sebastian Pop  <sebastian.pop@amd.com>
32834             Tobias Grosser  <tobi.grosser@amd.com>
32835
32836         * graphite.c (add_conditions_to_domain): Add the loops to
32837         the dimension of the iteration domain.  Do copy the domain
32838         only when it exists.
32839         (build_scop_conditions_1): Do not call add_conditions_to_domain.
32840         (add_conditions_to_constraints): New.
32841         (can_generate_code_stmt, can_generate_code): Removed.
32842         (gloog): Do not call can_generate_code.
32843         (graphite_transform_loops): Call add_conditions_to_constraints
32844         after building the iteration domain.
32845
32846 2009-01-16  Jakub Jelinek  <jakub@redhat.com>
32847
32848         PR tree-optimization/38789
32849         * tree-ssa-threadedge.c
32850         (record_temporary_equivalences_from_stmts_at_dest): Ignore calls to
32851         __builtin_constant_p.
32852
32853 2009-01-16  Kenneth Zadeck  <zadeck@naturalbridge.com>
32854
32855         * dce.c (delete_unmarked_insns): Reversed the order that insns are
32856         examined before deleting them.
32857
32858 2009-01-16  Richard Earnshaw  <rearnsha@arm.com>
32859
32860         * function.c (aggregate_value_p): Correctly extract the function
32861         type from CALL_EXPR_FN lookup.
32862
32863 2009-01-16  Hariharan Sandanagobalane  <hariharan@picochip.com>
32864
32865         * config/picochip/picochip.c (picochip_override_options): Revert
32866         CFI asm flag disable commited previously.
32867
32868 2009-01-15  Sebastian Pop  <sebastian.pop@amd.com>
32869             Tobias Grosser  <tobi.grosser@amd.com>
32870             Jan Sjodin  <jan.sjodin@amd.com>
32871
32872         * graphite.c (scan_tree_for_params): On substractions negate
32873         all the coefficients of the term.
32874         (clast_to_gcc_expression_red): New.  Handle reduction expressions
32875         of more than two operands.
32876         (clast_to_gcc_expression): Call clast_to_gcc_expression_red.
32877         (get_vdef_before_scop): Handle also the case of default definitions.
32878
32879 2009-01-15  Richard Sandiford  <rdsandiford@googlemail.com>
32880
32881         * caller-save.c (add_used_regs_1, add_used_regs): New functions.
32882         (insert_one_insn): Use them instead of REG_DEAD and REG_INC notes.
32883         Also use them when walking CALL_INSN_FUNCTION_USAGE.
32884
32885 2009-01-15  H.J. Lu  <hongjiu.lu@intel.com>
32886             Joey Ye  <joey.ye@intel.com>
32887
32888         PR middle-end/37843
32889         * cfgexpand.c (expand_stack_alignment): Don't update stack
32890         boundary nor check incoming stack boundary here.
32891         (gimple_expand_cfg): Update stack boundary and check incoming
32892         stack boundary here.
32893
32894 2009-01-15  Kenneth Zadeck  <zadeck@naturalbridge.com>
32895
32896         * dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
32897
32898 2009-01-14  Jakub Jelinek  <jakub@redhat.com>
32899
32900         PR rtl-optimization/38245
32901         * calls.c (expand_call): Add stack arguments to
32902         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32903         ACCUMULATE_OUTGOING_ARGS) and even for args partially passed
32904         in regs and partially in memory or BLKmode arguments.
32905         (emit_library_call_value_1): Add stack arguments to
32906         CALL_INSN_FUNCTION_USAGE even for pure calls (when
32907         ACCUMULATE_OUTGOING_ARGS).
32908         * dce.c: Include tm_p.h.
32909         (find_call_stack_args): New function.
32910         (deletable_insn_p): Call it for CALL_P insns.  Add ARG_STORES
32911         argument.
32912         (mark_insn): Call find_call_stack_args for CALL_Ps.
32913         (prescan_insns_for_dce): Walk insns backwards in bb rather than
32914         forwards.  Allocate and free arg_stores bitmap if needed, pass it
32915         down to deletable_insn_p, don't mark stores set in arg_stores
32916         bitmap, clear the bitmap at the beginning of each bb.
32917         * Makefile.in (dce.o): Depend on $(TM_P_H).
32918
32919 2009-01-14  Michael Meissner  <gnu@the-meissners.org>
32920
32921         PR target/22599
32922         * config/i386/i386.c (print_operand): Add tests for 'D', 'C', 'F', 'f'
32923         to make sure the insn is a conditional test (bug 22599).  Reformat a
32924         few long lines.
32925
32926 2009-01-14  Sebastian Pop  <sebastian.pop@amd.com>
32927
32928         PR middle-end/38431
32929         * graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
32930         (scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
32931         (gloog): Do not call cleanup_tree_cfg.
32932         (graphite_transform_loops): Call cleanup_tree_cfg after all
32933         scops have been code generated.
32934
32935 2009-01-14  Basile Starynkevitch  <basile@starynkevitch.net>
32936         * doc/gty.texi (Invoking the garbage collector): Added new node
32937         and section documenting ggc_collect.
32938
32939 2009-01-14  Richard Guenther  <rguenther@suse.de>
32940
32941         PR tree-optimization/38826
32942         PR middle-end/38477
32943         * tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
32944         initialization notes only if we actually emitted a warning.
32945         (intra_create_variable_infos): Add constraints for a result decl
32946         that is passed by hidden reference.
32947         (build_pred_graph): Mark all related variables non-direct on
32948         address-taking.
32949
32950 2009-01-14  Nick Clifton  <nickc@redhat.com>
32951
32952         * ira-conflicts.c: Include addresses.h for the definition of
32953         base_reg_class.
32954         (ira_build_conflicts): Use base_reg_class instead of BASE_REG_CLASS.
32955         * Makefile.in: Add a dependency of ira-conflicts.o on addresses.h.
32956
32957 2009-01-13  Vladimir Makarov  <vmakarov@redhat.com>
32958
32959         PR target/38811
32960         * Makefile.in (ira-lives.o): Add except.h.
32961
32962         * ira-lives.c: Include except.h.
32963         (process_bb_node_lives): Process can_throw_internal.
32964
32965 2009-01-13  Jakub Jelinek  <jakub@redhat.com>
32966
32967         PR rtl-optimization/38774
32968         * combine.c (simplify_set): When undoing cc_use change, don't do
32969         PUT_CODE on the newly created comparison, but instead put back the
32970         old comparison.
32971
32972 2009-01-13  Joseph Myers  <joseph@codesourcery.com>
32973
32974         * doc/invoke.texi (ARM Options): Update lists of -mcpu and -march
32975         values.  Remove duplicate arm8 entry.
32976
32977 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32978
32979         PR tree-optimization/38786
32980         * graphite.c (expand_scalar_variables_ssa_name): New, outlined from
32981         the SSA_NAME case of expand_scalar_variables_expr.
32982         Set the type of an expression to the type of its assign statement.
32983         (expand_scalar_variables_expr): Also gather the scalar computation
32984         used to index the memory access.  Do not pass loop_p.
32985         Fix comment.  Stop recursion on tcc_constant or tcc_declaration.
32986         (expand_scalar_variables_stmt): Pass to expand_scalar_variables_expr
32987         the gimple_stmt_iterator where it inserts new code.
32988         Do not pass loop_p.
32989         (copy_bb_and_scalar_dependences): Do not pass loop_p.
32990         (translate_clast): Update call to copy_bb_and_scalar_dependences.
32991
32992 2009-01-13  Sebastian Pop  <sebastian.pop@amd.com>
32993
32994         * graphite.h (debug_value): Removed.
32995         * graphite.c (debug_value): Removed.
32996
32997 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
32998
32999         * config/arm/arm.c (output_move_double): Don't synthesize thumb-2
33000         ldrd/strd with two 32-bit instructions.
33001
33002 2009-01-13  Richard Earnshaw  <rearnsha@arm.com>
33003
33004         * config/arm/arm.c (struct processors): Pass for speed down into
33005         cost helper functions.
33006         (const_ok_for_op): Handle COMPARE and inequality nodes.
33007         (arm_rtx_costs_1): Rewrite.
33008         (arm_size_rtx_costs): Update prototype.
33009         (arm_rtx_costs): Pass speed down to helper functions.
33010         (arm_slowmul_rtx_costs): Rework cost calculations.
33011         (arm_fastmul_rtx_costs, arm_xscale_rtx_costs): Likewise.
33012         (arm_9e_rtx_costs): Likewise.
33013
33014 2009-01-13  Uros Bizjak  <ubizjak@gmail.com>
33015
33016         * config/alpha/alpha.c (alpha_legitimate_address_p): Explicit
33017         relocations of local symbols wider than UNITS_PER_WORD are not valid.
33018         (alpha_legitimize_address): Do not split local symbols wider than
33019         UNITS_PER_WORD into HIGH/LO_SUM parts.
33020
33021 2009-01-13  Danny Smith  <dannysmith@users.sourceforge.net>
33022
33023         PR bootstrap/38580
33024         * gcc.c (process_command): Replace call to execvp with calls
33025         to pex_one and exit.
33026
33027 2009-01-03  Anatoly Sokolov  <aesok@post.ru>
33028
33029         PR target/29141
33030         * config/avr/t-avr (LIB1ASMFUNCS): Add _tablejump_elpm.
33031         * config/avr/libgcc.S (__do_global_ctors, __do_global_dtors): Add
33032         variant for devices with 3-byte PC.
33033         (__tablejump_elpm__): New.
33034
33035 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33036
33037         PR c/32041
33038         * c-parser.c (c_parser_postfix_expression): Allow `->' in
33039         offsetof member-designator, handle it as `[0].'.
33040
33041 2009-01-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33042
33043         * pa.c (pa_asm_output_mi_thunk): Use pc-relative branch to thunk
33044         function when not using named sections on targets with named sections
33045         if branch distance is less than 262132.
33046
33047 2009-01-12  Richard Earnshaw  <rearnsha@arm.com>
33048
33049         * combine.c (combine_instructions):  Recompute
33050         optimize_this_for_speed_p  for each BB in the main combine loop.
33051
33052 2009-01-12  Tomas Bily  <tbily@suse.cz>
33053
33054         PR middlend/38385
33055         * tree-loop-distribution.c (prop_phis): New function.
33056         (generate_builtin): Call prop_phis.
33057
33058 2009-01-12  Jakub Jelinek  <jakub@redhat.com>
33059
33060         PR tree-optimization/38807
33061         * tree-ssa-reassoc.c (remove_visited_stmt_chain): Don't look at
33062         gimple_visited_p unless stmt is GIMPLE_ASSIGN.
33063
33064 2009-01-11  Adam Nemet  <anemet@caviumnetworks.com>
33065
33066         * expmed.c (store_bit_field_1): Properly truncate the paradoxical
33067         subreg of op0 to the original op0.
33068
33069 2009-01-11  Laurent GUERBY  <laurent@guerby.net>
33070
33071         * doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
33072
33073 2009-01-11  Markus Schoepflin  <markus.schoepflin@comsoft.de>
33074
33075         PR debug/7055
33076         * mips-tfile.c (parse_def): Fix parsing of def strings
33077         starting with digits.
33078
33079 2009-01-10  Jakub Jelinek  <jakub@redhat.com>
33080
33081         PR target/38695
33082         * config/arm/arm.c (arm_is_long_call_p): Don't call
33083         arm_function_in_section_p if decl isn't a FUNCTION_DECL.
33084
33085 2009-01-09  Steven Bosscher  <steven@gcc.gnu.org>
33086
33087         * regrename.c (regrename_optimize): Fix dumping.
33088         (find_oldest_value_reg): Preserve REG_POINTER.
33089         (copy_hardreg_forward_1): Likewise.
33090
33091 2009-01-09  Diego Novillo  <dnovillo@google.com>
33092
33093         * gimple.h (struct gimple_statement_base) <uid>: Document
33094         the restrictions on its use.
33095         (gimple_uid): Tidy.
33096         (gimple_set_uid): Tidy.
33097
33098 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33099
33100         * config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
33101         zero guard even if align_bytes != 0 and count is smaller than
33102         size_needed.
33103
33104 2009-01-09  Vladimir Makarov  <vmakarov@redhat.com>
33105
33106         PR rtl-optimization/38495
33107         * ira-emit.c (print_move_list, ira_debug_move_list): New functions.
33108         (add_range_and_copies_from_move_list): Print all added ranges.
33109         Add ranges to memory optimized destination.
33110
33111 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33112
33113         PR target/38686
33114         PR target/38708
33115         * config/i386/i386.c (override_options): Reject
33116         -mstringop-strategy=rep_8byte with -m32.
33117         (ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
33118         to 1.  Do count comparison against epilogue_size_needed at compile
33119         time even when count_exp was constant forced into register.  For
33120         size_needed don't jump to epilogue, instead just avoid aligning
33121         and invoke the body algorithm.  If need_zero_guard, add zero guard
33122         even if count is non-zero, but smaller than size_needed + number of
33123         bytes that could be stored for alignment.
33124         (ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
33125         to 1.  If need_zero_guard, add zero guard even if count is non-zero,
33126         but smaller than size_needed + number of bytes that could be stored
33127         for alignment.  Compare size_needed with epilogue_size_needed instead
33128         of desired_align - align, don't adjust size_needed, pass
33129         epilogue_size_needed to the epilogue expanders.
33130
33131         PR c/35742
33132         * c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like BIND_EXPR.
33133
33134 2009-01-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33135
33136         * pa.c (last_address): Change to unsigned.
33137         (update_total_code_bytes): Change argument to unsigned.  Don't
33138         check if insn addresses are set.
33139         (pa_output_function_epilogue): Set last_address to UINT_MAX if insn
33140         addresses are not set.
33141         (pa_asm_output_mi_thunk): Handle wrap when updating last_address.
33142
33143 2009-01-09  Nick Clifton  <nickc@redhat.com>
33144
33145         * config/sh/symbian.c: Replace uses of DECL_INLINE with
33146         DECL_DECLARED_INLINE_P.
33147
33148 2009-01-09  Jakub Jelinek  <jakub@redhat.com>
33149
33150         PR middle-end/38347
33151         * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
33152         GET_MODE (op0) in operand_subword_force calls.
33153
33154         PR middle-end/38771
33155         * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
33156         fold_convert arg0 operands to TREE_TYPE (op0) first.
33157
33158 2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>
33159
33160         * params.def (ira-max-conflict-table-size): Decrease default value
33161         to 1000.
33162
33163 2009-01-08  Jakub Jelinek  <jakub@redhat.com>
33164
33165         PR tree-optimization/37031
33166         * lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
33167         on parameter_set.
33168         (build_access_matrix): Reserve correct size for AM_MATRIX vector,
33169         allocate it using gc instead of heap, use VEC_quick_push instead of
33170         VEC_safe_push.
33171         * graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
33172         instead of heap, use VEC_quick_push instead of VEC_safe_push.
33173         * tree-data-ref.h (struct access_matrix): Change matrix to gc
33174         allocated vector from heap allocated.
33175         * lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
33176         * tree-loop-linear.c (linear_transform_loops): Allocate nest
33177         vector only after perfect_loop_nest_depth call.
33178
33179 2009-01-08  Sebastian Pop  <sebastian.pop@amd.com>
33180             Jan Sjodin  <jan.sjodin@amd.com>
33181
33182         PR tree-optimization/38559
33183         * graphite.c (debug_value, copy_constraint,
33184         swap_constraint_variables, scale_constraint_variable, ): New.
33185         (get_lower_bound, get_upper_bound): Removed.
33186         (graphite_trans_bb_strip_mine): Clean up this code that works
33187         only for constant number of iterations.  Fully copy upper and
33188         lower bound constraints, not only the constant part of them.
33189         * graphite.h (debug_value): Declared.
33190
33191 2009-01-08  Ira Rosen  <irar@il.ibm.com>
33192
33193         PR tree-optimization/37194
33194         * tree-vect-transform.c (vect_estimate_min_profitable_iters):
33195         Don't add the cost of cost model guard in prologue to scalar
33196         outside cost in case of known number of iterations.
33197
33198 2009-01-07  Nathan Froyd  <froydnj@codesourcery.com>
33199             Alan Modra  <amodra@bigpond.net.au>
33200
33201         * config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
33202         non-word-aligned REG+CONST addressing.
33203
33204 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33205
33206         PR target/38706
33207         * config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
33208         free_after_compilation when outputting a thunk.
33209         (alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
33210         Do not call free_after_compilation here.
33211
33212 2009-01-07  Uros Bizjak  <ubizjak@gmail.com>
33213
33214         * config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
33215         (ix86_valid_target_attribute_inner_p): Ditto.
33216
33217 2009-01-07  Jan Sjodin  <jan.sjodin@amd.com>
33218
33219         PR tree-optimization/38492
33220         PR tree-optimization/38498
33221         * tree-check.c (operator_is_linear, scev_is_linear_expression): New.
33222         * tree-chrec.h (scev_is_linear_expression): Declared.
33223         * graphite.c (graphite_cannot_represent_loop_niter): New.
33224         (scopdet_basic_block_info): Call graphite_cannot_represent_loop_niter.
33225         (graphite_loop_normal_form): Use gcc_assert.
33226         (scan_tree_for_params): Use CASE_CONVERT.
33227         (phi_node_is_iv, bb_contains_non_iv_scalar_phi_nodes): New.
33228         (build_scop_conditions_1): Call bb_contains_non_iv_scalar_phi_nodes.
33229         Use gcc_assert.  Discard scops that contain unhandled cases.
33230         (build_scop_conditions): Return a boolean status for unhandled cases.
33231         (strip_mine_profitable_p): Print the loop number, not its depth.
33232         (is_interchange_valid): Pass the depth of the loop nest, don't
33233         recompute it wrongly.
33234         (graphite_trans_bb_block): Same.
33235         (graphite_trans_bb_block): Print tentative of loop blocking.
33236         (graphite_trans_scop_block): Do not print that the loop has been
33237         blocked.
33238         (graphite_transform_loops): Do not handle scops that contain condition
33239         scalar phi nodes.
33240
33241 2009-01-07  H.J. Lu  <hongjiu.lu@intel.com>
33242
33243         AVX Programming Reference (December, 2008)
33244         * config/i386/avxintrin.h (_mm256_stream_si256): New.
33245         (_mm256_stream_pd): Likewise.
33246         (_mm256_stream_ps): Likewise.
33247
33248         * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVNTDQ256,
33249         IX86_BUILTIN_MOVNTPD256 and IX86_BUILTIN_MOVNTPS256.
33250         (ix86_special_builtin_type): Add VOID_FTYPE_PV4DI_V4DI.
33251         (bdesc_special_args): Add __builtin_ia32_movntdq256,
33252         __builtin_ia32_movntpd256 and __builtin_ia32_movntps256.
33253         (ix86_init_mmx_sse_builtins): Handle VOID_FTYPE_PV4DI_V4DI.
33254         (ix86_expand_special_args_builtin): Likewise.
33255
33256         * config/i386/sse.md (AVXMODEDI): New.
33257         (avx_movnt<mode>): Likewise.
33258         (avx_movnt<mode>): Likewise.
33259         (<sse>_movnt<mode>): Remove AVX support.
33260         (sse2_movntv2di): Likewise.
33261
33262 2009-01-07  Richard Guenther  <rguenther@suse.de>
33263
33264         PR middle-end/38751
33265         * fold-const.c (extract_muldiv): Remove obsolete comment.
33266         (fold_plusminus_mult_expr): Undo MINUS_EXPR
33267         to PLUS_EXPR canonicalization for the canonicalization.
33268
33269 2009-01-07  Gerald Pfeifer  <gerald@pfeifer.com>
33270
33271         * doc/install.texi (alpha*-dec-osf*): Remove note on 32-bit
33272         hosted cross-compilers generating less efficient code.
33273
33274 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33275
33276         * function.h (rtl_data): Add a dbr_scheduled_p field.
33277         * reorg.c (dbr_schedule): Set it.
33278         (gate_handle_delay_slots): Check it.
33279         * config/mips/mips.c (mips_base_delayed_branch): Delete.
33280         (mips_reorg): Check flag_delayed_branch instead of
33281         mips_base_delayed_branch.
33282         (mips_override_options): Don't set mips_base_delayed_branch
33283         or flag_delayed_branch.
33284
33285 2009-01-06  Richard Sandiford  <rdsandiford@googlemail.com>
33286
33287         PR rtl-optimization/38426.
33288         * ira.c (ira): Set current_function_is_leaf earlier.
33289
33290 2009-01-06  Jakub Jelinek  <jakub@redhat.com>
33291
33292         PR rtl-optimization/38722
33293         * combine.c (try_combine): Don't modify PATTERN (i3) and notes
33294         too early, only set a flag and modify after last possible
33295         undo_all point.
33296
33297 2009-01-06  Janis Johnson  <janis187@us.ibm.com>
33298
33299         PR c/34252
33300         * ginclude/float.h: Rename DECnn_DEN to DECnn_SUBNORMAL_MIN.
33301         * real.c (decimal_single_format): Correct values of emin and emax.
33302         (decimal_double_format): Ditto.
33303         (decimal_quad_format): Ditto.
33304         * c-cppbuiltin.c (builtin_define_decimal_float_constants): Adjust
33305         computation of DECnn_MIN and DECnn_MAX for corrected values of
33306         emin and emax.  Define __DECnn_SUBNORMAL_MIN__ instead of
33307         __DECnn_MIN__, and adjust its computation for the corrected value
33308         of emin.
33309
33310 2009-01-06  Jan Hubicka  <jh@suse.cz>
33311
33312         PR target/38744
33313         * config/i386/i386.c (ix86_expand_call): Use ARRAY_SIZE.
33314
33315 2009-01-06  Gerald Pfeifer  <gerald@pfeifer.com>
33316
33317         * doc/contrib.texi (Contributors): Slightly adjust the end note.
33318         Add Robert Clark to the list of testers.
33319
33320 2009-01-06  Jan Hubicka  <jh@suse.cz>
33321             Kai Tietz  <kai.tietz@onevision.com>
33322
33323         * config/i386/i386.md (*msabi_syvabi): Add SSE regs clobbers.
33324         * config/i386/i386.c (ix86_expand_call): Add clobbers.
33325
33326 2009-01-06  Jan Hubicka  <jh@suse.cz>
33327             Kai Tietz  <kai.tietz@onevision.com>
33328
33329         * config/i386/i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used
33330         for w64 ABI.
33331         * config/i386/i386.c (struct ix86_frame): Add padding0 and nsseregs.
33332         (ix86_nsaved_regs): Count only general purpose regs.
33333         (ix86_nsaved_sseregs): New.
33334         (ix86_compute_frame_layout): Update nsseregs; set preferred alignment
33335         to 16 for w64; compute padding and size of sse reg save area.
33336         (ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only
33337         general purpose regs.
33338         (ix86_emit_save_sse_regs_using_mov): New.
33339         (ix86_expand_prologue): Save SSE regs if needed.
33340         (ix86_emit_restore_regs_using_mov): Use only general purpose regs.
33341         (ix86_emit_restore_sse_regs_using_mov): New.
33342         (ix86_expand_epilogue): Save SSE regs if needed.
33343
33344 2009-01-06  Jan Hubicka  <jh@suse.cz>
33345             Kai Tietz  <kai.tietz@onevision.com>
33346
33347         * config/i386/i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
33348         * config/i386/i386.c (init_cumulative_args): Disallow calls of MSABI
33349         functions when accumulate outgoing args is off.
33350
33351 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33352
33353         PR bootstrap/38742
33354         * ira-color.c (ira_reuse_stack_slot): Check ENABLE_IRA_CHECKING
33355         before using pseudos_have_intersected_live_ranges_p.
33356
33357         * ira-int.h (ira_assert): Always define.
33358
33359 2009-01-06  H.J. Lu  <hongjiu.lu@intel.com>
33360
33361         AVX Programming Reference (December, 2008)
33362         * config/i386/avxintrin.h (_mm_permute2_pd): Removed.
33363         (_mm256_permute2_pd): Likewise.
33364         (_mm_permute2_ps): Likewise.
33365         (_mm256_permute2_ps): Likewise.
33366         * config/i386/i386.md (UNSPEC_VPERMIL2): Likewise.
33367         * config/i386/sse.md (avx_vpermil2<mode>3): Likewise.
33368
33369         * config/i386/i386.c (ix86_builtins): Remove
33370         IX86_BUILTIN_VPERMIL2PD, IX86_BUILTIN_VPERMIL2PS,
33371         IX86_BUILTIN_VPERMIL2PD256 and IX86_BUILTIN_VPERMIL2PS256.
33372         (ix86_builtin_type): Remove V8SF_FTYPE_V8SF_V8SF_V8SI_INT,
33373         V4DF_FTYPE_V4DF_V4DF_V4DI_INT, V4SF_FTYPE_V4SF_V4SF_V4SI_INT
33374         and V2DF_FTYPE_V2DF_V2DF_V2DI_INT.
33375         (bdesc_args): Remove __builtin_ia32_vpermil2pd,
33376         __builtin_ia32_vpermil2ps, __builtin_ia32_vpermil2pd256 and
33377         __builtin_ia32_vpermil2ps256.
33378         (ix86_init_mmx_sse_builtins): Updated.
33379         (ix86_expand_args_builtin): Likewise.
33380
33381 2009-01-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
33382
33383         * pa.c (output_call): Relocate non-jump insns in the delay slot of
33384         long absolute calls when generating PA 2.0 code.
33385
33386 2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
33387
33388         PR rtl-optimization/38583
33389         * params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
33390
33391         * params.def (ira-max-conflict-table-size): New.
33392
33393         * doc/invoke.texi (ira-max-conflict-table-size): Decribe.
33394
33395         * ira.h (ira_conflicts_p): New external definition.
33396
33397         * ira-conflicts.c (build_conflict_bit_table): Do not build too big
33398         table.  Report this.  Return result of building.
33399         (ira_build_conflicts): Use ira_conflicts_p.  Check result of
33400         building conflict table.
33401
33402         * ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
33403         (ira_color): Use ira_conflicts_p.
33404
33405         * global.c: Include ira.h.
33406         (pseudo_for_reload_consideration_p, build_insn_chain): Use
33407         ira_conflicts_p.
33408
33409         * Makefile.in (global.o): Add ira.h.
33410
33411         * ira-build.c (mark_all_loops_for_removal,
33412         propagate_some_info_from_allocno): New.
33413         (remove_unnecessary_allocnos): Call
33414         propagate_some_info_from_allocno.
33415         (remove_low_level_allocnos): New.
33416         (remove_unnecessary_regions): Add parameter.  Call
33417         mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
33418         parameter to remove_unnecessary_regions.
33419         (ira_build): Remove all regions but root if the conflict table was
33420         not built.  Update conflict hard regs for allocnos crossing calls.
33421
33422         * ira.c (ira_conflicts_p): New global.
33423         (ira): Define and use ira_conflicts_p.
33424
33425         * reload1.c (compute_use_by_pseudos, reload, count_pseudo,
33426         count_spilled_pseudo, find_reg, alter_reg, finish_spills,
33427         emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
33428
33429 2009-01-06  Ben Elliston  <bje@au.ibm.com>
33430
33431         * gengtype-lex.l (YY_NO_INPUT): Define.
33432
33433 2009-01-05  Andrew Pinski  <andrew_pinski@playstation.sony.com>
33434
33435         PR c/34911
33436         * c-common.c (handle_vector_size_attribute): Also reject
33437         BOOLEAN_TYPE types.
33438
33439 2009-01-05  Sebastian Pop  <sebastian.pop@amd.com>
33440
33441         PR tree-optimization/38492
33442         * graphite.c (rename_map_elt, debug_rename_elt,
33443         debug_rename_map_1, debug_rename_map, new_rename_map_elt,
33444         rename_map_elt_info, eq_rename_map_elts,
33445         get_new_name_from_old_name, bb_in_sese_p): Moved around.
33446         (sese_find_uses_to_rename_use): Renamed sese_build_livein_liveouts_use.
33447         (sese_find_uses_to_rename_bb): Renamed sese_build_livein_liveouts_bb.
33448         (sese_build_livein_liveouts): New.
33449         (new_sese, free_sese): New.
33450         (new_scop): Call new_sese.
33451         (free_scop): Call free_sese.
33452         (rename_variables_from_edge, rename_phis_end_scop): Removed.
33453         (register_old_new_names): Renamed register_old_and_new_names.
33454         (register_scop_liveout_renames, add_loop_exit_phis,
33455         insert_loop_close_phis, struct igp,
33456         default_liveout_before_guard, add_guard_exit_phis,
33457         insert_guard_phis, copy_renames): New.
33458         (translate_clast): Call insert_loop_close_phis and insert_guard_phis.
33459         (sese_add_exit_phis_edge): Renamed scop_add_exit_phis_edge.
33460         (rewrite_into_sese_closed_ssa): Renamed scop_insert_phis_for_liveouts.
33461         (scop_adjust_phis_for_liveouts): New.
33462         (gloog): Call scop_adjust_phis_for_liveouts.
33463
33464         * graphite.h (struct sese): Documented.  Added fields liveout,
33465         num_ver and livein.
33466         (SESE_LIVEOUT, SESE_LIVEIN, SESE_LIVEIN_VER, SESE_NUM_VER): New.
33467         (new_sese, free_sese, sese_build_livein_liveouts): Declared.
33468         (struct scop): Added field liveout_renames.
33469         (SCOP_LIVEOUT_RENAMES): New.
33470
33471 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33472
33473         PR tree-optimization/38510
33474         * graphite.c (recompute_all_dominators): Call mark_irreducible_loops.
33475         (translate_clast): Call recompute_all_dominators before
33476         graphite_verify.
33477         (gloog): Call recompute_all_dominators before graphite_verify.
33478
33479 2009-01-05  Harsha Jagasia  <harsha.jagasia@amd.com>
33480             Jan Sjodin  <jan.sjodin@amd.com>
33481
33482         PR tree-optimization/38500
33483         * graphite.c (create_sese_edges): Call fix_loop_structure after
33484         splitting blocks.
33485
33486 2009-01-05  Joel Sherrill  <joel.sherrill@oarcorp.com>
33487
33488         * config.gcc: Add m32r*-*-rtems*.
33489         * config/m32r/rtems.h: New file.
33490
33491 2009-01-05  Ben Elliston  <bje@au.ibm.com>
33492
33493         * Makefile.in (.po.gmo): Use mkinstalldirs, not test -d || mkdir.
33494         (.po.pox): Likewise.
33495         (po/gcc.pot): Likewise.
33496
33497 2009-01-04  David S. Miller  <davem@davemloft.net>
33498
33499         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
33500         (STARTING_FRAME_OFFSET): Always set to zero.
33501
33502 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33503
33504         * tree.def (LSHIFT_EXPR, RSHIFT_EXPR): Add commentary.
33505         * tree-cfg.c (verify_gimple_assign_binary): Allow shifts of
33506         fixed-point types, and vectors of the same.
33507
33508 2009-01-04  Richard Sandiford  <rdsandiford@googlemail.com>
33509
33510         * config/mips/sync.md (*mb_barrier): Rename to...
33511         (*memory_barrier): ...this.
33512
33513 2009-01-04  Jonathan Wakely  <jwakely.gcc@gmail.com>
33514
33515         * doc/extend.texi (Function Attributes): Move @cindex after @item
33516         for 'artificial' and 'flatten'. Fix grammar for 'externally_visible'
33517         and put in alphabetical order. Fix 'target' name and put in order.
33518         * doc/invoke.texi (-Wstrict-null-sentinel, -fipa-matrix-reorg): Fix
33519         typos.
33520
33521 2009-01-04  Uros Bizjak  <ubizjak@gmail.com>
33522
33523         * config/s390/s390.md (UNSPEC_MB): Rename from UNSPECV_MB.
33524         (memory_barrier): Expand as unspec instead of unspec_volatile.
33525         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33526         (*memory_barrier): Define as unspec instead of unspec_volatile.
33527         Use (match_dup 0) as input operand.
33528
33529         * config/sparc/sparc.md (UNSPEC_MEMBAR): Rename from UNSPECV_MEMBAR.
33530         * config/sparc/sync.md (memory_barrier): Expand as unspec instead of
33531         unspec_volatile.  Remove mem:BLK from insn operands.  Use Pmode
33532         scratch register.  Remove operand 1.
33533         (*stbar): Define as unspec instead of unspec_volatile.
33534         Use (match_dup 0) as input operand, remove (const_int 8).
33535         (*membar): Define as unspec instead of unspec_volatile.
33536         Use (match_dup 0) as input operand, remove input operand 2.
33537
33538         * config/xtensa/xtensa.md (UNSPEC_MEMW): Rename from UNSPECV_MEMW.
33539         (memory_barrier): Expand as unspec instead of unspec_volatile.
33540         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33541         (*memory_barrier): Define as unspec instead of unspec_volatile.
33542         Use (match_dup 0) as input operand.
33543
33544         * config/ia64/sync.md (memory_barrier): Redefine as expander pattern.
33545         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33546         Set volatile flag on operand 0.
33547         (*memory_barrier): New insn pattern.
33548
33549         * config/rs6000/sync.md (memory_barrier): Remove mem:BLK from
33550         insn operands.
33551         (*memory_barrier): Use (match_dup 0) as input operand.
33552
33553         * config/mips/sync.md (memory_barrier): Redefine as expander pattern.
33554         Remove mem:BLK from insn operands.  Use Pmode scratch register.
33555         Set volatile flag on operand 0.
33556         (*mb_internal): New insn pattern.
33557
33558         * config/alpha/sync.md (*memory_barrier): Rename from *mb_internal.
33559
33560 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33561
33562         PR middle-end/38586
33563         * function.c (struct temp_slot): Move to the section of the file
33564         that deals with temp slots.  Remove field 'address'.
33565         (temp_slot_address_table): New hash table of address -> temp slot.
33566         (struct temp_slot_address_entry): New struct, items for the table.
33567         (temp_slot_address_compute_hash, temp_slot_address_hash,
33568         temp_slot_address_eq, insert_temp_slot_address): Support functions
33569         for the new table.
33570         (find_temp_slot_from_address): Rewrite to use the new hash table.
33571         (remove_unused_temp_slot_addresses): Remove addresses of temp
33572         slots that have been made available.
33573         (remove_unused_temp_slot_addresses_1): Call-back for htab_traverse,
33574         worker function for remove_unused_temp_slot_addresses.
33575         (assign_stack_temp_for_type): Don't clear the temp slot address list.
33576         Add the temp slot address to the address -> temp slot map.
33577         (update_temp_slot_address): Update via insert_temp_slot_address.
33578         (free_temp_slots): Call remove_unused_temp_slot_addresses.
33579         (pop_temp_slots): Likewise.
33580         (init_temp_slots): Allocate the address -> temp slot map, or empty
33581         the map if it is already allocated.
33582         (prepare_function_start): Initialize temp slot processing.
33583
33584 2009-01-04  Steven Bosscher  <steven@gcc.gnu.org>
33585
33586         PR middle-end/38584
33587         * cfgexpand.c (estimate_stack_frame_size): Simplify the estimate:
33588         Calculate the size of all stack vars assuming no packing of stack
33589         vars will happen, replacing a quadratic algorithm with a linear one.
33590
33591 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33592
33593         PR target/38707
33594         * expmed.c (store_bit_field_1): Don't modify op0 if movstrict insn
33595         can't be used.
33596
33597 2009-01-03  Diego Novillo  <dnovillo@google.com>
33598
33599         * doc/contrib.texi: Update contributions.
33600
33601 2009-01-03  Jakub Jelinek  <jakub@redhat.com>
33602
33603         PR c++/38705
33604         * builtins.c (fold_builtin_memory_op): Give up if either operand
33605         is volatile.  Set srctype or desttype to non-qualified version
33606         of the other type.
33607
33608         PR c/38700
33609         * builtins.c (fold_builtin_expect): Only check DECL_WEAK for VAR_DECLs
33610         and FUNCTION_DECLs.
33611
33612 2009-01-02  Kenneth Zadeck  <zadeck@naturalbridge.com>
33613
33614         PR rtl-optimization/35805
33615         * df-problems.c (df_lr_finalize): Add recursive call to resolve lr
33616         problem if fast dce is able to remove any instructions.
33617         * dce.c (dce_process_block): Fix dump message.
33618
33619 2009-01-02  Mark Mitchell  <mark@codesourcery.com>
33620
33621         PR 33649
33622         * tree-ssa-pre.c (compute_antic): Correct loop bounds.
33623
33624 2009-01-02  Jakub Jelinek  <jakub@redhat.com>
33625
33626         PR middle-end/38690
33627         * tree-flow.h (op_code_prio, op_prio): New prototypes.
33628         * tree-pretty-print.c (op_code_prio): New function.
33629         (op_prio): No longer static.  Use op_code_prio.
33630         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs):
33631         Use op_prio and op_code_prio to determine if () should be
33632         printed around operand(s) or not.
33633
33634         * gimple-pretty-print.c (dump_unary_rhs, dump_binary_rhs,
33635         dump_gimple_call, dump_gimple_switch, dump_gimple_cond,
33636         dump_gimple_label, dump_gimple_try, dump_symbols, dump_gimple_phi,
33637         dump_gimple_mem_ops, dump_bb_header, dump_bb_end, pp_cfg_jump): Use
33638         pp_character instead of pp_string for single letter printing.
33639
33640 2009-01-02  Richard Sandiford  <rdsandiford@googlemail.com>
33641
33642         * doc/extend.texi: Fix '#pragma GCC option' typo.
33643
33644 2009-01-02  Richard Guenther  <rguenther@suse.de>
33645
33646         * doc/install.texi (--enable-checking): Mention different
33647         default for stage1.
33648         (--enable-stage1-checking): Document.
33649
33650 2009-01-01  Andrew Pinski  <pinskia@gmail.com>
33651
33652         PR middle-end/30142
33653         * tree-cfg.c (verify_expr): Add INDIRECT_REF case.  Change MODIFY_EXPR
33654         case to be an error.
33655
33656 2009-01-02  Ben Elliston  <bje@au.ibm.com>
33657
33658         * config/fp-bit.h (pack_d): Constify argument.
33659         * config/fp-bit.c (makenan): Constify return type. Remove casts.
33660         (isnan): Constify argument.
33661         (isinf): Likewise.
33662         (iszero): Likewise.
33663         (pack_d): Likewise.
33664         (_fpadd_parts): Constify return type.
33665         (_fpmul_parts): Likewise.
33666         (_fpdiv_parts): Likewise.
33667
33668 2009-01-01  Jakub Jelinek  <jakub@redhat.com>
33669
33670         PR c/36489
33671         * c-typeck.c (add_pending_init): Add IMPLICIT argument.  Only
33672         warn about overwriting initializer with side-effects or
33673         -Woverride-init if !IMPLICIT.
33674         (output_init_element): Likewise.  Pass IMPLICIT down to
33675         add_pending_init.
33676         (process_init_element): Add IMPLICIT argument.  Pass it down
33677         to output_init_element.
33678         (push_init_element, pop_init_level, set_designator): Adjust
33679         process_init_element callers.
33680         (set_nonincremental_init, set_nonincremental_init_from_string):
33681         Adjust add_pending_init callers.
33682         (output_pending_init_elements): Adjust output_init_element callers.
33683         * c-tree.h (process_init_element): Adjust prototype.
33684         * c-parser.c (c_parser_initelt, c_parser_initval): Adjust
33685         process_init_element callers.
33686
33687 \f
33688 Copyright (C) 2009 Free Software Foundation, Inc.
33689
33690 Copying and distribution of this file, with or without modification,
33691 are permitted in any medium without royalty provided the copyright
33692 notice and this notice are preserved.