OSDN Git Service

PR bootstrap/40408
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-06-10  Ian Lance Taylor  <iant@google.com>
2
3         PR bootstrap/40408
4         * graphite.c (add_conditions_to_domain): Change SWITCH_EXPR to
5         GIMPLE_SWITCH.
6
7 2009-06-10  Revital Eres  <eres@il.ibm.com>
8
9         * passes.c (init_optimization_passes): Reschedule
10         predictive-commoning pass before complete unroll pass.
11
12 2009-06-10  Martin Jambor  <mjambor@suse.cz>
13
14         * cgraph.c (cgraph_node_can_be_local_p): New function.
15         (cgraph_make_node_local): New function.
16         * cgraph.h (cgraph_node_can_be_local_p): Declare.
17         (cgraph_make_node_local): Declare.
18
19 2009-06-10  Nathan Froyd  <froydnj@codesourcery.com>
20
21         * tree.h (tree_base): Add packed_flag and user_align fields.
22         Decrease size of spare field.
23         (TYPE_USER_ALIGN): Use user_align from tree_base.
24         (DECL_USER_ALIGN): Likewise.
25         (TYPE_PACKED): Use packed_flag from tree_base.
26         (DECL_PACKED): Likewise.
27         (tree_type): Delete packed_flag and user_align fields.  Widen
28         precision field.  Widen mode field and shuffle fields to align
29         mode on an 8-bit boundary.
30         (tree_decl_common): Delete decl_flag_1 and user_align fields.
31         Renumber decl_flag_* fields.  Fix comments.  Widen
32         decl_common_unused field.
33         (DECL_HAS_VALUE_EXPR_P): Adjust for renumbering of decl_flag_*
34         fields.
35         (DECL_EXTERNAL): Likewise.
36         (DECL_BIT_FIELD): Likewise.
37         (DECL_NONADDRESSABLE_P): Likewise.
38         (TYPE_DECL_SUPRESS_DEBUG): Likewise.
39         * config/arm/arm-modes.def (XImode): Make it an INT_MODE.
40
41 2009-06-10  Ian Lance Taylor  <iant@google.com>
42
43         * vec.h (DEF_VEC_ALLOC_I): Use DEF_VEC_NONALLOC_FUNCS_I.
44         (DEF_VEC_ALLOC_P): Use DEF_VEC_NONALLOC_FUNCS_P.
45         (DEF_VEC_ALLOC_O): Use DEF_VEC_NONALLOC_FUNCS_O.
46         (DEF_VEC_ALLOC_FUNC_P): Only define VEC_OP (T,A,alloc).
47         (DEF_VEC_NONALLOC_FUNCS_P): New macro, broken out of old
48         DEF_VEC_ALLOC_FUNC_P.
49         (DEF_VEC_ALLOC_FUNC_O): Only define VEC_OP (T,A,alloc).
50         (DEF_VEC_NONALLOC_FUNCS_O): New macro, broken out of old
51         DEF_VEC_ALLOC_FUNC_O.
52         (DEF_VEC_ALLOC_FUNC_I): Only define VEC_OP (T,A,alloc).
53         (DEF_VEC_NONALLOC_FUNCS_I): New macro, broken out of old
54         DEF_VEC_ALLOC_FUNC_I.
55         (vec_stack_p_reserve, vec_stack_p_reserve_exact): Declare.
56         (vec_stack_p_reserve_exact_1): Declare.
57         (vec_stack_o_reserve, vec_stack_o_reserve_exact): Declare.
58         (vec_stack_free): Declare.
59         (VEC_stack_alloc): Define.
60         (DEF_VEC_ALLOC_P_STACK, DEF_VEC_ALLOC_FUNC_P_STACK): Define.
61         (DEF_VEC_ALLOC_O_STACK, DEF_VEC_ALLOC_FUNC_O_STACK): Define.
62         (DEF_VEC_ALLOC_I_STACK, DEF_VEC_ALLOC_FUNC_I_STACK): Define.
63         * vec.c (void_p): New type.  Call DEF_VEC_P and DEF_VEC_ALLOC_P
64         for void_p.
65         (stack_vecs): New static variable.
66         (vec_stack_p_reserve_exact_1): New function.
67         (vec_stack_o_reserve_1): New static function.
68         (vec_stack_p_reserve, vec_stack_p_reserve_exact): New functions.
69         (vec_stack_o_reserve, vec_stack_o_reserve_exact): New functions.
70         (vec_stack_free): New function.
71         * df-scan.c (df_ref): Use DEF_VEC_P and DEF_VEC_ALLOC_P_STACK.
72         (VEC_df_ref_stack_alloc): Define.
73         (df_mw_hardreg_ptr): New type.  Use DEF_VEC_P and
74         DEF_VEC_ALLOC_P_STACK.
75         (VEC_df_mw_hardreg_ptr_stack_alloc): Define.
76         (struct df_collection_rec): Change _vec fields to VEC.  Remove
77         _use fields.
78         (df_free_collection_rec): Adjust for new fields.
79         (df_insn_rescan): Use new df_collection_rec fields.
80         (df_notes_rescan, df_canonize_collection_rec): Likewise.
81         (df_ref_create_structure, df_ref_record): Likewise.
82         (df_get_conditional_uses, df_get_call_refs): Likewise.
83         (df_insn_refs_collect, df_bb_refs_collect): Likewise.
84         (df_bb_refs_record, df_record_entry_block_defs): Likewise.
85         (df_record_exit_block_uses, df_bb_verify): Likewise.
86         (df_swap_refs): Change ref_vec parameter to VEC.  Change all
87         callers.
88         (df_sort_and_compress_refs): Change ref_vec parameter to VEC.
89         Remove count parameter.  Change return type to void.  Change all
90         callers.
91         (df_sort_and_compress_mws): Change mw_vec parameter to VEC.
92         Remove count parameter.  Change return type to void.  Change all
93         callers.
94         (df_install_refs): Change old_vec parameter to VEC.  Remove count
95         parameter.  Change all callers.
96         (df_install_mws): Change old_vec parameter to VEC.  Remove count
97         parameter.  Change all callers.
98         (df_refs_verify): Change new_rec parameter to VEC.  Change call
99         callers.
100         (df_mws_verify): Likewise.
101
102 2009-06-10  Alexandre Oliva  <aoliva@redhat.com>
103
104         * gcc.c (compare_files): Cast munmap argumento to caddr_t.
105
106 2009-06-10  H.J. Lu  <hongjiu.lu@intel.com>
107
108         * doc/extend.texi: Add description for __builtin_ia32_crc32di.
109
110 2009-06-10  Anthony Green  <green@moxielogic.com>
111
112         * config/moxie/crti.asm: New file.
113         * config/moxie/crtn.asm: New file.
114         * config/moxie/moxie.c: New file.
115         * config/moxie/moxie.h: New file.
116         * config/moxie/sfp-machine.h: New file.
117         * config/moxie/moxie-protos.h: New file.
118         * config/moxie/t-moxie: Created.
119         * config/moxie/t-moxie-softfp: Created.
120         * config/moxie/moxie.md: Created.
121         * config/moxie/constraints.md: Created.
122         * config.gcc: Add moxie support.
123         * doc/md.texi (Machine Constraints): Add moxie constraints.
124         * doc/contrib.texi (Contributors): Mention moxie port.
125         * doc/install.texi (Specific): Mention the moxie port.
126
127 2009-06-09  Ian Lance Taylor  <iant@google.com>
128
129         * system.h (HAVE_DESIGNATED_INITIALIZERS): Don't define if
130         compiling with C++.
131         * optabs.c (optab_table): Only use designated initializers if
132         HAVE_DESIGNATED_INITIALIZERS is defined.
133         (convert_optab_table): Likewise.
134         (init_optabs): Always call init_insn_codes if
135         HAVE_DESIGNATED_INITIALIZERS is not defined.
136
137 2009-06-09  Ian Lance Taylor  <iant@google.com>
138
139         * targhooks.c (default_builtin_vectorized_function): Change fn
140         parameter to unsigned int.
141         (default_builtin_vectorized_conversion): Change code parameter to
142         unsigned int.
143         (default_builtin_reciprocal): Change fn parameter to unsigned int.
144         * targhooks.h: Update declarations.
145         * config/rs6000/rs6000.c (rs6000_builtin_conversion): Change code
146         parameter to unsigned int.
147
148         * c-typeck.c (comptypes_check_enum_int): New static function.
149         (comptypes_internal): Add enum_and_int_p parameter.  Change all
150         callers.
151         (comp_target_types): Add location parameter.  Change all callers.
152         (tagged_types_tu_compatible_p): Add enum_and_int_p parameter.
153         Change all callers.
154         (function_types_compatible_p, type_lists_compatible_p): Likewise.
155         (build_conditional_expr): Add colon_loc parameter.  Change all
156         callers.
157         (convert_for_assignment): Add location parameter.  Change all
158         callers.
159         * c-parser.c (c_parser_conditional_expression): Pass location of
160         colon to build_conditional_expr.
161         * c-tree.h (build_conditional_expr): Update declaration.
162
163 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
164
165         * graphite.c: Revert previous patch.
166
167 2009-06-09  Sebastian Pop  <sebastian.pop@amd.com>
168
169         PR bootstrap/40103
170         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
171
172 2009-06-09  Ghassan Shobaki  <ghassan.shobaki@amd.com>
173
174         * tree-ssa-loop-prefetch.c
175         (loop_prefetch_arrays): Fixed a portability problem in printf format
176         string.
177
178 2009-06-09  Martin Jambor  <mjambor@suse.cz>
179
180         PR tree-optimization/40351
181         * tree-sra.c (propagate_subacesses_accross_link): Check that a refrence
182         to a potential artifical subaccess can be constructed.
183
184 2009-06-08  Kaz Kojima  <kkojima@gcc.gnu.org>
185
186         * config/sh/sh-protos.h (sh_optimization_options): Declare.
187         (sh_override_options): Likewise.
188         * config/sh/sh.c: Include params.h.
189         (sh_optimization_options): New.
190         (sh_override_options): Likewise.
191         * config/sh/sh.c (OPTIMIZATION_OPTIONS): Use sh_optimization_options.
192         (OVERRIDE_OPTIONS): Use sh_override_options.
193
194 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
195
196         * dwarf2out.c (emit_cfa_remember): New variable.
197         (add_fde_cfi): If emit_cfa_remember, recurse to add
198         DW_CFA_remember_state first.
199         (dwarf2out_begin_epilogue): Don't add_fde_cfi DW_CFA_remember_state,
200         instead just set emit_cfa_remember.
201
202 2009-06-08  Jan Hubicka  <jh@suse.cz>
203
204         PR debug/40126
205         * dwarf2out.c (dwarf2out_abstract_function): Free decl_loc_table.
206
207 2009-06-08  Jan Hubicka  <jh@suse.cz>
208
209         PR middle-end/39834
210         * cgraphunit.c (save_inline_function_body): Do not copy transform hooks
211         for saved inline bodies.
212         * ipa-passes.c (do_per_function): Do not add the hoks multiple times
213         for given function.
214
215 2009-06-08  Adam Nemet  <anemet@caviumnetworks.com>
216
217         * jump.c (returnjump_p): Handle delayed branches.  Add missing
218         function comment.
219
220 2009-06-08  Jan Hubicka  <jh@suse.cz>
221
222         PR middle-end/40102
223         * cgraph.c (cgraph_create_edge_including_clones): Also asume that the
224         original node might've been modified.
225         * tree-inline.c (copy_bb): Do not assume that all clones are the same.
226
227 2009-06-08  Jakub Jelinek  <jakub@redhat.com>
228
229         * tree-object-size.c (addr_object_size): Add OSI argument.
230         Handle also INDIRECT_REF with SSA_NAME inside of it as base address.
231         (compute_builtin_object_size, expr_object_size): Adjust callers.
232         (plus_stmt_object_size): Call addr_object_size instead of
233         compute_builtin_object_size.
234
235 2009-06-08  Ghassan Shobaki  <ghassan.shobaki@amd.com>
236             Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
237         
238         * tree-ssa-loop-prefetch.c 
239         (gather_memory_references): Introduced a counter for the number of 
240         memory references.
241         (anything_to_prefetch_p): Introduced a counter for the number of 
242         prefetches.
243         (is_loop_prefetching_profitable): New function with a cost model 
244         for prefetching.
245         (loop_prefetch_arrays): Use the new cost model to determine if 
246         prefetching is profitable.
247         * params.def (MIN_INSN_TO_PREFETCH_RATIO, 
248         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
249         * params.h (MIN_INSN_TO_PREFETCH_RATIO, 
250         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
251         * doc/invoke.texi (MIN_INSN_TO_PREFETCH_RATIO, 
252         PREFETCH_MIN_INSN_TO_MEM_RATIO): New parameters.
253         
254 2009-06-08  Michael Matz  <matz@suse.de>
255
256         PR debug/40012
257         * cfgexpand.c (set_rtl): Store place also in DECL_RTL, if all
258         partitions use the same.
259         (expand_one_var): Deal with DECL_RTL sometimes begin set also
260         for basevars of SSA_NAMEs.
261         (expand_used_vars): Reset TREE_USED for basevars of SSA_NAMEs,
262         to not expand them twice.
263         (gimple_expand_cfg): Clear DECL_RTL for those decls that have
264         multiple places.
265
266 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
267
268         * common.opt (fcompare-debug=, fcompare-debug-second): New.
269         (fdump-final-insns=, gtoggle): New.
270         * doc/invoke.texi: Document them.
271         * final.c (rest_of_clean_state): Dump final insn stream.
272         * gcc.c (invoke_as): Hook in -fcompare-debug.
273         (static_spec_functions): Add compare-debug-dump-opt,
274         compare-debug-self-opt and compare-debug-auxbase-opt.
275         (compare_debug, compare_debug_second, compare_debug_opt): New.
276         (switches_debug_check, n_switches_debug_check): New.
277         (debug_auxbase_opt, debug_check_temp_file): New.
278         (process_command): Handle -fno-compare-debug, -fcompare-debug and
279         -fcompare-debug=*.
280         (do_self_spec): Handle arguments after switches.
281         (do_spec_1): Add .gk extension to temp file basenames for compare.
282         (check_live_switch): Take SWITCH_IGNORE into account, and earlier.
283         (cc1_options): Use it instead of normal auxbase computation for
284         the second compare-debug compilation.
285         (compare_files): New.
286         (main): Set up and implement compare debug mode.
287         (compare_debug_dump_opt_spec_function): New.
288         (compare_debug_self_opt_spec_function): New.
289         (compare_debug_auxbase_opt_spec_function): New.
290         * toplev.c (process_options): Handle flag_gtoggle,
291         flag_dump_final_insns.
292         * coverage.c (coverage_begin_output): Don't overwrite .gcno file
293         during -fcompare-debug-second compilation.
294
295 2009-06-07  Ian Lance Taylor  <iant@google.com>
296
297         * dwarf2.h (enum dwarf_location_atom): Add
298         INTERNAL_DW_OP_tls_addr.
299         * dwarf2out.c (INTERNAL_DW_OP_tls_addr): Don't #define.
300
301         * c-common.c (c_do_switch_warnings): Don't exit early for -Wswitch
302         with no default node.  Change warning with %H to warning_at.
303         Don't clear warn_switch around case checking.
304         * doc/invoke.texi (Warning Options): Clarify distinction between
305         -Wswitch and -Wswitch-enum.
306
307 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
308
309         * tree-pass.h (TODO_update_ssa_any): Document internal use only.
310
311 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
312
313         * gbl-ctors.h: Add header guard.
314
315 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
316
317         * tree-flow.h (make_value_handle, set_value_handle, sort_vuses,
318         sort_vuses_heap, vn_lookup_or_add, vn_lookup_or_add_with_stmt,
319         vn_lookup_or_add_with_vuses, vn_add, vn_add_with_vuses,
320         vn_lookup_with_stmt, vn_lookup, vn_lookup_with_vuses): Remove
321         prototypes for removed functions.
322         (expressions_equal_p): Move to ...
323         * tree-ssa-sccvn.h: ... here and ...
324         * matrix-reorg.c: ... adjust includes.
325
326 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
327
328         * ipa-struct-reorg.c (do_reorg_1): Fix whitespace in dump output.
329
330 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
331
332         * c-decl.c (finish_decl): Use bool for variable was_incomplete.
333         (finish_function): Remove erroneous whitespace.
334
335 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
336
337         * tree-cfg.c (gimple_merge_blocks): Commentary typo fix.
338         (verify_stmts): Print statement who's gimple_bb is set to a wrong BB
339
340 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
341
342         * errors.c (internal_error): Commentary typo fix.
343         * gimple-iterator.c (gsi_insert_seq_on_edge): Ditto.
344         * tree-ssa-pre.c: Ditto.
345
346 2009-06-07  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
347
348         * basic-block.h (ENTRY_BLOCK, EXIT_BLOCK): Document that neither of
349         them is supposed to hold actual statements.
350
351 2009-06-06  Ian Lance Taylor  <iant@google.com>
352
353         * doc/extend.texi (Attribute Syntax): Document that C++ labels on
354         empty statements can now have attributes.
355
356 2009-06-05  Shujing Zhao  <pearly.zhao@oracle.com>
357
358         * config/mips/mips.c: Use REG_P and CONST_INT_P where applicable.
359         * config/mips/mips.md: Ditto.
360
361 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
362
363         * config/rs6000/eabi.asm (__eabi_convert): Don't define if
364         _RELOCATABLE.
365         (__eabi_uconvert): Likewise.
366
367 2009-06-05  Nathan Froyd  <froydnj@codesourcery.com>
368
369         * config/rs6000/ppc-asm.h: Protect auto-host.h inclusion and
370         CFI_* definitions with IN_GCC.
371
372 2009-06-05  David Edelsohn  <edelsohn@gnu.org>
373
374         * xcoffout.h (xcoffout_source_line): Update prototype.
375
376 2009-06-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
377
378         * builtins.c (do_mpc_ckconv, do_mpc_arg1): Use
379         mpc_realref/mpc_imagref instead of MPC_RE/MPC_IM.
380
381 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
382
383         PR middle-end/40340
384         * tree-ssa-live.c (remove_unused_scope_block_p): Don't prune
385         inlined_function_outer_scope_p blocks for artificial inlines
386         even at -g0/-g1.
387         * tree.c (tree_nonartificial_location): Rewrite using
388         block_nonartificial_location.
389
390 2009-06-05  Revital Eres  <eres@il.ibm.com>
391             Leehod Baruch  <leehod@il.ibm.com>
392
393         * expr.c (expand_assignment): Expand MISALIGNED_INDIRECT_REF.
394         (expand_expr_real_1): Remove comment.
395         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
396         Vectorize misaligned access when the target supports it.
397         (vect_supportable_dr_alignment): Check for unaligned access
398         support.
399         * tree-vect-stmts.c (vectorizable_store): Generate misaligned store
400         and remove asset.
401
402 2009-06-05  Julian Brown  <julian@codesourcery.com>
403
404         * config/arm/ieee754-df.S (cmpdf2): Avoid writing below SP.
405         * config/arm/ieee754-sf.S (cmpsf2): Likewise.
406
407 2009-06-05  Richard Guenther  <rguenther@suse.de>
408
409         PR bootstrap/40350
410         * dwarf2out.c (dwarf2out_begin_function): Mark discriminator
411         as possibly unused.
412
413 2009-06-05  Jakub Jelinek  <jakub@redhat.com>
414
415         * config/s390/s390.c (global_not_special_regno_p): New static inline.
416         (save_gprs): Don't tell unwinder when a global register is saved.
417         (s390_emit_epilogue): Emit needed epilogue unwind info.
418
419 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
420
421         * dwarf2out.c (deferred_asm_name): New.
422         (add_name_and_src_coords_attributes): Defer creation of
423         DW_AT_MIPS_linkage_name attribute if DECL_ASSEMBLER_NAME was not
424         computed yet.
425         (move_linkage_attr): New.
426         (dwarf2out_finish): Revisit deferrals and emit attributes at the
427         right place.
428
429 2009-06-05  Alexandre Oliva  <aoliva@redhat.com>
430
431         * tree-nested.c (finalize_nesting_tree_1): Declare the
432         frame_decl in the binding tree.
433
434 2009-06-04  Cary Coutant  <ccoutant@google.com>
435
436         * basic-block.h (struct basic_block_def): Add discriminator field.
437         * dbxout.c (dbxout_source_line): Add new parameter.  Change all
438         callers.
439         * debug.c (do_nothing_debug_hooks): Add additional entry.
440         (debug_nothing_int_charstar_int): New function.
441         * debug.h (struct gcc_debug_hooks): Add parameter to source_line
442         hook.
443         (debug_nothing_int_charstar_int): New declaration.
444         * dwarf2out.c (dwarf2out_source_line): Add new parameter.  Write
445         discriminator value in .loc directive.
446         * final.c (last_discriminator): New variable.
447         (discriminator): New variable.
448         (final_start_function): Initialize above variables, pass current
449         discriminator to debug hook.
450         (notice_source_line): Check for discriminator change.
451         * gimple-pretty-print.c (dump_bb_header): Print discriminator value.
452         * sdbout.c (sdbout_source_line): New parameter.
453         * tree-cfg.c (struct locus_discrim_map): New structure type.
454         (discriminator_per_locus): New hash table.
455         (build_gimple_cfg): Allocate and free discriminator hash table.
456         (make_edges): Call assign_discriminator.
457         (locus_map_hash): New function.
458         (locus_map_eq): New function.
459         (next_discriminator_for_locus): New function.
460         (same_line_p): New function.
461         (assign_discriminator): New function.
462         (make_cond_expr_edges): Call assign_discriminator.
463         (make_gimple_switch_edges): Likewise.
464         (first_non_label_stmt): New function.
465         * vmsdbgout.c (vmsdbgout_source_line): Add new parameter.  Change
466         all callers.
467         * xcoffout.c (xcoffout_source_line): Add new parameter.
468
469         * configure.ac (gcc_cv_as_discriminator): New configury check for
470         gas support for discriminator.
471         * configure: Regenerate.
472         * config.in: Regenerate.
473
474 2009-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
475
476         * config/arm/arm.c (thumb2_legitimate_index_p): Initialize
477         val after checking for integers.
478
479 2009-06-04  Uros Bizjak  <ubizjak@gmail.com>
480
481         * config/i386/i386.h (X86_64_MS_REGPARM_MAX): Rename from
482         X64_REGPARM_MAX.
483         (REGPARM_MAX): Use X86_64_MS_REGPARM_MAX.
484         (X86_64_MS_SSE_REGPARM_MAX): Rename from X64_SSE_REGPARM_MAX.
485         (SSE_REGPARM_MAX): Use X86_64_MS_SSE_REGPARM_MAX.
486         * config/i386/i386.c: Use X86_64_MS_REGPARM_MAX instead of
487         X64_REGPARM_MAX.  Use X86_64_MS_SSE_REGPARM_MAX instead of
488         X64_SSE_REGPARM_MAX.
489         * config/i386/i386.md: Use X86_64_MS_SSE_REGPARM_MAX instead of
490         X64_SSE_REGPARM_MAX.
491
492 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
493
494         * gcc.c (report_times_to_file): New.
495         (execute): Implement it.
496         (process_command): Support -time=.
497         * doc/invoke.texi: Document it.
498
499 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
500
501         * tree-ssa-live.c (remove_unused_scope_block_p): Keep variables
502         that have value exprs.
503
504 2009-06-04  Alexandre Oliva  <aoliva@redhat.com>
505
506         * dwarf2asm.c (dw2_force_const_mem): Defer creation of
507         declarations for constants until...
508         (dw2_output_indirect_constant_1): ... this point.
509
510 2009-06-04  Richard Earnshaw  <rearnsha@arm.com>
511
512         PR target/10242
513         * arm.md (arm_addsi3): Don't try to split an add with an
514         eliminable register until after reload has completed.
515
516 2009-06-03  Ian Lance Taylor  <iant@google.com>
517
518         * dummy-checksum.c (executable_checksum): Use EXPORTED_CONST.
519         * genattrtab.c (write_length_unit_log): Likewise.
520         * genchecksum.c (dosum): Likewise.
521         * gengtype.c (write_rtx_next): Likewise.
522         (finish_root_table, write_roots): Likewise.
523         * gimple.c (gimple_ops_offset_): Likewise.
524         * tree-nomudflap.c (gt_ggc_r_gt_tree_mudflap_h): Likewise.
525         * config/arc/arc.c (arc_attribute_table): Likewise.
526         * config/arm/arm.c (arm_attribute_table): Likewise.
527         * config/avr/avr.c (avr_attribute_table): Likewise.
528         * config/crx/crx.c (crx_attribute_table): Likewise.
529         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
530         * config/m68hc11/m68hc11.c (m68hc11_attribute_table): Likewise.
531         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
532         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
533         * config/sh/sh.c (sh_attribute_table): Likewise.
534         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
535         * config/spu/spu.c (spu_attribute_table): Likewise.
536         * config/v850/v850.c (v850_attribute_table): Likewise.
537
538         * config/alpha/alpha.c (vms_attribute_table): Make static.
539         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
540         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
541         * config/mips/mips.c (mips_attribute_table): Likewise.
542
543         * Makefile.in (dummy-checksum.o): Depend upon $(CONFIG_H) and
544         $(SYSTEM_H).
545         (cc1-checksum.o): Likewise.
546
547 2009-06-03  Steve Ellcey  <sje@cup.hp.com>
548
549         * config/ia64/vect.md (*movv2sf_internal): Handle big endian case.
550
551 2009-06-03  Jakub Jelinek  <jakub@redhat.com>
552
553         * config/rs6000/rs6000.c (rs6000_emit_stack_reset): Return generated
554         insn if it is changing sp.  Use gen_add3_insn instead of
555         conditionally gen_addsi3 and gen_adddi3.
556         (offset_below_red_zone_p): New static inline function.
557         (rs6000_emit_epilogue): Emit needed epilogue unwind info.
558         Use gen_add3_insn instead of conditionally gen_addsi3 and gen_adddi3.
559         * config/rs6000/ppc-asm.h: Include auto-host.h.
560         (CFI_STARTPROC, CFI_ENDPROC, CFI_DEF_CFA_REGISTER, CFI_OFFSET,
561         CFI_RESTORE): Define.
562         * config/rs6000/crtresxgpr.asm: Add unwind info.
563         * config/rs6000/crtresxfpr.asm: Likewise.
564         * config/rs6000/crtresgpr.asm: Likewise.
565         * config/rs6000/crtresfpr.asm: Likewise.
566         * config/rs6000/crtsavgpr.asm: Likewise.
567         * config/rs6000/crtsavfpr.asm: Likewise.
568
569         * dwarf2out.c (output_cfi_directive): Pass 1 instead of
570         0 to second argument of DWARF2_FRAME_REG_OUT macros.
571
572 2009-06-03  Julian Brown  <julian@codesourcery.com>
573
574         * config/arm/arm.c (arm_hard_regno_mode_ok): Permit values of four
575         words or less (including TImode) in core registers.
576
577 2009-06-03  Richard Guenther  <rguenther@suse.de>
578
579         PR middle-end/40328
580         * fold-const.c (fold_convert): Fold the build COMPLEX_EXPR.
581
582 2009-06-03  Andrey Belevantsev  <abel@ispras.ru>
583
584         * statistics.c (statistics_counter_event): Do not record event 
585         in pass dump if its number == -1.
586         (curr_statistics_hash): Add assert that we never get passes 
587         with static number == -1.
588
589 2009-06-03  Richard Guenther  <rguenther@suse.de>
590             Andrey Belevantsev  <abel@ispras.ru>
591
592         * cfgexpand.c (discover_nonconstant_array_refs_r): Make only 
593         non-BLKmode arrays addressable.
594
595 2009-06-03  Maxim Kuvyrkov  <maxim@codesourcery.com>
596
597         * config/m68k/linux.h (HAVE_GAS_BALIGN_AND_P2ALIGN): Move to ...
598         * config/m68k/m68k.h: ... here.
599         * testsuite/gcc.dg/falign-labels.c (dg-options): Don't restrict for
600         m68k and fido.
601
602 2009-06-03  Martin Jambor  <mjambor@suse.cz>
603
604         PR tree-optimization/40323
605         * ipa-prop.c (get_ssa_def_if_simple_copy): Break if not single
606         assignment.
607
608 2009-06-03  Richard Guenther  <rguenther@suse.de>
609
610         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
611         consistently.
612
613 2009-06-03  Shujing Zhao  <pearly.zhao@oracle.com>
614
615         * config/sh/predicates.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
616         JUMP_P, CALL_P, NONJUMP_INSN_P, NOTE_P, BARRIER_P and
617         JUMP_TABLE_DATA_P where applicable.
618         * config/sh/sh.c: Ditto.
619         * config/sh/sh.h: Ditto.
620         * config/sh/sh.md: Ditto.
621         * config/sh/symbian.c: Ditto.
622
623 2009-06-03  Uros Bizjak  <ubizjak@gmail.com>
624
625         * config/i386/driver-i386.c (describe_cache): Optimize
626         concatenation of strings.  Use snprintf instead of sprintf.
627         (host_detect_local_cpu): Ditto.  Ignore -march and -mtune for native
628         target when not compiling with GCC.
629
630 2009-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
631
632         * config/sh/sh.c: Revert last change.
633         (sh_expand_epilogue): Emit a blockage insn before the frame
634         pointer adjustment unconditionally.
635
636 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
637
638         * config/pa/pa-hpux.h (LINK_SPEC): Remove "%<fwhole-program".
639         * config/pa/pa-hpux10.h (LINK_SPEC): Likewise.
640         * config/pa/pa-hpux11.h (LINK_SPEC): Likewise.
641         * gcc.c (set_collect_gcc_options): Don't add -fwhole-program
642         to COLLECT_GCC_OPTIONS.
643
644 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
645
646         * collect2.c (target_system_root): New variable.
647         (main): Handle --sysroot=.
648         (ignore_library): Strip the sysroot from the library path.
649
650 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
651
652         * Makefile.in (COLLECT2_OBJS): Add collect2-aix.o.
653         (collect2.o): Depend on collect2-aix.h.
654         (collect2-aix.o): New rule.
655         * collect2-aix.h: New file.
656         * collect2-aix.c: Likewise.
657         * collect2.c: Include collect2-aix.h.  Don't undefine
658         OBJECT_FORMAT_COFF if CROSS_AIX_SUPPORT is defined.
659         Guard native includes with #ifndef CROSS_DIRECTORY_STRUCTURE.
660         Use TARGET_AIX_VERSION instead of _AIX51.
661         * config/rs6000/aix43.h (TARGET_AIX_VERSION): Define.
662         * config/rs6000/aix51.h (TARGET_AIX_VERSION): Likewise.
663         * config/rs6000/aix52.h (TARGET_AIX_VERSION): Likewise.
664         * config/rs6000/aix53.h (TARGET_AIX_VERSION): Likewise.
665         * config/rs6000/aix61.h (TARGET_AIX_VERSION): Likewise.
666
667 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
668
669         * collect2.c (ignore_library): Avoid premature post-increment
670         and null deference.
671
672 2009-06-02  Richard Sandiford  <r.sandiford@uk.ibm.com>
673
674         * Makefile.in (libgcc.mvars): Add TARGET_SYSTEM_ROOT.
675         * config/rs6000/aix.h (LINK_SYSCALLS_SPEC): Add %R to the
676         !CROSS_DIRECTORY_STRUCTURE alternative and use it for
677         CROSS_DIRECTORY_STRUCTURE too.
678         (LINK_LIBG_SPEC): Likewise.
679         (LIB_SPEC): Add %R to sysroot paths.
680         * config/rs6000/aix43.h (CPP_SPEC): Add %R to sysroot paths.
681         (CPLUSPLUS_CPP_SPEC, LIB_SPEC): Likewise.
682         * config/rs6000/aix51.h: As for aix43.h.
683         * config/rs6000/aix52.h: Likewise.
684         * config/rs6000/aix53.h: Likewise.
685         * config/rs6000/aix61.h: Likewise.
686         * config/rs6000/t-aix52 (SHLIB_LINK): Add $(TARGET_SYSTEM_ROOT)
687         to the beginning of sysroot paths.
688
689 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
690
691         * print_rtl (print_rtx): Don't print modes in EXPR_LISTs and
692         INSN_LISTs that are out of the REG_NOTE range.
693
694 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
695
696         * loop-unroll.c (struct iv_to_split): Add pointer to next.
697         (struct var_to_expand): Likewise.
698         (struct opt_info): Add head and tail for linked lists of the above.
699         (analyze_insn_to_expand_var): Initialize next.
700         (analyze_iv_to_split_insn): Likewise.
701         (analyze_insns_in_loop): Create linked lists.
702         (allocate_basic_variable): Simplify for use without hash table.
703         (insert_var_expansion_initialization): Likewise, make it type-safer.
704         (combine_var_copies_in_loop_exit): Likewise.
705         (apply_opt_in_copies): Walk lists rather than hash tables.
706         (release_var_copies): Simplified and inlined by hand into...
707         (free_opt_info): ... this function.
708
709 2009-06-02  Richard Guenther  <rguenther@suse.de>
710
711         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Use DECL_SIZE
712         for field decls.
713
714 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
715
716         * cfgexpand.c (gimple_expand_cfg): Discard the source location
717         only for builtins that are not overridden.
718
719 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
720
721         * gengtype.c (adjust_field_rtx_def): Add NOTE_INSN_DELETED_LABEL's
722         label string.
723
724 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
725
726         * df-core.c (df_ref_debug): Honor -fdump-noaddr.
727
728 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
729
730         * combine.c (move_deaths): Compare LUIDs within the same BB only.
731
732 2009-06-02  Alexandre Oliva  <aoliva@redhat.com>
733
734         * common.opt (fdump-unnumbered-links): New.
735         * doc/invoke.texi (-fdump-unnumbered-links): Document it.
736         * print-rtl.c (flag_dump_unnumbered_links): New.
737         (print_rtx): Test it.
738
739 2009-06-02  Richard Earnshaw  <rearnsha@arm.com>
740
741         * arm.c (arm_get_frame_offsets): Prefer using r3 for padding a
742         push/pop multiple to 8-byte alignment.
743
744 2009-06-01  Jakub Jelinek  <jakub@redhat.com>
745
746         * config/i386/i386.c (queued_cfa_restores): New static variable.
747         (ix86_add_cfa_restore_note, ix86_add_queued_cfa_restore_notes): New
748         functions.
749         (pro_epilogue_adjust_stack): Call ix86_add_queued_cfa_restore_notes.
750         (ix86_emit_restore_reg_using_pop): Add RED_OFFSET argument.
751         Set RTX_FRAME_RELATED_P immediately after adding a REG_CFA_* note.
752         Call ix86_add_cfa_restore_note instead of adding REG_CFA_OFFSET
753         note unconditionally.
754         (ix86_emit_restore_regs_using_mov): Likewise.
755         (ix86_emit_restore_sse_regs_using_mov): Likewise.
756         (ix86_emit_restore_regs_using_pop): Add RED_OFFSET argument, pass
757         it through to ix86_emit_restore_reg_using_pop.
758         (ix86_emit_leave): Add RED_OFFSET argument.  Call
759         ix86_add_queued_cfa_restore_notes.  Call ix86_add_cfa_restore_note
760         instead of adding REG_CFA_OFFSET note unconditionally.
761         (ix86_expand_epilogue): Compute RED_OFFSET, pass it down to
762         the above functions.  Call ix86_add_queued_cfa_restore_notes when
763         needed.
764
765         * dwarf2out.c (dwarf2out_cfi_label): Add FORCE argument, if true,
766         force output of the label even for dwarf2out_do_cfi_asm.
767         (add_fde_cfi): If -g2 and above and cfi might change CFA,
768         force creation of CFI label and chain DW_CFA_set_loc jumping to it
769         for convert_cfa_to_fb_loc_list.  Adjust other dwarf2out_cfi_label
770         caller.
771         (dwarf2out_stack_adjust, dwarf2out_frame_debug,
772         dwarf2out_begin_epilogue, dwarf2out_frame_debug_restore_state): Adjust
773         dwarf2out_cfi_label callers.
774         * tree.h (dwarf2out_cfi_label): Adjust prototype.
775         * config/arm/arm.c (thumb_pushpop, thumb1_output_function_prologue):
776         Adjust dwarf2out_cfi_label callers.
777         * config/vax/vax.c (vax_output_function_prologue): Likewise.
778
779         * config/i386/i386.h (struct machine_cfa_state,
780         struct machine_function): Guard with ifndef USED_FOR_TARGET
781         instead of not IN_LIBGCC2 and not in IN_TARGET_LIBS.
782
783         PR other/40024
784         * emutls.c (__emutls_get_address): Change arr->size to mean number
785         of allocated arr->data entries instead of # of slots + 1.
786
787         PR middle-end/40316
788         * recog.c (peep2_reinit_state): New function.
789         (peephole2_init_state): Use it at the end of a basic block and also
790         when seeing a RTX_FRAME_RELATED_P insn.
791
792 2009-06-01  Steve Ellcey  <sje@cup.hp.com>
793
794         * ia64.md (floatdirf2, fix_truncrfdi, floatunsdirf,
795         fixuns_truncrfdi2): New.
796         (fix_truncxfdi2_alts, fixuns_truncxfdi2_alts,
797         *nmaddsf4_alts, *nmadddf4_alts, *nmadddf4_truncsf_alts,
798         *mulxf3_alts, *mulxf3_truncsf_alts, *mulxf3_truncdf_alts,
799         *maddxf4_alts, *maddxf4_alts_truncsf, *maddxf4_alts_truncdf,
800         *nmaddxf4_alts, *nmaddxf4_truncsf_alts, *nmaddxf4_truncdf_alts,
801         *recip_approx): Remove.
802         (divsi3 modsi3, udivsi3, umodsi3, divsi3_internal, divdi3,
803         moddi3, udivdi3, umoddi3, divdi3_internal_lat, divdi3_internal_thr,
804         divsf3, sqrtsf2, divdf3, sqrtdf2, divxf3, sqrtxf2): Modify and
805         move to div.md.
806         * div.md (fix_truncrfdi2_alts, fixuns_truncrfdi2_alt,
807         setf_exp_rf): New.
808
809 2009-06-01  Ian Lance Taylor  <iant@google.com>
810
811         * attribs.c (register_attribute): Use CONST_CAST.
812         * collect2.c (main): Use CONST_CAST2.
813         (scan_prog_file): Likewise.
814         * gcc.c (process_command, main): Likewise.
815         * toplev.c (toplev_main): Likewise.
816
817         * c-typeck.c (handle_warn_cast_qual): New static function,
818         partially broken out of build_c_cast.
819         (build_c_cast): Call handle_warn_cast_qual.
820         * doc/invoke.texi (Warning Options): Document new effect of
821         -Wcast-qual.
822
823 2009-06-01  Aldy Hernandez  <aldyh@redhat.com>
824
825         * diagnostic.c (diagnostic_build_prefix): Always print columns.
826         (diagnostic_report_current_module): Print columns.
827         * common.opt (flag_show_column): Enable by default.
828
829 2009-06-01  Luis Machado  <luisgpm@br.ibm.com>
830
831         * alias.c (find_base_term): Check for NULL term before returning.
832
833 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
834
835         Revert due to PR40320:
836         2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
837         * calls.c (emit_library_call_value_1): Don't force_operand for move
838         and push insns.
839
840 2009-06-01  Olivier Hainque  <hainque@adacore.com>
841             Eric Botcazou  <ebotcazou@adacore.com>
842
843         * tree.h (CONSTRUCTOR_BITFIELD_P): True if NODE, a FIELD_DECL, is
844         to be processed as a bitfield for constructor output purposes.
845         * output.h (initializer_constant_valid_for_bitfield_p): Declare
846         new function.
847         * varasm.c (oc_local_state): New type, output_constructor
848         local state to support communication with helpers.
849         (oc_outer_state): New type, output_constructor outer state of
850         relevance in recursive calls.
851         (output_constructor_array_range): New output_constructor helper,
852         extracted code for an array range element.
853         (output_constructor_regular_field): New output_constructor helper,
854         extracted code for an element that is not a bitfield.
855         (output_constructor_bitfield): New output_constructor helper,
856         extracted code for a bitfield element.  Accept an OUTER state
857         argument for recursive processing.  Recurse on record or array
858         CONSTRUCTOR values, possibly past noop conversions.
859         (initializer_constant_valid_for_bitfield_p): New predicate.  Whether
860         VALUE is a valid constant-valued expression for use in a static
861         bit-field initializer.
862         (output_constructor): Rework to use helpers.  Accept and honor an
863         OUTER state argument for recursive calls.  Return total size.  Be
864         prepared for nested constructors initializing bitfields.
865         (output_constant): Feed OUTER in calls to output_constructor.
866
867 2009-06-01  Maxim Kuvyrkov  <maxim@codesourcery.com>
868
869         * calls.c (emit_library_call_value_1): Don't force_operand for move
870         and push insns.
871
872 2009-06-01  Nick Clifton  <nickc@redhat.com>
873
874         * doc/invoke.texi (IA-64 Options): Fix typo.
875
876 2009-06-01  Ira Rosen  <irar@il.ibm.com>
877
878         PR tree-optimization/39129
879         * tree-vect-loop-manip.c (conservative_cost_threshold): Change the 
880         printed message.
881         (vect_do_peeling_for_loop_bound): Use 
882         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
883         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
884         (vect_loop_versioning): Likewise.
885         (vect_create_cond_for_alias_checks): Fix indentation.
886         * tree-vectorizer.h (struct _loop_vec_info): Fix indentation of the 
887         macros.
888         (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT): Define.
889         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Likewise.
890         * tree-vect-loop.c (vect_analyze_loop_form): Change "too many BBs" to 
891         "control flow in loop".
892         (vect_estimate_min_profitable_iters): Use 
893         LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT and
894         LOOP_REQUIRES_VERSIONING_FOR_ALIAS macros.
895         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
896         (vect_create_data_ref_ptr): Don't mention array dimension in printing.
897         * tree-vect-stmts.c (vectorizable_store): Replace the check that the 
898         statement belongs to a group of strided accesses with the exact code 
899         check.
900         (vectorizable_load): Likewise.
901         * tree-vect-slp.c (vect_analyze_slp_instance): Spell out "basic block".
902         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
903
904 2009-06-01  Gerald Pfeifer  <gerald@pfeifer.com>
905
906         * config/freebsd-stdint.h: New file.
907         * config.gcc (*-*-freebsd): Set use_gcc_stdint=wrap.
908         Add freebsd-stdint.h to tm_file.
909
910 2009-06-01  Richard Earnshaw  <rearnsha@arm.com>
911
912         * arm/thumb2.md (thumb2_zero_extendhidi2): New insn and split.
913         (thumb2_extendhidi2): Likewise.
914
915 2009-05-31  Ian Lance Taylor  <iant@google.com>
916
917         * regstat.c (regstat_n_sets_and_refs): Remove duplicate definition.
918
919 2009-05-31  Ian Lance Taylor  <iant@google.com>
920
921         * Makefile.in (except.o): Depend upon gt-except.h, not gt-$(EXCEPT_H).
922         (ipa-cp.o): Depend upon $(FIBHEAP_H) and $(PARAMS_H).
923         (ipa-reference.o): Depend upon gt-ipa-reference.h.
924
925 2009-05-31  Jason Merrill  <jason@redhat.com>
926
927         * tree-pretty-print.c (print_call_name): Take the callee, not the
928         call itself.  Make non-static.  Use dump_function_name for functions.
929         (dump_generic_node): Adjust.
930         * diagnostic.h: Declare print_call_name.
931         * gimple-pretty-print.c (dump_gimple_call): Use it.
932
933 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
934
935         * config/sh/sh.md (ashldi3_std): New define_expand.
936         (ashldi3): Use it.
937
938 2009-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>
939
940         PR target/40313
941         * config/sh/sh.c: Include debug.h.
942         (sh_expand_epilogue): Emit a blockage insn before the frame
943         pointer adjustment also when dwarf2out_do_frame returns true.
944
945 2009-05-31  Richard Earnshaw  <rearnsha@arm.com>
946
947         * arm/thumb2.md (thumb2_extendsidi2): Add a split sub-pattern.
948         (thumb2_extendqidi2): New pattern.
949
950 2009-05-31  Ira Rosen  <irar@il.ibm.com>
951
952         * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Don't
953         mark phis for renaming.
954         * tree-vectorizer.c (vect_memsyms_to_rename): Remove.
955         (vectorize_loops): Don't allocate and free vect_memsyms_to_rename.
956         Call mark_sym_for_renaming.
957         * tree-vectorizer.h (vect_memsyms_to_rename): Remove.
958         * tree-vect-loop.c (vect_transform_loop): Remove
959         vect_memsyms_to_rename initialization and a call to
960         mark_set_for_renaming.
961
962 2009-05-31  Jakub Jelinek  <jakub@redhat.com>
963
964         PR middle-end/40304
965         * config/i386/i386.c (pro_epilogue_adjust_stack): Mark insns
966         frame related even if !set_cfa && style < 0.
967
968 2009-05-30  Kai Tietz  <kai.tietz@onevision.com>
969
970         * config/i386/mingw-tls.c: New file.
971         * config/i386/t-gthr-win32 (LIB2FUNCS_EXTRA): Add mingw-tls.c file.
972         * gthr-win32.h (MINGW32_SUPPORTS_MT_EH): Define it for targets
973         defining _WIN32 but not __CYGWIN__.
974
975 2009-05-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
976
977         * configure.ac: Add MPC support.
978         
979         * config.in, configure: Regenerate.     
980
981 2009-05-29  Richard Henderson  <rth@redhat.com>
982
983         * cfgcleanup.c (try_crossjump_to_edge): Only skip past
984         NOTE_INSN_BASIC_BLOCK.
985         * cfglayout.c (duplicate_insn_chain): Copy epilogue insn marks.
986         Duplicate NOTE_INSN_EPILOGUE_BEG notes.
987         * cfgrtl.c (can_delete_note_p): Allow NOTE_INSN_EPILOGUE_BEG
988         to be deleted.
989         * dwarf2out.c (struct cfa_loc): Change indirect field to bitfield,
990         add in_use field.
991         (add_cfi): Disable check redefining cfa away from drap.
992         (lookup_cfa_1): Add remember argument; handle remember/restore.
993         (lookup_cfa): Pass remember argument.
994         (cfa_remember): New.
995         (compute_barrier_args_size_1): Remove sibcall check.
996         (dwarf2out_frame_debug_def_cfa): New.
997         (dwarf2out_frame_debug_adjust_cfa): New.
998         (dwarf2out_frame_debug_cfa_offset): New.
999         (dwarf2out_frame_debug_cfa_register): New.
1000         (dwarf2out_frame_debug_cfa_restore): New.
1001         (dwarf2out_frame_debug): Handle REG_CFA_* notes.
1002         (dwarf2out_begin_epilogue): New.
1003         (dwarf2out_frame_debug_restore_state): New.
1004         (dw_cfi_oprnd1_desc): Handle DW_CFA_remember_state,
1005         DW_CFA_restore_state.
1006         (output_cfi_directive): Likewise.
1007         (convert_cfa_to_fb_loc_list): Likewise.
1008         (dw_cfi_oprnd1_desc): Handle DW_CFA_restore.
1009         * dwarf2out.h: Update.
1010         * emit-rtl.c (try_split): Don't split RTX_FRAME_RELATED_P.
1011         (copy_insn_1): Early out for null.
1012         * final.c (final_scan_insn): Call dwarf2out_begin_epilogue
1013         and dwarf2out_frame_debug_restore_state.
1014         * function.c (prologue, epilogue, sibcall_epilogue): Remove.
1015         (prologue_insn_hash, epilogue_insn_hash): New.
1016         (free_after_compilation): Adjust freeing accordingly.
1017         (record_insns): Create hash table if needed; push insns into
1018         hash instead of array.
1019         (maybe_copy_epilogue_insn): New.
1020         (contains): Search hash table instead of array.
1021         (sibcall_epilogue_contains): Remove.
1022         (thread_prologue_and_epilogue_insns): Split eh_return insns
1023         and mark them as epilogues.
1024         (reposition_prologue_and_epilogue_notes): Rewrite epilogue
1025         scanning in terms of basic blocks.
1026         * insn-notes.def (CFA_RESTORE_STATE): New.
1027         * jump.c (returnjump_p_1): Accept EH_RETURN.
1028         (eh_returnjump_p_1, eh_returnjump_p): New.
1029         * reg-notes.def (CFA_DEF_CFA, CFA_ADJUST_CFA, CFA_OFFSET,
1030         CFA_REGISTER, CFA_RESTORE): New.
1031         * rtl.def (EH_RETURN): New.
1032         * rtl.h (eh_returnjump_p, maybe_copy_epilogue_insn): Declare.
1033
1034         * config/bfin/bfin.md (UNSPEC_VOLATILE_EH_RETURN): Remove.
1035         (eh_return_internal): Use eh_return rtx; split w/ epilogue.
1036
1037         * config/i386/i386.c (gen_push): Update cfa state.
1038         (pro_epilogue_adjust_stack): Add set_cfa argument.  When true,
1039         add a CFA_ADJUST_CFA note.
1040         (ix86_dwarf_handle_frame_unspec): Remove.
1041         (ix86_expand_prologue): Update cfa state.
1042         (ix86_emit_restore_reg_using_pop): New.
1043         (ix86_emit_restore_regs_using_pop): New.
1044         (ix86_emit_leave): New.
1045         (ix86_emit_restore_regs_using_mov): Add CFA_RESTORE notes.
1046         (ix86_expand_epilogue): Add notes for unwinding the epilogue.
1047         * config/i386/i386.h (struct machine_cfa_state): New.
1048         (ix86_cfa_state): New.
1049         * config/i386/i386.md (UNSPEC_EH_RETURN): Remove.
1050         (eh_return_internal): Merge from eh_return_<mode>,
1051         use eh_return rtx, split w/ epilogue.
1052
1053 2009-05-29  Ian Lance Taylor  <iant@google.com>
1054
1055         * builtins.c (validate_gimple_arglist): Don't use va_arg with
1056         enum type.
1057         * calls.c (emit_library_call_value_1): Likewise.
1058
1059         * c-typeck.c (c_build_va_arg): New function.
1060         * c-tree.h (c_build_va_arg): Declare.
1061         * c-parser.c (c_parser_postfix_expression): Call c_build_va_arg
1062         instead of build_va_arg.
1063
1064 2009-05-29  Eric Botcazou  <ebotcazou@adacore.com>
1065
1066         * tree-ssa-loop-ivopts.c (strip_offset_1) <MULT_EXPR>: New case.
1067         (force_expr_to_var_cost) <NEGATE_EXPR>: Likewise.
1068         (ptr_difference_cost): Use affine combinations to compute it.
1069         (difference_cost): Likewise.
1070         (get_computation_cost_at): Compute more accurate cost for addresses
1071         if the ratio is a multiplier allowed in addresses.
1072         For non-addresses, consider that an additional offset or symbol is
1073         added only once.
1074
1075 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1076
1077         * config/i386/i386.c (ix86_decompose_address): Avoid useless
1078         0 displacement.  Add 0 displacement if base is %[er]bp or %r13.
1079
1080         * config/i386/i386.md (prefix_data16, prefix_rep): Set to 0 for
1081         TYPE_SSE{MULADD,4ARG,IADD1,CVT1} by default.
1082         (prefix_rex): For UNIT_MMX don't imply the prefix by default
1083         if MODE_DI.
1084         (prefix_extra): Default to 2 for TYPE_SSE{MULADD,4ARG} and
1085         to 1 for TYPE_SSE{IADD1,CVT1}.
1086         (prefix_vex_imm8): Removed.
1087         (length_vex): Only pass 1 as second argument to
1088         ix86_attr_length_vex_default if prefix_extra is 0.
1089         (modrm): For TYPE_INCDEC only set to 0 if not TARGET_64BIT.
1090         (length): For prefix vex computation use length_immediate
1091         attribute instead of prefix_vex_imm8.
1092         (cmpqi_ext_3_insn, cmpqi_ext_3_insn_rex64,
1093         addqi_ext_1, addqi_ext_1_rex64, *testqi_ext_0, andqi_ext_0,
1094         *andqi_ext_0_cc, *iorqi_ext_0, *xorqi_ext_0, *xorqi_cc_ext_1,
1095         *xorqi_cc_ext_1_rex64): Override modrm attribute to 1.
1096         (extendsidi2_rex64, extendhidi2, extendqidi2, extendhisi2,
1097         *extendhisi2_zext, extendqihi2, extendqisi2, *extendqisi2_zext): Emit
1098         a space in between the operands.
1099         (*anddi_1_rex64, *andsi_1): Likewise.  Override prefix_rex to 1
1100         if one operand is 0xff and the other one si, di, bp or sp.
1101         (*andhi_1): Override prefix_rex to 1 if one operand is 0xff and the
1102         other one si, di, bp or sp.
1103         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Add mode attribute.
1104         (*ffssi_1, *ffsdi_1, ctzsi2, ctzdi2): Add
1105         type and mode attributes.
1106         (*bsr, *bsr_rex64, *bsrhi): Add type attribute.
1107         (*cmpfp_i_mixed, *cmpfp_iu_mixed): For TYPE_SSECOMI, clear
1108         prefix_rep attribute and set prefix_data16 attribute iff MODE_DF.
1109         (*cmpfp_i_sse, *cmpfp_iu_sse): Clear prefix_rep attribute and set
1110         prefix_data16 attribute iff MODE_DF.
1111         (*movsi_1): For TYPE_SSEMOV MODE_SI set prefix_data16 attribute.
1112         (fix_trunc<mode>di_sse): Set prefix_rex attribute.
1113         (*adddi_4_rex64, *addsi_4): Use const128_operand instead of
1114         constm128_operand in length_immediate computation.
1115         (*addhi_4): Likewise.  Fix mode attribute to MODE_HI.
1116         (anddi_1_rex64): Use movzbl/movzwl instead of movzbq/movzwq.
1117         (*avx_ashlti3, sse2_ashlti3, *avx_lshrti3, sse2_lshrti3): Set
1118         length_immediate attribute to 1.
1119         (x86_fnstsw_1, x86_fnstcw_1, x86_fldcw_1): Fix length attribute.
1120         (*movdi_1_rex64): Override prefix_rex or prefix_data16 attributes
1121         for certain alternatives.
1122         (*movdf_nointeger, *movdf_integer_rex64, *movdf_integer): Override
1123         prefix_data16 attribute if MODE_V1DF.
1124         (*avx_setcc<mode>, *sse_setcc<mode>, *sse5_setcc<mode>): Set
1125         length_immediate to 1.
1126         (set_got_rex64, set_rip_rex64): Remove length attribute, set
1127         length_address to 4, set mode attribute to MODE_DI.
1128         (set_got_offset_rex64): Likewise.  Set length_immediate to 0.
1129         (fxam<mode>2_i387): Set length attribute to 4.
1130         (*prefetch_sse, *prefetch_sse_rex, *prefetch_3dnow,
1131         *prefetch_3dnow_rex): Override length_address attribute.
1132         (sse4_2_crc32<mode>): Override prefix_data16 and prefix_rex
1133         attributes.
1134         * config/i386/predicates.md (ext_QIreg_nomode_operand): New predicate.
1135         (constm128_operand): Removed.
1136         * config/i386/i386.c (memory_address_length): For
1137         disp && !index && !base in 64-bit mode account for SIB byte if
1138         print_operand_address can't optimize disp32 into disp32(%rip)
1139         and UNSPEC doesn't imply (%rip) addressing.  Add 1 to length
1140         for fs: or gs: segment.
1141         (ix86_attr_length_immediate_default): When checking if shortform
1142         is possible, truncate immediate to the length of the non-shortened
1143         immediate.
1144         (ix86_attr_length_address_default): Ignore MEM_P operands
1145         with X constraint.
1146         (ix86_attr_length_vex_default): Only check for DImode on
1147         GENERAL_REG_P operands.
1148         * config/i386/sse.md (<sse>_comi, <sse>_ucomi): Clear
1149         prefix_rep attribute, set prefix_data16 attribute iff MODE_DF.
1150         (sse_cvttps2pi): Clear prefix_rep attribute.
1151         (sse2_cvttps2dq, *sse2_cvtpd2dq, sse2_cvtps2pd): Clear prefix_data16
1152         attribute.
1153         (*sse2_cvttpd2dq): Don't clear prefix_rep attribute.
1154         (*avx_ashr<mode>3, ashr<mode>3, *avx_lshr<mode>3, lshr<mode>3,
1155         *avx_ashl<mode>3, ashl<mode>3): Set length_immediate attribute to 1
1156         iff operand 2 is const_int_operand.
1157         (*vec_dupv4si, avx_shufpd256_1, *avx_shufpd_<mode>,
1158         sse2_shufpd_<mode>): Set length_immediate attribute to 1.
1159         (sse2_pshufd_1): Likewise.  Set prefix attribute to maybe_vex
1160         instead of vex.
1161         (sse2_pshuflw_1, sse2_pshufhw_1): Set length_immediate to 1 and clear
1162         prefix_data16.
1163         (sse2_unpckhpd, sse2_unpcklpd, sse2_storehpd, *vec_concatv2df): Set
1164         prefix_data16 attribute for movlpd and movhpd instructions.
1165         (sse2_loadhpd, sse2_loadlpd, sse2_movsd): Likewise.  Override
1166         length_immediate for shufpd instruction.
1167         (sse2_movntsi, sse3_lddqu): Clear prefix_data16 attribute.
1168         (avx_cmpp<avxmodesuffixf2c><mode>3,
1169         avx_cmps<ssemodesuffixf2c><mode>3, *avx_maskcmp<mode>3,
1170         <sse>_maskcmp<mode>3, <sse>_vmmaskcmp<mode>3,
1171         avx_shufps256_1, *avx_shufps_<mode>, sse_shufps_<mode>,
1172         *vec_dupv4sf_avx, *vec_dupv4sf): Set length_immediate attribute to 1.
1173         (*avx_cvtsi2ssq, *avx_cvtsi2sdq): Set length_vex attribute to 4.
1174         (sse_cvtsi2ssq, sse2_cvtsi2sdq): Set prefix_rex attribute to 1.
1175         (sse2_cvtpi2pd, sse_loadlps, sse2_storelpd): Override
1176         prefix_data16 attribute for the first alternative to 1.
1177         (*avx_loadlps): Override length_immediate for the first alternative.
1178         (*vec_concatv2sf_avx): Override length_immediate and prefix_extra
1179         attributes for second alternative.
1180         (*vec_concatv2sf_sse4_1): Override length_immediate and
1181         prefix_data16 attributes for second alternative.
1182         (*vec_setv4sf_avx, *avx_insertps, vec_extract_lo_<mode>,
1183         vec_extract_hi_<mode>, vec_extract_lo_v16hi,
1184         vec_extract_hi_v16hi, vec_extract_lo_v32qi,
1185         vec_extract_hi_v32qi): Set prefix_extra and length_immediate to 1.
1186         (*vec_setv4sf_sse4_1, sse4_1_insertps, *sse4_1_extractps): Set
1187         prefix_data16 and length_immediate to 1.
1188         (*avx_mulv2siv2di3, *avx_mulv4si3, sse4_2_gtv2di3): Set prefix_extra
1189         to 1.
1190         (*avx_<code><mode>3, *avx_eq<mode>3, *avx_gt<mode>3): Set
1191         prefix_extra attribute for variants that don't have 0f prefix alone.
1192         (*avx_pinsr<ssevecsize>): Likewise.  Set length_immediate to 1.
1193         (*sse4_1_pinsrb, *sse2_pinsrw, *sse4_1_pinsrd, *sse4_1_pextrb,
1194         *sse4_1_pextrb_memory, *sse2_pextrw, *sse4_1_pextrw_memory,
1195         *sse4_1_pextrd): Set length_immediate to 1.
1196         (*sse4_1_pinsrd): Likewise.  Set prefix_extra to 1.
1197         (*sse4_1_pinsrq, *sse4_1_pextrq): Set prefix_rex and length_immediate
1198         to 1.
1199         (*vec_extractv2di_1_rex64_avx, *vec_extractv2di_1_rex64,
1200         *vec_extractv2di_1_avx, *vec_extractv2di_1_sse2): Override
1201         length_immediate to 1 for second alternative.
1202         (*vec_concatv2si_avx, *vec_concatv2di_rex64_avx): Override
1203         prefix_extra and length_immediate attributes for the first
1204         alternative.
1205         (vec_concatv2si_sse4_1): Override length_immediate to 1 for the
1206         first alternative.
1207         (*vec_concatv2di_rex64_sse4_1): Likewise.  Override prefix_rex
1208         to 1 for the first and third alternative.
1209         (*vec_concatv2di_rex64_sse): Override prefix_rex to 1 for the second
1210         alternative.
1211         (*sse2_maskmovdqu, *sse2_maskmovdqu_rex64): Override length_vex
1212         attribute.
1213         (*sse_sfence, sse2_mfence, sse2_lfence): Override length_address
1214         attribute to 0.
1215         (*avx_phaddwv8hi3, *avx_phadddv4si3, *avx_phaddswv8hi3,
1216         *avx_phsubwv8hi3, *avx_phsubdv4si3, *avx_phsubswv8hi,
1217         *avx_pmaddubsw128, *avx_pmulhrswv8hi3, *avx_pshufbv16qi3,
1218         *avx_psign<mode>3): Set prefix_extra attribute to 1.
1219         (ssse3_phaddwv4hi3, ssse3_phadddv2si3, ssse3_phaddswv4hi3,
1220         ssse3_phsubwv4hi3, ssse3_phsubdv2si3, ssse3_phsubswv4hi3,
1221         ssse3_pmaddubsw, *ssse3_pmulhrswv4hi, ssse3_pshufbv8qi3,
1222         ssse3_psign<mode>3): Override prefix_rex attribute.
1223         (*avx_palignrti): Override prefix_extra and length_immediate to 1.
1224         (ssse3_palignrti): Override length_immediate to 1.
1225         (ssse3_palignrdi): Override length_immediate to 1, override
1226         prefix_rex attribute.
1227         (abs<mode>2): Override prefix_rep to 0, override prefix_rex attribute.
1228         (sse4a_extrqi): Override length_immediate to 2.
1229         (sse4a_insertqi): Likewise.  Override prefix_data16 to 0.
1230         (sse4a_insertq): Override prefix_data16 to 0.
1231         (avx_blendp<avxmodesuffixf2c><avxmodesuffix>,
1232         avx_blendvp<avxmodesuffixf2c><avxmodesuffix>,
1233         avx_dpp<avxmodesuffixf2c><avxmodesuffix>, *avx_mpsadbw,
1234         *avx_pblendvb, *avx_pblendw, avx_roundp<avxmodesuffixf2c>256,
1235         avx_rounds<avxmodesuffixf2c>256): Override prefix_extra
1236         and length_immediate to 1.
1237         (sse4_1_blendp<ssemodesuffixf2c>, sse4_1_dpp<ssemodesuffixf2c>,
1238         sse4_2_pcmpestr, sse4_2_pcmpestri, sse4_2_pcmpestrm,
1239         sse4_2_pcmpestr_cconly, sse4_2_pcmpistr, sse4_2_pcmpistri,
1240         sse4_2_pcmpistrm, sse4_2_pcmpistr_cconly): Override prefix_data16
1241         and length_immediate to 1.
1242         (sse4_1_blendvp<ssemodesuffixf2c>): Override prefix_data16 to 1.
1243         (sse4_1_mpsadbw, sse4_1_pblendw): Override length_immediate to 1.
1244         (*avx_packusdw, avx_vtestp<avxmodesuffixf2c><avxmodesuffix>,
1245         avx_ptest256): Override prefix_extra to 1.
1246         (sse4_1_roundp<ssemodesuffixf2c>, sse4_1_rounds<ssemodesuffixf2c>):
1247         Override prefix_data16 and length_immediate to 1.
1248         (sse5_pperm_zero_v16qi_v8hi, sse5_pperm_sign_v16qi_v8hi,
1249         sse5_pperm_zero_v8hi_v4si, sse5_pperm_sign_v8hi_v4si,
1250         sse5_pperm_zero_v4si_v2di, sse5_pperm_sign_v4si_v2di,
1251         sse5_vrotl<mode>3, sse5_ashl<mode>3, sse5_lshl<mode>3): Override
1252         prefix_data16 to 0 and prefix_extra to 2.
1253         (sse5_rotl<mode>3, sse5_rotr<mode>3): Override length_immediate to 1.
1254         (sse5_frcz<mode>2, sse5_vmfrcz<mode>2): Don't override prefix_extra
1255         attribute.
1256         (*sse5_vmmaskcmp<mode>3, sse5_com_tf<mode>3,
1257         sse5_maskcmp<mode>3, sse5_maskcmp<mode>3, sse5_maskcmp_uns<mode>3):
1258         Override prefix_data16 and prefix_rep to 0, length_immediate to 1
1259         and prefix_extra to 2.
1260         (sse5_maskcmp_uns2<mode>3, sse5_pcom_tf<mode>3): Override
1261         prefix_data16 to 0, length_immediate to 1 and prefix_extra to 2.
1262         (*avx_aesenc, *avx_aesenclast, *avx_aesdec, *avx_aesdeclast,
1263         avx_vpermilvar<mode>3,
1264         avx_vbroadcasts<avxmodesuffixf2c><avxmodesuffix>,
1265         avx_vbroadcastss256, avx_vbroadcastf128_p<avxmodesuffixf2c>256,
1266         avx_maskloadp<avxmodesuffixf2c><avxmodesuffix>,
1267         avx_maskstorep<avxmodesuffixf2c><avxmodesuffix>):
1268         Override prefix_extra to 1.
1269         (aeskeygenassist, pclmulqdq): Override length_immediate to 1.
1270         (*vpclmulqdq, avx_vpermil<mode>, avx_vperm2f128<mode>3,
1271         vec_set_lo_<mode>, vec_set_hi_<mode>, vec_set_lo_v16hi,
1272         vec_set_hi_v16hi, vec_set_lo_v32qi, vec_set_hi_v32qi): Override
1273         prefix_extra and length_immediate to 1.
1274         (*avx_vzeroall, avx_vzeroupper, avx_vzeroupper_rex64): Override
1275         modrm to 0.
1276         (*vec_concat<mode>_avx): Override prefix_extra and length_immediate
1277         to 1 for the first alternative.
1278         * config/i386/mmx.md (*mov<mode>_internal_rex64): Override
1279         prefix_rep, prefix_data16 and/or prefix_rex attributes in certain
1280         cases.
1281         (*mov<mode>_internal_avx, *movv2sf_internal_rex64,
1282         *movv2sf_internal_avx, *movv2sf_internal): Override
1283         prefix_rep attribute for certain alternatives.
1284         (*mov<mode>_internal): Override prefix_rep or prefix_data16
1285         attributes for certain alternatives.
1286         (*movv2sf_internal_rex64_avx): Override prefix_rep and length_vex
1287         attributes for certain alternatives.
1288         (*mmx_addv2sf3, *mmx_subv2sf3, *mmx_mulv2sf3,
1289         *mmx_<code>v2sf3_finite, *mmx_<code>v2sf3, mmx_rcpv2sf2,
1290         mmx_rcpit1v2sf3, mmx_rcpit2v2sf3, mmx_rsqrtv2sf2, mmx_rsqit1v2sf3,
1291         mmx_haddv2sf3, mmx_hsubv2sf3, mmx_addsubv2sf3,
1292         *mmx_eqv2sf3, mmx_gtv2sf3, mmx_gev2sf3, mmx_pf2id, mmx_pf2iw,
1293         mmx_pi2fw, mmx_floatv2si2, mmx_pswapdv2sf2, *mmx_pmulhrwv4hi3,
1294         mmx_pswapdv2si2): Set prefix_extra attribute to 1.
1295         (mmx_ashr<mode>3, mmx_lshr<mode>3, mmx_ashl<mode>3): Set
1296         length_immediate to 1 if operand 2 is const_int_operand.
1297         (*mmx_pinsrw, mmx_pextrw, mmx_pshufw_1, *vec_dupv4hi,
1298         *vec_extractv2si_1): Set length_immediate attribute to 1.
1299         (*mmx_uavgv8qi3): Override prefix_extra attribute to 1 if
1300         using old 3DNOW insn rather than SSE/3DNOW_A.
1301         (mmx_emms, mmx_femms): Clear modrm attribute.
1302
1303 2009-05-29  Martin Jambor  <mjambor@suse.cz>
1304
1305         * tree-sra.c:  New implementation of SRA.
1306
1307         * params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): Removed.
1308         (PARAM_SRA_MAX_STRUCTURE_COUNT): Removed.
1309         (PARAM_SRA_FIELD_STRUCTURE_RATIO): Removed.
1310         * params.h (SRA_MAX_STRUCTURE_SIZE): Removed.
1311         (SRA_MAX_STRUCTURE_COUNT): Removed.
1312         (SRA_FIELD_STRUCTURE_RATIO): Removed.
1313         * doc/invoke.texi (sra-max-structure-size): Removed.
1314         (sra-field-structure-ratio): Removed.
1315
1316 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1317
1318         PR middle-end/40291
1319         * builtins.c (expand_builtin_memcmp): Convert len to sizetype
1320         before expansion.
1321
1322 2009-05-29  Andrey Belevantsev  <abel@ispras.ru>
1323
1324         PR rtl-optimization/40101
1325         * sel-sched-ir.c (get_seqno_by_preds): Allow returning negative
1326         seqno.  Adjust comment.
1327         * sel-sched.c (find_seqno_for_bookkeeping): Assert that when 
1328         inserting bookkeeping before a jump, the jump is not scheduled.
1329         When no positive seqno found, provide a value.  Add comment.
1330
1331 2009-05-29  Richard Guenther  <rguenther@suse.de>
1332
1333         * tree-ssa-alias.c (nonaliasing_component_refs_p): Remove
1334         short-cutting on the first component.
1335
1336 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1337
1338         PR middle-end/39958
1339         * omp-low.c (scan_omp_1_op): Call remap_type on TREE_TYPE
1340         for trees other than decls/types.
1341
1342 2009-05-29  Richard Guenther  <rguenther@suse.de>
1343
1344         * tree-ssa-operands.c (get_expr_operands): Do not handle
1345         INDIRECT_REFs in the handled-component case.  Remove
1346         unused get_ref_base_and_extent case.
1347         * tree-dfa.c (get_ref_base_and_extent): Avoid calling
1348         tree_low_cst and host_integerp where possible.
1349         * tree-ssa-structalias.c (equiv_class_label_eq): Check hash
1350         codes for equivalence.
1351         * dce.c (find_call_stack_args): Avoid redundant bitmap queries.
1352
1353 2009-05-29  David Billinghurst <billingd@gcc.gnu.org>
1354
1355         * config.gcc: Add i386/t-fprules-softfp and soft-fp/t-softfp
1356         to tmake_file for i[34567]86-*-cygwin*. 
1357
1358 2009-05-29  Jakub Jelinek  <jakub@redhat.com>
1359
1360         PR target/40017
1361         * config/rs6000/rs6000-c.c (_Bool_keyword): New variable.
1362         (altivec_categorize_keyword, init_vector_keywords,
1363         rs6000_cpu_cpp_builtins): Define _Bool as conditional macro
1364         similar to bool.
1365
1366 2009-05-29  Kai Tietz  <kai.tietz@onevision.com>
1367
1368         * tree.c (handle_dll_attribute): Check if node is
1369         of kind FUNCTION_DECL for DECL_DECLARED_INLINE_P check.
1370
1371 2009-05-29  Richard Earnshaw  <rearnsha@arm.com>
1372
1373         * config/arm/thumb2.md (thumb2_zero_extendsidi2): Add a split
1374         component.
1375         (thumb2_zero_extendqidi2): Likewise.
1376
1377 2009-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1378
1379         * config/sh/sh.c (sh_expand_t_scc): Use gen_xorsi3_movrt
1380         instead of gen_movrt.
1381         * config/sh/sh.md (movrt): Remove.
1382
1383 2009-05-28  Steve Ellcey  <sje@cup.hp.com>
1384
1385         * doc/invoke.texi (IA-64 Options):
1386         Add -msdata, -mfused-madd, -mno-inline-float-divide, 
1387         -mno-inline-int-divide, -mno-inline-sqrt, -msched-spec-ldc,
1388         -msched-spec-control-ldc, -msched-prefer-non-data-spec-insns,
1389         -msched-prefer-non-control-spec-insns,
1390         -msched-stop-bits-after-every-cycle,
1391         -msched-count-spec-in-critical-path,
1392         -msel-sched-dont-check-control-spec, -msched-fp-mem-deps-zero-cost
1393         -msched-max-memory-insns-hard-limit, -msched-max-memory-insns.
1394         Remove -mt, -pthread, -msched-ldc, -mno-sched-control-ldc,
1395         and -msched-spec-verbose.
1396
1397 2009-05-28  Joseph Myers  <joseph@codesourcery.com>
1398
1399         * config/arm/lib1funcs.asm (__clear_cache): Define if L_clear_cache.
1400         * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define to give an
1401         error if used.
1402         * config/arm/t-linux-eabi (LIB1ASMFUNCS): Add _clear_cache.
1403
1404 2009-05-28  Richard Guenther  <rguenther@suse.de>
1405
1406         * tree-ssa-alias.c (ao_ref_init): New function.
1407         (ao_ref_base): Likewise.
1408         (ao_ref_base_alias_set): Likewise.
1409         (ao_ref_alias_set): Likewise.
1410         (refs_may_alias_p_1): Change signature.
1411         (refs_may_alias_p): Adjust.
1412         (refs_anti_dependent_p): Likewise.
1413         (refs_output_dependent_p): Likewise.
1414         (call_may_clobber_ref_p_1): Change signature.
1415         (call_may_clobber_ref_p): Adjust.
1416         (stmt_may_clobber_ref_p_1): New function split out from ...
1417         (stmt_may_clobber_ref_p): ... here.
1418         (maybe_skip_until): Adjust signature.
1419         (get_continuation_for_phi): Likewise.
1420         (walk_non_aliased_vuses): Likewise.
1421         * tree-ssa-alias.h (struct ao_ref_s): New structure type.
1422         (ao_ref_init): Declare.
1423         (ao_ref_base): Likewise.
1424         (ao_ref_alias_set): Likewise.
1425         (stmt_may_clobber_ref_p_1): Likewise.
1426         (walk_non_aliased_vuses): Adjust.
1427         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): New function.
1428         (get_ref_from_reference_ops): remove.
1429         (vn_reference_lookup_2): Adjust signature.
1430         (vn_reference_lookup_3): Do not re-build trees.  Handle unions.
1431         (vn_reference_lookup_pieces): Adjust signature, do not re-build trees.
1432         (vn_reference_lookup): Adjust.
1433         (vn_reference_insert): Likewise.
1434         (vn_reference_insert_pieces): Adjust signature.
1435         (visit_reference_op_call): Adjust.
1436         * tree-ssa-pre.c (get_expr_type): Simplify.
1437         (phi_translate_1): Adjust.
1438         (compute_avail): Likewise.
1439         (translate_vuse_through_block): Do not re-build trees.
1440         (value_dies_in_block_x): Likewise.
1441         * tree-ssa-sccvn.h (struct vn_reference_s): Add type and alias-set
1442         fields.
1443         (vn_reference_lookup_pieces): Adjust declaration.
1444         (vn_reference_insert_pieces): Likewise.
1445
1446 2009-05-28  Benjamin Kosnik  <bkoz@redhat.com>
1447
1448         * tree-ssa-copy.c (replace_exp_1): Move op for warning-free use
1449         with checking disabled.
1450
1451 2009-05-28  Dave Korn  <dave.korn.cygwin@gmail.com>
1452
1453         PR target/37216
1454
1455         * configure.ac (HAVE_GAS_ALIGNED_COMM):  Add autoconf test and
1456         macro definition for support of three-operand format aligned
1457         .comm directive in assembler on cygwin/pe/mingw target OS.
1458         * configure:  Regenerate.
1459         * config.h:  Regenerate.
1460
1461         * config/i386/winnt.c (i386_pe_asm_output_aligned_decl_common):  Use
1462         aligned form of .comm directive if -mpe-aligned-commons is in effect.
1463         * config/i386/cygming.opt (-mpe-aligned-commons):  Add new option.
1464
1465         * doc/invoke.texi (-mpe-aligned-commons):  Document new target option.
1466         * doc/tm.texi (ASM_OUTPUT_COMMON):  Document zero size commons.
1467
1468 2009-05-28  Ira Rosen  <irar@il.ibm.com>
1469
1470         PR tree-optimization/40254
1471         * tree-data-ref.c (dr_analyze_innermost): Take POFFSET into account
1472         in analysis of basic blocks.
1473
1474 2009-05-28  Adam Nemet  <anemet@caviumnetworks.com>
1475
1476         PR middle-end/33699
1477         * target.h (struct gcc_target): Fix indentation.  Add const_anchor.
1478         * target-def.h (TARGET_CONST_ANCHOR): New macro.
1479         (TARGET_INITIALIZER): Use it.
1480         * cse.c (CHEAPER): Move it up to the other macros.
1481         (insert): Rename this ...
1482         (insert_with_costs): ... to this.  Add cost parameters.  Update
1483         function comment.
1484         (insert): New function.  Call insert_with_costs.
1485         (compute_const_anchors, insert_const_anchor, insert_const_anchors,
1486         find_reg_offset_for_const, try_const_anchors): New functions.
1487         (cse_insn): Call try_const_anchors.  Adjust cost of src_related
1488         when using a const-anchor.  Call insert_const_anchors.
1489         * config/mips/mips.c (mips_set_mips16_mode): Set targetm.const_anchor.
1490         * doc/tm.texi (Misc): Document TARGET_CONST_ANCHOR.
1491
1492 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1493
1494         * tree-inline.c (remap_decls): Enable nonlocalized variables
1495         when not optimizing.
1496
1497 2009-05-28  Alexandre Oliva  <aoliva@redhat.com>
1498
1499         * tree-ssa-live.c (remove_unused_locals): Skip when not optimizing.
1500         Simplify other tests involving optimize.
1501
1502 2009-05-27  Tom Tromey  <tromey@redhat.com>
1503
1504         * unwind-dw2.c (_Unwind_DebugHook): New function.
1505         (uw_install_context): Call _Unwind_DebugHook.
1506
1507 2009-05-27  Tom Tromey  <tromey@redhat.com>
1508
1509         * system.h (CONST_CAST2): Use C++ const_cast when compiled as C++
1510
1511 2009-05-27  Ian Lance Taylor  <iant@google.com>
1512
1513         * Makefile.in (LINKER, LINKER_FLAGS): Define.
1514         (LINKER_FOR_BUILD, BUILD_LINKERFLAGS): Define.
1515         (ALL_LINKERFLAGS): Define.
1516         (xgcc$(exeext)): Change $(COMPILER) to $(LINKER).
1517         (cpp$(exeext), cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1518         (collect2$(exeext), mips-tfile, mips-tdump): Likewise.
1519         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1520         (build/gen%$(build_exeext)): Change $(COMPILER_FOR_BUILD) to
1521         $(LINKER_FOR_BUILD).
1522         (build/gcov-iov$(build_exeext)): Likewise.
1523
1524 2009-05-27  Julian Brown  <julian@codesourcery.com>
1525
1526         * gcse.c (target.h): Include.
1527         (can_assign_to_reg_without_clobbers_p): Check that the target allows
1528         copy of argument to a pseudo register.
1529
1530 2009-05-27  Diego Novillo  <dnovillo@google.com>
1531
1532         * tree-ssa-live.c (dump_scope_block): Document arguments.
1533         (dump_scope_blocks): Document.
1534         (debug_scope_blocks): New.
1535         * tree-flow.h (debug_scope_blocks): Declare.
1536
1537 2009-05-21  Denis Chertykov  <denisc@overta.ru>
1538
1539         * doc/contrib.texi (Contributors): Add myself to the list.
1540
1541 2009-05-27  Olivier Hainque  <hainque@adacore.com>
1542
1543         * expr.c (target_align): New function.  Alignment the TARGET of an
1544         assignment may be assume to have.
1545         (highest_pow2_factor_for_target): Use it instead of relying on
1546         immediate tree attributes of TARGET, not necessarily honored when
1547         intermediate bitfields are involved.
1548         
1549 2009-05-27  H.J. Lu  <hongjiu.lu@intel.com>
1550
1551         PR target/40266
1552         * config/i386/driver-i386.c (host_detect_local_cpu): Support
1553         AVX, SSE4, AES, PCLMUL and POPCNT.
1554
1555 2009-05-27  Diego Novillo  <dnovillo@google.com>
1556
1557         * tree-pretty-print.c (dump_location): New.
1558         (dump_generic_node): Call it.
1559         Factor code to handle BLOCK nodes ...
1560         (dump_block_node): ... here.
1561
1562 2009-05-27  Rafael Avila de Espindola  <espindola@google.com>
1563
1564         * Makefile.in (GCC_PLUGIN_H): New. Replace all uses of gcc-plugin.h
1565         with it.
1566         * doc/plugins.texi: Document that gcc-plugin.h must be the first to be
1567         included.
1568         * gcc-plugin.h: Include config.h and system.h.
1569         (IN_GCC): Define if not defined.
1570
1571 2009-05-27  Hans-Peter Nilsson  <hp@axis.com>
1572
1573         PR middle-end/40249
1574         * Makefile.in (CRTSTUFF_CFLAGS): Replace -fno-inline-functions
1575         with -fno-inline.
1576
1577 2009-05-27  Shujing Zhao  <pearly.zhao@oracle.com>
1578
1579         * config/m32r/m32r.c: Use REG_P, MEM_P and CONST_INT_P where
1580         applicable.
1581         * config/m32r/m32r.h: Ditto.
1582         * config/m32r/m32r.md: Ditto.
1583         * config/m32r/predicates.md: Ditto.
1584
1585 2009-05-27  Alexandre Oliva  <aoliva@redhat.com>
1586
1587         * cgraph.c (dump_cgraph_node): Honor -fdump-noaddr.
1588
1589 2009-05-26  Basile Starynkevitch  <basile@starynkevitch.net>
1590
1591         * doc/plugins.texi
1592         (Loading plugins): typo.
1593         (Plugin callbacks): Documented PLUGIN_INFO, PLUGIN_GGC_START,
1594         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1595         (Interacting with the GCC Garbage Collector): Added new section.
1596         (Giving information about a plugin): Added new section for
1597         PLUGIN_INFO.
1598         * ggc.h (ggc_register_root_tab): Added declaration.
1599         * gcc-plugin.h (PLUGIN_GGC_START, PLUGIN_GGC_MARKING)
1600         (PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS): Added new events.
1601         (register_callback): Improved comment in declaration.
1602         * ggc-common.c (const_ggc_root_tab_t) Added new typedef for vectors.
1603         (extra_root_vec) Added static variable for dynamic roots registration.
1604         (ggc_register_root_tab) Added new routine.
1605         (ggc_mark_roots) Added iteration inside extra_root_vec, and invoke
1606         PLUGIN_GGC_MARKING event.
1607         * ggc-zone.c: Include plugin.h.
1608         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1609         * ggc-page.c: Include plugin.h.
1610         (ggc_collect): Invoke PLUGIN_GGC_START & PLUGIN_GGC_END events.
1611         * plugin.c (plugin_event_name): added names of PLUGIN_GGC_START,
1612         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS
1613         (register_callback): check lack of callbacks for
1614         pseudo-events. Added handling of PLUGIN_REGISTER_GGC_ROOTS,
1615         PLUGIN_GGC_START, PLUGIN_GGC_MARKING, PLUGIN_GGC_END.
1616         (invoke_plugin_callbacks): Handle PLUGIN_GGC_START,
1617         PLUGIN_GGC_MARKING, PLUGIN_GGC_END, PLUGIN_REGISTER_GGC_ROOTS.
1618         * Makefile.in (ggc-common.o, ggc-zone.o, ggc-page.o): Added
1619         dependency on plugin.h.
1620         (plugin.o): Added dependency on ggc.h...
1621
1622 2009-05-26  Richard Guenther  <rguenther@suse.de>
1623
1624         PR middle-end/40248
1625         Revert
1626         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
1627         with mismatched comparison modes.
1628
1629         * expr.c (expand_expr_real_1): Expand the operand of a
1630         VIEW_CONVERT_EXPR in its natural mode.
1631
1632 2009-05-26  Ian Lance Taylor  <iant@google.com>
1633
1634         * Makefile.in (COMPILER, COMPILER_FLAGS): Define.
1635         (COMPILER_FOR_BUILD, BUILD_COMPILERFLAGS): Define.
1636         (ALL_COMPILERFLAGS): Define.
1637         (.c.o, xgcc$(exeext), cpp$(exeext)): Use $(COMPILER).
1638         (cc1-dummy$(exeext), cc1$(exeext)): Likewise.
1639         (collect2$(exeext), collect2.o): Likewise.
1640         (c-opts.o, c-cppbuiltin.o, c-pch.o, gcc.o, gccspec.o): Likewise.
1641         (gcc-options.o, version.o, prefix.o, toplev.o): Likewise.
1642         ($(out_object_file), mips-tfile, mips-tdump): Likewise.
1643         (libbackend.o, intl.o, cppdefault.o): Likewise.
1644         (gcov$(exeext), gcov-dump$(exeext)): Likewise.
1645         (build/%.o): Use $(COMPILER_FOR_BUILD).
1646         (build/gen%$(build_exeext)): Likewise.
1647         (build/gcov-iov$(build_exeext)): LIkewise.
1648         * config/t-darwin (darwin.o): Use $(COMPILER).
1649         (darwin-c.o, darwin-f.o, darwin-driver.o): Likewise.
1650         * config/t-sol2 (sol2-c.o): Likewise.
1651         (sol2.o): Likewise.
1652         * config/t-vxworks (vxworks.o): Likewise.
1653         * config/x-darwin (host-darwin.o): Likewise.
1654         * config/x-hpux (host-hpux.o): Likewise.
1655         * config/x-linux (host-linux.o): Likewise.
1656         * config/x-solaris (host-solaris.o): Likewise.
1657         * config/alpha/x-alpha (driver-alpha.o): Likewise.
1658         * config/arm/t-arm (arm-c.o): Likewise.
1659         * config/arm/t-pe (pe.o): Likewise.
1660         * config/arm/t-wince-pe (pe.o): Likewise.
1661         * config/i386/t-cygming (winnt.o): Likewise.
1662         (winnt-cxx.o, winnt-stubs.o, msformat-c.o): Likewise.
1663         * config/i386/t-cygwin (cygwin1.o): Likewise.
1664         (cygwin2.o): Likewise.
1665         * config/i386/t-i386 (i386-c.o): Likewise.
1666         * config/i386/t-interix (winnt.o): Likewise.
1667         * config/i386/t-netware (netware.o): Likewise.
1668         * config/i386/t-nwld (nwld.o): Likewise.
1669         * config/i386/x-darwin (host-i386-darwin.o): Likewise.
1670         * config/i386/x-i386 (driver-i386.o): Likewise.
1671         * config/i386/x-cygwin (host-cygwin.o): Likewise.
1672         * config/i386/x-mingw32 (host-mingw32.o): Likewise.
1673         * config/ia64/t-ia64 (ia64-c.o): Likewise.
1674         * config/m32c/t-m32c (m32c-pragma.o): Likewise.
1675         * config/mips/x-native (driver-native.o): Likewise.
1676         * config/rs6000/t-rs6000 (rs6000-c.o): Likewise.
1677         * config/rs6000/x-darwin (host-ppc-darwin.o): Likewise.
1678         * config/rs6000/x-darwin64 (host-ppc64-darwin.o): Likewise.
1679         * config/rs6000/x-rs6000 (driver-rs6000.o): Likewise.
1680         * config/score/t-score-elf (score7.o): Likewise.
1681         (score3.o): Likewise.
1682         * config/sh/t-sh (sh-c.o): Likewise.
1683         * config/sh/t-symbian (sh-c.o): Likewise.
1684         (symbian.o): Likewise.
1685         * config/spu/t-spu-elf (spu-c.o): Likewise.
1686         * config/v850/t-v850 (v850-c.o): Likewise.
1687         * config/v850/t-v850e (v850-c.o): Likewise.
1688
1689 2009-05-26  Richard Guenther  <rguenther@suse.de>
1690
1691         PR tree-optimization/40122
1692         * tree-ssa-ccp.c (ccp_fold): Fold vector CONSTRUCTORs to
1693         VECTOR_CSTs if possible.
1694         (fold_gimple_assign): Likewise.
1695
1696 2009-05-26  Richard Guenther  <rguenther@suse.de>
1697
1698         PR middle-end/40252
1699         * fold-const.c (fold_binary): Use the correct types for building
1700         rotates.
1701
1702 2009-05-26  Richard Guenther  <rguenther@suse.de>
1703
1704         * tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove
1705         redundant calls to merge_alias_info.
1706         (bump_vector_ptr): Likewise.
1707         * tree-ssa-copy.c (merge_alias_info): Remove.
1708         (replace_exp_1): Remove call to merge_alias_info.
1709         (propagate_tree_value): Likewise.
1710         (fini_copy_prop): Propagate points-to info.
1711         * tree-flow.h (merge_alias_info): Remove.
1712
1713 2009-05-07  Hariharan Sandanagobalane <hariharan@picochip.com>
1714
1715         * config/picochip/picochip.C (PARAM_INLINE_CALL_COST): Remove.
1716
1717 2009-05-25  Jan Hubicka  <jh@suse.cz>
1718
1719         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
1720         * cgraph.h (struct inline_summary): New filed self_wize,
1721         size_inlining_benefit, self_time and time_inlining_benefit.
1722         (struct cgraph_global_info): Replace insns by time ans size fields.
1723         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
1724         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
1725         (ipcp_update_callgraph): Do not touch function bodies.
1726         * ipa-inline.c: Include except.h
1727         (MAX_TIME): New constant.
1728         (overall_insns): Remove.
1729         (leaf_node_p): New.
1730         (overall_size, max_benefit): New static variables.
1731         (cgraph_estimate_time_after_inlining): New function.
1732         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
1733         (cgraph_clone_inlined_nodes): Update size.
1734         (cgraph_mark_inline_edge): Update size.
1735         (cgraph_estimate_growth): Use size info.
1736         (cgraph_check_inline_limits): Check size.
1737         (cgraph_default_inline_p): Likewise.
1738         (cgraph_edge_badness): Compute badness based on benefit and size cost.
1739         (cgraph_decide_recursive_inlining): Check size.
1740         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
1741         and times.
1742         (cgraph_decide_inlining): Likewise.
1743         (cgraph_decide_inlining_incrementally): Likewise; honor
1744         PARAM_EARLY_INLINING_INSNS.
1745         (likely_eliminated_by_inlining_p): New predicate.
1746         (estimate_function_body_sizes): New function.
1747         (compute_inline_parameters): Use it.
1748         * except.c (must_not_throw_labels): New function.
1749         * except.h (must_not_throw_labels): Declare.
1750         * tree-inline.c (init_inline_once): Kill inlining_weigths
1751         * tree-ssa-structalias.c: Avoid uninitialized warning.
1752         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
1753         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
1754         (PARAM_INLINE_CALL_COST): Remove.
1755         (PARAM_EARLY_INLINING_INSNS): New.
1756
1757 2009-05-25  Richard Guenther  <rguenther@suse.de>
1758
1759         PR tree-optimization/36327
1760         * tree-ssa-alias.c (walk_non_aliased_vuses): Add second walker
1761         callback for reference translation or lookup at the point of may-defs.
1762         * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype.
1763         * tree-ssa-sccvn.c (get_ref_from_reference_ops): Bail out
1764         for union COMPONENT_REFs.
1765         (vn_reference_lookup_3): New callback.  Lookup from memset
1766         and CONSTRUCTOR assignment, translate through struct copies.
1767         (vn_reference_lookup_pieces): Make sure to not free the
1768         passed operands array.  Adjust walk_non_aliased_vuses call.
1769         (vn_reference_lookup): Adjust walk_non_aliased_vuses call,
1770         make sure we do not leak memory.
1771
1772 2009-05-25  Richard Guenther  <rguenther@suse.de>
1773
1774         * tree-ssa-alias.h (dump_points_to_solution): Declare.
1775         * tree-inline.c (expand_call_inline): Reset the escaped and
1776         callused solutions.
1777         * tree-ssa-structalias.c (pass_build_ealias): New.
1778         * tree-pass.h (pass_build_ealias): Declare.
1779         * passes.c (init_optimization_passes): Add PTA during 
1780         early optimizations.
1781         * tree-ssa-alias.c (dump_alias_info): Dump the ESCAPED
1782         and CALLUSED solutions.
1783         (dump_points_to_solution): New function, split out from ...
1784         (dump_points_to_info_for): ... here.
1785         * tree-parloops.c (parallelize_loops): Reset the escaped and
1786         callused solutions.
1787
1788 2009-05-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
1789
1790         PR bootstrap/40027
1791         * config/i386/i386.c (USE_HIDDEN_LINKONCE): Only define if missing.
1792         * config/i386/sol2.h [!TARGET_GNU_LD] (USE_HIDDEN_LINKONCE): Define.
1793
1794 2009-05-25  Ira Rosen  <irar@il.ibm.com>
1795
1796         PR tree-optimization/40238
1797         * tree-vect-stmts.c (vect_init_vector): Insert initialization
1798         statements after basic block's labels.
1799         * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() 
1800         to free the allocated memory.
1801
1802 2009-05-24  Kaz Kojima  <kkojima@gcc.gnu.org>
1803
1804         * gcc/config/sh/sh.c (sh_set_return_address): Mark store of
1805         return address with a USE.
1806
1807 2009-05-24  Richard Guenther  <rguenther@suse.de>
1808
1809         PR middle-end/40233
1810         * tree.c (make_vector_type): Build the TYPE_DEBUG_REPRESENTATION_TYPEs
1811         array type from the main variant of the inner type.
1812
1813 2009-05-24  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
1814
1815         * config/vax/vax-protos.h (legitimate_constant_address_p): Change
1816         definition to bool (from int) to un-break build.
1817         (legitimate_constant_p, vax_mode_dependent_address_p): Likewise.
1818
1819 2009-05-24  Paolo Bonzini  <bonzini@gnu.org>
1820
1821         * tree-ssa-operands.h (push_stmt_changes, pop_stmt_changes,
1822         discard_stmt_changes): Delete.
1823         * tree-ssa-operands.c (scb_stack): Delete.
1824         (init_ssa_operands): Do not initialize it.
1825         (fini_ssa_operands): Do not free it.
1826         (push_stmt_changes, pop_stmt_changes, discard_stmt_changes): Delete.
1827
1828         * tree-cfg.c (replace_uses_by): Replace pop_stmt_changes with 
1829         update_stmt, remove the others.  Fix comments.
1830         * tree-dfa.c (optimize_stack_restore): Likewise.
1831         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Likewise.
1832         * tree-ssa-loop-ivopts.c (rewrite_use): Likewise.
1833         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Likewise.
1834         * tree-ssa-ccp.c (optimize_stack_restore, execute_fold_all_builtins):
1835         Likewise.
1836         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
1837         * tree-ssa-dom.c (propagate_rhs_into_lhs): Likewise.
1838         (dom_opt_finalize_block): Likewise, adjusting access to
1839         stmts_to_rescan.
1840         (optimize_stmt): Likewise, adjusting access to stmts_to_rescan.
1841         (stmts_to_rescan): Change item type to gimple.
1842         (tree_ssa_dominator_optimize): Change type of stmts_to_rescan.
1843
1844 2009-05-24  Ira Rosen  <irar@il.ibm.com>
1845
1846         * doc/passes.texi (Tree-SSA passes): Document SLP pass.
1847         * tree-pass.h (pass_slp_vectorize): New pass.
1848         * params.h (SLP_MAX_INSNS_IN_BB): Define.
1849         * timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
1850         * tree-vectorizer.c (timevar.h): Include.
1851         (user_vect_verbosity_level): Declare.
1852         (vect_location): Fix comment.
1853         (vect_set_verbosity_level): Update user_vect_verbosity_level
1854         instead of vect_verbosity_level.
1855         (vect_set_dump_settings): Add an argument. Ignore user defined
1856         verbosity if dump flags require higher level of verbosity. Print to
1857         stderr only for loop vectorization.
1858         (vectorize_loops): Update call to vect_set_dump_settings.
1859         (execute_vect_slp): New function.
1860         (gate_vect_slp): Likewise.
1861         (struct gimple_opt_pass pass_slp_vectorize): New.
1862         * tree-vectorizer.h (struct _bb_vec_info): Define along macros to
1863         access its members.
1864         (vec_info_for_bb): New function.
1865         (struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
1866         (VECTORIZATION_ENABLED): New macro.
1867         (SLP_ENABLED, SLP_DISABLED): Likewise.
1868         (vect_is_simple_use): Add bb_vec_info argument.
1869         (new_stmt_vec_info, vect_analyze_data_ref_dependences,
1870         vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
1871         vect_analyze_data_ref_accesses, vect_analyze_data_refs,
1872         vect_schedule_slp, vect_analyze_slp): Likewise.
1873         (vect_analyze_stmt): Add slp_tree argument.
1874         (find_bb_location): Declare.
1875         (vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
1876         * tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
1877         (vect_analyze_loop_operations, vect_analyze_loop,
1878         get_initial_def_for_induction, vect_create_epilog_for_reduction,
1879         vect_finalize_reduction, vectorizable_reduction,
1880         vectorizable_live_operation, vect_transform_loop): Likewise.
1881         * tree-data-ref.c (dr_analyze_innermost): Update comment,
1882         skip evolution analysis if analyzing a basic block.
1883         (dr_analyze_indices): Likewise.
1884         (initialize_data_dependence_relation): Skip the test whether the
1885         object is invariant for basic blocks.
1886         (compute_all_dependences): Skip dependence analysis for data
1887         references in basic blocks.
1888         (find_data_references_in_stmt): Don't fail in case of invariant
1889         access in basic block.
1890         (find_data_references_in_bb): New function.
1891         (find_data_references_in_loop): Move code to
1892         find_data_references_in_bb and add a call to it.
1893         (compute_data_dependences_for_bb): New function.
1894         * tree-data-ref.h (compute_data_dependences_for_bb): Declare.
1895         * tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
1896         that STEP is 0.
1897         (vect_analyze_data_ref_dependence): Check for interleaving in case of
1898         unknown dependence in basic block and fail in case of dependence in
1899         basic block.
1900         (vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
1901         dependence instances from either loop or basic block vectorization
1902         info.
1903         (vect_compute_data_ref_alignment): Check if it is loop vectorization
1904         before calling nested_in_vect_loop_p.
1905         (vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
1906         dependence instances from either loop or basic block vectorization
1907         info.
1908         (vect_verify_datarefs_alignment): Likewise.
1909         (vect_enhance_data_refs_alignment): Adjust function calls.
1910         (vect_analyze_data_refs_alignment): Likewise.
1911         (vect_analyze_group_access): Fix printing. Skip different checks if
1912         DR_STEP is 0. Keep strided stores either in loop or basic block
1913         vectorization data structure. Fix indentation.
1914         (vect_analyze_data_ref_access): Fix comments, allow zero step in
1915         basic blocks.
1916         (vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
1917         dependence instances from either loop or basic block vectorization
1918         info.
1919         (vect_analyze_data_refs): Update comment. Call
1920         compute_data_dependences_for_bb to analyze basic blocks.
1921         (vect_create_addr_base_for_vector_ref): Check for outer loop only in
1922         case of loop vectorization. In case of basic block vectorization use
1923         data-ref itself as a base.
1924         (vect_create_data_ref_ptr): In case of basic block vectorization:
1925         don't advance the pointer, add new statements before the current
1926         statement.  Adjust function calls.
1927         (vect_supportable_dr_alignment): Support only aligned accesses in
1928         basic block vectorization.
1929         * common.opt (ftree-slp-vectorize): New flag.
1930         * tree-vect-patterns.c (widened_name_p): Adjust function calls.
1931         (vect_pattern_recog_1): Likewise.
1932         * tree-vect-stmts.c (process_use): Likewise.
1933         (vect_init_vector): Add new statements in the beginning of the basic
1934         block in case of basic block SLP.
1935         (vect_get_vec_def_for_operand): Adjust function calls.
1936         (vect_finish_stmt_generation): Likewise.
1937         (vectorizable_call): Add assert that it is loop vectorization, adjust
1938         function calls.
1939         (vectorizable_conversion, vectorizable_assignment): Likewise.
1940         (vectorizable_operation): In case of basic block SLP, take
1941         vectorization factor from statement's type and skip the relevance
1942         check. Adjust function calls.
1943         (vectorizable_type_demotion): Add assert that it is loop
1944         vectorization, adjust function calls.
1945         (vectorizable_type_promotion): Likewise.
1946         (vectorizable_store): Check for outer loop only in case of loop
1947         vectorization. Adjust function calls. For basic blocks, skip the
1948         relevance check and don't advance pointers.
1949         (vectorizable_load): Likewise.
1950         (vectorizable_condition): Add assert that it is loop vectorization,
1951         adjust function calls.
1952         (vect_analyze_stmt): Add argument. In case of basic block SLP, check
1953         that it is not reduction, get vector type, call only supported
1954         functions, skip loop specific parts.
1955         (vect_transform_stmt): Check for outer loop only in case of loop
1956         vectorization.
1957         (new_stmt_vec_info): Add new argument and initialize bb_vinfo.
1958         (vect_is_simple_use): Fix comment, add new argument, fix conditions
1959         for external definition.
1960         * passes.c (pass_slp_vectorize): New pass.
1961         * tree-vect-slp.c (find_bb_location): New function.
1962         (vect_get_and_check_slp_defs): Add argument, adjust function calls,
1963         check for patterns only in loops.
1964         (vect_build_slp_tree): Add argument, adjust function calls, fail in
1965         case of multiple types in basic block SLP.
1966         (vect_mark_slp_stmts_relevant): New function.
1967         (vect_supported_load_permutation_p): Fix comment.
1968         (vect_analyze_slp_instance): Add argument. In case of basic block
1969         SLP, take vectorization factor from statement's type, check that
1970         unrolling factor is 1. Adjust function call. Save SLP instance in
1971         either loop or basic block vectorization structure. Return FALSE,
1972         if SLP failed.
1973         (vect_analyze_slp): Add argument. Get strided stores groups from
1974         either loop or basic block vectorization structure. Return FALSE
1975         if basic block SLP failed.
1976         (new_bb_vec_info): New function.
1977         (destroy_bb_vec_info, vect_slp_analyze_node_operations,
1978         vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
1979         (vect_schedule_slp): Add argument. Get SLP instances from either
1980         loop or basic block vectorization structure. Set vectorization factor
1981         to be 1 for basic block SLP.
1982         (vect_slp_transform_bb): New function.
1983         * params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
1984
1985 2009-05-23  Mark Mitchell  <mark@codesourcery.com>
1986
1987         * final.c (shorten_branches): Do not align labels for jump tables.
1988         (final_scan_insn): Use JUMP_TABLE_DATA_P.
1989
1990 2009-05-23  Eric Botcazou  <ebotcazou@adacore.com>
1991
1992         * doc/passes.texi: Standardize spelling of RTL, Tree and Tree SSA.
1993         Remove outdated reference to flow.c and fix nits.
1994         * doc/gccint.texi: Tweak RTL description.
1995         * doc/rtl.texi: Likewise.
1996
1997 2009-05-23  Denis Chertykov  <chertykov@gmail.com>
1998
1999         * config/avr/avr.c: Change my email address.
2000         * config/avr/avr.h: Likewise.
2001         * config/avr/avr.md: Likewise.
2002         * config/avr/avr-protos.h: Likewise.
2003         * config/avr/libgcc.S: Likewise.
2004
2005 2009-05-22  Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
2006
2007         * config/spu/spu-protos.h (aligned_mem_p, spu_valid_mov): Remove.
2008         (spu_split_load, spu_split_store): Change return type to int.
2009         (spu_split_convert): Declare.
2010         * config/spu/predicates.md (spu_mem_operand): Remove.
2011         (spu_mov_operand): Update.
2012         (spu_dest_operand, shiftrt_operator, extend_operator): Define.
2013         * config/spu/spu.c (regno_aligned_for_load): Remove.
2014         (reg_aligned_for_addr, spu_expand_load): Define.
2015         (spu_expand_extv): Reimplement and handle MEM.
2016         (spu_expand_insv): Handle MEM.
2017         (spu_sched_reorder): Handle insn's with length 0.
2018         (spu_legitimate_address_p): Reimplement.
2019         (store_with_one_insn_p): Return TRUE for any mode with size
2020         larger than 16 bytes.
2021         (address_needs_split): Define.
2022         (spu_expand_mov): Call spu_split_load and spu_split_store for MEM
2023         operands.
2024         (spu_convert_move): Define.
2025         (spu_split_load): Use spu_expand_load and change all MEM's to TImode.
2026         (spu_split_store): Change all MEM's to TImode.
2027         (spu_init_expanders): Preallocate registers that correspond to
2028         LAST_VIRTUAL_REG+1 and LAST_VIRTUAL_REG+2 and set them with
2029         mark_reg_pointer.
2030         (spu_split_convert): Define.
2031         * config/spu/spu.md (QHSI, QHSDI): New mode iterators.
2032         (_move<mode>, _movdi, _movti): Update predicate and condition.
2033         (load, store): Change to define_split.
2034         (extendqiti2, extendhiti2, extendsiti2, extendditi2): Simplify to
2035         extend<mode>ti2.
2036         (zero_extendqiti2, zero_extendhiti2, <v>lshr<mode>3_imm): Define.
2037         (lshr<mode>3, lshr<mode>3_imm, lshr<mode>3_re): Simplify to one
2038         define_insn_and_split of lshr<mode>3.
2039         (shrqbybi_<mode>, shrqby_<mode>): Simplify to define_expand.
2040         (<v>ashr<mode>3_imm): Define.
2041         (extv, extzv, insv): Allow MEM operands.
2042         (trunc_shr_ti<mode>, trunc_shr_tidi, shl_ext_<mode>ti,
2043         shl_ext_diti, sext_trunc_lshr_tiqisi, zext_trunc_lshr_tiqisi,
2044         sext_trunc_lshr_tihisi, zext_trunc_lshr_tihisi): Define for combine.
2045         (_spu_convert2): Change to define_insn_and_split and remove the
2046         corresponding define_peephole2.
2047         (stack_protect_set, stack_protect_test, stack_protect_test_si):
2048         Change predicates to memory_operand.
2049
2050 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2051
2052         * config/arm/thumb2.md: Add 16-bit multiply instructions.
2053
2054 2009-05-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
2055
2056         PR tree-optimization/40219
2057         * tree.c (iterative_hash_expr): Make sure the builtin function is
2058         a normal builtin function and not a front end or back end builtin
2059         before indexing into the built_in_decls array.
2060
2061 2009-05-22  Richard Guenther  <rguenther@suse.de>
2062
2063         PR middle-end/38964
2064         * alias.c (write_dependence_p): Do not use TBAA for answering
2065         anti-dependence or output-dependence.
2066         * tree-ssa-structalias.c (set_uids_in_ptset): Remove TBAA pruning code.
2067         (emit_pointer_definition): Remove.
2068         (emit_alias_warning): Likewise.
2069         (find_what_var_points_to): Remove TBAA pruning code.
2070         (find_what_p_points_to): Likewise.  Do not warn about strict-aliasing
2071         violations.
2072         (compute_points_to_sets): Remove code computing the set of
2073         dereferenced pointers.
2074         * tree-data-ref.c (dr_may_alias_p): Properly use the split
2075         oracle for querying anti and output dependencies.
2076         * tree-ssa-alias.c (refs_may_alias_p_1): Add argument specifying
2077         if TBAA may be applied.
2078         (refs_anti_dependent_p): New function.
2079         (refs_output_dependent_p): Likewise.
2080         * tree-ssa-alias.h (refs_anti_dependent_p): Declare.
2081         (refs_output_dependent_p): Likewise.
2082         * doc/tree-ssa.texi (Memory model): New section.
2083         * doc/c-tree.texi (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2084         * doc/gimple.texi (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2085         * cfgexpand.c (expand_gimple_basic_block): Do not handle
2086         GIMPLE_CHANGE_DYNAMIC_TYPE or CHANGE_DYNAMIC_TYPE_EXPR.
2087         * expr.c (expand_expr_real_1): Likewise.
2088         * gimple-low.c (lower_stmt): Likewise.
2089         * gimple-pretty-print.c (dump_gimple_stmt): Likewise.
2090         (dump_gimple_cdt): Remove.
2091         * gimple.c (gss_for_code): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2092         (gimple_size): Likewise.
2093         (walk_gimple_op): Likewise.
2094         (is_gimple_stmt): Likewise.
2095         (walk_stmt_load_store_addr_ops): Likewise.
2096         (gimple_build_cdt): Remove.
2097         * gimple.def (GIMPLE_CHANGE_DYNAMIC_TYPE): Remove.
2098         * gimple.h (gimple_cdt_new_type): Remove.
2099         (gimple_cdt_new_type_ptr): Likewise.
2100         (gimple_cdt_set_new_type): Likewise.
2101         (gimple_cdt_location): Likewise.
2102         (gimple_cdt_location_ptr): Likewise.
2103         (gimple_cdt_set_location): Likewise.
2104         * gimplify.c (gimplify_expr): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2105         * tree-cfg.c (remove_useless_stmts_1): Do not handle
2106         GIMPLE_CHANGE_DYNAMIC_TYPE.
2107         (verify_types_in_gimple_stmt): Likewise.
2108         * tree-inline.c (estimate_num_insns): Likewise.
2109         (expand_call_inline): Do not copy DECL_NO_TBAA_P.
2110         (copy_decl_to_var): Likewise.
2111         (copy_result_decl_to_var): Likewise.
2112         * tree-pretty-print.c (dump_generic_node): Do not handle
2113         CHANGE_DYNAMIC_TYPE_EXPR.
2114         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
2115         * tree-ssa-operands.c (get_expr_operands): Likewise.
2116         * tree-ssa-structalias.c (struct variable_info): Remove
2117         no_tbaa_pruning member.
2118         (new_var_info): Do not set it based on DECL_NO_TBAA_P.
2119         (unify_nodes): Do not copy it.
2120         (find_func_aliases): Do not handle GIMPLE_CHANGE_DYNAMIC_TYPE.
2121         (dump_solution_for_var): Do not dump no_tbaa_pruning state.
2122         (set_uids_in_ptset): Do not check it.
2123         (find_what_var_points_to): Likewise.
2124         (compute_tbaa_pruning): Remove.
2125         (compute_points_to_sets): Do not call it.
2126         * tree.c (walk_tree_1): Do not handle CHANGE_DYNAMIC_TYPE_EXPR.
2127         * tree.def (CHANGE_DYNAMIC_TYPE_EXPR): Remove.
2128         * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Remove.
2129         (CHANGE_DYNAMIC_TYPE_LOCATION): Likewise.
2130         (DECL_NO_TBAA_P): Likewise.
2131         (struct tree_decl_common): Move no_tbaa_flag to unused flags section.
2132         * omp-low.c (copy_var_decl): Do not copy DECL_NO_TBAA_P.
2133         (expand_omp_atomic_pipeline): Do not set it.
2134         * print-tree.c (print_node): Do not dump it.
2135         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
2136         redundant check.
2137
2138 2009-05-22 Vladimir Makarov <vmakarov@redhat.com>
2139
2140         PR target/39856
2141         * reg-stack.c (subst_stack_regs_pat): Remove gcc_assert for note
2142         for clobber.
2143
2144 2009-05-22  Mark Mitchell  <mark@codesourcery.com>
2145
2146         * tree.c (handle_dll_attribute): Mark dllexport'd inlines as
2147         non-external.
2148
2149 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2150
2151         * Makefile.in (bversion.h, s-bversion): New targets.
2152         (TOPLEV_H): Add bversion.h.
2153         * toplev.h: Include "bversion.h".
2154         (ATTRIBUTE_GCC_DIAG): When building with checking disabled, use
2155         the __format__ attribute only if compiling with the same version
2156         of GCC as the sources (the "build version").
2157
2158 2009-05-22  Ben Elliston  <bje@au.ibm.com>
2159
2160         * c-format.c (handle_format_attribute): Fix comment typo.
2161
2162 2009-05-21  Steve Ellcey  <sje@cup.hp.com>
2163
2164         PR target/37846
2165         * config/ia64/ia64.opt (mfused-madd): New.
2166         * config/ia64/ia64.h (TARGET_DEFAULT): Set MASK_FUSED_MADD.
2167         * config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
2168         * config/ia64/ia64.md (maddsf4, msubsf4, nmaddsf4,
2169         madddf4, madddf4_trunc, msubdf4, msubdf4_trunc, nmadddf4,
2170         nmadddf4_truncsf, maddxf4, maddxf4_truncsf, maddxf4_truncdf,
2171         msubxf4, msubxf4_truncsf msubxf4_truncdf, nmaddxf4,
2172         nmaddxf4_truncsf, nmaddxf4_truncdf): Check TARGET_FUSED_MADD.
2173         * config/ia64/vect.md (addv2sf3, subv2sf3): Force fpma/fpms 
2174         instruction if !TARGET_FUSED_MADD.
2175         (fpma, fpms): Remove colon from name.
2176
2177 2009-05-22  Richard Guenther  <rguenther@suse.de>
2178
2179         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Record
2180         TMR_ORIGINAL.  Always either record TMR_SYMBOL or TMR_BASE.
2181         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Handle
2182         TARGET_MEM_REF.
2183         (create_expression_by_pieces): Only convert if necessary.
2184         * gimplify.c (gimplify_expr): Handle TARGET_MEM_REF.
2185         * tree-ssa-loop-im.c (gen_lsm_tmp_name): Handle INTEGER_CST.
2186
2187 2009-05-21  Adam Nemet  <anemet@caviumnetworks.com>
2188
2189         * config/mips/mips.md (*extzv_trunc<mode>_exts): Turn into a
2190         regular pattern from a template and rename it ...
2191         (*extzv_truncsi_exts): ... to this.
2192
2193 2009-05-21  Richard Guenther  <rguenther@suse.de>
2194
2195         * cgraph.h (struct cgraph_node): Remove inline_decl member.
2196         * ipa-inline.c (cgraph_mark_inline_edge): Do not check it.
2197         (cgraph_default_inline_p): Likewise.
2198         (cgraph_decide_inlining_incrementally): Likewise.
2199
2200 2009-05-21  H.J. Lu  <hongjiu.lu@intel.com>
2201             Uros Bizjak  <ubizjak@gmail.com>
2202
2203         * config/i386/cpuid.h (bit_MOVBE): New.
2204
2205         * config/i386/driver-i386.c (host_detect_local_cpu): Check movbe.
2206
2207         * config/i386/i386.c (OPTION_MASK_ISA_MOVBE_SET): New.
2208         (OPTION_MASK_ISA_MOVBE_UNSET): Likewise.
2209         (ix86_handle_option): Handle OPT_mmovbe.
2210         (ix86_target_string): Add -mmovbe.
2211         (pta_flags): Add PTA_MOVBE.
2212         (processor_alias_table): Add PTA_MOVBE to "atom".
2213         (override_options): Handle PTA_MOVBE.
2214
2215         * config/i386/i386.h (TARGET_MOVBE): New.
2216
2217         * config/i386/i386.md (bswapsi2): Check TARGET_MOVBE.
2218         (*bswapsi_movbe): New.
2219         (*bswapdi_movbe): Likewise.
2220         (bswapdi2): Renamed to ...
2221         (*bswapdi_1): This.
2222         (bswapdi2): New expander.
2223
2224         * config/i386/i386.opt (mmovbe): New.
2225
2226         * doc/invoke.texi: Document -mmovbe.
2227
2228 2009-05-21  Taras Glek  <tglek@mozilla.com>
2229
2230         * plugin.c (try_init_one_plugin): Updated to new plugin_init API.
2231         * gcc-plugin.h (plugin_init): Updated signature.
2232         * gcc-plugin.h (plugin_name_args): Moved to this header.
2233         * doc/plugins.texi (plugin_init): Updated documention to reflect
2234         API change.
2235         * doc/plugins.texi (plugin_name_args): Added to documention.
2236
2237 2009-05-21  Mark Mitchell  <mark@codesourcery.com>
2238
2239         * config/arm/neon.md (*mul<mode>3add<mode>_neon): New pattern.
2240         (*mul<mode>3neg<mode>add<mode>_neon): Likewise.
2241
2242 2009-05-21  Shujing Zhao  <pearly.zhao@oracle.com>
2243
2244         * config/i386/i386.c: Use REG_P, MEM_P, CONST_INT_P, LABEL_P and
2245         JUMP_TABLE_DATA_P predicates where applicable.
2246         * config/i386/predicates.md: Ditto.
2247         * config/i386/sse.md: Ditto.
2248
2249 2009-05-21  Jakub Jelinek  <jakub@redhat.com>
2250
2251         * config/i386/i386.md (adddi_4_rex64, addsi_4, addhi_4): For
2252         operand2 -128 override length_immediate attribute to 1.
2253         * config/i386/predicates.md (constm128_operand): New predicate.
2254
2255         * config/i386/i386.c (memory_address_length): Handle %r12
2256         the same as %rsp and %r13 the same as %rbp.  For %rsp and %rbp
2257         also check REGNO.
2258         (ix86_attr_length_address_default): For MODE_SI lea in 64-bit
2259         mode look through optional ZERO_EXTEND and SUBREG.
2260         * config/i386/i386.md (R12_REG): New define_constant.
2261         (prefix_data16): For sse unit set also for MODE_TI insns.
2262         (prefix_rex): For -m32 always return 0.  For TYPE_IMOVX
2263         insns set if operand 1 is ext_QIreg_operand.
2264         (modrm): For TYPE_IMOV clear only if not MODE_DI.  For
2265         TYPE_{ALU{,1},ICMP,TEST} insn clear if there is non-shortened
2266         immediate.
2267         (*movdi_extzv_1, zero_extendhidi2, zero_extendqidi2): Change
2268         mode from MODE_DI to MODE_SI.
2269         (movdi_1_rex64): Override modrm and length_immediate attributes
2270         only for movabs (TYPE_IMOV, alternative 2).
2271         (zero_extendsidi2_rex64): Clear prefix_0f attribute if TYPE_IMOVX.
2272         (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_interunit,
2273         *float<SSEMODEI24:mode><MODEF:mode>2_mixed_nointerunit,
2274         *float<SSEMODEI24:mode><MODEF:mode>2_sse_interunit,
2275         *float<SSEMODEI24:mode><MODEF:mode>2_sse_nointerunit): Set
2276         prefix_rex attribute if DImode.
2277         (*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64, *adddi_5_rex64,
2278         *addsi_1, *addsi_1_zext, *addsi_2, *addsi_2_zext, *addsi_3,
2279         *addsi_3_zext, *addsi_5, *addhi_1_lea, *addhi_1, *addhi_2, *addhi_3,
2280         *addhi_5, *addqi_1_lea, *addqi_1): Override length_immediate
2281         attribute to 1 if TYPE_ALU and operand 2 is const128_operand.
2282         (pro_epilogue_adjust_stack_1, pro_epilogue_adjust_stack_rex64):
2283         Likewise.  For TYPE_IMOV clear length_immediate attribute.
2284         (*ashldi3_1_rex64, *ashldi3_cmp_rex64, *ashldi3_cconly_rex64,
2285         *ashlsi3_1, *ashlsi3_1_zext, *ashlsi3_cmp, **ashlsi3_cconly,
2286         *ashlsi3_cmp_zext, *ashlhi3_1_lea, *ashlhi3_1, *ashlhi3_cmp,
2287         *ashlhi3_cconly, *ashlqi3_1_lea, *ashlqi3_1, *ashlqi3_cmp,
2288         *ashlqi3_cconly): Override length_immediate attribute to 0 if TYPE_ALU
2289         or one operand TYPE_ISHIFT.
2290         (*ashrdi3_1_one_bit_rex64, *ashrdi3_one_bit_cmp_rex64,
2291         *ashrdi3_one_bit_cconly_rex64, *ashrsi3_1_one_bit,
2292         *ashrsi3_1_one_bit_zext, *ashrsi3_one_bit_cmp,
2293         *ashrsi3_one_bit_cconly, *ashrsi3_one_bit_cmp_zext,
2294         *ashrhi3_1_one_bit, *ashrhi3_one_bit_cmp, *ashrhi3_one_bit_cconly,
2295         *ashrqi3_1_one_bit, *ashrqi3_1_one_bit_slp, *ashrqi3_one_bit_cmp,
2296         *ashrqi3_one_bit_cconly, *lshrdi3_1_one_bit_rex64,
2297         *lshrdi3_cmp_one_bit_rex64, *lshrdi3_cconly_one_bit_rex64,
2298         *lshrsi3_1_one_bit, *lshrsi3_1_one_bit_zext, *lshrsi3_one_bit_cmp,
2299         *lshrsi3_one_bit_cconly, *lshrsi3_cmp_one_bit_zext,
2300         *lshrhi3_1_one_bit, *lshrhi3_one_bit_cmp, *lshrhi3_one_bit_cconly,
2301         *lshrqi3_1_one_bit, *lshrqi3_1_one_bit_slp, *lshrqi2_one_bit_cmp,
2302         *lshrqi2_one_bit_cconly, *rotlsi3_1_one_bit_rex64, *rotlsi3_1_one_bit,
2303         *rotlsi3_1_one_bit_zext, *rotlhi3_1_one_bit, *rotlqi3_1_one_bit_slp,
2304         *rotlqi3_1_one_bit, *rotrdi3_1_one_bit_rex64, *rotrsi3_1_one_bit,
2305         *rotrsi3_1_one_bit_zext, *rotrhi3_one_bit, *rotrqi3_1_one_bit,
2306         *rotrqi3_1_one_bit_slp): Override length_immediate attribute to 0,
2307         set mode attribute, don't override length attribute.
2308         (*btsq, *btrq, *btcq, *btdi_rex64, *btsi): Set prefix_0f attribute
2309         to 1.
2310         (return_internal_long): Set length attribute to 2 instead of 1.
2311         (*strmovqi_rex_1, *strsetqi_rex_1, *rep_stosqi_rex64,
2312         *cmpstrnqi_nz_rex_1, *cmpstrnqi_rex_1, *strlenqi_rex_1): Clear
2313         prefix_rex attribute.
2314         * config/i386/predicates.md (ext_QIreg_operand, const128_operand):
2315         New predicates.
2316         (memory_displacement_only_operand): Always return 0 for TARGET_64BIT.
2317
2318 2009-05-21  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2319
2320         * config/arm/thumb2.md (orsi_notsi_si): Fix typo in pattern.
2321
2322 2009-05-20  Ian Lance Taylor  <iant@google.com>
2323
2324         * tree.c (build_tree_list_vec_stat): New function.
2325         (ctor_to_vec): New function.
2326         (build_nt_call_vec): New function.
2327         (build_call_array): Change args to be a const pointer.
2328         (build_call_vec): New function.
2329         * tree.h (build_nt_call_vec): Declare.
2330         (build_tree_list_vec_stat): Declare.
2331         (build_tree_list_vec): Define.
2332         (build_call_array): Update declaration.
2333         (build_call_vec): Declare.
2334         (ctor_to_vec): Declare.
2335         * c-common.c (tree_vector_cache): New static variable.
2336         (make_tree_vector): New function.
2337         (release_tree_vector): New function.
2338         (make_tree_vector_single): New function.
2339         (make_tree_vector_copy): New function.
2340         * c-common.h (tree_vector_cache, make_tree_vector): Declare.
2341         (make_tree_vector_single, make_tree_vector_copy): Declare.
2342         * c-parser.c (cached_expr_list_1, cached_expr_list_2): Remove.
2343         (c_parser_expr_list): Don't manage cache here, instead call
2344         make_tree_vector.
2345         (c_parser_release_expr_list): Remove static function.
2346         (c_parser_vec_to_tree_list): Remove static function.
2347         (c_parser_attributes): Call build_tree_list_vec instead of
2348         c_parser_vec_to_tree_list.  Call release_tree_vector instead of
2349         c_parser_release_expr_list.
2350         (c_parser_postfix_expression_after_primary): Likewise.
2351         (c_parser_objc_keywordexpr): Likewise.
2352
2353 2009-05-20  Sandra Loosemore  <sandra@codesourcery.com>
2354
2355         * doc/tm.texi (Misc): Document TARGET_INVALID_PARAMETER_TYPE,
2356         TARGET_INVALID_RETURN_TYPE, TARGET_PROMOTED_TYPE, and
2357         TARGET_CONVERT_TO_TYPE.
2358         * hooks.c (hook_tree_const_tree_null): Define.
2359         * hooks.h (hook_tree_const_tree_null): Declare.
2360         * target.h (struct gcc_target):  Add invalid_parameter_type,
2361         invalid_return_type, promoted_type, and convert_to_type fields.
2362         * target-def.h: (TARGET_INVALID_PARAMETER_TYPE): Define.
2363         (TARGET_INVALID_RETURN_TYPE): Define.
2364         (TARGET_PROMOTED_TYPE): Define.
2365         (TARGET_CONVERT_TO_TYPE): Define.
2366         (TARGET_INITIALIZER): Update for new fields.
2367         * c-decl.c (grokdeclarator): Check targetm.invalid_return_type.
2368         (grokparms): Check targetm.invalid_parameter_type.
2369         * c-typeck.c (default_conversion): Check targetm.promoted_type.
2370         * c-convert.c (convert): Check targetm.convert_to_type.
2371
2372 2009-05-20  Adam Nemet  <anemet@caviumnetworks.com>
2373
2374         * config/mips/mips.md (*extenddi_truncate<mode>,
2375         *extendsi_truncate<mode>): Emit exts if supported.  Add attribute
2376         defintions.
2377         (*extendhi_truncateqi): New define_insn_and_sptit.
2378
2379 2009-05-20  Jakub Jelinek  <jakub@redhat.com>
2380
2381         PR middle-end/40204
2382         * fold-const.c (fold_binary) <case BIT_AND_EXPR>: Avoid infinite
2383         recursion if build_int_cst_type returns the same INTEGER_CST as arg1.
2384
2385 2009-05-20  Eric Botcazou  <ebotcazou@adacore.com>
2386
2387         * fold-const.c (build_fold_addr_expr_with_type): Take the address of
2388         the operand of VIEW_CONVERT_EXPR.
2389
2390 2009-05-20  H.J. Lu  <hongjiu.lu@intel.com>
2391
2392         * config/i386/driver-i386.c (host_detect_local_cpu): Check
2393         extended family and model for Intel processors.  Support Intel Atom.
2394
2395 2009-05-20  Olivier Hainque  <hainque@adacore.com>
2396
2397         * gstab.h (stab_code_type): Define, to be used instead of the
2398         __stab_debug_code enum, made anonymous.  Add 2009 to the copyright
2399         notice.
2400         * dbxout.c (STAB_CODE_TYPE): Remove #define and replace use
2401         occurrences by stab_code_type.
2402         * mips-tfile.c (STAB_CODE_TYPE): Remove #define, unused.
2403
2404 2009-05-20  Martin Jambor  <mjambor@suse.cz>
2405
2406         * tree-flow.h (insert_edge_copies_seq): Undeclare.
2407         (sra_insert_before): Likewise.
2408         (sra_insert_after): Likewise.
2409         (sra_init_cache): Likewise.
2410         (sra_type_can_be_decomposed_p): Likewise.
2411         * tree-mudflap.c (insert_edge_copies_seq): Copied here from tree-sra.c
2412         * tree-sra.c (sra_type_can_be_decomposed_p): Made static.
2413         (sra_insert_before): Likewise.
2414         (sra_insert_after): Likewise.
2415         (sra_init_cache): Likewise.
2416         (insert_edge_copies_seq): Made static and moved upwards.
2417
2418         * tree-complex.c (extract_component): Added VIEW_CONVERT_EXPR switch
2419         case.
2420
2421         * tree-flow-inline.h (contains_view_convert_expr_p): New function.
2422
2423         * ipa-prop.c (get_ssa_def_if_simple_copy): New function.
2424         (determine_cst_member_ptr): Call get_ssa_def_if_simple_copy to skip
2425         simple copies.
2426
2427 2009-05-20  Richard Guenther  <rguenther@suse.de>
2428
2429         * expr.c (expand_expr_real_1): Avoid calling do_store_flag
2430         with mismatched comparison modes.
2431
2432 2009-05-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2433
2434         * config/arm/arm.md (*arm_iorsi3): Refactored for only ARM.
2435         (peephole ior (reg, int) -> mov, ior): Refactored for only ARM.
2436         * config/arm/thumb2.md (*thumb_andsi_not_shiftsi_si): Allow bic
2437         with shifts for Thumb2.
2438         (orsi_notsi): New for orn.
2439         (*thumb_orsi_notshiftsi_si): Allow orn with shifts.
2440         (*thumb2_iorsi3): Rewrite support for iorsi for Thumb2.
2441         * config/arm/arm.c (const_ok_for_op): Split case for IOR for Thumb2.
2442         (arm_gen_constant): Set can_invert for IOR and Thumb2, Add comments.
2443         Don't invert remainder for IOR.
2444         
2445 2009-05-19  Zdenek Dvorak  <ook@ucw.cz>
2446
2447         PR tree-optimization/40087
2448         * tree-ssa-loop-niter.c (number_of_iterations_ne_max,
2449         number_of_iterations_ne): Rename never_infinite argument.
2450         (number_of_iterations_lt_to_ne, number_of_iterations_lt,
2451         number_of_iterations_le): Handle pointer-type ivs when
2452         exit_must_be_taken is false.
2453         (number_of_iterations_cond):  Do not always assume that
2454         exit_must_be_taken if the control variable is a pointer.
2455
2456 2009-05-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2457
2458         * c-typeck.c (build_binary_op): Allow % on integal vectors.
2459         * doc/extend.texi (Vector Extension): Document that % is allowed too.
2460
2461 2009-05-19  H.J. Lu  <hongjiu.lu@intel.com>
2462
2463         * config/i386/i386.c (ix86_avoid_jump_mispredicts): Check
2464         ASM_OUTPUT_MAX_SKIP_PAD instead of ASM_OUTPUT_MAX_SKIP_ALIGN.
2465
2466 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2467
2468         PR c/40172
2469         * c.opt (Wlogical-op): Disabled by default.
2470         * c-opt (c_common_post_options): Do not enable Wlogical-op with
2471         Wextra.
2472         * doc/invoke.texi (Wlogical-op): Likewise.
2473         
2474 2009-05-19  Eric Botcazou  <ebotcazou@adacore.com>
2475
2476         * tree-scalar-evolution.c (follow_ssa_edge_expr) <NOP_EXPR>: Turn
2477         into CASE_CONVERT.
2478         <PLUS_EXPR>: Strip useless type conversions instead of type nops.
2479         Propagate the type of the first operand.
2480         <ASSERT_EXPR>: Simplify.
2481         (follow_ssa_edge_in_rhs): Use gimple_expr_type to get the type.
2482         Rewrite using the RHS code as discriminant.
2483         <NOP_EXPR>: Turn into CASE_CONVERT.
2484         <PLUS_EXPR>: Propagate the type of the first operand.
2485
2486 2009-05-19  Steve Ellcey  <sje@cup.hp.com>
2487
2488         * config/ia64/ia64-protos.h (ia64_dconst_0_5): New.
2489         (ia64_dconst_0_375): New.
2490         * config/ia64/ia64.c (ia64_override_options): Remove
2491         -minline-sqrt-min-latency warning.
2492         (ia64_dconst_0_5_rtx, ia64_dconst_0_5): New.
2493         (ia64_dconst_0_375_rtx, ia64_dconst_0_375): New
2494         * config/ia64/ia64.md (*sqrt_approx): Remove.
2495         (sqrtsf2): Remove #if 0.
2496         (sqrtsf2_internal_thr): Rewrite and move to div.md.
2497         (sqrtdf): Remove assert.
2498         (sqrtdf2_internal_thr): Rewrite and move to div.md.
2499         (sqrtxf2): Remove #if 0.
2500         (sqrtxf2_internal_thr): Rewrite and move to div.md.
2501         * div.md (sqrt_approx_rf): New.
2502         (sqrtsf2_internal_thr): New implementation.
2503         (sqrtsf2_internal_lat): New.
2504         (sqrtdf2_internal_thr: New implementation.
2505         (sqrtxf2_internal): New implementation.
2506
2507 2009-05-19  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2508             Hans-Peter Nilsson  <hp@axis.com>
2509
2510         * defaults.h (UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE)
2511         (WCHAR_TYPE, MODIFIED_WCHAR_TYPE, PTRDIFF_TYPE, WINT_TYPE)
2512         (INTMAX_TYPE, UINTMAX_TYPE, SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE)
2513         (INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE)
2514         (UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE)
2515         (INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE)
2516         (UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE)
2517         (INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE)
2518         (UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE)
2519         (SIZE_TYPE, PID_TYPE, CHAR16_TYPE, CHAR32_TYPE): Move defaults here...
2520         * c-common.c: ...from here.
2521
2522 2009-05-19  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2523
2524         * c-common.c (warn_logical_operator): Remove unnecessary conditionals.
2525
2526 2009-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2527
2528         * builtins.c (do_mpc_arg1): Separate MPFR/MPC C rounding types.
2529
2530 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2531
2532         * unwind-dw2-fde.c (fde_unencoded_compare): Replace type punning
2533         assignments with memcpy calls.
2534         (add_fdes): Likewise.
2535         (binary_search_unencoded_fdes): Likewise.
2536         (linear_search_fdes): Eliminate type puns.
2537         
2538 2009-05-19  Richard Guenther  <rguenther@suse.de>
2539
2540         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do
2541         not falsely claim to have propagated into all uses.
2542
2543 2009-05-19  Ben Elliston  <bje@au.ibm.com>
2544
2545         * doc/invoke.texi (C Dialect Options): Update OpenMP specification
2546         version to v3.0.
2547
2548 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2549
2550         * config/sh/sh-protos.h (sh_legitimate_address_p): Remove.
2551         * config/sh/sh.c (sh_legitimate_address_p): Make static.
2552         (TARGET_LEGITIMATE_ADDRESS_P): New.
2553         * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
2554         * config/sh/sh.md: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
2555         
2556 2009-05-18  Dodji Seketeli  <dodji@redhat.com>
2557
2558         PR debug/40109
2559         * dwarf2out.c (gen_type_die_with_usage): Generate the DIE as a
2560         child of the containing namespace's DIE.
2561
2562 2009-05-18  Adam Nemet  <anemet@caviumnetworks.com>
2563
2564         * config/mips/mips.md (*zero_extend<GPR:mode>_trunc<SHORT:mode>,
2565         *zero_extendhi_truncqi):  Move after the zero_extend patterns.
2566         (*extenddi_truncate<mode>, *extendsi_truncate<mode>): Move after the
2567         extend patterns.
2568
2569 2009-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2570
2571         PR target/39942
2572         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Replace
2573         gen_align with gen_pad.
2574         (ix86_reorg): Check ASM_OUTPUT_MAX_SKIP_PAD instead of
2575         #ifdef ASM_OUTPUT_MAX_SKIP_ALIGN.
2576
2577         * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): New.
2578         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
2579
2580         * config/i386/i386.md (align): Renamed to ...
2581         (pad): This.  Replace ASM_OUTPUT_MAX_SKIP_ALIGN with
2582         ASM_OUTPUT_MAX_SKIP_PAD.
2583
2584 2009-05-18  Andreas Schwab  <schwab@linux-m68k.org>
2585
2586         * config.gcc: Fix variable syntax.
2587
2588         PR target/39531
2589         * config/m68k/m68k.c (output_andsi3): Mask off sign bit copies
2590         before calling exact_log2.
2591         (output_iorsi3): Likewise.
2592         (output_xorsi3): Likewise.
2593
2594 2009-05-18  Kaz Kojima  <kkojima@gcc.gnu.org>
2595
2596         * config/sh/sh.c (expand_cbranchdi4): Use a scratch register
2597         for the none zero constant operand except for EQ and NE
2598         comprisons even when the first operand is R0.
2599
2600 2009-05-18  Andreas Krebbel  <krebbel1@de.ibm.com>
2601
2602         * config/s390/2064.md: Remove trailing whitespaces.
2603         * config/s390/2084.md: Likewise.
2604         * config/s390/constraints.md: Likewise.
2605         * config/s390/fixdfdi.h: Likewise.
2606         * config/s390/libgcc-glibc.ver: Likewise.
2607         * config/s390/s390-modes.def: Likewise.
2608         * config/s390/s390-protos.h: Likewise.
2609         * config/s390/s390.c: Likewise.
2610         * config/s390/s390.h: Likewise.
2611         * config/s390/s390.md: Likewise.
2612         * config/s390/tpf-unwind.h: Likewise.
2613
2614 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2615
2616         * config/m68k/m68k.c (m68k_legitimize_address): Fix typo in signature.
2617
2618 2009-05-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
2619
2620         M68K TLS support.
2621         * configure.ac (m68k-*-*): Check if binutils support TLS.
2622         * configure: Regenerate.
2623         * config/m68k/predicates.md (symbolic_operand): Extend comment.
2624         * config/m68k/constraints.md (Cu): New constraint.
2625         * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove.
2626         (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants.
2627         (movsi): Handle TLS symbols.
2628         (addsi3_5200): Handle XTLS symbols, indent.
2629         * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare.
2630         (m68k_tls_reference_p): Declare.
2631         (m68k_legitimize_address): Declare.
2632         (m68k_unwrap_symbol): Declare.
2633         * config/m68k/m68k.opt (mxtls): New option.
2634         * config/m68k/m68k.c (ggc.h): Include.
2635         (m68k_output_dwarf_dtprel): Implement hook.
2636         (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define.
2637         (m68k_expand_prologue): Load GOT pointer when function needs it.
2638         (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols.
2639         (m68k_legitimate_constant_address_p): Same.
2640         (m68k_decompose_address): Handle TLS references.
2641         (m68k_get_gp): New static function.
2642         (enum m68k_reloc): New contants.
2643         (TLS_RELOC_P): New macro.
2644         (m68k_wrap_symbol): New static function.
2645         (m68k_unwrap_symbol): New function.
2646         (m68k_final_prescan_insn_1): New static function.
2647         (m68k_final_prescan_insn): New function.
2648         (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static
2649         functions.
2650         (legitimize_pic_address): Handle TLS references..
2651         (m68k_tls_get_addr, m68k_get_tls_get_addr)
2652         (m68k_libcall_value_in_a0_p)
2653         (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp)
2654         (m68k_call_m68k_read_tp): Helper variables and functions for ...
2655         (m68k_legitimize_tls_address): Handle TLS references.
2656         (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p):
2657         New functions.
2658         (m68k_legitimize_address): Handle TLS symbols.
2659         (m68k_get_reloc_decoration): New static function.
2660         (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and
2661         UNSPEC_RELOC32.
2662         (m68k_output_dwarf_dtprel): Implement hook.
2663         (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32.
2664         (m68k_libcall_value): Return result in A0 instead of D0 when asked by
2665         m68k_call_* routines.
2666         (sched_attr_op_type): Handle TLS symbols.
2667         (gt-m68k.h): Include.
2668         * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
2669         (LEGITIMATE_PIC_OPERAND_P): Support TLS.
2670
2671 2009-05-18  Martin Jambor  <mjambor@suse.cz>
2672
2673         * ipa-prop.c (ipa_check_stmt_modifications): Removed.
2674         (visit_store_addr_for_mod_analysis): New function.
2675         (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops.
2676         (determine_cst_member_ptr): Use gimple_assign_single_p.
2677         (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p.
2678         (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of
2679         operands.  Don't check number of operands of a NOP_EXPR.
2680
2681 2009-05-18  Eric Fisher  <joefoxreal@gmail.com>
2682
2683         * doc/tree-ssa.texi (SSA Operands): Fix a mistake.
2684
2685 2009-05-17  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2686
2687         PR c/40172
2688         * c-common.c (warn_logical_operator): Don't warn if one of
2689         expression isn't always true or false.
2690
2691 2009-05-17  Kai Tietz  <kai.tietz@onevision.com>
2692
2693         * config/i386/biarch32.h: New file.
2694         * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file.
2695
2696 2009-05-17  Adam Nemet  <anemet@caviumnetworks.com>
2697
2698         * config/mips/mips.md (*zero_extend<mode>_trunchi,
2699         *zero_extend<mode>_truncqi): Merge these into ...
2700         (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern.
2701         Name the pattern following this as *zero_extendhi_truncqi.
2702
2703 2009-05-16  Brad Lucier  <lucier@math.purdue.edu>
2704
2705         PR middle-end/39301
2706         * hwint.h: Add macro HOST_WIDEST_INT_PRINT.
2707         * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT.
2708         (output_info): Make field HOST_WIDEST_INT.
2709         (print_statistics): Use HOST_WIDEST_INT_PRINT.
2710         (dump_bitmat_statistics): Same.
2711
2712 2009-05-16  Francois-Xavier Coudert  <fxcoudert@gmail.com>
2713
2714         * config.gcc (use_gcc_stdint):  Set to wrap.
2715         * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE,
2716         INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE,
2717         UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE,
2718         INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE,
2719         UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE,
2720         INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE,
2721         UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE,
2722         UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define.
2723
2724 2009-05-16  Joseph Myers  <joseph@codesourcery.com>
2725
2726         * config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and
2727         tune_64.
2728         * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT):
2729         Move definitions earlier.
2730         (OPT_ARCH64, OPT_ARCH32): Define.
2731         (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32
2732         and tune_64.
2733
2734 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2735
2736         PR target/40153
2737         * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name
2738         implies.
2739
2740 2009-05-16  Richard Earnshaw  <rearnsha@arm.com>
2741
2742         * arm.md (movdi2): Copy non-reg values to DImode registers.
2743
2744 2009-05-16  Jakub Jelinek  <jakub@redhat.com>
2745
2746         PR target/39942
2747         * final.c (label_to_max_skip): New function.
2748         (label_to_alignment): Only use LABEL_TO_ALIGNMENT if
2749         CODE_LABEL_NUMBER <= max_labelno.
2750         * output.h (label_to_max_skip): New prototype.
2751         * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to...
2752         (ix86_avoid_jump_mispredicts): ... this.  Don't define if
2753         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.  Update comment.
2754         Handle CODE_LABELs with >= 16 byte alignment or with
2755         max_skip == (1 << align) - 1.
2756         (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if
2757         ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined.
2758
2759         PR target/39942
2760         * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second
2761         .p2align 3 if MAX_SKIP is smaller than 7.
2762         * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise.
2763
2764 2009-05-15  Ian Lance Taylor  <iant@google.com>
2765
2766         * alias.c (struct alias_set_entry_d): Rename from struct
2767         alias_set_entry.  Change all uses.
2768         * except.c (struct call_site_record_d): Rename from struct
2769         call_site_record.  Change all uses.
2770         * except.h (struct eh_region_d): Rename from struct eh_region.
2771         Change all uses.
2772         * gcse.c (struct hash_table_d): Rename from struct hash_table.
2773         Change all uses.
2774         * graphite.c (struct ivtype_map_elt_d): Rename fromstruct
2775         ivtype_map_elt.  Change all uses.
2776         (struct rename_map_elt_d): Rename fromstruct rename_map_elt.
2777         Change all uses.
2778         (struct ifsese_d): Rename fromstruct ifsese.  Change all uses.
2779         * graphite.h (struct name_tree_d): Rename from struct name_tree.
2780         Change all uses.
2781         (struct sese_d): Rename from struct sese.  Change all uses.
2782         * omega.h (struct eqn_d): Rename from struct eqn.  Change all uses.
2783         (struct omega_pb_d): Rename from struct omega_pb.  Change all uses.
2784         * optabs.h (struct optab_d): Rename from struct optab.  Change all
2785         uses.
2786         (struct convert_optab_d): Rename from struct convert_optab.
2787         Change all uses.
2788         * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct
2789         ipa_opt_pass.  Change all uses.
2790         * tree-predcom.c (struct dref_d): Rename from struct dref.  Change
2791         all uses.
2792
2793         * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already
2794         defined as a typedef.
2795         (grokdeclarator): If -Wc++-compat, warn if a typedef is already
2796         defined as a tag.
2797
2798 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2799
2800         PR 16302
2801         * fold-const.c (make_range,build_range_check,merge_ranges): Move
2802         declaration to...
2803         (merge_ranges): Returns bool. 
2804         * tree.h (make_range): .. to here.
2805         (build_range_check): Likewise.
2806         (merge_ranges): Likewise. Renamed from merge_ranges.
2807         * c-typeck.c (parser_build_binary_op): Update calls to
2808         warn_logical_operator.
2809         * c-common.c (warn_logical_operator): Add new warning.
2810         * c-common.h (warn_logical_operator): Update declaration.
2811         
2812 2009-05-15  Manuel López-Ibáñez  <manu@gcc.gnu.org>
2813
2814         * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.
2815         
2816 2009-05-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2817
2818         * doc/install.texi: Document MPC requirements, flags etc.
2819
2820         * builtins.c (do_mpc_arg1, fold_builtin_ccos): New.
2821         (fold_builtin_cexp): Ensure we get a complex REAL_TYPE.
2822         Evaluate constant arguments.
2823         (fold_builtin_carg): Ensure we get a complex REAL_TYPE.
2824         (fold_builtin_1): Likewise, also evaluate constant arguments.
2825         Remove superfluous break.
2826         (do_mpc_ckconv): New.
2827         * real.h: Include mpc.h.
2828         * toplev.c (print_version): Output MPC version info if available.
2829
2830 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2831
2832         * fold-const.c (fold_convert_const_real_from_real): Check for overflow.
2833
2834 2009-05-15  H.J. Lu  <hongjiu.lu@intel.com>
2835
2836         * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p
2837         only once.
2838
2839 2009-05-15  Jan Hubicka  <jh@suse.cz>
2840
2841         * doc/invoke.texi (max-early-inliner-iterations): New flag.
2842         * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE.
2843         (try_inline): Fix return value.
2844         (cgraph_decide_inlining_incrementally): Honor new value.
2845         (cgraph_early_inlining): Handle indirect inlining.
2846         * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New.
2847
2848 2009-05-15  Jan Hubicka  <jh@suse.cz>
2849
2850         * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.
2851         * cgraphunit.c (cgraph_finalize_function): Set it.
2852         (cgraph_expand_function): Use it.
2853
2854 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2855
2856         * real.c (encode_ieee_half): Define.
2857         (decode_ieee_half): Define.
2858         (ieee_half_format): Define.
2859         (arm_half_format): Define.
2860         * real.h (ieee_half_format): Declare.
2861         (arm_half_format): Declare.
2862
2863 2009-05-15  Sandra Loosemore  <sandra@codesourcery.com>
2864
2865         * optabs.c (prepare_float_lib_cmp):  Test that the comparison,
2866         swapped, and reversed optabs exist before trying to use them.
2867
2868 2009-05-15  Paul Brook  <paul@codesourcery.com>
2869             Sandra Loosemore  <sandra@codesourcery.com>
2870
2871         * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure
2872         loads.  Allow PRE_DEC.
2873         (output_move_neon): Handle PRE_DEC.
2874         (arm_print_operand): Add 'A' for neon structure loads.
2875         * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype.
2876         * config/arm/neon.md (neon_mov): Update comment.
2877         * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand
2878         calls.
2879         (Um): New constraint.
2880
2881 2009-05-15  Jan Hubicka  <jh@suse.cz>
2882
2883         Revert the following patch until testsuite fallout is fixed:
2884         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2885         * cgraph.h (struct inline_summary): New filed self_wize,
2886         size_inlining_benefit, self_time and time_inlining_benefit.
2887         (struct cgraph_global_info): Replace insns by time ans size fields.
2888         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2889         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2890         (ipcp_update_callgraph): Do not touch function bodies.
2891         * ipa-inline.c: Include except.h
2892         (MAX_TIME): New constant.
2893         (overall_insns): Remove
2894         (overall_size, max_benefit): New static variables.
2895         (cgraph_estimate_time_after_inlining): New function.
2896         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2897         (cgraph_clone_inlined_nodes): Update size.
2898         (cgraph_mark_inline_edge): Update size.
2899         (cgraph_estimate_growth): Use size info.
2900         (cgraph_check_inline_limits): Check size.
2901         (cgraph_default_inline_p): Likewise.
2902         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2903         (cgraph_decide_recursive_inlining): Check size.
2904         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2905         and times.
2906         (cgraph_decide_inlining): Likewise.
2907         (cgraph_decide_inlining_incrementally): Likewise; honor
2908         PARAM_EARLY_INLINING_INSNS.
2909         (likely_eliminated_by_inlining_p): New predicate.
2910         (estimate_function_body_sizes): New function.
2911         (compute_inline_parameters): Use it.
2912         * except.c (must_not_throw_labels): New function.
2913         * except.h (must_not_throw_labels): Declare.
2914         * tree-inline.c (init_inline_once): Kill inlining_weigths
2915         * tree-ssa-structalias.c: Avoid uninitialized warning.
2916         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2917         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2918         (PARAM_INLINE_CALL_COST): Remove.
2919         (PARAM_EARLY_INLINING_INSNS): New.
2920
2921 2009-05-15  Richard Guenther  <rguenther@suse.de>
2922
2923         * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals,
2924         not TODO_update_ssa.
2925
2926 2009-05-15  Richard Guenther  <rguenther@suse.de>
2927
2928         PR tree-optimization/39999
2929         * gimple.h (gimple_expr_type): Use the expression type looking
2930         through useless conversions.
2931         * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type.
2932         (vn_nary_op_insert_stmt): Likewise.
2933         (simplify_binary_expression): Likewise.
2934
2935 2009-05-15  Richard Guenther  <rguenther@suse.de>
2936
2937         * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2938         New options, enabled by default.
2939         * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta):
2940         Document.
2941         * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop.
2942         * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop.
2943         * tree-ssa-structalias.c (gate_tree_pta): New function.
2944         (pass_build_alias): Use it.
2945
2946 2009-05-15  Joseph Myers  <joseph@codesourcery.com>
2947
2948         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
2949         recurse on an invariant address if a conversion from a pointer
2950         type to a wider integer type is involved.
2951
2952 2009-05-15  Jan Hubicka  <jh@suse.cz>
2953
2954         * cgraph.c (dump_cgraph_node): Dump size/time/benefit.
2955         * cgraph.h (struct inline_summary): New filed self_wize,
2956         size_inlining_benefit, self_time and time_inlining_benefit.
2957         (struct cgraph_global_info): Replace insns by time ans size fields.
2958         * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size
2959         (ipcp_estimate_growth, ipcp_insert_stage): Likewise.
2960         (ipcp_update_callgraph): Do not touch function bodies.
2961         * ipa-inline.c: Include except.h
2962         (MAX_TIME): New constant.
2963         (overall_insns): Remove
2964         (overall_size, max_benefit): New static variables.
2965         (cgraph_estimate_time_after_inlining): New function.
2966         (cgraph_estimate_size_after_inlining): Rewrite using benefits.
2967         (cgraph_clone_inlined_nodes): Update size.
2968         (cgraph_mark_inline_edge): Update size.
2969         (cgraph_estimate_growth): Use size info.
2970         (cgraph_check_inline_limits): Check size.
2971         (cgraph_default_inline_p): Likewise.
2972         (cgraph_edge_badness): Compute badness based on benefit and size cost.
2973         (cgraph_decide_recursive_inlining): Check size.
2974         (cgraph_decide_inlining_of_small_function): Update size; dump sizes
2975         and times.
2976         (cgraph_decide_inlining): Likewise.
2977         (cgraph_decide_inlining_incrementally): Likewise; honor
2978         PARAM_EARLY_INLINING_INSNS.
2979         (likely_eliminated_by_inlining_p): New predicate.
2980         (estimate_function_body_sizes): New function.
2981         (compute_inline_parameters): Use it.
2982         * except.c (must_not_throw_labels): New function.
2983         * except.h (must_not_throw_labels): Declare.
2984         * tree-inline.c (init_inline_once): Kill inlining_weigths
2985         * tree-ssa-structalias.c: Avoid uninitialized warning.
2986         * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300.
2987         (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60.
2988         (PARAM_INLINE_CALL_COST): Remove.
2989         (PARAM_EARLY_INLINING_INSNS): New.
2990         doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update.
2991         (inline-call-cost): Remove.
2992         (early-inlining-insns): New.
2993
2994 2009-05-15  Eric Botcazou  <ebotcazou@adacore.com>
2995
2996         * dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
2997         for bounds.
2998         (print_int_cst_bounds_in_octal_p): Likewise.
2999         (dbxout_type): Adjust calls to above functions.  Be prepared to deal
3000         with subtypes.
3001         * dwarf2out.c (base_type_die): Likewise.
3002         (is_subrange_type): Delete.
3003         (subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
3004         (modified_type_die): Call subrange_type_for_debug_p on subtypes.
3005         * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it
3006         if the destination type is boolean.
3007         (build_range_check): Do not special-case subtypes.
3008         (fold_sign_changed_comparison): Likewise.
3009         (fold_unary): Likewise.
3010         * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
3011         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
3012         * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
3013         * tree.c (subrange_type_for_debug_p): New predicate based on the
3014         former is_subrange_type.
3015         * tree.h (subrange_type_for_debug_p): Declare.
3016         * tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
3017         (convert_affine_scev): Remove call to above function.
3018         (chrec_convert_aggressive): Likewise.
3019         * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
3020         false for conversions involving subtypes.
3021         * tree-vrp.c (vrp_val_max): Do not special-case subtypes.
3022         (vrp_val_min): Likewise.
3023         (needs_overflow_infinity): Likewise.
3024         (extract_range_from_unary_expr): Likewise.
3025
3026 2009-05-15  Paolo Bonzini  <bonzini@gnu.org>
3027
3028         * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.
3029         * config/frv/frv.c: Likewise.
3030         * config/s390/s390.c: Likewise.
3031         * config/sparc/sparc.h: Likewise.
3032         * config/i386/i386.h: Likewise.
3033         * config/i386/i386.c: Likewise.
3034         * config/crx/crx.c: Likewise.
3035         * config/m68hc11/m68hc11.h: Likewise.
3036         * config/iq2000/iq2000.c: Likewise.
3037         * config/mn10300/mn10300.h: Likewise.
3038         * config/mn10300/mn10300.c: Likewise.
3039         * config/m68k/m68k.c: Likewise.
3040         * config/rs6000/rs6000.c: Likewise.
3041         * config/rs6000/xcoff.h: Likewise.
3042         * config/rs6000/linux64.h: Likewise.
3043         * config/rs6000/sysv4.h: Likewise.
3044         * config/score/score3.c: Likewise.
3045         * config/score/score7.c: Likewise.
3046         * config/score/score.c: Likewise.
3047         * config/arm/arm.md: Likewise.
3048         * config/mips/mips.c: Likewise.
3049         * config/mips/mips.md: Likewise.
3050         * config/bfin/bfin.h: Likewise.
3051         * config/pa/pa.c: Likewise.
3052         * config/pa/constraints.md: Likewise.
3053
3054         * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete.
3055         * config/pdp11/pdp11.c (legitimate_address_p): Delete.
3056         * config/pdp11/pdp11.h: Use memory_address_p instead.
3057
3058 2009-05-14  Ian Lance Taylor  <iant@google.com>
3059
3060         * passes.c (finish_optimization_passes): Change i to int.
3061         * plugin.c (plugins_active_p): Change event to int.
3062         (dump_active_plugins): Likewise.
3063         * reginfo.c (invalid_mode_change_p): Change to to unsigned int.
3064         Add cast.
3065         * tree.c (tree_range_check_failed): Change c to unsigned int.
3066         (omp_clause_range_check_failed): Likewise.
3067         (build_common_builtin_nodes): Change mode to int.  Add cast.
3068         * config/ia64/ia64.c (is_emitted): Change r to unsigned int.
3069         (ia64_hard_regno_rename_ok, ia64_eh_uses): Likewise.
3070
3071         * c-typeck.c (build_unary_op): If -Wc++-compat, warn about using
3072         ++ or -- with a variable of enum type.
3073
3074 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3075
3076         PR driver/40144
3077         * opts.c (common_handle_option): Add OPT_fcse_skip_blocks as a no-op.
3078
3079 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3080
3081         * store-motion.c: Do not include params.h
3082         * Makefile.in: Fix dependencies for various files.
3083
3084 2009-05-14  Steven Bosscher  <steven@gcc.gnu.org>
3085
3086         * auto-inc-dec.c: Fix pass description, remove apparent
3087         accidental duplication.
3088
3089 2009-05-14  H.J. Lu  <hongjiu.lu@intel.com>
3090
3091         PR middle-end/40147
3092         * ipa-utils.h (memory_identifier_string): Moved to ...
3093         * tree.h (memory_identifier_string): Here.  Add GTY(()).
3094
3095 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
3096
3097         * doc/tm.texi (TARGET_LEGITIMATE_ADDRESS_P): Refer mainly to this
3098         in the former documentation of...
3099         (GO_IF_LEGITIMATE_ADDRESS): ... this.
3100         * ira-conflicts.c (get_dup_num): Use address_operand.
3101         * targhooks.c (default_legitimate_address_p): New.
3102         * targhooks.h (default_legitimate_address_p): New.
3103         * reload.c (strict_memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]:
3104         Call hook.
3105         * recog.c (memory_address_p) [!GO_IF_LEGITIMATE_ADDRESS]: Call hook.
3106         * target.h (struct target): Add legitimate_address_p.
3107         * target-def.h (TARGET_LEGITIMATE_ADDRESS_P): New.
3108         (TARGET_INITIALIZER): Include it.
3109
3110         * config/alpha/alpha.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3111         * config/alpha/alpha-protos.h (alpha_legitimate_address_p): Remove.
3112         * config/alpha/alpha.c (alpha_legitimate_address_p): Make static.
3113         (TARGET_LEGITIMATE_ADDRESS_P): New.
3114
3115         * config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3116         (REG_OK_STRICT_P): Delete.
3117         * config/frv/frv-protos.h (frv_legitimate_address_p): Rename to...
3118         (frv_legitimate_address_p_1): ... this.
3119         * config/frv/frv.c (frv_legitimate_address_p): Forward to...
3120         (frv_legitimate_address_p_1): ... the renamed old
3121         frv_legitimate_address_p.
3122         * config/frv/predicates.md: Adjust calls to frv_legitimate_address_p.
3123         (TARGET_LEGITIMATE_ADDRESS_P): New.
3124
3125         * config/s390/s390.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3126         * config/s390/s390-protos.h (legitimate_address_p): Remove.
3127         * config/s390/s390.c (legitimate_address_p): Rename to...
3128         (s390_legitimate_address_p): ... this, make static.
3129         (legitimize_address): Adjust call.
3130         (TARGET_LEGITIMATE_ADDRESS_P): New.
3131         * config/s390/constraints.md ("e"): Call strict_memory_address_p.
3132
3133         * config/m32c/m32c.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3134         * config/m32c/m32c-protos.h (m32c_legitimate_address_p): Remove.
3135         * config/m32c/m32c.c (m32c_legitimate_address_p): Make static.
3136         (TARGET_LEGITIMATE_ADDRESS_P): New.
3137
3138         * config/spu/spu.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3139         * config/spu/spu-protos.h (spu_legitimate_address): Remove.
3140         * config/spu/spu.c (spu_legitimate_address): Rename to...
3141         (spu_legitimate_address_p): ... this, make static.
3142         (TARGET_LEGITIMATE_ADDRESS_P): New.
3143
3144         * config/sparc/sparc.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3145         * config/sparc/sparc-protos.h (legitimate_address_p): Remove.
3146         * config/sparc/sparc.c (legitimate_address_p): Rename to...
3147         (sparc_legitimate_address_p): ... this, make static and return bool.
3148         (legitimize_address): Adjust call.
3149         (TARGET_LEGITIMATE_ADDRESS_P): New.
3150
3151         * config/i386/i386.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3152         * config/i386/i386-protos.h (legitimate_address_p): Remove.
3153         * config/i386/i386.c (legitimate_address_p): Rename to...
3154         (ix86_legitimate_address_p): ... this, make static.
3155         (constant_address_p): Move after it, adjust call.
3156         (TARGET_LEGITIMATE_ADDRESS_P): New.
3157
3158         * config/avr/avr.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3159         * config/avr/avr-protos.h (legitimate_address_p): Remove.
3160         * config/avr/avr.c (legitimate_address_p): Rename to...
3161         (avr_legitimate_address_p): ... this, make static.
3162         (legitimize_address): Adjust call.
3163         (TARGET_LEGITIMATE_ADDRESS_P): New.
3164
3165         * config/crx/crx.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3166         * config/crx/crx-protos.h (crx_legitimate_address_p): Remove.
3167         * config/crx/crx.c (crx_legitimate_address_p): Make static.
3168         (TARGET_LEGITIMATE_ADDRESS_P): New.
3169
3170         * config/xtensa/xtensa.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3171         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): Remove.
3172         * config/xtensa/xtensa.c (xtensa_legitimate_address_p): Make static.
3173         (TARGET_LEGITIMATE_ADDRESS_P): New.
3174
3175         * config/stormy16/stormy16.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3176         * config/stormy16/stormy16-protos.h (xstormy16_legitimate_address_p):
3177         Remove.
3178         * config/stormy16/stormy16.c (xstormy16_legitimate_address_p):
3179         Make static.
3180         (TARGET_LEGITIMATE_ADDRESS_P): New.
3181
3182         * config/m68hc11/m68hc11.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3183         * config/m68hc11/m68hc11-protos.h (m68hc11_go_if_legitimate_address):
3184         Remove.
3185         * config/m68hc11/m68hc11.c (m68hc11_go_if_legitimate_address):
3186         Rename to...
3187         (m68hc11_legitimate_address_p): ... this, make static.
3188         (go_if_legitimate_address_internal): Rename to...
3189         (m68hc11_legitimate_address_p_1): ... this.
3190         (legitimize_address): Adjust call.
3191         (TARGET_LEGITIMATE_ADDRESS_P): New.
3192
3193         * config/iq2000/iq2000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3194         * config/iq2000/iq2000-protos.h (iq2000_legitimate_address_p): Remove.
3195         * config/iq2000/iq2000.c (iq2000_legitimate_address_p): Make static.
3196         (TARGET_LEGITIMATE_ADDRESS_P): New.
3197
3198         * config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3199         * config/mn10300/mn10300-protos.h (legitimate_address_p): Remove.
3200         * config/mn10300/mn10300.c (legitimate_address_p): Rename to...
3201         (mn10300_legitimate_address_p): ... this, make static.
3202         (TARGET_LEGITIMATE_ADDRESS_P): New.
3203
3204         * config/m68k/m68k.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3205         * config/m68k/m68k-protos.h (m68k_legitimate_address_p): Remove.
3206         * config/m68k/m68k.c (m68k_legitimate_address_p): Make static.
3207         (TARGET_LEGITIMATE_ADDRESS_P): New.
3208
3209         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3210         (REG_OK_STRICT_FLAG, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P): Delete.
3211         (INT_REG_OK_FOR_BASE_P, INT_REG_OK_FOR_INDEX_P): Move above.
3212         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3213         * config/rs6000/rs6000-protos.h (rs6000_legitimate_address): Remove.
3214         * config/rs6000/rs6000.c (rs6000_legitimate_address): Rename to...
3215         (rs6000_legitimate_address_p): ... this, make static.
3216         (TARGET_LEGITIMATE_ADDRESS_P): New.
3217         (REG_MODE_OK_FOR_BASE_P): Delete.
3218         (rs6000_legitimize_reload_address): Use INT_REG_OK_FOR_BASE_P.
3219
3220         * config/picochip/picochip.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3221         * config/picochip/picochip-protos.h (picochip_legitimate_address_p):
3222         Delete.
3223         * config/picochip/picochip.c (picochip_legitimate_address_p): Make
3224         static, adjust types.
3225         (TARGET_LEGITIMATE_ADDRESS_P): New.
3226
3227         * config/score/score.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3228         * config/score/score.c (score_address_p): Rename to...
3229         (score_legitimate_address_p): ... this.
3230         (TARGET_LEGITIMATE_ADDRESS_P): New.
3231         * config/score/score3.c (score3_address_p): Rename to...
3232         (score3_legitimate_address_p): ... this.
3233         * config/score/score7.c (score7_address_p): Rename to...
3234         (score7_legitimate_address_p): ... this.
3235
3236         * config/arm/arm.h (ARM_GO_IF_LEGITIMATE_ADDRESS,
3237         THUMB2_GO_IF_LEGITIMATE_ADDRESS, THUMB1_GO_IF_LEGITIMATE_ADDRESS,
3238         GO_IF_LEGITIMATE_ADDRESS): Delete.
3239         * config/arm/arm-protos.h (thumb1_legitimate_address_p,
3240         thumb2_legitimate_address_p): Delete.
3241         (arm_legitimate_address_p): Rename to...
3242         (arm_legitimate_address_outer_p): ... this.
3243         * config/arm/constraints.md ("Uq"): Adjust call.
3244         * config/arm/predicates.md (arm_extendqisi_mem_op): Likewise.
3245         * config/arm/arm.c (arm_legitimate_address_p): New, rename old one
3246         to...
3247         (arm_legitimate_address_outer_p): ... this.
3248         (thumb1_legitimate_address_p, thumb2_legitimate_address_p): Make
3249         static.
3250         (TARGET_LEGITIMATE_ADDRESS_P): New.
3251
3252         * config/mips/mips.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3253         * config/mips/mips-protos.h (mips_legitimate_address_p): Remove.
3254         * config/mips/mips.c (mips_legitimate_address_p): ... Make static.
3255         (TARGET_LEGITIMATE_ADDRESS_P): New.
3256
3257         * config/vax/vax.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3258         * config/vax/vax-protos.h (legitimate_address_p): Remove.
3259         * config/vax/vax.c (legitimate_address_p): Rename to...
3260         (vax_legitimate_address_p): ... this, make static.
3261         (TARGET_LEGITIMATE_ADDRESS_P): New.
3262
3263         * config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3264         * config/h8300/h8300-protos.h (h8300_legitimate_address_p): Remove.
3265         * config/h8300/h8300.c (h8300_legitimate_address_p): ... Make static.
3266         (TARGET_LEGITIMATE_ADDRESS_P): New.
3267
3268         * config/mmix/mmix.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3269         * config/mmix/mmix-protos.h (mmix_legitimize_address): Remove.
3270         * config/mmix/mmix.c (mmix_legitimate_address): Rename to...
3271         (mmix_legitimate_address_p): ... this, make static.
3272         (TARGET_LEGITIMATE_ADDRESS_P): New.
3273
3274         * config/bfin/bfin.h (GO_IF_LEGITIMATE_ADDRESS): Delete.
3275         * config/bfin/bfin-protos.h (bfin_legitimate_address_p): Remove.
3276         * config/bfin/bfin.c (bfin_legitimate_address_p): ... Make static.
3277         (TARGET_LEGITIMATE_ADDRESS_P): New.
3278
3279 2009-05-14  Paolo Bonzini  <bonzini@gnu.org>
3280
3281         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Remove handling
3282         of MODE_COMPLEX_INT.
3283
3284 2009-05-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3285
3286         * config/alpha/alpha.c (alpha_initialize_trampoline): Change 0 to
3287         LCT_NORMAL in function call.
3288         * mips-tdump.c (print_file_desc): Add cast to enum type.
3289         * mips-tfile.c (add_ext_symbol): Add casts to enum types.
3290         (mark_stabs): Add casts to enum types.
3291         (parse_stabs_common): Add casts to enum types.
3292
3293 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
3294
3295         * config/mips/mips.c (mips_print_operand) <REG, MEM, default>:
3296         Check for invalid values of LETTER.
3297
3298 2009-05-13  Taras Glek  <tglek@mozilla.com>
3299
3300         * attribs.c (register_attribute): moved out attribute registration
3301         into register_attribute.
3302         * doc/plugins.texi: Documented register_attribute and
3303         PLUGIN_ATTRIBUTES.
3304         * gcc-plugin.h: Added forward decl for register_attribute.
3305         * gcc-plugin.h (plugins_event): Added PLUGIN_ATTRIBUTES.
3306         * plugin.c (register_callback, invoke_plugin_callbacks): Added
3307         PLUGIN_ATTRIBUTES boilerplate.
3308
3309 2009-05-14  Dave Korn  <dave.korn.cygwin@gmail.com>
3310
3311         * config/i386/msformat-c.c (ms_printf_length_specs):  Use enumeration
3312         values even in sentinel and empty entries.
3313         (ms_printf_flag_specs):  Likewise.
3314         (ms_scanf_flag_specs):  Likewise.
3315         (ms_strftime_flag_specs):  Likewise.
3316         (ms_print_char_table):  Likewise.
3317         (ms_scan_char_table):  Likewise.
3318         (ms_time_char_table):  Likewise.
3319
3320 2009-05-13  Doug Kwan  <dougkwan@google.com>
3321
3322         * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
3323
3324 2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
3325
3326         * config/mips/mips.md (store): Add attributes for QI and HI.
3327         Update comment.
3328         (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
3329         (truncdi<mode>2): ... this new pattern.
3330
3331 2009-05-13  Brad Hards  <bradh@kde.org>
3332
3333         * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
3334
3335 2009-05-14  Jakub Jelinek  <jakub@redhat.com>
3336             Ben Elliston <bje@au.ibm.com>
3337
3338         PR middle-end/40035
3339         * dse.c (check_mem_read_rtx): Guard against width == -1.
3340
3341 2009-05-13  Michael Matz  <matz@suse.de>
3342
3343         PR middle-end/39976
3344         * tree-outof-ssa.c (maybe_renumber_stmts_bb): New function.
3345         (trivially_conflicts_p): New function.
3346         (insert_backedge_copies): Use it.
3347
3348 2009-05-13  Janis Johnson  <janis187@us.ibm.com>
3349
3350         * c-pragma.c (enum pragma_switch_t): Prefix constants with PRAGMA_.
3351         (handle_stdc_pragma): Use new enum constant names.
3352         (handle_pragma_float_const_decimal64): Ditto.
3353
3354 2009-05-13  Ian Lance Taylor  <iant@google.com>
3355
3356         * Makefile.in (build/gencheck.o): Depend upon all-tree.def, not
3357         tree.def.
3358
3359 2009-05-13  Nathan Sidwell  <nathan@codesourcery.com>
3360
3361         * config/m68k/t-uclinux (M68K_MLIB_CPU): Check for FL_UCLINUX.
3362         * config/m68k/m68k-devices.def: Add FL_UCLINUX to 68020 and 54455
3363         multilibs.
3364         * config/m68k/m68k.h (FL_UCLINUX): Define.
3365
3366 2009-05-13  Jan Hubicka  <jh@suse.cz>
3367
3368         * options.c (gfc_post_options): -fwhole-program imply -fwhole-file.
3369
3370 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3371
3372         * config/sh/sh.h (OVERRIDE_OPTIONS): Clear flag_schedule_insns
3373         unless -fschedule-insns is specified.
3374
3375 2009-05-12  Kaz Kojima  <kkojima@gcc.gnu.org>
3376
3377         PR target/39561
3378         * config/sh/sh.h (OPTIMIZATION_OPTIONS): Don't set