OSDN Git Service

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