OSDN Git Service

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