OSDN Git Service

9360ae05cf121be257962958d017a6be6303dbd0
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-09-10  David Daney  <ddaney@avtrex.com>
2
3         * config/mips/mips.md (UNSPEC_MEMORY_BARRIER): New entry in
4         define_constants.
5         (memory_barrier): Rewrote as an insn that clobbers memory.
6
7 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
8
9         * config/mips/mips.c (mips_global_pointer): Check
10         call_really_used_regs instead of call_used_regs.
11         (mips_save_reg_p): Likewise.  Save all call-saved registers
12         if current_function_saves_all_registers.  Fix indentation.
13         No longer treat $18 as a special case.
14         (compute_frame_size): Guard FPR loop with TARGET_HARD_FLOAT.
15
16 2007-09-10  Richard Sandiford  <richard@codesourcery.com>
17
18         * config/mips/mips.h (MIPS_ARCH_FLOAT_SPEC): New macro.
19         * config/mips/mips.c (mips_cpu_info_table): Mention it in the
20         the introductory comment.
21         (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
22         (override_options): Don't test for it.
23         * config/mips/sde.h (MIPS_MARCH_CONTROLS_SOFT_FLOAT): Delete.
24         (DRIVER_SELF_SPECS): Add MIPS_ARCH_FLOAT_SPEC.
25         * config/mips/vr.h: As for config/mips/sde.h.
26
27 2007-09-10  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
28             Revital Eres  <eres@il.ibm.com>
29
30         * target.h (struct gcc_target.sched): New field: sms_res_mii.
31         (struct ddg): Define.
32         * target-def.h (TARGET_SCHED_SMS_RES_MII): Define.
33         (TARGET_SCHED): Add TARGET_SCHED_SMS_RES_MII.
34         * config/spu/spu.c: Include ddg.h.
35         (TARGET_SCHED_SMS_RES_MII): Define.
36         (spu_sms_res_mii): New function to calculate mii.
37         * modulo-sched (res_MII): Use it.
38         * doc/tm.texi: Document TARGET_SCHED_SMS_RES_MII.
39
40 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
41
42         * config/s390/s390.c (s390_dump_pool): Create copy of constant
43         pool entries since they might hold values that must not be shared.
44
45 2007-09-10  Uros Bizjak  <ubizjak@gmail.com>
46
47         PR target/33369
48         * gcc/config/i386/sse.md (ashr<mode>3): Change op2 mode to SImode.
49         Use 'N' operand constraint for op2.
50         (lshr<mode>3): Ditto.
51         (ashl<mode>3): Ditto.
52         (vec_shl_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
53         (vec_shr_<mode>): Use const_0_to_255_mul_8_operand predicate for op2.
54
55         * gcc/config/i386/i386.c (ix86_expand_builtin) [IX86_BUILTIN_PSLL?128,
56         IX86_BUILTIN_PSRA*?128, IX86_BUILTIN_PSRL?128]: Convert op1 to SImode.
57
58 2007-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>
59
60         * config/s390/s390.md ("fixuns_trunc<BFP:mode><GPR:mode>2"):
61         Change mode macro in the last real_2expN parameter to uppercase.
62
63 2007-09-10  Michael Matz  <matz@suse.de>
64
65         * tree-pass.h (pass_cselim): Declare new pass.
66         * passes.c (init_optimization_passes): Link in pass_cselim.
67         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Renamed from
68         tree_ssa_phiopt; add do_store_elim parameter, handle it by calling
69         cond_store_replacement.
70         (condstoretemp): New static variable.
71         (cond_store_replacement): New function.
72         (tree_ssa_phiopt, tree_ssa_cs_elim): New wrappers around
73         tree_ssa_phiopt_worker.
74         (struct name_to_bb): New.
75         (get_non_trapping, name_to_bb_hash, name_to_bb_eq, add_or_mark_expr,
76         nt_init_block, nt_fini_block): New static functions.
77         (seen_ssa_names, nontrap_set): New static variables.
78         (gate_cselim, pass_cselim): Define new pass.
79         * common.opt (ftree-cselim): New flag.
80         * toplev.c (process_options): Set flag_tree_cselim if required.
81
82 2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
83
84         * simplify-rtx.c (simplify_relational_operation_1): For recent
85         canonicalization, don't recurse if op1 equals both PLUS arguments.
86
87 2007-09-09  David Daney  <ddaney@avtrex.com>
88
89         * optabs.c (expand_sync_operation):  Use plus insn if minus
90         CONST_INT_P(val).
91         (expand_sync_fetch_operation):  Ditto.
92
93 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
94
95         * i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
96         of cvtpq2ps.
97         (*floatsisf2_sse_vector): Likewise.
98
99 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
100
101         * config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
102
103 2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
104
105         * config/i386/i386.h (ix86_tune_indices): Rename
106         X86_USE_VECTOR_CONVERTS to X86_TUNE_USE_VECTOR_CONVERTS.
107         (TARGET_USE_VECTOR_CONVERTS): Updated.
108         * config/i386/i386.c: Likewise.
109
110 2007-09-09  Sandra Loosemore  <sandra@codesourcery.com>
111             Nigel Stephens <nigel@mips.com>
112
113         * doc/invoke.texi (Overall Options):  Add .sx file extension
114         as a synonym for .S.
115         * cppspec.c (known_suffixes): Likewise.
116         * gcc.c (default_compilers): Likewise.
117
118 2007-09-09  Rask Ingemann Lambertsen  <rask@sygehus.dk>
119
120         PR target/30315
121         * config/i386/i386.h (CANONICALIZE_COMPARISON): Delete.
122         * simplify-rtx.c (simplify_relational_operation_1): Add the
123         canonicalization from i386.h.
124         * doc/md.texi (Canonicalization of Instructions): Document it.
125
126 2007-09-09  Jan Hubicka  <jh@suse.cz>
127             Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
128
129         * i386.h (ix86_tune_indices): Add X86_USE_VECTOR_CONVERTS.
130         (TARGET_USE_VECTOR_CONVERTS): New.
131         * i386.md: New post-reload splitters for converting SF to DF and DF to
132         SF.
133         (floatsi* expander): Special case vector conversions.
134         (floatsisf2_mixed_vector, floatsisf2_sse_vector_nointernunit,
135         floatsisf2_sse_vector_internunit, floatsisf2_sse_vector,
136         floatsidf2_mixed_vector, floatsidf2_sse_vector): New.
137         (floatsisf2_mixed, floatsisf2_sse, floatsidf2_mixed, floatsidf2_sse):
138         Disable when doing vector converts.
139         (floatsi<mode>2_i387): Disable when
140         * sse.md (vec_dupv2df): Export.
141         * i386.c (ix86_tune_features): Enable SSE conversions.
142
143 2007-09-09  Richard Guenther  <rguenther@suse.de>
144
145         * tree-ssa-operands.c (add_virtual_operand): Only mark
146         stores as has_volatile_ops if alias information is not available.
147
148 2007-09-09  Revital Eres  <eres@il.ibm.com>
149
150         * doc/contrib.texi: Add myself.
151
152 2007-09-09  Ira Rosen  <irar@il.ibm.com>
153
154         * tree-vectorizer.h (stmt_vinfo_set_inside_of_loop_cost,
155         stmt_vinfo_set_outside_of_loop_cost): New functions.
156         * tree-vect-transform.c (vect_get_cost_fields): Remove.
157         (vect_model_simple_cost): Call
158         stmt_vinfo_set_inside/outside_of_loop_cost to set the relevant cost
159         field instead of calling vect_get_cost_fields.
160         (vect_model_store_cost, vect_model_load_cost): Likewise.
161
162 2007-09-09  Revital Eres  <eres@il.ibm.com>
163
164         * config/rs6000/rs6000.c (paired_init_builtins): Add const
165         declaration to bdesc_paired_preds variable.
166         (paired_expand_builtin): Likewise.
167
168 2007-09-09  Revital Eres  <eres@il.ibm.com>
169
170         * dbgcnt.def (sms_sched_loop): New counter.
171         * modulo-sched.c: Use sms_sched_loop instead of
172         MAX_SMS_LOOP_NUMBER to determine the maximum number of loops to
173         perform swing modulo scheduling on.  Include dbgcnt.h.
174         * Makefile.in: Add DBGCNT_H to modulo-sched.o.
175         * params.def: Remove PARAM_MAX_SMS_LOOP_NUMBER.
176
177 2007-09-09  Uros Bizjak  <ubizjak@gmail.com>
178
179         * config/i386/i386.md (X87MODEF12, SSEMODEF): Remove mode iterators.
180         Substitute all uses with ...
181         (MODEF): New mode iterator.
182
183         (fix_trunc<mode>_fisttp_i387_1): Remove operand constraints
184         from pre-regalloc define_insn_and_split splitter pattern.
185         (*fix_trunc<mode>_i387_1): Ditto.
186         (*fistdi2_1): Ditto.
187         (*fist<mode>2_1): Ditto.
188         (frndintxf2_floor): Ditto.
189         (*fist<mode>2_floor_1): Ditto.
190         (frndintxf2_ceil): Ditto.
191         (*fist<mode>2_ceil_1): Ditto.
192         (frndintxf2_trunc): Ditto.
193         (frndintxf2_mask_pm): Ditto.
194
195         (prologue): Use (const_int 0) as never generated filler insn.
196         (epilogue): Ditto.
197         (sibcall_epilogue): Ditto.
198         (eh_return_si): Ditto.
199         (eh_return_di): Ditto.
200
201         (add<mode>3): Rename from adddf3 and addsf3.  Macroize expander
202         using MODEF mode iterator.
203         (sub<mode>3): Rename from subdf3 and subsf3.  Macroize expander
204         using MODEF mode iterator.
205         (mul<mode>3): Rename from muldf3 and mulsf3.  Macroize expander
206         using MODEF mode iterator.
207         (nearbyint<mode>2): Rename from nearbyintdf2 and nearbyintsf2.
208         Macroize expander using MODEF mode iterator.
209
210         (zero_extendsidi2): Remove operand constraints from expander.
211         (smuldi3_highpart): Ditto.
212         (indirect_jump): Ditto.
213         (tablejump): Ditto.
214         (rsqrtsf2): Ditto.
215         * config/i386/sse.md (storentv4sf): Ditto.
216         (storentv2df): Ditto.
217         (storentv2di): Ditto.
218         (storentsi): Ditto.
219         (sse2_cvtpd2ps): Ditto.
220         (vec_interleave_highv16qi): Ditto.
221         (vec_interleave_lowv16qi): Ditto.
222         (vec_interleave_highv8hi): Ditto.
223         (vec_interleave_lowv8hi): Ditto.
224         (vec_interleave_highv4si): Ditto.
225         (vec_interleave_lowv4si): Ditto.
226         (vec_interleave_highv2di): Ditto.
227         (vec_interleave_lowv2di): Ditto.
228         (sse2_maskmovdqu): Ditto.
229         * config/i386/mmx.md (mmx_maskmovq): Ditto.
230
231 2007-09-09  Ira Rosen  <irar@il.ibm.com>
232
233         * tree-vectorizer.h (enum vect_def_type): Start enumeration from 1.
234         (struct _slp_tree, struct _slp_instance): Define new data structures
235         along macros for their access.
236         (struct _loop_vec_info): Define new fields: strided_stores,
237         slp_instances, and slp_unrolling_factor along macros for their access.
238         (enum slp_vect_type): New.
239         (struct _stmt_vec_info): Define new field, slp_type, and macros for its
240         access.
241         (STMT_VINFO_STRIDED_ACCESS): New macro.
242         (vect_free_slp_tree): Declare.
243         (vectorizable_load): Add an argument of type slp_tree.
244         (vectorizable_store, vectorizable_operation, vectorizable_conversion,
245         vectorizable_assignment): Likewise.
246         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
247         Declare (make extern).
248         * tree-vectorizer.c (new_stmt_vec_info): Initiliaze the new field.
249         (new_loop_vec_info): Likewise.
250         (destroy_loop_vec_info): Free memory allocated for SLP structures.
251         * tree-vect-analyze.c: Include recog.h.
252         (vect_update_slp_costs_according_to_vf): New.
253         (vect_analyze_operations): Add argument for calls to vectorizable_ ()
254         functions. For not pure SLP stmts with strided access check that the
255         group size is power of 2. Update the vectorization factor according to
256         SLP. Call vect_update_slp_costs_according_to_vf.
257         (vect_analyze_group_access): New.
258         (vect_analyze_data_ref_access): Call vect_analyze_group_access.
259         (vect_free_slp_tree): New functions.
260         (vect_get_and_check_slp_defs, vect_build_slp_tree, vect_print_slp_tree,
261         vect_mark_slp_stmts, vect_analyze_slp_instance, vect_analyze_slp,
262         vect_make_slp_decision, vect_detect_hybrid_slp_stmts,
263         vect_detect_hybrid_slp): Likewise.
264         (vect_analyze_loop): Call vect_analyze_slp, vect_make_slp_decision
265         and vect_detect_hybrid_slp.
266         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Take
267         SLP costs into account.
268         (vect_get_cost_fields): New function.
269         (vect_model_simple_cost): Make extern, add SLP parameter and handle
270         SLP.
271         (vect_model_store_cost, vect_model_load_cost): Likewise.
272         (vect_get_constant_vectors): New function.
273         (vect_get_slp_vect_defs, vect_get_slp_defs,
274         vect_get_vec_defs_for_stmt_copy, vect_get_vec_defs_for_stmt_copy,
275         vect_get_vec_defs): Likewise.
276         (vectorizable_reduction): Don't handle SLP for now.
277         (vectorizable_call): Don't handle SLP for now. Add argument to
278         vect_model_simple_cost.
279         (vectorizable_conversion): Handle SLP (call vect_get_vec_defs to
280         get SLPed and vectorized defs). Fix indentation and spacing.
281         (vectorizable_assignment): Handle SLP.
282         (vectorizable_induction): Don't handle SLP for now.
283         (vectorizable_operation): Likewise.
284         (vectorizable_type_demotion): Add argument to
285         vect_model_simple_cost.
286         (vectorizable_type_promotion): Likewise.
287         (vectorizable_store, vectorizable_load): Handle SLP.
288         (vectorizable_condition): Don't handle SLP for now.
289         (vect_transform_stmt): Add a new argument for SLP. Check that there is
290         no SLP transformation required for unsupported cases. Add SLP
291         argument for supported cases.
292         (vect_remove_stores): New function.
293         (vect_schedule_slp_instance, vect_schedule_slp): Likewise.
294         (vect_transform_loop): Schedule SLP instances.
295         * Makefile.in: (tree-vect-analyze.o): Depend on recog.h.
296
297 2007-09-09  Andrew Haley  <aph@redhat.com>
298
299         * optabs.c (sign_expand_binop): Set libcall_gen = NULL in the
300         fake signed optab.
301
302 2007-09-09  Hans-Peter Nilsson  <hp@axis.com>
303
304         Divide REG_LABEL notes into REG_LABEL_OPERAND and REG_LABEL_TARGET.
305         * doc/rtl.texi (Insns): Specify when a label_ref makes a jump_insn.
306         Similar for what label_refs can go in the JUMP_TARGET field.  Split
307         REG_LABEL documentation into REG_LABEL_TARGET and REG_LABEL_OPERAND.
308         * reload.c (find_reloads): Generate REG_LABEL_OPERAND, not
309         REG_LABEL when replacing an operand with a LABEL_REF for a
310         non-jump insn.
311         (subst_reloads): When replacing a LABEL_REG with a register,
312         instead of generating a REG_LABEL note, assert that there already
313         is one or that the label is a known target for the insn.
314         * rtlanal.c (computed_jump_p): Instead of looking for a REG_LABEL
315         note, check the JUMP_LABEL field.  Remove "else" after return.
316         * reorg.c (emit_delay_sequence): Replace case for REG_LABEL with
317         cases for REG_LABEL_OPERAND and REG_LABEL_TARGET.
318         (fill_slots_from_thread): Handle both REG_LABEL_OPERAND and
319         REG_LABEL_TARGET notes, including the JUMP_TARGET field on JUMP_P
320         insns.  Iterate over all notes; don't assume there's only one.
321         * cse.c (recorded_label_ref): Adjust comment to refer to
322         REG_LABEL_OPERAND.
323         (cse_extended_basic_block): Do LABEL_REF check for all INSN_P
324         insns, not just NONJUMP_INSN_P.
325         (check_for_label_ref): For JUMP_P insns, check that the LABEL_REF
326         isn't a jump target.
327         * jump.c (rebuild_jump_labels): Adjust head comment.
328         (init_label_info): Ditto.  Remove REG_LABEL_OPERAND notes only;
329         don't reset REG_LABEL_TARGET notes, including the JUMP_LABEL field.
330         (mark_all_labels): For JUMP_P insns without a target, check if the
331         the target is noted on the previous nonjump insn.
332         (mark_jump_label_1): New function, guts from mark_jump_label.
333         <case IF_THEN_ELSE>: Handle first operand as a non-target when
334         marking jump target labels.
335         <case LABEL_REF>: Adjust for whether to generate a
336         REG_LABEL_TARGET or a REG_LABEL_OPERAND note.
337         For 'E' format rtl, iterate in descending element order.
338         (delete_related_insns): Handle both REG_LABEL_TARGET and
339         REG_LABEL_OPERAND notes.  For JUMP_P insns with labels with zero
340         reference count, delete and fallthrough.  Move finding-next-
341         non-deleted insn last in the function.  Look at all INSN_P insns
342         for REG_LABEL_OPERAND notes.
343         (redirect_jump_2): Assert that OLABEL equals the old JUMP_LABEL of
344         JUMP.
345         * print-rtl.c (print_rtx): For JUMP_P insns and a non-NULL
346         JUMP_LABEL, output the INSN_UID of it.
347         * gcse.c: Adjust comments as appropriate to say REG_LABEL_OPERAND
348         and/or REG_LABEL_TARGET.
349         (add_label_notes): Only add REG_LABEL_OPERAND notes.  Put in line
350         with jump.c copy by only adding notes for labels actually
351         referenced in the insn.
352         * emit-rtl.c (try_split): Don't assume only NONJUMP_INSN_P need
353         usage count increment; handle all INSN_P trial insns.
354         (emit_copy_of_insn_after): Change to not copy REG_LABEL_OPERAND
355         notes.
356         * rtl.h (struct rtx_def) <volatil>: Adjust to mention
357         REG_LABEL_TARGET and REG_LABEL_OPERAND.
358         (LABEL_REF_NONLOCAL_P): Allow REG_LABEL_TARGET and
359         REG_LABEL_OPERAND.
360         * combine.c (distribute_notes): Adjust for REG_LABEL_TARGET on
361         JUMP_P insns and REG_LABEL_OPERAND everywhere.
362         * sched-rgn.c (is_cfg_nonregular): Check for REG_LABEL_OPERANDS
363         on all INSN_P insns.
364         * reg-notes.def (LABEL_TARGET, LABEL_OPERAND): Split from LABEL.
365         * cfgrtl.c (delete_insn): Adjust to handle REG_LABEL_TARGET and
366         REG_LABEL_OPERAND notes.
367         * reload1.c (calculate_needs_all_insns): Adjust comments.
368         (set_label_offsets): Adjust to look for REG_LABEL_OPERAND notes.
369         * config/alpha/alpha.md (split for load of an address into a
370         four-insn sequence on Unicos/Mk): Adjust to use
371         REG_LABEL_OPERAND.
372         * config/sh/sh.md (sh_reorg, final_prescan_insn): Ditto.
373
374 2007-09-09  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
375
376         Revert:
377         2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
378         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
379         FOR_BB_INSNS_SAFE instead of for loop.
380         * cse.c (cse_extended_basic_block): Likewise.
381         * postreload.c (reload_cse_regs_1): New variable next. Make sure
382         that the for loop does not invoke NEXT_INSN on a deleted insn.
383         * function.c (instantiate_virtual_regs): Likewise.
384         * lower-subreg.c (remove_retval_note): Likewise.
385         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
386         FOR_BB_INSNS.
387         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
388         a deleted insn.
389         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
390         insn, if it's a jump.
391         (try_redirect_by_replacing_jump): New variable jump_p. Call
392         tablejump_p before delete_insn_chain.
393         * reload1.c (reload): New variable next. Make sure that the for
394         loop does not invoke NEXT_INSN on a deleted insn.
395         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
396         (delete_output_reload): New variable prev. Make sure the the for
397         loops do not invoke PREV_INSN on a deleted insn.
398
399 2007-09-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
400
401         * pa/constraints.md: Remove 'X' from unused letters comment.
402
403 2007-09-08  Richard Guenther  <rguenther@suse.de>
404
405         * tree-tailcall.c (find_tail_calls): If we don't have aliases
406         computed check stmt_ann->references_memory instead of counting
407         virtual operands.
408  
409 2007-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
410
411         * cse.c (fold_rtx): Use validate_unshare_change() instead of
412         validate_change() in one more case.
413
414 2007-09-08  Zdenek Dvorak  <ook@ucw.cz>
415
416         PR tree-optimization/32283
417         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Use
418         estimated_loop_iterations.
419         (determine_use_iv_cost_condition): Decrease cost of expressions
420         used in iv elimination.
421
422 2007-09-08  Richard Guenther  <rguenther@suse.de>
423
424         * tree-cfg.c (verify_gimple_expr): Avoid building new
425         pointer types, use TYPE_POINTER_TO if available instead.
426
427 2007-09-08  Uros Bizjak  <ubizjak@gmail.com>
428
429         PR target/33329
430         PR rtl-optimization/26449
431         * config/i386/sse.md (mulv4si3): Do not expand sse2 sequence.
432         (*sse2_mulv4si3): New define_insn_and_split pattern. Split insn in
433         split1 pass.
434         (mulv16qi3): Implement as define_insn_and_split pattern instead of
435         define_expand.  Split insn in split1 pass.
436         (mulv2di3): Ditto.
437
438 2007-09-08  Dorit Nuzman  <dorit@il.ibm.com>
439
440         PR tree-optimization/33301
441         * tree-vect-analyze (analyze_operations): Look at the type of the rhs
442         when relevant.
443
444 2007-09-07  Zdenek Dvorak  <ook@ucw.cz>
445
446         PR tree-optimization/32183
447         * Makefile.in (tree-ssa-reassoc.o): Also depend on $(CFGLOOP_H).
448
449         * tree-ssa-reassoc.c: Include cfgloop.h.
450         (is_reassociable_op): Add a loop argument and return true only
451         for inside loop.
452         (linearize_expr): Updated.
453         (should_break_up_subtract): Likewise.
454         (linearize_expr_tree): Likewise.
455         (init_reassoc): Call loop_optimizer_init with
456         AVOID_CFG_MODIFICATIONS.  Remove calculate_dominance_info call
457         with CDI_DOMINATORS.
458         (fini_reassoc): Call loop_optimizer_finalize.
459
460 2007-09-07  Sterling Augustine  <sterling@tensilica.com>
461
462         * config/xtensa/lib2funcs.S (__xtensa_sync_caches): Use an ISYNC even
463         if there is no i-cache.
464
465 2007-09-07  Richard Guenther  <rguenther@suse.de>
466
467         Reapply
468         2007-09-06  Richard Guenther  <rguenther@suse.de>
469
470         PR tree-optimization/32586
471         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
472         folding if nothing changed.
473         (simplify_unary_expression): New function.  Do tree combining
474         on conversion like codes.
475         (try_to_simplify): Call it.
476
477 2007-09-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
478
479         PR target/33286
480         * gthr-posix.h (__gthread_active_p): Add implementation for hppa-hpux.
481         (__gthread_active,__gthread_start, __gthread_active_init): New.
482         * gthr-posix95.h: Likewise.
483
484 2007-09-07  Roman Zippel <zippel@linux-m68k.org>
485
486         * function.h (struct function): Rename calls_unwind_init
487         to saves_all_registers.
488         (current_function_saves_all_registers): Renamed from
489         current_function_calls_unwind_init.
490         * reload1.c (reload): Set current_function_saves_all_registers.
491         * except.c (expand_builtin_unwind_init): Likewise.
492         * config/m68k/m68k.c (m68k_save_reg): Use
493         current_function_saves_all_registers to save pic register.
494
495 2007-09-07  Janis Johnson  <janis187@us.ibm.com>
496
497         config/m68k/m68k.c (floating_exact_log2): Update call to real_2expN.
498         config/s390/s390.md (fixuns_trunc<BFP:mode><GPR:mode>2): Ditto.
499
500         Reapply reverted changes:
501
502         2007-09-06  Jan Hubicka  <jh@suse.cz>
503  
504         * config/i386.c (ix86_expand_lround, ix86_expand_round): Update call of
505         real_2expN.
506
507         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
508
509         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
510         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
511
512         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
513
514         * optabs.c (expand_float): Convert unsigned integer as signed only
515         if it provides sufficient accuracy; add mode argument to real_2expN.
516         (expand_fix): Fix comment typos; extend binary float into mode
517         wider than destination for converion to unsigned integer; add mode
518         argument to real_2expN.
519         * real.c (real_2expN): Add mode argument to special-case decimal
520         float values.
521         * real.h (real_2expN): Ditto.
522         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
523         real_2expN.
524         (fixed_from_string): Ditto.
525         (fixed_to_decimal): Ditto.
526         (fixed_convert_from_real): Ditto.
527         (real_convert_from_fixed): Ditto.
528         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
529         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
530         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
531         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
532
533 2007-09-07  Diego Novillo  <dnovillo@google.com>
534
535         * tree-flow.h (const_block_stmt_iterator): Remove.
536         Update all users to use block_stmt_iterator.
537         * tree-iterator.h (const_tree_stmt_iterator): Remove.
538         Update all users to use tree_stmt_iterator.
539
540 2007-09-07  Sandra Loosemore  <sandra@codesourcery.com>
541
542         * config/mips/mips.c (mips_set_current_function): Temporarily
543         make this a no-op to fix bootstrap errors, pending rewrite.
544
545 2007-09-07  Jan Hubicka  <jh@suse.cz>
546
547         * reorg.c (dbr_schedule): Move code removing placeholder USEs later
548         in the pass.
549
550 2007-09-07  Dorit Nuzman  <dorit@il.ibm.com>
551
552         PR tree-optimization/33299
553         * tree-vect-transform.c (vect_create_epilog_for_reduction): Update
554         uses for all relevant loop-exit phis, not just the first.
555
556 2007-09-07  Richard Guenther  <rguenther@suse.de>
557
558         PR middle-end/33330
559         * tree-ssa-operands.c (access_can_touch_variable): An access
560         of the form (*p)[0] can touch a variable of same size.
561
562 2007-09-07  Jan Hubicka  <jh@suse.cz>
563
564         * passes.c (init_optimization_passes): Add simple dce and addressable
565         passes.
566         * tree-ssa.c (execute_update_addresses_taken): New function.
567         (pass_update_address_taken): New.
568         * tree-ssa-dse.c (execute_simple_dse): New function.
569         (pass_simple_dse): New.
570         * tree-pass.h (pass_simple_dse, pass_update_address_taken): Declare.
571
572 2007-09-07  Tobias Burnus  <burnus@net-b.de>
573
574         PR middle-end/33321
575         * doc/invoke.texi: Fix -Wstrict-overflow= table.
576
577 2007-09-07  Richard Guenther  <rguenther@suse.de>
578
579         Revert
580         2007-09-06  Richard Guenther  <rguenther@suse.de>
581
582         PR tree-optimization/32586
583         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
584         folding if nothing changed.
585         (simplify_unary_expression): New function.  Do tree combining
586         on conversion like codes.
587         (try_to_simplify): Call it.
588
589 2007-09-07  Richard Guenther  <rguenther@suse.de>
590             Uros Bizjak  <ubizjak@gmail.com>
591
592         PR tree-optimization/32821
593         * tree_if_conv.c (combine_blocks): Use alloc_stmt_list instead of
594         NULL in the call to set_bb_stmt_list.
595
596 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
597
598         * config/mips/mips.c (build_mips16_call_stub): Emit all direct
599         float calls here, rather than leaving some to the caller.
600         Use call_internal_direct and call_value_internal_direct.
601         * config/mips/mips.md (call_internal_direct): New pattern.
602         (call_value_internal_direct): Likewise.
603
604 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
605
606         * config/mips/mips.c (mips_base_move_loop_invariants): New variable.
607         (mips_set_mips16_mode): Restore flag_move_loop_invariants, then set
608         to 0 for MIPS16.
609         (override_options): Set mips_base_move_loop_invariants.
610
611 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
612
613         * config/mips/mips.opt (mcode-readable=): Move to keep list
614         alphabetical.
615
616 2007-09-07  Richard Sandiford  <richard@codesourcery.com>
617
618         * doc/invoke.texi: Document the MIPS -mlocal-sdata, -mextern-sdata
619         and -mgpopt options.  Adjust the -G documentation to match.
620         * config/mips/mips.opt (mextern-data, mgpopt, mlocal-data): New.
621         * config/mips/mips.c (mips_rtx_constant_in_small_data_p): New
622         function, split out from mips_classify_symbol.  Return false for
623         !TARGET_LOCAL_SDATA.
624         (mips_classify_symbol): Call mips_rtx_constant_in_small_data_p.
625         Only use GP-relative accesses for non-pool symbols if TARGET_GPOPT.
626         (override_options): Check whether the -mgpopt setting is consistent
627         with the other flags.
628         (symbolic_expression_p): Delete.
629         (mips_select_rtx_section): Use mips_rtx_constant_in_small_data_p
630         and default_elf_select_rtx_section.
631         (mips_in_small_data_p): Honor section attributes for MIPS16 too.
632         Return false for local data unless TARGET_LOCAL_SDATA.  Likewise
633         external data and TARGET_EXTERN_SDATA.
634
635 2007-09-07  Tobias Burnus  <burnus@net-b.de>
636
637         PR fortran/33303
638         * doc/cpp.texi (Common Predefined Macros): Add __GFORTRAN__.
639
640 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
641
642         * regrename.c (copyprop_hardreg_forward_1): New variable next. Use
643         FOR_BB_INSNS_SAFE instead of for loop.
644         * cse.c (cse_extended_basic_block): Likewise.
645         * postreload.c (reload_cse_regs_1): New variable next. Make sure
646         that the for loop does not invoke NEXT_INSN on a deleted insn.
647         * function.c (instantiate_virtual_regs): Likewise.
648         * lower-subreg.c (remove_retval_note): Likewise.
649         (decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
650         FOR_BB_INSNS.
651         * emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
652         a deleted insn.
653         * cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
654         insn, if it's a jump.
655         (try_redirect_by_replacing_jump): New variable jump_p. Call
656         tablejump_p before delete_insn_chain.
657         * reload1.c (reload): New variable next. Make sure that the for
658         loop does not invoke NEXT_INSN on a deleted insn.
659         (fixup_eh_region_note): Make the loop terminate if i becomes NULL.
660         (delete_output_reload): New variable prev. Make sure the the for
661         loops do not invoke PREV_INSN on a deleted insn.
662
663 2007-09-06  Zdenek Dvorak  <ook@ucw.cz>
664
665         * cgraphbuild.c (rebuild_cgraph_edges): Export.
666         * cgraph.h (rebuild_cgraph_edges): Declare.
667         * tree-pass.h (pass_expand_omp_ssa): New.
668         * omp-low.c (find_omp_clause): Export.
669         (copy_var_decl): Split from omp_copy_decl_2.
670         (build_omp_barrier): Return the call to emit instead of emitting
671         it directly.
672         (lower_rec_input_clauses, expand_omp_single): Gimplify the result of
673         build_omp_barrier.
674         (extract_omp_for_data, expand_parallel_call, expand_omp_parallel,
675         expand_omp_for_generic, expand_omp_for_static_nochunk,
676         expand_omp_for_static_chunk, expand_omp_for, expand_omp_sections):
677         Adapted to work on SSA form.
678         (execute_expand_omp): Do not invalidate dominance information.
679         (gate_expand_omp): Do not run with -fopenmp-ssa flag.
680         (gate_expand_omp_ssa, pass_expand_omp_ssa): New.
681         * gimplify.c (gimplify_omp_for): Ensure that the control variable is
682         a gimple_reg.
683         (force_gimple_operand): Allow gimplifying code expressions without
684         value.
685         * tree-predcom.c (mark_virtual_ops_for_renaming): Handle phi nodes.
686         * common.opt (fopenmp-ssa): New.
687         * tree-flow.h (find_omp_clause, copy_var_decl): Declare.
688         * Makefile.in (tree-cfg.o): Add TREE_INLINE_H dependency.
689         * tree-cfg.c: Include tree-inline.h.
690         (struct move_stmt_d): Replace vars_to_remove by vars_map field.
691         (replace_by_duplicate_decl, replace_ssa_name,
692         mark_virtual_ops_in_region): New functions.
693         (move_stmt_r, move_block_to_fn, move_sese_region_to_fn): Adapted
694         to work on SSA form.
695         * passes.c (init_optimization_passes): Add pass_expand_omp_ssa pass.
696         * tree-ssa-operands.c (get_expr_operands): Handle operands of OMP
697         constructs.
698
699 2007-09-06  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
700
701         * tree-loop-linear.c: Include obstack.h.
702         (linear_transform_loops): New obstack lambda_obstack.
703         Initialize it, pass it to gcc_loopnest_to_lambda_loopnest,
704         lambda_loopnest_transform, lambda_loopnest_to_gcc_loopnest calls
705         and free afterwards.
706         * lambda.h (struct obstack): New forward declaration.
707         (lambda_linear_expression_new): New parameter of type struct
708         obstack *.
709         (lambda_loopnest_new): Likewise.
710         (lambda_loopnest_transform): Likewise.
711         (lambda_body_vector_new): Likewise.
712         (lambda_body_vector_compute_new): Likewise.
713         (gcc_loopnest_to_lambda_loopnest): Likewise.
714         (lambda_loopnest_to_gcc_loopnest): Likewise.
715         * lambda-code.c: Include obstack.h.
716         (lambda_lattice_new): New parameter lambda_obstack.  Use it for
717         allocation of ret.
718         (lambda_body_vector_new): Likewise.
719         (lambda_linear_expression_new): Likewise.
720         (lambda_lattice_new): Likewise.
721         (lambda_loopnest_new): Likewise.  Additionally use obstack to
722         allocate LN_LOOPS(ret).
723         (lambda_lattice_compute_base): New parameter lambda_obstack.  Pass
724         it to lambda_lattice_new.
725         (lambda_body_vector_compute_new): New parameter lambda_obstack.
726         Pass it to lambda_body_vector_new.
727         (lambda_lattice_compute_base): New paramater lambda_obstack.  Pass
728         it to lambda_lattice_new.
729         (compute_nest_using_fourier_motzkin): New parameter lambda_obstack.
730         Pass it to lambda_loopnest_new, lambda_linear_expression_new.
731         (lambda_compute_target_space): Likewise.
732         (lambda_compute_auxillary_space): New parameter lambda_obstack.
733         Pass it to lambda_lattice_compute_base and
734         compute_nest_using_fourieer_motzkin.
735         (lambda_loopnest_transform): New parameter lambda_obstack.  Pass
736         it to lambda_lattice_compute_base, lambda_lattice_auxillary_space
737         and lambda_lattice_compute_target_space.
738         (gcc_tree_to_linear_expression): Nex parameter lambda_obstack.
739         Pass it to lambda_linear_expression_new.
740         (gcc_loop_to_lambda_loop): New parameter lambda_obstack.  Pass it
741         to gcc_tree_to_linear_expression.
742         (gcc_loopnest_to_lambda_loopnest): New parameter lambda_obstack.
743         Pass it to gcc_loop_to_lambda_loop and lambda_loopnest_new.
744         (lambda_loopnest_to_gcc_loopnest): New parameter lambda_obstack.
745         Pass it to lambda_body_vector_new and
746         lambda_body_vector_compute_new.
747         * Makefile.in (tree-loop-linear.o): Add $(OBSTACK_H) dependency.
748         (lambda-code.o): Likewise.
749
750 2007-09-06  Chao-ying Fu  <fu@mips.com>
751
752         * ginclude/stdfix.h: New file.
753         * Makefile.in (USER_H): Add $(srcdir)/ginclude/stdfix.h.
754         (convert.o): Add dependence on fixed-value.h.
755         * c-convert.c (convert): Support FIXED_POINT_TYPE.
756         * c-cppbuiltin.c (builtin_define_fixed_point_constants): New function
757         to define fixed-point constants.
758         (c_cpp_builtins): Define fixed-point constants.
759         * convert.c (fixed-value.h): New include.
760         (convert_to_real): Update comment to include fixed-point.
761         Support FIXED_POINT_TYPE.
762         (convert_to_integer): Update comment to include fixed-point.
763         Support FIXED_POINT_TYPE.
764         (convert_to_complex): Support FIXED_POINT_TYPE.
765         (convert_to_fixed): New function.
766         * convert.h (convert_to_fixed): Declare.
767         * genopinit.c: Add comment about $Q for only fixed-point modes.
768         (optabs): Add fract_optab, fractuns_optab, satfract_optab,
769         satfractuns_optab, add_optab, ssadd_optab, usadd_optab, sub_optab,
770         sssub_optab, ussub_optab, smul_optab, ssmul_optab, usmul_optab,
771         ssmadd_widen_optab, usmadd_widen_optab, ssdiv_optab, udiv_optab,
772         usdiv_optab, ssashl_optab, usashl_optab, neg_optab, ssneg_optab,
773         usneg_optab for fixed-point modes.
774         (gen_insn): Add force_fixed to track the $Q format for all fixed-point
775         modes.
776         * optabs.c (optab_for_tree_code): For *DIV_EXPR, LSHIFT_EXPR,
777         PLUS_EXPR, MINUS_EXPR, MULT_EXPR, NEGATE_EXPR, return signed or
778         unsigned saturation optabs, when type is saturating.
779         (shift_optab_p): Return true for SS_ASHIFT or US_ASHIFT.
780         (expand_fixed_convert): New function.
781         (gen_fixed_libfunc, gen_signed_fixed_libfunc,
782         gen_unsigned_fixed_libfunc, gen_int_fp_fixed_libfunc,
783         gen_int_fp_signed_fixed_libfunc, gen_int_fixed_libfunc,
784         gen_int_signed_fixed_libfunc, gen_int_unsigned_fixed_libfunc,
785         gen_fract_conv_libfunc, gen_fractuns_conv_libfunc,
786         gen_satfract_conv_libfunc, gen_satfractuns_conv_libfunc): New
787         functions.
788         (init_optabs): Initialize ssadd_optab, usadd_optab, sssub_optab,
789         ussub_optab, ssmul_optab, usmul_optab, ssmadd_widen_optab,
790         usmadd_widen_optab, ssmsub_widen_optab, usmsub_widen_optab,
791         ssdiv_optab, usdiv_optab, ssashl_optab, usashl_optab, ssneg_optab,
792         usneg_optab, fract_optab, fractuns_optab, satfract_optab,
793         satfractuns_optab.
794         Initialize fixed-point libraries, including add, ssadd, usadd, sub,
795         sssub, ussub, mul, ssmul, usmul, div, ssdiv, udiv, usdiv, ashl,
796         ssashl, usashl, ashr, lshr, neg, ssneg, usneg, cmp, fract, satfract,
797         fractuns, satfractuns.
798         * optabs.h (enum optab_index): Add OTI_ssadd, OTI_usadd, OTI_sssub,
799         OTI_ussub, OTI_ssmul, OTI_usmul, OTI_ssdiv, OTI_usdiv, OTI_ssneg,
800         OTI_usneg, OTI_ssashl, OTI_usashl, OTI_ssmadd_widen, OTI_usmadd_widen,
801         OTI_ssmsub_widen,  OTI_usmsub_widen.
802         (ssadd_optab, usadd_optab, sssub_optab, ussub_optab, ssmul_optab,
803         usmul_optab, ssdiv_optab, usdiv_optab, ssneg_optab, usneg_optab,
804         ssashl_optab, usashl_optab, ssmadd_widen_optab, usmadd_widen_optab,
805         umsub_widen_optab, usmsub_widen_optab): Define.
806         (enum convert_optab_index): Add COI_fract, COI_fractuns, COI_satfract,
807         COI_satfractuns.
808         (fract_optab, fractuns_optab, satfract_optab, satfractuns_optab):
809         Define.
810         (expand_fixed_convert): Declare.
811         * expr.c (convert_move): Support the move of fixed-point modes.
812         (emit_move_insn_1): Handle fixed-point mode to move via integer.
813         (categorize_ctor_elements_1): Handle FIXED_CST.
814         (count_type_elements): Handle FIXED_POINT_TYPE.
815         (expand_expr_real_1): For VECTOR_CST, check MODE_VECTOR_FRACT,
816         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
817         Support FIXED_CST.
818         For PLUS_EXPR and MINUS_EXPR, support saturating and non-saturating
819         multiply and add/subtract for fixed-point types.
820         For MULT_EXPR, *DIV_EXPR, *SHIFT_EXPR, if the mode if a fixed-point
821         mode, we jump to binop directly.
822         Support FIXED_CONVERT_EXPR.
823         (do_store_flag): Check FIXED_CST to put a constant second.
824         (vector_mode_valid_p): Handle MODE_VECTOR_FRACT,
825         MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM, MODE_VECTOR_UACCUM.
826         (const_vector_from_tree): Support FIXED_CST.
827         * doc/extend.texi (Fixed-Point): New node.
828         * doc/md.texi (ssadd, usadd, sssub, ussub, ssmul, usmul, ssdiv, usdiv,
829         ssmadd, usmadd, ssmsub, usmsub, ssashl, usashl, ssneg, usneg, fract,
830         satfract, fractuns, satfractuns): Document them.
831
832 2007-09-07  Bernd Schmidt  <bernd.schmidt@analog.com>
833
834         * config/bfin/bfin.h (PREFERRED_RELOAD_CLASS): Don't reload autoinc
835         addresses into I registers.
836
837 2007-09-06  Jan Hubicka  <jh@suse.cz>
838             Andreas Tobler  <a.tobler@schweiz.org>
839
840         * config/darwin.c (machopic_indirect_data_reference): Avoid invalid
841         sharing.
842         (machopic_legitimize_pic_address): Likewise.
843
844 2007-09-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
845             Jan Hubicka  <jh@suse.cz>
846
847         * config/spu/spu.md (floatsidf2): Use convert_optab_libfunc
848         instead of ufloat_optab->handlers directly.
849         (floatdidf2): Likewise.
850
851 2007-09-06  Sandra Loosemore  <sandra@codesourcery.com>
852
853         * config/mips/mips.c:  Include diagnostic.h.
854         (mips_set_current_function): Check errorcount and sorrycount 
855         before generating RTL.
856
857 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
858
859         PR target/33256
860         * config/mips/mips.c (mips_classify_symbolic_expression): New function.
861         (mips_classify_address): Use it instead of mips_symbolic_constant_p.
862         (print_operand_reloc): Likewise.
863
864 2007-09-06  Janis Johnson  <janis187@us.ibm.com>
865
866         Revert:
867
868         2007-09-06  Jan Hubicka  <jh@suse.cz>
869  
870         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
871         real_2expN.
872
873         2007-09-06  Richard Sandiford  <richard@codesourcery.com>
874
875         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
876         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
877
878         2007-09-05  Janis Johnson  <janis187@us.ibm.com>
879
880         * optabs.c (expand_float): Convert unsigned integer as signed only
881         if it provides sufficient accuracy; add mode argument to real_2expN.
882         (expand_fix): Fix comment typos; extend binary float into mode
883         wider than destination for converion to unsigned integer; add mode
884         argument to real_2expN.
885         * real.c (real_2expN): Add mode argument to special-case decimal
886         float values.
887         * real.h (real_2expN): Ditto.
888         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
889         real_2expN.
890         (fixed_from_string): Ditto.
891         (fixed_to_decimal): Ditto.
892         (fixed_convert_from_real): Ditto.
893         (real_convert_from_fixed): Ditto.
894         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
895         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
896         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
897         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
898
899 2007-09-06  Tom Tromey  <tromey@redhat.com>
900
901         * tree-cfg.c (remove_bb): Only warn if line is non-zero.
902         * c-pch.c (c_common_read_pch): Restore current location after
903         reading PCH file.
904         * tree.c (expand_location): Update.
905         (expr_filename): Changed return type.  Unified the two cases.
906         (expr_lineno): Likewise.
907         (annotate_with_file_line): Don't use EXPR_LINENO and EXPR_FILENAME
908         as lvalues.
909         * toplev.c (line_table): Changed type.
910         (general_init): Update.
911         (realloc_for_line_map): New function.
912         (general_init): Allocate line_table using GC.
913         * fix-header.c (line_table): Changed type.
914         (read_scan_file): Update.
915         (read_scan_file): Update.
916         * c-ppoutput.c (maybe_print_line): Update.
917         (print_line): Update.
918         (cb_line_change): Update.
919         (cb_define): Update.
920         (pp_file_change): Update.
921         * c-opts.c (c_common_init_options): Update.
922         (finish_options): Update.
923         (push_command_line_include): Update.
924         * c-lex.c (cb_line_change): Update.
925         (cb_def_pragma): Update.
926         (cb_define): Update.
927         (cb_undef): Update.
928         (c_lex_with_flags): Use cpp_get_token_with_location.
929         * input.h (line_table): Changed type.
930         (location_from_locus): New macro.
931         * tree.h (EXPR_FILENAME): No longer an lvalue.
932         (EXPR_LINENO): Likewise.
933         (expr_locus, set_expr_locus): Declare separately for
934         USE_MAPPED_LOCATION.
935         (expr_filename, expr_lineno): Changed return type.
936         * gimplify.c (tree_to_gimple_tuple): Use SET_EXPR_LOCUS.
937         * cfgexpand.c (expand_gimple_cond_expr): Use location_from_locus.
938         (expand_gimple_basic_block): Likewise.
939         * final.c (final_scan_insn): Use expanded_location.
940
941 2007-09-06  Richard Guenther  <rguenther@suse.de>
942
943         PR tree-optimization/32586
944         * tree-ssa-sccvn.c (simplify_binary_expression): Avoid
945         folding if nothing changed.
946         (simplify_unary_expression): New function.  Do tree combining
947         on conversion like codes.
948         (try_to_simplify): Call it.
949         * builtins.c (fold_builtin_cexp): Fold the built expressions.
950         * fold-const.c (fold_unary): Test result of get_callee_fndecl().
951
952 2007-09-06  Jan Hubicka  <jh@suse.cz>
953
954         PR target/33318
955         * cse.c (fold_rtx): Avoid invalid sharing.
956
957 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
958
959         * config/mips/mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2)
960         (fixuns_truncsfsi2, fixuns_truncsfdi2): Update calls to real_2expN.
961
962 2007-09-06  Revital Eres  <eres@il.ibm.com>
963
964         * config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
965         Fix offsettable memory reference for 750CL.
966
967 2007-09-06  Pat Haugen  <pthaugen@us.ibm.com>
968
969         * reload.c (find_reloads_address_1): Try to preserve original
970         base/index regclass of operands.
971         * regrename.c (scan_rtx_address): Likewise.
972         (replace_oldest_value_addr): Likewise.
973
974 2007-09-06  Richard Guenther  <rguenther@suse.de>
975
976         PR tree-optimization/33302
977         * domwalk.c (walk_dominator_tree): The exit block is
978         interesting even if it is not reachable.
979
980 2007-09-06  Richard Sandiford  <richard@codesourcery.com>
981
982         PR middle-end/33306
983         * optabs.c (avoid_expensive_constant): Do nothing if MODE is VOIDmode.
984
985 2007-09-06  Basile Starynkevitch  <basile@starynkevitch.net>
986
987         * cfg.c (dump_bb_info, dump_edge_info): Added cfun test for 
988         robustness.
989
990 2007-09-05  Ian Lance Taylor  <iant@google.com>
991
992         * tree-pretty-print.c (dump_decl_name): Cast LABEL_DECL_UID to int
993         when printing.
994         (dump_generic_node): Likewise.
995         * print-rtl.c (print_decl_name): Likewise.
996         * print-tree.c (print_node_brief): Likewise.
997         (print_node): Likewise.
998         * Makefile.in (RTL_BASE_H): Add alias.h.
999         (TREE_H): Likewise.
1000
1001 2007-09-06  Jesper Nilsson  <jesper.nilsson@axis.com>
1002
1003         * longlong.h [__CRIS_arch_version >= 8] (count_trailing_zeros):
1004         Defined.
1005         * config/cris/cris.md (ctzsi2, cris_swap_bits): Implemented.
1006         * config/cris/cris.h (CTZ_DEFINED_VALUE_AT_ZERO): Defined.
1007
1008 2007-09-06  Jie Zhang  <jie.zhang@analog.com>
1009
1010         * config.gcc (tm_file): Add linux.h for bfin*-uclinux*.
1011         (tm_defines): Define UCLIBC_DEFAULT to 1.
1012         (extra_options): Add linux.opt.
1013         * config/bfin/linux.h (CPLUSPLUS_CPP_SPEC): Don't define.
1014         (CRT_CALL_STATIC_FUNCTION): Likewise.
1015         (NO_IMPLICIT_EXTERN_C): Likewise.
1016         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
1017         * config/bfin/elf.h (OBJECT_FORMAT_ELF): Don't define.
1018         * config/bfin/uclinux.h (CPLUSPLUS_CPP_SPEC): Don't define.
1019         (ENDFILE_SPEC): Don't define.
1020         (LIB_SPEC): Likewise.
1021         (CRT_CALL_STATIC_FUNCTION): Likewise.
1022         (NO_IMPLICIT_EXTERN_C): Likewise.
1023         (LINUX_TARGET_OS_CPP_BUILTINS): Likewise.
1024         (TARGET_OS_CPP_BUILTINS): Define as LINUX_TARGET_OS_CPP_BUILTINS.
1025
1026 2007-09-06  Jan Hubicka  <jh@suse.cz>
1027
1028         * i386.c (ix86_expand_lround, ix86_expand_round): Update call of
1029         real_2expN.
1030
1031 2007-09-06  Jan Hubicka  <jh@suse.cz>
1032
1033         * opts.c (common_handle_option): Enable inlining functions for
1034         -fprofile-generate.
1035
1036 2007-09-06  Jakub Jelinek  <jakub@redhat.com>
1037
1038         * builtin-attrs.def (ATTR_NONNULL_3): New.
1039         (DEF_FORMAT_ATTRIBUTE): Use just ATTR_NONNULL_##FA instead of
1040         ATTR_NOTHROW_NONNULL_##FA.
1041         (DEF_FORMAT_ATTRIBUTE_NOTHROW, DEF_FORMAT_ATTRIBUTE_BOTH): New macros.
1042         (ATTR_FORMAT_PRINTF_NOTHROW_2_0, ATTR_PRINTF_NOTHROW_2_3,
1043         ATTR_FORMAT_PRINTF_NOTHROW_3_0, ATTR_FORMAT_PRINTF_NOTHROW_3_4,
1044         ATTR_FORMAT_PRINTF_NOTHROW_4_0, ATTR_PRINTF_NOTHROW_4_5,
1045         ATTR_FORMAT_PRINTF_NOTHROW_5_0, ATTR_FORMAT_PRINTF_NOTHROW_5_6,
1046         ATTR_FORMAT_SCANF_NOTHROW_2_0, ATTR_FORMAT_SCANF_NOTHROW_2_3,
1047         ATTR_FORMAT_STRFTIME_NOTHROW_3_0, ATTR_FORMAT_STRFMON_NOTHROW_3_4):
1048         New.
1049         (ATTR_FORMAT_PRINTF_4_0, ATTR_PRINTF_4_5, ATTR_FORMAT_PRINTF_5_0,
1050         ATTR_FORMAT_PRINTF_5_6, ATTR_FORMAT_STRFTIME_3_0,
1051         ATTR_FORMAT_NOTHROW_3_4): Remove.
1052         * builtins.def (snprintf, sprintf, sscanf, vsnprintf, vsprintf,
1053         vsscanf, strfmon, strftime, __snprintf_chk, __sprintf_chk,
1054         __vsnprintf_chk, __vsprintf_chk): Use ATTR_FORMAT_*_NOTHROW_*
1055         instead of ATTR_FORMAT_*_*.
1056
1057 2007-09-06  Hans-Peter Nilsson  <hp@axis.com>
1058
1059         * config/cris/cris.c (cris_emit_movem_store): Call copy_rtx on
1060         parts re-used for REG_FRAME_RELATED_EXPR.
1061
1062 2007-09-05  Janis Johnson  <janis187@us.ibm.com>
1063
1064         * optabs.c (expand_float): Convert unsigned integer as signed only
1065         if it provides sufficient accuracy; add mode argument to real_2expN.
1066         (expand_fix): Fix comment typos; extend binary float into mode
1067         wider than destination for converion to unsigned integer; add mode
1068         argument to real_2expN.
1069         * real.c (real_2expN): Add mode argument to special-case decimal
1070         float values.
1071         * real.h (real_2expN): Ditto.
1072         * fixed-value.c (check_real_for_fixed_mode): Add mode argument to
1073         real_2expN.
1074         (fixed_from_string): Ditto.
1075         (fixed_to_decimal): Ditto.
1076         (fixed_convert_from_real): Ditto.
1077         (real_convert_from_fixed): Ditto.
1078         * config/rs6000/rs6000.md (FP): Include DD and TD modes.
1079         * config/rs6000/dfp.md (extendddtd2, adddd3, addtd3, subdd3, subtd3,
1080         muldd3, multd3, divdd3, divtd3, cmpdd_internal1, cmptd_internal1,
1081         floatditd2, ftruncdd2, fixdddi2, ftrunctd2, fixddi2): New.
1082
1083 2007-09-05  Ian Lance Taylor  <iant@google.com>
1084
1085         * init-regs.c (initialize_uninitialized_regs): Call
1086         emit_insn_before rather than add_insn_before.
1087
1088 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
1089
1090         * builtins.def (BUILT_IN_VA_ARG_PACK): New built-in.
1091         * tree.h (CALL_EXPR_VA_ARG_PACK): Define.
1092         * tree-inline.h (copy_body_data): Add call_expr field.
1093         * tree-inline.c (expand_call_inline): Initialize call_expr.
1094         (copy_bb): Append anonymous inline fn arguments to arguments
1095         when inlining a CALL_EXPR_VA_ARG_PACK call.
1096         * builtins.c (expand_builtin): Issue an error if
1097         BUILT_IN_VA_ARG_PACK is seen during expand.
1098         (fold_call_expr, fold_builtin_call_array): Don't fold
1099         CALL_EXPR_VA_ARG_PACK CALL_EXPRs or calls with
1100         __builtin_va_arg_pack () call as last argument.
1101         * gimplify.c (gimplify_call_expr): If last argument to a vararg
1102         function is __builtin_va_arg_pack (), decrease number of call
1103         arguments and instead set CALL_EXPR_VA_ARG_PACK on the CALL_EXPR.
1104         * expr.c (expand_expr_real_1): Issue an error if
1105         CALL_EXPR_VA_ARG_PACK CALL_EXPR is seen during expand.
1106         * tree-pretty-print.c (dump_generic_node): Handle printing
1107         CALL_EXPR_VA_ARG_PACK bit on CALL_EXPRs.
1108         * doc/extend.texi (__builtin_va_arg_pack): Document.
1109
1110 2007-09-05  Adam Nemet  <anemet@caviumnetworks.com>
1111
1112         PR tree-optimization/21513
1113         * builtins.c (build_builtin_expect_predicate): New function.
1114         (fold_builtin_expect): Add argument for expected value.
1115         Distribute __builtin_expect over short-circuiting operations.
1116         Fold nested builtin_expects.
1117         (fold_builtin_2): Adjust call to fold_builtin_expect.
1118
1119 2007-09-05  Rask Ingemann Lambertsen  <rask@sygehus.dk>
1120
1121         PR web/32965
1122         PR tree-optimization/13756
1123         * doc/invoke.texi (Options That Control Optimization): Document
1124         -ftree-dse.
1125
1126 2007-09-05  Uros Bizjak  <ubizjak@gmail.com>
1127
1128         * gcc/config/i386/cpuid.h: New file.
1129         * gcc/config/i386/driver-i386.c: Include cpuid.h.
1130         (describe_cache): Shrink size and line strings to 100 bytes.
1131         (detect_caches_amd): Return "" for unsupported max_ext_level.
1132         Use __cpuid function.
1133         (detect_caches_intel): Return "" for unsupported max_level.
1134         Use __cpuid function.
1135         (host_detect_local_cpu): Change feature flag variables to
1136         unsigned int.  Initialize only extended feature flag variables.
1137         Use __get_cpuid_max to determine max supported cpuid level.
1138         Use __cpuid function to determine supported features.  Fix
1139         calculation of family id.  Remove is_amd and check signature
1140         directly.  Check for Geode signature.  Handle family 4 id.
1141         [PROCESSOR_GENERIC32]: New default for unknown family id.  Move
1142         cpu discovery code to lower part of the function.
1143         [PROCESSOR_PENTIUM, PROCESSOR_K6, PROCESSOR_ATHLON]: Do not tune
1144         for sub-architecture.
1145         [PROCESSOR_PENTIUMPRO]: Simplify cpu discovery code.
1146         [PROCESSOR_K8]: Add k8-sse3 architecture.
1147         [PROCESSOR_NOCONA]: Remove.
1148         [PROCESSOR_GENERIC64]: Ditto.
1149         * gcc/config/i386/x-i386 (driver-i386.o): Depend on cpuid.h.
1150         * gcc/config/i386/crtfastmath.c: Include cpuid.h.  Use __get_cpuid
1151         to check for SSE and FXSAVE support.
1152         * gcc/config/i386/t-crtfm (crtfastmath.o): Depend on cpuid.h.
1153         Add -minline-all-stringops.
1154         * gcc/config.gcc (i[34567]86-*-*): Add cpuid.h to extra_headers.
1155         (x86_64-*-*): Ditto.
1156
1157 2007-09-05  Jie Zhang  <jie.zhang@analog.com>
1158
1159         * config/bfin/linux-unwind.h: New file.
1160         * config/bfin/linux.h (MD_UNWIND_SUPPORT): Define.
1161         * config/bfin/uclinux.h (MD_UNWIND_SUPPORT): Define.
1162
1163 2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1164
1165         * Makefile.in (stmt.o): Add alloc-pool.h dependency.
1166         * stmt.c: Include alloc-pool.h.
1167         (struct case_node): Remove GTY marker.
1168         (add_case_node): New parameter case_node_pool.  Use it for
1169         allocation of r.
1170         (expand_case): New allocation pool case_node_pool.  Initialize it,
1171         pass to add_case_node and free it.
1172
1173 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
1174             David Ung  <davidu@mips.com>
1175             Nigel Stephens <nigel@mips.com>
1176
1177         Add mips16/nomips16 function attributes and -mflip-mips16 option
1178         for testing mixed-mode compilation.
1179
1180         * config/mips/mips.opt (mflip-mips16): New.
1181
1182         * config/mips/mips.h (SYMBOL_FLAG_MIPS16_FUNC): Define.
1183         (SYMBOL_FLAG_MIPS16_FUNC_P): Define.
1184
1185         * config/mips/mips.c (mips_base_target_flags): New.
1186         (mips_base_mips16): New.
1187         (mips_base_schedule_insns): New.
1188         (mips_base_reorder_blocks_and_partition): New.
1189         (mips_base_align_loops): New.
1190         (mips_base_align_jumps): New.
1191         (mips_base_align_functions): New.
1192         (mips16_flipper): New.
1193         (mips_attribute_table): Add "mips16" and "nomips16" entries.
1194         (TARGET_SET_CURRENT_FUNCTION): Define.
1195         (mips_mips16_type_p, mips_nomips16_type_p): New.
1196         (mips_comp_type_attributes): Check mips16/nomips16 attributes.
1197         (mips_function_ok_for_sibcall): Make it deal with functions with
1198         mips16 attributes.
1199         (mips_init_split_addresses): New, split out from override_options.
1200         (mips_init_relocs): New, split out from override_options.
1201         (was_mips16_p): New.
1202         (mips_set_mips16_mode): New, split out from override_options.
1203         (mips_set_current_function): New.
1204         (override_options): Add sorry for unsupported mips16/pic
1205         combination.  Remove error for mips16/dsp combination.  Save
1206         base option settings.  
1207         (mips_file_start): Move mips16 mode setting output from here....
1208         (mips_output_function_prologue): ....to here.
1209         (mips_output_mi_thunk): Check for mips16 function.
1210         (build_mips16_function_stub): Don't set .mips16 here.
1211         (build_mips16_call_stub): Likewise.
1212         (mips_expand_builtin): Error in mips16 mode.
1213         (mips_use_mips16_mode_p): New.
1214         (mips_encode_section_info): Check for mips16 function, and set
1215         SYMBOL_REF_FLAGS accordingly.
1216
1217         * doc/extend.texi (Function Attributes): Document new
1218         mips16/nomips16 attributes.
1219         * doc/invoke.texi (Option Summary): Add -mflip-mips16.
1220         (MIPS Options): Document -mflip-mips16.
1221
1222 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
1223
1224         * config/mips/mips.c (mips_legitimize_tls_address): Call sorry
1225         if we encounter TLS address in MIPS16 mode.
1226         (mips_legitimize_const_move): Check cannot_force_const_mem for
1227         the (const (plus symbol offset)) case; this forces invalid TLS
1228         address in MIPS16 mode to be caught by the above call to sorry.
1229         (override_options): Don't reset targetm.have_tls in MIPS16 mode,
1230         because that now enables emutls, which is not ABI compatible
1231         with native TLS in non-MIPS16 mode.
1232
1233 2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>
1234
1235         Add target hook invoked when cfun changes.
1236
1237         * doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
1238         * target.h (struct gcc_target): Add set_current_function.
1239         * target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
1240         (TARGET_INITIALIZER): Add initializer for set_current_function.
1241         * tree.h (push_struct_function): New.
1242         * tree-inline.h (push_cfun, pop_cfun): Move declarations to...
1243         * function.h: Here.
1244         (set_cfun): Declare.
1245         * tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
1246         * function.c: Here.
1247         (push_function_context_to): Use allocate_struct_function
1248         to create null context, not init_dummy_function_start.  Use set_cfun.
1249         (pop_function_context_from): Use set_cfun.
1250         (in_dummy_function): New.
1251         (invoke_set_current_function_hook): New.
1252         (set_cfun): New.
1253         (push_cfun, pop_cfun): Use set_cfun.
1254         (push_struct_function): New.
1255         (allocate_struct_function): Call invoke_set_current_function_hook
1256         before returning.
1257         (prepare_function_start): Don't set cfun here.  Remove unused
1258         argument; fix all callers.
1259         (init_dummy_function_start): Fiddle with in_dummy_function.  Call
1260         push_struct_function.
1261         (init_function_start): Set cfun here.
1262         (expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
1263         * omp-low.c (create_omp_child_function): Use push_struct_function
1264         and pop_cfun to save/restore state.
1265         (expand_omp_parallel): Remove unused saved_cfun variable.
1266         * cgraphunit.c (ipa_passes): Use set_cfun.
1267         * gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
1268         * dwarf2out.c (dwarf2out_abstract_function): Likewise.
1269         * matrix-reorg.c (transform_allocation_sites): Likewise.
1270         (matrix_reorg): Use set_cfun.
1271         * gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
1272         * tree-optimize.c (tree_rest_of_compilation): Remove one redundant
1273         assignment to cfun; use set_cfun for the other.
1274         * tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
1275         (dump_function_to_file): Use push_cfun/pop_cfun here.
1276         * c-decl.c (finish_function): Use set_cfun.
1277
1278 2007-09-05  Kenneth Zadeck <zadeck@naturalbridge.com>
1279
1280         * regrename.c (rerename_optimize): Use deferred rescanning and
1281         insert explicit calls to rescan insns when changed.
1282         
1283 2007-09-05  Jan Hubicka  <jh@suse.cz>
1284
1285         * optabs.c (libfunc_entry): Change optab to integer.
1286         (hash_libfunc, convert_optab_libfunc, optab_libfunc,
1287         set_optab_libfunc, set_conv_libfunc): Use optable indexes instead
1288         of pointers for hashing.
1289
1290 2007-09-05  Jan Hubicka  <jh@suse.cz>
1291
1292         * regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
1293         verifier.
1294         * fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
1295         * see.c (pass_see): Likewise.
1296         * tracer.c (pass_tracer): Likewise.
1297         * postreload-gcse.c (pass_gcse2): Likewise.
1298         * postreload.c (pass_postreload_cse): Likewise.
1299         * mode-switching.c (pass_mode_switching): Likewise.
1300         * modulo-sched.c (pass_sms): Likewise.
1301         * cse.c (cse_insn): Likewise.
1302         * web.c (pass_web): Likweise.
1303         * combine-stack-adj.c (pass_stack_adjustments): Likewise.
1304         * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
1305         * loop-init.c (pass_rtl_loop_init): Likewise.
1306         (pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
1307         pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
1308         * global.c (pass_global_alloc): Likewise.
1309         * ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
1310         pass_if_after_reload): Likewise.
1311         * reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
1312         * dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
1313         * regmove.c (pass_regmove): Likewise.
1314         * function.c (pass_thread_prologugues_epilogues): Likewise.
1315         * gcse.c (pass_gcse): Likewise.
1316         * rtl-factoring.c (pass_rtl_seqabstr): Likewise.
1317         * lower-subreg.c (pass_lower_subreg2): Likewise.
1318         * bt-load.c (pass_branch_target_load): Likewise.
1319         * emit-rtl.c (pass_unshare_all_rtl): Likewise.
1320         * cfgcleanup.c (pass_jump, pass_jump2): Likewise.
1321         * combine.c (pass_combine): Likewise.
1322         * bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
1323         (pass_partition_blocks): Likewise.
1324         * var-tracking.c (pass_variable_track): Likewise.
1325         * reg-stack.c (pass_stack_regs_run): Likewise.
1326         * sched-rgn.c (pass_sched, pass_sched2): Likewise.
1327         * passes.c (pass_postreload): Likewise.
1328         (execute_function_todo): Add TODO_verify_rtl_sharing handling code.
1329         * tree-pass.h (TODO_verify_rtl_sharing): New.
1330         (TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
1331         TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
1332         TODO_set_props, TODO_df_finish, TODO_df_verify,
1333         TODO_mark_first_instance, TODO_rebuild_alias): Renumber.
1334
1335 2007-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1336
1337         * fold-const.c (all_ones_mask_p, sign_bit_p, simple_operand_p,
1338         fold_real_zero_addition_p, reorder_operands_p,
1339         div_if_zero_remainder, fold_undefer_overflow_warnings,
1340         int_binop_types_match_p, fold_convert_const_int_from_int,
1341         fold_convert_const_int_from_real,
1342         fold_convert_const_int_from_fixed,
1343         fold_convert_const_real_from_real,
1344         fold_convert_const_real_from_fixed,
1345         fold_convert_const_fixed_from_fixed,
1346         fold_convert_const_fixed_from_int,
1347         fold_convert_const_fixed_from_real, maybe_lvalue_p,
1348         fold_checksum_tree, fold_check_failed, print_fold_checksum,
1349         debug_fold_checksum, multiple_of_p): Constify.
1350         * tree-flow-inline.h (get_lineno): Likewise.
1351         * tree-flow.h (get_lineno): Likewise.
1352         * tree-object-size.c (compute_object_offset, addr_object_size,
1353         alloc_object_size, pass_through_call): Likewise.
1354         * tree-pretty-print.c (op_symbol, print_call_name,
1355         print_struct_decl, do_niy): Likewise.
1356         * tree.h (fold_undefer_overflow_warnings, multiple_of_p,
1357         debug_fold_checksum): Likewise.
1358
1359 2007-09-04  Steven Bosscher  <steven@gcc.gnu.org>
1360
1361         PR middle-end/33029
1362         * lower-subreg.c (resolve_clobber): If we remove a REG_LIBCALL
1363         note, remove the associated REG_RETVAL note.
1364
1365 2007-09-04  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1366
1367         * config.gcc (powerpc*-*-*): Install
1368         spu2vmx.h, vec_types.h, and si2vmx.h headers.
1369         * config/rs6000/spu2vmx.h: New header.
1370         * config/rs6000/si2vmx.h: New header.
1371         * config/rs6000/vec_types.h: New header.
1372
1373 2007-09-05  Ben Elliston  <bje@au.ibm.com>
1374
1375         * varasm.c (initializer_constant_valid_p): Fix comment typo.
1376
1377 2007-09-05  Ben Elliston  <bje@au.ibm.com>
1378
1379         * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
1380         not `m' for *ptrp.
1381         (__stdcx): Make asm volatile.
1382         (__stwcx, __stdcx): Return only 0 or 1.
1383
1384 2007-09-05  Jan Hubicka  <jh@suse.cz>
1385
1386         Revert:
1387
1388         2007-09-04  Jan Hubicka  <jh@suse.cz>
1389         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
1390
1391         2007-09-04  Richard Guenther  <rguenther@suse.de>
1392         * tree-ssa-operands.c (add_virtual_operand): Only mark
1393         stores as has_volatile_ops if alias information is not available.
1394
1395 2007-09-05  Jakub Jelinek  <jakub@redhat.com>
1396
1397         * config/rs6000/tramp.asm: Include config.h.
1398         Check __PIC__ or __pic__ macro instead of SHARED.
1399
1400         PR rtl-optimization/32300
1401         * see.c (see_copy_insn): New function.
1402         (see_def_extension_not_merged, see_merge_one_use_extension,
1403         see_merge_one_def_extension): Use it.  Avoid changing
1404         PREV_INSN/NEXT_INSN chains directly, insted emit insns
1405         into sequences.  Call df_insn_delete on temporary insns
1406         that won't be emitted into the insn stream.
1407         (rest_of_handle_see): Turn off DF_DEFER_INSN_RESCAN
1408         and run df_process_deferred_rescans () before run_fast_dce.
1409
1410         PR tree-optimization/33017
1411         * tree-data-ref.c (split_constant_offset) <case SSA_NAME>: Don't
1412         recurse for pure or const function calls.
1413
1414 2007-09-04  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1415
1416         * c-format.c: Include alloc-pool.h.
1417         (check_format_info_main): New argument fwt_alloc.  Use allocation
1418         pool instead of GC.  Remove GC deallocation code.
1419         (check_format_arg): Create allocation pool, pass it to
1420         check_format_info_main and free it afterwards.
1421         * Makefile.in (c-format.o): Add alloc-pool.h dependency.
1422
1423 2007-09-05  Ben Elliston  <bje@au.ibm.com>
1424
1425         * config/rs6000/ppu_intrinsics.h (__protected_stream_count):
1426         Rename count macro arugment for clarity.
1427         (__protected_unlimited_stream_set): Pass UG=1 to __dcbt_TH1000.
1428         (__protected_stream_set): Likewise, pass 0.
1429
1430 2007-09-04  Jan Hubicka  <jh@suse.cz>
1431
1432         * tree-tailcall.c (eliminate_tail_call): Expect unrenamed return value.
1433
1434 2007-09-04  Jan Hubicka  <jh@suse.cz>
1435
1436         * invoke.texi (-finline-small-functions): Document.
1437         * ipa-inline.c (cgraph_default_inline_p): Do not use DECL_INLINE
1438         when deciding what is inlinable.
1439         (cgraph_decide_recursive_inlining): Handle flag_inline_functions.
1440         (cgraph_decide_inlining_of_small_function): Handle new flags.
1441         (cgraph_decide_inlining_incrementally): Likewise.
1442         * opts.c (decode_options): Enable flag_inline_small_functions at -O2
1443         * common.opt (finline-small-functions): New.
1444         * Makefile.in (build/gengtype.o-warn): Work around PR29478
1445
1446 2007-09-04  Richard Guenther  <rguenther@suse.de>
1447
1448         * tree-ssa-operands.c (add_virtual_operand): Only mark
1449         stores as has_volatile_ops if alias information is not available.
1450
1451 2007-09-04  Andrew Haley  <aph@redhat.com>
1452
1453         * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
1454
1455 2007-09-04  Andrew Haley  <aph@redhat.com>
1456
1457         * config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
1458         * config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
1459         * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
1460
1461 2007-09-04  Emmanuel Thome  <Emmanuel.Thome@inria.fr>
1462
1463         PR c++/14178
1464         * common.opt: Mention ABI version 2 in comment.
1465
1466 2007-09-04  Jan Hubicka  <jh@suse.cz>
1467
1468         * optabs.c (debug_optab_libfunc): Update; make available to gdb.
1469         (libfunc_entry): New structure.
1470         (libfunc_hash): New hashtable.
1471         (hash_libfunc): New function.
1472         (eq_libfunc): New function.
1473         (convert_optab_libfunc): New function.
1474         (optab_libfunc): New function.
1475         (expand_binop, sign_expand_binop, expand_twoval_binop_libfunc,
1476         expand_unop, prepare_cmp_insn, prepare_float_insn, gen_add2_insn,
1477         expand_float, expand_fix, new_optab, new_convert_optab):
1478          Update for new libfunc API.
1479         (init_libfunc, init_integral_libfuncs,
1480         init_floating_libfuncs, init_interclass_conv_libfuncs
1481         init_intraclass_conv_libfuncs): Remove; reorganize all logic to:
1482         (gen_libfunc, gen_int_libfunc, gen_fp_libfunc, gen_int_fp_libfunc,
1483         gen_intv_fp_libfunc, gen_interclass_conv_libfunc,
1484         gen_int_to_fp_conv_libfunc, gen_ufloat_conv_libfunc,
1485         gen_int_to_fp_nondecimal_conv_libfunc, gen_fp_to_int_conv_libfunc,
1486         gen_intraclass_conv_libfunc, gen_trunc_conv_libfunc,
1487         gen_extend_conv_libfunc): New.
1488         (init_one_libfunc): Revamp for hashtables.
1489         (set_conv_libfunc): Likewise.
1490         (init_optabs): Initialize hashtable; use lazy initialization where
1491         possible.
1492         * optabs.h (optab_handlers): Move out of GGC.
1493         (optab, convert_optab): Move out of GGC; add lazy gen info.
1494         (code_to_optab, convert_optab_table, optab_table): Move out of GGC.
1495         (optab_libfunc, convert_optab_libfunc): New.
1496         * builtins.c (expand_builtin_powi): Update for new API.
1497         * expr.c (convert_move): Likewise.
1498         * expmed.c (expand_divmod): Likewise.
1499
1500 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
1501
1502         * config/rs6000/rs6000.c (rs6000_stack_info): Allocate space for the
1503         GOT pointer only if there is a constant pool.  Use the allocated space
1504         for SPE also.
1505
1506 2007-09-04  Daniel Jacobowitz  <dan@codesourcery.com>
1507
1508         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Correct
1509         typo for AltiVec.
1510
1511 2007-09-04  Revital Eres  <eres@il.ibm.com>
1512             Richard Guenther  <rguenther@suse.de>
1513             R. Clint Whaley  <whaley@cs.utsa.edu>
1514
1515         * doc/invoke.texi (-fassociative-math, -freciprocal-math):
1516         Document new flags.
1517         * tree-tailcall.c (process_assignment): Use -fassociative-math
1518         when reodering operands of floating-point type.
1519         * fold-const.c (fold_comparison, fold_binary): Use
1520         -fassociative-math and -freciprocal-math instead of
1521         -funsafe-math-optimization flag.
1522         * toplev.h (set_unsafe_math_optimizations_flags): Declare function.
1523         * tree-ssa-math-opts.c (gate_cse_reciprocals): Use
1524         -freciprocal-math instead of -funsafe-math-optimizations.
1525         * opts.c (set_fast_math_flags): Set -freciprocal-math and
1526         -fassociative-math when -ffast-math is set.
1527         (set_unsafe_math_optimizations_flags): New Function
1528         to set -freciprocal-math and -fassociative-math when
1529         -funsafe-math-optimizations is set.
1530         (common_handle_option): Call it.
1531         * tree-vectorizer.c (vect_is_simple_reduction): Use
1532         -fassociative-math when doing reduction on floats.
1533         * loop-unroll.c (analyze_insn_to_expand_var): Use
1534         -fassociative-math when expanding an accumulator of type float.
1535         * simplify-rtx.c (simplify_binary_operation_1): Use
1536         -fassociative-math and -freciprocal-math when reordeing operands
1537         of floating-point type.
1538         * combine.c (combine_simplify_rtx): Likewise.
1539         * tree-ssa-reassoc.c (break_up_subtract_bb, reassociate_bb):
1540         Likewise.
1541         * common.opt (-fassociative-math, -freciprocal-math): New flags.
1542
1543 2007-09-04  Paolo Carlini  <pcarlini@suse.de>
1544
1545         PR c++/18608
1546         * doc/install.texi (--enable-__cxa_atexit): Fix typo.
1547
1548 2007-09-04  Jan Hubicka  <jh@suse.cz>
1549
1550         * regrename.c(copyprop_hardreg_forward_1): Unshare when doing copyprop.
1551
1552 2007-09-04  Jan Hubicka  <jh@suse.cz>
1553
1554         * regrename.c (build_def_use): Don't share RTL between MATCH_OPERATOR
1555         and corresponding MATCH_DUP.
1556
1557 2007-09-04  Uros Bizjak  <ubizjak@gmail.com>
1558
1559         PR middle-end/33187
1560         * combine.c (subst): Do not try to simplify X if it represents load
1561         of FP constant from the constant pool via float extension.
1562
1563 2007-09-04  Ben Elliston  <bje@au.ibm.com>
1564
1565         * c-opts.c: Include "tm_p.h".
1566         * Makefile.in (c-opts.o): Add $(TM_P_H) as a dependency.
1567
1568 2007-09-04  Richard Guenther  <rguenther@suse.de>
1569
1570         PR tree-optimization/33291
1571         * tree-pretty-print.c (dump_generic_node): Dump all
1572         qualifiers for pointer types, not only first.  Dump
1573         qualifiers for aggregate types as well.
1574         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Always
1575         use the canonical type for building ARRAY_REFs.
1576         * gimplify.c (canonicalize_addr_expr): Clean up.  The
1577         correct validness check is compatibility of the pointer
1578         types.  Always use the canonical type for building
1579         ARRAY_REFs and ADDR_EXPRs.
1580         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Revert
1581         change that disabled propagation of ADDR_EXPRs into statements
1582         with volatile ops.
1583
1584 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
1585
1586         * config/arm/arm.md (mulsidi3, umulsidi3, mulsi3_highpart)
1587         (umulsi3_highpart): Make into expanders; existing insns are
1588         now named *[insn]_nov6.  Add stars to existing [insn]_v6
1589         counterparts' names.
1590
1591 2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>
1592
1593         * Makefile.in (DRIVER_DEFINES, gcc.o, gccspec.o, protoize.o)
1594         (unprotoize.o): Remove SHLIB_MULTILIB.
1595
1596 2007-09-03  Eric Weddington  <eweddington@cso.atmel.com>
1597
1598         * doc/extend.texi: Document progmem attribute for AVR.
1599
1600 2007-09-03  Anatoly Sokolov <aesok@post.ru>
1601
1602         PR target/28902
1603         * config/avr/avr.h (TARGET_VTABLE_ENTRY_ALIGN): Define.
1604
1605 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
1606
1607         * optabs.c (expand_ffs): Initialize val and defined_at_zero
1608         to avoid warnings.
1609
1610         * optabs.c: Remove unnecessary forward declarations.
1611         (expand_unop_direct): New, broken out of expand_unop.
1612         (expand_doubleword_clz): New.
1613         (expand_ctz): Move above expand_ffs.  Use
1614         start_sequence, end_sequence, add_equal_note, and
1615         expand_unop_direct.  Add more commentary.
1616         (expand_ffs): Try both ctz optab and expand_ctz.
1617         Generate a test and branch if the hardware doesn't give us
1618         a useful value for input zero.  Style improvements similar to
1619         expand_ctz.
1620
1621         * config/arm/arm.md (ffssi2, ctzsi2): Delete.
1622
1623 2007-09-03  Zack Weinberg  <zack@codesourcery.com>
1624
1625         * config.gcc: Delete stanza for arm-semi-aof and
1626         armel-semi-aof targets.
1627         * config/arm/arm-protos.h
1628         * config/arm/arm.c
1629         * config/arm/arm.h: Delete all #ifdef AOF_ASSEMBLER blocks;
1630         make all #ifndef AOF_ASSEMBLER blocks unconditional.  Also
1631         delete aof_pic_label and remove mention of AOF in comments.
1632         * config/arm/arm.md: Delete patterns used only for AOF assembly.
1633         * config/arm/aof.h
1634         * config/arm/semiaof.h
1635         * config/arm/t-semi: Delete file.
1636
1637 2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1638
1639         * system.h (CONST_CAST2, CONST_CAST_TREE, CONST_CAST_RTX,
1640         CONST_CAST_BB): New macros for type-specific casts.
1641         (CONST_CAST): Add a TYPE parameter and define it in terms of
1642         CONST_CAST2.
1643
1644         * c-decl.c (c_make_fname_decl): Supply a TYPE for CONST_CAST.
1645         * c-lex.c (cb_ident, lex_string): Likewise,
1646         * c-typeck.c (free_all_tagged_tu_seen_up_to): Likewise,
1647         * config/i386/i386.c (ix86_function_regparm,
1648         ix86_function_sseregparm): Use CONST_CAST_TREE.
1649         * config/mmix/mmix.c (mmix_encode_section_info): Supply a TYPE for
1650         CONST_CAST.
1651         * gcc.c (set_spec, read_specs, for_each_path, execute, do_spec_1,
1652         give_switch, set_multilib_dir): Likewise,
1653         * gengtype-parse.c (string_seq, typedef_name): Likewise,
1654         * gimple-low.c (block_may_fallthru): Use CONST_CAST_TREE.
1655         * jump.c (reversed_comparison_code_parts): Use CONST_CAST_RTX.
1656         * passes.c (execute_one_pass): Supply a TYPE for CONST_CAST.
1657         * prefix.c (update_path): Likewise,
1658         * pretty-print.c (pp_base_destroy_prefix): Likewise,
1659         * rtlanal.c (keep_with_call_p): Use CONST_CAST_RTX.
1660         * tree-cfg.c (tree_can_merge_blocks_p,
1661         tree_block_ends_with_condjump_p): Use CONST_CAST_BB.
1662         * tree-eh.c (lookup_stmt_eh_region_fn): USe CONST_CAST_TREE.
1663         * tree.c (build_string): Supply a TYPE for CONST_CAST.
1664         (attribute_list_contained): Use CONST_CAST_TREE.
1665
1666 2007-09-03  Krister Walfridsson  <cato@df.lth.se>
1667
1668         * config/netbsd-elf.h (USE_LD_AS_NEEDED): Define.
1669
1670 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
1671
1672         PR middle-end/33290
1673         * optabs.c (avoid_expensive_constant): Canonicalize CONST_INTs
1674         before forcing them into a register.
1675
1676 2007-09-03  Richard Sandiford  <richard@codesourcery.com>
1677
1678         * config/mips/mips.md (fetchop_bit): Use define_code_iterator
1679         rather than define_code_macro.
1680
1681 2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
1682
1683         * gcc.c (xputenv): New function.
1684         (putenv_from_prefixes): Use xputenv instead of putenv.
1685         (process_command): Use xputenv instead of putenv.
1686         (set_collect_gcc_options): Use xputenv instead of putenv.
1687         (main): Use xputenv instead of putenv.
1688
1689 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
1690
1691         * config/cris/cris.h (TARGET_HAS_SWAP): Defined to describe
1692         availability of swap instruction.
1693         * config/cris/cris.md (bswapsi2): Implement using swap instruction.
1694
1695 2007-09-03  Revital Eres  <eres@il.ibm.com>
1696
1697         * doc/invoke.texi (-fmodulo-sched-allow-regmoves): Update
1698         Documentation.
1699
1700 2007-09-03  Vladimir Yanovsky  <yanov@il.ibm.com>
1701             Ayal Zaks  <zaks@il.ibm.com>
1702             Revital Eres  <eres@il.ibm.com>
1703
1704         * modulo-sched.c (ps_insert_empty_row, verify_partial_schedule,
1705         compute_split_row): New functions.
1706         (ps_unschedule_node): Remove.
1707         (normalize_sched_times): Iterate over the already scheduled
1708         insns instead of the number of nodes.
1709         (MAX_SPLIT_NUM): New definition.
1710         (sms_schedule_by_order): Change the scheduling heuristic to
1711         avoid useless increases of initiation interval ii.
1712         (get_sched_window): Add dump printouts.
1713
1714 2007-09-02  David Daney  <ddaney@avtrex.com>
1715
1716         * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP, UNSPEC_SYNC_OLD_OP,
1717         UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE): New define_constants.
1718         (optab, insn): Add more attributes.
1719         (fetchop_bit): New code macro.
1720         (immediate_insn): New code macro attribute.
1721         (sync): Change condition to ISA_HAS_SYNC.
1722         (rdhwr): Change predicate for operand 0 to register_operand.
1723         (memory_barrier): New expand.
1724         (sync_compare_and_swap<mode>, sync_add<mode>, sync_sub<mode>,
1725         sync_old_add<mode>, sync_old_sub<mode>, sync_new_add<mode>,
1726         sync_new_sub<mode>, sync_<optab><mode>, sync_old_<optab><mode>,
1727         sync_new_<optab><mode>, sync_nand<mode>, sync_old_nand<mode>,
1728         sync_new_nand<mode>, sync_lock_test_and_set<mode>): New insns.
1729         * config/mips/mips.h (ISA_HAS_SYNC, ISA_HAS_LL_SC): New ISA predicates.
1730         (MIPS_COMPARE_AND_SWAP, MIPS_SYNC_OP, MIPS_SYNC_OLD_OP,
1731         MIPS_SYNC_NEW_OP, MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND,
1732         MIPS_SYNC_NEW_NAND, MIPS_SYNC_EXCHANGE): New Macros.
1733         
1734 2007-09-03  Jesper Nilsson  <jesper.nilsson@axis.com>
1735             Hans-Peter Nilsson  <hp@axis.com>
1736
1737         * config/cris/cris.h (TARGET_HAS_LZ, CLZ_DEFINED_VALUE_AT_ZERO):
1738         Defined to describe availability and behavior of CLZ.
1739         * config/cris/cris.md (clzsi2): Implement using lz instruction.
1740         * config/cris/cris.opt: Tweak comment for "-metrax4".
1741         * config/cris/arit.c (LZ): When defined, define as __builtin_clz.
1742         * longlong.h [__CRIS__ && __CRIS_arch_version >= 3]
1743         (count_leading_zeros): Define.
1744
1745 2007-09-01  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1746
1747         * ggc-page.c (ggc_pch_read): Call validate_free_objects.
1748
1749 2007-09-02  Joseph Myers  <joseph@codesourcery.com>
1750
1751         PR middle-end/33272
1752         * c-decl.c (grokdeclarator): Apply qualifiers to type of parameter
1753         decayed from array.
1754
1755 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
1756
1757         * config/arm/arm.c, config/rs6000/ppu_intrinsics.h,
1758         config/spu/spu.c, df-scan.c, fixed-value.c, fold-const.c,
1759         ginclude/tgmath.h, haifa-sched.c, optabs.c, recog.c,
1760         sched-deps.c, sched-int.h, system.h, target.h,
1761         tree-ssa-live.c, tree-vect-transform.c, tree-vectorizer.c,
1762         tree.def: Fix comment typos.
1763
1764 2007-09-01  Kazu Hirata  <kazu@codesourcery.com>
1765
1766         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove.
1767         (override_options): Turn on -mstrict-align on non-ColdFire
1768         targets.
1769         * config/m68k/m68k.h (BIGGEST_ALIGNMENT): Update a comment.
1770
1771 2007-09-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1772
1773         * c-common.c (const_strip_array_types): Delete.
1774         * c-common.h (const_strip_array_types): Likewise.
1775         * emit-rtl.c (const_next_insn, const_previous_insn,
1776         const_next_nonnote_insn, const_prev_nonnote_insn,
1777         const_next_real_insn, const_prev_real_insn,
1778         const_next_active_insn, const_prev_active_insn, const_next_label,
1779         const_prev_label): Delete.
1780         * gimple-low.c (block_may_fallthru): Use expr_last.
1781         * jump.c (reversed_comparison_code_parts): Use prev_nonnote_insn.
1782         * rtl.h (const_previous_insn, const_next_insn,
1783         const_prev_nonnote_insn, const_next_nonnote_insn,
1784         const_prev_real_insn, const_next_real_insn,
1785         const_prev_active_insn, const_next_active_insn, const_prev_label,
1786         const_next_label): Delete.
1787         * rtlanal.c (keep_with_call_p): Use next_nonnote_insn.
1788         * system.h (CONST_CAST): Update comment.
1789         * tree-cfg.c (tree_can_merge_blocks_p): Use last_stmt.
1790         (const_first_stmt, const_last_stmt): Delete.
1791         (tree_block_ends_with_condjump_p): Use last_stmt.
1792         * tree-flow.h (const_first_stmt, const_last_stmt): Delete.
1793         * tree-iterator.c (const_expr_first, const_expr_last,
1794         const_expr_only): Delete.
1795         * tree.c (const_lookup_attribute): Likewise.
1796         (attribute_list_contained): Use lookup_attribute.
1797         * tree.h (const_lookup_attribute, const_expr_first,
1798         const_expr_last, const_expr_only): Delete.
1799
1800 2007-09-01  Richard Guenther  <rguenther@suse.de>
1801
1802         * tree-ssa-alias.c (create_name_tags): Use TYPE_VOLATILE
1803         instead of TREE_THIS_VOLATILE.
1804         * tree-ssa-operands.c (add_virtual_operand): Do not set
1805         has_volatile_ops.  Do not check s_ann for NULL.
1806         (get_indirect_ref_operands): Likewise.
1807         (get_expr_operands): Likewise.  For all reference trees
1808         set has_volatile_ops based on TREE_THIS_VOLATILE.  Also
1809         check base of reference for TREE_THIS_VOLATILE.
1810
1811 2007-09-01  Richard Guenther  <rguenther@suse.de>
1812
1813         * tree-cfg.c (verify_gimple_expr): Fix check for conversions
1814         between integral types.  Also allow conversions between
1815         pointer types.
1816
1817 2007-08-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1818
1819         * optabs.c (prepare_float_lib_cmp): Use
1820         libgcc_cmp_return_mode instead of word_mode.
1821         * config/dfp-bit.h: Likewise.
1822         * config/fp-bit.h: Likewise.
1823         * config/spu/spu.c (spu_libgcc_cmp_return_mode):
1824         New function.
1825         (spu_libgcc_shift_count_mode): New function.
1826         (TARGET_LIBGCC_CMP_RETURN_MODE): Define.
1827         (TARGET_LIBGCC_SHIFT_COUNT_MODE): Define.
1828
1829 2007-08-31  Joseph Myers  <joseph@codesourcery.com>
1830
1831         * tree-pretty-print.c: Include output.h.
1832         (dump_decl_name, dump_generic_node): Use %wd with pp_printf, not
1833         HOST_WIDE_INT_PRINT_DEC.
1834         * Makefile.in (tree-pretty-print.o): Add dependency on output.h.
1835
1836 2007-08-31  Zdenek Dvorak  <ook@ucw.cz>
1837
1838         PR rtl-optimization/33224
1839         * loop-iv.c (latch_dominating_def): Check that the definition belongs
1840         to the analysed region.
1841
1842 2007-08-31  Richard Guenther  <rguenther@suse.de>
1843
1844         * function.c (allocate_struct_function): Do not set
1845         current_function_returns_pointer.
1846         * function.h (struct var_refs_queue): Remove.
1847         (struct simple_obstack_stack): Likewise.
1848         (struct function): Remove fixup_var_refs_queue member.
1849         Remove returns_pointer flag.
1850         (current_function_returns_pointer): Remove define.
1851
1852 2007-08-31  Nick Clifton  <nickc@redhat.com>
1853
1854         * tree-ssa-coalesce.c (compare_pairs): Use the elements as
1855         secondary keys in order to obtain a stable sort.
1856
1857 2007-08-31  Nick Clifton  <nickc@redhat.com>
1858
1859         PR target/33132
1860         * config/m32r/constraints.md: Add W constraint for integer zero.
1861         * config/m32r/m32r.md (get_pc): Use W and i constraints.
1862         Fix length calculation by using alternatives.
1863
1864 2007-08-31  Richard Sandiford  <richard@codesourcery.com>
1865
1866         * optabs.c (shift_optab_p, commutative_optab_p): New functions,
1867         split out from expand_binop.
1868         (avoid_expensive_constant): New function.
1869         (expand_binop_directly): Remove commutative_op argument and
1870         (expand_binop_directly): Remove commutative_op argument and
1871         call cummutative_optab_p instead.  Do not change op0 or op1
1872         when swapping xop0 and xop1.  Apply avoid_expensive_constant
1873         to each argument after potential swapping.  Enforce the
1874         canonical order of commutative operands.
1875         (expand_binop): Use shift_optab_p and commutative_optab_p.
1876         Update the calls to expand_binop_directly.  Only force constants
1877         into registers when widening an operation.  Only swap operands
1878         once a direct expansion has been rejected.
1879         (expand_twoval_binop): Only force constants into registers when
1880         using a direct expansion.
1881
1882 2007-08-31  Maxim Kuvyrkov  <maxim@codesourcery.com>
1883
1884         * sched-deps.c (update_dep): Mark arguments with ATTRIBUTE_UNUSED.
1885         (sched_analyze_insn): Don't postprocess speculative dependencies when
1886         target has no scheduling.
1887         * tree-vect-transform.c (vect_estimate_min_profitable_iters): Fix
1888         'uninitialized' warning.
1889
1890 2007-08-31  Richard Guenther  <rguenther@suse.de>
1891
1892         * tree.c (build_complex_type): Always set TYPE_NAME for
1893         comples types.
1894
1895 2007-08-31  Olivier Hainque  <hainque@adacore.com>
1896
1897         * config/rs6000/xcoff.h (XCOFF_CSECT_DEFAULT_ALIGNMENT_STR): New
1898         internal macro. Default alignment factor for csect directives, chosen
1899         to match what BIGGEST_ALIGNMENT allows.
1900         (DATA_SECTION_ASM_OP): Use it.
1901         * config/rs6000/rs6000.c
1902         (rs6000_xcoff_output_readonly_section_asm_op):
1903         Use XCOFF_CSECT_DEFAULT_ALIGNMENT_STR.
1904         (rs6000_xcoff_output_readwrite_section_asm_op): Likewise.
1905         
1906 2007-08-31  Olivier Hainque  <hainque@adacore.com>
1907
1908         * dbxout.c (dbxout_block): Move declaration within the first
1909         #if defined (DBX_DEBUGGING_INFO) block.  Rearrange another such
1910         block to include the definition, together with the associated
1911         helpers.
1912
1913 2007-08-31  David Edelsohn  <edelsohn@gnu.org>
1914             Revital Eres  <eres@il.ibm.com>
1915
1916         * doc/invoke.texi (-mpaired): Document flag.
1917         * config.gcc: Include paired.h in powerpc extra_headers and
1918         750cl.h in powerpc-*-linux*paired*.
1919         * config/rs6000/rs6000.opt (-mpaired): New flag.
1920         * config/rs6000/rs6000.c (paired_init_builtins,
1921         paired_expand_builtin, paired_expand_lv_builtin,
1922         paired_expand_stv_builtin, paired_expand_predicate_builtin):
1923         New functions to support the paired single builtin functions.
1924         (rs6000_hard_regno_mode_ok): Handle PAIRED_VECTOR_MODE.
1925         (def_builtin, bdesc_3arg, bdesc_2arg, bdesc_1arg): Add paired
1926         single builtins.
1927         (bdesc_paired_preds): New structure for paired predicate
1928         instructions.
1929         (rs6000_expand_builtin): Expand paired single builtins.
1930         (rs6000_init_builtins): Init paired single builtins.
1931         (rs6000_common_init_builtins): Add v2sf_ftype_v2sf_v2sf_v2sf.
1932         Rename v2sf_ftype_v2sf_v2sf to v2sf_ftype_v2sf_v2sf_spe
1933         and v2sf_ftype_v2sf_spe to v2sf_ftype_v2sf.  Add new types
1934         v2sf_ftype_v2sf_v2sf and v2sf_ftype_v2sf.
1935         (rs6000_vector_mode_supported_p): Support paired vector mode.
1936         * config/rs6000/rs6000.h: (UNITS_PER_PAIRED_WORD,
1937         PAIRED_VECTOR_MODE, PAIRED_SIMD_REGNO_P, TARGET_PAIRED_FLOAT):
1938         New.
1939         (LOCAL_ALIGNMENT): Handle PAIRED_VECTOR_MODE.
1940         (DATA_ALIGNMENT): Likewise.
1941         (UNITS_PER_SIMD_WORD): Handle PAIRED_VECTOR_MODE.
1942         (rs6000_builtins): Add PAIRED builtins.
1943         * config/rs6000/rs6000.md: Include paired.md.
1944         * config/rs6000/paired.h: New.
1945         * config/rs6000/paired.md: New.
1946         * config/rs6000/750cl.h: New.
1947         * config/rs6000/spe.md: Recognize movv2sf instruction for 750cl.
1948
1949 2007-08-30  Ollie Wild  <aaw@google.com>
1950
1951         * c-opts.c (c_common_handle_option): Support -fno-directives-only.
1952         * gcc.c (default_compilers): Add -fno-directives-only to
1953         @assembler-with-cpp.
1954
1955 2007-08-30  Sandra Loosemore  <sandra@codesourcery.com>
1956
1957         PR middle-end/33211
1958
1959         * regclass.c (initial_fixed_regs): Revert previous change and make
1960         it const again.
1961         (initial_call_used_regs): Likewise.
1962         (initial_call_really_used_regs): Delete, reverting previous addition.
1963         (initial_reg_names): Likewise.
1964         (init_reg_sets): Revert previous change.
1965         (saved_fixed_regs): New.
1966         (saved_call_used_regs): New.
1967         (saved_call_really_used_regs): New.
1968         (saved_reg_names): New.
1969         (save_register_info): New.
1970         (restore_register_info): New.
1971         (init_reg_sets_1): Replace reset of register info with call to
1972         restore_register_info.
1973         * rtl.h (save_register_info): Declare.
1974         * toplev.c (backend_init): Call save_register_info.
1975
1976 2007-08-30  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1977
1978         * tree-ssa-propagate.c (set_rhs): Remove the copied annotation
1979         from the original statement.
1980
1981 2007-08-30  Chao-ying Fu  <fu@mips.com>
1982
1983         * c-lex.c (interpret_fixed): Declare.
1984         (interpret_float): Process _Fract and _Accum.
1985         (interpret_fixed): New function.
1986         * final.c (output_addr_const): Process CONST_FIXED.
1987         * simplify-rtx.c (simplify_const_unary_operation): Handle US_NEG.
1988         (simplify_binary_operation_1): Handle US_ASHIFT, SS_MULT, US_MULT,
1989         SS_DIV, US_DIV.
1990         (simplify_const_binary_operation): Handle SS_MULT, US_MULT, SS_DIV,
1991         US_DIV, US_ASHIFT.
1992         (simplify_immed_subreg): Support CONST_FIXED.
1993         Process MODE_FRACT, MODE_UFRACT, MODE_ACCUM, MODE_UACCUM.
1994         (simplify_subreg): Support CONST_FIXED.
1995
1996 2007-08-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1997
1998         * config/rs6000/ppu_intrinsics.h: New file.
1999         * config.gcc (powerpc*-*-* <extra_headers>): Install
2000         ppu_intrinsics.h.
2001
2002 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
2003
2004         * cfg.c (dump_flow_info): Change to also print entry and exit
2005         block info.
2006         * print-rtl.c (print_rtl_single): Allow to print rtl with
2007         -fdump-unnumbered.
2008         
2009 2007-08-30  Kenneth Zadeck <zadeck@naturalbridge.com>
2010
2011         * df-core.h (df_dump_region): New function.
2012         * df.h (df_dump_region): New function.
2013         * loop-invariant.c (find_defs): Add call to df_dump_region.
2014         * loop-iv.c (iv_analysis_loop_init): Changed call from df_dump to
2015         df_dump_region.
2016         
2017 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
2018
2019         PR target/33168
2020         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Return
2021         true if any of the compare_section_name calls returned true,
2022         rather than if any returned false.
2023
2024 2007-08-30  Richard Guenther  <rguenther@suse.de>
2025
2026         PR tree-optimization/33199
2027         * tree-ssa-structalias.c (handle_lhs_call): New function.
2028         (find_func_aliases): In non-IPA mode make sure that for
2029         calls that return a pointer we add a constraint for the
2030         result to point to anything.
2031
2032 2007-08-30  Richard Guenther  <rguenther@suse.de>
2033
2034         * doc/invoke.texi (-mveclibabi): Document new target option.
2035         * config/i386/i386.opt (-mveclibabi): New target option.
2036         * config/i386/i386.c (ix86_veclib_handler): Handler for
2037         vectorization library support.
2038         (override_options): Handle the -mveclibabi option, initialize
2039         the vectorization library handler.
2040         (ix86_builtin_vectorized_function): As fallback call the
2041         vectorization library handler, if set.
2042         (ix86_veclibabi_acml): New static function for ACML ABI style
2043         vectorization support.
2044
2045 2007-08-30  Jakub Jelinek  <jakub@redhat.com>
2046
2047         * config/rs6000/rs6000.c (rs6000_emit_sync): For QI or HI mode
2048         used_m, even if it is 32-bit aligned, adjust used_m MEM to have
2049         SImode and update m.  Don't run gen_lowpart_common on arbitrary
2050         memory address, force it to register first.
2051
2052         PR middle-end/32758
2053         * dce.c (dce_process_block): Don't delete setters of
2054         artificially used registers.
2055
2056 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2057
2058         * config/s390/s390.md ("*add<mode>3_alc_carry1_cc",
2059         "*add<mode>3_alc_carry1_cconly", "*add<mode>3_alc_carry2_cc",
2060         "*add<mode>3_alc_carry2_cconly"): New insn definitions.
2061
2062 2007-08-30  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
2063
2064         * config/s390/s390.c (s390_expand_addcc): Emit canonical alc
2065         pattern.
2066         * config/s390/s390.md ("*add<mode>3_alc_cc", "*add<mode>3_alc",
2067         "addti3", "*adddi3_31z", "*scond<mode>"): Make alc pattern canonical.
2068
2069 2007-08-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2070
2071         * system.h: Activate -Wcast-qual as warning-only.
2072
2073 2007-08-29  Paolo Bonzini  <bonzini@gnu.org>
2074
2075         PR target/33168
2076         * config/rs6000/rs6000.c (compare_section_name): New function.
2077         (rs6000_elf_in_small_data_p): Compare section prefixes instead
2078         of full name.
2079
2080 2007-08-29  Olivier Hainque  <hainque@adacore.com>
2081
2082         * xcoffout.c: #include debug.h.
2083         * Makefile.in (xcoffout.o): Add debug.h dependency.
2084
2085 2007-08-29  Uros Bizjak  <ubizjak@gmail.com>
2086
2087         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
2088         Change CONST_VECTOR_ELT to XVECEXP in elem calculation.
2089
2090 2007-08-29  Richard Guenther  <rguenther@suse.de>
2091
2092         * tree-pretty-print.c (dump_generic_node): Print
2093         label DECL_UID as D.%u.
2094         * tree-dfa.c (dump_variable): Print DECL_UID as D.%u.
2095
2096 2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2097
2098         * gcc/builtin-types.def (BT_FN_PTR_PTR_SIZE): New type.
2099         * gcc/builtins.def (BUILT_IN_REALLOC): New builtin.
2100
2101 2007-08-29  Douglas Gregor  <doug.gregor@gmail.com>
2102
2103         PR c++/33194
2104         * tree.c (build_type_attribute_qual_variant): Set canonical types
2105         on the final, unqualified attribute variant before building the
2106         qualified version.
2107
2108 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2109
2110         * config/bfin/bfin.c (bfin_expand_builtin): Fix the argument
2111         order of __builtin_bfin_cmplx_mac and __builtin_bfin_cmplx_msu.
2112
2113 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2114
2115         Revert
2116         2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2117         * config/bfin/bfin.md (composev2hi): Put operands into vector
2118         with correct order.
2119
2120 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2121
2122         * config/bfin/bfin.md (composev2hi): Put operands into vector
2123         with correct order.
2124
2125 2007-08-29  Jie Zhang  <jie.zhang@analog.com>
2126
2127         * config/bfin/bfin.c (bfin_expand_call): Inline PLT with l1_text
2128         attribute when appropriate.
2129         (bfin_handle_l1_text_attribute): New.
2130         (bfin_handle_l1_data_attribute): New.
2131         (bfin_attribute_table): Add attributes: l1_text, l1_data,
2132         l1_data_A and l1_data_B.
2133         * doc/extend.texi (node Function Attributes): Document l1_text
2134         function attribute.
2135         (Variable Attributes): Add Blackfin subsection. Document l1_data,
2136         l1_data_A and l1_data_B variable attributes.
2137
2138 2007-08-28  Jie Zhang  <jie.zhang@analog.com>
2139
2140         * config/bfin/bfin.opt (minline-plt): Add.
2141         * config/bfin/bfin.c (bfin_expand_call): Inline PLT when emit
2142         call to global functions.
2143         * doc/invoke.texi (Option Summary): Mention -minline-plt.
2144         (Blackfin Options): Document -minline-plt.
2145
2146 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
2147
2148         * config/m68k/m68k.c (m68k_get_function_kind): Assert we're never
2149         given a non-function.
2150         (m68k_ok_for_sibcall_p): Only sibcall functions of the same kind.
2151
2152 2007-08-28  DJ Delorie  <dj@redhat.com>
2153
2154         * config/sh/sh.c (sh_gimplify_va_arg_expr): Fix sh2a support.
2155
2156 2007-08-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2157
2158         * system.h (CONST_CAST): Avoid union for gcc-4.0.x.
2159
2160 2007-08-28  Richard Guenther  <rguenther@suse.de>
2161
2162         * tree.h (struct tree_function_decl): Increase size of
2163         function_code bitfield.
2164
2165 2007-08-28  Nathan Sidwell  <nathan@codesourcery.com>
2166             Kazu Hirata  <kazu@codesourcery.com>
2167
2168         * gcc/config/m68k/linux.h
2169         (M68K_HONOR_TARGET_STRICT_ALIGNMENT): Redefine as 0.
2170         * config/m68k/m68k.c (TARGET_RETURN_IN_MEMORY): New.
2171         (m68k_return_in_memory): New.
2172         * gcc/config/m68k/m68k.h (M68K_HONOR_TARGET_STRICT_ALIGNMENT):
2173         New.
2174
2175 2007-08-28  Uros Bizjak  <ubizjak@gmail.com>
2176
2177         PR target/32661
2178         * simplify-rtx.c (simplify_binary_operation_1) [VEC_SELECT]:
2179         Simplify nested VEC_SELECT (with optional VEC_CONCAT operator as
2180         operand) when top VEC_SELECT extracts scalar element.
2181         * config/i386/sse.md (*vec_extract_v4si_mem): New pattern.
2182         (*vec_extract_v4sf_mem): Ditto.
2183
2184 2007-08-28  Jakub Jelinek  <jakub@redhat.com>
2185
2186         PR middle-end/32370
2187         * passes.c (init_optimization_passes): Move pass_df_finish
2188         after pass_postreload sublist.
2189
2190         PR rtl-optimization/33148
2191         * simplify-rtx.c (simplify_unary_operation_1): Only optimize
2192         (neg (lt X 0)) if X has scalar int mode.
2193
2194         PR debug/32914
2195         * dwarf2out.c (rtl_for_decl_init): If vector decl has CONSTRUCTOR
2196         initializer, use build_vector_from_ctor if possible to create
2197         VECTOR_CST out of it.  If vector initializer is not VECTOR_CST
2198         even after this, return NULL.
2199
2200 2007-08-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2201
2202         * c-pretty-print.c (pp_c_constant): Handle COMPLEX_CST.
2203
2204 2007-08-28  Richard Guenther  <rguenther@suse.de>
2205
2206         * tree.h (DECL_DISREGARD_INLINE_LIMITS): New.
2207         (struct tree_function_decl): Make function_code a bitfield.
2208         Add disregard_inline_limits flag.
2209         * cgraphunit.c (cgraph_process_new_functions): Check
2210         DECL_DISREGARD_INLINE_LIMITS instead of disregard_inline_limits_p.
2211         (cgraph_preserve_function_body_p): Likewise.
2212         * ipa-inline.c (compute_inline_parameters): Likewise.
2213         * c-decl.c (finish_function): Set DECL_DISREGARD_INLINE_LIMITS
2214         for GNU C extern inline functions.
2215         (merge_decls): Merge DECL_DISREGARD_INLINE_LIMITS.
2216         * tree-inline.c (disregard_inline_limits_p): Remove.
2217         * tree-inline.h (disregard_inline_limits_p): Likewise.
2218         * c-common.c (handle_always_inline_attribute): Set
2219         DECL_DISREGARD_INLINE_LIMITS.
2220         * langhooks.c (add_builtin_function): Verify the function code
2221         fits in the bitfield.
2222
2223 2007-08-28  Mircea Namolaru  <namolaru@il.ibm.com>
2224             Vladimir Yanovsky  <yanov@il.ibm.com>
2225             Revital Eres  <eres@il.ibm.com>
2226             Andrey Belevantsev  <abel@ispras.ru>
2227
2228         * config/spu/spu.md: Recognize doloop pattern when -fmodulo-sched
2229         is set.
2230         * modulo-sched.c: Add documentation regarding do-loop.
2231         (doloop_register_get): Change number of arguments to support
2232         the new do-loop pattern and check whether COUNT_REG has no other
2233         occurences in the loop besides in the control part.
2234         (duplicate_insns_of_cycles): Do not duplicate the insn which
2235         changes count_reg as it is already adjusted.
2236         (generate_prolog_epilog): New argument to support the new
2237         do-loop pattern.  Change the subtract instruction to use
2238         expand_simple_binop.  Call duplicate_insns_of_cycles with new
2239         argument.
2240         (sms_schedule): Call doloop_register_get and
2241         generate_prolog_epilog with new argument.  Do not handle loops
2242         with single sets insns with subreg in their lhs.
2243         * loop-doloop.c (doloop_optimize): Support for another do-loop
2244         pattern.
2245         (doloop_condition_get): Gets an instruction instead of a pattern
2246         and change the return condition when the do-loop pattern is
2247         not parallel.
2248         * ddg.c (create_ddg_dep_from_intra_loop_link): Handle only reg
2249         deps when considering to not create edges.
2250
2251 2007-08-27  Alexandre Oliva  <aoliva@redhat.com>
2252
2253         * doc/extend.texi (gnu_inline funtion attribute): Document C++
2254         behavior.
2255
2256 2007-08-27  Jason Merrill  <jason@redhat.com>
2257
2258         PR c++/31337
2259         * gimplify.c (gimplify_modify_expr): Discard the assignment of 
2260         zero-sized types after calling gimplify_modify_expr_rhs.
2261
2262 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
2263
2264         * regclass.c (init_reg_autoinc): Fix typo.
2265
2266 2007-08-27  Daniel Berlin  <dberlin@dberlin.org>
2267         
2268         Fix PR tree-optimization/33173
2269         * tree-ssa-alias.c (find_used_portions): Fix reversed test.
2270
2271 2007-08-27  H.J. Lu  <hongjiu.lu@intel.com>
2272
2273         PR target/31385
2274         * config/i386/i386.h (VALID_DFP_MODE_P): New.
2275         * config/i386/i386.c (ix86_hard_regno_mode_ok): Allow DFP in
2276         GPR.
2277
2278 2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
2279             David Ung  <davidu@mips.com>
2280             Nigel Stephens <nigel@mips.com>
2281
2282         Separate target-specific initialization from general
2283         back-end initialization.
2284
2285         * toplev.c (init_alignments): New, split out from...
2286         (process_options): ...here.
2287         (backend_init_target): New, split out from...
2288         (backend_init): ...here.
2289         (lang_dependent_init_target): New, split out from...
2290         (lang_dependent_init): ...here.
2291         (target_reinit): New.
2292         * toplev.h (target_reinit): Declare.
2293         * expr.c (init_expr_target): Renamed from init_expr_once, since it
2294         now can be called more than once.  Update comments.
2295         * expr.h (init_expr_target): Likewise.
2296         * alias.c (init_alias_target): Renamed from init_alias_once, since it
2297         now can be called more than once.  Explicitly zero
2298         static_reg_base_value.
2299         * emit-rtl.c (init_emit_regs): New, split out from...
2300         (init_emit_once): Here.
2301         * regclass.c (initial_fixed_regs, initial_call_used_regs): Make
2302         non-const, so that changes from command-line arguments can overwrite
2303         values provided by the static initializers.
2304         (initial_call_really_used_regs): New, used similarly to the above.
2305         (initial_reg_names): Likewise.
2306         (last_mode_for_init_move_cost): Promoted function-local static to
2307         file-scope static to make it accessible outside init_move_cost.
2308         (init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
2309         Do not initialize inv_reg_alloc_order yet, either.  Do initialize
2310         reg_names since it is needed for parsing command-line options.
2311         (init_move_cost): Use last_mode_for_init_move_cost instead of
2312         function-local static.
2313         (init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
2314         call_really_used_regs now.  Reinitialize reg_names.  Also
2315         initialize inv_reg_alloc_order.  Zero reg_class_subunion and
2316         reg_class_superunion.  Clear losing_caller_save_reg_set.
2317         Preserve global registers if called more than once.  Reset
2318         move cost, may_move_in_cost, may_move_out_cost, and
2319         last_mode_for_init_move_cost.
2320         (init_reg_modes_target): Renamed from init_reg_modes_once, since it
2321         can now be invoked more than once.  Update comments.
2322         (init_regs): Update comments.
2323         (fix_register): Update initial_fixed_regs, initial_call_used_regs,
2324         and initial_call_really_used_regs, instead of the non-initial 
2325         variables.  This allows us to save the command-line register settings
2326         after target reinitialization.
2327         (init_reg_autoinc): Zero forbidden_inc_dec_classes.
2328         * rtl.h (init_emit_regs): Declare.
2329         (init_reg_modes_target, init_alias_target): Renamed as described
2330         above.
2331         * reload1.c (init_reload): Update comments.
2332         * optabs.c (init_optabs): Likewise.
2333         * cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
2334         
2335 2007-08-26  Chao-ying Fu  <fu@mips.com>
2336
2337         * rtl.h (XCNMPFV): Preserve const-ness of parameters through use of
2338         __typeof().
2339
2340 2007-08-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2341
2342         * alias.c (memory_modified_1, memory_modified_in_insn_p):
2343         Constify.
2344         * basic-block.h (tree_predicted_by_p, rtl_predicted_by_p):
2345         Likewise.
2346         * bb-reorder.c (copy_bb_p): Likewise.
2347         * cfghooks.c (can_remove_branch_p, can_merge_blocks_p,
2348         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
2349         block_ends_with_condjump_p): Likewise.
2350         * cfghooks.h (can_remove_branch_p, can_merge_blocks_p,
2351         predicted_by_p, can_duplicate_block_p, block_ends_with_call_p,
2352         block_ends_with_condjump_p): Likewise.
2353         * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise.
2354         * cfgrtl.c (can_delete_note_p, can_delete_label_p,
2355         rtl_can_merge_blocks, cfg_layout_can_merge_blocks_p,
2356         rtl_block_ends_with_call_p, rtl_block_ends_with_condjump_p,
2357         need_fake_edge_p, rtl_can_remove_branch_p): Likewise.
2358         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Use
2359         debug_true_const_tree instad of debug_true_tree.
2360         * debug.c (do_nothing_debug_hooks): Likewise.
2361         * debug.h (ignore_block, debug_true_const_tree): Constify.
2362         * dwarf2out.c (stack_adjust_offset, clobbers_queued_reg_save,
2363         dwarf2out_ignore_block, is_pseudo_reg, is_tagged_type,
2364         decl_ultimate_origin, block_ultimate_origin, lookup_decl_loc,
2365         same_dw_val_p, add_ranges, is_subrange_type, type_is_enum,
2366         dbx_reg_number, is_based_loc, field_type,
2367         simple_type_align_in_bits, simple_decl_align_in_bits,
2368         simple_type_size_in_bits, field_byte_offset, insert_float,
2369         type_tag, member_declared_type, is_redundant_typedef,
2370         secname_for_decl, is_inlined_entry_point): Likewise.
2371         * emit-rtl.c (const_next_insn, const_previous_insn,
2372         const_next_nonnote_insn, const_prev_nonnote_insn,
2373         const_next_real_insn, const_prev_real_insn,
2374         const_next_active_insn, const_prev_active_insn, const_next_label,
2375         const_prev_label): Likewise.
2376         * except.h (lookup_stmt_eh_region_fn, lookup_stmt_eh_region):
2377         Likewise.
2378         * haifa-sched.c (may_trap_exp, haifa_classify_insn,
2379         find_set_reg_weight, no_real_insns_p, find_set_reg_weight,
2380         sched_insn_is_legitimate_for_speculation_p): Likewise.
2381         * jump.c (reversed_comparison_code_parts,
2382         reversed_comparison_code, reversed_comparison, condjump_label):
2383         Likewise.
2384         * predict.c (rtl_predicted_by_p, tree_predicted_by_p): Likewise.
2385         * reg-stack.c (stack_regs_mentioned_p, stack_regs_mentioned):
2386         Likewise.
2387         * rtl.h (const_previous_insn, const_next_insn,
2388         const_prev_nonnote_insn, const_next_nonnote_insn,
2389         const_prev_real_insn, const_next_real_insn,
2390         const_prev_active_insn, const_next_active_insn, const_prev_label,
2391         const_next_label, modified_between_p, modified_in_p,
2392         const_note_storeskeep_with_call_p, condjump_label,
2393         reversed_comparison, reversed_comparison_code,
2394         reversed_comparison_code_parts, memory_modified_in_insn_p,
2395         stack_regs_mentioned): Likewise.
2396         * rtlanal.c (modified_between_p, modified_in_p, const_note_stores,
2397         keep_with_call_p): Likewise.
2398         * sched-deps.c (deps_may_trap_p, sched_get_condition,
2399         conditions_mutex_p, sched_insns_conditions_mutex_psd_next_list,
2400         sd_lists_size, sd_lists_empty_p): Likewise.
2401         * sched-int.h (sched_insns_conditions_mutex_p,
2402         haifa_classify_insn, no_real_insns_p,
2403         sched_insn_is_legitimate_for_speculation_p, sd_next_list,
2404         sd_lists_size, sd_lists_empty_p): Likewise.
2405         * sdbout.c (sdb_debug_hooks): Likewise.
2406         * tree-cfg.c (tree_can_merge_blocks_p, is_ctrl_altering_stmt,
2407         stmt_ends_bb_p, tree_can_remove_branch_p, tree_can_duplicate_bb_p,
2408         -tree_block_ends_with_call_p, tree_block_ends_with_condjump_p):
2409         Likewise.
2410         * tree-eh.c (lookup_stmt_eh_region_fn, lookup_stmt_eh_region,
2411         tree_can_throw_internal): Likewise.
2412         * tree-flow-inline.h (phi_nodes): Likewise.
2413         * tree-flow.h (phi_nodesstmt_ends_bb_p, is_ctrl_altering_stmt,
2414         tree_can_throw_internal, lookup_stmt_eh_region): Likewise.
2415         * tree-gimple.c (const_get_call_expr_in): Likewise.
2416         * tree-gimple.h (const_get_call_expr_in): Likewise.
2417         * tree.c (const_lookup_attribute, attribute_list_equal,
2418         attribute_list_contained): Likewise.
2419         * tree.h (attribute_list_equal, attribute_list_contained,
2420         const_lookup_attribute): Likewise.
2421         * vmsdbgout.c (vmsdbgout_ignore_block): Likewise.
2422
2423 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
2424
2425         * tree-ssa-sccvn.c, tree-ssa-sccvn.h, tree-vn.c,
2426         tree-ssa-pre.c: Remove unnecessary trailing whitespace.
2427
2428 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
2429
2430         PR target/32991
2431         * config/alpha/constraints.md: Delete "svn:mime-type" property
2432         with svn propdel "svn:mime-type".
2433
2434 2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>
2435
2436         PR middle-end/33181
2437         * ifcvt.c (noce_get_alt_condition): Make sure that the previous
2438         non NOTE insn doesn't cross basic block.
2439         (noce_try_abs): Likewise.
2440         (noce_process_if_block): Likewise.
2441
2442 2007-08-26  David Edelsohn  <edelsohn@gnu.org>
2443
2444         PR target/33151
2445         * config/rs6000/predicates.md (offsettable_mem_operand): Memory
2446         operand without auto-inc-dec.
2447         * config/rs6000/rs6000.md (floatsidf2_internal): Use
2448         offsettable_mem_operand.
2449         (floatunssidf2_internal): Same.
2450         (fix_truncdfsi2_internal): Same.
2451         (floatsidf_ppc64): Same.
2452         (floatunssidf_ppc64): Same.
2453         (fix_trunctfsi2_internal): Same.
2454
2455 2007-08-26  Bernhard Fischer  <aldot@gcc.gnu.org>
2456
2457         PR bootstrap/30620
2458         * Makefile.in (libbackend.o): Add gcov-iov.h dependency and
2459         pass defines needed for version.c.
2460
2461 2007-08-25  Joseph Myers  <joseph@codesourcery.com>
2462
2463         * configure.ac (--debug-prefix-map check): Change assembler
2464         version presumed to have feature to 2.18.
2465         * configure: Regenerate.
2466
2467 2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2468
2469         * c-common.c (vector_types_convertible_p,
2470         decl_with_nonnull_addr_p, c_promoting_integer_type_p,
2471         self_promoting_args_p): Constify.
2472         * c-common.h (has_c_linkage, decl_with_nonnull_addr_p,
2473         c_promoting_integer_type_p, self_promoting_args_p,
2474         anon_aggr_type_p, vector_types_convertible_p): Likewise.
2475         * c-decl.c (anon_aggr_type_p): Likewise.
2476         * * c-dump.c (dump_stmt): Likewise.
2477         * c-objc-common.c (has_c_linkage): Likewise.
2478         * c-tree.h (same_translation_unit_p): Likewise.
2479         * c-typeck.c (null_pointer_constant_p,
2480         tagged_types_tu_compatible_p, function_types_compatible_p,
2481         type_lists_compatible_p, lvalue_or_else, lvalue_p,
2482         comptypes_internal, struct tagged_tu_seen_cache,
2483         same_translation_unit_p, alloc_tagged_tu_seen_cache,
2484         c_size_in_bytes): Likewise.
2485         * ggc-common.c (compare_ptr_data, hash_descriptor, eq_descriptor,
2486         hash_ptr, eq_ptr): Likewise.
2487         * langhooks-def.h (lhd_decl_ok_for_sibcall,
2488         LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Likewise.
2489         * langhooks.c (lhd_decl_ok_for_sibcall): Likewise.
2490         * langhooks.h (ok_for_sibcall, omp_privatize_by_reference):
2491         Likewise.
2492         * optabs.c (optab_for_tree_code): Likewise.
2493         * optabs.h (optab_for_tree_code): Likewise.
2494         * rtl.h (simplify_rtx): Likewise.
2495         * simplify-rtx.c (simplify_rtx): Likewise.
2496         * tree-dump.c (queue, queue_and_dump_index, queue_and_dump_type,
2497         dump_flag, dump_node): Likewise.
2498         * tree-dump.h (struct dump_info, dump_stmt, queue_and_dump_index,
2499         queue_and_dump_type, dump_flag): Likewise.
2500         * tree-flow.h (vect_can_force_dr_alignment_p): Likewise.
2501         * tree-pass.h (dump_node): Likewise.
2502         * tree-vectorizer.c (vect_can_force_dr_alignment_p,
2503         supportable_narrowing_operation): Likewise.
2504         * tree-vectorizer.h (vect_can_force_dr_alignment_p,
2505         supportable_narrowing_operation): Likewise.
2506         * tree-vrp.c (needs_overflow_infinity, supports_overflow_infinity,
2507         is_negative_overflow_infinity, is_positive_overflow_infinity,
2508         is_overflow_infinity, vrp_val_is_max, vrp_val_is_min,
2509         nonnull_arg_p, get_value_range, vrp_operand_equal_p,
2510         update_value_range, add_equivalence, ssa_name_nonnegative_p,
2511         ssa_name_nonzero_p, fp_predicate): Likewise.
2512         * tree.c (auto_var_in_fn_p, empty_body_p): Likewise.
2513         * tree.h (empty_body_p, auto_var_in_fn_p, ssa_name_nonzero_p,
2514         ssa_name_nonnegative_p): Likewise.
2515
2516 2007-08-25  Hans Kester  <hans.kester@ellips.nl>
2517
2518         * config.gcc : Add x86_64-elf target.
2519
2520 2007-08-25  Jakub Jelinek  <jakub@redhat.com>
2521
2522         * expr.c (store_expr): Fix order of store_by_pieces arguments.
2523
2524 2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
2525             Nigel Stephens <nigel@mips.com>
2526
2527         PR target/11787
2528
2529         * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
2530         (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
2531         * expr.c (SET_BY_PIECES_P): Define.
2532         (can_store_by_pieces, store_by_pieces): Add MEMSETP argument; use
2533         it to decide whether to use SET_BY_PIECES_P or STORE_BY_PIECES_P.
2534         (store_expr): Pass MEMSETP argument to can_store_by_pieces and
2535         store_by_pieces.
2536         * expr.h (SET_RATIO): Define.
2537         (can_store_by_pieces, store_by_pieces): Update prototypes.
2538         * builtins.c (expand_builtin_memcpy): Pass MEMSETP argument to
2539         can_store_by_pieces/store_by_pieces.
2540         (expand_builtin_memcpy_args): Likewise.
2541         (expand_builtin_strncpy): Likewise.
2542         (expand_builtin_memset_args): Likewise.  Also remove special case
2543         for optimize_size so that can_store_by_pieces/SET_BY_PIECES_P can
2544         decide what to do instead.
2545         * value-prof.c (tree_stringops_transform): Pass MEMSETP argument
2546         to can_store_by_pieces.
2547
2548         * config/sh/sh.h (SET_BY_PIECES_P): Clone from STORE_BY_PIECES_P.
2549         * config/s390/s390.h (SET_BY_PIECES_P): Likewise.
2550
2551         * config/mips/mips.opt (mmemcpy): Change from Var to Mask.
2552         * config/mips/mips.c (override_options): Make -Os default to -mmemcpy.
2553         * config/mips/mips.h (MIPS_CALL_RATIO): Define.
2554         (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Define.
2555         (STORE_BY_PIECES_P): Define.
2556
2557 2007-08-24  Tom Tromey  <tromey@redhat.com>
2558
2559         * varpool.c (varpool_last_needed_node): Fix comment typo.
2560         * c-decl.c (duplicate_decls): Fix comment typo.
2561         (clone_underlying_type): Update comment.
2562
2563 2007-08-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2564
2565         * config/alpha/alpha.c (alpha_mangle_type, decl_has_samegp,
2566         alpha_in_small_data_p, alpha_split_complex_arg,
2567         alpha_stdarg_optimize_hook, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
2568         Constify.
2569         * config/arm/arm-protos.h (arm_mangle_type): Likewise.
2570         * config/arm/arm.c (arm_comp_type_attributes, arm_mangle_type):
2571         Likewise.
2572         * config/bfin/bfin.c (funkind, bfin_comp_type_attributes,
2573         TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
2574         * config/darwin-protos.h (darwin_binds_local_p): Likewise.
2575         * config/darwin.c (darwin_binds_local_p): Likewise.
2576         * config/frv/frv.c (frv_string_begins_with, frv_in_small_data_p):
2577         Likewise.
2578         * config/i386/i386-protos.h (i386_pe_binds_local_p,
2579         i386_pe_valid_dllimport_attribute_p): Likewise.
2580         * config/i386/i386.c (ix86_function_regparm,
2581         ix86_comp_type_attributes, ix86_ms_bitfield_layout_p,
2582         x86_can_output_mi_thunk, ix86_mangle_type,
2583         TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
2584         * config/i386/winnt.c (i386_pe_valid_dllimport_attribute_p,
2585         i386_pe_binds_local_p): Likewise.
2586         * config/ia64/ia64.c
2587         (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
2588         ia64_needs_block_p, ia64_in_small_data_p, ia64_mangle_type,
2589         ia64_invalid_conversion, ia64_invalid_unary_op,
2590         ia64_invalid_binary_op, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
2591         Likewise.
2592         * config/m32c/m32c.c (m32c_comp_type_attributes): Likewise.
2593         * config/m32r/m32r.c (m32r_in_small_data_p): Likewise.
2594         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Likewise.
2595         * config/mips/mips.c (mips_use_blocks_for_constant_p,
2596         mips_in_small_data_p, mips_use_anchors_for_symbol_p,
2597         mips_comp_type_attributes, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
2598         mips_near_type_p, mips_far_type_p, mips_global_symbol_p,
2599         mips_symbol_binds_local_p, mips_classify_symbol): Likewise.
2600         * config/pa/pa.c (pa_commutative_p): Likewise.
2601         * config/rs6000/rs6000-protos.h (rs6000_elf_in_small_data_p):
2602         Likewise.
2603         * config/rs6000/rs6000.c (rs6000_invalid_within_doloop,
2604         rs6000_ms_bitfield_layout_p, rs6000_mangle_type,
2605         rs6000_use_blocks_for_constant_p,
2606         rs6000_vector_alignment_reachable, rs6000_is_opaque_type,
2607         invalid_arg_for_unprototyped_fn, TARGET_ASM_CAN_OUTPUT_MI_THUNK,
2608         TARGET_SPLIT_COMPLEX_ARG, rs6000_elf_in_small_data_p): Likewise.
2609         * config/s390/s390.c (s390_mangle_type,
2610         TARGET_ASM_CAN_OUTPUT_MI_THUNK, TARGET_INVALID_WITHIN_DOLOOP):
2611         Likewise.
2612         * config/score/score.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
2613         th_in_small_data_p): Likewise.
2614         * config/sh/sh.c (sh_ms_bitfield_layout_p,
2615         sh_dwarf_calling_convention, TARGET_ASM_CAN_OUTPUT_MI_THUNK):
2616         Likewise.
2617         * config/sparc/sparc.c (sparc_can_output_mi_thunk,
2618         sparc_mangle_type): Likewise.
2619         * config/spu/spu.c (spu_vector_alignment_reachable): Likewise.
2620         * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): Likewise.
2621         * emit-rtl.c (const_fixed_htab_hash, const_fixed_htab_eq):
2622         Likewise.
2623         * hooks.c (hook_bool_mode_const_rtx_false,
2624         hook_bool_mode_const_rtx_true,
2625         hook_bool_const_tree_hwi_hwi_const_tree_false,
2626         hook_bool_const_tree_hwi_hwi_const_tree_true,
2627         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
2628         hook_constcharptr_const_tree_null,
2629         hook_constcharptr_const_rtx_null,
2630         hook_constcharptr_const_tree_const_tree_null,
2631         hook_constcharptr_int_const_tree_null,
2632         hook_constcharptr_int_const_tree_const_tree_null): New.
2633         (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
2634         hook_bool_tree_hwi_hwi_tree_false,
2635         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
2636         hook_int_tree_tree_1, hook_constcharptr_tree_null,
2637         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
2638         hook_constcharptr_int_tree_null,
2639         hook_constcharptr_int_tree_tree_null): Delete.
2640         (default_can_output_mi_thunk_no_vcall): Constify.
2641         * hooks.h (hook_bool_mode_rtx_false, hook_bool_mode_rtx_true,
2642         hook_bool_tree_hwi_hwi_tree_false,
2643         hook_bool_tree_hwi_hwi_tree_true, hook_int_tree_0,
2644         hook_int_tree_tree_1, hook_constcharptr_tree_null,
2645         hook_constcharptr_rtx_null, hook_constcharptr_tree_tree_null,
2646         hook_constcharptr_int_tree_null,
2647         hook_constcharptr_int_tree_tree_null): Delete.
2648         (hook_bool_mode_const_rtx_false, hook_bool_mode_const_rtx_true,
2649         hook_bool_const_tree_hwi_hwi_const_tree_false,
2650         hook_bool_const_tree_hwi_hwi_const_tree_true,
2651         hook_int_const_tree_0, hook_int_const_tree_const_tree_1,
2652         hook_constcharptr_const_tree_null,
2653         hook_constcharptr_const_rtx_null,
2654         hook_constcharptr_const_tree_const_tree_null,
2655         hook_constcharptr_int_const_tree_null,
2656         hook_constcharptr_int_const_tree_const_tree_null): New.
2657         (default_can_output_mi_thunk_no_vcall): Constify.
2658         * integrate.c (function_attribute_inlinable_p): Likewise.
2659         * integrate.h (function_attribute_inlinable_p): Likewise.
2660         * jump.c (rtx_renumbered_equal_p): Likewise.
2661         * output.h (decl_readonly_section, categorize_decl_for_section,
2662         default_use_anchors_for_symbol_p, default_binds_local_p,
2663         default_binds_local_p_1): Likewise.
2664         * rtl.h (rtx_renumbered_equal_p, decl_default_tls_model):
2665         Likewise.
2666         * target-def.h (TARGET_ASM_CAN_OUTPUT_MI_THUNK,
2667         TARGET_VALID_DLLIMPORT_ATTRIBUTE_P, TARGET_VECTOR_OPAQUE_P,
2668         TARGET_COMMUTATIVE_P, TARGET_USE_BLOCKS_FOR_CONSTANT_P,
2669         TARGET_COMP_TYPE_ATTRIBUTES,
2670         TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,
2671         TARGET_MS_BITFIELD_LAYOUT_P, TARGET_MANGLE_TYPE,
2672         TARGET_IN_SMALL_DATA_P, TARGET_INVALID_CONVERSION,
2673         TARGET_INVALID_UNARY_OP, TARGET_INVALID_BINARY_OP,
2674         TARGET_DWARF_CALLING_CONVENTION): Likewise.
2675         * target.h (can_output_mi_thunk, needs_block_p,
2676         first_cycle_multipass_dfa_lookahead_guard_spec,
2677         vector_alignment_reachable, comp_type_attributes,
2678         function_attribute_inlinable_p, ms_bitfield_layout_p, mangle_type,
2679         commutative_p, use_blocks_for_constant_p,
2680         use_anchors_for_symbol_p, in_small_data_p, binds_local_p,
2681         vector_opaque_p, dwarf_calling_convention, stdarg_optimize_hook,
2682         invalid_within_doloop, valid_dllimport_attribute_p,
2683         split_complex_arg, invalid_arg_for_unprototyped_fn,
2684         invalid_conversion, invalid_unary_op, invalid_binary_op):
2685         Likewise.
2686         * targhooks.c (default_invalid_within_doloop,
2687         hook_invalid_arg_for_unprototyped_fn,
2688         default_builtin_vector_alignment_reachable): Likewise.
2689         (hook_bool_rtx_commutative_p): Delete.
2690         (hook_bool_const_rtx_commutative_p): New.
2691         * targhooks.h (default_invalid_within_doloop,
2692         default_builtin_vector_alignment_reachable,
2693         hook_invalid_arg_for_unprototyped_fn): Constify.
2694         (hook_bool_rtx_commutative_p): Delete.
2695         (hook_bool_const_rtx_commutative_p): New.
2696         * varasm.c (bss_initializer_p, decl_default_tls_model,
2697         categorize_decl_for_section, decl_readonly_section,
2698         default_use_anchors_for_symbol_p, default_binds_local_p,
2699         default_binds_local_p_1): Constify.
2700
2701 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
2702
2703         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): Define
2704         __NO_BUILTIN if -fno-builtin.
2705
2706 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
2707
2708         * config/bfin/bfin.c (print_operand): Report error instead of
2709         ICE for wrong operand.
2710
2711 2007-08-24  Michael Matz  <matz@suse.de>
2712
2713         * Makefile.in (GTFILES_H): Use $(patsubst) instead of $(subst).
2714
2715 2007-08-24  Richard Guenther  <rguenther@suse.de>
2716
2717         PR middle-end/33166
2718         * tree-ssa.c (useless_type_conversion_p): Split into a
2719         recursive and a non-recursive part.
2720         (useless_type_conversion_p_1): New function.
2721         * tree-ssa-ccp.c (fold_stmt_r): Make sure that the result
2722         from maybe_fold_offset_to_reference is trivially convertible
2723         to the desired type before doing the simplification.
2724
2725 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
2726
2727         * expr.c (store_expr): Optimize initialization of an array
2728         with STRING_CST.
2729         * expr.h (builtin_strncpy_read_str): New prototype.
2730         * builtins.c (builtin_strncpy_read_str): Remove prototype.
2731         No longer static.
2732
2733 2007-08-24  Uros Bizjak  <ubizjak@gmail.com>
2734
2735         PR middle-end/33157
2736         * ifcvt.c (noce_find_if_block): Do not clear if_info.cond_earliest
2737         field when initializing if_info structure.
2738
2739 2007-08-24  Richard Guenther  <rguenther@suse.de>
2740
2741         * Makefile.in (tree-inline.o): Add $(TARGET_H) and $(INTEGRATE_H)
2742         dependencies.
2743         * c-objc-common.c (c_cannot_inline_tree_fn): Remove.
2744         * langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Likewise.
2745         * tree-inline.c (inlinable_function_p): Fold in common parts of
2746         the cannot_inline_tree_fn langhook.
2747         * langhooks-def.h (lhd_tree_inlining_cannot_inline_tree_fn): Remove.
2748         (LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN): Likewise.
2749         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
2750         cannot_inline_tree_fn langhook.
2751         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove
2752         cannot_inline_tree_fn member.
2753
2754 2007-08-24  Richard Guenther  <rguenther@suse.de>
2755
2756         * expr.c (get_inner_reference): Do computation of bitoffset
2757         from offset in a way we can detect overflow reliably.
2758
2759 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
2760
2761         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define for uClibc.
2762
2763 2007-08-24  Jie Zhang  <jie.zhang@analog.com>
2764
2765         * config/bfin/bfin.opt (mfast-fp): Add.
2766         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Let
2767         libbffastfp override libgcc if -mfast-fp.
2768         * config/bfin/bfin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
2769         * doc/invoke.texi (Option Summary): Mention -mfast-fp.
2770         (Blackfin Options): Document -mfast-fp.
2771
2772 2007-08-24  Jakub Jelinek  <jakub@redhat.com>
2773
2774         PR tree-optimization/32573
2775         PR middle-end/32946
2776         * tree-data-ref.c (initialize_data_dependence_relation): Clear
2777         DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
2778         (finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
2779         (build_classic_dist_vector): Return false rather than true if
2780         DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
2781         if either subscript_dependence_tester_1 or build_classic_dist_vector_1
2782         returned false.  Don't call save_dist_v before calling
2783         build_classic_dist_vector_1.
2784         (free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
2785         with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
2786         DDR_DIR_VECTS vectors.
2787
2788 2007-08-23  Brian Sidebotham  <brian.sidebotham@gmail.com>
2789
2790         * configure.ac (leb128): Modify sed statement to work with any
2791         binutils version string.
2792         * configure: Regenerate
2793
2794 2007-08-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2795
2796         * config/arc/arc-protos.h arc_select_cc_mode, gen_compare_reg):
2797         Wrap in RTX_CODE macro guard.
2798         * config/arm/pe.c (arm_dllexport_p, arm_dllimport_p,
2799         arm_dllexport_name_p, arm_dllimport_name_p, arm_mark_dllexport,
2800         arm_mark_dllimport, arm_pe_encode_section_info,
2801         arm_pe_unique_section): Use ISO-C function declarations.
2802         * config/c4x/c4x-c.c (c4x_parse_pragma, c4x_pr_CODE_SECTION,
2803         c4x_pr_DATA_SECTION, c4x_pr_FUNC_IS_PURE,
2804         c4x_pr_FUNC_NEVER_RETURNS, c4x_pr_INTERRUPT, c4x_pr_ignored):
2805         Likewise.
2806         * config/iq2000/iq2000.h (ASM_OUTPUT_SKIP): Fix format warning.
2807         * config/m68hc11/m68hc11.h (ASM_OUTPUT_EXTERNAL): Undef before
2808         defining.
2809         * config/mips/mips.h (ASM_DECLARE_OBJECT_NAME): Fix format
2810         warnings.
2811         * config/mn10300/mn10300.h (OUTPUT_ADDR_CONST_EXTRA): Likewise.
2812         * config/pdp11/pdp11.c (pdp11_output_function_epilogue): Likewise.
2813         (register_move_cost): Use ISO-C function declarations.
2814         * config/pdp11/pdp11.h (PRINT_OPERAND): Fix format warnings.
2815         * config/score/score-protos.h (score_declare_object): Add
2816         ATTRIBUTE_PRINTF_4.
2817         * config/score/score.h (ASM_DECLARE_OBJECT_NAME): Fix format
2818         warnings.
2819         * final.c (profile_function): Avoid empty if-bodies.
2820         
2821         
2822         * calls.c (must_pass_in_stack_var_size,
2823         must_pass_in_stack_var_size_or_pad): Constify.
2824         * config/alpha/alpha-protos.h (function_value): Likewise.
2825         * config/alpha/alpha.c (alpha_return_in_memory,
2826         alpha_pass_by_reference, function_value,
2827         unicosmk_must_pass_in_stack, TARGET_PROMOTE_FUNCTION_ARGS,
2828         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
2829         Likewise.
2830         * config/arc/arc.c (arc_return_in_memory, arc_pass_by_reference,
2831         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
2832         TARGET_PROMOTE_PROTOTYPES): Likewise.
2833         * config/arm/arm-protos.h (arm_return_in_memory,
2834         arm_pad_arg_upward, arm_function_value): Likewise.
2835         * config/arm/arm.c (arm_pass_by_reference,
2836         arm_promote_prototypes, arm_return_in_msb, arm_must_pass_in_stack,
2837         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
2838         arm_function_value, arm_return_in_memory, arm_pad_arg_upward):
2839         Likewise.
2840         * config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Likewise.
2841         * config/avr/avr-protos.h (avr_function_value): Likewise.
2842         * config/avr/avr.c (avr_return_in_memory,
2843         gas_output_limited_string, gas_output_ascii, avr_function_value,
2844         avr_return_in_memory): Likewise.
2845         * config/bfin/bfin-protos.h (bfin_return_in_memory): Likewise.
2846         * config/bfin/bfin.c (bfin_pass_by_reference,
2847         bfin_return_in_memory, TARGET_PROMOTE_PROTOTYPES,
2848         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN):
2849         Likewise.
2850         * config/cris/cris.c (cris_pass_by_reference,
2851         TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
2852         * config/crx/crx.c (crx_return_in_memory): Likewise.
2853         * config/darwin.c (function_base, machopic_function_base_name):
2854         Likewise.
2855         * config/fr30/fr30.c (fr30_must_pass_in_stack,
2856         TARGET_PROMOTE_PROTOTYPES): Likewise.
2857         * config/frv/frv.c (frv_must_pass_in_stack): Likewise.
2858         * config/h8300/h8300.c (h8300_return_in_memory): Likewise.
2859         * config/i386/i386-protos.h (ix86_return_in_memory,
2860         ix86_sol10_return_in_memory): Likewise.
2861         * config/i386/i386.c (ix86_function_value,
2862         ix86_function_sseregparm, ix86_must_pass_in_stack,
2863         type_natural_mode, classify_argument, examine_argument,
2864         construct_container, ix86_pass_by_reference, function_value_32,
2865         function_value_64, ix86_function_value_1, return_in_memory_32,
2866         return_in_memory_64, return_in_memory_ms_64,
2867         ix86_return_in_memory, ix86_sol10_return_in_memory,
2868         TARGET_PROMOTE_PROTOTYPES): Likewise.
2869         * config/ia64/ia64-protos.h (ia64_function_value,
2870         ia64_hpux_function_arg_padding): Likewise.
2871         * config/ia64/ia64.c (hfa_element_mode, ia64_return_in_memory,
2872         ia64_function_value, bundle_state_hash, bundle_state_eq_p,
2873         ia64_hpux_function_arg_padding): Likewise.
2874         * config/iq2000/iq2000-protos.h (function_arg,
2875         iq2000_function_value): Likewise.
2876         * config/iq2000/iq2000.c (iq2000_return_in_memory,
2877         iq2000_pass_by_reference, TARGET_PROMOTE_FUNCTION_ARGS,
2878         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
2879         function_arg, iq2000_function_value): Likewise.
2880         * config/m32c/m32c-protos.h (m32c_function_value,
2881         m32c_promote_function_return): Likewise.
2882         * config/m32c/m32c.c (m32c_pass_by_reference,
2883         m32c_promote_prototypes, m32c_promote_function_return,
2884         m32c_function_value): Likewise.
2885         * config/m32r/m32r.c (m32r_return_in_memory,
2886         m32r_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
2887         m32r_in_small_data_p): Likewise.
2888         * config/m68hc11/m68hc11-protos.h (m68hc11_function_arg_padding):
2889         Likewise.
2890         * config/m68hc11/m68hc11.c (m68hc11_return_in_memory,
2891         m68hc11_function_arg_padding): Likewise.
2892         * config/m68k/m68k-protos.h (m68k_function_value): Likewise.
2893         * config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES,
2894         m68k_function_value): Likewise.
2895         * config/mcore/mcore-protos.h (mcore_num_arg_regs,
2896         mcore_function_value): Likewise.
2897         * config/mcore/mcore.c (handle_structs_in_regs,
2898         mcore_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
2899         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
2900         mcore_num_arg_regs, mcore_function_value): Likewise.
2901         * config/mips/mips-protos.h (mips_pad_arg_upward,
2902         mips_function_value): Likewise.
2903         * config/mips/mips.c (mips_fpr_return_fields, mips_return_in_msb,
2904         mips_return_in_memory, mips_pass_by_reference, mips_callee_copies,
2905         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
2906         TARGET_PROMOTE_PROTOTYPES, mips_pad_arg_upward,
2907         mips_function_value): Likewise.
2908         * config/mmix/mmix-protos.h (mmix_function_outgoing_value):
2909         Likewise.
2910         * config/mmix/mmix.c (mmix_pass_by_reference,
2911         TARGET_PROMOTE_FUNCTION_ARGS, mmix_function_outgoing_value,
2912         mmix_encode_section_info): Likewise.
2913         * config/mn10300/mn10300-protos.h (mn10300_function_value):
2914         Likewise.
2915         * config/mn10300/mn10300.c (mn10300_return_in_memory,
2916         mn10300_pass_by_reference, TARGET_PROMOTE_PROTOTYPES,
2917         mn10300_function_value): Likewise.
2918         * config/mt/mt-protos.h (mt_function_value): Likewise.
2919         * config/mt/mt.c (mt_pass_by_reference, mt_function_value,
2920         mt_pass_in_stack, TARGET_PROMOTE_PROTOTYPES): Likewise.
2921         * config/pa/pa-protos.h (function_arg_padding, function_value,
2922         pa_return_in_memory): Likewise.
2923         * config/pa/pa.c (pa_pass_by_reference,
2924         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
2925         function_arg_padding, function_value, pa_return_in_memory):
2926         Likewise.
2927         * config/pdp11/pdp11.c (pdp11_return_in_memory): Likewise.
2928         * config/rs6000/rs6000-protos.h (rs6000_function_value,
2929         function_arg_padding): Likewise.
2930         * config/rs6000/rs6000.c (rs6000_return_in_memory,
2931         rs6000_darwin64_record_arg_recurse, rs6000_darwin64_record_arg,
2932         rs6000_pass_by_reference, rs6000_must_pass_in_stack,
2933         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
2934         function_arg_padding, altivec_expand_dst_builtin,
2935         altivec_expand_builtin, rs6000_expand_builtin, spe_init_builtins,
2936         altivec_init_builtins, rs6000_common_init_builtins,
2937         rs6000_function_value): Likewise.
2938         * s390/s390-protos.h (s390_function_value): Likewise.
2939         * config/s390/s390.c (s390_function_arg_size,
2940         s390_pass_by_reference, s390_return_in_memory,
2941         s390_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
2942         TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
2943         * config/score/score-protos.h (score_function_value): Likewise.
2944         * config/score/score.c (score_arg_partial_bytes,
2945         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
2946         TARGET_PROMOTE_PROTOTYPES, score_return_in_memory,
2947         score_pass_by_reference, score_add_offset, score_function_value):
2948         Likewise.
2949         * config/sh/sh-protos.h (sh_attr_renesas_p,
2950         sh_promote_prototypes): Likewise.
2951         * config/sh/sh.c (sh_return_in_memory, sh_pass_by_reference,
2952         sh_callee_copies, sh_promote_prototypes, shcompact_byref,
2953         sh_attr_renesas_p): Likewise.
2954         * config/sparc/sparc-protos.h (function_value,
2955         function_arg_padding): Likewise.
2956         * config/sparc/sparc.c (sparc_promote_prototypes,
2957         sparc_return_in_memory, sparc_pass_by_reference,
2958         TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN,
2959         function_arg_record_value_2, function_arg_record_value_1,
2960         function_arg_record_value, function_arg_record_value,
2961         function_arg_padding, function_value): Likewise.
2962         * config/spu/spu-protos.h (spu_function_value): Likewise.
2963         * config/spu/spu.c (spu_pass_by_reference, spu_return_in_memory,
2964         spu_function_value): Likewise.
2965         * config/stormy16/stormy16-protos.h (xstormy16_function_value):
2966         Likewise.
2967         * config/stormy16/stormy16.c (xstormy16_return_in_memory,
2968         xstormy16_function_value, TARGET_PROMOTE_FUNCTION_ARGS,
2969         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
2970         Likewise.
2971         * config/v850/v850.c (v850_return_in_memory,
2972         v850_pass_by_reference, TARGET_PROMOTE_PROTOTYPES): Likewise.
2973         * config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): Likewise.
2974         * config/xtensa/xtensa.c (xtensa_return_in_msb,
2975         xtensa_return_in_memory, TARGET_PROMOTE_FUNCTION_ARGS,
2976         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES):
2977         Likewise.
2978         * explow.c (promote_mode, hard_function_value): Likewise.
2979         * expr.h (hard_function_value, promote_mode): Likewise.
2980         * function.c (aggregate_value_p): Likewise.
2981         * hooks.c (hook_bool_const_tree_true): New.
2982         * hooks.h (hook_bool_const_tree_true): New.
2983         * sdbout.c (SET_KNOWN_TYPE_TAG, plain_type_1): Constify.
2984         * target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
2985         TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
2986         TARGET_RETURN_IN_MSB): Likewise.
2987         * target.h (promote_function_args, promote_function_return,
2988         promote_prototypes, return_in_memory, return_in_msb,
2989         pass_by_reference, must_pass_in_stack, callee_copies,
2990         function_value): Likewise.
2991         * targhooks.c (default_return_in_memory,
2992         hook_pass_by_reference_must_pass_in_stack,
2993         hook_callee_copies_named,
2994         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
2995         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
2996         default_function_value): Likewise. 
2997         * targhooks.h (default_return_in_memory,
2998         hook_pass_by_reference_must_pass_in_stack,
2999         hook_callee_copies_named,
3000         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false,
3001         hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true,
3002         default_function_value): Likewise.
3003         * tree-ssa-structalias.c (const_equiv_class_label_t): New.
3004         (equiv_class_label_hash, equiv_class_label_eq): Constify.
3005         * tree-vectorizer.c (bb_in_loop_p): Likewise.
3006         * tree.c (needs_to_live_in_memory): Likewise.
3007         * tree.h (struct tree_type, needs_to_live_in_memory,
3008         aggregate_value_p, must_pass_in_stack_var_size,
3009         must_pass_in_stack_var_size_or_pad): Likewise.
3010         * vmsdbgout.c (write_debug_addr, write_debug_delta4,
3011         write_debug_string, ASM_OUTPUT_DEBUG_STRING, write_rtnbeg,
3012         lookup_filename): Likewise.
3013
3014 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
3015
3016         PR target/17390
3017         * config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
3018         fake fcomi i387 instruction for !TARGET_CMOVE.
3019         (ix86_expand_branch): Expand natural sequence with one jump for
3020         all targets, not only TARGET_CMOVE.
3021         * config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
3022         pattern to implement fake fcomi sequence.  Split instruction after
3023         reload to correct compare sequences.
3024         (*cmpfp_xf_cc): Ditto.
3025         (*cmpfp_<mode>_cc): Ditto.
3026         (*cmpfp_u_cc): Ditto.
3027         (*cmpfp_<mode>_cc): Ditto.
3028
3029 2007-08-23  Richard Guenther  <rguenther@suse.de>
3030
3031         * tree-pretty-print.c (dump_generic_node): Annotate
3032         GIMPLE_MODIFY_STMTs with volatile ops with "{v}".
3033
3034 2007-08-23  Richard Guenther  <rguenther@suse.de>
3035
3036         * builtins.c (expand_builtin_mathfn): Wrap argument in
3037         save_expr directly instead of re-building the call.
3038         (expand_builtin_mathfn_2): Likewise.
3039         (expand_builtin_mathfn_3): Likewise.
3040         (expand_builtin_interclass_mathfn): Likewise.
3041         (expand_builtin_int_roundingfn): Set arg.
3042         (expand_builtin_int_roundingfn_2): Likewise.
3043
3044 2007-08-23  Paolo Bonzini  <bonzini@gnu.org>
3045
3046         * config/i386/sse.md (*sse_and<mode>3, *sse_ior<mode>3,
3047         *sse_nand<mode>3, *sse_xor<mode>3): New.
3048
3049 2007-08-23  Uros Bizjak  <ubizjak@gmail.com>
3050
3051         * config/i386/i386.h (PRINT_OPERAND_PUNCT_VALID_P): Add ';' code.
3052         * config/i386/i386.c (print_operand): Handle ';' code.  Output
3053         semicolon for TARGET_MACHO.
3054         * config/i386/sync.md (*sync_compare_and_swap<mode>): Use '%;' to
3055         emit semicolon after 'lock' prefix.
3056         (sync_double_compare_and_swap<mode>): Ditto.
3057         (*sync_double_compare_and_swapdi_pic): Ditto.
3058         (*sync_compare_and_swap_cc<mode>): Ditto.
3059         (sync_double_compare_and_swap_cc<mode>): Ditto.
3060         (*sync_double_compare_and_swap_ccdi_pic): Ditto.
3061         (sync_old_add<mode>): Ditto.
3062         (sync_add<mode>): Ditto.
3063         (sync_sub<mode>): Ditto.
3064         (sync_ior<mode>): Ditto.
3065         (sync_and<mode>): Ditto.
3066         (sync_xor<mode>): Ditto.
3067
3068 2007-08-22  Chao-ying Fu  <fu@mips.com>
3069
3070         * rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
3071         in DEF_RTL_EXPR.
3072         (copy_rtx): Handle CONST_FIXED.
3073         (rtx_equal_p): Likewise.
3074         * rtl.h (fixed_value.h): New include.
3075         (rtx_def): Add a new field of fixed_value to u.
3076         (XCNMPFV): Define for accessing fixed_value.
3077         (CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
3078         Define.
3079         * rtl.def (CONST_FIXED): New constant.
3080         (SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
3081         UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
3082         US_ASHIFT): New codes.
3083         * doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
3084         us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
3085         unsigned_fract_convert, unsigned_sat_fract): Document them.
3086         * varasm.c (assemble_integer): Extend to support fixed-point constants
3087         by using different machine classes.
3088         (decode_addr_const): Handle FIXED_CST.
3089         (const_hash_1): Likewise.
3090         (compare_constant): Likewise.
3091         (copy_constant): Likewise.
3092         (const_rtx_hash_1): Handle CONST_FIXED.
3093         (output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
3094         MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
3095         MODE_VECTOR_UACCUM.
3096         (initializer_constant_valid_p): Handle FIXED_CST.
3097         (output_constant): Support FIXED_POINT_TYPE.
3098         * gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
3099         * cse.c (hash_rtx): Support CONST_FIXED.
3100         (exp_equiv_p): Likewise.
3101         (cannon_reg): Likewise.
3102         (fold_rtx): Likewise.
3103         (equiv_constant): Likewise.
3104         (cse_process_notes_1): Likewise.
3105         (count_reg_usage): Likewise.
3106         * cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
3107         (rtx_equal_for_cselib_p): Handle CONST_FIXED.
3108         (wrap_constant): Check CONST_FIXED.
3109         (cselib_hash_rtx): Support CONST_FIXED.
3110         (cselib_subst_to_values): Likewise.
3111         * df-scan.c (df_uses_record): Likewise.
3112         * gcse.c (want_to_gcse_p): Likewise.
3113         (oprs_unchanged_p): Likewise.
3114         (oprs_not_set_p): Likewise.
3115         (compute_transp): Likewise.
3116         (extract_mentioned_regs_helper): Likewise.
3117         * genemit.c (gen_exp): Likewise.
3118         * local-alloc.c (equiv_init_varies_p): Likewise.
3119         (contains_replace_regs): Likewise.
3120         (memref_referenced_p): Likewise.
3121         * loop-invariant.c (check_maybe_invariant): Likewise.
3122         (hash_invariant_expr_1): Likewise.
3123         (invariant_expr_equal_p): Likewise.
3124         * postreload-gcse.c (oprs_unchanged_p): Likewise.
3125         * regclass.c (reg_scan_mark_refs): Likewise.
3126         * regrename.c (scan_rtx): Likewise.
3127         * resource.c (mark_referenced_resources): Likewise.
3128         (mark_set_resources): Likewise.
3129         * rtlanal.c (rtx_unstable_p): Likewise.
3130         (rtx_varies_p): Likewise.
3131         (count_occurrences): Likewise.
3132         (reg_mentioned_p): Likewise.
3133         (modified_between_p): Likewise.
3134         (modified_in_p): Likewise.
3135         (volatile_insn_p): Likewise.
3136         (volatile_refs_p): Likewise.
3137         (side_effects_p): Likewise.
3138         (may_trap_p_1): Likewise.
3139         (inequality_comparisons_p): Likewise.
3140         (computed_jump_p_1): Likewise.
3141         (commutative_operand_precedence): Likewise.
3142         * sched-deps.c (sched_analyze_2): Likewise.
3143         * sched-vis.c (print_value): Likewise.
3144         * reload.c (operands_match_p): Likewise.
3145         (subst_reg_equivs): Likewise.
3146         * reload1.c (eliminate_regs_1): Likewise.
3147         (elimination_effects): Likewise.
3148         (scan_paradoxical_subregs): Likewise.
3149         * alias.c (rtx_equal_for_memref_p): Likewise.
3150         * Makefile.in (RTL_BASE_H): Add fixed-value.h.
3151         * emit-rtl.c (const_fixed_htab): New hash table.
3152         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
3153         Declare.
3154         (const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
3155         const_fixed_from_fixed_value): New functions.
3156         (verify_rtx_sharing): Handle CONST_FIXED.
3157         (copy_rtx_if_shared_1): Likewise.
3158         (reset_used_flags): Likewise.
3159         (set_used_flags): Likewise.
3160         (copy_insn_1): Likewise.
3161         (init_emit_once): Create const_fixed_htab.
3162         Store fixed-point scalar and vector zero and one to const_tiny_rtx.
3163
3164 2007-08-22  Zdenek Dvorak  <ook@ucw.cz>
3165
3166         PR tree-optimization/32949
3167         * tree-ssa-loop-niter.c (scev_probably_wraps_p): Test nowrap_type_p
3168         before failing for ivs with non-constant step.
3169
3170 2007-08-22  Hans-Peter Nilsson  <hp@axis.com>
3171
3172         * doc/md.texi (Iterators): Renamed from Macros.  All contents
3173         changed to reflect rename of respectively define_code_macro and
3174         define_mode_macro to define_code_iterator and define_mode_iterator.
3175         (Mode Iterators, Code Iterators): Similar.
3176         * read-rtl.c (struct iterator_group, struct iterator_traverse_data)
3177         (uses_mode_iterator_p, apply_mode_iterator, uses_code_iterator_p)
3178         (apply_iterator_to_string, uses_iterator_p, apply_iterator_traverse)
3179         (initialize_iterators, find_iterator, check_code_iterator)
3180         (map_attr_string, apply_mode_maps, apply_iterator_to_rtx, add_mapping)
3181         (read_mapping, read_rtx_1): Similar.
3182         * config/alpha/sync.md, config/alpha/alpha.md, config/frv/frv.md,
3183         config/s390/s390.md, config/m32c/blkmov.md, config/m32c/m32c.md,
3184         config/spu/spu.md, config/sparc/sparc.md, config/sparc/sync.md,
3185         config/i386/i386.md, config/i386/mmx.md, config/i386/sse.md,
3186         config/i386/sync.md, config/crx/crx.md, config/xtensa/xtensa.md,
3187         config/cris/cris.c, config/cris/cris.md, config/ia64/sync.md,
3188         config/ia64/div.md, config/ia64/vect.md, config/ia64/ia64.md,
3189         config/m68k/m68k.md, config/rs6000/spe.md, config/rs6000/altivec.md,
3190         config/rs6000/sync.md, config/rs6000/rs6000.md,
3191         config/arm/vec-common.md, config/arm/neon.md, config/arm/iwmmxt.md,
3192         config/arm/arm.md, config/mips/mips-dsp.md, config/mips/mips.md,
3193         config/vax/vax.md, config/bfin/bfin.md: Similar.
3194
3195 2007-08-22  David Daney  <ddaney@avtrex.com>
3196
3197         * doc/install.texi (Testing): Mention testing on a simulator.
3198
3199 2007-08-22  Janis Johnson  <janis187@us.ibm.com>
3200
3201         * config/dfp-bit.c (DFP_TO_DFP): Check for overflow.
3202
3203         * doc/libgcc.texi (Decimal float library routines): Fix formatting
3204         and rearrange floating point conversion functions into different
3205         categories.
3206
3207 2007-08-22  Maxim Kuvyrkov  <maxim@codesourcery.com>
3208
3209         * target.h (struct gcc_target.sched: dfa_pre_advance_cycle,
3210         dfa_post_advance_cycle): New scheduler hooks.
3211         * target-def.h (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
3212         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): New macros to initialize
3213         new hooks.
3214         (TARGET_SCHED): Use them.
3215         * doc/tm.texi (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE,
3216         TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Document new hooks.
3217         * haifa-sched.c (advance_one_cycle): Invoke new hooks.
3218
3219         * genautomata.c (insn_has_dfa_reservation_p): New DFA interface
3220         function to facilitate debugging.
3221         (INSN_HAS_DFA_RESERVATION_P_FUNC_NAME): New macro.
3222         (output_insn_has_dfa_reservation_p): New static function to output
3223         insn_has_dfa_reservation_p ().
3224         (write_automata): Use it.
3225         * genattr.c (main): Output declaration for
3226         insn_has_dfa_reservation_p ().
3227
3228 2007-08-22  Christian Bruel  <christian.bruel@st.com>   
3229             Richard Guenther <rguenther@suse.de>
3230         
3231         * fold-const.c (fold_binary): Optimize A-A if -ffinite-math-only.
3232         * simplify_rtx (simplify_binary_operation_1): Likewise.
3233                 
3234 2007-08-22  Rask Ingemann Lambertsen  <rask@sygehus.dk>
3235
3236         PR rtl-optimization/32557
3237         * df-problems.c (df_note_bb_compute): Use mws->start_regno instead
3238         of REGNO (mws->mw_reg).
3239
3240 2007-08-22  Richard Guenther  <rguenther@suse.de>
3241
3242         PR middle-end/33007
3243         * builtins.c (expand_builtin_int_roundingfn): Replace call
3244         argument wrapped with SAVE_EXPR directly.
3245         (expand_builtin_int_roundingfn_2): Likewise.
3246
3247 2007-08-22  Richard Guenther  <rguenther@suse.de>
3248
3249         * tree-inline.c (inlinable_function_p): Restore disregarding
3250         inline limits for GNU extern inline functions.
3251
3252 2007-08-22  Richard Guenther  <rguenther@suse.de>
3253
3254         PR middle-end/32563
3255         * tree.c (host_integerp): Treat sizetype as signed as it is
3256         sign-extended.
3257
3258 2007-08-21  Ian Lance Taylor  <iant@google.com>
3259
3260         PR tree-optimization/33134
3261         * tree-vrp.c (adjust_range_with_scev): Call
3262         set_value_range_to_value.
3263
3264 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
3265
3266         * value-prof.h (gimple_remove_histogram_value): Remove duplicate
3267         prototype.
3268         
3269 2007-08-21  Aldy Hernandez  <aldyh@redhat.com>
3270
3271         * tree-flow-inline.h (next_imm_use_stmt): Remove unecessary
3272         whitespace.
3273
3274 2007-08-21  Nathan Froyd  <froydnj@codesourcery.com>
3275
3276         * config/rs6000/rs6000.c (expand_block_clear): Add TARGET_SPE
3277         cases to set eight bytes at a time.
3278         (expand_block_move): Likewise.
3279         
3280 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
3281
3282         PR debug/32610
3283         * dwarf2out.c (gen_decl_die): Don't call
3284         gen_tagged_type_instantiation_die if decl doesn't have tagged type.
3285
3286 2007-08-21  Paul Brook  <paul@codesourcery.com>
3287             Nathan Sidwell  <nathan@codesourcery.com>
3288             Mark Mitchell  <mark@codesourcery.com>
3289             Joseph Myers  <joseph@codesourcery.com>
3290
3291         * configure.ac: Add --with-pkgversion and --with-bugurl.
3292         * configure: Regenerate.
3293         * doc/install.texi: Document them.
3294         * version.c (version_string): Remove VERSUFFIX.
3295         (VERSUFFIX): Remove.
3296         (pkgversion_string): New.
3297         (bug_report_url): Do not hard-code initializer.
3298         * version.h (pkgversion_string): Declare.
3299         * Makefile.in (PKGVERSION_s, BUGURL_s, PKGVERSION, BUGURL_TEXI):
3300         Define.
3301         (version.o): Define PKGVERSION and BUGURL.
3302         (gcc-vers.texi): Define VERSION_PACKAGE and BUGURL.
3303         (%.pod): Define BUGURL.
3304         * gcc.c (process_command, main): Use pkgversion_string.
3305         * toplev.c (compile_file, print_version): Likewise.
3306         * protoize.c (main): Likewise.
3307         * gcov.c (print_version): Likewise.  Update copyright date.
3308         * gcov-dump.c (print_version): Likewise.  Update copyright date.
3309         * mips-tdump.c (main): Likewise.  Update copyright date.
3310         * mips-tfile.c (main): Likewise.  Update copyright date.
3311         * doc/include/gcc-common.texi: Include VERSION_PACKAGE as subtitle.
3312         * doc/bugreport.texi: Use BUGURL for bug-reporting instructions;
3313         shorten description.
3314         * doc/gcc.texi: Include VERSION_PACKAGE in version description.
3315         * doc/gccint.texi: Likewise.
3316         * doc/invoke.texi: Use BUGURL for bug-reporting instructions.
3317         Update copyright date.
3318
3319 2007-08-21  Uros Bizjak  <ubizjak@gmail.com>
3320
3321         * config/i386/i386.c (ix86_expand_clear): Use FLAGS_REG.
3322         (ix86_expand_strlensi_unroll_1): Ditto.
3323         (ix86_expand_branch): Use FLAGS_REG and FPSR_REG.
3324         (ix86_expand_carry_flag_compare): Update comment.
3325
3326 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
3327
3328         PR middle-end/32912
3329         * fold-const.c (fold_unary): Optimize BIT_NOT_EXPR of VECTOR_CST.
3330         (fold_binary): Handle vectors in X | ~X and X ^ ~X optimizations.
3331
3332 2007-08-21  Richard Guenther  <rguenther@suse.de>
3333
3334         * fold-const.c (fold_binary): Revert removing of index +p PTR folding.
3335
3336 2007-08-21  Richard Guenther  <rguenther@suse.de>
3337
3338         PR middle-end/33122
3339         * fold-const.c (fold_binary): Remove index +p PTR folding.
3340         Fix types of POINTER_PLUS_EXPR generated by folding of
3341         (PTR +p B) +p A.
3342
3343 2007-08-20  Chao-ying Fu  <fu@mips.com>
3344
3345         * c-common.h (enum rid): Add new enumeration values of RID_SAT,
3346         RID_FRACT, and RID_ACCUM.  RID_SAT needs to be inserted before
3347         RID_ONEWAY, so that it can be checked in declspecs_add_type.
3348         (c_common_fixed_point_type_for_size): Declare.
3349         * c-parser.c (reswords): Add _Fract, _Accum, and _Sat.
3350         (c_token_starts_typename): Handle RID_FRACT, RID_ACCUM, and RID_SAT.
3351         (c_token_starts_declspecs): Likewise.
3352         (c_parser_declspecs): Likewise.
3353         (c_parser_attributes): Likewise.
3354         * c-tree.h (enum c_typespec_keyword): Add cts_fract and cts_accum.
3355         (c_declspecs): Add saturating_p.
3356         * c-decl.c (build_null_declspecs): Initialize saturating_p.
3357         (declspecs_add_type): Avoid using complex with _Fract, _Accum, or
3358         _Sat.  Handle RID_SAT.
3359         Avoid using void, bool, char, int, float, double, _Decimal32,
3360         _Decimal64, _Decimal128, and complex with _Sat.
3361         Handle RID_FRACT and RID_ACCUM.
3362         Make sure _Sat is used with _Fract or _Accum.
3363         (finish_declspecs): Handle cts_fract and cts_accum.
3364         * c-common.c (fixed-value.h): New include.
3365         (constant_expression_warning): Handle FIXED_CST.
3366         (overflow_warning): Likewise.
3367         (warnings_for_convert_and_check): Likewise.
3368         (c_common_fixed_point_type_for_size): New.
3369         (c_common_type_for_mode): Handle fixed-point modes to
3370         return various saturating/non-saturating, signed/unsigned types.
3371         (c_common_signed_or_unsigned_type): Support fixed-point types.
3372         (shorten_compare): Check fixed-point zero.
3373         Handle FIXED_POINT_TYPE.
3374         (c_common_truthvalue_conversion): Handle FIXED_CST.
3375         Handle FIXED_POINT_TYPE.
3376         (c_common_nodes_and_builtins): Record builtin types for fixed-point
3377         types.
3378         (handle_mode_attribute): Handle fixed-point modes.  Need to check
3379         if the signness of base type and fixed-point modes are consistent.
3380         (handle_vector_size_attribute): Handle fixed-point modes.
3381         (same_scalar_type_ignoring_signedness): Handle FIXED_POINT_TYPE.
3382         (warn_for_div_by_zero): Check fixed-point zero.
3383         * c-typeck.c (c_common_type): Check FIXED_POINT_TYPE.  Build
3384         a common fixed-point type based on fbit, ibit, sign, and saturation.
3385         (build_unary_op): Allow FIXED_POINT_TYPE for CONVERT_EXPR,
3386         NEGATE_EXPR, TRUTH_NOT_EXPR, PREINCREMENT_EXPR, POSTINCREMENT_EXPR,
3387         PREDECREMENT_EXPR, and POSTDECREMENT_EXPR.
3388         (convert_for_assignment): Support FIXED_POINT_TYPE.
3389         (digest_init): Handle FIXED_POINT_TYPE.
3390         (build_binary_op): Support FIXED_POINT_TYPE in *_DIV_EXPR,
3391         TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
3392         TRUTH_XOR_EXPR, RSHIFT_EXPR, LSHIFT_EXPR, EQ_EXPR, NE_EXPR, LE_EXPR,
3393         GE_EXPR, LT_EXPR, GT_EXPR.
3394         * target-def.h (TARGET_FIXED_POINT_SUPPORTED_P): New.
3395         (TARGET_INITIALIZER): Add TARGET_FIXED_POINT_SUPPORTED_P.
3396         * target.h (gcc_target): Add fixed_point_supported_p.
3397         * targhooks.c (default_scalar_mode_supported_p): Handle MODE_FRACT,
3398         MODE_UFRACT, MODE_ACCUM, and MODE_UACCUM.
3399         (default_fixed_point_supported_p): Define.
3400         * targhooks.h (default_fixed_point_supported_p): Declare.
3401         * doc/tm.texi (TARGET_FIXED_POINT_SUPPORTED_P): Add.
3402         * doc/install.texi (Configuration): Add --enable-fixed-point.
3403         * configure.ac (--enable-fixed-point): New to enable fixed-point
3404         arithmetic extension to C.  For mips targets, we enable it by default.
3405         * configure, config.in: Regenerate.
3406
3407 2007-08-20  Pawel Sikora  <pluto@pld-linux.org>
3408
3409         * doc/invoke.texi (-Wnon-virtual-dtor): Update documentation.
3410
3411 2007-08-20  David Edelsohn  <edelsohn@gnu.org>
3412
3413         * dwarf2out.c (text_section_used): Move declaration outside ifdef
3414         DWARF2_DEBUGGING_INFO.
3415         (cold_text_section_used): Same.
3416         (cold_text_section): Same.
3417
3418 2007-08-20  Richard Guenther  <rguenther@suse.de>
3419
3420         * c-typeck.c (convert_for_assignment): Use the type of
3421         the member for the initialization.
3422
3423 2007-08-20  Richard Guenther  <rguenther@suse.de>
3424
3425         * c-objc-common.c (c_disregard_inline_limits): Remove.
3426         * c-objc-common.h (c_disregard_inline_limits): Likewise.
3427         * cgraphunit.c (cgraph_process_new_functions): Call
3428         disregard_inline_limits_p.
3429         (cgraph_preserve_function_body_p): Likewise.
3430         * ipa-inline.c (compute_inline_parameters): Likewise.
3431         * langhooks-def.h (lhd_tree_inlining_disregard_inline_limits):
3432         Remove.
3433         (LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS): Remove.
3434         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
3435         disregard_inline_limits langhook.
3436         * langhooks.c (lhd_tree_inlining_disregard_inline_limits):
3437         Remove.
3438         * langhooks.h (lang_hooks_for_tree_inlining): Remove
3439         disregard_inline_limits langhook.
3440         * tree-inline.c (disregard_inline_limits_p): New function.
3441         * tree-inline.h (disregard_inline_limits_p): Declare.
3442
3443 2007-08-20  Richard Guenther  <rguenther@suse.de>
3444
3445         * langhooks-def.h (lhd_tree_inlining_auto_var_in_fn_p): Remove.
3446         (LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P): Likewise.
3447         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove initializer for
3448         auto_var_in_fn_p langhook.
3449         * langhooks.c (lhd_tree_inlining_auto_var_in_fn_p): Rename and
3450         move ...
3451         * tree.c (auto_var_in_fn_p): ... here.
3452         (find_var_from_fn): Call auto_var_in_fn_p directly.
3453         * langhooks.h (lang_hooks_for_tree_inlining): Remove
3454         auto_var_in_fn_p langhook.
3455         * tree-inline.c (remap_decls): Call auto_var_in_fn_p directly.
3456         (copy_body_r): Likewise.
3457         (self_inlining_addr_expr): Likewise.
3458         * tree.h (auto_var_in_fn_p): Declare.
3459
3460 2007-08-20  Richard Guenther  <rguenther@suse.de>
3461
3462         * tree.c (WALK_SUBTREE): Call walk_tree_1.
3463         (walk_type_fields): Take lh parameter.
3464         (walk_tree): Rename to ...
3465         (walk_tree_1): ... this.  Do not call the walk_subtrees
3466         langhook but the now passed callback.  Pass lh on recursion.
3467         (walk_tree_without_duplicates): Rename to ...
3468         (walk_tree_without_duplicates_1): ... this.  Take lh parameter
3469         and call walk_tree_1.
3470         * tree.h (walk_tree_lh): New typedef.
3471         (walk_tree_1): Declare.
3472         (walk_tree_without_duplicates_1): Likewise.
3473         (walk_tree): New define to walk_tree_1 with NULL lh parameter.
3474         (walk_tree_without_duplicates): New define to
3475         walk_tree_without_duplicates_1 with NULL lh parameter.
3476         * langhooks.c (lhd_tree_inlining_walk_subtrees): Remove.
3477         * langhooks.h (lang_hooks_for_tree_inlining): Remove walk_subtrees
3478         langhook.
3479         * langhooks-def.h (lhd_tree_inlining_walk_subtrees): Remove.
3480         (LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
3481         (LANG_HOOKS_TREE_INLINING_INITIALIZER): Remove walk_subtrees
3482         initializer.
3483
3484 2007-08-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3485
3486         PR middle-end/30564
3487         * tree-inline.c (optimize_inline_calls): Move the cgraph checking
3488         code in front of the compacting of basic blocks.
3489         Move the folding of statements inbetween the cgraph checking
3490         and compacting of basic blocks.
3491
3492 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3493            Serge Belyshev  <belyshev@depni.sinp.msu.ru>
3494
3495         PR target/32522
3496         * config/alpha/alpha.c (va_list_skip_additions): Check for
3497         POINTER_PLUS_EXPR in addition to PLUS_EXPR.
3498         (alpha_stdarg_optimize_hook): Look for POINTER_PLUS_EXPR instead of
3499         PLUS_EXPR when checking ap.__base.
3500         (alpha_va_start): Create POINTER_PLUS_EXPR instead of PLUS_EXPR
3501         when doing addition on pointer types.  Use size_int instead of
3502         build_int_cst.
3503         (alpha_gimplify_va_arg_1): Likewise, but use sizetype instead of
3504         ptr_type in the second operand.
3505
3506 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
3507
3508         PR target/33115
3509         * config/i386/darwin.h (CC1_SPEC): Add %(cc1_cpu) in front.
3510
3511 2007-08-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3512
3513         PR middle-end/32940
3514         * cfgexpand.c  (expand_one_register_var): Mark pointer
3515         DECL_ARTIFICIAL as REG_POINTER also.
3516         * stmt.c (expand_decl): Likewise.
3517
3518 2007-08-19  Daniel Berlin  <dberlin@dberlin.org>
3519
3520         Fix PR 32772
3521         Fix PR 32716
3522         Fix PR 32328
3523         Fix PR 32303
3524
3525         * tree-flow.h (struct stmt_ann_d): Remove makes_clobbering_call.
3526         * tree-ssa-alias.c (init_transitive_clobber_worklist): Add
3527         on_worklist argument and avoid adding things to worklist multiple
3528         times.
3529         (add_to_worklist): Ditto.
3530         (mark_aliases_call_clobbered): Mark entire structure clobbered if
3531         single SFT is clobbered.
3532         (set_initial_properties): Ditto.
3533         (compute_call_clobbered): Update for changes to function
3534         arguments.
3535         (create_overlap_variables_for): Always create SFT for offset 0.
3536         (create_structure_vars): Handle PHI's, since we are in SSA form at
3537         this point.
3538         * tree-ssa-loop-ivopts.c (get_ref_tag): Don't return subvars.
3539         * tree-ssa-operands.c (access_can_touch_variable): Don't handle
3540         TARGET_MEM_REF.
3541         (add_vars_for_offset): Figure out aliases from access + points-to.
3542         (add_virtual_operand): Use add_vars-for_offset.
3543         (get_tmr_operands): Update for NMT changes, rewrite to be correct.
3544         (add_call_clobber_ops): Remove makes_clobbering_call set.
3545         (get_expr_operands): Always pass through the INDIRECT_REF
3546         reference.
3547         * tree-ssa-structalias.c (struct constraint_graph): Remove
3548         variables member.
3549         Add pe, pe_rep, pointer_label, loc_label, pointed_by, points_to,
3550         address_taken, pt_used, number_incoming.
3551         (FIRST_ADDR_NODE): Removed.
3552         (merge_graph_nodes): Remove broken code for the moment.
3553         (init_graph): New function.
3554         (build_pred_graph): Remove code to init_graph.
3555         Add location equivalence support.
3556         (struct scc_info): Rename roots to deleted.
3557         (scc_visit): Ditto.
3558         (init_scc_info): Ditto
3559         (init_topo_info): Use graph->size.
3560         (compute_topo_order): Ditto.
3561         (do_da_constraint): Removed.
3562         (do_sd_constraint): Remove calls to find().
3563         set_union_with_increment should always get 0 as last arg here.
3564         (do_complex_constraint): Replace do_da_constraint with assert.
3565         Stop calling find.
3566         (struct equiv_class_label): New.
3567         (pointer_equiv_class_table): Ditto.
3568         (location_equiv_class_table): Ditto.
3569         (equiv_class_label_hash): Ditto.
3570         (equiv_class_label_eq): Ditto
3571         (equiv_class_lookup): Ditto.
3572         (equiv_class_ladd): Ditto.
3573         (pointer_equiv_class): Ditto.
3574         (location_equiv_class): Ditto.
3575         (condense_visit): Rename and rewrite from label_visit to do only
3576         SCC related stuff for HU.
3577         (label_visit): Do HU work for HU.
3578         (perform_var_substitution): Update to do HU and location
3579         equivalence.
3580         (free_var_substitution_info): Update to free HU and location
3581         equivalence structures.  */
3582         (find_equivalent_node): Update for pointer but not location
3583         equivalence.
3584         (unite_pointer_equivalences): New function.
3585         (move_complex_constraints): Rewrite to only do moving.
3586         (rewrite_constraints): Split out of move_complex_constraints.
3587         (solve_graph): Use graph->size.
3588         (process_constraint_1): Add from_call argument, use it.
3589         Split *a = &b into two constraints.
3590         (process_constraint): Use new process_constraint_1.
3591         (get_constraint_for_component_ref): Handle bitmaxsize == -1 case.
3592         (get_constraint_for): Handle non-pointer integers properly.
3593         Remove code that used to handle structures.
3594         (handle_ptr_arith): Fix a few bugs in pointer arithmetic handling
3595         with unknown addends.
3596         (handle_rhs_call): New function.
3597         (find_func_aliases): Use handle_rhs_call.
3598         (set_uids_in_ptset): Add an assert.
3599         (set_used_smts): Fix bug in not considering unified vars.
3600         (compute_tbaa_pruning): Stop initing useless iteration_obstack.
3601         (compute_points_to_sets): Update for other function changes.
3602         (delete_points_to_sets): Ditto.
3603         (ipa_pta_execute): Ditto.
3604         (pass_ipa_pta): We need to update SSA after ipa_pta.
3605         
3606 2007-08-19  Jan Hubicka  <jh@suse.cz>
3607
3608         * i386.md: Replace "rim" and "mri" constraints by "g".
3609
3610 2007-08-19  Joseph Myers  <joseph@codesourcery.com>
3611
3612         * dwarf2out.c (text_section_used, cold_text_section_used,
3613         cold_text_section, dwarf2out_note_section_used): New.
3614         (dwarf2out_init): Initialize cold_text_section.
3615         (dwarf2out_switch_text_section, dwarf2out_begin_function): Call
3616         dwarf2out_note_section_used.
3617         (size_of_aranges): Only count entry for text section if it was
3618         used.  Count entry for cold text section if it was used.
3619         (output_aranges): Only output entries for text section and cold
3620         text section if they were used.
3621
3622 2007-08-19  Andrew Pinski  <pinskia@gmail.com>
3623
3624         * tree-pretty-print.c (debug_generic_expr): Add a comment about
3625         the function.
3626         (debug_generic_stmt): Likewise.
3627         (debug_tree_chain): Likewise.
3628
3629 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
3630
3631         * tree-data-refs.c (split_constant_offset): Expose.
3632         * tree-data-refs.h (split_constant_offset): Add declaration.
3633
3634         * tree-vectorizer.h (dr_alignment_support): Renamed
3635         dr_unaligned_software_pipeline to dr_explicit_realign_optimized.
3636         Added a new value dr_explicit_realign.
3637         (_stmt_vec_info): Added new fields: dr_base_address, dr_init,
3638         dr_offset, dr_step, and dr_aligned_to, along with new access
3639         functions for these fields: STMT_VINFO_DR_BASE_ADDRESS,
3640         STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET, STMT_VINFO_DR_STEP, and
3641         STMT_VINFO_DR_ALIGNED_TO.
3642
3643         * tree-vectorizer.c (vect_supportable_dr_alignment): Add
3644         documentation.
3645         In case of outer-loop vectorization with non-fixed misalignment - use
3646         the dr_explicit_realign scheme instead of the optimized realignment
3647         scheme.
3648         (new_stmt_vec_info): Initialize new fields.
3649
3650         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Handle the
3651         'nested_in_vect_loop' case. Change verbosity level.
3652         (vect_analyze_data_ref_access): Handle the 'nested_in_vect_loop' case.
3653         Don't fail on zero step in the outer-loop for loads.
3654         (vect_analyze_data_refs): Call split_constant_offset to calculate
3655         base, offset and init relative to the outer-loop.
3656
3657         * tree-vect-transform.c (vect_create_data_ref_ptr): Replace the unused
3658         BSI function argument with a new function argument - at_loop.
3659         Simplify the condition that determines STEP. Takes additional argument
3660         INV_P. Support outer-loop vectorization (handle the
3661         nested_in_vect_loop case), including zero step in the outer-loop. Call
3662         vect_create_addr_base_for_vector_ref with additional argument.
3663         (vect_create_addr_base_for_vector_ref): Takes additional argument LOOP.
3664         Updated function documentation. Handle the 'nested_in_vect_loop' case.
3665         Fixed and simplified calculation of step.
3666         (vectorizable_store): Call vect_create_data_ref_ptr with loop instead
3667         of bsi, and with additional argument. Call bump_vector_ptr with
3668         additional argument. Fix typos. Handle the 'nested_in_vect_loop' case.
3669         (vect_setup_realignment): Takes additional arguments INIT_ADDR and
3670         DR_ALIGNMENT_SUPPORT. Returns another value AT_LOOP. Handle the case
3671         when the realignment setup needs to take place inside the loop.
3672         Support the dr_explicit_realign scheme. Allow generating the optimized
3673         realignment scheme for outer-loop vectorization. Added documentation.
3674         (vectorizable_load): Support the dr_explicit_realign scheme. Handle
3675         the 'nested_in_vect_loop' case, including loads that are invariant in
3676         the outer-loop and the realignment schemes. Handle the case when the
3677         realignment setup needs to take place inside the loop. Call
3678         vect_setup_realignment with additional arguments.  Call
3679         vect_create_data_ref_ptr with additional argument and with loop instead
3680         of bsi. Fix 80-column overflow. Fix typos. Rename PHI_STMT to PHI.
3681         (vect_gen_niters_for_prolog_loop): Call
3682         vect_create_addr_base_for_vector_ref with additional arguments.
3683         (vect_create_cond_for_align_checks): Likewise.
3684         (bump_vector_ptr): Updated to support the new dr_explicit_realign
3685         scheme: takes additional argument bump; argument ptr_incr is now
3686         optional; updated documentation.
3687         (vect_init_vector): Takes additional argument (bsi). Use it, if
3688         available, to insert the vector initialization.
3689         (get_initial_def_for_induction): Pass additional argument in call to
3690         vect_init_vector.
3691         (vect_get_vec_def_for_operand): Likewise.
3692         (vect_setup_realignment): Likewise.
3693         (vectorizable_load): Likewise.
3694
3695 2007-08-19  Dorit Nuzman  <dorit@il.ibm.com>
3696
3697         * tree-vectorizer.h (vect_is_simple_reduction): Takes a loop_vec_info
3698         as argument instead of struct loop.
3699         (nested_in_vect_loop_p): New function.
3700         (vect_relevant): Add enum values vect_used_in_outer_by_reduction and
3701         vect_used_in_outer.
3702         (is_loop_header_bb_p): New. Used to differentiate loop-header phis
3703         from other phis in the loop.
3704         (destroy_loop_vec_info): Add additional argument to declaration.
3705
3706         * tree-vectorizer.c (supportable_widening_operation): Also check if
3707         nested_in_vect_loop_p (don't allow changing the order in this case).
3708         (vect_is_simple_reduction): Takes a loop_vec_info as argument instead
3709         of struct loop. Call nested_in_vect_loop_p and don't require
3710         flag_unsafe_math_optimizations if it returns true.
3711         (new_stmt_vec_info): When setting def_type for phis differentiate 
3712         loop-header phis from other phis.
3713         (bb_in_loop_p): New function.
3714         (new_loop_vec_info): Inner-loop phis already have a stmt_vinfo, so
3715         just update their loop_vinfo.  Order of BB traversal now matters -
3716         call dfs_enumerate_from with bb_in_loop_p.
3717         (destroy_loop_vec_info): Takes additional argument to control whether
3718         stmt_vinfo of the loop stmts should be destroyed as well.
3719         (vect_is_simple_reduction): Allow the "non-reduction" use of a
3720         reduction stmt to be defines by a non loop-header phi.
3721         (vectorize_loops): Call destroy_loop_vec_info with additional argument.
3722
3723         * tree-vect-transform.c (vectorizable_reduction): Call
3724         nested_in_vect_loop_p. Check for multitypes in the inner-loop.
3725         (vectorizable_call): Likewise.
3726         (vectorizable_conversion): Likewise.
3727         (vectorizable_operation): Likewise.
3728         (vectorizable_type_promotion): Likewise.
3729         (vectorizable_type_demotion): Likewise.
3730         (vectorizable_store): Likewise.
3731         (vectorizable_live_operation): Likewise.
3732         (vectorizable_reduction): Likewise. Also pass loop_info to
3733         vect_is_simple_reduction instead of loop.
3734         (vect_init_vector): Call nested_in_vect_loop_p.
3735         (get_initial_def_for_reduction): Likewise.
3736         (vect_create_epilog_for_reduction): Likewise.
3737         (vect_init_vector): Check which loop to work with, in case there's an
3738         inner-loop.
3739         (get_initial_def_for_inducion): Extend to handle outer-loop
3740         vectorization. Fix indentation.
3741         (vect_get_vec_def_for_operand): Support phis in the case vect_loop_def.
3742         In the case vect_induction_def get the vector def from the induction
3743         phi node, instead of calling get_initial_def_for_inducion.
3744         (get_initial_def_for_reduction): Extend to handle outer-loop 
3745         vectorization.
3746         (vect_create_epilog_for_reduction): Extend to handle outer-loop
3747         vectorization.
3748         (vect_transform_loop): Change assert to just skip this case.  Add a
3749         dump printout.
3750         (vect_finish_stmt_generation): Add a couple asserts.
3751
3752         (vect_estimate_min_profitable_iters): Multiply
3753         cost of inner-loop stmts (in outer-loop vectorization) by estimated
3754         inner-loop bound.
3755         (vect_model_reduction_cost): Don't add reduction epilogue cost in case
3756         this is an inner-loop reduction in outer-loop vectorization.
3757
3758         * tree-vect-analyze.c (vect_analyze_scalar_cycles_1): New function.
3759         Same code as what used to be vect_analyze_scalar_cycles, only with
3760         additional argument loop, and loop_info passed to
3761         vect_is_simple_reduction instead of loop.
3762         (vect_analyze_scalar_cycles): Code factored out into
3763         vect_analyze_scalar_cycles_1. Call it for each relevant loop-nest.
3764         Updated documentation.
3765         (analyze_operations): Check for inner-loop loop-closed exit-phis during
3766         outer-loop vectorization that are live or not used in the outerloop,
3767         cause this requires special handling.
3768         (vect_enhance_data_refs_alignment): Don't consider versioning for
3769         nested-loops.
3770         (vect_analyze_data_refs): Check that there are no datarefs in the
3771         inner-loop.
3772         (vect_mark_stmts_to_be_vectorized): Also consider vect_used_in_outer
3773         and vect_used_in_outer_by_reduction cases.
3774         (process_use): Also consider the case of outer-loop stmt defining an
3775         inner-loop stmt and vice versa.
3776         (vect_analyze_loop_1): New function.
3777         (vect_analyze_loop_form): Extend, to allow a restricted form of nested
3778         loops.  Call vect_analyze_loop_1.
3779         (vect_analyze_loop): Skip (inner-)loops within outer-loops that have
3780         been vectorized.  Call destroy_loop_vec_info with additional argument.
3781
3782         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Don't allow
3783         in the inner-loop when doing outer-loop vectorization. Add
3784         documentation and printout.
3785         (vect_recog_dot_prod_pattern): Likewise. Also add check for
3786         GIMPLE_MODIFY_STMT (in case we encounter a phi in the loop).
3787
3788 2007-08-18  Andrew Pinski  <pinskia@gmail.com>
3789
3790         * tree-affine.h (print_aff): New prototype.
3791         (debug_aff): Likewise.
3792         * tree-affine.c (print_aff): New function.
3793         (debug_aff): Likewise.
3794
3795 2007-08-18  Paul Brook  <paul@codesourcery.com>
3796             Joseph Myers  <joseph@codesourcery.com>
3797
3798         * common.opt (-fdebug-prefix-map=): New option.
3799         * opts.c: Include debug.h.
3800         (common_handle_option): Handle -fdebug-prefix-map.
3801         * final.c: Include ggc.h.
3802         (struct debug_prefix_map, debug_prefix_maps, add_debug_prefix_map,
3803         remap_debug_filename): New.
3804         * Makefile.in (final.o, opts.o): Update dependencies.
3805         * debug.h (remap_debug_filename, add_debug_prefix_map): Declare.
3806         * configure.ac: Check for assembler --debug-prefix-map support.
3807         * configure, config.in: Regenerate.
3808         * gcc.c (ASM_MAP): Define conditional on HAVE_AS_DEBUG_PREFIX_MAP.
3809         (ASM_DEBUG_SPEC): Include ASM_MAP.
3810         * doc/install.texi (--with-debug-prefix-map): Document.
3811         * doc/invoke.texi (-fdebug-prefix-map): Document.
3812         * dbxout.c (dbxout_init, dbxout_start_source_file,
3813         dbxout_source_file): Call remap_debug_filename.
3814         * dwarf2out.c (add_comp_dir_attribute, maybe_emit_file,
3815         dwarf2out_start_source_file, dwarf2out_finish): Call
3816         remap_debug_filename.
3817         (file_table_relative_p): Do not check d->emitted_number.
3818         * toplev.c (output_file_directive): Call remap_debug_filename.
3819         * vmsdbgout.c (write_srccorr): Call remap_debug_filename.
3820         * xcoffout.c (xcoffout_source_file): Call remap_debug_filename.
3821
3822 2007-08-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3823
3824         * loop-invariant.c (find_invariants_to_move): Add missing macro
3825         argument.
3826
3827 2007-08-17  Tom Tromey  <tromey@redhat.com>
3828
3829         * tree.h (struct tree_label_decl): Removed old "java" fields.
3830
3831 2007-08-17  Richard Sandiford  <richard@codesourcery.com>
3832             Nigel Stephens  <nigel@mips.com>
3833
3834         * config/mips/sde.h (DRIVER_SELF_SPECS): Add commas.
3835         Treat -mno-data-in-code and -mcode-xonly as aliases for
3836         -mcode-readable=no and -mcode-readable=pcrel respectively.
3837         * config/mips/t-sde (TARGET_LIBGCC2_CFLAGS): Add -mcode-xonly.
3838         (MULTILIB_OPTIONS): Add -mcode-readable=no multilibs.
3839         (MULTILIB_DIRNAMES): Update accordingly.
3840
3841 2007-08-17  H.J. Lu  <hongjiu.lu@intel.com>
3842
3843         * Makefile.in (version.o): Depend on $(REVISION) only if
3844         REVISION_s is defined.
3845
3846 2007-08-17  Sa Liu  <saliu@de.ibm.com>
3847             Ulrich Weigand  <uweigand@de.ibm.com>
3848
3849         PR middle-end/32970
3850         * tree.c (reconstruct_complex_type): For a pointer to a vector,
3851         use build_qualified_type to retain qualifiers of the base type.
3852
3853 2007-08-17  Chen Liqin  <liqin@sunnorth.com.cn>
3854
3855         * config/score/score.md : Update pattern tablejump.
3856         * config/score/score.c : Update score_initialize_trampoline 
3857         function.
3858         * config/score/score.h (TRAMPOLINE_TEMPLATE): Added macro.
3859         (TRAMPOLINE_INSNS, TRAMPOLINE_SIZE) Update macro.
3860         * doc/contrib.texi: Add my entry.
3861
3862 2007-08-16  H.J. Lu  <hongjiu.lu@intel.com>
3863
3864         * Makefile.in (REVISION): New.
3865         (REVISION_c): New.
3866         (REVISION_s): New.
3867         (version.o): Also depend on $(REVISION). Add
3868         -DREVISION=$(REVISION_s).
3869
3870         * version.c (version_string): Add REVISION.
3871
3872 2007-08-16  Seongbae Park <seongbae.park@gmail.com>
3873
3874         * tree-eh.c (lower_try_finally_onedest): Reset the locus
3875         of GOTO that's relocated to a different block.
3876
3877 2007-08-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3878
3879         * c-common.c (const_strip_array_types): New.
3880         * c-common.h (lang_missing_noreturn_ok_p): Delete.
3881         (const_strip_array_types): New.
3882         * c-objc-common.c (c_disregard_inline_limits,
3883         c_warn_unused_global_decl): Constify.
3884         * c-tree.h (c_disregard_inline_limits, c_warn_unused_global_decl,
3885         c_vla_type_p, c_incomplete_type_error): Likewise.
3886         * c-typeck.c (c_incomplete_type_error, c_vla_type_p): Likewise.
3887         * hooks.c (hook_bool_const_tree_false): New.
3888         * hooks.h (hook_bool_const_tree_false): Likewise.
3889         * langhooks-def.h (lhd_warn_unused_global_decl,
3890         lhd_incomplete_type_error, lhd_expr_size,
3891         lhd_tree_inlining_disregard_inline_limits,
3892         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
3893         LANG_HOOKS_GENERIC_TYPE_P, LANG_HOOKS_TYPE_MAX_SIZE): Constify.
3894         * langhooks.c (lhd_warn_unused_global_decl,
3895         lhd_incomplete_type_error,
3896         lhd_tree_inlining_disregard_inline_limits,
3897         lhd_tree_inlining_auto_var_in_fn_p, lhd_tree_dump_type_quals,
3898         lhd_expr_size): Likewise.
3899         * langhooks.h (lang_hooks_for_tree_inlining,
3900         lang_hooks_for_tree_dump, lang_hooks_for_types,
3901         lang_hooks_for_decls, lang_hooks): Likewise.
3902         * pointer-set.c (pointer_set_t, pointer_set_create,
3903         pointer_set_contains, insert_aux, pointer_set_insert,
3904         pointer_set_traverse, pointer_map_t, pointer_map_create,
3905         pointer_map_contains, pointer_map_insert, pointer_map_traverse):
3906         Likewise.
3907         * pointer-set.h (pointer_set_contains, pointer_set_insert,
3908         pointer_set_traverse, pointer_map_contains, pointer_map_insert,
3909         pointer_map_traverse): Likewise.
3910         * predict.c (assert_is_empty): Likewise.
3911         * tree-affine.c (free_name_expansion): Likewise.
3912         * tree-cfg.c (edge_to_cases_cleanup): Likewise.
3913         * tree.c (size_in_bytes, max_int_size_in_bytes): Likewise.
3914         * tree.h (size_in_bytes, max_int_size_in_bytes): Likewise.
3915
3916 2007-08-16  Victor Kaplansky <victork@il.ibm.com>
3917
3918         * tree-vectorizer.c (new_loop_vec_info): Initialize new 
3919         field.
3920         (destroy_loop_vec_info): Add call to VEC_free.
3921         * tree-vectorizer.h (may_alias_ddrs): Define.
3922         (LOOP_VINFO_MAY_ALIAS_DDRS): Define.
3923      &n