OSDN Git Service

Emit DWARF for template parameters (PR debug/30161)
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2009-08-31  Dodji Seketeli  <dodji@redhat.com>
2
3         PR debug/30161
4         * cgraph.h (cgraph_get_node): Declare ...
5         * cgraph.c (cgraph_get_node): ... new function.
6         * dwarf2out.c (gen_generic_params_dies,
7         generic_parameter_die, tree_add_const_value_attribute_for_decl,
8         make_ith_pack_parameter_name,
9         append_entry_to_tmpl_value_parm_die_table,
10         gen_remaining_tmpl_value_param_die_attribute): New functions.
11         (gen_subprogram_die): Generate debug info for template parameters
12         if debug info level is higher than DINFO_LEVEL_TERSE.
13         Use tree_add_const_value_attribute_for_decl instead of
14         tree_add_const_value_attribute.
15         (gen_const_die): Use tree_add_const_value_attribute_for_decl
16         instead of tree_add_const_value_attribute.
17         (gen_struct_or_union_type_die): Generate debug
18         info for template parameters if debug info level is higher than
19         DINFO_LEVEL_TERSE.
20         (tree_add_const_value_attribute): Handle integral and pointer
21         constants. Update comment.
22         (dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
23         (dwarf_attr_name): Support DW_AT_GNU_template_name.
24         (reference_to_unused): Fix thinko. Remove redundant predicates from
25         tests.
26         (tree_add_const_value_attribute): Make this work for constant
27         expressions only.
28         tree_add_const_value_attribute_for_decl is to be used for variable
29         DECLs now.
30         (add_location_or_const_value_attribute): Use
31         tree_add_const_value_attribute_for_decl now.
32         (dwarf2out_finish): Emit the DW_AT_const_value attribute of
33         DW_TAG_template_value_param DIEs after function DIEs have been
34         emitted.
35         * langhooks.h (lang_hooks_for_types): Add
36         get_argument_pack_elems.
37         (lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
38         (lang_hooks): Added get_innermost_generic_parms,
39         get_innermost_generic_args.
40         * langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
41         LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
42         LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
43         LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
44
45 2009-08-31  DJ Delorie  <dj@redhat.com>
46
47         * config/mep/mep.c (machine_function): Add frame_locked flag.  Set
48         it once we start generating the prologue or epilogue.
49         (mep_call_saves_register): If the frame is locked, re-use cached values.
50         (mep_assign_save_slots): New, broken out from mep_expand_prologue.
51         (mep_expand_prologue): Call it.
52         (mep_expand_epilogue): Likewise.
53         (mep_start_function): Use the same logic as mep_expand_prologue.
54         (mep_pass_by_reference): Make logic more readable.
55         (mep_return_in_memory): Zero-sized objects are passed in memory.
56         (mep_reorg_noframe): Make sure we have accurate REG_DEAD notes.
57
58
59 2009-08-31  Richard Guenther  <rguenther@suse.de>
60
61         * builtins.c (fold_builtin_memory_op): Use the alias oracle
62         to query if the memory regions for memmove overlap.
63         * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Relax the
64         asserts on pointers, instead deal with odd trees.
65         (ptr_derefs_may_alias_p): Likewise.
66         (refs_may_alias_p_1): Constructor bases also never alias.
67
68 2009-08-31  Gerald Pfeifer  <gerald@pfeifer.com>
69
70         * doc/install.texi (Final install): Adjust reference on where to
71         order printed manuals.
72
73 2009-08-30  Olivier Hainque  <hainque@adacore.com>
74
75         * dwarf2out.c (switch_to_frame_table_section): Move
76         definition prior to first use.
77
78 2009-08-30  Richard Guenther  <rguenther@suse.de>
79
80         PR tree-optimization/41186
81         * tree-ssa-alias.c (ptr_deref_may_alias_ref_p): Remove.
82         (ao_ref_init_from_ptr_and_size): New function.
83         (ref_maybe_used_by_call_p_1): Be more precise tracking
84         used ranges for builtin functions.
85         (ref_maybe_used_by_call_p): Adjust.
86         (call_may_clobber_ref_p_1): Be more precise tracking clobbered
87         ranges for builtin functions.
88         * tree-ssa-alias.h (ao_ref_init_from_ptr_and_size): Declare.
89
90 2009-08-30  Alan Modra  <amodra@bigpond.net.au>
91
92         PR target/41081
93         * fwprop.c (get_reg_use_in): Delete.
94         (free_load_extend): New function.
95         (forward_propagate_subreg): Use it.
96
97 2009-08-29  Kaz Kojima  <kkojima@gcc.gnu.org>
98
99         * config.gcc (sh*-*-elf): Add superh stuff only for sh*-superh-elf.
100
101 2009-08-29  Kai Tietz<kai.tietz@onevision.com>
102
103         PR/41184
104         * config/i386.c (ix86_expand_epilogue): Correct stack adjustment for
105         padding.
106
107 2009-08-29  Douglas B Rupp  <rupp@gnat.com>
108
109         * crtstuff.c (__do_global_dtors_aux): Use atexit if no
110         fini or fini_array section.
111
112 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
113
114         * graphite-dependences.c (graphite_legal_transform_bb): Call
115         pbb_remove_duplicate_pdrs.
116         * graphite-poly.c (can_collapse_pdr): Removed.
117         (pdr_find_duplicate): Removed.
118         (can_collapse_pdrs): New.
119         (pbb_remove_duplicate_pdrs): New.
120         (new_poly_dr): Do not look for duplicates.
121         * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
122         (PBB_PDR_DUPLICATES_REMOVED): New.
123         (pbb_remove_duplicate_pdrs): Declared.
124
125 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
126
127         * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
128         the strides by multiplying by PDR_NB_REFS.
129         * graphite-poly.c (can_collapse_pdr): New.
130         (pdr_find_duplicate): New.
131         (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
132         Initialize PDR_NB_REFS.
133         * graphite-poly.h (struct poly_dr): Add field nb_refs.
134         (PDR_NB_REFS): New.
135         (new_poly_dr): Number of subscripts is a graphite_dim_t.
136
137 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
138
139         PR middle-end/40965
140         * graphite-poly.c (apply_poly_transforms): Remove legality test before
141         any transform.
142
143 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
144
145         * graphite-dependences.c (pddr_original_scattering): Return NULL
146         for read-read dependence relations.
147         * graphite-poly.h (enum poly_dr_type): Fix comment.
148         (pdr_read_p): New.
149         (pdr_write_p): New.
150         (pdr_may_write_p): New.
151
152 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
153
154         * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
155         (struct poly_dr): Same.
156         (new_poly_dr): Same.
157         * graphite-poly.c (new_poly_dr): Same.
158         * graphite-dependences.c (dot_deps): Disable call to system.
159
160 2009-08-28  Cary Coutant  <ccoutant@google.com>
161
162         PR debug/41063
163         * dwarf2out.c (gen_type_die_with_usage): Use proper context for
164         struct/union/enum types local to a function.
165
166 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
167             Sebastian Pop  <sebastian.pop@amd.com>
168
169         * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
170         pbb_strip_mine_time_depth.  Changed the implementation so that
171         transformation is expressed as a transformation on
172         time (scatttering) dimensions.  Also, ensures that the 2d+1
173         scheduling format is preserved.
174         (pbb_strip_mine_profitable_p): Profitability is based on the
175         iteration number of a given time (scattering) dimension,
176         and not on a original loop depth dimension.
177         (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
178         (pbb_do_strip_mine): Call psct_dynamic_dim.
179         * graphite-poly.c (pbb_number_of_iterations_at_time): New.
180         * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
181         (pbb_nb_dynamic_scattering_transform): New.
182         (psct_dynamic_dim): New.
183
184 2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
185
186         * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
187         * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
188         * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
189         * graphite-interchange.c (build_linearized_memory_access): Same.
190         (memory_stride_in_loop): Same.
191
192 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
193
194         * graphite-dependences.c (pddr_original_scattering): New.
195         (graphite_legal_transform_dr): Call pddr_original_scattering.
196         (dot_deps_1): New.
197         (dot_deps): New.
198         * graphite-dependences.h (dot_deps): Declared.
199         * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
200         (print_pdr): Print PDR_ID.
201         * graphite-poly.h (struct poly_dr): Add field id.
202         (PDR_ID): New.
203         (pbb_index): New.
204         * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
205
206 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
207
208         * graphite-dependences.c (graphite_carried_dependence_level_k): Do
209         not delete the original dependence relation.
210
211 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
212
213         * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
214         (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
215         (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
216         (free_poly_ddr): New.
217         (pddr_is_empty): New.
218         (dependence_polyhedron_1): Now returns a poly_ddr_p.
219         (dependence_polyhedron): Same.  Remove useless gcc_assert.
220         Remove fprintfs.
221         (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
222         (graphite_carried_dependence_level_k): Call pddr_is_empty.
223         * graphite-dependences.h (enum poly_dependence_kind): New.
224         (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
225         (PDRP_SOURCE): Renamed PDDR_SOURCE.
226         (PDRP_SINK): Renamed PDDR_SINK.
227         (PDRP_DDP): Renamed PDDR_DDP.
228         (PDDR_KIND): New.
229         (free_poly_ddr): Declared.
230         * graphite-poly.c (new_scop): Use the new hash function names.
231         * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
232         into original_pddrs.
233         (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
234
235 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
236
237         * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
238         bounds with LT_EXPR to make niter analysis more precise on code
239         generated by Graphite.
240
241 2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
242
243         * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
244         (graphite_legal_transform_bb): Same.
245         (poly_drs_may_alias_p): Same.
246
247 2009-08-28  Richard Guenther  <rguenther@suse.de>
248
249         * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
250
251 2009-08-28  Jan Beulich  <jbeulich@novell.com>
252
253         * config/i386/netware.c: Include langhooks.h.
254         (i386_nlm_encode_section_info): Simplify.
255         (netware_override_options): Delete.
256         * config/i386/netware.h (netware_override_options): Delete
257         declaration.
258         (OVERRIDE_OPTIONS): Delete definition.
259         (SUBTARGET_OVERRIDE_OPTIONS): Define.
260         (ASM_COMMENT_START): Define.
261         * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
262
263 2009-08-28  Jan Beulich  <jbeulich@novell.com>
264
265         * configure.ac: For in-tree ld, do a plain version check to
266         determine whether comdat groups are supported.
267         * configure: Regenerate.
268
269 2009-08-28  Olivier Hainque  <hainque@adacore.com>
270
271         * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
272         always defined.  Reflect definition or absence of such for
273         COLLECT_EXPORT_LIST.  Readability helper.
274         (scanfilter): New enum, to help control what symbols
275         are to be considered or ignored by scan_prog_file.
276         (enum pass): Rename as "scanpass", moved together with scanfilter
277         prior to scan_prog_file's prototype.
278         (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
279         Group prototype with the scanpass/scanfilter definitions, factorize
280         head comments for the several implementations at the prototype.
281         (main): Reorganize the first pass link control to let AIX
282         drag only the needed frame tables in executables.  Prevent
283         frame tables collection during the scan aimed at static ctors.
284         Pre-link and scan for frame tables later to compensate.
285         * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
286         A C statement to issue assembly directives that create a reference
287         to the given DWARF table identifier label from the current function
288         section.
289         * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
290         to differentiate first time section entry.  Only emit a .data
291         tables start identifier label the first time around.
292         (switch_to_frame_table_section): New function.  Helper for
293         output_call_frame_info to switch possibly BACK into the eh_frame
294         or the debug_frame section depending on FOR_EH.
295         (output_call_frame_info): Use helper to first enter the proper
296         frame section.
297         (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
298         emit a link to the frame table start label from each function
299         section.
300         * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
301         New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
302         * config/rs6000/rs6000-protos.h: Declare it.
303         * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
304
305 2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
306
307         * config/sh/sh.c (split_branches): Check the result of
308         next_active_insn.
309
310 2009-08-27  Steve Ellcey  <sje@cup.hp.com>
311
312         * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
313         using -pthread -fopenmp
314
315 2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
316
317         * doc/service.texi (service directory): Update URL.
318
319 2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
320
321         PR rtl-optimization/40861
322         * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
323         extract word from a multi-word subreg for negative byte positions.
324
325 2009-08-27  Tristan Gingold  <gingold@adacore.com>
326             Douglas B Rupp  <rupp@gnat.com>
327
328         * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
329         (SECTION_VMS_OVERLAY): Define.
330         (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
331         attribute.
332         (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
333         for common_object.
334         (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
335         common_object declarations.
336         (ia64_section_type_flags): Set section flag for common_object.
337         * config/ia64/ia64-protos.h
338         (ia64_vms_output_aligned_decl_common): Declare.
339         (ia64_vms_elf_asm_named_section): Declare.
340
341 2009-08-27  Michael Matz  <matz@suse.de>
342
343         * expr.c (expand_expr_real_2): New function taking exploded
344         unary or binary expression, split out from ...
345         (expand_expr_real_1): ... here.  Move over all unary/binary
346         switch parts to above function, in particular these codes:
347         PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
348         MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
349         ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
350         FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
351         FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
352         BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
353         BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
354         LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
355         NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
356         UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
357         WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
358         VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
359         VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
360         VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
361         VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
362         VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
363         VEC_PACK_FIX_TRUNC_EXPR.
364         (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
365         full expression.
366
367 2009-08-27  Richard Guenther  <rguenther@suse.de>
368
369         * gengtype.c (main): Handle uint64_t.
370         * ipa-utils.c (get_base_var): Indent properly.
371         * tree-ssa-live.c (debug_scope_block): New function.
372         * tree-flow.h (debug_scope_block): Declare.
373         * tree-ssa-copy.c (replace_exp_1): Add vertical space.
374         * basic-block.h (enum profile_status): Rename to
375         enum profile_status_d.
376         (x_profile_status): Adjust type.
377
378 2009-08-27  Dodji Seketeli  <dodji@redhat.com>
379
380         PR debug/41170
381         * dwarf2out.c (get_context_die): Declare this static function.
382         (gen_type_die_with_usage): Make sure a DIE is a generated for
383         the context of a typedef.
384
385 2009-08-26  Anatoly Sokolov  <aesok@post.ru>
386
387         * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
388         switch.
389
390 2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
391
392         * config/mips/mips-protos.h (mips_output_sync): Declare.
393         (mips_sync_loop_insns): Likewise.
394         (mips_output_sync_loop): Replace first two parameters with an rtx.
395         * config/mips/mips.c (mips_multi_member): New structure.
396         (mips_multi_members): New variable.
397         (mips_multi_start): New function.
398         (mips_multi_add): Likewise.
399         (mips_multi_add_insn): Likewise.
400         (mips_multi_add_label): Likewise.
401         (mips_multi_last_index): Likewise.
402         (mips_multi_copy_insn): Likewise.
403         (mips_multi_set_operand): Likewise.
404         (mips_multi_write): Likewise.
405         (mips_print_operand_punctuation): Remove '%|' and '%-'.
406         (mips_init_print_operand_punct): Update accordingly.
407         (mips_start_ll_sc_sync_block): New function.
408         (mips_end_ll_sc_sync_block): Likewise.
409         (mips_output_sync): Likewise.
410         (mips_sync_insn1_template): Likewise.
411         (mips_sync_insn2_template): Likewise.
412         (mips_get_sync_operand): Likewise.
413         (mips_process_sync_loop): Likewise.
414         (mips_output_sync_loop): Use mips_process_sync_loop.
415         (mips_sync_loop_insns): New function.
416         * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
417         (MIPS_COMPARE_AND_SWAP_12): Likewise.
418         (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
419         (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
420         (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
421         (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
422         (MIPS_SYNC_OLD_OP_12): Likewise.
423         (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
424         (MIPS_SYNC_NEW_OP_12): Likewise.
425         (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
426         (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
427         (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
428         (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
429         (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
430         (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
431         * config/mips/mips.md (sync_mem): New attribute.
432         (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
433         (sync_exclusive_mask, sync_required_oldval): Likewise.
434         (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
435         (sync_release_barrier): Likewise.
436         (length): Handle sync loops.
437         (sync): Use mips_output_sync.
438         * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
439         (sync_compare_and_swap<mode>): Set the new sync_* attributes
440         and use mips_output_sync_loop.
441         (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
442         (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
443         (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
444         (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
445         (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
446         (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
447         (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
448         (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
449         (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
450
451 2009-08-26  Richard Guenther  <rguenther@suse.de>
452
453         PR middle-end/41163
454         * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
455         the types to not match.
456         * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
457         verification.
458         * tree-ssa.c (useless_type_conversion_p): Conversions to
459         pointers to unprototyped functions are useless.
460
461 2009-08-26  Richard Guenther  <rguenther@suse.de>
462
463         * tree-ssa-structalias.c (create_variable_info_for): Remove
464         strange whole-program condition, prepare to be called for non-globals.
465         (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
466         params build a representative with known type and track its fields.
467
468 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
469
470         * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
471         clearing by a taken branch.
472         (sync_<fetchop_name><mode>): Split when epilogue_completed is set,
473         effectively after bbro pass.
474         (sync_nand<mode>): Ditto.
475         (sync_old_<fetchop_name><mode>): Ditto.
476         (sync_old_nand<mode>): Ditto.
477         (sync_new_<fetchop_name><mode>): Dito.
478         (sync_new_nand<mode>): Ditto.
479         (sync_compare_and_swap<mode>_1): Ditto.
480         (*sync_compare_and_swap<mode>): Ditto.
481         (sync_lock_test_and_set<mode>_1): Ditto.
482         ("sync_lock_test_and_set<mode>): Ditto.
483
484 2009-08-25  Douglas B Rupp  <rupp@gnat.com>
485
486         * hwint.h (HOST_LONG_FORMAT): New macro
487         * bitmap.c, c-decl.c, mips-tfile.c, print-rtl.c, print-tree.c:
488         Use HOST_PTR_PRINTF.
489         * system.h (HOST_PTR_PRINTF): Resurrect old macro
490         * doc/hostconfig.texi (HOST_LONG_FORMAT): Document.
491         (HOST_PTR_PRINTF): Document.
492
493 2009-08-25 Jan Hubicka  <jh@suse.cz>
494
495         * config/i386/bmmintrin.h: Replace by #error.
496
497         Revert:
498         Michael Meissner  <michael.meissner@amd.com>
499         Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
500         Tony Linthicum  <tony.linthicum@amd.com>
501
502         * config/i386/i386.h (TARGET_SSE5): New macro for SSE5.
503         (TARGET_ROUND): New macro for the round/ptest instructions which
504         are shared between SSE4.1 and SSE5.
505         (OPTION_MASK_ISA_ROUND): Ditto.
506         (OPTION_ISA_ROUND): Ditto.
507         (TARGET_FUSED_MADD): New macro for -mfused-madd swtich.
508         (TARGET_CPU_CPP_BUILTINS): Add SSE5 support.
509
510         * config/i386/i386.opt (-msse5): New switch for SSE5 support.
511         (-mfused-madd): New switch to give users control over whether the
512         compiler optimizes to use the multiply/add SSE5 instructions.
513
514         * config/i386/i386.c (enum pta_flags): Add PTA_SSE5.
515         (ix86_handle_option): Turn off 3dnow if -msse5.
516         (override_options): Add SSE5 support.
517         (print_operand): %Y prints comparison codes for SSE5 com/pcom
518         instructions.
519         (ix86_expand_sse_movcc): Add SSE5 support.
520         (ix86_expand_sse5_unpack): New function to use pperm to unpack a
521         vector type to the next largest size.
522         (ix86_expand_sse5_pack): New function to use pperm to pack a
523         vector type to the next smallest size.
524         (IX86_BUILTIN_FMADDSS): New for SSE5 intrinsic.
525         (IX86_BUILTIN_FMADDSD): Ditto.
526         (IX86_BUILTIN_FMADDPS): Ditto.
527         (IX86_BUILTIN_FMADDPD): Ditto.
528         (IX86_BUILTIN_FMSUBSS): Ditto.
529         (IX86_BUILTIN_FMSUBSD): Ditto.
530         (IX86_BUILTIN_FMSUBPS): Ditto.
531         (IX86_BUILTIN_FMSUBPD): Ditto.
532         (IX86_BUILTIN_FNMADDSS): Ditto.
533         (IX86_BUILTIN_FNMADDSD): Ditto.
534         (IX86_BUILTIN_FNMADDPS): Ditto.
535         (IX86_BUILTIN_FNMADDPD): Ditto.
536         (IX86_BUILTIN_FNMSUBSS): Ditto.
537         (IX86_BUILTIN_FNMSUBSD): Ditto.
538         (IX86_BUILTIN_FNMSUBPS): Ditto.
539         (IX86_BUILTIN_FNMSUBPD): Ditto.
540         (IX86_BUILTIN_PCMOV_V2DI): Ditto.
541         (IX86_BUILTIN_PCMOV_V4SI): Ditto.
542         (IX86_BUILTIN_PCMOV_V8HI): Ditto.
543         (IX86_BUILTIN_PCMOV_V16QI): Ditto.
544         (IX86_BUILTIN_PCMOV_V4SF): Ditto.
545         (IX86_BUILTIN_PCMOV_V2DF): Ditto.
546         (IX86_BUILTIN_PPERM): Ditto.
547         (IX86_BUILTIN_PERMPS): Ditto.
548         (IX86_BUILTIN_PERMPD): Ditto.
549         (IX86_BUILTIN_PMACSSWW): Ditto.
550         (IX86_BUILTIN_PMACSWW): Ditto.
551         (IX86_BUILTIN_PMACSSWD): Ditto.
552         (IX86_BUILTIN_PMACSWD): Ditto.
553         (IX86_BUILTIN_PMACSSDD): Ditto.
554         (IX86_BUILTIN_PMACSDD): Ditto.
555         (IX86_BUILTIN_PMACSSDQL): Ditto.
556         (IX86_BUILTIN_PMACSSDQH): Ditto.
557         (IX86_BUILTIN_PMACSDQL): Ditto.
558         (IX86_BUILTIN_PMACSDQH): Ditto.
559         (IX86_BUILTIN_PMADCSSWD): Ditto.
560         (IX86_BUILTIN_PMADCSWD): Ditto.
561         (IX86_BUILTIN_PHADDBW): Ditto.
562         (IX86_BUILTIN_PHADDBD): Ditto.
563         (IX86_BUILTIN_PHADDBQ): Ditto.
564         (IX86_BUILTIN_PHADDWD): Ditto.
565         (IX86_BUILTIN_PHADDWQ): Ditto.
566         (IX86_BUILTIN_PHADDDQ): Ditto.
567         (IX86_BUILTIN_PHADDUBW): Ditto.
568         (IX86_BUILTIN_PHADDUBD): Ditto.
569         (IX86_BUILTIN_PHADDUBQ): Ditto.
570         (IX86_BUILTIN_PHADDUWD): Ditto.
571         (IX86_BUILTIN_PHADDUWQ): Ditto.
572         (IX86_BUILTIN_PHADDUDQ): Ditto.
573         (IX86_BUILTIN_PHSUBBW): Ditto.
574         (IX86_BUILTIN_PHSUBWD): Ditto.
575         (IX86_BUILTIN_PHSUBDQ): Ditto.
576         (IX86_BUILTIN_PROTB): Ditto.
577         (IX86_BUILTIN_PROTW): Ditto.
578         (IX86_BUILTIN_PROTD): Ditto.
579         (IX86_BUILTIN_PROTQ): Ditto.
580         (IX86_BUILTIN_PROTB_IMM): Ditto.
581         (IX86_BUILTIN_PROTW_IMM): Ditto.
582         (IX86_BUILTIN_PROTD_IMM): Ditto.
583         (IX86_BUILTIN_PROTQ_IMM): Ditto.
584         (IX86_BUILTIN_PSHLB): Ditto.
585         (IX86_BUILTIN_PSHLW): Ditto.
586         (IX86_BUILTIN_PSHLD): Ditto.
587         (IX86_BUILTIN_PSHLQ): Ditto.
588         (IX86_BUILTIN_PSHAB): Ditto.
589         (IX86_BUILTIN_PSHAW): Ditto.
590         (IX86_BUILTIN_PSHAD): Ditto.
591         (IX86_BUILTIN_PSHAQ): Ditto.
592         (IX86_BUILTIN_FRCZSS): Ditto.
593         (IX86_BUILTIN_FRCZSD): Ditto.
594         (IX86_BUILTIN_FRCZPS): Ditto.
595         (IX86_BUILTIN_FRCZPD): Ditto.
596         (IX86_BUILTIN_CVTPH2PS): Ditto.
597         (IX86_BUILTIN_CVTPS2PH): Ditto.
598         (IX86_BUILTIN_COMEQSS): Ditto.
599         (IX86_BUILTIN_COMNESS): Ditto.
600         (IX86_BUILTIN_COMLTSS): Ditto.
601         (IX86_BUILTIN_COMLESS): Ditto.
602         (IX86_BUILTIN_COMGTSS): Ditto.
603         (IX86_BUILTIN_COMGESS): Ditto.
604         (IX86_BUILTIN_COMUEQSS): Ditto.
605         (IX86_BUILTIN_COMUNESS): Ditto.
606         (IX86_BUILTIN_COMULTSS): Ditto.
607         (IX86_BUILTIN_COMULESS): Ditto.
608         (IX86_BUILTIN_COMUGTSS): Ditto.
609         (IX86_BUILTIN_COMUGESS): Ditto.
610         (IX86_BUILTIN_COMORDSS): Ditto.
611         (IX86_BUILTIN_COMUNORDSS): Ditto.
612         (IX86_BUILTIN_COMFALSESS): Ditto.
613         (IX86_BUILTIN_COMTRUESS): Ditto.
614         (IX86_BUILTIN_COMEQSD): Ditto.
615         (IX86_BUILTIN_COMNESD): Ditto.
616         (IX86_BUILTIN_COMLTSD): Ditto.
617         (IX86_BUILTIN_COMLESD): Ditto.
618         (IX86_BUILTIN_COMGTSD): Ditto.
619         (IX86_BUILTIN_COMGESD): Ditto.
620         (IX86_BUILTIN_COMUEQSD): Ditto.
621         (IX86_BUILTIN_COMUNESD): Ditto.
622         (IX86_BUILTIN_COMULTSD): Ditto.
623         (IX86_BUILTIN_COMULESD): Ditto.
624         (IX86_BUILTIN_COMUGTSD): Ditto.
625         (IX86_BUILTIN_COMUGESD): Ditto.
626         (IX86_BUILTIN_COMORDSD): Ditto.
627         (IX86_BUILTIN_COMUNORDSD): Ditto.
628         (IX86_BUILTIN_COMFALSESD): Ditto.
629         (IX86_BUILTIN_COMTRUESD): Ditto.
630         (IX86_BUILTIN_COMEQPS): Ditto.
631         (IX86_BUILTIN_COMNEPS): Ditto.
632         (IX86_BUILTIN_COMLTPS): Ditto.
633         (IX86_BUILTIN_COMLEPS): Ditto.
634         (IX86_BUILTIN_COMGTPS): Ditto.
635         (IX86_BUILTIN_COMGEPS): Ditto.
636         (IX86_BUILTIN_COMUEQPS): Ditto.
637         (IX86_BUILTIN_COMUNEPS): Ditto.
638         (IX86_BUILTIN_COMULTPS): Ditto.
639         (IX86_BUILTIN_COMULEPS): Ditto.
640         (IX86_BUILTIN_COMUGTPS): Ditto.
641         (IX86_BUILTIN_COMUGEPS): Ditto.
642         (IX86_BUILTIN_COMORDPS): Ditto.
643         (IX86_BUILTIN_COMUNORDPS): Ditto.
644         (IX86_BUILTIN_COMFALSEPS): Ditto.
645         (IX86_BUILTIN_COMTRUEPS): Ditto.
646         (IX86_BUILTIN_COMEQPD): Ditto.
647         (IX86_BUILTIN_COMNEPD): Ditto.
648         (IX86_BUILTIN_COMLTPD): Ditto.
649         (IX86_BUILTIN_COMLEPD): Ditto.
650         (IX86_BUILTIN_COMGTPD): Ditto.
651         (IX86_BUILTIN_COMGEPD): Ditto.
652         (IX86_BUILTIN_COMUEQPD): Ditto.
653         (IX86_BUILTIN_COMUNEPD): Ditto.
654         (IX86_BUILTIN_COMULTPD): Ditto.
655         (IX86_BUILTIN_COMULEPD): Ditto.
656         (IX86_BUILTIN_COMUGTPD): Ditto.
657         (IX86_BUILTIN_COMUGEPD): Ditto.
658         (IX86_BUILTIN_COMORDPD): Ditto.
659         (IX86_BUILTIN_COMUNORDPD): Ditto.
660         (IX86_BUILTIN_COMFALSEPD): Ditto.
661         (IX86_BUILTIN_COMTRUEPD): Ditto.
662         (IX86_BUILTIN_PCOMEQUB): Ditto.
663         (IX86_BUILTIN_PCOMNEUB): Ditto.
664         (IX86_BUILTIN_PCOMLTUB): Ditto.
665         (IX86_BUILTIN_PCOMLEUB): Ditto.
666         (IX86_BUILTIN_PCOMGTUB): Ditto.
667         (IX86_BUILTIN_PCOMGEUB): Ditto.
668         (IX86_BUILTIN_PCOMFALSEUB): Ditto.
669         (IX86_BUILTIN_PCOMTRUEUB): Ditto.
670         (IX86_BUILTIN_PCOMEQUW): Ditto.
671         (IX86_BUILTIN_PCOMNEUW): Ditto.
672         (IX86_BUILTIN_PCOMLTUW): Ditto.
673         (IX86_BUILTIN_PCOMLEUW): Ditto.
674         (IX86_BUILTIN_PCOMGTUW): Ditto.
675         (IX86_BUILTIN_PCOMGEUW): Ditto.
676         (IX86_BUILTIN_PCOMFALSEUW): Ditto.
677         (IX86_BUILTIN_PCOMTRUEUW): Ditto.
678         (IX86_BUILTIN_PCOMEQUD): Ditto.
679         (IX86_BUILTIN_PCOMNEUD): Ditto.
680         (IX86_BUILTIN_PCOMLTUD): Ditto.
681         (IX86_BUILTIN_PCOMLEUD): Ditto.
682         (IX86_BUILTIN_PCOMGTUD): Ditto.
683         (IX86_BUILTIN_PCOMGEUD): Ditto.
684         (IX86_BUILTIN_PCOMFALSEUD): Ditto.
685         (IX86_BUILTIN_PCOMTRUEUD): Ditto.
686         (IX86_BUILTIN_PCOMEQUQ): Ditto.
687         (IX86_BUILTIN_PCOMNEUQ): Ditto.
688         (IX86_BUILTIN_PCOMLTUQ): Ditto.
689         (IX86_BUILTIN_PCOMLEUQ): Ditto.
690         (IX86_BUILTIN_PCOMGTUQ): Ditto.
691         (IX86_BUILTIN_PCOMGEUQ): Ditto.
692         (IX86_BUILTIN_PCOMFALSEUQ): Ditto.
693         (IX86_BUILTIN_PCOMTRUEUQ): Ditto.
694         (IX86_BUILTIN_PCOMEQB): Ditto.
695         (IX86_BUILTIN_PCOMNEB): Ditto.
696         (IX86_BUILTIN_PCOMLTB): Ditto.
697         (IX86_BUILTIN_PCOMLEB): Ditto.
698         (IX86_BUILTIN_PCOMGTB): Ditto.
699         (IX86_BUILTIN_PCOMGEB): Ditto.
700         (IX86_BUILTIN_PCOMFALSEB): Ditto.
701         (IX86_BUILTIN_PCOMTRUEB): Ditto.
702         (IX86_BUILTIN_PCOMEQW): Ditto.
703         (IX86_BUILTIN_PCOMNEW): Ditto.
704         (IX86_BUILTIN_PCOMLTW): Ditto.
705         (IX86_BUILTIN_PCOMLEW): Ditto.
706         (IX86_BUILTIN_PCOMGTW): Ditto.
707         (IX86_BUILTIN_PCOMGEW): Ditto.
708         (IX86_BUILTIN_PCOMFALSEW): Ditto.
709         (IX86_BUILTIN_PCOMTRUEW): Ditto.
710         (IX86_BUILTIN_PCOMEQD): Ditto.
711         (IX86_BUILTIN_PCOMNED): Ditto.
712         (IX86_BUILTIN_PCOMLTD): Ditto.
713         (IX86_BUILTIN_PCOMLED): Ditto.
714         (IX86_BUILTIN_PCOMGTD): Ditto.
715         (IX86_BUILTIN_PCOMGED): Ditto.
716         (IX86_BUILTIN_PCOMFALSED): Ditto.
717         (IX86_BUILTIN_PCOMTRUED): Ditto.
718         (IX86_BUILTIN_PCOMEQQ): Ditto.
719         (IX86_BUILTIN_PCOMNEQ): Ditto.
720         (IX86_BUILTIN_PCOMLTQ): Ditto.
721         (IX86_BUILTIN_PCOMLEQ): Ditto.
722         (IX86_BUILTIN_PCOMGTQ): Ditto.
723         (IX86_BUILTIN_PCOMGEQ): Ditto.
724         (IX86_BUILTIN_PCOMFALSEQ): Ditto.
725         (IX86_BUILTIN_PCOMTRUEQ): Ditto.
726         (enum multi_arg_type): New enum for describing the various SSE5
727         intrinsic argument types.
728         (bdesc_multi_arg): New table for SSE5 intrinsics.
729         (ix86_init_mmx_sse_builtins): Add SSE5 intrinsic support.
730         (ix86_expand_multi_arg_builtin): New function for creating SSE5
731         intrinsics.
732         (ix86_expand_builtin): Add SSE5 intrinsic support.
733         (ix86_sse5_valid_op_p): New function to validate SSE5 3 and 4
734         operand instructions.
735         (ix86_expand_sse5_multiple_memory): New function to split the
736         second memory reference from SSE5 instructions.
737         (type_has_variadic_args_p): Delete in favor of stdarg_p.
738         (ix86_return_pops_args): Use stdarg_p to determine if the function
739         has variable arguments.
740         (ix86_setup_incoming_varargs): Ditto.
741         (x86_this_parameter): Ditto.
742
743         * config/i386/i386-protos.h (ix86_expand_sse5_unpack): Add
744         declaration.
745         (ix86_expand_sse5_pack): Ditto.
746         (ix86_sse5_valid_op_p): Ditto.
747         (ix86_expand_sse5_multiple_memory): Ditto.
748
749         * config/i386/i386.md (UNSPEC_SSE5_INTRINSIC): Add new UNSPEC
750         constant for SSE5 support.
751         (UNSPEC_SSE5_UNSIGNED_CMP): Ditto.
752         (UNSPEC_SSE5_TRUEFALSE): Ditto.
753         (UNSPEC_SSE5_PERMUTE): Ditto.
754         (UNSPEC_SSE5_ASHIFT): Ditto.
755         (UNSPEC_SSE5_LSHIFT): Ditto.
756         (UNSPEC_FRCZ): Ditto.
757         (UNSPEC_CVTPH2PS): Ditto.
758         (UNSPEC_CVTPS2PH): Ditto.
759         (PCOM_FALSE): Add new constant for true/false SSE5 comparisons.
760         (PCOM_TRUE): Ditto.
761         (COM_FALSE_S): Ditto.
762         (COM_FALSE_P): Ditto.
763         (COM_TRUE_S): Ditto.
764         (COM_TRUE_P): Ditto.
765         (type attribute): Add ssemuladd, sseiadd1, ssecvt1, sse4arg types.
766         (unit attribute): Add support for ssemuladd, ssecvt1, sseiadd1 sse4arg
767         types.
768         (memory attribute): Ditto.
769         (sse4_1_round<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
770         Use SSE4_1_ROUND_* constants instead of hard coded numbers.
771         (rint<mode>2): Use TARGET_ROUND instead of TARGET_SSE4_1.
772         (floor<mode>2): Ditto.
773         (ceil<mode>2): Ditto.
774         (btrunc<mode>2): Ditto.
775         (nearbyintdf2): Ditto.
776         (nearbyintsf2): Ditto.
777         (sse_setccsf): Disable if SSE5.
778         (sse_setccdf): Ditto.
779         (sse5_setcc<mode>): New support for SSE5 conditional move.
780         (sse5_pcmov_<mode>): Ditto.
781
782         * config/i386/sse.md (SSEMODE1248): New mode iterator for SSE5.
783         (SSEMODEF4): Ditto.
784         (SSEMODEF2P): Ditto.
785         (ssemodesuffixf4): New mode attribute for SSE5.
786         (ssemodesuffixf2s): Ditto.
787         (ssemodesuffixf2c): Ditto.
788         (sserotatemax): Ditto.
789         (ssescalarmode): Ditto.
790         (sse_maskcmpv4sf3): Disable if SSE5.
791         (sse_maskcmpv2df3): Ditto.
792         (sse_vmmaskcmpv4sf3): Ditto.
793         (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
794         (sse5_vmfmadd<mode>4): Ditto.
795         (sse5_fmsub<mode>4): Ditto.
796         (sse5_vmfmsub<mode>4): Ditto.
797         (sse5_fnmadd<mode>4): Ditto.
798         (sse5_vmfnmadd<mode>4): Ditto.
799         (sse5_fnmsub<mode>4): Ditto.
800         (sse5_vmfnmsub<mode>4): Ditto.
801         (sse5i_fmadd<mode>4): Ditto.
802         (sse5i_fmsub<mode>4): Ditto.
803         (sse5i_fnmadd<mode>4): Ditto.
804         (sse5i_fnmsub<mode>4): Ditto.
805         (sse5i_vmfmadd<mode>4): Ditto.
806         (sse5i_vmfmsub<mode>4): Ditto.
807         (sse5i_vmfnmadd<mode>4): Ditto.
808         (sse5i_vmfnmsub<mode>4): Ditto.
809         (mulv16qi3): Add SSE5 support.
810         (mulv4si3): Ditto.
811         (sse5_mulv4si3): New insn for 32-bit multiply support on SSE5.
812         (sse2_mulv4si3): Disable if SSE5.
813         (sse4_1_roundpd): Use TARGET_ROUND instead of TARGET_SSE4_1.
814         (sse4_1_roundps): Ditto.
815         (sse4_1_roundsd): Ditto.
816         (sse4_1_roundss): Ditto.
817         (sse_maskcmpv4sf3): Disable if SSE5 so the SSE5 instruction will
818         be generated.
819         (sse_maskcmpsf3): Ditto.
820         (sse_vmmaskcmpv4sf3): Ditto.
821         (sse2_maskcmpv2df3): Ditto.
822         (sse2_maskcmpdf3): Ditto.
823         (sse2_vmmaskcmpv2df3): Ditto.
824         (sse2_eq<mode>3): Ditto.
825         (sse2_gt<mode>3): Ditto.
826         (sse5_pcmov_<mode>): Add SSE5 support.
827         (vec_unpacku_hi_v16qi): Ditto.
828         (vec_unpacks_hi_v16qi): Ditto.
829         (vec_unpacku_lo_v16qi): Ditto.
830         (vec_unpacks_lo_v16qi): Ditto.
831         (vec_unpacku_hi_v8hi): Ditto.
832         (vec_unpacks_hi_v8hi): Ditto.
833         (vec_unpacku_lo_v8hi): Ditto.
834         (vec_unpacks_lo_v8hi): Ditto.
835         (vec_unpacku_hi_v4si): Ditto.
836         (vec_unpacks_hi_v4si): Ditto.
837         (vec_unpacku_lo_v4si): Ditto.
838         (vec_unpacks_lo_v4si): Ditto.
839         (sse5_pmacsww): New SSE5 intrinsic insn.
840         (sse5_pmacssww): Ditto.
841         (sse5_pmacsdd): Ditto.
842         (sse5_pmacssdd): Ditto.
843         (sse5_pmacssdql): Ditto.
844         (sse5_pmacssdqh): Ditto.
845         (sse5_pmacsdqh): Ditto.
846         (sse5_pmacsswd): Ditto.
847         (sse5_pmacswd): Ditto.
848         (sse5_pmadcsswd): Ditto.
849         (sse5_pmadcswd): Ditto.
850         (sse5_pcmov_<move>): Conditional move support on SSE5.
851         (sse5_phaddbw): New SSE5 intrinsic insn.
852         (sse5_phaddbd): Ditto.
853         (sse5_phaddbq): Ditto.
854         (sse5_phaddwd): Ditto.
855         (sse5_phaddwq): Ditto.
856         (sse5_phadddq): Ditto.
857         (sse5_phaddubw): Ditto.
858         (sse5_phaddubd): Ditto.
859         (sse5_phaddubq): Ditto.
860         (sse5_phadduwd): Ditto.
861         (sse5_phadduwq): Ditto.
862         (sse5_phaddudq): Ditto.
863         (sse5_phsubbw): Ditto.
864         (sse5_phsubwd): Ditto.
865         (sse5_phsubdq): Ditto.
866         (sse5_pperm): Ditto.
867         (sse5_pperm_sign_v16qi_v8hi): New insns for pack/unpack with SSE5.
868         (sse5_pperm_zero_v16qi_v8hi): Ditto.
869         (sse5_pperm_sign_v8hi_v4si): Ditto.
870         (sse5_pperm_zero_v8hi_v4si): Ditto.
871         (sse5_pperm_sign_v4si_v2di): Ditto.
872         (sse5_pperm_sign_v4si_v2di): Ditto.
873         (sse5_pperm_pack_v2di_v4si): Ditto.
874         (sse5_pperm_pack_v4si_v8hi): Ditto.
875         (sse5_pperm_pack_v8hi_v16qi): Ditto.
876         (sse5_perm<mode>): New SSE5 intrinsic insn.
877         (rotl<mode>3): Ditto.
878         (sse5_rotl<mode>3): Ditto.
879         (sse5_ashl<mode>3): Ditto.
880         (sse5_lshl<mode>3): Ditto.
881         (sse5_frcz<mode>2): Ditto.
882         (sse5s_frcz<mode>2): Ditto.
883         (sse5_cvtph2ps): Ditto.
884         (sse5_cvtps2ph): Ditto.
885         (sse5_vmmaskcmp<mode>3): Ditto.
886         (sse5_com_tf<mode>3): Ditto.
887         (sse5_maskcmp<mode>3): Ditto.
888         (sse5_maskcmp_uns<mode>3): Ditto.
889         (sse5_maskcmp_uns2<mode>3): Ditto.
890         (sse5_pcom_tf<mode>3): Ditto.
891
892         * config/i386/predicates.md (sse5_comparison_float_operator):
893         New predicate to match the comparison operators supported by
894         the SSE5 com instruction.
895         (ix86_comparison_int_operator): New predicate to match just the
896         signed int comparisons.
897         (ix86_comparison_uns_operator): New predicate to match just the
898         unsigned int comparisons.
899
900         * doc/invoke.texi (-msse5): Add documentation.
901         (-mfused-madd): Ditto.
902
903         * doc/extend.texi (x86 intrinsics): Document new SSE5 intrinsics.
904
905         * config.gcc (i[34567]86-*-*): Include bmmintrin.h and
906         mmintrin-common.h.
907         (x86_64-*-*): Ditto.
908
909         * config/i386/cpuid.h (bit_SSE5): Define SSE5 bit.
910
911         * config/i386/bmmintrin.h: New file, provide common x86 compiler
912         intrinisics for SSE5.
913
914         * config/i386/smmintrin.h: Move instructions shared with SSE5 to
915         mmintrin-common.h.
916
917         * config/i386/mmintrin-common.h: New file, to contain common
918         instructions between SSE4.1 and SSE5.
919
920         * config/i386/netware.c (gen_stdcall_or_fastcall_decoration): Use
921         FOREACH_FUNCTION_ARGS to iterate over the argument list.
922         (gen_regparm_prefix): Ditto.
923
924         * config/i386/winnt.c (gen_stdcall_or_fastcall_suffix): Use
925         FOREACH_FUNCTION_ARGS to iterate over the argument list.  Use
926         prototype_p to determine if a function is prototyped.
927
928 2009-08-25 Ville Voutilainen <ville.voutilainen@gmail.com>
929
930         * c-common.c (c_common_reswords) add the alignof keyword,
931         with same RID as __alignof and __alignof__
932
933 2009-08-25  Anatoly Sokolov  <aesok@post.ru>
934
935         * hooks.h (hook_bool_const_int_const_int_true): Declare.
936         * hooks.c (hook_bool_const_int_const_int_true): New function.
937         * target.h (struct gcc_target): Add can_eliminate field.
938         * target-def.h (TARGET_CAN_ELIMINATE): Define.
939         (TARGET_INITIALIZER): Use TARGET_CAN_ELIMINATE.
940         * ira.c (setup_eliminable_regset): Use can_eliminate target hook.
941         * reload1.c (update_eliminables, init_elim_table): (Ditto.).
942         (elim_table): Revise comment.
943         * system.h (CAN_ELIMINATE): Poison.
944         * defaults.h (CAN_ELIMINATE): Remove.
945         * doc/tm.texi (CAN_ELIMINATE): Revise documentation.
946
947         * config/alpha/vms.h (CAN_ELIMINATE): Remove macro.
948         * config/alpha/alpha.c (TARGET_CAN_ELIMINATE) [TARGET_ABI_OPEN_VMS]:
949         Define macro.
950         (alpha_vms_can_eliminate): Declare as static, change return type to
951         bool.
952         * config/alpha/alpha-protos.h (alpha_vms_can_eliminate): Remove.
953
954         * config/arm/arm.h (CAN_ELIMINATE): Remove macro.
955         * config/arm/arm.c (TARGET_CAN_ELIMINATE): Define macro.
956         (arm_can_eliminate): New function.
957
958         * config/avr/avr.h (CAN_ELIMINATE): Remove macro.
959         * config/avr/avr.c (TARGET_CAN_ELIMINATE): Define macro.
960         (avr_can_eliminate): Declare as static.
961         * config/avr/avr-protos.h (avr_can_eliminate): Remove.
962
963         * config/bfin/bfin.h (CAN_ELIMINATE): Remove macro.
964         * config/bfin/bfin.c (TARGET_CAN_ELIMINATE): Define macro.
965         (bfin_can_eliminate): New function.
966
967         * config/crx/crx.h (CAN_ELIMINATE): Remove macro.
968         * config/crx/crx.c (TARGET_CAN_ELIMINATE): Define macro.
969         (crx_can_eliminate): New function.
970
971         * config/fr30/fr30.h (CAN_ELIMINATE): Remove macro.
972         * config/fr30/fr30.c (TARGET_CAN_ELIMINATE): Define macro.
973         (fr30_can_eliminate): New function.
974
975         * config/frv/frv.h (CAN_ELIMINATE): Remove macro.
976         * config/frv/frv.c (TARGET_CAN_ELIMINATE): Define macro.
977         (frv_can_eliminate): New function.
978
979         * config/h8300/h8300.h (CAN_ELIMINATE): Remove macro.
980         * config/h8300/h8300.c (TARGET_CAN_ELIMINATE): Define macro.
981         (h8300_can_eliminate): New function.
982
983         * config/i386/i386.h (CAN_ELIMINATE): Remove macro.
984         * config/i386/i386.c (TARGET_CAN_ELIMINATE): Define macro.
985         (i386_can_eliminate): Declare as static, change return type to bool.
986         * config/i386/i386-protos.h (i386_can_eliminate): Remove.
987
988         * config/ia64/ia64.h (CAN_ELIMINATE): Remove macro.
989         * config/ia64/ia64.c (TARGET_CAN_ELIMINATE): Define macro.
990         (ia64_can_eliminate): New function.
991
992         * config/iq2000/iq2000.h (CAN_ELIMINATE): Remove macro.
993         * config/iq2000/iq2000.c (TARGET_CAN_ELIMINATE): Define macro.
994         (iq2000_can_eliminate): New function.
995
996         * config/m32r/m32r.h (CAN_ELIMINATE): Remove macro.
997         * config/m32r/m32r.c (TARGET_CAN_ELIMINATE): Define macro.
998         (m32r_can_eliminate): New function.
999
1000         * config/m68hc11/m68hc11.h (CAN_ELIMINATE): Remove macro.
1001         * config/m68hc11/m68hc11.c (TARGET_CAN_ELIMINATE): Define macro.
1002         (m68hc11_can_eliminate): New function.
1003
1004         * config/m68k/m68k.h (CAN_ELIMINATE): Remove macro.
1005         * config/m68k/m68k.c (TARGET_CAN_ELIMINATE): Define macro.
1006         (m68k_can_eliminate): New function.
1007
1008         * config/mep/mep.h (CAN_ELIMINATE): Remove macro.
1009         * config/mep/mep.c (TARGET_CAN_ELIMINATE): Define macro.
1010         (mep_can_eliminate): New function.
1011
1012         * config/mips/mips.h (CAN_ELIMINATE): Remove macro.
1013         * config/mips/mips.c (TARGET_CAN_ELIMINATE): Define macro.
1014         (mips_can_eliminate): New function.
1015
1016         * config/rs6000/rs6000.h (CAN_ELIMINATE): Remove macro.
1017         * config/rs6000/rs6000.c (TARGET_CAN_ELIMINATE): Define macro.
1018         (rs6000_can_eliminate): New function.
1019
1020         * config/s390/s390.h (CAN_ELIMINATE): Remove macro.
1021         * config/s390/s390.c (TARGET_CAN_ELIMINATE): Define macro.
1022         (s390_can_eliminate): Declare as static.
1023         * config/s390/s390-protos.h (sparc_can_eliminate): Remove.
1024
1025         * config/score/score.h (CAN_ELIMINATE): Remove macro.
1026         * config/score/score.c (TARGET_CAN_ELIMINATE): Define macro.
1027         (score_can_eliminate): New function.
1028
1029         * config/sparc/sparc.h (CAN_ELIMINATE): Remove macro.
1030         * config/sparc/sparc.c (TARGET_CAN_ELIMINATE): Define macro.
1031         (sparc_can_eliminate): Declare as static.
1032         * config/sparc/sparc-protos.h (sparc_can_eliminate): Remove.
1033
1034         * config/stormy16/stormy16.h (CAN_ELIMINATE): Remove macro.
1035         * config/stormy16/stormy16.c (TARGET_CAN_ELIMINATE): Define macro.
1036         (xstormy16_can_eliminate): New function.
1037
1038         * config/v850/v850.h (CAN_ELIMINATE): Remove macro.
1039         * config/v850/v850.c (TARGET_CAN_ELIMINATE): Define macro.
1040         (v850_can_eliminate): New function.
1041
1042 2009-08-25  Uros Bizjak  <ubizjak@gmail.com>
1043
1044         * config/alpha/alpha.md (*cmpdf_ieee_ext[123]): Remove.
1045         (*cmpdf_internal): Enable for all ALPHA_FPTM levels.
1046         (*movdfcc_ext[1234]): Disable for IEEE mode.
1047
1048 2009-08-25  Eric Botcazou  <ebotcazou@adacore.com>
1049
1050         * gimplify.c (prepare_gimple_addressable): New static function.
1051         (gimplify_modify_expr_to_memcpy): Invoke it on the RHS before marking
1052         it addressable.
1053         (gimplify_addr_expr): Invoke it similarly on the operand instead of
1054         manually fiddling with it.
1055
1056 2009-08-25  Michael Matz  <matz@suse.de>
1057
1058         * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
1059         * dojump.c (do_jump_by_parts_greater): Take two operands instead of
1060         full expression.
1061         (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
1062         (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
1063         (do_jump): Split out code for simple binary comparisons into ...
1064         (do_jump_1): ... this, taking the individual operands and code.
1065         Change callers to helper function above accordingly.
1066         * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
1067         comparisons.
1068
1069 2009-08-25  Michael Matz  <matz@suse.de>
1070
1071         * expr.h (struct separate_ops, sepops): New type for passing
1072         around an exploded simple expression.
1073         * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
1074         Use this structure instead of expression tree.
1075         (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
1076         expression, only its type.
1077         (expand_vec_cond_expr): Take type and individual operands instead
1078         of full expression.
1079         * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
1080         expand_vec_shift_expr): Change prototype accordingly.
1081         * tree-vect-stmts.c (vectorizable_condition): Change call of
1082         expand_vec_cond_expr_p to pass only type.
1083         * expr.c (do_store_flags): Change prototype and implementation
1084         to take an exploded expression.
1085         (expand_expr_real_1): New local ops initialized with details
1086         of the full expression.  Use it instead of full
1087         expression in calls to do_store_flags, expand_vec_cond_expr,
1088         expand_widen_pattern_expr and expand_vec_shift_expr.
1089
1090 2009-08-25  Michael Matz  <matz@suse.de>
1091
1092         * expr.c (expand_expr_real_1): New local treeop0, treeop1,
1093         treeop2 initialized with first three operands of the full expression.
1094         Substitute all TREE_OPERAND (exp, [012]) calls with them.
1095
1096 2009-08-25  Kai Tietz  <kai.tietz@onevision.com>
1097
1098         * gcc/gthr-win32.h (__UNUSED_PARAM): Define, if not already present.
1099         (__gthread_objc_condition_allocate): Mark arguments as unused.
1100         (__gthread_objc_condition_deallocate): Likewise.
1101         (__gthread_objc_condition_wait): Likewise.
1102         (__gthread_objc_condition_broadcast): Likewise.
1103         (__gthread_objc_condition_signal): Likewise.
1104         (__gthread_objc_thread_detach): Cast via INT_PTR to pointer.
1105         (__gthread_objc_thread_id): Likewise.
1106
1107 2009-08-25  Janus Weil  <janus@gcc.gnu.org>
1108
1109         PR middle-end/41149
1110         * tree-pretty-print.c (print_call_name): Print the correct call name
1111         for procedure pointer components.
1112
1113 2009-08-24  Steve Ellcey  <sje@cup.hp.com>
1114
1115         * config/ia64/ia64.c (ia64_promote_function_mode): Call
1116         default_promote_function_mode when not VMS.
1117
1118 2009-08-24  Olivier Hainque  <hainque@adacore.com>
1119
1120         * convert.c (convert_to_integer): Don't assume an input pointer is
1121         POINTER_SIZE wide.  Fetch from the type instead.
1122
1123 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1124
1125         * configure.ac (AC_PREREQ): Bump to 2.64.
1126
1127 2009-08-24  Rafael Avila de Espindola  <espindola@google.com>
1128
1129         * gcc.c (standard_exec_prefix_1,standard_exec_prefix_2): Remove.
1130         (process_command): Don't search standard_exec_prefix_1 and
1131         standard_exec_prefix_2.
1132
1133 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1134
1135         * config/arm/arm.c (output_return_instruction): Handle for
1136         unified syntax.
1137
1138 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1139
1140         * config/arm/arm.c (arm_select_cc_mode): Handle subreg.
1141
1142 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1143
1144         * config/arm/vfp.md (*arm_movdi_vfp): Mark as predicable.
1145         (*arm_movdf_vfp): Likewise.
1146
1147 2009-08-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1148
1149         * config/arm/neon.md (vashl<mode>3): Rename from ashl<mode>3.
1150         (vashr<mode>3): Rename from ashr<mode>3.
1151         (vlshr<mode>3): Rename from lshr<mode>3.
1152
1153 2009-08-24  Kai Tietz  <kai.tietz@onevision.com>
1154
1155         PR/40786
1156         * c-format.c (format_wanted_type):  Add new member scalar_identity_flag.
1157         (check_format_info_main): Use scalar_identify_flag.
1158         (check_format_types): Check for scalar size identity if
1159         scalar_identify_flag is set.
1160         (printf_length_specs): Extend by new field.
1161         (asm_fprintf_length_specs): Likewise.
1162         (gcc_diag_length_specs): Likewise.
1163         (scanf_length_specs): Likewise.
1164         (strfmon_length_specs): Likewise.
1165         (gcc_gfc_length_specs): Likewise.
1166         * config/i386/msformat-c.c (ms_printf_length_specs): Likewise.
1167         (ms_printf_flag_specs): Likewise.
1168         * c-format.h (format_length_info): Add new member scalar_identity_flag.
1169
1170 2009-08-23  Uros Bizjak  <ubizjak@gmail.com>
1171
1172         PR target/40718
1173         * config/i386/i386.c (*call_pop_1): Disable for sibling calls.
1174         (*call_value_pop_1): Ditto.
1175         (*sibcall_pop_1): New insn pattern.
1176         (*sibcall_value_pop_1): Ditto.
1177
1178 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
1179
1180         PR target/41081
1181         * config/rs6000/rs6000.md (rotlsi3_64, ashlsi3_64, lshrsi3_64,
1182         ashrsi3_64): New.
1183
1184 2009-08-23  Alan Modra  <amodra@bigpond.net.au>
1185
1186         PR target/41081
1187         * fwprop.c (try_fwprop_subst): Allow multiple sets.
1188         (get_reg_use_in): New function.
1189         (forward_propagate_subreg): Propagate through subreg of zero_extend
1190         or sign_extend.
1191
1192 2009-08-22  Kaz Kojima  <kkojima@gcc.gnu.org>
1193
1194         * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS): Define.
1195         * config/sh/t-netbsd (TARGET_LIBGCC2_CFLAGS): Add -mieee.
1196
1197 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1198
1199         * configure.ac: Remove --with-datarootdir, --with-docdir,
1200         --with-htmldir switches.  No need to call AC_SUBST for
1201         datarootdir, docdir, htmldir any more.
1202         * configure: Regenerate.
1203         * doc/install.texi (Configuration): Document --datarootdir,
1204         --docdir, --htmldir, --pdfdir; update documentation for
1205         --infodir, --mandir.
1206         (Prerequisites): Bump Autoconf version to 2.64, Automake to 1.11,
1207         M4 to 1.4.6.
1208
1209         * aclocal.m4: Regenerate.
1210         * config.in: Regenerate.
1211         * configure: Regenerate.
1212
1213 2009-08-21  Douglas B Rupp  <rupp@gnat.com>
1214             Olivier Hainque  <hainque@adacore.com>
1215
1216         * config/ia64/ia64.c: Include libfuncs.h.
1217         (TARGET_PROMOTE_FUNCITON_MODE): Define target macro.
1218         (ia64_expand_call): Use reg 25 on VMS.
1219         (ia64_initialize_trampoline): Fix for VMS ABI.
1220         (ia64_function_arg_offset): Always returns 0 when TARGET_ABI_OPEN_VMS.
1221         (ia64_function_arg): Initialize reg 25 on VMS.
1222         Fix OpenVMS ABI issues for varargs.
1223         For OpenVMS, emit the Argument Information register set in the
1224         incoming/sibcall case as well.
1225         (ia64_arg_type): New function.
1226         (ia64_function_arg_advance): Keep track of cum->words.
1227         Fix OpenVMS ABI issues for varargs.
1228         (ia64_function_value): On VMS, promote mode of non-aggregate types.
1229         (ia64_override_options): Set flag_no_common on VMS.
1230         (ia64_init_builtins): Disable FWRITE builtin.
1231         (ia64_asm_output_external): Call DO_CRTL_NAMES.
1232         (ia64_vms_init_libfuncs): Add decc$ routines.
1233         (ia64_vms_valid_pointer_mode): New function.
1234         (ia64_struct_value_rtx): Allways NULL_RTX on VMS.
1235         (ia64_promote_function_mode): New function
1236         * config/ia64/ia64.h (TARGET_ABI_OPEN_VMS): Define as 0 for default.
1237         (LONG_DOUBLE_TYPE_SIZE): Force to 64 on VMS.
1238         (LIBCGC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
1239         (INIT_CUMULATIVE_ARGS): Add atypes for VMS.
1240         (INIT_CUMULATIVE_INCOMING_ARGS): Likewise.
1241         (ASM_OUTPUT_DEF): Use ISDIGIT instead of isdigit.
1242         Suppress trailing '#' if VALUE is numeric.
1243         * config/ia64/vms.h (PROMOTE_FUNCTION_MODE): Remove, code moved to
1244         ia64_promote_function_mode.
1245         (TARGET_VALID_POINTER_MODE): Define.
1246
1247 2009-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
1248
1249         PR target/40671
1250         * config/rs6000/rs6000.c (rs6000_override_options): Use
1251         TARGET_64BIT instead of TARGET_POWERPC64 to set the size of pointers.
1252
1253         PR target/41145
1254         * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Fix
1255         reporting of vector + decimal/boolean/complex error.
1256
1257 2009-08-21  Jakub Jelinek  <jakub@redhat.com>
1258
1259         * config/rs6000/rs6000.c (rs6000_init_builtins): Fix type of
1260         __vector double TYPE_DECL.
1261
1262 2009-08-21  Richard Earnshaw  <rearnsha@arm.com>
1263
1264         * arm.h (MACHMODE): New define.  Include insn-modes.h if available.
1265         (CUMULATIVE_ARGS): Use MACHMODE for declaration of aapcs_vfp_mode.
1266         * arm.c (aapcs_vfp_is_call_or_return_candidate): Change base_mode
1267         to pointer to enum machine_mode.  Update all callers as needed.
1268
1269 2009-08-21 Uros Bizjak <ubizjak@gmail.com>
1270
1271         * config/alpha/alpha.md (exception_receiver): Emit alternative
1272         GP load sequence if flag_reorder_blocks_and_partition is set.
1273         (*exception_receiver_2): Also enable when
1274         flag_reorder_blocks_and_partition is set.
1275
1276 2009-08-20  Matt Rice  <ratmice@gmail.com>
1277             Diego Novillo  <dnovillo@google.com>
1278
1279         * Makefile.in (PLUGIN_HEADERS): Include incpath.h and
1280         tree-ssa-sccvn.h.
1281
1282 2009-08-20  Richard Guenther  <rguenther@suse.de>
1283
1284         * c-objc-common.h (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Do not define.
1285         * c-tree.h (c_dup_lang_specific_decl): Remove.
1286         (struct lang_decl, struct lang_type): Move definitions ...
1287         * c-lang.h: ... here.  New file.
1288         * c-decl.c: Include c-lang.h.
1289         (c_dup_lang_specific_decl): Remove.
1290         * c-typeck.c: Include c-lang.h.
1291         * Makefile.in (c-decl.o): Add c-lang.h dependency.
1292         (c-typeck.o): Likewise.
1293         * c-config-lang.in (gtfiles): Add c-lang.h.
1294         * gengtype.c (get_output_file_with_visibility): Handle c-lang.h
1295         like c-tree.h.
1296
1297 2009-08-20  Uros Bizjak  <ubizjak@gmail.com>
1298
1299         * config/alpha/alpha.c (alpha_end_function): Do not clear
1300         crtl->emit structure and free insn locators if cfun->is_thunk is true,
1301         this is now handled in generic code.
1302
1303 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1304
1305         * config/s390/s390.c (Z10_PREDICT_DISTANCE): New macro.
1306         (s390_z10_fix_long_loop_prediction): New function.
1307         (s390_z10_optimize_cmp): INSN walk moved to callee - s390_reorg.
1308         (s390_reorg): Walk over the INSNs and invoke
1309         s390_z10_fix_long_loop_prediction and s390_z10_optimize_cmp.
1310
1311 2009-08-20  Andreas Krebbel  <krebbel1@de.ibm.com>
1312
1313         * config/s390/s390.md ("*brx_stage1_<GPR:mode>", "*brxg_64bit",
1314         "*brx_64bit", "*brx_31bit"): New patterns.
1315         * config/s390/s390.c ('E'): New output modifier.
1316
1317 2009-08-20  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
1318             Richard Earnshaw  <richard.earnshaw@arm.com>
1319
1320         * config/arm/arm.c (arm_emit_movpair): Handle CONST_INT.
1321         * config/arm/arm.md (*arm_movtas_ze): New pattern for movt.
1322
1323 2009-08-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1324
1325         * pa.md (reload_inhi, reload_outhi, reload_inqi, reload_outqi): New
1326         patterns.
1327         * pa.c (emit_move_sequence): Check if address of operand1 is valid
1328         for mode mode of operand0 when doing secondary reload for SAR.
1329
1330 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
1331
1332         PR middle-end/41123
1333         * expr.c (expand_expr_real_1) <normal_inner_ref>: Handle all kinds
1334         of CONCAT, not just bitpos 0 bitsize size of the whole CONCAT.
1335
1336 2009-08-19  Jason Merrill  <jason@redhat.com>
1337
1338         * doc/invoke.texi (C++ Dialect Options): Note change of minimum
1339         supported template depth in C++0x.
1340
1341 2009-08-19  Jakub Jelinek  <jakub@redhat.com>
1342
1343         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Don't call
1344         free_after_compilation.
1345         * config/score/score7.c (score7_output_mi_thunk): Likewise.
1346         * config/score/score3.c (score3_output_mi_thunk): Likewise.
1347         * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
1348         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
1349         * config/sh/sh.c (sh_output_mi_thunk): Likewise.
1350         * config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
1351         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
1352
1353 2009-08-19  Ian Lance Taylor  <iant@google.com>
1354
1355         * doc/md.texi (Insn Canonicalizations): Correct canonicalization
1356         of (plus (mult (neg B) C) A).
1357
1358 2009-08-18  Michael Matz  <matz@suse.de>
1359
1360         * omp-low.c (optimize_omp_library_calls): Use types_compatible_p
1361         instead of comparing TYPE_MAIN_VARIANT for equality.
1362         * tree-vect-patterns.c (vect_recog_dot_prod_pattern,
1363         vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern): Ditto.
1364         * tree-vect-loop.c (vect_is_simple_reduction): Ditto.
1365         * gimplify.c (goa_lhs_expr_p): Ditto and use
1366         STRIP_USELESS_TYPE_CONVERSION.
1367
1368 2009-08-18  Michael Matz  <matz@suse.de>
1369
1370         * tree-ssa-structalias.c (create_variable_info_for): Also mark
1371         first field in a struct.
1372         (intra_create_variable_infos): Don't deal with flag_argument_noalias.
1373
1374 2009-08-18  Uros Bizjak  <ubizjak@gmail.com>
1375
1376         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Allocate insn
1377         locators before emit_insn is called.  Remove assert that
1378         cfun->is_thunk.
1379         (alpha_end_function): Clear crtl->emit structure and free insn
1380         locators if cfun->is_thunk is true.
1381
1382 2009-08-18  Jason Merrill  <jason@redhat.com>
1383
1384         * config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use gnu_unique_object
1385         type if available.
1386         * configure.ac: Test for it.
1387         * configure, config.in: Regenerate.
1388         * doc/install.texi: Document --enable-gnu-unique-object.
1389
1390 2009-08-18  Richard Guenther  <rguenther@suse.de>
1391
1392         PR middle-end/41094
1393         * builtins.c (fold_builtin_pow): Fold pow(pow(x,y),z) to
1394         pow(x,y*z) only if x is nonnegative.
1395
1396 2009-08-18  Jakub Jelinek  <jakub@redhat.com>
1397
1398         * bb-reorder.c (fix_up_fall_thru_edges): Only call invert_jump
1399         on jumps.
1400
1401         PR target/40971
1402         * config/rs6000/rs6000.c (rs6000_legitimize_address): For
1403         [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
1404
1405 2009-08-17  DJ Delorie  <dj@redhat.com>
1406
1407         * config/m32c/m32c.md (UNS_FSETB, UNS_FREIT): New.
1408         * config/m32c/prologue.md (epilogue_freit): New.
1409         (fset_b): New.
1410         * config/m32c/m32c.c (m32c_function_needs_enter): Add prototype.
1411         (bank_switch_p): Likewise.
1412         (fast_interrupt_p): Likewise.
1413         (interrupt_p): Likewise.
1414         (m32c_conditional_register_usage): Round memregs size up.
1415         (need_to_save): We only need to save $a0 when we use ENTER.
1416         (interrupt_p): Check for fast_interrupt too.
1417         (bank_switch_p): New.
1418         (fast_interrupt_p): New.
1419         (m32c_attribute_table): Add bank_switch and fast_interrupt.
1420         (m32c_emit_prolog): Support bank switching and fast interrupts.
1421         * doc/extend.texi (Function Attributes): Add bank_switch and
1422         fast_interrupt.
1423
1424 2009-08-17  Douglas B Rupp  <rupp@gnat.com>
1425
1426         * config/alpha/alpha.c (vms_valid_pointer_mode): New function.
1427         * config/alpha/vms.h (TARGET_VALID_POINTER_MODE): Define.
1428
1429 2009-08-16  Douglas B Rupp  <rupp@gnat.com>
1430
1431         * doc/invoke.texi (Target options): Add new option list for IA-64/VMS.
1432         (menu): Add IA-64/VMS Options.
1433         (IA-64/VMS Options): Likewise.
1434
1435 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
1436
1437         PR target/38599
1438         * config/mips/mips.md (*lwxs): Use :P for pointer values.
1439
1440 2009-08-16  Richard Sandiford  <rdsandiford@googlemail.com>
1441
1442         * config/mips/mips-protos.h (mips_push_asm_switch): New function.
1443         (mips_pop_asm_switch): Likewise.
1444         * config/mips/mips.c (set_noreorder, set_nomacro, set_noat): Replace
1445         with...
1446         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
1447         (mips_push_asm_switch_1, mips_pop_asm_switch_1): New functions.
1448         (mips_push_asm_switch, mips_pop_asm_switch): Likewise.
1449         (mips_print_operand_punctuation): Use them.  Check mips_noreorder
1450         instead of set_noreorder.
1451         (mips_output_function_prologue): Use the new functions.
1452         (mips_output_function_epilogue): Likewise.
1453         (mips_need_noat_wrapper_p): New function, split out from...
1454         (mips_final_prescan_insn, mips_final_postscan_insn): ...here.
1455         Use mips_push_asm_switch and mips_pop_asm_switch.
1456         * config/mips/mips.h (FUNCTION_PROFILER): Use mips_push_asm_switch
1457         and mips_pop_asm_switch.
1458         (ASM_OUTPUT_REG_POP): Likewise.
1459         (DBR_OUTPUT_SEQEND): Remove boilerplate comment.
1460         Use mips_pop_asm_switch.
1461         (mips_asm_switch): New structure.
1462         (set_noreorder, set_nomacro): Replace with...
1463         (mips_noreorder, mips_nomacro, mips_noat): ...these new variables.
1464         * config/mips/mips.md (fix_truncdfsi2_macro): Use mips_nomacro
1465         instead of set_nomacro.
1466         (fix_truncsfsi2_macro): Likewise.
1467         (cprestore): Likewise.
1468         (hazard): Use mips_noreorder instead of set_noreorder.
1469         * config/mips/sdemtk.h (FUNCTION_PROFILER): As for mips.h.
1470
1471 2009-08-16  Uros Bizjak  <ubizjak@gmail.com>
1472
1473         * config/alpha/alpha.c (alpha_end_function): Handle NULL_RTX returned
1474         from prev_active_insn.
1475
1476 2009-08-16  Anatoly Sokolov  <aesok@post.ru>
1477
1478         * config/avr/avr.h (AVR_HAVE_8BIT_SP): New macros.
1479         * config/avr/avr.c (avr_override_options): Initialize
1480         avr_current_arch variable.
1481         (avr_cpu_cpp_builtins): Define __AVR_HAVE_8BIT_SP__ or
1482         __AVR_HAVE_16BIT_SP__ according to the device type.
1483         (expand_prologue, output_movhi): Use AVR_HAVE_8BIT_SP instead of
1484         TARGET_TINY_STACK.
1485         (expand_epilogue): Use correct QI mode frame pointer for tiny stack.
1486         Use AVR_HAVE_8BIT_SP instead of TARGET_TINY_STACK.
1487
1488 2009-08-16  Dodji Seketeli  <dodji@redhat.com>
1489
1490         PR debug/37801
1491         * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
1492         generating inlined subroutine die only. We shouldn't be
1493         called for anything else.
1494         (gen_block_die): Don't generate inline subroutine debug info for
1495         abstract blocks.
1496
1497 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
1498
1499         * graphite-poly.c (print_pbb): Print PBB index.
1500
1501 2009-08-15  Sebastian Pop  <sebastian.pop@amd.com>
1502
1503         PR middle-end/40981
1504         * graphite-interchange.c (ppl_max_for_le): Moved...
1505         * graphite-poly.c (pbb_number_of_iterations): Call ppl_max_for_le.
1506         * graphite-ppl.c (ppl_max_for_le): ... here.  Correct the use of
1507         ppl_Pointset_Powerset_C_Polyhedron_maximize.
1508         * graphite-ppl.h (ppl_max_for_le): Declared.
1509
1510 2009-08-14  Olatunji Ruwase <tjruwase@google.com>
1511
1512         * doc/extend.texi (Symbol-Renaming Pragmas): redefine_extname is
1513         supported on all platforms.
1514         * target.h (struct gcc_target): Remove handle_pragma_redefine_extname.
1515         * c-cppbuiltin.c: Remove use of targetm.handle_pragma_redefine_extname.
1516         * c-pragma.c: Likewise.
1517         * target-def.h (TARGET_INITIALIZER): Remove
1518         TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
1519         * config/sol2.h: Remove use of TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME.
1520
1521 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
1522
1523         * config/ia64/fde-vms.c: New file.
1524         * config/ia64/fde-glibc.c (_Unwind_FindTableEntry): Add dummy arg.
1525         * config/ia64/unwind-ia64.c (UNW_ accessors): Move to unwind-ia64.h
1526         (MD_UNW_COMPATIBLE_PERSONALITY_P): Provide default.
1527         (uw_frame_state_for): Only register a personality routine if it is
1528         known to be compatible with our expectations.
1529         (_Unwind_FindEnclosingFunction, uw_frame_state_for):
1530         Declare unw_table_entry stack variable and
1531         mod all calls to _Unwind_FindTableEntry to add arg.
1532         * config/ia64/unwind-ia64.h (UNW_ accessors): Move here.
1533         (_Unwind_FindTableEntry): Add arg to prototype.
1534
1535 2009-08-14  Eric Botcazou  <ebotcazou@adacore.com>
1536
1537         * config/ia64/unwind-ia64.c (struct _Unwind_Context): Add new
1538         field 'signal_pfs_loc'.
1539         (uw_frame_state_for): Remove duplicate code dealing with leaf
1540         procedures without unwind info.
1541         If in the frame after unwinding through a signal handler, restore
1542         the AR.PFS register instead of the CFM if AR.PFS has not been saved.
1543         * config/ia64/linux-unwind.h (ia64_fallback_frame_state): Do not set
1544         'pfs_loc' to the AR.PFS location in the signal context; instead
1545         set 'signal_pfs_loc'.
1546         Manually generate the unwind info for the AR.PFS register.
1547         (ABI_MARKER_OLD_LINUX_SIGTRAMP, ABI_MARKER_OLD_LINUX_INTERRUPT,
1548         ABI_MARKER_LINUX_SIGTRAMP, ABI_MARKER_LINUX_INTERRUPT): Define.
1549         (ia64_handle_unwabi): Test 'fs->unwabi' against them.
1550         Do not set 'pfs_loc' to the AR.PFS location in the signal context;
1551         instead set 'signal_pfs_loc'.
1552         Remove code preventing the AR.PFS register from being restored
1553         from the signal context.
1554
1555 2009-08-14  Douglas B Rupp  <rupp@gnat.com>
1556             Tristan Gingold  <gingold@adacore.com>
1557
1558         * config.gcc (ia64-hp-*vms*): Insert ia64/t-ia64 in tmake_file.
1559         * config/ia64/t-vms: New file.
1560         * config/ia64/vms64.h: New file.
1561         * config/ia64/vms.h: New file.
1562         * config/ia64/vms-crtinit.asm: New file.
1563         * config/ia64/vms_symvec_libgcc_s.opt: New file.
1564         * config/ia64/vms-unwind.h: New file.
1565
1566 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
1567
1568         * config/alpha/alpha.c (alpha_emit_conditional_move): Handle
1569         TFmode compares.
1570
1571 2009-08-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1572
1573         PR middle-end/30789
1574         * builtins.c (do_mpc_arg2): Make extern, define for any MPC version.
1575         Move declaration...
1576         * real.h (do_mpc_arg2): ... here.
1577         * fold-const.c (const_binop): Use MPC for complex MULT_EXPR
1578         and RDIV_EXPR.
1579
1580 2009-08-14  Rafael Avila de Espindola  <espindola@google.com>
1581
1582         * final.c (add_debug_prefix_map): Don't use GC memory for
1583         old_prefix and new_prefix.
1584
1585 2009-08-14  Richard Guenther  <rguenther@suse.de>
1586
1587         * ipa-prop.c (compute_complex_pass_through): If we cannot
1588         compute a non-varying offset for IPA_JF_ANCESTOR punt.
1589
1590 2009-08-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1591
1592         * c-lex.c (c_lex_with_flags): Increase size of local variable
1593         to avoid memory clobber.
1594
1595 2009-08-14  Paolo Bonzini  <bonzini@gnu.org>
1596
1597         PR target/40934
1598         * config/i386/i386.c (ix86_fp_comparison_strategy):
1599         Only enable/disable sahf at function granularity.
1600
1601 2009-08-14  Hans-Peter Nilsson  <hp@axis.com>
1602
1603         PR rtl-optimization/41064
1604         * reload1.c (reload_as_needed): Don't call extract_insn
1605         for known invalid replacements after calling
1606         validate_replace_rtx_group and verify_changes.
1607
1608 2009-08-14  Uros Bizjak  <ubizjak@gmail.com>
1609
1610         PR target/41019
1611         * config/i386/sse.md (SSEMODE124C8): New mode iterator.
1612         (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
1613         ix86_expand_fp_vcond.
1614         (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
1615         Assert that operation is supported by ix86_expand_int_vcond.
1616         (vcondu<SSEMODE124C8:mode>): Ditto.
1617
1618 2009-08-13  DJ Delorie  <dj@redhat.com>
1619
1620         * config/i386/djgpp-stdint.h: New.
1621         * config.gcc (djgpp): Use it.
1622
1623 2009-08-13  Kaz Kojima  <kkojima@gcc.gnu.org>
1624
1625         * config/sh/sh.c (sh_override_options): When flag_exceptions or
1626         flag_unwind_tables is on, turn flag_reorder_blocks_and_partition off.
1627
1628 2009-08-13  Ghassan Shobaki  <ghassan.shobaki@amd.com>
1629
1630         * tree-ssa-loop-prefetch.c
1631         (prune_ref_by_group_reuse): Enhance probabilistic analysis
1632         for long-stride pruning.
1633         (compute_miss_rate): New function to compute the probability
1634         that two memory references access different cache lines.
1635
1636 2009-08-13  Dave Korn  <dave.korn.cygwin@gmail.com>
1637
1638         * gcc/config/i386/cygwin.h (LINK_SPEC): Add --enable-auto-image-base.
1639
1640 2009-08-13  Richard Guenther  <rguenther@suse.de>
1641
1642         PR middle-end/41047
1643         * tree-ssa-ccp.c (ccp_fold): When folding pointer additions
1644         use the constant pointer type.
1645         * gimplify.c (canonicalize_addr_expr): Canonicalize independent
1646         of CV qualifiers on the target pointer type.
1647         * tree-ssa.c (useless_type_conversion_p): Move incomplete pointer
1648         conversion check before restrict check.
1649
1650 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1651
1652         PR target/41029
1653         * config/sh/sh.md (reload_outdf__RnFRm+4): Fix thinko.
1654
1655 2009-08-12  Kaz Kojima  <kkojima@gcc.gnu.org>
1656
1657         * config/sh/sh.c (sh_promote_function_mode): Add ATTRIBUTE_UNUSED.
1658
1659 2009-08-12  Richard Guenther  <rguenther@suse.de>
1660
1661         PR tree-optimization/41011
1662         * ipa-cp.c (ipcp_lattice_from_jfunc): Deal with failing fold
1663         and reference constructing.
1664
1665 2009-08-12  Xinliang David Li  <davidxl@google.com>
1666
1667         PR tree-optimization/41012
1668         * tree-flow.h : New external interface.
1669         * gimple-low.c (check_call_arg): Change to public function.
1670         Remove argument mismatch check in lowering.
1671         * tree-inline.h (tree_can_inline_p): Interface change.
1672         * tree-inline.c (tree_can_inline_p): Fold argument mismatch check
1673         into this function.
1674         * ipa-inline.c (cgraph_decide_inlining_of_small_functions):
1675         Call change to tree_can_inline_p function.
1676         (cgraph_decide_inlining_incrementally): Ditto.
1677
1678 2009-08-12  Richard Sandiford  <rdsandiford@googlemail.com>
1679
1680         PR tree-optimization/41031
1681         * tree-outof-ssa.c (insert_value_copy_on_edge): Use promote_decl_mode
1682         on the partition variable rather than promote_mode on the source
1683         type.  Assert that the partition variable's type has the same
1684         mode as the source value's.
1685
1686 2009-08-12  Paolo Bonzini  <bonzini@gnu.org>
1687
1688         * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation
1689         for for_return == 2.
1690         * function.c (assign_parm_setup_reg): Use for_return == 2, improve
1691         comments.
1692         * calls.c (expand_call): Fix typo.
1693         * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL
1694         and PARM_DECL.
1695         * stmt.c (expand_value_return): Use promote_function_mode to copy out
1696         of pseudo.
1697         * targhooks.c (default_promote_function_mode): Handle for_return == 2.
1698         * config/cris/cris.c (cris_promote_function_mode): Likewise.
1699         * config/mmix/mmix.c (mmix_promote_function_mode): Likewise.
1700         * config/pa/pa.c (pa_promote_function_mode): Likewise.
1701
1702 2009-08-12  Andrew Haley  <aph@redhat.com>
1703
1704         * config/arm/arm.c (arm_init_libfuncs): Add __sync_synchronize.
1705
1706 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1707
1708         PR bootstrap/40103
1709         * graphite.c: Remove pragma GCC diagnostic warning "-Wc++-compat".
1710
1711 2009-08-12  Richard Guenther  <rguenther@suse.de>
1712
1713         * alias.c (get_alias_set): Honor TYPE_STRUCTURAL_EQUALITY_P.
1714         * gimplify.c (gimplify_modify_expr): Do not use
1715         lang_hooks.types_compatible_p.
1716         * tree-ssa.c (useless_type_conversion_p): For aggregates
1717         just return false if the canonical types differ.
1718
1719 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1720
1721         PR middle-end/40980
1722         * sese.c (convert_for_phi_arg): New.
1723         (add_guard_exit_phis): Use convert_for_phi_arg.
1724
1725 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1726
1727         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Dont add
1728         unknown subscript upper bounds.
1729
1730 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1731             Pranav Garg  <pranav.garg2107@gmail.com>
1732
1733         * graphite-interchange.c (gather_access_strides): Removed.
1734         (ppl_max_for_le): New.
1735         (build_linearized_memory_access): New.
1736         (memory_stride_in_loop): New.
1737         (pbb_interchange_profitable_p): Reimplemented.
1738         * graphite-ppl.h (ppl_new_id_map): New.
1739         (ppl_interchange): New.
1740
1741 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1742
1743         * graphite-interchange.c (compute_subscript): Removed.
1744         (compute_array_size_cstr): Removed.
1745         (compute_array_size_poly): Removed.
1746         (compute_array_size): Removed.
1747         (gather_access_strides_poly): Removed.
1748         (gather_access_strides): Empty.
1749
1750 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1751
1752         * graphite-dependences.c (dependence_polyhedron_1): Replace
1753         pdr_nb_subscripts with PDR_NB_SUBSCRIPTS.
1754         (graphite_legal_transform_dr): Same.
1755         (graphite_carried_dependence_level_k): Same.
1756         * graphite-poly.c (new_poly_dr): Add a parameter nb_subscripts.
1757         Initialize PDR_NB_SUBSCRIPTS.
1758         (print_pdr_access_layout): Replace pdr_nb_subscripts with
1759         PDR_NB_SUBSCRIPTS.
1760         * graphite-poly.h (struct poly_dr): Add nb_subscripts field.
1761         (PDR_NB_SUBSCRIPTS): New.
1762         (pdr_nb_subscripts): Removed.
1763         (pdr_dim): Simplified.
1764         * graphite-sese-to-poly.c (build_poly_dr): Replace pdr_nb_subscripts
1765         with PDR_NB_SUBSCRIPTS.
1766
1767 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1768
1769         * graphite-interchange.c (compute_array_size): Remove use of
1770         PDR_DATA_CONTAINER.
1771         * graphite-poly.c (new_poly_dr): Remove argument data_container.
1772         Do not initialize PDR_DATA_CONTAINER.
1773         (print_pdr): Do not print PDR_DATA_CONTAINER.
1774         * graphite-poly.h (struct poly_dr): Remove data_container field.
1775         (PDR_DATA_CONTAINER): Removed.
1776         * graphite-sese-to-poly.c (pdr_add_data_dimensions): Remove use of
1777         PDR_DATA_CONTAINER.
1778         (build_poly_dr): Same.
1779
1780 2009-08-12  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
1781             Sebastian Pop  <sebastian.pop@amd.com>
1782
1783         * graphite-dependences.c (graphite_legal_transform_dr): Work on a
1784         copy of the dependence polyhedron.  Free the temporary objects.
1785         (graphite_carried_dependence_level_k): Free unused objects before
1786         returning.
1787
1788         * testsuite/gcc.dg/graphite/interchange-1.c: XFAILed.
1789         * testsuite/gcc.dg/graphite/interchange-2.c: XFAILed.
1790         * testsuite/gcc.dg/graphite/interchange-3.c: XFAILed.
1791         * testsuite/gcc.dg/graphite/interchange-4.c: XFAILed.
1792         * testsuite/gcc.dg/graphite/interchange-7.c: XFAILed.
1793
1794 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1795
1796         * graphite-blocking.c (scop_do_strip_mine): Call store_scattering.
1797         Early return without analyzing the data dependences if no
1798         transform has been done.  Call restore_scattering if the transform
1799         is not legal.
1800         (graphite-interchange.c): Same.
1801         * graphite-poly.c (print_scattering_function): Test for
1802         PBB_TRANSFORMED.
1803         (graphite_read_transforms): Initialize PBB_TRANSFORMED.
1804         (apply_poly_transforms): Do not gcc_assert that
1805         the transform is legal.
1806         (new_poly_bb): Initialize PBB_TRANSFORMED, PBB_SAVED and PBB_ORIGINAL.
1807         Do not initialize PBB_NB_SCATTERING_TRANSFORM, PBB_NB_LOCAL_VARIABLES,
1808         PBB_TRANSFORMED_SCATTERING, and PBB_ORIGINAL_SCATTERING.
1809         (free_poly_dr): Free PBB_TRANSFORMED, PBB_SAVED, and PBB_ORIGINAL.
1810         * graphite-poly.h (struct poly_scattering): New.
1811         (struct poly_bb): Add original, transformed, and saved fields.
1812         Remove transformed_scattering, original_scattering,
1813         nb_local_variables and nb_scattering_transform fields.
1814         (PBB_ORIGINAL, PBB_TRANSFORMED, PBB_SAVED): New.
1815         (poly_scattering_new): New.
1816         (poly_scattering_free): New.
1817         (poly_scattering_copy): New.
1818         (store_scattering_pbb): New.
1819         (store_scattering): New.
1820         (restore_scattering_pbb): New.
1821         (restore_scattering): New.
1822         * graphite-sese-to-poly.c (build_pbb_scattering_polyhedrons):
1823         Initialize PBB_TRANSFORMED and PBB_ORIGINAL.
1824
1825 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1826
1827         * graphite-poly.c (print_pbb): Add parentheses in the pretty print.
1828         (print_scop): Same.
1829
1830 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1831
1832         * Makefile.in (graphite.o): Depends on PREDICT_H.
1833         * graphite.c: Include predict.h.
1834         (graphite_finalize): Call tree_estimate_probability.
1835         * predict.c (predict_loops): Do not call scev_initialize and
1836         scev_finalize.
1837         (tree_estimate_probability_bb): New.
1838         (tree_estimate_probability): Do not initialize loops: move that
1839         code to the driver.  Call tree_estimate_probability_bb.
1840         (tree_estimate_probability_driver): New.
1841         (pass_profile): Use tree_estimate_probability_driver.
1842         * predict.h (tree_estimate_probability): Declared.
1843
1844 2009-08-12  Sebastian Pop  <sebastian.pop@amd.com>
1845
1846         * graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
1847         * graphite-dependences.c (graphite_legal_transform): Add time to
1848         TV_GRAPHITE_DATA_DEPS.
1849         (dependency_between_pbbs_p): Same.
1850         * timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
1851
1852 2009-08-12  Andrey Belevantsev  <abel@ispras.ru>
1853
1854         PR rtl-optimization/41033
1855         * alias.c (nonoverlapping_component_refs_p): Punt when strict
1856         aliasing is disabled.
1857
1858 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
1859
1860         * config/mips/predicates.md (qi_mask_operand, hi_mask_operand,
1861         si_mask_operand, and_load_operand, low_bitmask_operand,
1862         and_reg_operand, and_operand): New predicates.
1863         * config/mips/constraints.md (Yb, Yh, Yw, Yz): New constraints.
1864         * config/mips/mips.c (and_operands_ok): New function.
1865         * config/mips/mips-protos.h (and_operands_ok): Declare it.
1866         * config/mips/mips.md (move_type): Add ext_ins and logical.
1867         (type): Handle them.
1868         (and<mode>3): Use and_reg_operand as the second operand's predicate.
1869         (*and<mode>3): Add alternatives for lbu, lhu, lwu, <d>ext and
1870         shift_shift.  Remove commutative constraint modifier.
1871         (*and<mode>3_mips16): Add alternatives for lbu, lhu, lwu and
1872         shift_shift.
1873         (*clear_upper32_dext): Remove define_insn_and_split.
1874         (*clear_upper32): Turn this define_insn_and_split ...
1875         (splitter for ANDing register with 0xffff_ffff): .. into this.
1876
1877 2009-08-11  Adam Nemet  <anemet@caviumnetworks.com>
1878
1879         * combine.c (try_widen_shift_mode): Factor out code to check if an
1880         integer constant is a low-order bitmask from here ...
1881         * rtlanal.c (low_bitmask_len): ... to here.
1882         * rtl.h (low_bitmask_len): Declare.
1883
1884 2009-08-11  Uros Bizjak  <ubizjak@gmail.com>
1885
1886         PR target/8603
1887         * config/alpha/alpha.md (addsi3): Remove expander.
1888         (addsi3): Rename from *addsi3_internal insn pattern.
1889         (subsi3): Remove expander.
1890         (subsi3): Rename from *subsi3_internal insn pattern.
1891
1892 2009-08-11  Douglas B Rupp  <rupp@gnat.com>
1893
1894         * config/alpha/alpha.c (alpha_init_builtins): Nullify FWRITE and
1895         FWRITE_UNLOCKED.
1896
1897 2009-08-11  Vasiliy Fofanov  <fofanov@adacore.com>
1898             Eric Botcazou  <botcazou@adacore.com>
1899             Douglas B Rupp  <rupp@gnat.com>
1900
1901         * config/alpha/alpha.c (alpha_return_in_memory): On VMS, ensure
1902         that records that fit in 64 bits are returned by immediate value,
1903         as required by OpenVMS Calling Standard.
1904         (function_value): Adjust for above modification.
1905         (alpha_va_start) <TARGET_ABI_OPEN_VMS>: Use
1906         virtual_incoming_args_rtx as base object, not next_arg.
1907         * config/alpha/vms.h: (DEFAULT_PCC_STRUCT_RETURN): Define as 0.
1908
1909 2009-08-11  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1910
1911         * reload.c (find_reloads_subreg_address): Check the original
1912         req_equiv_mem address to detect the case where an address is
1913         not valid in the outer mode.
1914
1915 2009-08-11  Richard Guenther  <rguenther@suse.de>
1916
1917         PR bootstrap/40788
1918         * builtins.c (gimplify_va_arg_expr): Do not call SET_EXPR_LOCATION.
1919
1920 2009-08-10  Douglas B Rupp  <rupp@gnat.com>
1921
1922         * config/alpha/vms.h (OPTIMIZATION_OPTIONS): Remove
1923         (OVERRIDE_OPTIONS): Incorporate removed OPTIMIZATION_OPTIONS.
1924
1925 2009-08-10  Olivier Hainque  <hainqueu@adacore.com>
1926             Douglas B Rupp  <rupp@gnat.com>
1927
1928         * config/alpha/alpha.c (alpha_sa_size): Force procedure type to
1929         PT_STACK when frame_pointer_needed on OpenVMS.
1930         (alpha_pv_save_size, alpha_using_fp): Remove.
1931         (alpha_vms_can_eliminate): New function. Support for CAN_ELIMINATE
1932         with proper processing for PT_NULL.
1933         (alpha_vms_initial_elimination_offset): New function. Support for
1934         INITIAL_ELIMINATION_OFFSET with proper processing for PT_NULL.
1935         (alpha_sa_size): Force procedure type to PT_STACK when
1936         frame_pointer_needed on OpenVMS.
1937         * config/alpha/alpha-protos.h (alpha_pv_save_size): Remove prototype.
1938         (alpha_using_fp): Likewise.
1939         (alpha_vms_can_eliminate): Add prototype.
1940         (alpha_vms_initial_elimination_offset): Likewise.
1941         * config/alpha/vms.h (CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET):
1942         Call alpha_vms_can_eliminate and alpha_vms_initial_elimination_offset.
1943
1944 2009-08-10  Eric Botcazou  <botcazou@adacore.com>
1945             Douglas B Rupp  <rupp@gnat.com>
1946
1947         * config/alpha/alpha.c (common_object_handler): New function.
1948         (vms_attribute_table): Declare a single attribute "common_object".
1949         (vms_output_aligned_decl_common): New global function.
1950         (SECTION_VMS_OVERLAY): Delete.
1951         (SECTION_VMS_GLOBAL): Likewise.
1952         (SECTION_VMS_INITIALIZE): Likewise.
1953         (vms_asm_named_section): Remove support for above flags.
1954         (vms_section_type_flags): Delete.
1955         (TARGET_SECTION_TYPE_FLAGS): Likewise.
1956         * config/alpha/alpha-protos.h (vms_output_aligned_decl_common): New.
1957         * config/alpha/vms.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.
1958         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New macro.
1959
1960 2009-08-10  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
1961
1962         PR target/41015
1963         * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
1964         (sub_ddmmss): Likewise.
1965
1966 2009-08-10  Andreas Tobler  <a.tobler@schweiz.org>
1967
1968         PR bootstrap/41018
1969         * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
1970         year.
1971
1972 2009-08-10  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
1973
1974         PR target/37053
1975         * reload1.c (reload_as_needed): Use cancel_changes to completely
1976         undo a failed replacement attempt.
1977
1978 2009-08-10  Richard Guenther  <rguenther@suse.de>
1979
1980         PR middle-end/41006
1981         * tree-ssa.c (useless_type_conversion_p_1): Fold into ...
1982         (useless_type_conversion_p): ... here.  Require pointer targets
1983         to be compatible.
1984
1985 2009-08-10  Dodji Seketeli  <dodji@redhat.com>
1986
1987         PR c++/40866
1988         * tree-inline.c (copy_statement_list): The resulting copy shouldn't
1989         loose the original type of the statement list.
1990
1991 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
1992
1993         * config/alpha/alpha.c: Include libfuncs.h
1994         (avms_asm_output_extern): New function.
1995         (alpha_init_libfuncs): Init some decc libfuncs.
1996         * config/alpha/alpha-protos.h (avms_asm_output_external): Declare.
1997         * config/alpha/vms.h (ASM_OUTPUT_EXTERNAL): Define.
1998         (DO_CRTL_NAMES): Define.
1999         (LIB_SPEC): Remove.
2000         * config/alpha/vms64.h: (POINTERS_EXTEND_UNSIGNED): Remove undef.
2001         (LONG_TYPE_SIZE): Define.
2002         (TARGET_OS_CPP_BUILTINS): Define with __LONG_POINTERS=1
2003         (SUBTARGET_SWITCHES): Define malloc64 switch.
2004         (TARGET_DEFAULT): Default MASK_MALLOC64 set.
2005         (MASK_RETURN_ADDR): Define.
2006         doc/invoke.texi (mmalloc64): Document switch.
2007
2008 2009-08-09  Olivier Hainque  <hainque@adacore.com>
2009             Douglas B Rupp  <rupp@gnat.com>
2010
2011         * config/alpha/alpha.c (struct machine_function): New flag for VMS,
2012         uses_condition_handler.
2013         (alpha_expand_builtin_establish_vms_condition_handler): New expander.
2014         (alpha_expand_builtin_revert_vms_condition_handler): New expander.
2015         (enum alpha_builtin): New ALPHA_BUILTIN_REVERT_VMS_CONDITION_HANDLER
2016         and ALPHA_BUILTIN_ESTABLISH_VMS_CONDITION_HANDLER values.
2017         (code_for_builtin): New insn codes for the new alpha_builtins.
2018         (alpha_init_builtins): Register the new functions as BUILT_IN_MD.
2019         (alpha_sa_size): Account for uses_condition_handler.
2020         (alpha_expand_prologue): Likewise.
2021         (alpha_start_function): Likewise.
2022         (alpha_expand_epilogue): Likewise.
2023         * config/alpha/alpha-protos.h: Prototype the new alpha.c builtin
2024         establish/revert expanders.
2025         * config/alpha/alpha.h (DWARF_FRAME_REGNUM): Define.
2026         * config/alpha/alpha.md (builtin_establish_vms_condition_handler):
2027         New expander, resorting to the alpha.c associated function.
2028         (builtin_revert_vms_condition_handler): Likewise.
2029         * config/alpha/vms-gcc_shell_handler.c: New file. Implements
2030         __gcc_shell_handler, the static VMS condition handler used as
2031         an indirection wrapper to the current dynamically established
2032         handler.
2033         * config/alpha/vms-unwind.h: Complete rewrite.
2034         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Add vms-gcc_shell_handler.c
2035         * config/alpha/vms.h (MD_UNWIND_SUPPORT):
2036
2037 2009-08-09  Eric Botcazou  <botcazou@adacore.com>
2038             Douglas B Rupp  <rupp@gnat.com>
2039
2040         * config/alpha/alpha.c (alpha_links): Add 'target' field.
2041         (alpha_need_linkage): Handle aliases.  Return function symbol.
2042         (alpha_use_linkage): Rename 'linkage' argument to 'func'.
2043         Use ultimate alias target for the linkage name.
2044         * config/alpha/alpha.md (movmemdi): Use the symbol returned
2045         by alpha_need_linkage for the function symbol.
2046         (setmemdi): Likewise.
2047
2048 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
2049
2050         * config/alpha/alpha.c (TARGET_ASM_UNALIGNED_*_OP): Define if on VMS.
2051         * config/alpha/vms.h (OBJECT_FORMAT_ELF): Define.
2052         (ASM_WEAKEN_LABEL): Define.
2053         (CRT_CALL_STATIC_FUNCTION): Define.
2054         (STARTFILE_SPEC): Add crtbegin.o crtbeginS.o.
2055         (ENDFILE_SPEC): Define.
2056         (INIT_SECTION_ASM_OP): Define.
2057         * config/alpha/vms-dwarf2eh.asm (__EH_FRAME_BEGIN__): Remove.
2058         * config/alpha/t-vms (EXTRA_PARTS): Add crtbegin.o crtbeginS.o
2059         crtend.o crtendS.o.
2060         (MULTILIB_OSDIRNAMES): Define.
2061         (shlib_version): Define.
2062         (SHLIB_EXT): Define.
2063         (SHLIB_OBJS): Define.
2064         (SHLIB_NAME): Define.
2065         (SHLIB_MULTILIB): Define.
2066         (SHLIB_INSTALL): Define.
2067         (SHLIB_SYMVEC): Define.
2068         (SHLIB_SYMVECX2): Define.
2069         (SHLIB_LINK): Define.
2070
2071 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
2072
2073         * config/alpha/alpha.c (alpha_initialize_trampoline):
2074         Initialize VMS trampoline IAW ABI for bounded procedure calls.
2075         (alpha_start_function): Emit transfer address on nested functions
2076         for VMS trampoline call.
2077         * config/alpha/t-vms (LIB2FUNCS_EXTRA): Remove vms_tramp.asm
2078         since no longer used.
2079         * config/alpha/vms-tramp.asm: Remove.
2080         * config/alpha/vms.h (TRAMPOLINE_TEMPLATE): Leave undefined
2081         since now only data initialized at runtime.
2082
2083 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
2084
2085         * config/alpha/vms.h (HANDLE_SYSV_PRAGMA): Define.
2086         (LINK_GCC_C_SEQUENCE_SPEC): Define.
2087         (MD_EXEC_PREFIX): Remove, no longer used.
2088         (MD_STARTFILE_PREFIX): Likewise.
2089         (INCLUDE_DEFAULTS): Likewise.
2090         * config/alpha/t-vms:
2091         (vms-dwarf2.o, vms-dwarf2eh.o): Use GCC_FOR_TARGET to compile.
2092
2093 2009-08-09  Richard Guenther  <rguenther@suse.de>
2094
2095         PR tree-optimization/41016
2096         * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification bug.
2097         (operand_precision): Remove.
2098         (integral_operand_p): Likewise.
2099         (recognize_single_bit_test): Adjust.
2100
2101 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2102
2103         * c-common.c (c_fully_fold_internal): Issue a warning if a binary
2104         operation overflows.  Likewise non-cast unary arithmetic.
2105         If one arm of a conditional expression is always taken,
2106         inhibit evaluation warnings for the other arm.  Likewise inhibit
2107         evaluation warnings for the second && or || operand if the first
2108         operand is enough to determine the result.
2109         * c-typeck.c (build_conditional_expr): Apply the same inhibition
2110         rules here.
2111         (build_binary_op): Prevent duplicate evaluation warnings.
2112
2113 2009-08-09  Richard Sandiford  <rdsandiford@googlemail.com>
2114
2115         * tree-out-of-ssa.c (insert_value_copy_on_edge): If the source
2116         and destination have different modes, Use promote_mode to
2117         determine the signedness of the conversion.  Assert that the
2118         promoted source mode matches the destination mode.  Don't pass
2119         the destination and destination mode to expand_expr if the source
2120         mode is different.  Simplify conversion logic.
2121
2122 2009-08-09  Ira Rosen  <irar@il.ibm.com>
2123
2124         PR tree-optimization/41008
2125         * tree-vect-loop.c (vect_is_simple_reduction): Get operands
2126         from condition only in case it's a comparison. Adjust checks.
2127
2128 2009-08-09  Bernd Schmidt  <bernd.schmidt@analog.com>
2129
2130         * tree-dfa.c (renumber_gimple_stmt_uids_in_blocks): New function.
2131         * tree-flow.h (renumber_gimple_stmt_uids_in_blocks): Declare it.
2132         * tree-ssa-loop-ivopts.c (comp_cost): Make COST an integer.
2133         (enum iv_position): Add IP_AFTER_USE and IP_BEFORE_USE.
2134         (dump_cand): Handle them.
2135         (struct iv_cand): New members COST_STEP and AINC_USE.
2136         (stmt_after_increment): Likewise.
2137         (stmt_after_inc_pos): Renamed from stmt_after_ip_original_pos.  All
2138         callers changed.  Use gimple_uid comparison instead of scanning.
2139         (add_candidate_1): When looking for identical candidates, take
2140         AINC_USE into account.  Set it for new candidates.
2141         (force_expr_to_var_cost): Cast target_spill_cost to int.
2142         (get_address_cost): New arguments STMT_AFTER_INC and MAY_AUTOINC.
2143         All callers changed.  Check for availability of autoinc addressing
2144         modes, both in general for a given mode, and in the specific use case.
2145         (get_computation_cost_at): New argument CAN_AUTOINC.  All callers
2146         changed.
2147         (get_computation_cost): Likewise.
2148         (autoinc_possible_for_pair, set_autoinc_for_original_candidates,
2149         add_autoinc_candidates): New static functions.
2150         (add_candidate): Call add_autoinc_candidates for candidates based on
2151         a USE_ADDRESS use.
2152         (find_iv_candidates): Call set_autoinc_for_original_candidates.
2153         (determine_use_iv_cost_address): If we have an autoinc candidate at
2154         the matching use, verify autoinc is possible and subtract the cost
2155         of the candidate's step from the cost.
2156         (determine_iv_cost): Record the cost of the increment in the COST_STEP
2157         member of the candidate.
2158         (tree_ssa_iv_optimize_loop): Swap the calls to determine_iv_costs and
2159         determine_use_iv_costs.  Call renumber_gimple_stmt_uids_in_blocks.
2160
2161 2009-08-09  Douglas B Rupp  <rupp@gnat.com>
2162
2163         * config.build (ia64-hp-*vms*): New target.
2164         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
2165         with ia64-hp-*vms*.
2166         * config.gcc (ia64-hp-*vms*): New target.
2167         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
2168         with ia64-hp-*vms*.
2169         * config.host (ia64-hp-*vms*): New target.
2170         (alpha64-dec-*vms*,alpha*-dec-*vms*): Fix for config/vms and unify
2171         with ia64-hp-*vms*.
2172
2173 2009-08-08  Richard Guenther  <rguenther@suse.de>
2174
2175         PR tree-optimization/40991
2176         * tree-ssa-pre.c (eliminate): Delay purging EH edges.
2177
2178 2009-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
2179
2180         * combine.c (gen_lowpart_or_truncate): Exclude CONST_INTs from
2181         mode check.  Do truncations in an integer mode.
2182         (force_to_mode): Handle subregs for all mode types.  Only do
2183         arithmetic simplifications on integer modes.
2184
2185 2009-08-07  Richard Guenther  <rguenther@suse.de>
2186
2187         PR tree-optimization/40999
2188         * tree-ssa-ccp.c (get_symbol_constant_value): Handle CONST_DECLs.
2189         (maybe_fold_reference): Lookup constant initializers.
2190         (fold_gimple_assign): Likewise.
2191
2192 2009-08-07  Richard Guenther  <rguenther@suse.de>
2193
2194         * tree-ssa.c (useless_type_conversion_p_1): Only for types
2195         that require structural equality defer to the langhook.
2196
2197 2009-08-07  Martin Jambor  <mjambor@suse.cz>
2198
2199         * ipa-prop.h (enum jump_func_type): New value IPA_JF_ANCESTOR, changed
2200         comments.
2201         (struct ipa_pass_through_data): New type.
2202         (struct ipa_ancestor_jf_data): New type.
2203         (union jump_func_value): Removed field formal_id, added fields
2204         pass_through and ancestor.
2205         (struct ipa_param_call_note): Changed type of formal_id to int from
2206         unsigned.
2207         * ipa-prop.c (ipa_print_node_jump_functions): Print pass through with
2208         operations jump functions and ancestor jump functions.
2209         (compute_complex_pass_through): New function.
2210         (compute_scalar_jump_functions): Call compute_complex_pass_through,
2211         reflect changes in the jump function strucutre.
2212         (update_jump_functions_after_inlining): Ignore complex pass-through
2213         and ancestor jump functions.
2214         * ipa-cp.c (ipcp_lattice_from_jfunc): Added support for ancestor and
2215         polynomial pass-through with operation jump functions.
2216
2217 2009-08-07  Jakub Jelinek  <jakub@redhat.com>
2218
2219         * dwarf2out.c (output_fde): When doing hot/cold partitioning, use
2220         fde->dw_fde_begin as begin label instead of hot/cold label.
2221         Use LLSDAC label instead of LLSDA for second section lsda.
2222         (dwarf2out_do_cfi_startproc): Add SECOND argument.  Use LLSDAC
2223         label instead of LLSDA if it is true.
2224         (dwarf2out_begin_prologue, dwarf2out_switch_text_section): Adjust
2225         callers.
2226         * except.c (add_call_site, dw2_size_of_call_site_table): Add
2227         SECTION argument.  Use it as index into crtl->eh.call_site_record
2228         array.
2229         (dw2_output_call_site_table): Likewise.  Add CS_FORMAT argument,
2230         use it to determine how to print table entries instead of using
2231         #ifdef HAVE_AS_LEB128.  For SECTION > 0 use hot resp. cold
2232         label instead of normal begin label as base.
2233         (sjlj_assign_call_site_values): Adjust add_call_site caller.
2234         (convert_to_eh_region_ranges): When doing hot/cold partitioning,
2235         ensure no EH range spans between sections and that landing pads
2236         are always in the corresponding section.
2237         (sjlj_size_of_call_site_table, sjlj_output_call_site_table): Adjust
2238         for crtl->eh.call_site_record being an array rather than scalar.
2239         (output_one_function_exception_table): New function, copied
2240         from output_function_exception_table.  Adjust
2241         dw2_size_of_call_site_table, dw2_output_call_site_table
2242         callers.  For SECOND section use *C suffixed labels.
2243         (output_function_exception_table): Call
2244         output_one_function_exception_table and, when doing hot/cold
2245         partitioning, also another time for the second section.
2246         * opts.c: Include except.h.
2247         (decode_options): Allow -freorder-blocks-and-partition with
2248         exceptions, unless SJLJ or TARGET_UNWIND_INFO.
2249         * Makefile.in (opts.o): Depend on $(EXCEPT_H).
2250         * function.h (struct rtl_eh): Change call_site_record from
2251         scalar into array of 2 elements.
2252
2253 2009-08-07  Martin Jambor  <mjambor@suse.cz>
2254
2255         * ipa-prop.c (count_formal_params_1): New function.
2256         (ipa_get_vector_of_formal_parms): New function.
2257         (get_vector_of_formal_parm_types): New function.
2258         (ipa_modify_formal_parameters): New function.
2259         (ipa_modify_call_arguments): New function.
2260         (index_in_adjustments_multiple_times_p): New function.
2261         (ipa_combine_adjustments): New function.
2262         (ipa_dump_param_adjustments): New function.
2263         * ipa-prop.h (struct ipa_parm_adjustment): New type.
2264         (ipa_get_vector_of_formal_parms): Declare.
2265         (ipa_modify_formal_parameters): Declare.
2266         (ipa_modify_call_arguments): Declare.
2267         (ipa_combine_adjustments): Declare.
2268         (ipa_dump_param_adjustments): Declare.
2269         (build_ref_for_offset): Declare.
2270         * Makefile.in (tree-sra.o): Add ipa-prop.h to dependencies.
2271         * tree-sra.c: Include ipa-prop.c.
2272         (build_ref_for_offset): Make public.
2273
2274 2009-08-06  Neil Vachharajani  <nvachhar@gmail.com>
2275
2276         * value-prof.c (init_pid_map): Replace xmalloc with XCNEWVEC.
2277
2278 2009-08-06  Thomas Schwinge  <tschwinge@gnu.org>
2279
2280         * gcc/doc/extend.texi (__builtin_extract_return_address)
2281         (__builtin_frob_return_address): Document.
2282
2283 2009-08-06  Paul Brook  <paul@codesourcery.com>
2284
2285         * config/arm/lib1funcs.asm (ARM_DIV_BODY): Add Thumb-2 implementation.
2286         (udivsi3, aeabi_uidivmod, divsi3, aeabi_idivmod): Only use Thumb-1
2287         implementation on ARMv6-M.
2288
2289 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2290
2291         * doc/extend.texi (pcs): Document new attribute for ARM.
2292
2293 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2294
2295         * arm.c (pcs_attribute_args): Comment out unsupported attribute
2296         variants.
2297
2298 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2299
2300         * arm.c (arm_handle_pcs_attribute): Pass the entire name object to
2301         warning ().
2302
2303 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2304
2305         * arm.c (arm_handle_pcs_attribute): Use %qE in warning.
2306
2307 2009-08-06  Richard Earnshaw  <rearnsha@arm.com>
2308
2309         Merge ARM/hard_vfp_branch to trunk.
2310
2311         2009-08-04  Richard Earnshaw  <rearnsha@arm.com>
2312
2313         * arm.c (libcall_eq): New function.
2314         (libcall_hash): New function.
2315         (add_libcall): New function.
2316         (arm_libcall_uses_aapcs_base): New function.
2317         (arm_libcall_value): Use arm_libcall_uses_aapcs_base to check for
2318         libcalls using the base PCS.
2319         (arm_init_cumulative_args): Likewise.
2320
2321         2009-07-20  Joseph Myers  <joseph@codesourcery.com>
2322
2323         * config/arm/arm.c (arm_libcall_value, arm_init_cumulative_args):
2324         Use base ABI for conversion libfuncs between HFmode and SFmode.
2325
2326         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
2327
2328         * config/arm/arm.c (aapcs_vfp_sub_candidate): Use V2SImode and
2329         V4SImode as representatives of all 64-bit and 128-bit vector
2330         types.  Allow vector types without vector modes.
2331         (aapcs_vfp_is_call_or_return_candidate): Handle vector types
2332         without vector modes like BLKmode.
2333         (aapcs_vfp_allocate): Handle TImode for non-TARGET_NEON like
2334         BLKmode.  Avoid unsupported vector modes or TImode moves for
2335         non-TARGET_NEON.
2336         (aapcs_vfp_allocate_return_reg): Likewise.
2337         (arm_vector_mode_supported_p): Only support V2SImode, V4HImode and
2338         V8QImode if TARGET_NEON || TARGET_IWMMXT.
2339
2340         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
2341
2342         * config/arm/arm.c (arm_handle_pcs_attribute): New.
2343         (arm_get_pcs_model): Pass attribute arguments to
2344         arm_pcs_from_attribute.
2345         (arm_init_cumulative_args): Use base AAPCS for conversions from
2346         floating-point types to DImode.
2347         (arm_attribute_table): Add pcs attribute.
2348         (arm_handle_pcs_attribute): New.
2349         * config/arm/bpabi.h (DECLARE_LIBRARY_RENAMES): When renaming
2350         conversions from floating-point types to DImode, also declare them
2351         to use base AAPCS and declare functions they call to use base
2352         AAPCS and their RTABI names.
2353
2354         2009-05-12  Joseph Myers  <joseph@codesourcery.com>
2355
2356         * doc/invoke.texi (-mfloat-abi=@var{name}): Remove statement about
2357         -mfloat-abi=hard not being supported for VFP.
2358
2359         2009-05-11  Kazu Hirata  <kazu@codesourcery.com>
2360
2361         * config/sparc/sparc.c (sparc_emit_float_lib_cmp): Pass a libcall
2362         SYMBOL_REF to hard_libcall_value.
2363
2364         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
2365             Richard Earnshaw  <rearnsha@arm.com>
2366
2367         * config/arm/arm.c (aapcs_layout_arg): Once a co-processor argument
2368         has been put on the stack, all remaining co-processory arguments for
2369         that co-processor also go on the stack.
2370
2371         2009-03-05  Joseph Myers  <joseph@codesourcery.com>
2372
2373         * config/arm/arm.c (arm_return_in_memory): Handle returning
2374         vectors of suitable size in registers also for AAPCS case.
2375
2376         2009-01-13  Richard Earnshaw <rearnsha@arm.com>
2377
2378         * doc/tm.texi (TARGET_LIBCALL_VALUE): Add missing end statement.
2379
2380         2008-12-09  Richard Earnshaw <rearnsha@arm.com>
2381
2382         ARM Hard-VFP calling convention
2383         * target-def.h (TARGET_LIBCALL_VALUE): New hook.
2384         * target.h (gcc_target): Add libcall_value to table of call hooks.
2385         * targhooks.h (default_libcall_value): Default implementation.
2386         * targhooks.c (default_libcall_value): Likewise.
2387         * doc/tm.texi (TARGET_LIBCALL_VALUE): Document it.
2388         * optabs.c (expand_unop): Use it.
2389         * expr.h (hard_libcall_value): Pass the function RTX through.
2390         * calls.c (emit_library_call_value_1): Update call to
2391         hard_libcall_value.
2392         * explow.c (hard_libcall_value): Use new target hook.
2393         * testsuite/lib/target-supports.exp
2394         (check_effective_target_arm_hard_vfp_ok): New hook.
2395         (check_effective_target_arm_neon_ok): Improve test for neon
2396         availability.
2397         * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant.
2398         * config/arm/arm.c: Include cgraph.h
2399         (TARGET_FUNCTION_VALUE): Override default hook.
2400         (arm_pcs_default): New variable.
2401         (arm_override_options): Don't fault hard calling convention with VFP.
2402         Add support for AAPCS variants.
2403         (arm_function_value): Make static.  Handle AAPCS variants.
2404         (arm_libcall_value): New function.
2405         (arm_apply_result_size): Handle VFP registers in results.
2406         (arm_return_in_memory): Rework all AAPCS variants; handle hard-vfp
2407         conventions.
2408         (pcs_attribute_args): New variable.
2409         (arm_pcs_from_attribute): New function.
2410         (arm_get_pcs_model): New function.
2411         (aapcs_vfp_cum_init): New function.
2412         (aapcs_vfp_sub_candidate): New function.
2413         (aapcs_vfp_is_return_candidate): New function.
2414         (aapcs_vfp_is_call_candidate): New function.
2415         (aapcs_vfp_allocate): New function.
2416         (aapcs_vfp_allocate_return_reg): New function.
2417         (aapcs_vfp_advance): New function.
2418         (aapcs_cp_arg_layout): New variable.
2419         (aapcs_select_call_coproc): New function.
2420         (aapcs_select_return_coproc): New function.
2421         (aapcs_allocate_return_reg): New function.
2422         (aapcs_libcall_value): New function.
2423         (aapcs_layout_arg): New function.
2424         (arm_init_cumulative_args): Initialize AAPCS args data.
2425         (arm_function_arg): Handle AAPCS variants using new interface.
2426         (arm_arg_parital_bytes): Likewise.
2427         (arm_function_arg_advance): New function.
2428         (arm_function_ok_for_sibcall): Ensure that sibling calls agree on
2429         calling conventions.
2430         (arm_setup_incoming_varargs): Handle new AAPCS args data.
2431         * arm.h (NUM_VFP_ARG_REGS): Define.
2432         (LIBCALL_VALUE): Update.
2433         (FUNCTION_VALUE): Delete.
2434         (FUNCTION_VALUE_REGNO_P): Add VFP regs.
2435         (arm_pcs): New enum.
2436         (CUMULATIVE_ARGS): New data to support AAPCS argument marshalling.
2437         (FUNCTION_ARG_ADVANCE): Call arm_function_arg_advance.
2438         (FUNCTION_ARG_REGNO_P): Add VFP regs.
2439         * arm-protos.h (arm_function_arg_advance): Add.
2440         (aapcs_libcall_value): Add.
2441         (arm_function_value): Delete.
2442
2443 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
2444             H.J. Lu  <hongjiu.lu@intel.com>
2445
2446         PR target/40957
2447         * config/i386/i386.c (standard_sse_mode_p): Remove.
2448         (standard_sse_constant_p): Return 2 for integer mode
2449         vector_all_ones_operand when SSE2 is enabled.
2450         (standard_sse_constant_opcode)<case 2>: Always return [v]pcmpeqd.
2451         (ix86_expand_vector_move): Do not check for negative values from
2452         standard_sse_constant_p.
2453
2454 2009-08-06  Richard Guenther  <rguenther@suse.de>
2455
2456         * tree-ssa.c (useless_type_conversion_p_1): Make function and
2457         array type comparisons frontend independent.
2458         * Makefile.in (tree-ssa.o): Add $(TARGET_H) dependency.
2459         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Always fill
2460         out array reference lower bound and element size operands.
2461         (ao_ref_init_from_vn_reference): Properly compute the offset
2462         for ARRAY_RANGE_REF.
2463         (vn_reference_fold_indirect): Fill out array reference lower
2464         bound and element size operands.
2465         * tree-ssa-pre.c (phi_translate_1): Fail if we have to translate
2466         a non gimple valued reference operand which can happen for
2467         array reference lower bound or element size.
2468         (create_component_ref_by_pieces_1): Properly generate the
2469         element size operand for array references.
2470
2471 2009-08-06  Richard Guenther  <rguenther@suse.de>
2472
2473         PR tree-optimization/40964
2474         * tree.c (iterative_hash_host_wide_int): Export.
2475         * tree.h (iterative_hash_host_wide_int): Declare.
2476         * tree-ssa-structalias.c (heapvar_map): New struct.
2477         (heapvar_map_eq): New function.
2478         (heapvar_map_hash): Likewise.
2479         (heapvar_lookup): Adjust.
2480         (heapvar_insert): Likewise.
2481         (make_constraint_from_heapvar): Allow multiple heap variables
2482         per decl at different offsets.
2483         (init_alias_heapvars): Adjust.
2484
2485 2009-08-04  David Daney  <ddaney@caviumnetworks.com>
2486
2487         * config/mips/mips.h (TARGET_SYNC_AFTER_SC): New macro.
2488         * mips_output_sync_loop (mips_output_sync_loop): Only emit
2489         trailing sync if TARGET_SYNC_AFTER_SC.
2490
2491 2009-08-05  David Daney  <ddaney@caviumnetworks.com>
2492
2493         * gcc/config/mips/sync.md (sync_compare_and_swap<mode>,
2494         compare_and_swap_12, sync_add<mode>, sync_<optab>_12,
2495         sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12,
2496         sync_old_nand_12, sync_new_nand_12, sync_sub<mode>,
2497         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
2498         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
2499         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
2500         sync_new_nand<mode>, sync_lock_test_and_set<mode>,
2501         test_and_set_12): Rewrite calls to mips_output_sync_loop.
2502         * gcc/config/mips/mips-protos.h (mips_output_sync_loop): Make
2503         the prototype declaration match the definition.
2504         * gcc/config/mips/mips.c (mips_output_sync_loop):  Emit sync
2505         instructions explicitly.  Add barrier_before and operands
2506         parameters.
2507         * gcc/config/mips/mips.h (MIPS_COMPARE_AND_SWAP,
2508         MIPS_COMPARE_AND_SWAP_12, MIPS_SYNC_OP, MIPS_SYNC_OP_12,
2509         MIPS_SYNC_OLD_OP_12, MIPS_SYNC_NEW_OP_12, MIPS_SYNC_OLD_OP,
2510         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
2511         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE,
2512         MIPS_SYNC_EXCHANGE_12): Remove sync instructions.
2513
2514 2009-08-05  Andrew Pinski  <pinskia@gmail.com>
2515
2516         * tree-ssa-alias.c: Fix intervals to use [) syntax.
2517
2518 2009-08-05  Uros Bizjak  <ubizjak@gmail.com>
2519             Mikulas Patocka  <mikulas@artax.karlin.mff.cuni.cz>
2520
2521         PR target/40906
2522         * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
2523         source operand.
2524
2525 2009-08-05  Jakub Jelinek  <jakub@redhat.com>
2526
2527         PR rtl-optimization/40924
2528         * dse.c (canon_address): Before calling cselib_expand_value_rtx
2529         make sure canon_rtx (mem_address) isn't simpler than
2530         canon_rtx (expanded_mem_address).
2531
2532 2009-08-05  Li Feng  <nemokingdom@gmail.com>
2533
2534         * graphite-sese-to-poly.c (build_pbb_drs): Remove build alias set
2535         for each poly_bb_p.
2536         (build_scop_drs): Build alias set for each SCoP.
2537
2538 2009-08-04  Sandra Loosemore  <sandra@codesourcery.com>
2539
2540         * doc/invoke.texi (MIPS Options): Document new 1004K -march options.
2541         * config/mips/mips.c (mips_cpu_info_table): Add 1004K cores.
2542         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Add pattern for 1004K.
2543         (MIPS_ARCH_FLOAT_SPEC): Likewise.
2544         (BASE_DRIVER_SELF_SPECS): Likewise.
2545
2546 2009-08-04  Andrew Pinski  <pinskia@gmail.com>
2547
2548         * tree-ssa-alias.c: Fix some comment typos.
2549
2550 2009-08-04  Kaz Kojima  <kkojima@gcc.gnu.org>
2551
2552         * config/sh/linux-atomic.asm (ATOMIC_BOOL_COMPARE_AND_SWAP,
2553         ATOMIC_OP_AND_FETCH, ATOMIC_COMBOP_AND_FETCH): Define.
2554
2555 2009-08-03  Janis Johnson  <janis187@us.ibm.com>
2556
2557         PR c/39902
2558         * simplify-rtx.c (simplify_binary_operation_1): Disable
2559         simplifications for decimal float operations.
2560
2561 2009-08-03  Jakub Jelinek  <jakub@redhat.com>
2562
2563         PR middle-end/40943
2564         * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
2565         operand of INDIRECT_REF.
2566
2567 2009-08-03  Uros Bizjak  <ubizjak@gmail.com>
2568
2569         * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
2570         constants referencing TLS symbols.
2571
2572 2009-08-03  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
2573
2574         * config/sh/linux-atomic.asm (ATOMIC_COMPARE_AND_SWAP): Rename
2575         __sync_compare_and_swap_* to __sync_val_compare_and_swap_*.
2576
2577 2009-08-03  Richard Guenther  <rguenther@suse.de>
2578
2579         * tree.c (make_vector_type): Build a main variant first,
2580         get the canonical one and then build the variant.
2581         * tree-ssa.c (useless_type_conversion_p_1): Handle
2582         fixed-point types.
2583         (useless_type_conversion_p): Conversions to pointers to
2584         incomplete record types are useless.
2585
2586 2009-08-03  Richard Guenther  <rguenther@suse.de>
2587
2588         * tree-cfg.c (pass_warn_unused_result): Mark name that no dump
2589         file will be created.
2590         * omp-low.c (pass_diagnose_omp_blocks): Likewise.
2591         * toplev.c (compile_file): Adjust comment.
2592
2593 2009-08-03  Kaz Kojima  <kkojima@gcc.gnu.org>
2594
2595         * config/sh/sh-protos.h (sh_promote_function_mode): Remove.
2596         * config/sh/sh.c (sh_promote_function_mode): Wrap long lines.
2597         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2598         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
2599         (sh_promote_function_mode): Fix typo.
2600
2601 2009-08-03  Andreas Krebbel  <krebbel1@de.ibm.com>
2602
2603         * explow.c (promote_mode): Mark TYPE and PUNSIGNEDP as possibly unused.
2604
2605 2009-08-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2606
2607         * pa.c (pa_promote_function_mode): Remove ATTRIBUTE_UNUSED from
2608         declaration arguments.
2609
2610 2009-08-02  Uros Bizjak  <ubizjak@gmail.com>
2611
2612         * config/i386/i386.c (ix86_expand_fp_compare): Use const0_rtx instead
2613         of GEN_INT (0x00) and const1_rtx instead of GEN_INT (0x01).
2614         (ix86_split_ashl): Ditto.
2615         (ix86_expand_vector_init_one_nonzero): Ditto.
2616         (ix86_expand_vector_set): Ditto.
2617         (ix86_expand_reduc_v4sf): Ditto.
2618
2619 2009-08-02  Paolo Bonzini  <bonzini@gnu.org>
2620
2621         * explow.c (promote_function_mode): Remove assert.
2622         * config/sh/sh.c (sh_promote_function_mode): Declare.
2623
2624 2009-08-01  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2625
2626         * config/pa/pa.c (pa_promote_function_mode): Declare.
2627         Change to static.  Fix promote_mode call.
2628
2629         * gthr-dce.h (CONST_CAST2): Define if not defined.
2630         (__gthread_setspecific): Use CONST_CAST2 to fix warning.
2631
2632         * config.gcc (hppa[12]*-*-hpux10*): Add stdint support.
2633
2634 2009-08-01  Paolo Bonzini  <bonzini@gnu.org>
2635
2636         * expr.c (store_constructor): Use promote_decl_mode.  Remove
2637         now write-only variable unsignedp.
2638         (expand_expr_real_1): Use promote_decl_mode.
2639         * expr.h (promote_function_mode, promote_decl_mode): New.
2640         (promote_mode): Remove last argument.
2641         * function.c (assign_temp): Drop last argument of promote_mode.
2642         (assign_parm_find_data_types): Use promote_function_mode.
2643         (assign_parm_setup_reg): Likewise.
2644         (expand_function_end): Use promote_function_mode.
2645         * calls.c (initialize_argument_information): Use promote_function_mode.
2646         (precompute_arguments): Use promote_mode instead of checking if
2647         only PROMOTE_FUNCTION_MODE is defined.
2648         (expand_call): When making sibcall decisions, use promote_function_mode.
2649         Below, remove an if for targetm.calls.promote_function_return and
2650         and use promote_function_mode.
2651         (emit_library_call_value_1): Use promote_function_mode, fix bug
2652         where promote_mode was passed FOR_CALL == 0 for a return value in an
2653         assertion.
2654         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
2655         * explow.c (promote_function_mode, promote_decl_mode): New.
2656         (promote_mode): Keep only the FOR_CALL == 0 case.
2657         * combine.c (setup_incoming_promotion): Remove test of
2658         promote_function_args.  Use promote_function_mode.
2659         * stmt.c (expand_value_return): Use promote_decl_mode.
2660         (expand_decl): Use promote_decl_mode.
2661
2662         * expr.c (store_constructor): Use promote_decl_mode.  Remove
2663         now write-only variable unsignedp.
2664         (expand_expr_real_1): Use promote_decl_mode.
2665         * expr.h (promote_function_mode, promote_decl_mode): New.
2666         (promote_mode): Remove last argument.
2667         * function.c (assign_temp): Drop last argument of promote_mode.
2668         (assign_parm_find_data_types): Use promote_function_mode.
2669         (assign_parm_setup_reg): Likewise.
2670         (expand_function_end): Use promote_function_mode.
2671         * calls.c (initialize_argument_information): Use promote_function_mode.
2672         (precompute_arguments): Use promote_mode instead of checking if
2673         only PROMOTE_FUNCTION_MODE is defined.
2674         (expand_call): When making sibcall decisions, use promote_function_mode.
2675         Below, remove an if for targetm.calls.promote_function_return and
2676         and use promote_function_mode.
2677         (emit_library_call_value_1): Use promote_function_mode, fix bug
2678         where promote_mode was passed FOR_CALL == 0 for a return value in an
2679         assertion.
2680         * cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
2681         * explow.c (promote_function_mode, promote_decl_mode): New.
2682         (promote_mode): Keep only the FOR_CALL == 0 case.
2683         * combine.c (setup_incoming_promotion): Remove test of
2684         promote_function_args.  Use promote_function_mode.
2685         * stmt.c (expand_value_return): Use promote_decl_mode.
2686         (expand_decl): Use promote_decl_mode.
2687
2688         * explow.c (promote_function_mode): Just call the target hook.
2689         * targhooks.c (default_promote_function_mode,
2690         default_promote_function_mode_always_promote): New.
2691         * targhooks.h (default_promote_function_mode,
2692         default_promote_function_mode_always_promote): Declare.
2693         * target.h (promote_function_args, promote_function_return): Remove.
2694         (promote_function_mode): New.
2695         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
2696         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2697         (TARGET_PROMOTE_FUNCTION_MODE): New.
2698         (TARGET_CALLS): Adjust.
2699         * system.h (TARGET_PROMOTE_FUNCTION_ARGS,
2700         TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
2701
2702         * config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
2703         * config/s390/s390.c (s390_promote_function_mode): ... here,
2704         with pointer handling.
2705         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2706         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2707
2708         * config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
2709         * config/sparc/sparc.c (sparc_promote_function_mode): ... here,
2710         with pointer handling.
2711         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2712         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2713
2714         * config/sh/sh-protos.h (sh_promote_function_mode): New.
2715         * config/sh/sh.c (sh_promote_function_mode): New.
2716         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2717         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2718
2719         * config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
2720         * config/cris/cris.c (cris_promote_function_mode): ... here.
2721         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2722         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
2723
2724         * config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
2725         * config/mmix/mmix.c (mmix_promote_function_mode): ... here.
2726         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2727         (TARGET_PROMOTE_FUNCTION_ARGS): Remove.
2728
2729         * config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
2730         * config/arm/arm.c (arm_promote_function_mode): ... here, without
2731         complex type handling.
2732         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2733         (TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2734
2735         * config/pa/pa.c (pa_promote_function_mode): New.
2736         (TARGET_PROMOTE_FUNCTION_MODE): Define.
2737         (TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2738
2739         * config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
2740         TARGET_PROMOTE_FUNCTION_RETURN): Remove.
2741         (TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
2742         * config/xtensa/xtensa.c: Likewise.
2743         * config/stormy16/stormy16.c: Likewise.
2744         * config/iq2000/iq2000.c: Likewise.
2745         * config/rs6000/rs6000.c: Likewise.
2746         * config/picochip/picochip.c: Likewise.
2747         * config/arc/arc.c: Likewise.
2748         * config/mcore/mcore.c: Likewise.
2749         * config/score/score.c: Likewise.
2750         * config/mips/mips.c: Likewise.
2751         * config/bfin/bfin.c: Likewise.
2752         * config/ia64/ia64.c: Likewise (disabled though).
2753
2754         * config/frv/frv.h: Remove pointless remark.
2755
2756         * doc/tm.texi (PROMOTE_FUNCTION_MODE,
2757         TARGET_PROMOTE_FUNCTION_ARGS,
2758         TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
2759         (TARGET_PROMOTE_FUNCTION_MODE): ... this.
2760
2761 2009-08-01  Sebastian Pop  <sebastian.pop@amd.com>
2762
2763         * doc/invoke.texi (-fgraphite-force-parallel): Renamed
2764         -floop-parallelize-all.
2765         * toplev.c (process_options): Rename flag_graphite_force_parallel to
2766         flag_loop_parallelize_all.
2767         * tree-ssa-loop.c (gate_graphite_transforms): Same.
2768         * graphite.c (graphite_transform_loops): Same.
2769         * common.opt: Same.
2770         * graphite-poly.c (apply_poly_transforms): Same.
2771
2772 2009-07-31  Richard Earnshaw  <rearnsha@arm.com>
2773
2774         PR tree-optimization/40914
2775         * ipa-prop.c (ipa_get_ptr_load_param): New argument use_delta,
2776         if set, then check the delta field of the PMF record.
2777         (ipa_get_stmt_member_ptr_load_param): Propagate new param use_delta.
2778         (ipa_analyze_call_uses): Handle machines where the vbit for a PMF
2779         call is stored in the delta.
2780
2781 2009-07-31  Adam Nemet  <anemet@caviumnetworks.com>
2782
2783         * config/mips/mips.md (*clear_upper32_dext): New pattern.
2784
2785 2009-07-31  Uros Bizjak  <ubizjak@gmail.com>
2786
2787         * config/i386/bsd.h (ASM_BYTE): New define.
2788         * config/i386/darwin.h (ASM_BYTE): Rename from ASM_BYTE_OP.
2789         * config/i386/att.h (ASM_BYTE): New define. Use ASM_BYTE instead of
2790         .byte.  Use fputs or putc instead of fprintf where appropriate.
2791         * config/i386/i386-interix.h: Use ASM_BYTE instead of .byte.  Use
2792         fputs or putc instead of fprintf where appropriate.
2793         * config/i386/i386elf.h: Ditto.
2794         * config/i386/sysv4.h: Ditto.
2795
2796         * config/i386/i386.c (TARGET_ASM_BYTE_OP): New define.
2797         * config/i386/i386.md (x86_sahf_1): Use ASM_BYTE instead of .byte.
2798         (*tls_global_dynamic_64): Ditto.
2799
2800 2009-07-31  Christian Bruel  <christian.bruel@st.com>
2801
2802         * gcc/config.gcc (sh*-*-elf): test with_libgloss.
2803
2804 2009-07-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
2805
2806         * config/arm/arm.c (arm_arm_address_cost): Fix typo.
2807         Remove dead code for MINUS.
2808
2809 2009-07-31  Anthony Green  <green@moxielogic.com>
2810
2811         * config/moxie/moxie.c (moxie_expand_prologue): Use $r5 instead of
2812         $r12 in prologue.
2813         (moxie_expand_epilogue): Ditto for epilogue.
2814         (moxie_setup_incoming_varargs): ABI change.  Use 5 registers for
2815         incoming arguments.
2816         (moxie_function_arg): Ditto.
2817         (moxie_pass_by_reference): Ditto.
2818         (moxie_arg_partial_bytes): Ditto.
2819         * config/moxie/moxie.h (CALL_USED_REGISTERS): Ditto.
2820         (FUNCTION_ARG_ADVANCE) Ditto.
2821         (REG_PARM_STACK_SPACE) Ditto.
2822         (FUNCTION_ARG_REGNO_P) Dito.
2823
2824         * config.gcc: Add moxie linux config support.
2825         * gcc/config/moxie/uclinux.h: New file.
2826
2827 2009-07-31  DJ Delorie  <dj@redhat.com>
2828
2829         * config/sh/sh.md (UNSPECV_SP_SWITCH_B): New.
2830         (UNSPECV_SP_SWITCH_E): New.
2831         (sp_switch_1): Change to an unspec.
2832         (sp_switch_2): Change to an unspec.  Don't use post-inc when we
2833         replace $r15.
2834         * config/sh/sh.c (sh_expand_prologue): Use the constant pool to
2835         reference the new stack's address
2836
2837 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2838
2839         * Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
2840         graphite-clast-to-gimple.o, graphite-dependences.o,
2841         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
2842         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
2843         (graphite-blocking.o,
2844         graphite-clast-to-gimple.o, graphite-dependences.o,
2845         graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
2846         graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
2847         * cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
2848         * cfgloop.h (struct loop): Add can_be_parallel field.
2849         * common.opt (fgraphite-identity): Moved up.
2850         (fgraphite-force-parallel): New flag.
2851         * graphite.c: Rewrite.
2852         * graphite.h: Rewrite.
2853         * passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
2854         after Graphite.
2855         * toplev.c (graphite_out_file): New file descriptor.
2856         (graphite_in_file): New.
2857         (process_options): flag_graphite_force_parallel cannot be used without
2858         Graphite.
2859         * tree-ssa-loop.c: Include toplev.h.
2860         (gate_graphite_transforms): Enable flag_graphite for
2861         flag_graphite_force_parallel.
2862
2863 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2864
2865         * ChangeLog.graphite: New.
2866         * graphite-blocking.c: New.
2867         * graphite-clast-to-gimple.c: New.
2868         * graphite-clast-to-gimple.h: New.
2869         * graphite-dependences.c: New.
2870         * graphite-dependences.h: New.
2871         * graphite-interchange.c: New.
2872         * graphite-poly.c: New.
2873         * graphite-poly.h: New.
2874         * graphite-ppl.c: New.
2875         * graphite-ppl.h: New.
2876         * graphite-scop-detection.c: New.
2877         * graphite-scop-detection.h: New.
2878         * graphite-sese-to-poly.c: New.
2879         * graphite-sese-to-poly.h: New.
2880         * sese.c: New.
2881         * sese.h: New.
2882
2883 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2884
2885         * tree-chrec.c (evolution_function_right_is_integer_cst): New.
2886         * tree-chrec.h (evolution_function_right_is_integer_cst): Declared.
2887
2888 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2889
2890         * tree-chrec.c (operator_is_linear): Handle BIT_NOT_EXPR.
2891         (scev_is_linear_expression): Return false if the evolution is not
2892         affine multivariate.
2893
2894 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2895
2896         * tree-data-ref.c (graphite_find_data_references_in_stmt): New.
2897         * tree-data-ref.h (graphite_find_data_references_in_stmt): Declared.
2898
2899 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2900
2901         * tree-data-ref.c (debug_data_references): New.
2902         (debug_data_reference): New.
2903         * tree-data-ref.h (debug_data_references): Declared.
2904         (debug_data_reference): Declared.
2905
2906 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2907
2908         * tree-data-ref.c (stmt_simple_memref_p: Removed.
2909         * tree-data-ref.h (scop_p): Removed.
2910         (struct data_reference): Remove field scop.
2911         (DR_SCOP): Removed.
2912         (stmt_simple_memref_p): Removed.
2913
2914 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2915
2916         * cfgloop.h (create_empty_loop_on_edge): Pass an extra argument.
2917         * cfgloopmanip.c (create_empty_loop_on_edge): Leave the loop_latch
2918         basic block empty.
2919
2920 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2921
2922         * doc/invoke.texi (-fgraphite-force-parallel): Documented.
2923
2924 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2925
2926         * doc/invoke.texi (-fgraphite-identity): Documented.
2927
2928 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2929
2930         * tree-scalar-evolution.c: Fix comment.
2931         (instantiate_scev_1): Return unknow from scev instantiation if the
2932         result is not above instantiate_below.
2933
2934 2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
2935
2936         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop): Not
2937         static anymore.  Instantiate the symbols that may have been introduced
2938         by chrec_apply.
2939         * tree-scalar-evolution.h (compute_overall_effect_of_inner_loop):
2940         Declared.
2941
2942 2009-07-30  DJ Delorie  <dj@redhat.com>
2943
2944         * config/mep/mep.c (mep_asm_init_sections): Add section flags and
2945         .vliw directive to VLIW sections.
2946
2947 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2948
2949         * Makefile.in (AUTOCONF, ACLOCAL, ACLOCAL_AMFLAGS, aclocal_deps):
2950         New variables.
2951         ($(srcdir)/configure, $(srcdir)/aclocal.m4): New rules.
2952         (AUTOHEADER): New variable.
2953         ($(srcdir)/cstamp-h.in): Use it.
2954
2955 2009-07-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
2956             Pat Haugen  <pthaugen@us.ibm.com>
2957             Revital Eres <ERES@il.ibm.com>
2958
2959         * config/rs6000/vector.md (VEC_F): Add VSX support.
2960         (VEC_A): Ditto.
2961         (VEC_N): Ditto.
2962         (mov<mode>): Ditto.
2963         (vector_load_<mode>): Ditto.
2964         (vector_store_<mode>): Ditto.
2965         (vector GPR move split): Ditto.
2966         (vec_reload_and_plus_<mptrsize>): Ditto.
2967         (vec_reload_and_reg_<mptrsize>): Ditto.
2968         (add<mode>3): Ditto.
2969         (sub<mode>3): Ditto.
2970         (mul<mode>3): Ditto.
2971         (neg<mode>2): Ditto.
2972         (abs<mode>2): Ditto.
2973         (smin<mode>3): Ditto.
2974         (smax<mode>3): Ditto.
2975         (vector_eq<mode>): Ditto.
2976         (vector_gt<mode>): Ditto.
2977         (vector_ge<mode>): Ditto.
2978         (vector_gtu<mode>): Ditto.
2979         (vector_select_<mode>_uns): Ditto.
2980         (vector_eq_<mode>_p): Ditto.
2981         (vector_gt_<mode>_p): Ditto.
2982         (vector_ge_<mode>_p): Ditto.
2983         (vector_gtu_<mode>_p): Ditto.
2984         (cr6_test_for_zero): Ditto.
2985         (cr6_test_for_zero_reverse): Ditto.
2986         (cr6_test_for_lt): Ditto.
2987         (cr6_test_for_lt_reverse): Ditto.
2988         (xor<mode>3): Ditto.
2989         (ior<mode>3): Ditto.
2990         (and<mode>3): Ditto.
2991         (one_cmpl<mode>2): Ditto.
2992         (nor<mode>2): Ditto.
2993         (andc<mode>2): Ditto.
2994         (float<VEC_int<mode>2): Ditto.
2995         (unsigned_float<VEC_int><mode>2): Ditto.
2996         (fix_trunc<mode><VEC_int>2): Ditto.
2997         (fixuns_trunc<mode><VEC_int>2): Ditto.
2998         (vec_init<mode>):
2999         (vec_set<mode>): Ditto.
3000         (vec_extract<mode>): Ditto.
3001         (vec_interleave_highv4sf): Ditto.
3002         (vec_interleave_lowv4sf): Ditto.
3003         (vec_realign_load_<mode>): Ditto.
3004         (vec_shl_<mode>): Ditto.
3005         (vec_shr_<mode>): Ditto.
3006         (div<mode>3): New patterns for VSX.
3007         (vec_interleave_highv2df): Ditto.
3008         (vec_interleave_lowv2df): Ditto.
3009         (vec_pack_trunc_v2df): Ditto.
3010         (vec_pack_sfix_trunc_v2df): Ditto.
3011         (vec_pack_ufix_trunc_v2df): Ditto.
3012         (vec_unpacks_hi_v4sf): Ditto.
3013         (vec_unpacks_lo_v4sf): Ditto.
3014         (vec_unpacks_float_hi_v4si): Ditto.
3015         (vec_unpacks_float_lo_v4si): Ditto.
3016         (vec_unpacku_float_hi_v4si): Ditto.
3017         (vec_unpacku_float_lo_v4si): Ditto.
3018         (movmisalign<mode>): Ditto.
3019         (vector_ceil<mode>2): New patterns for vectorizing math library.
3020         (vector_floor<mode>2): Ditto.
3021         (vector_btrunc<mode>2): Ditto.
3022         (vector_copysign<mode>3): Ditto.
3023
3024         * config/rs6000/predicates.md (easy_vector_constant_msb): New
3025         predicate for setting the high bit in each word, used for copysign.
3026
3027         * config/rs6000/ppc-asm.h (f19): Whitespace.
3028         (f32-f63): Define if VSX.
3029         (v0-v31): Define if Altivec.
3030         (vs0-vs63): Define if VSX.
3031
3032         * config/rs6000/t-rs6000 (MD_INCLUDES): Add power7.md and vsx.md.
3033
3034         * config/rs6000/power7.md: New file, provide tuning parameters for
3035         -mcpu=power7.
3036
3037         * config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Add VSX support.
3038         (rs6000_cpu_cpp_builtins): Ditto.
3039         (altivec_overloaded_builtins): Ditto.
3040         (altivec_resolve_overloaded_builtin): Ditto.
3041
3042         * config/rs6000/rs6000.opt (-mno-vectorize-builtins): Add new
3043         debug switch to disable vectorizing simple math builtin
3044         functions.
3045
3046         * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function):
3047         Vectorize simple math builtin functions.
3048         (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define target
3049         hook to vectorize math builtins.
3050         (rs6000_override_options): Enable -mvsx on -mcpu=power7.
3051         (rs6000_builtin_conversion): Add VSX/power7 support.
3052         (rs6000_builtin_vec_perm): Ditto.
3053         (vsplits_constant): Add support for loading up a vector constant
3054         with just the high bit set in each part.
3055         (rs6000_expand_vector_init): Add VSX/power7 support.
3056         (rs6000_expand_vector_set): Ditto.
3057         (rs6000_expand_vector_extract): Ditto.
3058         (rs6000_emit_move): Ditto.
3059         (bdesc_3arg): Ditto.
3060         (bdesc_2arg): Ditto.
3061         (bdesc_1arg): Ditto.
3062         (rs6000_expand_ternop_builtin): Ditto.
3063         (altivec_expand_builtin): Ditto.
3064         (rs6000_expand_unop_builtin): Ditto.
3065         (rs6000_init_builtins): Ditto.
3066         (altivec_init_builtins): Ditto.
3067         (builtin_function_type): Ditto.
3068         (rs6000_common_init_builtins): Ditto.
3069         (rs6000_handle_altivec_attribute); Ditto.
3070         (rs6000_mangle_type): Ditto.
3071         (rs6000_vector_mode_supported_p): Ditto.
3072         (rs6000_mode_dependent_address): Altivec addresses with AND -16
3073         are mode dependent.
3074
3075         * config/rs6000/vsx.md: New file for VSX support.
3076
3077         * config/rs6000/rs6000.h (EASY_VECTOR_MSB): New macro for
3078         identifing values with just the most significant bit set.
3079         (enum rs6000_builtins): Add builtins for VSX.  Add simple math
3080         vectorized builtins.
3081
3082         * config/rs6000/altivec.md (UNSPEC_VRFIP): Delete.
3083         (UNSPEC_VRFIM): Delete.
3084         (splitter for loading up vector with most significant bit): New
3085         splitter for vectorizing copysign.
3086         (altivec_vrfiz): Rename from altivec_fturncv4sf2.  Add support for
3087         vectorizing simple math functions.
3088         (altivec_vrfip): Add support for vectorizing simple math functions.
3089         (altivec_vrfim): Ditto.
3090         (altivec_copysign_v4sf3): New insn for Altivec copysign support.
3091
3092         * config/rs6000/rs6000.md (UNSPEC_BPERM): New constant.
3093         (power7.md, vsx.md): Include for power7 support.
3094         (copysigndf3): Use VSX instructions if -mvsx.
3095         (negdf2_fpr): Ditto.
3096         (absdf2_fpr): Ditto.
3097         (nabsdf2_fpr): Ditto.
3098         (adddf3_fpr): Ditto.
3099         (subdf3_fpr): Ditto.
3100         (muldf3_fpr): Ditto.
3101         (divdf3_fpr): Ditto.
3102         (fix_truncdfdi2_fpr): Ditto.
3103         (cmpdf_internal1): Ditto.
3104         (fred, fred_fpr): Convert into expander/insn to add VSX support.
3105         (btruncdf2, btruncdf2_fpr): Ditto.
3106         (ceildf2, ceildf2_fpr): Ditto.
3107         (floordf2, floordf2_fpr): Ditto.
3108         (floatdidf2, floatdidf2_fpr): Ditto.
3109         (fmadddf4_fpr): Name insn.  Use VSX instructions if -mvsx.
3110         (fmsubdf4_fpr): Ditto.
3111         (fnmadddf4_fpr_1): Ditto.
3112         (fnmadddf4_fpr_2): Ditto.
3113         (fnmsubdf4_fpr_1): Ditto.
3114         (fnmsubdf4_fpr_2): Ditto.
3115         (fixuns_truncdfdi2): Add expander for VSX support.
3116         (fix_truncdfdi2): Ditto.
3117         (fix_truncdfsi2): Ditto.
3118         (ftruncdf2): Ditto.
3119         (btruncsf2): Whitespace.
3120         (movdf_hardfloat32): Add support for VSX registers.
3121         (movdf_softfloat32): Ditto.
3122         (movdf_hardfloat64): Ditto.
3123         (movdf_hardfloat64_mfpgpr): Ditto.
3124         (movdf_softfloat64): Ditto.
3125         (movti splitters): Add check for vector registers supporting
3126         TImode in the future.
3127         (bpermd): Add power7 bpermd instruction.
3128
3129         * config/rs6000/altivec.h (vec_div): Define if VSX.
3130         (vec_mul): Ditto.
3131         (vec_msub): Ditto.
3132         (vec_nmadd): Ditto.
3133         (vec_nearbyint): Ditto.
3134         (vec_rint): Ditto.
3135         (vec_sqrt): Ditto.
3136         (all predicates): Use the generic builtin function, and not the V4SF
3137         specific function so that the predicates will work with VSX's V2DF.
3138         (vec_all_*): Ditto.
3139         (vec_any_*): Ditto.
3140
3141         * doc/extend.texi (PowerPC Altivec/VSX Built-in Functions):
3142         Document new VSX functions and types.
3143
3144         * doc/invoke.texi (PowerPc options): Document -mpopcntd, -mvsx
3145         switches.
3146
3147         * doc/md.texi (PowerPC constraints): Document "wd", "wf", "ws",
3148         "wa", and "j" constraints.  Modify "v" to talk about Altivec
3149         instead of just vector.
3150
3151 2009-07-30  Andrew MacLeod  <amacleod@redhat.com>
3152
3153         PR debug/26475
3154         * tree-into-ssa.c (insert_phi_nodes_for, rewrite_add_phi_arguments): Set
3155         location for phi arguments.
3156         (rewrite_update_phi_arguments): Find locations for reaching defs.
3157         * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis):
3158         Add location to add_phi_arg calls.
3159         * tree-loop-districbution.c (update_phis_for_loop_copy): Add locations.
3160         * tree-ssa-loop-manip.c (create_iv, add_exit_phis_edge,
3161         split_loop_exit_edge, tree_transform_and_unroll_loop): Add locations.
3162         * tree-tailcall.c (add_successor_phi_arg, eliminate_tail_call,
3163         create_tailcall_accumulator, tree_optimize_tail_calls_1): Add locations.
3164         * tree.h (struct phi_arg_d): Add location_t to PHI arguments.
3165         * tree-phinodes.c (make_phi_node): Initialize location.
3166         (resize_phi_node): Initialize location to UNKNOWN_LOCATION.
3167         (add_phi_arg): Add location parameter.
3168         (remove_phi_arg_num): Move location when moving phi argument.
3169         * omp-low.c (expand_parallel_call, expand_omp_for_static_chunk): Set
3170         location.
3171         * tree-vect-loop-manip.c (slpeel_update_phis_for_duplicate_loop,
3172         slpeel_update_phi_nodes_for_guard1,
3173         slpeel_update_phi_nodes_for_guard2,
3174         slpeel_tree_duplicate_loop_to_edge_cfg, set_prologue_iterations,
3175         vect_loop_versioning): Set locations.
3176         * tree-parloops.c (create_phi_for_local_result,
3177         transform_to_exit_first_loop, create_parallel_loop): Add locations.
3178         * gimple-pretty-print.c (dump_gimple_phi): Dump lineno's if present.
3179         * tree-vect-loop.c (get_initial_def_for_induction,
3180         vect_create_epilog_for_reduction, vect_finalize_reduction): Add
3181         locations.
3182         * tree-flow-inline.h (gimple_phi_arg_location): New.  Return locus.
3183         (gimple_phi_arg_location_from_edge): New.  Return locus from an edge.
3184         (gimple_phi_arg_set_location): New.  Set locus.
3185         (gimple_phi_arg_has_location): New.  Check for locus.
3186         (redirect_edge_var_map_location): New.  Return locus from var_map.
3187         * tree-vect-data-refs.c (vect_setup_realignment): Set location.
3188         * tree-ssa-phiopt.c (conditional_replacement): Set locus when
3189         combining PHI arguments.
3190         (cond_store_replacement): Set location.
3191         * cfgexpand.c (gimple_assign_rhs_to_tree): Transfer locus if possible.
3192         * grpahite.c (add_loop_exit_phis, add_guard_exit_phis,
3193         scop_add_exit_phis_edge): Add locations.
3194         * tree-cfgcleanup.c (remove_forwarder_block,
3195         remove_forwarder_block_with_phi): Add locations.
3196         * tree-ssa-pre.c (insert_into_preds_of_block): Add locations.
3197         * tree-predcom.c (initialize_root_vars, initialize_root_vars_lm): Add
3198         locations.
3199         * tree-ssa-dce.c (forward_edge_to_pdom): Add locations.
3200         * tree-ssa.c (redirect_edge_var_map_add, ssa_redirect_edge,
3201         flush_pending_stmts): Add source location.
3202         * lambda-code.c (perfect_nestify): Maintain location stack with argument
3203         stack to preserve locations.
3204         * tree-vect-stmts.c (vectorizable_load): Add location.
3205         * tree-inline.c (copy_phis_for_bb): Copy locus.
3206         (setup_one_parameter): Add call locus to inlined parameter stmts.
3207         (initialize_inlined_parameters): Pass in call location as parameter
3208         assignment locus.
3209         (tree_function_versioning): Pass location to setup_one_parameter.
3210         * tree-ssa-phiprop.c (phiprop_insert_phi): Set locations.
3211         * tree-outof-ssa.c (struct _elim_graph): Add source_location vecs for
3212         copy and edge lists.
3213         (insert_partition_copy_on_edge, insert_value_copy_on_edge,
3214         insert_rtx_to_part_on_edge, insert_part_to_rtx_on_edge): Provide a
3215         locus parameter and override the stmt default if provided.
3216         (new_elim_graph, clear_elim_graph, delete_elim_graph,
3217         elim_graph_add_edge, elim_graph_remove_succ_edge,
3218         FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED, eliminate_build,
3219         elim_forward, elim_unvisited_predecessor, elim_backward, elim_create,
3220         eliminate_phi):  Add locus info in elimination graph for each edge and
3221         value copy.
3222         (insert_backedge_copies): Copy locus if present.
3223         * tree-flow.h (struct _edge_var_map): Add locus field.
3224         * tree-switch_conversions.c (fix_phi_nodes): Add locations.
3225         * tree-cfg.c (reinstall_phi_args, gimple_make_forwarder_block,
3226         add_phi_args_after_copy_edge, gimple_lv_adjust_loop_header_phi): Add
3227         locations.
3228         * ipa-struct-reorg.c (make_edge_and_fix_phis_of_dest): Add locations.
3229
3230 2009-07-30  Martin Jambor  <mjambor@suse.cz>
3231
3232         PR tree-optimization/40570
3233         * ipa-inline.c (cgraph_decide_inlining): Watch out for dead single
3234         use inlining loops.
3235
3236 2009-07-30  Razya Ladelsky <razya@il.ibm.com>
3237
3238         * ssa-loop-manip.c: Include langhooks.h.
3239         (rewrite_phi_with_iv): New.
3240         (rewrite_all_phi_nodes_with_iv): New.
3241         (canonicalize_loop_ivs): Move here from tree-parloops.c.
3242         Remove reduction_list argument. Use rewrite_all_phi_nodes_with_iv.
3243         * tree-parloops.c (loop_parallel_p): Move out all conditions
3244         except dependency check.
3245         (canonicalize_loop_ivs): Move to tree-ssa-loop-manip.c.
3246         (gen_parallel_loop): Call canonicalize_loop_ivs without
3247         reduction_list argument.
3248         (build_new_reduction): New.
3249         (gather_scalar_reductions): New.
3250         (try_get_loop_niter): New.
3251         (try_create_reduction_list): New.
3252         (parallleize_loops): Change the parallel conditions check.
3253         * tree-flow.h (canonicalize_loop_ivs): Remove one argument.
3254         * Makefile.in (tree-ssa-loop-manip.o): Add langhooks.h dependency.
3255
3256 2009-07-30  Dave Korn  <dave.korn.cygwin@gmail.com>
3257
3258         * opt-functions.awk (opt_args): Allow argument to be enclosed in
3259         curly braces.
3260         * doc/options.texi (Option properties):  Mention new quoting syntax.
3261
3262 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3263
3264         * config/alpha/alpha.c (alpha_start_function):
3265         Handle VMS_DEBUG_MAIN_POINTER
3266         * config/alpha/vms.h (VMS_DEBUG_MAIN_POINTER): Define new macro.
3267         * doc/invoke.texi: Document -mdebug-main switch.
3268
3269 2009-07-29  Richard Henderson  <rth@redhat.com>
3270
3271         * cgraph.c (cgraph_set_call_stmt_including_clones): Tidy.
3272         (cgraph_create_edge_including_clones): Likewise.
3273         * tree-inline.c (copy_bb): Operate on the correct edges
3274         when updating the callgraph.
3275
3276 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3277
3278         * config/alpha/vms-cc.c: Deleted.
3279         * config/alpha/vms-ld.c: Deleted.
3280         * config/alpha/t-vms64: Moved to config/vms
3281         * config/alpha/vms-crt0-64.c: Moved to config/vms
3282         * config/alpha/vms-crt0.c: Moved to config/vms
3283         * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
3284         * config/alpha/vms-psxcrt0.c: Moved to config/vms
3285         * config/alpha/xm-vms.h: Moved to config/vms
3286         * config/alpha/x-vms: Moved to config/vms
3287         * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
3288         config/vms/t-vms.
3289         * config/vms/t-vms: Moved here from config/alpha. Alpha specific
3290         parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
3291         (version): Set.
3292         * config/vms/t-vms64: Moved here from config/alpha
3293         * config/vms/vms-crt0-64.c: Moved here from config/alpha.
3294         (argc,argv,envp): Enforce 32bit malloc'ing.
3295         * config/vms/vms-psxcrt0-64.c: Likewise.
3296         * config/vms/vms-crt0.c: Moved here from config/alpha.
3297         * config/vms/vms-psxcrt0.c: Likewise.
3298         * config/vms/vms-crtl-64.h: New file.
3299         * config/vms/vms-crtl.h: New file.
3300         * config/vms/vms.opt: New file.
3301         * config/vms/xm-vms64.h: New file.
3302         * config/vms/xm-vms.h: Moved here from config/alpha.
3303         (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
3304         Set.
3305         * config/vms/x-vms: Moved here from config/alpha.
3306         (version, VMS_EXTRA_PARTS): Moved to t-vms.
3307         (vms-ld.o, vms-cc.o): Removed.
3308         (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
3309
3310 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3311
3312         * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
3313         correct stack (obvious VMS fix).
3314
3315 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
3316
3317         * dwarf2out.c (output_file_names): Output VMS style file name, size,
3318         date, version info if VMS_DEBUGGING_INFO defined.
3319         * vmsdgbout.c (vms_file_stats_name): New functon. VMS style file name,
3320         size, date calculating code moved here.
3321
3322 2009-07-29  Paul Brook  <paul@codesourcery.com>
3323
3324         * config/arm/lib1funcs.asm (clear_cache): Use ARM_FUNC_START and
3325         do_push/do_pop.
3326
3327 2009-07-29  Uros Bizjak  <ubizjak@gmail.com>
3328
3329         PR target/40577
3330         * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
3331         to DImode when generating insq_le insn.
3332
3333 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
3334
3335         * dwarf2out.c (DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET):
3336         New macro set for VMS_DEBUGGGING_INFO.
3337         (AT_string_form): Use it.
3338
3339 2009-07-28  DJ Delorie  <dj@redhat.com>
3340
3341         * config/mep/mep.c (vtext_section): New.
3342         (vftext_section): New.
3343         (ftext_section): New.
3344         (mep_select_section): Add support for functions.
3345         (mep_unique_section): Likewise.
3346         (mep_asm_init_sections): Likewise.
3347         (mep_encode_section_info): Remove it from here.
3348
3349         * config/mep/mep.h (USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
3350
3351 2009-07-28  Paolo Bonzini  <bonzinI@gnu.org>
3352
3353         * tree.h (TREE_DEPRECATED): Document it is used for types too.
3354         (TYPE_VECTOR_OPAQUE): Use default_def_flag
3355
3356 2009-07-28  Douglas B Rupp  <rupp@gnat.com>
3357
3358         * dwarf2out.c (output_file_names): Test new macro
3359         DWARF2_DIR_SHOULD_END_WITH_SEPARATOR.
3360         (add_comp_dir_attribute): Likewise.
3361
3362 2009-07-28  Kai Tietz  <kai.tietz@onevision.com>
3363
3364         * config/i386/mingw-w64.h (LINK_SPEC): Add
3365         separating space between commands.
3366
3367 2009-07-28  Jan Hubicka  <jh@suse.cz>
3368
3369         PR tree-optimization/40759
3370         * tree-ssa-dce.c (mark_virtual_phi_result_for_renaming): Mark all uses
3371         for renaming.
3372
3373 2009-07-27  DJ Delorie  <dj@redhat.com>
3374
3375         * config/mep/mep.c (mep_expand_builtin_saveregs): Make sure 64-bit
3376         types are dword-aligned.
3377         (mep_expand_va_start): Likewise.
3378
3379 2009-07-27  Olivier Hainque  <hainque@adacore.com>
3380             Douglas B Rupp  <rupp@gnat.com>
3381
3382         * convert.c (convert_to_pointer): Don't assume the target
3383         pointer type is POINTER_SIZE long. Fetch its precision instead.
3384
3385 2009-07-27  Douglas B Rupp  <rupp@gnat.com>
3386
3387         * system.h (fopen): Undefine if macro.
3388
3389 2009-07-27  Jakub Jelinek  <jakub@redhat.com>
3390
3391         * dwarf2out.c (output_cfi_p): Removed.
3392         (output_cfis): New function.
3393         (output_fde): New function, split from output_call_frame_info.
3394         (output_call_frame_info): Use it.
3395         (dwarf2out_switch_text_section): Use output_cfis.
3396
3397 2009-07-24  Kai Tietz  <kai.tietz@onevision.com>
3398
3399         * config/i386/cygming.h (DWARF2_UNWIND_INFO): Error build when
3400         TARGET_BI_ARCH is specified without enabling SJLJ.
3401         * config/i386/mingw32.h (MD_UNWIND_SUPPORT): Define MD_UNWIND_SUPPORT,
3402         if TARGET_64BIT and TARGET_BI_ARCH aren't defined.
3403
3404 2009-07-26  Mikael Pettersson <mikpe@it.uu.se>
3405
3406         * arm.md (negdi2): Use DImode if forcing a value into a register.
3407
3408 2009-07-26  Ira Rosen  <irar@il.ibm.com>
3409
3410         PR tree-optimization/40801
3411         * tree-vect-stmts.c (vectorizable_call): Get previous copy
3412         of vector operand from the previous copy of vector statement.
3413         Pass the correct definition type value to
3414         vect_get_vec_def_for_stmt_copy().
3415
3416 2009-07-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>