OSDN Git Service

Fixup whitespacing
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-05-31  Eric Christopher  <echristo@apple.com>
2
3         * expr.c (convert_move): Assert that we don't have a BLKmode
4         operand.
5         (store_expr): Handle BLKmode moves by calling emit_block_move.
6
7 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
8
9         * c-typeck.c (build_indirect_ref): Include type in error message.
10         (build_binary_op): Pass types to binary_op_error.
11         * c-common.c (binary_op_error): Take two type arguments, print out
12         types with error.
13         * c-common.h (binary_op_error): Update prototype.
14
15 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
16
17         * config/i386/i386.c: Correct coments on -mno-sse4.
18
19 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
20
21         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to
22         extra_headers.
23         (x86_64-*-*): Likewise.
24
25         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
26         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
27         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
28         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
29         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
30         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
31         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
32         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
33         (OPTION_MASK_ISA_SSE4): Likewise.
34         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
35         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
36         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle
37         SSE4.2.
38         (override_options): Support SSE4.2.
39         (ix86_build_const_vector): Support SImode and DImode.
40         (ix86_build_signbit_mask): Likewise.
41         (ix86_expand_int_vcond): Support V2DImode.
42         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
43         (IX86_BUILTIN_CRC32HI): Likewise.
44         (IX86_BUILTIN_CRC32SI): Likewise.
45         (IX86_BUILTIN_CRC32DI): Likewise.
46         (IX86_BUILTIN_PCMPGTQ): Likewise.
47         (bdesc_crc32): Likewise.
48         (bdesc_sse_3arg): Likewise.
49         (ix86_expand_crc32): Likewise.
50         (ix86_init_mmx_sse_builtins): Support SSE4.2.
51         (ix86_expand_builtin): Likewise.
52
53         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
54         __SSE4_2__ for -msse4.2.
55
56         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
57         (CRC32MODE): Likewise.
58         (crc32modesuffix): Likewise.
59         (crc32modeconstraint): Likewise.
60         (sse4_2_crc32<mode>): Likewise.
61         (sse4_2_crc32di): Likewise.
62
63         * config/i386/i386.opt (msse4.2): New for SSE4.2.
64         (msse4): Likewise.
65
66         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header
67         file.
68
69         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
70
71         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for
72         SSE4.2.
73         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
74         (vcondu<mode>): Likewise.
75
76         * doc/extend.texi: Document SSE4.2 built-in functions.
77
78         * doc/invoke.texi: Document -msse4.2/-msse4.
79
80 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
81
82         PR tree-optimization/32160
83         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
84         variable as gimple reg.
85         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
86
87 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
88
89         * gcc.c (main): Don't consider linker options when issuing the
90         warning about a linker input file not being used.
91
92 >>>>>>> .r125234
93 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
94
95         * tree-vrp.c (compare_names): Initialize sop.
96
97 2007-05-30  Dirk Mueller  <dmueller@suse.de>
98
99         * cgraphunit.c (cgraph_analyze_function): Remove
100         computation of inline parameters.
101
102 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
103
104         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
105
106 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
107
108         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
109         Add vx-common.h.  Include vxworks.h between vx-common.h and
110         arm/vxworks.h.
111         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
112         redefining.
113         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
114         (TARGET_ASM_DESTRUCTOR): Likewise.
115         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
116         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
117         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
118         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
119         (VXWORKS_ENDIAN_SPEC): Define.
120         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
121         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
122         VXWORKS_* equivalents.
123         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
124         (ASM_FILE_START): Delete.
125         (TARGET_VERSION): Reformat.
126         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
127         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
128         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
129         (FPBIT, DPBIT): Define.
130         (fp-bit.c, dp-bit.c): New rules.
131         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
132         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
133         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
134         * config/arm/arm.h: Include vxworks-dummy.h.
135         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
136         Mark with ATTRIBUTE_UNUSED.
137         (arm_override_options): Do not allow VxWorks RTP PIC to be used
138         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
139         make it incompatible with -msingle-pic-base.
140         (arm_function_ok_for_sibcall): Return false for calls that might
141         go through a VxWorks PIC PLT entry.
142         (require_pic_register): New function, split out from...
143         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
144         for VxWorks RTPs.
145         (arm_load_pic_register): Handle the VxWorks RTP initialization
146         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
147         (arm_emit_call_insn): New function.
148         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
149         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
150         (pic_offset_arm): New pattern.
151         (call, call_value): Use arm_emit_call_insn.
152         (call_internal, call_value_internal): New expanders.
153         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
154         VxWorks unless __PIC__.
155
156 2007-05-30  Eric Christopher  <echristo@gmail.com>
157
158         * genrecog.c: Include regs.h in generated file.
159         * genemit.c: Ditto. Fix up formatting.
160         * config/mn10300/constraints.md: New.
161         * config/mn10300/mn10300.md: Include.
162         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
163         Fix up for removed macro.
164         * config/mn10300/predicates.md (call_address_operand):  Ditto.
165         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
166         (CONST_OK_FOR_I): Ditto.
167         (CONST_OK_FOR_J): Ditto.
168         (CONST_OK_FOR_K): Ditto.
169         (CONST_OK_FOR_L): Ditto.
170         (CONST_OK_FOR_M): Ditto.
171         (CONST_OK_FOR_N): Ditto.
172         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
173         (OK_FOR_Q): Ditto.
174         (OK_FOR_R): Ditto.
175         (OK_FOR_T): Ditto.
176         (EXTRA_CONSTRAINT): Ditto.
177
178 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
179
180         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
181         Remove defines.
182         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
183         OPTION_MASK_ISA_64BIT.
184         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
185
186 2007-05-30  Richard Guenther  <rguenther@suse.de>
187
188         PR middle-end/32152
189         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
190         types for comparison.
191         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
192         with original typed arguments.
193         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
194
195 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
196
197         PR tree-optimization/31769
198         * except.c (duplicate_eh_regions): Clear prev_try if
199         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
200
201 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
202
203         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
204         * tree-ssa-sink.c (statement_sink_location): Return basic block and
205         bsi of the location where statements should be inserted.
206         (sink_code_in_bb): Take bsi from statement_sink_location.
207         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
208         instead of bsi_start.
209         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
210         bsi_insert_after.
211         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
212         (bsi_move_before): Document inconsistency with bsi_move_after.
213         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
214
215 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
216
217         * config/i386/i386.h (TARGET_ABM): New define.
218         (TARGET_POPCNT): Ditto.
219         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
220         New temporary defines to redefine from OPTION_ISA_* defines.
221         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
222         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
223         (ix86_isa_flags): New extern int declaration.
224         (TARGET_SUBTARGET_DEFAULT): New define.
225         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
226         (TARGET_SUBTARGET32_DEFAULT): Ditto.
227         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
228         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
229         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
230         * config/i386/darwin.h: Change TARGET_64BIT define to
231         OPTION_ISA_64BIT.
232
233         * config/i386/i386.opt (m3dnowa): Define as undocumented option
234         using existing "ix86_isa_flags" varible.
235         (m32, m64): Use existing "ix86_isa_flags" variable.
236         (mmmx, m3dnow): Ditto.
237         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
238         (mabm): Define as non-negative option using "x86_abm" variable.
239         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
240
241         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
242         Rewrite feature test bitmap.
243         (ix86_isa_flags): New initialized global int varible.
244         (ix86_isa_flags_explicit): New static int variable.
245         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
246         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
247         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
248         target_flags_explicit.
249         (override_options): Remove "target_enable" and "target_disable" fields
250         from "struct ptt". Update processor_target_table accordingly. Remove
251         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
252         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
253         "target_flags" and "ix86_isa_flags_explicit" instead of
254         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
255         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
256         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
257         to true when either of PTA_POPCNT or PTA_ABM is set in
258         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
259         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
260         processor_alias_table flags entry.  Remove handling of
261         "target_enable" and "target_disable" fields of processor_target_table.
262         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
263         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
264         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
265         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
266         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
267         "target_flags".
268         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
269
270 2007-05-29  David Daney  <ddaney@avtrex.com>
271
272         PR gcc/31975
273         * config/mips/mips.c (mips_output_mi_thunk): Emit
274         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
275
276 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
277         * config/i386/i386.c (ix86_function_regparm): Added checking of
278         ix86_force_align_arg_pointer to determine the number of
279         register parameters.
280
281 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
282
283         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
284         (SET_DR_MISALIGNMENT): New.
285         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
286         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
287         Use SET_DR_MISALIGNMENT.
288         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
289         pointer.
290         * tree-data-ref.c (create_data_ref, compute_all_dependences,
291         find_loop_nest): Export.
292         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
293         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
294         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
295         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
296         New macros.
297         (struct mem_ref): Add field reuse_distance.
298         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
299         Initialize reuse_distance field.
300         (issue_prefetch_ref): Select temporality of prefetch according to
301         reuse_distance.
302         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
303         self_reuse_distance, determine_loop_nest_reuse): New functions.
304         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
305         (tree_ssa_prefetch_arrays): Dump L2 cache size.
306         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
307         dependency.
308
309 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
310
311         * tree-ssa-alias.c: Add aliasing overview.
312
313 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
314             Danny Smith  <dannysmith@users.sourceforge.net>
315
316         PR target/29498
317         * config/i386/t-crtfm: Compile crtfastmath.o with
318         -minline-all-stringops.
319         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
320         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
321
322 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
323
324         * doc/md.texi: Document constraints on HP PA-RISC.
325
326         * pa/constraints.md: New file.
327         * pa.md: Include constraints.md.
328         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
329         (integer_store_memory_operand, ldil_cint_p): New functions.
330         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
331         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
332         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
333         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
334         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
335
336 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
337
338         PR c/31339
339         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
340         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
341         case POSTDECREMENT_EXPR>): Return the error_mark_node
342         if either the real or imaginary parts would an
343         error_mark_node.
344
345 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
346
347         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
348         name when we remove it from a call.
349
350 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
351
352         * targhooks.c (default_narrow_bitfield): Remove.
353         * targhooks.h: Remove the prototype for
354         default_narrow_bitfield.
355
356         * langhooks-def.h: Remove the prototype for
357         hook_get_alias_set_0.
358         * langhooks.c (hook_get_alias_set_0): Remove.
359
360         * global.c (EXECUTE_IF_CONFLICT): Remove.
361
362 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
363
364         PR tree-opt/32100
365         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
366         return true when truth_value_p is true and the type
367         is of signed:1.
368
369 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
370
371         * doc/install.texi (Prerequisites): We no longer require Autoconf
372         2.13 for the top-level.
373
374 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
375
376         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
377         memory access via x86_expand_vector_move_misalign() only for
378         TImode values on 32-bit targets.
379
380 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
381
382         * matrix-reorg.c: New file. Implement matrix flattening and
383         transposing optimization.
384         * tree-pass.h: Add matrix reorg pass.
385         * common.opt: Add fipa-mreorg flag.
386         * Makefile.in: Add matrix-reorg.c.
387         * passes.c: Add matrix reorg pass.
388         * varpool.c (add_new_static_var): New function.
389         * cgraph.h (add_new_static_var): Declare.
390
391 2007-05-27  Eric Christopher  <echristo@apple.com>
392
393         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
394         sp_offset depending on stack size. Save r12 depending
395         on registers we're saving later.
396         (rs6000_emit_epilogue): Update sp_offset depending only
397         on stack size.
398
399 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
400
401         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
402         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
403         * ifcvt.c (if_convert): Ditto.
404         * tree-ssa-threadupdate.c (thread_block): Ditto.
405         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
406         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
407         verify_loop_closed_ssa): Check number_of_loops instead of
408         current_loops.
409         * predict.c (tree_estimate_probability): Ditto.
410         * tree-if-conv.c (main_tree_if_conversion): Ditto.
411         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
412         * modulo-sched.c (sms_schedule): Ditto.
413         * tree-scalar-evolution.c (scev_const_prop): Ditto.
414         (scev_finalize): Do not do anything if scev analysis was not
415         initialized.
416         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
417         current_loops == NULL.
418         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
419         * loop-init.c (loop_optimizer_init): Do not free current_loops when
420         there are no loops.
421         (loop_optimizer_finalize): Assert that loops were analyzed.
422         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
423         rtl_doloop): Check number_of_loops instead of current_loops.
424         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
425         current_loops == NULL.
426         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
427         gate_tree_vectorize tree_linear_transform, check_data_deps,
428         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
429         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
430         Check number_of_loops instead of current_loops.
431         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
432         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
433         free loops if available.
434         (execute_pre): Do not pass do_fre to fini_pre.
435
436 2007-05-27  Tobias Burnus  <burnus@net-b.de>
437
438         PR middle-end/32083
439         * real.c (mpfr_from_real): Fix sign of -Inf.
440
441 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
442
443         * tree-vect-transform.c (vectorizable_conversion): Initialize
444         tree_code variables to ERROR_MARK.
445         (vectorizable_type_demotion): Likewise.
446         (vectorizable_type_promotion): Likewise.
447
448 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
449
450         PR target/32065
451         * config/i386/i386.md (movti): Handle push operands via
452         ix86_expand_push().
453
454 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
455
456         * basic-block.h: Remove the prototype for merge_seq_blocks.
457         * cfgcleanup.c (merge_seq_blocks): Remove.
458
459         * tree-flow.h: Remove the prototype for is_aliased_with.
460         * tree-ssa-alias.c (is_aliased_with): Remove.
461
462 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
463
464         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
465
466         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
467
468         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
469         ix86_expand_sse4_unpack if SSE4.1 is enabled.
470         (vec_unpacks_hi_v16qi): Likewise.
471         (vec_unpacku_lo_v16qi): Likewise.
472         (vec_unpacks_lo_v16qi): Likewise.
473         (vec_unpacku_hi_v8hi): Likewise.
474         (vec_unpacks_hi_v8hi): Likewise.
475         (vec_unpacku_lo_v8hi): Likewise.
476         (vec_unpacks_lo_v8hi): Likewise.
477         (vec_unpacku_hi_v4si): Likewise.
478         (vec_unpacks_hi_v4si): Likewise.
479         (vec_unpacku_lo_v4si): Likewise.
480         (vec_unpacks_lo_v4si): Likewise.
481
482 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
483
484         * c-typeck.c, config/arm/arm.c, config/darwin.c,
485         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
486         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
487         follow spelling conventions in various
488         warning/error/diagnostic messages.
489
490         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
491         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
492         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
493         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
494         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
495         * doc/tm.texi: Follow spelling conventions.
496
497 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
498
499         PR tree-opt/32090
500         * tree-ssa-forwprop.c
501         (forward_propagate_addr_into_variable_array_index): Remove
502         the lhs argument.  Use the type of def_rhs instead of lhs.
503         (forward_propagate_addr_expr_1): Update use of
504         forward_propagate_addr_into_variable_array_index.
505
506 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
507             Nigel Stephens  <nigel@mips.com>
508
509         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
510         function attributes, "far" being an alias for "long_call".
511         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
512         (mips_near_type_p, mips_far_type_p): New.
513         (mips_comp_type_attributes): New function to check that attributes
514         attached to a function type are compatible.
515         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
516         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
517         to the target function of the thunk.
518         (mips_encode_section_info): Check for "near" and "far" function
519         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
520
521         * config/mips/predicates.md (const_call_insn_operand): Test only
522         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
523
524         * doc/extend.texi (Function Attributes): Document MIPS "near" and
525         "far" attributes.
526
527         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
528         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
529         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
530         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
531
532 2007-05-25  Eric Christopher  <echristo@apple.com>
533
534         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
535         to x86-darwin configurations.
536         * config/i386/t-darwin: Add softfp support.
537         * config/i386/t-darwin64: Ditto.
538         * config/i386/sfp-machine.h: If mach then don't use
539         aliasing, emit a stub to call.
540
541 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
542
543         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
544         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
545         tree-predcom.c, tree-ssa-alias-warnings.c,
546         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
547         comment typos.  Follow spelling conventions.
548         * doc/cpp.texi, doc/invoke.texi: Fix typos.
549
550 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
551
552         PR target/32065
553         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
554         constants into memory.  Expand unaligned memory references for
555         SSE modes via x86_expand_vector_move_misalign() function.
556
557 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
558
559         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
560         "memory" attribute for "sseishft" type insn without operands[2].
561
562 2007-05-25  Dirk Mueller  <dmueller@suse.de>
563             Marcus Meissner <meissner@suse.de>
564
565         * doc/extend.texi (alloc_size): New attribute.
566         * c-common.c (handle_alloc_size_attribute): New.
567         * tree-object-size.c (alloc_object_size): Use alloc_size
568         attribute, if available.
569
570 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
571
572         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
573         with MASK_SSE2.
574         (__builtin_ia32_vec_ext_v2di): Likewise.
575         (__builtin_ia32_vec_ext_v4si): Likewise.
576         (__builtin_ia32_vec_ext_v8hi): Likewise.
577         (__builtin_ia32_vec_ext_v16qi): Likewise.
578         (__builtin_ia32_vec_set_v8hi): Likewise.
579
580 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
581
582         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
583
584 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
585
586         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
587         (arm_is_longcall_p): Rename to...
588         (arm_is_long_call_p): ...this.  Take a single tree argument and
589         return a bool.
590         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
591         (CUMULATIVE_ARGS): Remove call_cookie.
592         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
593         (ENCODED_LONG_CALL_ATTR_P): Delete.
594         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
595         LONG_CALL_FLAG_CHAR cases.
596         (ARM_DECLARE_FUNCTION_SIZE): Delete.
597         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
598         ARM_DECLARE_FUNCTION_SIZE.
599         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
600         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
601         (arm_encode_call_attribute, current_file_function_operand): Delete.
602         (arm_function_in_section_p): New function.
603         (arm_is_longcall_p): Rename to...
604         (arm_is_long_call_p): ...this.  Take the target function as a single
605         argument and return a bool.  Do not rely on call cookies.  Check
606         whether the target symbol is in the same section as the current
607         function, not just the same compilation unit.
608         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
609         (arm_encode_section_info): Don't encode a call type.
610         * config/arm/arm.md (call, call_value): Update calls to
611         arm_is_long(_)call_p.  Simplify logic.
612         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
613         Update calls to arm_is_long(_)call_p.
614
615 2007-05-25  Richard Guenther  <rguenther@suse.de>
616
617         PR tree-optimization/31982
618         * tree-ssa-forwprop.c
619         (forward_propagate_addr_into_variable_array_index): Handle arrays
620         with element size one.
621
622 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
623
624         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
625         (umulsi3_highpart): Likewise.
626
627 2007-05-24  Ian Lance Taylor  <iant@google.com>
628
629         PR rtl-optimization/32069
630         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
631         is NULL.
632
633 2007-05-24  Ollie Wild  <aaw@google.com>
634
635         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
636         description.
637
638 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
639
640         * postreload-gcse.c (reg_changed_after_insn_p): New function.
641         (oprs_unchanged_p): Use it to check all registers in a REG.
642         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
643         (reg_set_between_after_reload_p): Delete.
644         (reg_used_between_after_reload_p): Likewise.
645         (reg_set_or_used_since_bb_start): Likewise.
646         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
647         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
648         Use reg_set_between_p instead of reg_set_between_after_reload_p.
649         * rtlanal.c (reg_set_p): Check whether REG overlaps
650         regs_invalidated_by_call, rather than just checking the
651         membership of REGNO (REG).
652
653 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
654
655         * doc/passes.texi: Document predictive commoning.
656         * doc/invoke.texi (-fpredictive-commoning): Document.
657         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
658         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
659         adding indices to the generated name.
660         (schedule_sm): Pass 0 to get_lsm_tmp_name.
661         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
662         * tree-pretty-print.c (op_symbol_1): Renamed to ...
663         (op_symbol_code): ... and exported.
664         (dump_omp_clause, op_symbol): Use op_symbol_code
665         instead of op_symbol_1.
666         * tree-pass.h (pass_predcom): Declare.
667         * timevar.def (TV_PREDCOM): New timevar.
668         * tree-ssa-loop.c (run_tree_predictive_commoning,
669         gate_tree_predictive_commoning, pass_predcom): New.
670         * tree-data-ref.c (find_data_references_in_loop): Find the
671         references in dominance order.
672         (canonicalize_base_object_address): Ensure that the result has
673         pointer type.
674         (dr_analyze_innermost): Export.
675         (create_data_ref): Code to fail for references with invariant
676         address moved ...
677         (find_data_references_in_stmt): ... here.
678         * tree-data-ref.h (dr_analyze_innermost): Declare.
679         * tree-affine.c: Include tree-gimple.h and hashtab.h.
680         (aff_combination_find_elt, name_expansion_hash,
681         name_expansion_eq, tree_to_aff_combination_expand,
682         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
683         New functions.
684         * tree-affine.h (aff_combination_constant_multiple_p,
685         tree_to_aff_combination_expand): Declare.
686         * tree-predcom.c: New file.
687         * common.opt (fpredictive-commoning): New option.
688         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
689         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
690         * Makefile.in (tree-predcom.o): Add.
691         (tree-affine.o): Add TREE_GIMPLE_H dependency.
692         * passes.c (init_optimization_passes):  Add dceloop after
693         copy propagation in loop optimizer.  Add predictive commoning
694         to loop optimizer passes.
695
696 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
697
698         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
699         default hook.
700
701 2007-05-24  Jan Hubicka  <jh@suse.cz>
702
703         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
704         statistics.
705         (genheader): Include statistics.h.
706
707         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
708         notes are gone.
709         * print-rtl.c (flag_dump_unnumbered): Update comments.
710         (print_rtl): Fix my previous change.
711         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
712         specific data.
713
714 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
715
716         PR middle-end/32018
717         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
718         set_loop_copy.
719         (thread_through_all_blocks): Call initialize_original_copy_tables
720         and free_original_copy_tables.
721         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
722         Use set_loop_copy.
723         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
724         * cfghooks.c (duplicate_block): Use get_loop_copy.
725         * cfg.c: Include cfgloop.h.
726         (loop_copy): New hash table.
727         (initialize_original_copy_tables): Initialize loop_copy table.
728         (free_original_copy_tables): Free loop_copy table.
729         (copy_original_table_clear, copy_original_table_set,
730         set_loop_copy, get_loop_copy): New functions.
731         (set_bb_original, set_bb_copy): Use copy_original_table_set.
732         * cfgloop.h (struct loop): Remove copy field.
733         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
734         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
735
736 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
737
738         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
739         -msse/-msse2/-msse3.
740
741 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
742
743         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
744         __builtin_ia32_vec_set_v2di with MASK_64BIT.
745
746 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
747
748         PR target/27067
749         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
750         * targhooks.h (default_mangle_decl_assembler_name): Declare
751         default hook.
752         * targhooks.c (default_mangle_decl_assembler_name): Define
753         default hook.
754         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
755         default hook.
756         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
757         * langhooks.c (lhd_set_decl_assembler_name): Call
758         targetm.mangle_decl_assembler_name for names with global scope.
759
760         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
761         default.
762         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
763         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
764         Declare.
765         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
766         New. Factored out of i386_pe_encode_section_info.
767         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
768         Move check for prior decoration of stdcall
769         symbols to i386_pe_encode_section_info.
770         (i386_pe_encode_section_info): Adjust call to
771         gen_stdcall_or_fastcall_suffix.  Use
772         i386_pe_maybe_mangle_decl_assembler_name, if needed.
773         (i386_pe_mangle_decl_assembler_name): New. Wrap
774         i386_pe_maybe_mangle_decl_assembler_name.
775
776 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
777
778         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
779         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
780         * langhooks.c (get_signed_or_unsigned_type): Don't check for
781         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
782         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
783         TYPE_UNSIGNED.
784
785 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
786             Nigel Stephens  <nigel@mips.com>
787             Richard Sandiford  <richard@codesourcery.com>
788
789         Fix up MIPS16 hard float and add support for complex.
790
791         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
792         (TARGET_SOFT_FLOAT_ABI): New.
793         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
794         __mips_soft_float to reflect the ABI in use, not whether the
795         FPU is directly accessible (e.g., in MIPS16 mode).
796         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
797         (UNITS_PER_FPVALUE): Likewise.
798
799         * config/mips/mips.c (mips_expand_call): Remove redundant
800         TARGET_MIPS16 check.
801         (mips_arg_regno): New.
802         (function_arg_advance): When setting bits in cum->fp_code for
803         MIPS16, don't subtract 1 from cum->arg_number, since it is now
804         zero-based.
805         (function_arg): Use mips_arg_regno.
806         (mips_return_mode_in_fpr_p): New.
807         (mips16_call_stub_mode_suffix): New.
808         (mips16_cfun_returns_in_fpr_p): New.
809         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
810         (mips_output_function_prologue): Test mips16_hard_float, not
811         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
812         (mips_expand_epilogue): Call MIPS16 helper routines to copy
813         return value into a floating-point register.
814         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
815         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
816         (mips16_fp_args): Handle MIPS32r2 ISA which supports
817         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
818         word of double arguments from or to the high bits of 64-bit
819         floating point registers.
820         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
821         (mips16_fpret_double): New helper function.
822         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
823         support for complex modes.  Fill in DECL_RESULT for stubdecl.
824         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
825
826         * config/mips/mips16.S
827         (RET, ARG1, ARG2): New.
828         (MERGE_GPRf, MERGE_GPRt): New.
829         (DELAYt, DELAYf): New.
830         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
831         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
832         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
833         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
834         (SFOP): Renamed to...
835         (OPSF3): This, and macro-ified.  Updated all uses.
836         (SFOP2): Renamed to...
837         (OPSF2): This, and macro-ified.  Updated all uses.
838         (SFCMP): Renamed to...
839         (CMPSF): This, and macro-ified.  Updated all uses.
840         (SFREVCMP): Renamed to...
841         (REVCMPSF): This, and macro-ified.  Updated all uses.
842         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
843         (LDDBL1, LDDBL2, RETDBL): Deleted.
844         (DFOP): Renamed to...
845         (OPDF3): This, and macro-ified.  Updated all uses.
846         (DFOP2): Renamed to...
847         (OPDF2): This, and macro-ified.  Updated all uses.
848         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
849         (DFCMP): Renamed to...
850         (CMPDF): This, and macro-ified.  Updated all uses.
851         (DFREVCMP): Renamed to...
852         (REVCMPDF): This, and macro-ified.  Updated all uses.
853         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
854         (RET_FUNCTION): New.
855         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
856         (__mips16_ret_sc, __mips16_ret_dc): New.
857         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
858         STUB_ARGS_6, STUB_ARGS_10): New.
859         (CALL_STUB_NO_RET): New.
860         (__mips16_call_stub_1): Macro-ified.
861         (__mips16_call_stub_5): Macro-ified.
862         (__mips16_call_stub_2): Macro-ified.
863         (__mips16_call_stub_6): Macro-ified.
864         (__mips16_call_stub_9): Macro-ified.
865         (__mips16_call_stub_10): Macro-ified.
866         (CALL_STUB_RET): New.
867         (__mips16_call_stub_sf_0): Macro-ified.
868         (__mips16_call_stub_sf_1): Macro-ified.
869         (__mips16_call_stub_sf_5): Macro-ified.
870         (__mips16_call_stub_sf_2): Macro-ified.
871         (__mips16_call_stub_sf_6): Macro-ified.
872         (__mips16_call_stub_sf_9): Macro-ified.
873         (__mips16_call_stub_sf_10): Macro-ified.
874         (__mips16_call_stub_df_0): Macro-ified.
875         (__mips16_call_stub_df_1): Macro-ified.
876         (__mips16_call_stub_df_5): Macro-ified.
877         (__mips16_call_stub_df_2): Macro-ified.
878         (__mips16_call_stub_df_6): Macro-ified.
879         (__mips16_call_stub_df_9): Macro-ified.
880         (__mips16_call_stub_df_10): Macro-ified.
881         (__mips16_call_stub_sc_0): New.
882         (__mips16_call_stub_sc_1): New.
883         (__mips16_call_stub_sc_5): New.
884         (__mips16_call_stub_sc_2): New.
885         (__mips16_call_stub_sc_6): New.
886         (__mips16_call_stub_sc_9): New.
887         (__mips16_call_stub_sc_10): New.
888         (__mips16_call_stub_dc_0): New.
889         (__mips16_call_stub_dc_1): New.
890         (__mips16_call_stub_dc_5): New.
891         (__mips16_call_stub_dc_2): New.
892         (__mips16_call_stub_dc_6): New.
893         (__mips16_call_stub_dc_9): New.
894         (__mips16_call_stub_dc_10): New.
895
896         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
897         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
898         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
899
900 2007-05-23  Ian Lance Taylor  <iant@google.com>
901
902         * doc/invoke.texi (Invoking GCC): Document that the order of the
903         -l option matters.
904
905 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
906
907         PR target/30987
908         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
909         * config/score/predicate.md (const_pow2, const_npow2): Remove.
910         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
911         undef.
912
913         PR target/30474
914         * config/score/score.c (score_print_operand): Make sure that only
915         lower bits are used.
916
917 2007-05-22  Ian Lance Taylor  <iant@google.com>
918
919         * tree-vrp.c (avoid_overflow_infinity): New static function,
920         broken out of set_value_range_to_value.
921         (set_value_range_to_value): Call avoid_overflow_infinity.
922         (extract_range_from_assert): Likewise.
923
924 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
925
926         PR middle-end/31095
927          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
928         change the type before looking for a COMPOUND_EXPR.
929
930 2007-05-22  Ian Lance Taylor  <iant@google.com>
931
932         * lower-subreg.c (decompose_multiword_subregs): If we change an
933         insn, call remove_retval_note on it.
934
935 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
936
937         * regs.h (end_hard_regno): New function.
938         (END_HARD_REGNO, END_REGNO): New macros.
939         (add_to_hard_reg_set): New function.
940         (remove_from_hard_reg_set): Likewise.
941         (in_hard_reg_set_p): Likewise.
942         (overlaps_hard_reg_set_p): Likewise.
943         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
944         (note_btr_set): Use END_HARD_REGNO.
945         * caller-save.c (setup_save_areas): Use end_hard_regno.
946         (mark_set_regs): Use END_HARD_REGNO.
947         (add_stored_regs): Use end_hard_regno.
948         (mark_referenced_regs): Use add_to_hard_reg_set.
949         * combine.c (update_table_tick): Use END_REGNO.
950         (record_value_for_reg): Likewise.
951         (record_dead_and_set_regs): Likewise.
952         (get_last_value_validate): Likewise.
953         (use_crosses_set_p): Likewise.
954         (reg_dead_at_p_1): Likewise.
955         (reg_dead_at_p): Likewise.
956         (mark_used_regs_combine): Use add_to_hard_reg_set.
957         (move_deaths): Use END_HARD_REGNO.
958         (reg_bitfield_target_p): Use end_hard_regno.
959         (distribute_notes): Use END_HARD_REGNO.
960         * cse.c (mention_regs): Use END_REGNO.
961         (insert): Use add_to_hard_reg_set.
962         (invalidate): Use END_HARD_REGNO.
963         (invalidate_for_call): Likewise.
964         (exp_equiv_p): Use END_REGNO.
965         (cse_insn): Likewise.
966         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
967         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
968         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
969         * function.c (keep_stack_depressed): Use end_hard_regno.
970         * global.c (global_alloc): Use end_hard_regno.
971         (global_conflicts): Use add_to_hard_reg_set instead of
972         mark_reg_live_nc.
973         (find_reg): Likewise.
974         (mark_reg_store): Likewise.
975         (mark_reg_conflicts): Likewise.
976         (mark_reg_death): Use remove_from_hard_reg_set.
977         (mark_reg_live_nc): Delete.
978         (set_preference): Use end_hard_regno.
979         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
980         remove_from_hard_reg_set.
981         (post_mark_life): Use add_to_hard_reg_set.
982         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
983         (reg_becomes_live): Use add_to_hard_reg_set.
984         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
985         (peep2_find_free_register): Use add_to_hard_reg_set.
986         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
987         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
988         * regrename.c (note_sets): Use add_to_hard_reg_set.
989         (clear_dead_regs): Use remove_from_hard_reg_set.
990         (regrename_optimize): Use add_to_hard_reg_set.
991         (find_oldest_value_reg): Use in_hard_reg_set_p.
992         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
993         (hard_reg_set_here_p): Use end_hard_regno.
994         (decompose): Likewise.
995         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
996         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
997         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
998         (mark_home_live): Use end_hard_regno.
999         (spill_hard_reg): Likewise.
1000         (clear_reload_reg_in_use): Likewise.
1001         * reorg.c (delete_prior_computation): Use END_REGNO.
1002         * resource.c (update_live_status): Use END_HARD_REGNO.
1003         (mark_referenced_resources): Use add_to_hard_reg_set.
1004         (mark_set_resources): Likewise.
1005         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
1006         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
1007         (reg_overlap_mentioned_p): Likewise.
1008         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
1009         (covers_regno_no_parallel_p): Use END_REGNO.
1010         (find_regno_note): Likewise.
1011         (find_reg_fusage): Use END_HARD_REGNO.
1012         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
1013         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
1014
1015 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1016
1017         * mode-switching.c (reg_dies): Change type of second argument to
1018         "HARD_REG_SET *".
1019         (optimize_mode_switching): Update accordingly.
1020
1021 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
1022
1023         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
1024         in favor of...
1025         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
1026         (hard_reg_set_empty_p): ...these new functions.
1027         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
1028         GO_IF_HARD_REG_SUBSET.
1029         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
1030         instead of GO_IF_HARD_REG_EQUAL.
1031         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
1032         instead of GO_IF_HARD_REG_EQUAL.
1033         * global.c (find_reg): Use hard_reg_set_empty_p instead of
1034         GO_IF_HARD_REG_SUBSET.
1035         (modify_reg_pav): Use hard_reg_set_empty_p instead of
1036         GO_IF_HARD_REG_EQUAL.
1037         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
1038         of GO_IF_HARD_REG_SUBSET.
1039         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
1040         instead of GO_IF_HARD_REG_EQUAL.
1041         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
1042         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
1043         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
1044         of GO_IF_HARD_REG_SUBSET,
1045         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
1046         GO_IF_HARD_REG_SUBSET.
1047         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
1048         instead of GO_IF_HARD_REG_EQUAL.
1049         * config/sh/sh.c (push_regs, calc_live_regs): Use
1050         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
1051         (hard_regs_intersect_p): Delete.
1052
1053 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
1054
1055         * doc/sourcebuild.texi (Test Directives) Add dg-message.
1056
1057 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
1058             Richard Henderson  <rth@redhat.com>
1059
1060         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
1061         extra_headers.
1062         (x86_64-*-*): Likewise.
1063
1064         * i386/i386-modes.def (V2QI): New.
1065
1066         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
1067         SSE4A.
1068         (override_options): Support SSE4.1.
1069         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
1070         (IX86_BUILTIN_BLENDPS): Likewise.
1071         (IX86_BUILTIN_BLENDVPD): Likewise.
1072         (IX86_BUILTIN_BLENDVPS): Likewise.
1073         (IX86_BUILTIN_PBLENDVB128): Likewise.
1074         (IX86_BUILTIN_PBLENDW128): Likewise.
1075         (IX86_BUILTIN_DPPD): Likewise.
1076         (IX86_BUILTIN_DPPS): Likewise.
1077         (IX86_BUILTIN_INSERTPS128): Likewise.
1078         (IX86_BUILTIN_MOVNTDQA): Likewise.
1079         (IX86_BUILTIN_MPSADBW128): Likewise.
1080         (IX86_BUILTIN_PACKUSDW128): Likewise.
1081         (IX86_BUILTIN_PCMPEQQ): Likewise.
1082         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
1083         (IX86_BUILTIN_PMAXSB128): Likewise.
1084         (IX86_BUILTIN_PMAXSD128): Likewise.
1085         (IX86_BUILTIN_PMAXUD128): Likewise.
1086         (IX86_BUILTIN_PMAXUW128): Likewise.
1087         (IX86_BUILTIN_PMINSB128): Likewise.
1088         (IX86_BUILTIN_PMINSD128): Likewise.
1089         (IX86_BUILTIN_PMINUD128): Likewise.
1090         (IX86_BUILTIN_PMINUW128): Likewise.
1091         (IX86_BUILTIN_PMOVSXBW128): Likewise.
1092         (IX86_BUILTIN_PMOVSXBD128): Likewise.
1093         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
1094         (IX86_BUILTIN_PMOVSXWD128): Likewise.
1095         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
1096         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
1097         (IX86_BUILTIN_PMOVZXBW128): Likewise.
1098         (IX86_BUILTIN_PMOVZXBD128): Likewise.
1099         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
1100         (IX86_BUILTIN_PMOVZXWD128): Likewise.
1101         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
1102         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
1103         (IX86_BUILTIN_PMULDQ128): Likewise.
1104         (IX86_BUILTIN_PMULLD128): Likewise.
1105         (IX86_BUILTIN_ROUNDPD): Likewise.
1106         (IX86_BUILTIN_ROUNDPS): Likewise.
1107         (IX86_BUILTIN_ROUNDSD): Likewise.
1108         (IX86_BUILTIN_ROUNDSS): Likewise.
1109         (IX86_BUILTIN_PTESTZ): Likewise.
1110         (IX86_BUILTIN_PTESTC): Likewise.
1111         (IX86_BUILTIN_PTESTNZC): Likewise.
1112         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
1113         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
1114         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
1115         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
1116         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
1117         (bdesc_ptest): New.
1118         (bdesc_sse_3arg): Likewise.
1119         (bdesc_2arg): Likewise.
1120         (bdesc_1arg): Likewise.
1121         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
1122         with 3 args.
1123         (ix86_expand_sse_4_operands_builtin): New.
1124         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
1125         smaller than 8 bits as the 2nd arg.
1126         (ix86_expand_sse_ptest): New.
1127         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
1128         (ix86_expand_vector_set): Support SSE4.1.
1129         (ix86_expand_vector_extract): Likewise.
1130
1131         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1132         __SSE4_1__ for -msse4.1.
1133
1134         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
1135         (UNSPEC_INSERTPS): Likewise.
1136         (UNSPEC_DP): Likewise.
1137         (UNSPEC_MOVNTDQA): Likewise.
1138         (UNSPEC_MPSADBW): Likewise.
1139         (UNSPEC_PHMINPOSUW): Likewise.
1140         (UNSPEC_PTEST): Likewise.
1141         (UNSPEC_ROUNDP): Likewise.
1142         (UNSPEC_ROUNDS): Likewise.
1143
1144         * config/i386/i386.opt (msse4.1): New for SSE4.1.
1145
1146         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
1147         (const_pow2_1_to_32768_operand): Likewise.
1148
1149         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
1150         file.
1151
1152         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
1153         SSE4.1.
1154         (sse4_1_insertps): Likewise.
1155         (*sse4_1_extractps): Likewise.
1156         (sse4_1_ptest): Likewise.
1157         (sse4_1_mulv2siv2di3): Likewise.
1158         (*sse4_1_mulv4si3): Likewise.
1159         (*sse4_1_smax<mode>3): Likewise.
1160         (*sse4_1_umax<mode>3): Likewise.
1161         (*sse4_1_smin<mode>3): Likewise.
1162         (*sse4_1_umin<mode>3): Likewise.
1163         (sse4_1_eqv2di3): Likewise.
1164         (*sse4_1_pinsrb): Likewise.
1165         (*sse4_1_pinsrd): Likewise.
1166         (*sse4_1_pinsrq): Likewise.
1167         (*sse4_1_pextrb): Likewise.
1168         (*sse4_1_pextrb_memory): Likewise.
1169         (*sse4_1_pextrw_memory): Likewise.
1170         (*sse4_1_pextrq): Likewise.
1171         (sse4_1_blendpd): Likewise.
1172         (sse4_1_blendps): Likewise.
1173         (sse4_1_blendvpd): Likewise.
1174         (sse4_1_blendvps): Likewise.
1175         (sse4_1_dppd): Likewise.
1176         (sse4_1_dpps): Likewise.
1177         (sse4_1_movntdqa): Likewise.
1178         (sse4_1_mpsadbw): Likewise.
1179         (sse4_1_packusdw): Likewise.
1180         (sse4_1_pblendvb): Likewise.
1181         (sse4_1_pblendw): Likewise.
1182         (sse4_1_phminposuw): Likewise.
1183         (sse4_1_extendv8qiv8hi2): Likewise.
1184         (*sse4_1_extendv8qiv8hi2): Likewise.
1185         (sse4_1_extendv4qiv4si2): Likewise.
1186         (*sse4_1_extendv4qiv4si2): Likewise.
1187         (sse4_1_extendv2qiv2di2): Likewise.
1188         (*sse4_1_extendv2qiv2di2): Likewise.
1189         (sse4_1_extendv4hiv4si2): Likewise.
1190         (*sse4_1_extendv4hiv4si2): Likewise.
1191         (sse4_1_extendv2hiv2di2): Likewise.
1192         (*sse4_1_extendv2hiv2di2): Likewise.
1193         (sse4_1_extendv2siv2di2): Likewise.
1194         (*sse4_1_extendv2siv2di2): Likewise.
1195         (sse4_1_zero_extendv8qiv8hi2): Likewise.
1196         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
1197         (sse4_1_zero_extendv4qiv4si2): Likewise.
1198         (*sse4_1_zero_extendv4qiv4si2): Likewise.
1199         (sse4_1_zero_extendv2qiv2di2): Likewise.
1200         (*sse4_1_zero_extendv2qiv2di2): Likewise.
1201         (sse4_1_zero_extendv4hiv4si2): Likewise.
1202         (*sse4_1_zero_extendv4hiv4si2): Likewise.
1203         (sse4_1_zero_extendv2hiv2di2): Likewise.
1204         (*sse4_1_zero_extendv2hiv2di2): Likewise.
1205         (sse4_1_zero_extendv2siv2di2): Likewise.
1206         (*sse4_1_zero_extendv2siv2di2): Likewise.
1207         (sse4_1_roundpd): Likewise.
1208         (sse4_1_roundps): Likewise.
1209         (sse4_1_roundsd): Likewise.
1210         (sse4_1_roundss): Likewise.
1211         (mulv4si3): Don't expand for SSE4.1.
1212         (smax<mode>3): Likewise.
1213         (umaxv4si3): Likewise.
1214         (uminv16qi3): Likewise.
1215         (umin<mode>3): Likewise.
1216         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
1217
1218         * doc/extend.texi: Document SSE4.1 built-in functions.
1219
1220         * doc/invoke.texi: Document -msse4.1.
1221
1222 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
1223
1224         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
1225         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
1226         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
1227         (ASM_SPEC): Add asm_pcrel_spec.
1228         (EXTRA_SPECS): Add asm_pcrel_spec.
1229
1230 2007-05-21  David Daney  <ddaney@avtrex.com>
1231
1232         * doc/install.texi (Building a cross compiler): Add requirements
1233         for Java cross compiler.
1234
1235 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1236
1237         PR middle-end/31995
1238         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
1239         Add loopno argument.  Use evolution_function_is_invariant_rec_p
1240         instead of evolution_function_is_constant_p.
1241         Update calls to evolution_function_is_affine_multivariate_p.
1242         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
1243         Add loopno argument.
1244         * tree-scalar-evolution.c (gather_chrec_stats): Call
1245         evolution_function_is_affine_multivariate_p with a loop
1246         number of 0.
1247         * tree-data-ref.c (analyze_miv_subscript): Likewise.
1248         (analyze_overlapping_iterations): Likewise.
1249         (access_functions_are_affine_or_constant_p): Likewise.
1250         (build_classic_dist_vector_1): If the access functions
1251         are equal, don't do anything.
1252
1253 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
1254             Paolo Carlini  <pcarlini@suse.de>
1255             Uros Bizjak  <ubizjak@gmail.com>
1256
1257         * c-cppbuiltin.c (c_cpp_builtins): Define
1258         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
1259         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
1260         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
1261         * doc/cpp.texi ([Standard Predefined Macros]): Document.
1262
1263 2007-05-21  Mike Stump  <mrs@apple.com>
1264
1265         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
1266         handling as well.
1267         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
1268
1269 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
1270
1271         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
1272         implementation if __OPTIMIZE__ is not defined.
1273         (_mm_alignr_pi8): Ditto.
1274         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
1275         (_mm_inserti_si64): Ditto.
1276         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
1277         (_mm_slli_epi16): Ditto.
1278         (_mm_slli_epi32): Ditto.
1279         (_mm_slli_epi64): Ditto.
1280         (_mm_srai_epi16): Ditto.
1281         (_mm_srai_epi32): Ditto.
1282         (_mm_srli_si128): Ditto.
1283         (_mm_slli_si128): Ditto.
1284         (_mm_srli_epi16): Ditto.
1285         (_mm_srli_epi32): Ditto.
1286         (_mm_srli_epi64): Ditto.
1287         (_mm_extract_epi16): Ditto.
1288         (_mm_insert_epi16): Ditto.
1289         (_mm_shufflehi_epi16): Ditto.
1290         (_mm_shufflelo_epi16): Ditto.
1291         (_mm_shuffle_epi32): Ditto.
1292         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
1293         (_m_pextrw): Ditto.
1294         (_mm_insert_pi16): Ditto.
1295         (_m_pinsrw): Ditto.
1296         (_mm_shuffle_pi16): Ditto.
1297         (_m_pshufw): Ditto.
1298         (_mm_shufle_ps): Ditto.
1299         (_mm_prefetch): Ditto.
1300
1301 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
1302
1303         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
1304         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
1305         * real.c (encode_i370_single, decode_i370_single,
1306         encode_i370_double, decode_i370_double): Functions removed.
1307         (i370_single_format, i370_double_format): Initializations removed.
1308         (real_maxval, round_for_format, exact_real_truncate, significand_size):
1309         Consider the log2_b field to always be one.
1310         (ieee_single_format, mips_single_format, coldfire_single_format,
1311         ieee_double_format, mips_double_format, coldfire_double_format,
1312         ieee_extended_motorola_format, ieee_extended_intel_96_format,
1313         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
1314         ibm_extended_format, mips_extended_format, ieee_quad_format,
1315         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
1316         decimal_single_format, decimal_double_format, decimal_quad_format,
1317         c4x_single_format, c4x_extended_format, real_internal_format): Remove
1318         initialization of log2_b.
1319         * real.h (i370_single_format, i370_double_format): Declarations removed.
1320         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
1321         field to always be one.
1322
1323 2007-05-21  Andreas Schwab  <schwab@suse.de>
1324
1325         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
1326         NOTE_INSN_BASIC_BLOCK_P.
1327         (process_for_unwind_directive): Likewise.
1328
1329 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
1330
1331         * builtins.c (expand_builtin_setjmp_setup): Update comment.
1332         * function.h (struct function): Move va_list_gpr_size,
1333         va_list_fpr_size, function_frequency to front of bitfields.  Add
1334         calls_unwind_init.
1335         (current_function_calls_unwind_init): New.
1336         * except.c (expand_builtin_unwind_init): Set
1337         current_function_calls_unwind_init not
1338         current_function_has_nonlocal_label.
1339         * reload1.c (has_nonexceptional_receiver): New.
1340         (reload): Use it and current_function_calls_unwind_init to
1341         determine whether call-saved regs must be saved.
1342
1343 2007-05-20  Jan Hubicka  <jh@suse.cz>
1344
1345         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
1346         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1347         * ddg.c (create_ddg): LIkewise.
1348         * final.c (final): Remove hunk moving line numbernotes around since
1349         they are no longer present at this stage.
1350         (final_scan_insn): Use NOTE_KIND instead of
1351         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1352         (output_asm_label): Likewise.
1353         * reorg.c (dbr_schedule): Likewise.
1354         * haifa-sched.c (unlink_other_notes): Likewise.
1355         * mode-switching.c (optimize_mode_switching): Likewise.
1356         * graph.c (start_bb): Likewise.
1357         * rtl.def (NOTE): Update description.
1358         * jump.c (squeeze_notes): Delete.
1359         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
1360         NOTE_INSN_BASIC_BLOCK_P when possible.
1361         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
1362         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
1363         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1364         (dwarf2out_var_location): Likewise.
1365         * cfgbuild.c (make_edges): Likewise.
1366         (find_basic_blocks_1): Likewise.
1367         * function.c (reorder_blocks_1): Likewise.
1368         (epilogue_done): Likewise.
1369         (reposition_prologue_and_epilogue_notes): Likewise.
1370         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
1371         notes.
1372         (print_rtl): Likewise.
1373         (print_rtl_single): Likewise.
1374         * gcse.c (insert_insn_start_bb): Likewise.
1375         * alias.c (init_alias_analysis): Likewise.
1376         * calls.c (fixup_tail_calls): Likewise.
1377         * except.c (sjlj_emit_function_enter): Likewise.
1378         * emit-rtl.c (add_insn_after): Likeiwse.
1379         (emit_label_before): Likewise.
1380         (emit_label_after): Likewise.
1381         (emit_note_before, emit_note_after, emit_note): Update
1382         parameter to be enum insn_note; do not deal with source
1383         files.
1384         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
1385         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
1386         when possible.
1387         (merge_blocks_move_successor_nojumps): Simplify now when
1388         we don't have BLOCK notes.
1389         (try_optimize_cfg): Likewise.
1390         * cfglayout.c (skip_insns_after_block): Likewise.
1391         (record_effective_endpoints): Likewise.
1392         (duplicate_insn_chain): Likewise.
1393         * varasm.c (output_constant_pool_1): Likewise.
1394         * sched-deps.c (sched_analyze): Likewise.
1395         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
1396         Exterminate.
1397         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
1398         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
1399         (SET_INSN_DELETED): Simplify.
1400         (NOTE_LINE_NUMBER): Exterminate.
1401         (NOTE_LINE_KIND): New.
1402         (NOTE_INSN_BASIC_BLOCK_P): Update.
1403         (enum insn_note): Simplify.
1404         (GET_NOTE_INSN_NAME) Simplify.
1405         (emit_note_before, emit_note_after, emit_note): Update prototype.
1406         (squeeze_notes): Remove.
1407         * sched-int.h (NOTE_NOT_BB_P): Update.
1408         * resource.c (mark_target_live_regs): Update.
1409         * sched-rgn.c (debug_dependencies): Update.
1410         * sched-vis.c (print_insn): Update.
1411         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
1412         * config/i386/i386.c (ix86_output_function_epilogue): Update.
1413         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
1414         (TARGET_ADJUST_UNROLL_MAX): Likewise.
1415         (split_branches): Update.
1416         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
1417         4.0.0.
1418         (sh_adjust_unroll_max): Exterminate.
1419         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
1420         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
1421         (m68hc11_reorg): Likewise.
1422         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
1423         (emit_predicate_relation_info): Update.
1424         (process_for_unwind_directive): Update.
1425         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
1426         (output_call): Update.
1427         * config/pa/pa.c (output_lbranch): Update.
1428         (output_millicode_call): Update.
1429         (output_call): Update.
1430         (pa_combine_instructions): Update.
1431         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
1432         * config/bfin/bfin.c (gen_one_bundle): Update.
1433         * cfgrtl.c (can_delete_note_p): Update.
1434         (delete_insn): Update.
1435         (rtl_merge_blocks): Update.
1436         (commit_one_edge_insertion): Update.
1437         (rtl_verify_flow_info): Update.
1438         * stmt.c (expand_case): Do not call squeeze_notes.
1439
1440 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1441
1442         PR middle-end/7651
1443         PR c++/11856
1444         PR c/12963
1445         PR c/23587
1446         PR other/29694
1447         * c.opt (Wtype-limits): New.
1448         * doc/invoke.texi (Wtype-limits): Document it.
1449         (Wextra): Enabled by -Wextra.
1450         * c-opts.c (c_common_post_options): Enabled by -Wextra.
1451         * c-common.c (shorten_compare): Warn with Wtype-limits.
1452
1453 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
1454
1455         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
1456         inlined function, not as a macro.
1457         (_mm_alignr_pi8): Ditto.
1458         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
1459         (_mm_inserti_si64): Ditto.
1460         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
1461         (_mm_extract_epi16): Ditto.
1462         (_mm_insert_epi16): Ditto.
1463         (_mm_shufflehi_epi16): Ditto.
1464         (_mm_shufflelo_epi16): Ditto.
1465         (_mm_shuffle_epi32): Ditto.
1466         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
1467         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
1468         all functions.
1469         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
1470         float constant.
1471         (_m_to_float): Use C89 compatible assignment.
1472
1473 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
1474
1475         PR target/32007
1476         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
1477
1478 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1479
1480         PR middle-end/7651
1481         * doc/invoke.texi (Wreturn-type): Complete description.
1482         (Wextra): Delete item about return-type warning.
1483         * c-decl.c: Delete redundant Wextra warning.
1484
1485 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
1486
1487         PR target/31585
1488         * config/i386/pmmintrin.h: Do not include xmmintrin.h
1489         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
1490         inlined function, not as a macro.
1491         (_mm_prefetch): Ditto.
1492         (_m_pextrw): Ditto.
1493         (_mm_insert_pi16): Ditto.
1494         (_m_pinsrw): Ditto.
1495         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
1496         (_m_pshufw): Ditto. Add const to __N argument.
1497         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
1498         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
1499         (_mm_slli_epi32): Ditto.
1500         (_mm_srli_si128): Implement as always inlined function, not as a macro.
1501         Add __inline to function declaration.
1502         (_mm_slli_si128): Ditto.
1503
1504 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
1505
1506         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
1507         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
1508         New constants.
1509         (struct fenv): New structure.
1510         (FP_HANDLE_EXCEPTIONS): New define.
1511         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
1512         (_FP_DECL_EXP): New define.
1513         (FP_INIT_ROUNDMODE): New define.
1514         (FP_ROUNDMODE): New define.
1515
1516 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1517
1518         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
1519         (Wconversion): Update description.
1520         (Wconversion-sign): New.
1521         * c.opt (Wconversion-sign): New.
1522         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
1523         means disabled for C++. Otherwise, take the status of Wconversion.
1524         * c-common.c (conversion_warning): Warn with either Wconversion or
1525         Wconversion-sign.
1526         (warnings_for_convert_and_check): Conditions are already checked by
1527         conversion_warning.
1528         (convert_and_check): Don't check warnings if the conversion failed.
1529
1530 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
1531            Anatoly Sokolov <aesok@dol.ru>
1532
1533         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
1534         avr_epilogue_uses) : Add declaration.
1535         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
1536         * config/avr/constraints.md (R): New constraint.
1537         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
1538         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
1539         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
1540         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
1541         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
1542         call_prologue_saves, epilogue_restores, return_from_epilogue,
1543         return_from_main_epilogue, return_from_interrupt_epilogue,
1544         return_from_naked_epilogue, prologue, epilogue): New patterns.
1545         (jump): Handle symbol reference.
1546         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
1547         avr_output_function_prologue, avr_output_function_epilogue): Remove
1548         functions.
1549         (avr_init_machine_status, expand_prologue, expand_epilogue,
1550         avr_asm_function_end_prologue, avr_epilogue_uses,
1551         avr_asm_function_begin_epilogue): New functions.
1552         (prologue_size, epilogue_size, jump_tables_size): Remove global
1553         variables.
1554         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
1555         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
1556         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
1557         (avr_override_options): Initialise init_machine_status.
1558         (output_movhi): Handle all stack pointer loads.
1559         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
1560         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
1561         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
1562         (EPILOGUE_USES) Redefine.
1563         (machine_function) Declare.
1564
1565 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
1566
1567         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
1568         Use a single return statement.
1569
1570 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1571
1572         PR middle-end/30250
1573         * builtins.c (do_mpfr_lgamma_r): New.
1574         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
1575         * tree.h (CASE_FLT_FN_REENT): New.
1576
1577 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
1578
1579         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
1580         (output_die): Use 'unsigned long' with %x.
1581         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
1582         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
1583         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
1584
1585         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
1586
1587 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1588
1589         PR target/31989
1590         PR target/31681
1591         PR target/31666
1592         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
1593         true if function has no argument.
1594
1595 2007-05-18  DJ Delorie  <dj@redhat.com>
1596
1597         * config/mips/mips.c (mips_offset_within_alignment_p): New.
1598         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
1599
1600 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
1601
1602         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
1603         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
1604         count_trailing_zeros.
1605         (__i386__): Implement count_leading_zeros using __builtin_clz().
1606         Implement count_trailing_zeros usign __builtin_ctz().
1607
1608 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
1609
1610         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
1611
1612 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
1613
1614         PR middle-end/31344
1615         * expr.c (emit_move_change_mode): Change mode of push operands here.
1616
1617 2007-05-17  Ian Lance Taylor  <iant@google.com>
1618
1619         PR tree-optimization/31953
1620         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
1621         Change all callers.
1622         (set_value_range_to_null): Call set_value_range_to_value.
1623         (extract_range_from_comparison): Likewise.
1624
1625 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1626
1627         * toplev.c (print_version): Output GMP/MPFR version info.
1628
1629         * builtins.c (CASE_MATHFN_REENT): New macro.
1630         (mathfn_built_in): Use it.
1631         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
1632         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
1633         BUILT_IN_LGAMMAL_R): New.
1634         * doc/extend.texi: Document new builtins.
1635
1636         PR middle-end/31796
1637         * builtins.c (do_mpfr_remquo): New.
1638         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
1639         (fold_builtin_3): Handle BUILT_IN_REMQUO.
1640
1641         PR middle-end/30251
1642         * builtins.c (fold_builtin_1): Handle y0, y1.
1643         (fold_builtin_2): Handle yn.
1644
1645         PR middle-end/30251
1646         * builtins.c (do_mpfr_bessel_n): New.
1647         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
1648         (fold_builtin_2): Handle BUILT_IN_JN.
1649
1650 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
1651
1652         PR target/31965
1653         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
1654         TYPE_PRECISION (intmax_type_node).
1655
1656 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
1657
1658         PR target/31850
1659         * reload.c (subst_reloads): Remove checking.
1660
1661 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
1662
1663         PR rtl-optimization/31691
1664         * combine.c (simplify_set): Build a new src pattern instead of
1665         substituting its operands in the COMPARE case.
1666
1667 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
1668
1669         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
1670         (execute_vrp): Preserve loops through jump threading.
1671         * tree-ssa-threadupdate.c (thread_single_edge,
1672         dbds_continue_enumeration_p, determine_bb_domination_status,
1673         thread_through_loop_header): New functions.
1674         (create_edge_and_update_destination_phis,
1675         create_edge_and_update_destination_phis): Set loops for the new blocks.
1676         (prune_undesirable_thread_requests): Removed.
1677         (redirect_edges): Do not pretend that redirect_edge_and_branch can
1678         create new blocks.
1679         (thread_block): Do not call prune_undesirable_thread_requests.
1680         Update loops.
1681         (mark_threaded_blocks): Select edges to thread here.
1682         (thread_through_all_blocks): Take may_peel_loop_headers argument.
1683         Thread edges through loop headers independently.
1684         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
1685         * tree-pass.h (TODO_mark_first_instance): New.
1686         (first_pass_instance): Declare.
1687         * cfghooks.c (duplicate_block): Put the block to the original loop
1688         if copy is not specified.
1689         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
1690         jump threading.  Pass may_peel_loop_headers to
1691         thread_through_all_blocks according to first_pass_instance.
1692         * cfgloop.h (create_preheader): Declare.
1693         * tree-flow.h (thread_through_all_blocks): Declaration changed.
1694         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
1695         * passes.c (first_pass_instance): New variable.
1696         (next_pass_1): Set TODO_mark_first_instance.
1697         (execute_todo): Set first_pass_instance.
1698
1699 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
1700
1701         PR tree-optimization/24659
1702         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
1703         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
1704         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
1705         OTI_vec_pack_ufix_trunc.
1706         (vec_unpacks_float_hi_optab): Define new macro.
1707         (vec_unpacks_float_lo_optab): Ditto.
1708         (vec_unpacku_float_hi_optab): Ditto.
1709         (vec_unpacku_float_lo_optab): Ditto.
1710         (vec_pack_sfix_trunc_optab): Ditto.
1711         (vec_pack_ufix_trunc_optab): Ditto.
1712         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
1713         and vec_pack_[s|u]fix_trunc_optab using
1714         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
1715         * tree-vectorizer.c (supportable_widening_operation): Handle
1716         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
1717         (supportable_narrowing_operation): New function.
1718         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
1719         * tree-vect-transform.c (vectorizable_conversion): Handle
1720         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
1721         (vect_gen_widened_results_half): Move before vectorizable_conversion.
1722         (vectorizable_type_demotion): Call supportable_narrowing_operation()
1723         to check for target support.
1724         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
1725         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
1726         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
1727         for VEC_PACK_FIX_TRUNC_EXPR.
1728         (expand_binop): Special case mode of the result for
1729         vec_pack_[u|s]fix_trunc_optab.
1730         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
1731         vec_pack_[u|s]fix_trunc_optab.
1732
1733         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
1734         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
1735         * tree-pretty-print.c (dump_generic_node): Handle
1736         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
1737         VEC_PACK_FIX_TRUNC_EXPR.
1738         (op_prio): Ditto.
1739         * expr.c (expand_expr_real_1): Ditto.
1740         * tree-inline.c (estimate_num_insns_1): Ditto.
1741         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
1742
1743         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
1744         (vec_unpacks_float_lo_v8hi): Ditto.
1745         (vec_unpacku_float_hi_v8hi): Ditto.
1746         (vec_unpacku_float_lo_v8hi): Ditto.
1747         (vec_unpacks_float_hi_v4si): Ditto.
1748         (vec_unpacks_float_lo_v4si): Ditto.
1749         (vec_pack_sfix_trunc_v2df): Ditto.
1750
1751         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
1752         Document.
1753         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
1754         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
1755         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
1756         [vec_pack_ufix_trunc]: Ditto.
1757         [vec_unpacks_float_hi]: Ditto.
1758         [vec_unpacks_float_lo]: Ditto.
1759         [vec_unpacku_float_hi]: Ditto.
1760         [vec_unpacku_float_lo]: Ditto.
1761
1762 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
1763
1764         * soft-fp/README: Update for new files.
1765         * soft-fp/floattisf.c: New file.
1766         * soft-fp/floattidf.c: New file.
1767         * soft-fp/floattitf.c: New file.
1768         * soft-fp/floatuntisf.c: New file.
1769         * soft-fp/floatuntidf.c: New file.
1770         * soft-fp/floatuntitf.c: New file.
1771         * soft-fp/fixsfti.c: New file.
1772         * soft-fp/fixdfti.c: New file.
1773         * soft-fp/fixtfti.c: New file.
1774         * soft-fp/fixunssfti.c: New file.
1775         * soft-fp/fixunsdfti.c: New file.
1776         * soft-fp/fixunstfti.c: New file.
1777         * soft-fp/extendxftf.c: New file.
1778         * soft-fp/trunctfxf.c: New file.
1779
1780         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
1781         (__trunctfxf2): Ditto.
1782
1783         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
1784         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
1785         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
1786         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
1787         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
1788         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
1789
1790         * config/i386/t-fprules-softfp64: New file.
1791         * config/i386/sfp-machine.h: New file.
1792         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
1793         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
1794         and soft-fp/t-softfp to tmake_file.
1795         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
1796         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
1797
1798         * config/i386/t-linux64 (softfp_wrap_start): New.
1799         (softfp_wrap_end): New.
1800         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
1801         supported for TARGET_64BIT.
1802
1803 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
1804
1805         * c-common.c (c_common_signed_or_unsigned_type): Emulate
1806         c_common_unsigned_type behavior.
1807
1808 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
1809
1810         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
1811         calls as pure.
1812
1813 2007-05-16  Eric Christopher  <echristo@apple.com>
1814
1815         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
1816         saving after stack push. Set sp_offset whenever we push.
1817         (rs6000_emit_epilogue): Move altivec register restore before
1818         stack push.
1819
1820 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
1821
1822         * configure.ac: Allow sysroots to be relocated under $prefix as
1823         well as $exec_prefix.
1824         * configure: Regenerate.
1825
1826 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
1827
1828         Revert:
1829
1830         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
1831
1832         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
1833         (gcc_tooldir): Likewise.
1834         * configure: Regenerate.
1835         * Makefile.in (libsubdir_to_prefix): New variable, based on the
1836         old configure.ac gcc_tooldir setting.
1837         (prefix_to_exec_prefix): New variable.
1838         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
1839         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
1840
1841 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
1842
1843         * c-typeck.c (build_binary_op): Return early for error.
1844
1845 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
1846
1847         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
1848         struct nb_iter_bound.
1849         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
1850         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
1851         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
1852         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
1853         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
1854         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
1855         (del_scev_info): Use ggc_free.
1856         (scev_initialize): Allocate scalar_evolution_info in gc memory.
1857         * loop-init.c: Include ggc.h.
1858         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
1859         (loop_optimizer_finalize): Use ggc_free.
1860         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
1861         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
1862         pass_iv_optimize): Add TODO_ggc_collect.
1863         * function.h (struct function): Remove skip marker from x_current_loops.
1864         * cfgloop.c: Include ggc.h.
1865         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
1866         memory.
1867         (establish_preds): Vector superloops is gc allocated.
1868         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
1869         loop->exits list.
1870         (flow_loops_find): Vector larray is gc allocated.
1871         (loop_exit_free): Use ggc_free.
1872         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
1873         that head of exits list is now not a part of struct loop.
1874         (record_loop_exits): Allocate exits table in gc memory.
1875         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
1876         head of exits list is now not a part of struct loop.
1877         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
1878         struct loop_exit): Add GTY marker.
1879         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
1880         Add skip marker to aux field.  Make head of exits list a separate
1881         object.
1882         (struct loops): Add GTY marker.  Make larray vector gc allocated.
1883         Add param marker to exits table.
1884         (get_loops): Type changed.
1885         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
1886         dependency.
1887         (cfgloop.o, loop-init.o): Add ggc.h dependency.
1888         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
1889         * basic-block.h (struct basic_block_def): Remove skip marker from
1890         loop_father field.
1891
1892 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
1893
1894         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
1895         of 0 in the call to expand_expr().
1896         (expand_builtin_mathfn_3): Ditto.
1897         (expand_builtin_interclass_mathfn): Ditto.
1898         (expand_builtin_cexpi): Ditto.
1899         (expand_builtin_int_roundingfn): Ditto.
1900         (expand_builtin_int_roundingfn_2): Ditto.
1901         (expand_builtin_pow): Ditto.
1902         (expand_builtin_powi): Ditto.
1903         (expand_builtin_bswap): Ditto.
1904         (expand_builtin_unop): Ditto.
1905         (expand_builtin_fabs): Ditto.
1906         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
1907         the call to expand_expr().
1908         (expand_builtin_sync_operation): Ditto.
1909         (expand_builtin_compare_and_swap): Ditto.
1910         (expand_builtin_lock_test_and_set): Ditto.
1911         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
1912         instead of 0 in the call to expand_expr().
1913         (expand_builtin_extract_return_addr): Ditto.
1914         (expand_builtin_eh_return): Ditto.
1915         (expand_eh_return): Ditto.
1916         * explow.c (expr_size): Ditto.
1917         * expr.c (optimize_bitfield_assignment_op): Ditto.
1918         (expand_assignement): Ditto.
1919         (store_expr): Ditto.
1920         (store_field): Ditto.
1921         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
1922         the call to expand_expr().
1923         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
1924         in the call to expand_expr().
1925         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
1926         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
1927         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
1928         of expand_expr().
1929         * optabs.c (expand_vec_shift_expr): Ditto.
1930         (expand_vec_cond_expr): Ditto.
1931         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
1932         call to expand_expr().
1933         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
1934         in the call to expand_expr().
1935
1936 2007-05-14  Dave Korn  <dave.korn@artimi.com>
1937
1938         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
1939
1940 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
1941
1942         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
1943         instead of c_common_unsigned_type.
1944         (c_common_unsigned_type): Remove.
1945         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
1946         c_common_unsigned_type.
1947         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
1948         c_common_unsigned_type.
1949         * c-common.h (c_common_unsigned_type): Remove.
1950         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
1951         c_common_unsigned_type.
1952         * c-format.c (check_format_types): Use unsigned_type_for instead of
1953         c_common_unsigned_type.
1954         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
1955         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
1956         c_common_unsigned_type.
1957         * convert.c (convert_to_integer): Use unsigned_type_for instead of
1958         lang_hooks.types.unsigned_type.
1959         * expmed.c (make_tree): Use unsigned_type_for instead of
1960         lang_hooks.types.unsigned_type.
1961         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
1962         lang_hooks.types.unsigned_type.
1963         (build_range_check): Likewise.
1964         (fold_unary): Likewise.
1965         (fold_binary): Likewise.
1966         (fold_ternary): Likewise.
1967         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
1968         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
1969         * tree.c (get_unsigned_type): New.
1970         (unsigned_type_for): Use get_unsigned_type instead of
1971         lang_hooks.types.unsigned_type.
1972
1973 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
1974
1975         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
1976         to m68k_get_function_kind.  Update its prototype.
1977         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
1978         interrupt_thread.
1979         (m68k_interrupt_function_p): Return enum m68k_function_type
1980         instead of bool.  Rename to m68k_get_function_kind.
1981         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
1982         target is not fido.
1983         (m68k_compute_frame_layout): Don't mark any register for save
1984         if an interrupt_thread attribute is specified.
1985         (m68k_hard_regno_rename_ok): Update a use of
1986         m68k_interrupt_function_p.
1987         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
1988         m68k_interrupt_function_p.
1989         (m68k_function_type): New.
1990         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
1991         for a function with an interrupt_thread attribute.
1992         * doc/extend.texi: Document the interrupt_thread attribute.
1993
1994 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
1995
1996         Fix PR tree-optimization/31911
1997         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
1998         if they didn't change the expression.
1999
2000 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
2001
2002         * tree-scalar-evolution.c (resolve_mixers): Exported.
2003         * tree-scalar-evolution.h (resolve_mixers): Declare.
2004         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
2005         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
2006         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
2007         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
2008         init_array_ref, init_pointer_ref, analyze_indirect_ref,
2009         strip_conversion, analyze_offset_expr, address_analysis,
2010         object_analysis, analyze_offset): Removed.
2011         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
2012         split_constant_offset, canonicalize_base_object_address,
2013         object_address_invariant_in_loop_p, disjoint_objects_p,
2014         dr_may_alias_p, dr_address_invariant_p): New functions.
2015         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
2016         and dr_analyze_alias.
2017         (initialize_data_dependence_relation): Use dr_may_alias_p
2018         and object_address_invariant_in_loop_p.
2019         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
2020         is chrec_dont_know.
2021         (find_data_references_in_stmt): Restrict the analysis of data references
2022         to the given loop nest.
2023         (find_data_references_in_loop): Made static.  Pass loop nest to
2024         find_data_references_in_stmt.
2025         (compute_data_dependences_for_loop): Use DR_VOPS.
2026         (free_data_ref): Free DR_VOPS.
2027         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
2028         (struct innermost_loop_behavior): ... new.
2029         (struct base_object_info): Replaced by ...
2030         (struct indices): ... new.
2031         (struct dr_alias): New.
2032         (enum data_ref_type): Removed.
2033         (struct data_reference): Consist of struct innermost_loop_behavior,
2034         struct indices and struct dr_alias.
2035         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
2036         (DR_MEMTAG): Renamed to ...
2037         (DR_SYMBOL_TAG): ... this.
2038         (find_data_references_in_loop): Declaration removed.
2039         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
2040         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
2041         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
2042         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
2043
2044 2007-05-13  Revital Eres  <eres@il.ibm.com>
2045
2046         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
2047         which walks virtual def-use chains to find redundant stores.
2048         (dse_optimize_stmt): Call it.
2049
2050 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
2051
2052         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
2053         * passes.c (init_optimization_passes): Move pass_jump_bypass
2054         after loop2.
2055
2056         * basic-block.h (bb_has_eh_pred): Fix style issue.
2057
2058 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
2059
2060         PR rtl-optimization/31848
2061         * loop-invariant.c (move_invariant_reg): If we move an insn
2062         with a REG_EQUAL note, and that insn is not always executed,
2063         remove the REG_EQUAL note.
2064
2065 2007-05-12  Richard Guenther  <rguenther@suse.de>
2066
2067         PR tree-optimization/31797
2068         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
2069         propagate into a stmt that has volatile ops.
2070
2071 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
2072
2073         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2074         (gcc_tooldir): Likewise.
2075         * configure: Regenerate.
2076         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2077         old configure.ac gcc_tooldir setting.
2078         (prefix_to_exec_prefix): New variable.
2079         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2080         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2081
2082 2007-05-11  Silvius Rus  <rus@google.com>
2083
2084         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
2085         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
2086         * c-common.h (strict_aliasing_warning): Change return type.
2087         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
2088         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
2089         (build_c_cast): Condition call to strict_aliasing_warning.
2090         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
2091         * flags.h (set_Wstrict_aliasing): Declare.
2092         * opts.c (set_Wstrict_alising): Define, add call to.
2093         * tree-flow.h (strict_aliasing_warning_backend): Declare.
2094         * tree-ssa-alias-warnings.c: New file.
2095         * tree-ssa-alias.c (compute_may_aliases): Add call to
2096         strict_aliasing_warning_backend.
2097
2098 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
2099
2100         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2101         Use loop_depth and loop_outer accessor functions.
2102         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
2103         determine_invariantness_stmt, move_computations_stmt): Ditto.
2104         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
2105         add_loop, loopify, unloop, fix_loop_structure): Ditto.
2106         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
2107         * tree-scalar-evolution.c (interpret_loop_phi,
2108         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
2109         instantiate_parameters_1, scev_const_prop): Ditto.
2110         * cfghooks.c (make_forwarder_block): Ditto.
2111         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
2112         * modulo-sched.c (loop_canon_p): Ditto.
2113         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
2114         slpeel_can_duplicate_loop_p): Ditto.
2115         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
2116         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2117         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
2118         cancel_loop, verify_loop_structure): Ditto.
2119         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
2120         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
2121         superloops vector instead of "pred" array.
2122         (establish_preds): Take father loop as an argument.  Initialize the
2123         superloops vector.
2124         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
2125         initialize loop->outer.
2126         (flow_loop_tree_node_remove): Truncate the superloops vector.
2127         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
2128         "pred" merged to "superloops" vector.
2129         (loop_depth, loop_outer): New.
2130         (fel_init): Use loop_outer.
2131
2132 2007-05-11  Jan Hubicka  <jh@suse.cz>
2133
2134         * cgraphunit.c: Include gt-cgraphunit.h
2135         (static_ctors, static_dtors): New static vars.
2136         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
2137         based on implementation in c-common.c
2138         (cgraph_finalize_function): Call record_cdtor_fn.
2139         (cgraph_optimize): Call cgraph_build_cdtor_fns.
2140         * decl.c (finish_function): Do not call c_record_cdtor_fn.
2141         (c_write_global_declarations): Do not call c_build_cdtor_fns.
2142         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
2143         build_cdtor, c_build_cdtor_fns): Remove.
2144         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
2145         c_build_cdtor_fns): Remove prototype.
2146
2147 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
2148
2149         PR other/31852
2150         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
2151         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
2152         * builtins.c (fold_builtin_memchr): New.
2153         (expand_builtin_memchr): Call the latter.
2154         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
2155         * doc/extend.texi ([Other built-in functions provided by GCC]):
2156         Document memchr.
2157
2158 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
2159
2160         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
2161         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
2162         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
2163         PFPO_OP1_TYPE_SHIFT): Constants added.
2164         (DFP_ALL): Mode macro defined.
2165         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
2166         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
2167         Insn definitions added.
2168         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
2169         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
2170         Expanders added.
2171
2172 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
2173
2174         PR tree-optimization/31885
2175         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
2176         to be undetermined.
2177         (automatically_generated_chrec_p): Return false for NULL.
2178
2179 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2180
2181         * config/bfin/bfin.h (MOVE_RATIO): Define.
2182
2183 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
2184
2185         * config.gcc (sparc-wrs-vxworks): New target.
2186         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
2187         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
2188         * config/sparc/sparc.h: Include vxworks-dummy.h.
2189         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
2190         include LABEL_REFs too.
2191         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
2192         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
2193         VxWorks.
2194         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
2195         on VxWorks.
2196         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
2197         (sparc_emit_call_insn): New function.
2198         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
2199         functions when generating VxWorks PIC.
2200         * config/sparc/sparc.md (vxworks_load_got): New pattern.
2201         (call, call_value): Use sparc_emit_call_insn instead of
2202         emit_call_insn.
2203
2204 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
2205
2206         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
2207
2208 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
2209
2210         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
2211         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
2212         instead of operand_subword.
2213
2214 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2215
2216         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
2217         * config/bfin/bfin.c (bfin_local_alignment): New function.
2218         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
2219
2220 2007-05-08  Chao-ying Fu  <fu@mips.com>
2221
2222         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
2223         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
2224         (smsub_widen_optab, umsub_widen_optab): Define.
2225         * optabs.c (init_optabs): Initialize smsub_widen_optab and
2226         umsub_widen_optab.
2227         * genopinit.c (optabs): Fill in smsub_widen_optab and
2228         umsub_widen_optab.
2229         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
2230         and umsub_widen_optab to implement multiply-subtract sequences.
2231         * config/mips/mips.md (*msac<u>_di): Rename to...
2232         (<u>msubsidi4): ...this.  Extend condition to include
2233         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
2234         of operand 0 to "ka" and use the three-operand form of msub<u>
2235         for TARGET_DSPR2.
2236         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
2237         to define_expands.
2238
2239 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2240
2241         PR rtl-optimization/28011
2242         * reload.c (push_reload): Set dont_share if IN appears in OUT
2243         also when IN is a PLUS rtx.
2244         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
2245         are same PLUS rtx.
2246
2247 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
2248
2249         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
2250         call unshare_all_decls.
2251         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
2252         (unshare_all_decls): Remove.
2253
2254 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
2255
2256         PR 31847
2257         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
2258         dumps.
2259
2260 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
2261             Nigel Stephens  <nigel@mips.com>
2262
2263         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
2264         Update comments and all uses.
2265         (MIN_FPRS_PER_FMT): Define.
2266         * config/mips/mips.c (function_arg): Fix to correctly handle
2267         the -mips32r2 -mfp64 -mabi=32 case.
2268         (override_options): Enable use of odd-numbered registers for
2269         SFmode values on MIPS32.
2270         (mips_save_reg_p): Save whole floating-point register pair if
2271         either half is used.
2272         (compute_frame_size): Fix comment.
2273
2274 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
2275
2276         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
2277         argument of type bool.
2278         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
2279         argument. Safely select temporary P register according to it.
2280         (do_link): Change call site of add_to_reg accordingly.
2281         (do_unlink): Add epilogue_p as a fourth argument and pass it
2282         to add_to_reg.
2283         (expand_interrupt_handler_epilogue): Change call of do_unlink
2284         accordingly.
2285         (bfin_expand_prologue): Add a third argument sibcall_p.
2286         * config/bfin/bfin.md (epilogue): Change call of
2287         bfin_expand_epilogue accordingly.
2288         (sibcall_epilogue): Likewise.
2289         (eh_return_internal): Likewise.
2290
2291         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
2292         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
2293         * config/bfin/bfin.c (bfin_handle_option): Handle
2294         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
2295         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
2296         Support bf534, bf536 and bf561.
2297         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
2298
2299 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
2300
2301         PR target/31854
2302         * config/i386/i386.c (ix86_function_regparm): Process local
2303         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
2304
2305 2007-05-07  Mike Stump  <mrs@apple.com>
2306
2307         * doc/invoke.texi (Warning Options): Document that -Wempty-body
2308         also checks for and while statements in C++.
2309
2310 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
2311
2312         * gcc.c (at_file_supplied): New variable.
2313         (main): Set it if we expanded argv.
2314         (do_spec_1): Pass an @-file to the linker if we were called with
2315         an @-file argument and HAVE_GNU_LD.
2316         * collect2.c (at_file_supplied): New variable.
2317         (response_file): New variable.
2318         (collect_exit): Unlink response_file if necessary.
2319         (handler): Likewise.
2320         (do_wait): Likewise.
2321         (main): Set at_file_supplied if we expanded argv.
2322         (collect_execute): Pass an @-file to subprocesses if we were called
2323         with an @-file argument.
2324         * configure.ac: Add define for HAVE_GNU_LD.
2325         * configure: Regenerate.
2326         * config.in: Regenerate.
2327
2328 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
2329
2330         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
2331         operand to HI mode.
2332         (mulsi3): New.
2333         (divsi3): New.
2334         (udivsi3): New.
2335
2336 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
2337
2338         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
2339         (TARGET_ENCODE_SECTION_INFO): Re-define.
2340         (m32c_encode_section_info): New
2341         (function_vector_handler): New
2342         (current_function_special_page_vector): New
2343         (m32c_special_page_vector_p): New.
2344         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
2345         Prototype.
2346         * config/m32c/jump.md: Added instruction JSRS for functions
2347         with attribute "function_vector".
2348         * doc/extend.texi (function_vector): Added description
2349         for M16C, M32C targets.
2350
2351 2007-05-07  DJ Delorie  <dj@redhat.com>
2352
2353         PR 31794
2354         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
2355         ashrpsi3, lshrpsi3): Update shift count constraint.
2356
2357 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
2358             Nathan Froyd  <froydnj@codesourcery.com>
2359
2360         PR 22133
2361         * c-incpath.c (add_path): Strip trailing path separators.
2362
2363 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2364
2365         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
2366         Free dominance info before purging EH edges.
2367         (eliminate_degenerate_phis): Likewise.
2368         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
2369
2370 2007-05-07  Jan Hubicka  <jh@suse.cz>
2371
2372         * gimplify.c (gimplify_expr): Do not crash when folding
2373         (void *)(int)&a + 4.
2374
2375 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2376
2377         PR driver/31694
2378         * c-opts.c (lang_fortran): Make it non static.
2379         * c-common.h (lang_fortran): New prototype.
2380         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
2381         -lang-fortran option was passed by the driver.
2382
2383 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
2384
2385         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
2386         of ASSERT_CHECKING.  Tweak message.
2387
2388 2007-05-06  Revital Eres  <eres@il.ibm.com>
2389
2390         PR 30957
2391         * loop-unroll.c (insert_var_expansion_initialization):
2392         Initialize the expansions with -zero instead of +zero.
2393
2394 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
2395
2396         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
2397         into pic and non-pic versions. Mark r19 as used for
2398         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
2399         for tgd_load, tld_load and tie_load .
2400         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
2401         version of tgd_load, tld_load and tie_load depending on the
2402         value of flag_pic.
2403
2404 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
2405             Jakub Jelinek  <jakub@redhat.com>
2406
2407         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
2408         (__do_global_dtors_aux): Use more paranoid loop to run
2409         destructors if HIDDEN_DTOR_LIST_END.
2410         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
2411
2412 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
2413
2414         * varasm.c (align_variable): Don't increase alignment for
2415         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
2416         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
2417
2418 2007-05-04  Josh Conner  <jconner@apple.com>
2419
2420         * basic-block.h (cdi_direction): Assign values to all enumeration
2421         constants.
2422         (dom_computed): Remove.
2423         (dom_info_state): New.
2424         (set_dom_info_availability): New.
2425         * tree-ssa-loop-im.c (determine_invariantness): Initialize
2426         walk_data.dom_direction.
2427         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
2428         instead of dom_computed[].
2429         (split_edge): Likewise.
2430         (create_basic_block): Likewise.
2431         (merge_blocks): Likewise.
2432         * ifcvt.c (find_if_header): Likewise.
2433         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
2434         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
2435         * tree-ssa.c (verify_ssa): Likewise.
2436         * tree-cfg.c (tree_verify_flow_info): Likewise.
2437         (remove_edge_and_dominated_blocks): Likewise.
2438         * dominance.c (dom_computed): Make static.
2439         (calc_dfs_tree_nonrec): Change third param to a bool.
2440         (calc_dfs_tree): Change second param to a bool.
2441         (calc_idioms): Change second param to a bool.  Use
2442         dom_convert_dir_to_idx.
2443         (init_dom_info): Validate dir before using.
2444         (dom_convert_dir_to_idx): New.
2445         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
2446         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
2447         (free_dominance_info): Use dom_convert_dir_to_idx.
2448         (get_immediate_dominator): Likewise.
2449         (set_immediate_dominator): Likewise.
2450         (get_dominated_by): Likewise.
2451         (redirect_immediate_dominators): Likewise.
2452         (nearest_common_denominator): Likewise.
2453         (dominated_by_p): Likewise.
2454         (bb_dom_dfs_in): Likewise.
2455         (bb_dom_dfs_out): Likewise.
2456         (recount_dominator): Likewise.
2457         (iterate_fix_dominators): Likewise.
2458         (add_to_dominance_info): Likewise.
2459         (delete_from_dominance_info): Likewise.
2460         (first_dom_son): Likewise.
2461         (next_dom_son): Likewise.
2462         (dom_info_available_p): Likewise.
2463         (dom_info_state): New.
2464         (set_dom_info_availability): New.
2465
2466 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2467
2468         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
2469         Expander removed.
2470         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
2471
2472 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
2473
2474         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
2475         (subdi3, subdi_carry): Delete.
2476
2477 2007-05-04  Jan Hubicka  <jh@suse.cz>
2478             Richard Guenther  <rguenther@suse.de>
2479
2480         * opts.c (decode_options): Do not fiddle with inlining
2481         parameters in case of optimizing for size.
2482         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
2483         for size do nothing.
2484         (cgraph_decide_inlining_of_small_function): When optimizing for
2485         size never inline functions increasing caller size.
2486         (cgraph_early_inlining): Inline for size when optimizing for size.
2487
2488 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
2489
2490         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
2491         logical operations piecewise.
2492         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
2493         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
2494         subdi_sesidi_di): Delete.
2495         (add_with_carry): Produce carry in CC instead of a DREG to shorten
2496         the generated sequence.  Allow three-reg add in constraints.  Rewrite
2497         the rtl expression for carry to avoid zero_extend of a constant.
2498         (sub_with_carry): New pattern.
2499         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
2500         different sequence not involving jumps.
2501         (notbi): Now a named pattern.
2502
2503 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
2504
2505         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
2506         Add the note about a significant loss of accuracy of some
2507         mathematical routines when these options are used.
2508
2509 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2510
2511         * haifa-sched.c (rtx_vec_t): New typedef.
2512         (contributes_to_priority_p): Extract piece of priority () into new
2513         static function.
2514         (priority): Use the function.  Add assertion.
2515         (rank_for_schedule, set_priorities): Add assertion to check that
2516         insn's priority is initialized.
2517         (clear_priorities, calc_priorities): Change signature.  Make it update
2518         all relevant insns.  Update all callers ('add_to_speculative_block ()'
2519         and 'create_block_check_twin ()').
2520         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
2521         Add new field 'priority_status'.
2522         (INSN_PRIORITY_STATUS): New macro.
2523         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
2524
2525 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2526
2527         * sched-ebb.c (debug_ebb_dependencies): New static function.
2528         (init_ready_list): Use it.
2529
2530         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
2531         with changed signature and 'debug_rgn_dependencies ()'.
2532         (debug_rgn_dependencies): New static function.
2533         (init_ready_list): Use it.
2534
2535         * sched-int.h (debug_dependencies): Declare.
2536
2537 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2538
2539         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
2540
2541 2007-05-04  Dirk Mueller  <dmueller@suse.de>
2542
2543         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
2544
2545 2007-05-03  Jan Hubicka  <jh@suse.cz>
2546
2547         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
2548         for pointer type in more cases than before.
2549
2550         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
2551
2552         * tree-object-size.c (plus_expr_object_size): When operand size is
2553         unknown, return unknown.
2554
2555 2007-05-03  Dirk Mueller  <dmueller@suse.de>
2556
2557         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
2558
2559         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
2560         options.
2561
2562         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
2563
2564 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
2565
2566         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
2567
2568 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
2569
2570         * config/soft-fp/double.h, config/soft-fp/extended.h,
2571         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
2572         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
2573         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
2574         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
2575         glibc CVS.
2576
2577 2007-05-03  Ian Lance Taylor  <iant@google.com>
2578
2579         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
2580         MASK_PPC_GFXOPT for 8540 or 8548.
2581
2582 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
2583
2584         * tree-vect-transform.c (vect_update_inits_of_drs): Use
2585         vect_print_dump_info() to output debug information.
2586
2587 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
2588
2589         PR target/31768
2590         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
2591         operands of size 2 when operand is not MEM_P.
2592
2593 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
2594
2595         PR tree-optimization/30565
2596         * lambda-code.c (perfect_nestify): Fix updating of dominators.
2597
2598 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
2599
2600         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
2601         (umulsi3_highpart): Use them.
2602         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
2603         for final accumulator to D regisster tranfser.
2604
2605 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
2606
2607         PR tree-optimization/31699
2608         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
2609         code.
2610         (vect_enhance_data_refs_alignment): Compute peel amount using
2611         TYPE_VECTOR_SUBPARTS instead of vf.
2612         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
2613
2614 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
2615
2616         PR bootstrap/31776
2617         * system.h: Remove inclusion of double-int.h
2618         * tree.h: Include double-int.h
2619         * gengtype.c: Likewise
2620         * cfgloop.h: Likewise
2621         * Makefile.in: Adjust dependencies on double-int.h
2622
2623 2007-05-02  Eric Christopher  <echristo@apple.com>
2624
2625         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
2626         -shared to -Zdynamiclib.
2627
2628 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
2629
2630         PR c++/31663
2631         * c-common.c (strip_pointer_or_array_types): New function.
2632         * c-common.h (strip_pointer_or_array_types): New function declaration.
2633
2634 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
2635
2636         PR tree-optimization/31771
2637         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
2638
2639 2007-05-02  Paul Brook  <paul@codesourcery.com>
2640
2641         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
2642
2643 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2644
2645         PR middle-end/29715
2646         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
2647         transformation.
2648
2649 2007-05-02  Nick Clifton  <nickc@redhat.com>
2650
2651         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
2652
2653 2007-05-02  Richard Guenther  <rguenther@suse.de>
2654
2655         PR tree-optimization/31146
2656         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
2657         argument, single_use_p.  If we have a single use that is
2658         a conversion to the definition rhs type, propagate that rhs.
2659         (forward_propagate_addr_expr): Pass single_use_p argument
2660         to forward_propagate_addr_expr_1.
2661
2662 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
2663
2664         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
2665         variable.
2666
2667 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2668
2669         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
2670         'AMD Family 10 core'.
2671
2672 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2673
2674         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
2675         and athlon64-sse3 as improved versions of k8, opteron and athlon64
2676         with SSE3 instruction set support.
2677         * doc/invoke.texi: Likewise.
2678
2679 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
2680
2681         * config/i386/i386.c (override_options): Tuning 32-byte loop
2682         alignment for amdfam10 architecture. Increasing the max loop
2683         alignment to 24 bytes.
2684
2685 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
2686
2687         * config/m68k/constraints.md: New.
2688         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
2689         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
2690         EXTRA_CONSTRAINT): Remove.
2691         * config/m68k/m68k.md: Include constraints.md.
2692         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
2693
2694 2007-05-01  Ian Lance Taylor  <iant@google.com>
2695
2696         PR tree-optimization/31739
2697         * tree-vrp.c (vrp_val_is_max): New static function.
2698         (vrp_val_is_min): New static function.
2699         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
2700         copying the node.
2701         (set_value_range): Use vrp_val_is_{max,min}.
2702         (extract_range_from_assert): Likewise.
2703         (extract_range_from_binary_expr): Likewise.
2704         (extract_range_from_unary_expr): Likewise.
2705         (dump_value_range, vrp_meet): Likewise.
2706         (vrp_visit_phi_node): Likewise.
2707         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
2708
2709 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
2710
2711         * config/i386/gmon-sol2.c (size_t): New type.
2712         (intptr_t): Likewise.
2713         (s_textsize): Declare as size_t.
2714         (sbrk): Declare.
2715         (monstartup): Use size_t for sizes.
2716         (_mcount): Save and restore registers.
2717         (internal_mcount): Pass 0 as the first argument to monstartup
2718         in 64-bit mode.
2719         (moncontrol): Convert pointer to appropriately sized integer
2720         before passing to profil.
2721
2722 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
2723
2724         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
2725         __NO_FPRS__, not just if _SOFT_DOUBLE.
2726         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
2727         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
2728         also for E500 double.
2729         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
2730         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
2731         && !TARGET_FPRS).
2732
2733 2007-05-01  Richard Guenther  <rguenther@suse.de>
2734
2735         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
2736         is NULL.
2737
2738 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
2739
2740         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
2741
2742 2007-05-01  Jan Hubicka  <jh@suse.cz>
2743
2744         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
2745         invariant.
2746
2747 2007-05-01  Jan Hubicka  <jh@suse.cz>
2748
2749         * tree.h (maybe_fold_offset_to_component_ref): Remove.
2750         (maybe_fold_offset_to_reference): Declare.
2751         * fold-const.c (fold_unary): Do not fold
2752         (type *)&A into &A->field_of_type_and_offset_0
2753         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
2754         size is unknown, give up.
2755         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
2756         offsets.
2757         (maybe_fold_offset_to_reference): New.
2758         (maybe_fold_stmt_indirect): Use it.
2759         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
2760         * gimplify.c (gimplify_conversion): Canonicalize conversions to
2761         field references.
2762         (gimplify_expr): Likewise for plus_expr.
2763
2764 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
2765
2766         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
2767         bsi_after_labels.  Always insert statements before bsi.
2768         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
2769         * predict.c (apply_return_prediction): Check for empty blocks.
2770         * cfgexpand.c (lab_rtx_for_bb): New variable.
2771         (label_rtx_for_bb): Do not create new tree labels.
2772         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
2773         (tree_expand_cfg): Initialize lab_rtx_for_bb.
2774         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
2775         creating edges.
2776         (label_for_bb): Add field used.
2777         (update_eh_label, main_block_label): Mark the label used.
2778         (cleanup_dead_labels): Remove unused labels.
2779
2780 2007-05-01  Richard Guenther  <rguenther@suse.de>
2781
2782         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
2783         if it is not about to be set.
2784         (get_value_range): Do not pre-allocate equiv bitmap.
2785         (update_value_range): No need to clear equiv field.
2786         (add_equivalence): Change prototype to get bitmap pointer.
2787         Allocate bitmap here if it is not already.
2788         (extract_range_from_assert): Do not allocate bitmap here.
2789         Update callers to add_equivalence.
2790         (extract_range_from_ssa_name): Likewise.
2791         (get_vr_for_comparison): New static helper.
2792         (compare_name_with_value): Handle NULL equiv bitmap by
2793         peeling the first iteration of the comparison loop.
2794         Use get_vr_for_comparison.
2795         (compare_names): Handle NULL equiv bitmaps by using fake
2796         ones.  Use get_vr_for_comparison.
2797
2798 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
2799
2800         * double-int.c (mpz_set_double_int): Moved from
2801         tree-ssa-loop-niter.c.
2802         (mpz_get_double_int): Likewise; also, add option to wrap
2803         out-of-range integers.
2804         * double-int.h: New prototypes for above.
2805         * tree.c (get_static_type_bounds): Moved from
2806         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
2807         TYPE_MAX_VALUE if they exist..
2808         * tree.h: New prototype for above.
2809         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
2810         get_type_bounds calls.
2811         (mpz_set_double_int): Move to double-int.c.
2812         (get_type_bounds): Move to tree.c, rename to
2813         get_static_type_bounds.
2814         (mpz_to_double_int): Move to double-int.c, rename to
2815         mpz_get_double_int.
2816
2817 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
2818
2819         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
2820         DIV0 exception can fall through to a normal return.
2821
2822 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
2823
2824         PR middle-end/22156
2825         Temporarily revert:
2826         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
2827         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
2828         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2829         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2830         initialize align to silence bogus warning.
2831         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2832         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
2833         all_no_warning.
2834         (struct sra_walk_fns): Remove use_all parameter from use.
2835         (sra_hash_tree): Handle BIT_FIELD_REFs.
2836         (sra_elt_hash): Don't hash bitfld blocks.
2837         (sra_elt_eq): Skip them in parent compares as well.  Handle
2838         BIT_FIELD_REFs.
2839         (sra_walk_expr): Don't maintain or pass down use_all_p.
2840         (scan_use): Remove use_all parameter.
2841         (scalarize_use): Likewise.  Re-expand assignment to
2842         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
2843         output, and re-scalarize after output.  Don't mark anything
2844         for no warning.
2845         (scalarize_ldst): Adjust.
2846         (scalarize_walk_gimple_modify_statement): Likewise.
2847         (build_element_name_1): Handle BIT_FIELD_REFs.
2848         (instantiate_element): Don't warn for any element whose parent
2849         is used as a whole.
2850         (instantiate_missing_elements_1): Return the sra_elt.
2851         (canon_type_for_field): New.
2852         (try_instantiate_multiple_fields): New.
2853         (instantiate_missing_elemnts): Use them.
2854         (mark_no_warning): Removed.
2855         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2856         (REPLDUP, sra_build_elt_assignment): New.
2857         (generate_copy_inout): Use them.
2858         (generate_element_copy): Likewise.  Handle bitfld differences.
2859         (generate_element_zero): Don't recurse for blocks.  Use
2860         sra_build_elt_assignment.
2861         (generate_one_element_int): Take elt instead of var.  Use
2862         sra_build_elt_assignment.
2863         (generate_element_init_1): Adjust.
2864         (scalarize_use, scalarize_copy): Use REPLDUP.
2865         (scalarize_ldst): Move assert before dereference.
2866         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2867
2868 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2869
2870         PR C++/31721
2871         * tree.c (reconstruct_complex_type): Reconstruct a reference
2872         correctly.
2873         Also use the same mode for the pointer as the old pointer type.
2874
2875 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2876
2877         * doc/trouble.texi (Interoperation): Remove note about Ultrix
2878         Fortran compiler.
2879
2880 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
2881
2882         PR rtl-optimization/31676
2883         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
2884         (df_refs_record): Call it.
2885
2886 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
2887
2888         * rtl.def (SS_ABS): New code.
2889         * config/bfin/bfin.c (print_operand): New modifier 'v'.
2890         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
2891         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
2892         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
2893         (bfin_init_builtins): Define them.
2894         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
2895         (bfin_expand_builtin): ... and handle the others here.
2896         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
2897         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
2898         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
2899         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
2900         operand is only HImode.
2901
2902 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
2903
2904         * regclass.c (scan_one_insn): Remove splitting of
2905         two address insns.
2906
2907 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
2908             Nigel Stephens  <nigel@mips.com>
2909
2910         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
2911
2912 2007-04-28  Jan Hubicka  <jh@suse.cz>
2913
2914         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
2915         insn_locators_alloc instead of insn_locators_initialize;
2916         call reset_block_changes.
2917         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
2918         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
2919         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
2920         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
2921         * config/score/score.c (th_output_mi_thunk): Likewise.
2922         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
2923         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
2924         tolerate uninitialized locator info.
2925
2926         Re-apply:
2927         * function.c (init_function_start): Don't init line number info.
2928         (expand_function_end): Update.
2929         (reset_block_changes, record_block_change, finalize_block_changes,
2930         check_block_change, free_block_changes): Kill.
2931         * function.h (reset_block_changes, record_block_change,
2932         finalize_block_changes, check_block_change, free_block_changes): Remove
2933         prototypes.
2934         (struct function): Remove ib_boundaries_block.
2935         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
2936         Use curr_insn_locator to initialize locator.
2937         (emit_line_note): Remove.
2938         * cfgexpand.c (expand_gimple_cond_expr): Update.
2939         (construct_exit_block): Likewise.
2940         (tree_expand_cfg): Initialize/finalize locators.
2941         * expr.c (expand_expr_real): Update.
2942         * cfglayout.c (line_locators_locs, line_locators_lines,
2943         file_locators_locs, file_locators_files): Remove.
2944         (set_block_levels): Move to cfgexpand.c.
2945         (insn_locators_initialize): Remove.
2946         (pass_insn_locators_initialize): Remove.
2947         (locations_locators_locs, locations_locators_vals): New static vars.
2948         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
2949         Likewise.
2950         (insn_locators_alloc, insn_locators_finalize,
2951         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2952         New functions.
2953         (locator_location): New.
2954         (locator_line, locator_file): Rewrite.
2955         * rtl.h (emit_line_note): Kill.
2956         (insn_locators_alloc, insn_locators_finalize,
2957         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
2958         Declare.
2959         * tree-inline.c (initialize_cfun): Do not initialize
2960         ib_boundaries_block.
2961         * passes.c (pass_insn_locators_initialize): Remove.
2962
2963 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
2964
2965         * tree-cfg.c (move_block_to_fn): Release bb from dominance
2966         info.  Update last_basic_block correctly.
2967
2968 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
2969
2970         PR target/31701
2971         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
2972         register itself to hold the offset constant.  Tell flow the use
2973         of r4 and r5 when they are used.
2974
2975 2007-04-27  Richard Guenther  <rguenther@suse.de>
2976
2977         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
2978         if we simplified anything.
2979         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
2980         warnings until we did a simplification and the stmt was not
2981         marked as TREE_NO_WARNING.
2982
2983 2007-04-27  Mike Stump  <mrs@apple.com>
2984
2985         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
2986
2987 2007-04-27  Ian Lance Taylor  <iant@google.com>
2988
2989         PR middle-end/31710
2990         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
2991         TYPE_MAX_VALUE exist, convert them to the new type.
2992
2993 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
2994
2995         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
2996         if it claims to be available.
2997         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
2998         edge is redirected.
2999         (perform_tree_ssa_dce): Always free postdominators.
3000
3001 2007-04-27  Richard Henderson  <rth@redhat.com>
3002
3003         * config/alpha/predicates.md (aligned_memory_operand): Mark
3004         as define_special_predicate.
3005         (unaligned_memory_operand, normal_memory_operand): Likewise.
3006         (reg_or_unaligned_mem_operand): Remove.
3007         (any_memory_operand): Match the documentation and check for
3008         non-renumbered pseudos during reload.
3009         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
3010         alpha_secondary_reload_class, update to new interface, make static.
3011         Handle CQImode like HImode.  Remove FP subreg check.
3012         (alpha_expand_mov): Use replace_equiv_address.
3013         (alpha_expand_mov_nobwx): Use any_memory_operand.
3014         (TARGET_SECONDARY_RELOAD): New.
3015         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
3016         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
3017         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
3018         * config/alpha/alpha.md: ... here.
3019         (RELOAD12, reloadmode): New.
3020         (movcqi): New.
3021         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
3022         Don't handle the aligned case here.
3023         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
3024         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
3025         reload_inhi_help.  Don't expect a scratch register.
3026         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
3027         reload_outhi_help.
3028         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
3029
3030 2007-04-27  Richard Guenther  <rguenther@suse.de>
3031
3032         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
3033
3034 2007-04-27  Richard Guenther  <rguenther@suse.de>
3035
3036         PR tree-optimization/30965
3037         PR tree-optimization/30978
3038         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
3039         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
3040         (find_equivalent_equality_comparison): Likewise.
3041         (simplify_cond): Likewise.
3042         (get_prop_source_stmt): New helper.
3043         (get_prop_dest_stmt): Likewise.
3044         (can_propagate_from): Likewise.
3045         (remove_prop_source_from_use): Likewise.
3046         (combine_cond_expr_cond): Likewise.
3047         (forward_propagate_comparison): New function.
3048         (forward_propagate_into_cond): Rewrite to use fold for
3049         tree combining.
3050         (tree_ssa_forward_propagate_single_use_vars): Call
3051         forward_propagate_comparison to propagate comparisons.
3052
3053 2007-04-27  Richard Guenther  <rguenther@suse.de>
3054
3055         PR tree-optimization/31715
3056         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
3057         sure to do computation on the offset in an appropriate
3058         signed type.
3059
3060 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
3061
3062         * reload.h (elimination_target_reg_p): Declare.
3063         * reload.c (find_reloads): Don't apply the reg_rtx move
3064         optimization if the SET_DEST satisfies elimination_target_reg_p.
3065         * reload1.c (elimination_target_reg_p): New function.
3066         (gen_reload): In the move/add2 fallback, make sure that op0
3067         does not overlap the destination register.
3068
3069 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3070
3071         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
3072         transform only GIMPLE_MODIFY_STMTs.
3073         * tree-complex.c (expand_complex_operations_1): Ditto.
3074         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
3075         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
3076         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
3077         branches.
3078         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
3079         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
3080         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
3081         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
3082         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
3083         slpeel_add_loop_guard): Ditto.
3084         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
3085         * lambda-code.c (perfect_nestify): Ditto.
3086         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
3087         before the first statement.
3088         * tree-optimize.c (execute_free_datastructures): Fix comments.
3089         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
3090         * tree-flow.h (disband_implicit_edges): Declaration removed.
3091         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
3092         branches.
3093         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
3094         without gotos.
3095         (disband_implicit_edges, has_label_p): Removed.
3096         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
3097         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
3098         branches.
3099         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
3100         side effects.
3101         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
3102         also for COND_EXPRs.
3103         * cfgexpand.c (label_rtx_for_bb): New function.
3104         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
3105         Use label_rtx_for_bb to find the labels.
3106         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
3107         last block.  Detect fallthru edges.
3108
3109 2007-04-26  Ian Lance Taylor  <iant@google.com>
3110
3111         PR target/28675
3112         * reload.c (find_reloads_subreg_address): If the address was valid
3113         in the original mode but not in the new mode, reload the whole
3114         address.
3115
3116 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3117
3118         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
3119         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
3120         (cleanup_control_expr_graph): Do not invalidate dominance info.
3121         Record altered blocks.
3122         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
3123         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
3124         cleanup_tree_cfg_bb): New functions.
3125         (remove_forwarder_block): Do not maintain the worklist of blocks.
3126         Record altered blocks.
3127         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
3128         not over whole cfg.
3129         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
3130         delete_unreachable_blocks if dominators are not available.
3131         * tree-inline.c (optimize_inline_calls): Free dominance information
3132         earlier.
3133         * tree-flow.h (remove_edge_and_dominated_blocks,
3134         cfgcleanup_altered_bbs): Altered.
3135         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
3136         blocks.
3137         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
3138         functions.
3139         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
3140         do not invalidate dominators.
3141
3142 2007-04-26  Anatoly Sokolov <aesok@post.ru>
3143
3144         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
3145         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
3146         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3147         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3148
3149 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
3150
3151         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
3152
3153 2007-04-26  Richard Guenther  <rguenther@suse.de>
3154
3155         PR tree-optimization/31703
3156         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
3157         the right type for the target of the bittest.
3158
3159 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3160
3161         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
3162         ix86_sol10_return_in_memory.
3163
3164 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3165
3166         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
3167         variables.
3168
3169 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
3170
3171         PR c++/31598
3172         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
3173
3174         PR tree-optimization/30558
3175         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
3176         clear this_state.prev_try.
3177
3178 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3179             Mark Mitchell  <mark@codesourcery.com>
3180
3181         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
3182         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
3183         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
3184
3185 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3186
3187         PR driver/31107
3188         * doc/invoke.texi (%:print-asm-header): Document.
3189         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
3190         and -ftarget-help.
3191         (static_spec_functions): Add print-asm-header.
3192         (main): Print a banner before the --target-help linker options.
3193         (print_asm_header_spec_function): New function.
3194
3195 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3196
3197         PR target/31403
3198         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
3199         (movsf_ie): Likewise.
3200
3201 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
3202
3203         * doc/extend.texi ([Type Traits]): Adjust per N2255.
3204
3205 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
3206
3207         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
3208         for divide-by-zero.
3209         (__umodsi3, __modsi3): Likewise.
3210
3211 2007-04-25  Dirk Mueller  <dmueller@suse.de>
3212
3213         * c-typeck.c (build_compound_expr): Annotate warning()
3214         call with OPT_Wunused_value.
3215         * tree-ssa.c (warn_uninit): Annotate warning with
3216         OPT_Wunintialized.
3217         * c-common.c (handle_sentinel_attribute): Annotate warning
3218         call with OPT_Wattributes.
3219
3220 2007-04-25  Thiemo Seufer  <ths@mips.com>
3221
3222         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
3223         (mips16): Fix typo.
3224         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
3225         on to the assembler.  Improve handling of -mno-mips16.  Add handling
3226         of -mno-mips3d, -mno-dsp, -mno-dspr2.
3227         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
3228         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
3229         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
3230
3231 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
3232
3233         PR target/31680
3234         * config/i386/winnt.c (i386_pe_file_end): Strip only
3235         USER_LABEL_PREFIX when writing export name.
3236
3237 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
3238
3239         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
3240         sh/elf.h, vx-common.h and vxworks.h.
3241         * config/sh/sh.h: Include config/vxworks-dummy.h.
3242         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3243         (OVERRIDE_OPTIONS): Use it.
3244         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
3245         (vxworks_picreg): New pattern.
3246         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
3247         VXWORKS_OS_CPP_BUILTINS.
3248         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
3249         to their VXWORKS_* equivalents.
3250         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
3251         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
3252         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
3253         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
3254         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
3255         -mrtp/-fPIC multilibs.
3256         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
3257         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
3258         (MULTILIB_OSDIRNAMES): Delete.
3259
3260 2007-04-25  Anatoly Sokolov <aesok@post.ru>
3261
3262         PR target/18989
3263         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
3264
3265 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
3266
3267         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
3268         rounding mode to be specified by the caller.
3269         (real_to_mpfr) Likewise.
3270         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
3271         include new arguments.
3272         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
3273
3274 2007-04-24  Ian Lance Taylor  <iant@google.com>
3275
3276         PR tree-optimization/31605
3277         * tree-vrp.c (set_value_range): Check that min and max are not
3278         both overflow infinities.
3279         (set_value_range_to_value): New static function.
3280         (extract_range_from_binary_expr): Call set_value_range_to_value.
3281         (extract_range_from_cond_expr): Likewise.
3282         (extract_range_from_expr): Likewise.
3283         (extract_range_from_unary_expr): Likewise.  Don't create a range
3284         which overflows on both sides.
3285         (vrp_meet): Check for a useless range.
3286         (vrp_visit_phi_node): If we see a constant which looks like an
3287         overflow infinity, turn off the TREE_OVERFLOW flag.
3288
3289 2007-04-24  Ian Lance Taylor  <iant@google.com>
3290
3291         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
3292
3293 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
3294
3295         PR diagnostic/25923
3296         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
3297         diagnostic message is being built.
3298         * tree-pretty-print.c (dump_generic_node): Only write the
3299         formatted text into BUFFER's stream if we are not building a
3300         diagnostic message.
3301         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
3302         dump_generic_node.
3303         * Makefile.in (toplev.o): Depend on tree-pass.h.
3304
3305 2007-04-24  Ian Lance Taylor  <iant@google.com>
3306
3307         PR tree-optimization/31602
3308         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
3309         conditionals in the copied loop header.
3310         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
3311         warnings if TREE_NO_WARNING is set.
3312         * doc/invoke.texi (Warning Options): Clarify that
3313         -Wstrict-overflow does not warn about loops.
3314
3315 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
3316
3317         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
3318         expand on the comment about _Decimal128 arguments and check the
3319         integer result of the modulus operation; for 64-bit ELF ABI, ensure
3320         that _Decimal128 argument uses even/odd register pair.
3321         (function_arg): Ditto.
3322
3323 2007-04-24  Hui-May Chang <hm.chang@apple.com>
3324
3325         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
3326         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
3327
3328 2007-04-24  Richard Guenther  <rguenther@suse.de>
3329             Olga Golovanevsky  <olga@il.ibm.com>
3330
3331         * fold-const.c (multiple_of_p): Check for bottom
3332         to be zero.
3333
3334 2007-04-24  Richard Henderson  <rth@redhat.com>
3335
3336         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
3337         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
3338         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
3339         looking for non-zero bits shifted out.  Avoid a recursive call
3340         when constructing the scalar.
3341         (__floatundisf): Likewise.
3342
3343 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
3344
3345         * dwarf2out.c (field_byte_offset): Move the existing logic
3346         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
3347         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
3348
3349 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3350
3351         PR target/31641
3352         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
3353         argument of 0 for memset.
3354         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
3355         unsigned shift instead of the signed variant.
3356
3357 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3358
3359         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
3360         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
3361         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
3362         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
3363         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
3364         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
3365         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
3366         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
3367         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
3368         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
3369         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
3370         "mul<mode>3", "div<mode>3"): Insn definitions added.
3371         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
3372         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
3373         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
3374         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
3375         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
3376         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
3377         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
3378         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
3379         TARGET_FLOAT_FORMAT): Macro definitions removed.
3380         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
3381         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
3382         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
3383         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
3384         (s390_gen_rtx_const_DI): Function removed.
3385         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
3386
3387 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
3388
3389         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
3390         over an external ffs function.
3391
3392 2007-04-24  Chao-ying Fu  <fu@mips.com>
3393             Richard Sandiford  <richard@nildram.co.uk>
3394
3395         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
3396         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
3397         (smadd_widen_optab, umadd_widen_optab): Define.
3398         * optabs.c (init_optabs): Initialize smadd_widen_optab and
3399         umadd_widen_optab.
3400         * genopinit.c (optabs): Fill in smadd_widen_optab and
3401         umadd_widen_optab.
3402         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
3403         and umadd_widen_optab to implement multiply-add sequences.
3404         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
3405         (<u>maddsidi4): ...this.  Extend condition to include
3406         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
3407         of operand 0 to "ka" and use the three-operand form of madd<u>
3408         for TARGET_DSPR2.
3409         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
3410         to define_expands.
3411         * config/mips/constraints.md (ka): New register constraint.
3412
3413 2007-04-24  Jan Hubicka  <j@suse.cz>
3414
3415         Revert:
3416
3417         2007-04-23  Jan Hubicka  <jh@suse.cz>
3418         * function.c (init_function_start): Don't init line number info.
3419         (expand_function_end): Update.
3420         (reset_block_changes, record_block_change, finalize_block_changes,
3421         check_block_change, free_block_changes): Kill.
3422         * function.h (reset_block_changes, record_block_change,
3423         finalize_block_changes, check_block_change, free_block_changes): Remove
3424         prototypes.
3425         (struct function): Remove ib_boundaries_block.
3426         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
3427         Use curr_insn_locator to initialize locator.
3428         (emit_line_note): Remove.
3429         * cfgexpand.c (expand_gimple_cond_expr): Update.
3430         (construct_exit_block): Likewise.
3431         (tree_expand_cfg): Initialize/finalize locators.
3432         * expr.c (expand_expr_real): Update.
3433         * cfglayout.c (line_locators_locs, line_locators_lines,
3434         file_locators_locs, file_locators_files): Remove.
3435         (set_block_levels): Move to cfgexpand.c.
3436         (insn_locators_initialize): Remove.
3437         (pass_insn_locators_initialize): Remove.
3438         (locations_locators_locs, locations_locators_vals): New static vars.
3439         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
3440         Likewise.
3441         (insn_locators_alloc, insn_locators_finalize,
3442         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3443         New functions.
3444         (locator_location): New.
3445         (locator_line, locator_file): Rewrite.
3446         * rtl.h (emit_line_note): Kill.
3447         (insn_locators_alloc, insn_locators_finalize,
3448         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3449         Declare.
3450         * tree-inline.c (initialize_cfun): Do not initialize
3451         ib_boundaries_block.
3452         * passes.c (pass_insn_locators_initialize): Remove.
3453
3454 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
3455
3456         * doc/invoke.texi: Removed leading '-' from option index entries.
3457
3458 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
3459
3460         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
3461         Use phi_nodes_ptr.
3462         (create_phi_node): Use set_phi_nodes.
3463         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
3464         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
3465         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
3466         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
3467         (bsi_start, bsi_last): Use bb_stmt_list.
3468         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
3469         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
3470         Traverse the statements using tsi iterator.
3471         * basic-block.h (struct basic_block_def): Fields stmt_list
3472         and phi_nodes moved to ...
3473         (struct tree_bb_info): ... new structure.
3474         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
3475         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
3476         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
3477         (tree_verify_flow_info): Verify that il.tree is not set for
3478         entry and exit block.
3479         (tree_split_block): Use set_bb_stmt_list.
3480
3481 2007-04-23  Mike Stump  <mrs@apple.com>
3482
3483         * config/i386/i386.c (ix86_tune_features
3484         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
3485         nocona and core2.
3486
3487 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
3488
3489         * config/i386/i386.md (prefix_extra): New attribute.
3490         (length): Add prefix_extra.
3491
3492         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
3493         (sse2_movntv2di): Likewise.
3494         (sse2_cvtps2dq): Likewise.
3495         (sse2_cvtpd2pi): Likewise.
3496         (sse2_cvttpd2pi): Likewise.
3497         (*sse2_cvtpd2ps): Likewise.
3498         (*add<mode>3): Likewise.
3499         (sse2_ssadd<mode>3): Likewise.
3500         (sse2_usadd<mode>3): Likewise.
3501         (*sub<mode>3): Likewise.
3502         (sse2_sssub<mode>3): Likewise.
3503         (sse2_ussub<mode>3): Likewise.
3504         (*mulv8hi3): Likewise.
3505         (*smulv8hi3_highpart): Likewise.
3506         (*umulv8hi3_highpart): Likewise.
3507         (sse2_umulv2siv2di3): Likewise.
3508         (sse2_pmaddwd): Likewise.
3509         (ashr<mode>3): Likewise.
3510         (lshr<mode>3): Likewise.
3511         (ashl<mode>3): Likewise.
3512         (sse2_ashlti3): Likewise.
3513         (sse2_lshrti3): Likewise.
3514         (*umaxv16qi3): Likewise.
3515         (*smaxv8hi3): Likewise.
3516         (*uminv16qi3): Likewise.
3517         (*sminv8hi3): Likewise.
3518         (sse2_eq<mode>3): Likewise.
3519         (sse2_gt<mode>3): Likewise.
3520         (*and<mode>3): Likewise.
3521         (sse2_nand<mode>3): Likewise.
3522         (*ior<mode>3): Likewise.
3523         (*xor<mode>3): Likewise.
3524         (sse2_packsswb): Likewise.
3525         (sse2_packssdw): Likewise.
3526         (sse2_packuswb): Likewise.
3527         (sse2_punpckhbw): Likewise.
3528         (sse2_punpcklbw): Likewise.
3529         (sse2_punpckhwd): Likewise.
3530         (sse2_punpcklwd): Likewise.
3531         (sse2_punpckhdq): Likewise.
3532         (sse2_punpckldq): Likewise.
3533         (sse2_punpckhqdq): Likewise.
3534         (sse2_punpcklqdq): Likewise.
3535         (*sse2_pinsrw): Likewise.
3536         (*sse2_pextrw): Likewise.
3537         (sse2_pshufd_1): Likewise.
3538         (sse2_uavgv16qi3): Likewise.
3539         (sse2_uavgv8hi3): Likewise.
3540         (sse2_psadbw): Likewise.
3541         (sse2_pmovmskb): Likewise.
3542         (*sse2_maskmovdqu): Likewise.
3543         (*sse2_maskmovdqu_rex64): Likewise.
3544         (sse4a_extrqi): Likewise.
3545         (sse4a_extrq): Likewise.
3546         (sse3_lddqu): Set prefix_rep.
3547         (sse3_addsubv4sf3): Likewise.
3548         (sse3_haddv4sf3): Likewise.
3549         (sse3_hsubv4sf3): Likewise.
3550         (sse_cvtss2si): Likewise.
3551         (sse_cvtss2si_2): Likewise.
3552         (sse_cvtss2siq): Likewise.
3553         (sse_cvtss2siq_2): Likewise.
3554         (sse_cvttss2si): Likewise.
3555         (sse_cvttss2siq): Likewise.
3556         (sse2_cvttps2dq): Likewise.
3557         (sse3_movshdup): Likewise.
3558         (sse3_movsldup): Likewise.
3559         (sse2_cvtsd2si): Likewise.
3560         (sse2_cvtsd2si_2): Likewise.
3561         (sse2_cvtsd2siq): Likewise.
3562         (sse2_cvtsd2siq_2): Likewise.
3563         (sse2_cvttsd2si): Likewise.
3564         (sse2_cvttsd2siq): Likewise.
3565         (*sse2_cvtpd2dq): Likewise.
3566         (*sse2_cvttpd2dq): Likewise.
3567         (sse2_pshuflw_1): Likewise.
3568         (sse2_pshufhw_1): Likewise.
3569         (sse4a_insertqi): Likewise.
3570         (sse4a_insertq): Likewise.
3571         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
3572         (ssse3_phadddv4si3): Likewise.
3573         (ssse3_phaddswv8hi3): Likewise.
3574         (ssse3_phsubwv8hi3): Likewise.
3575         (ssse3_phsubdv4si3): Likewise.
3576         (ssse3_phsubswv8hi3): Likewise.
3577         (ssse3_pmaddubswv8hi3): Likewise.
3578         (ssse3_pmulhrswv8hi3): Likewise.
3579         (ssse3_pshufbv16qi3): Likewise.
3580         (ssse3_psign<mode>3): Likewise.
3581         (ssse3_palignrti): Likewise.
3582         (abs<mode>2): Likewise.
3583         (ssse3_phaddwv4hi3): Set prefix_extra.
3584         (ssse3_phadddv2si3): Likewise.
3585         (ssse3_phaddswv4hi3): Likewise.
3586         (ssse3_phsubwv4hi3): Likewise.
3587         (ssse3_phsubdv2si3): Likewise.
3588         (ssse3_phsubswv4hi3): Likewise.
3589         (ssse3_pmaddubswv4hi3): Likewise.
3590         (ssse3_pmulhrswv4hi3): Likewise.
3591         (ssse3_pshufbv8qi3): Likewise.
3592         (ssse3_psign<mode>3): Likewise.
3593         (ssse3_palignrdi): Likewise.
3594         (abs<mode>2): Likewise.
3595         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
3596         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
3597         (sse2_pmovmskb): Set mode to SI instead of V2DF.
3598
3599 2007-04-23  Nick Clifton  <nickc@redhat.com>
3600
3601         * params.def: Fix formatting of emacs local variables.
3602
3603 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
3604
3605         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
3606         move if inter-unit move isn't allowed.
3607         Don't split moving the first element of V2DI to DI to inter-unit
3608         move if inter-unit move isn't allowed.
3609
3610 2007-04-23  Richard Guenther  <rguenther@suse.de>
3611
3612         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
3613         and CDI_POST_DOMINATORS separately.
3614
3615 2007-04-23  Nick Clifton  <nickc@redhat.com>
3616
3617         * c.opt (Wformat-contains-nul): Add warning attribute.
3618
3619 2007-04-23  Jan Hubicka  <jh@suse.cz>
3620
3621         * function.c (init_function_start): Don't init line number info.
3622         (expand_function_end): Update.
3623         (reset_block_changes, record_block_change, finalize_block_changes,
3624         check_block_change, free_block_changes): Kill.
3625         * function.h (reset_block_changes, record_block_change,
3626         finalize_block_changes, check_block_change, free_block_changes): Remove
3627         prototypes.
3628         (struct function): Remove ib_boundaries_block.
3629         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
3630         Use curr_insn_locator to initialize locator.
3631         (emit_line_note): Remove.
3632         * cfgexpand.c (expand_gimple_cond_expr): Update.
3633         (construct_exit_block): Likewise.
3634         (tree_expand_cfg): Initialize/finalize locators.
3635         * expr.c (expand_expr_real): Update.
3636         * cfglayout.c (line_locators_locs, line_locators_lines,
3637         file_locators_locs, file_locators_files): Remove.
3638         (set_block_levels): Move to cfgexpand.c.
3639         (insn_locators_initialize): Remove.
3640         (pass_insn_locators_initialize): Remove.
3641         (locations_locators_locs, locations_locators_vals): New static vars.
3642         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
3643         Likewise.
3644         (insn_locators_alloc, insn_locators_finalize,
3645         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3646         New functions.
3647         (locator_location): New.
3648         (locator_line, locator_file): Rewrite.
3649         * rtl.h (emit_line_note): Kill.
3650         (insn_locators_alloc, insn_locators_finalize,
3651         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3652         Declare.
3653         * tree-inline.c (initialize_cfun): Do not initialize
3654         ib_boundaries_block.
3655         * passes.c (pass_insn_locators_initialize): Remove.
3656
3657 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3658
3659         PR middle-end/31448
3660         * expr.c (reduce_to_bit_field_precision): Handle
3661         CONST_INT rtx's.
3662
3663 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
3664
3665         PR tree-optimization/24659
3666         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
3667         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
3668         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
3669         * genopinit.c (optabs): Rename vec_pack_mod_optab
3670         to vec_pack_trunc_optab.
3671         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
3672         early for scalar floating point operands for NOP_EXPR.
3673         (vectorizable_type_promotion): Ditto.
3674         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
3675         vec_pack_trunc_optab.
3676         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
3677
3678         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
3679         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
3680         Rename from VEC_PACK_MOD_EXPR.
3681         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
3682         * expr.c (expand_expr_real_1): Ditto.
3683         * tree-inline.c (estimate_num_insns_1): Ditto.
3684         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
3685
3686         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
3687         (vec_unpacks_lo_v4sf): Ditto.
3688         (vec_pack_trunc_v2df): Ditto.
3689         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
3690         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
3691         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
3692
3693         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
3694         vec_pack_mod_v8hi.
3695         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
3696
3697         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
3698         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
3699         packing of floating point operands.
3700         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
3701         represent unpacking of floating point operands.
3702         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
3703         [vec_unpacks_hi]: Ditto.
3704         [vec_unpacks_lo]: Ditto.
3705
3706 2007-04-22  Jan Hubicka  <jh@suse.cz>
3707
3708         * final.c (rest_of_handle_final): Call
3709         targetm.asm_out.constructor/targetm.asm_out.destructor
3710         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
3711         proper priority via decl_*_priority_insert.
3712         * c-common.c (c_expand_body): Likewise.
3713
3714 2007-04-22  Richard Guenther  <rguenther@suse.de>
3715
3716         PR tree-optimization/29789
3717         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
3718         (rewrite_reciprocal): New helper split out from
3719         determine_invariantness_stmt.
3720         (rewrite_bittest): Likewise.
3721         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
3722         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
3723         is not.
3724
3725 2007-04-22  Revital Eres  <eres@il.ibm.com>
3726
3727         * loop-unroll.c (var_to_expand): New field to support also
3728         insns of the form x = something + x.
3729         (analyze_insn_to_expand_var): Use it.
3730         (expand_var_during_unrolling): Likewise.
3731
3732 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
3733
3734         * predict.c: Include pointer-set.h.
3735         (bb_predictions): New variable.
3736         (tree_predicted_by_p, tree_predict_edge,
3737         remove_predictions_associated_with_edge): Use bb_predictions map
3738         instead of bb->predictions.
3739         (clear_bb_predictions, assert_is_empty): New functions.
3740         (combine_predictions_for_bb): Use bb_predictions map.  Call
3741         clear_bb_predictions.
3742         (tree_estimate_probability): Create and free bb_predictions map.
3743         * Makefile.in (predict.o): Add pointer-set.h dependency.
3744         * basic-block.h (struct basic_block_def): Remove predictions
3745         field.
3746         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
3747
3748 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
3749
3750         PR target/31480
3751         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
3752         is null.
3753
3754 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3755
3756         * timevar.c (timevar_print): Change reference of --disable-checking to
3757         --enable-checking=release.  Also warn if assert checking is disabled.
3758
3759 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3760
3761         PR C/30265
3762         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
3763         decl as addressable if the compound literal was marked as
3764         addressable.
3765         Mark the decl as a gimple register if it is a complex or
3766         vector decl and does not live in memory.
3767
3768 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3769
3770         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
3771         (GENERIC_NEXT): New function macro.
3772         (PHI_CHAIN): Use phi_node's new chain variable.
3773         (tree_phi_node): Change tree_common to tree_base
3774         and add the chain field.
3775         * tree-phinodes.c (make_phi_node): Don't set
3776         TREE_TYPE on the new node.
3777         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
3778         instead of checking GIMPLE_TUPLE_P in chain_next.
3779         * tree-vect-transform.c
3780         (get_initial_def_for_induction): Look at
3781         PHI_RESULT_TREE for the type of the phi node.
3782         (update_vuses_to_preheader): Use PHI_CHAIN
3783         instead of TREE_CHAIN on the phi node.
3784         * tree-ssa-structalias.c (compute_points_to_sets):
3785         Likewise.
3786         (ipa_pta_execute): Likewise.
3787
3788 2007-04-21  Richard Guenther  <rguenther@suse.de>
3789
3790         PR middle-end/31136
3791         * fold-const.c (fold_unary): Call fold_convert_const on the
3792         original tree.
3793
3794 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
3795
3796         * gcse.c (store_killed_in_insn): Handle PARALLELs.
3797         (store_killed_in_pat): New.
3798
3799 2007-04-20  Richard Henderson  <rth@redhat.com>
3800
3801         PR target/31628
3802         * config/i386/i386.c (type_has_variadic_args_p): Look for any
3803         TREE_LIST with a void_type_node value, not void_list_node exactly.
3804
3805 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
3806
3807         * doc/standards.texi: Re-arrange into language-specific
3808         subsections. Add a C++ section, documenting which standards we
3809         support.
3810
3811 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
3812
3813         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
3814         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
3815
3816 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
3817
3818         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
3819         ecrti.o and crtbegin.o.
3820         (LIB_DEFAULT_SPEC): Include -lc.
3821         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
3822
3823 2007-04-20  Richard Henderson  <rth@redhat.com>
3824
3825         PR target/28623
3826         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
3827         argument; update all callers.
3828         (get_unaligned_offset): New.
3829         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
3830         get_unaligned_address, just pass on the address directly.
3831         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
3832         the subreg in the helper patterns.
3833         (unaligned_extendqidi_le): Use get_unaligned_offset.
3834         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
3835         (unaligned_extendhidi_be): Likewise.
3836         (unaligned_extendhidi): Tidy.
3837         * config/alpha/alpha-protos.h: Update.
3838
3839 2007-04-20  Richard Henderson  <rth@redhat.com>
3840
3841         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
3842         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
3843         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
3844         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
3845         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
3846         (CPP_SPEC): Don't include %(cpp_subtarget).
3847         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
3848         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
3849         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
3850
3851 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
3852
3853         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
3854         for __builtin_ia32_cmpordss.
3855
3856         PR tree-optimization/31632
3857         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
3858         and arg1 for optimizations of comparison against min/max values.
3859         Fold arg0 to arg1's type for optimizations of comparison against
3860         min+1 and max-1 values.
3861
3862 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
3863
3864         * reload.c (combine_reloads): When trying to use a dying register,
3865         check whether it's uninitialized and don't use if so.
3866
3867 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
3868
3869         * fold-const.c: Remove prototypes for native_encode_expr and
3870         native_interpret_expr.
3871         (native_encode_expr): Make non-static.
3872         (native_interpret_expr): Likewise.
3873         * tree.h: Add prototypes for the above.
3874
3875 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
3876
3877         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
3878         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
3879         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
3880         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
3881         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
3882         Add length attributes.
3883
3884 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
3885
3886         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
3887         not that it is 1.
3888
3889         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
3890         __STDC_WANT_DEC_FP__.
3891
3892 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
3893
3894         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
3895         for long double compatibility.
3896         * configure: Regenerate.
3897
3898 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
3899
3900         PR rtl-optimization/29841
3901         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
3902         trap instructions.
3903         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
3904         that may cause control flow transfer from being moved.
3905
3906 2007-04-18  Jan Hubicka  <jh@suse.cz>
3907
3908         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
3909         types.
3910
3911 2007-04-18  Eric Christopher  <echristo@apple.com>
3912
3913         * config/rs6000/darwin.md (load_macho_picbase): Use link register
3914         only. Update operands.
3915         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
3916         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
3917         link register to pic register.
3918
3919 2007-04-18  Dirk Mueller  <dmueller@suse.de>
3920
3921         PR diagnostic/31227
3922         * tree-vrp.c (search_for_addr_array): New.
3923         (check_array_bounds): Suppress warning about
3924         address taken of array refs if its not de-referenced.
3925
3926 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
3927
3928         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
3929         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
3930
3931         * tree-vectorizer.h (NITERS_KNOWN_P): New.
3932         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
3933         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
3934
3935         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
3936         dump print.
3937         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
3938         print message.
3939         (vect_analyze_scalar_cycles): Fix indentation.
3940         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
3941         (vect_mark_relevant): Include phis in relevance analysis.
3942
3943         * tree-vect-transform.c (vect_transform_loop): Add an assert.
3944
3945 2007-04-18  Anatoly Sokolov <aesok@post.ru>
3946
3947         * config/avr/avr.c (ptrreg_to_str): Replace error() with
3948         output_operand_lossage().
3949
3950 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
3951
3952         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
3953         the unused code for reduction without adjust-in-epilog to simplify the
3954         function.
3955
3956 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
3957
3958         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
3959         (S390_TDC_NEGATIVE_ZERO): New constant.
3960         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
3961         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
3962         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
3963         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
3964         (S390_TDC_POSITIVE_INFINITY): New constant.
3965         (S390_TDC_NEGATIVE_INFINITY): New constant.
3966         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
3967         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
3968         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
3969         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
3970         (S390_TDC_INFINITY): New constant.
3971         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
3972         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
3973         optimization for UNSPEC_CCZ_TO_INT.
3974         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
3975         ("*ccz_to_int"): New insn.
3976         ("isinf<mode>2"): New insn.
3977         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
3978         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
3979         (UNSPEC_CCZ_TO_INT): New constant.
3980
3981 2007-04-18  Richard Guenther  <rguenther@suse.de>
3982
3983         PR tree-optimization/19431
3984         PR tree-optimization/21463
3985         * tree-pass.h (pass_phiprop): Declare.
3986         * passes.c (init_optimization_passes): New phiprop pass.
3987         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
3988         (phivn_valid_p): New helper function.
3989         (phiprop_insert_phi): Likewise.
3990         (propagate_with_phi): Likewise.
3991         (tree_ssa_phiprop): New propagator propagating loads
3992         through phi nodes if profitable.
3993
3994 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
3995
3996         * tree-vect-analyze.c (process_use): New function.
3997         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
3998         Check phis in all bbs.
3999         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
4000         assert.
4001
4002 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
4003
4004         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
4005         we use REG_EQUAL.
4006
4007 2007-04-17  Anatoly Sokolov <aesok@post.ru>
4008
4009         PR target/30483
4010         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
4011         error().
4012
4013 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
4014
4015         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
4016         on "0".
4017         (sse_vmmulv4sf3): Likewise.
4018         (sse2_vmaddv2df3): Likewise.
4019         (sse2_vmmulv2df3): Likewise.
4020
4021 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
4022
4023         PR rtl-optimization/31360
4024         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
4025         (target_reg_cost): New.
4026         (init_set_costs): Initialize target_reg_cost.  Add comments
4027         regarding the rationale of the costs.
4028         (global_cost_for_size): Renamed to...
4029         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
4030         of register pressure.
4031         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
4032         estimate_reg_pressure_cost.  Add number of ivs.
4033         (determine_set_costs): Dump target_reg_cost.
4034         * loop-invariant.c (gain_for_invariant):  Use
4035         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
4036         (best_gain_for_invariant, find_invariants_to_move): Remove
4037         n_inv_uses.
4038         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
4039         (target_reg_cost): Declare.
4040         (global_cost_for_size): Declaration removed.
4041         (estimate_reg_pressure_cost): Declare.
4042
4043 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
4044
4045         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
4046         regnos into even/odd register pairs.
4047         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
4048         TDmode similar to the other floating point modes.
4049         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
4050         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
4051         define_expand's.
4052         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
4053         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
4054         (movdd_hardfloat64): Use TARGET_MFPGPR.
4055
4056 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
4057
4058         * reload1.c (delete_output_reload): Don't count output in n_inherited.
4059
4060         Revert
4061         2005-01-05  Richard Henderson  <rth@redhat.com>
4062         PR rtl-opt/10692
4063         * reload1.c (do_input_reload): Restrict the optimization deleteing
4064         a previous output reload to RELOAD_FOR_INPUT.
4065
4066 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
4067
4068         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
4069         induc_vec_info_type.
4070         (vectorizable_induction): New function declaration.
4071         * tree-vect-transform.c (get_initial_def_for_induction): No need to
4072         check if already vectorized.  Find first place in BB where new stmts
4073         can be inserted.  Takes only one argument.
4074         (vectorizable_induction): New function.
4075         (vect_transform_stmt): Add case for induc_vec_info_type to call
4076         vectorizable_induction.
4077         (vect_transform_loop): Consider phis for vectorization.
4078         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
4079         condition.
4080         (analyze_operations): Call vectorizable_induction when analyzing phis.
4081         Fix comment.
4082         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
4083         (vect_mark_relevant): Include phis in relevance analysis.
4084         (vect_mark_stmts_to_be_vectorize): Likewise.
4085         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
4086
4087 2007-04-16  Lawrence Crowl  <crowl@google.com>
4088
4089         * doc/invoke.texi (Debugging Options): Add documentation for the
4090         -femit-struct-debug options -femit-struct-debug-baseonly,
4091         -femit-struct-debug-reduced, and
4092         -femit-struct-debug-detailed[=...].
4093
4094         * c-opts.c (c_common_handle_option): Add
4095         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
4096         and OPT_femit_struct_debug_detailed_.
4097         * c.opt: Add specifications for
4098         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
4099         and -femit-struct-debug-detailed[=...].
4100         * opts.c (set_struct_debug_option): Parse the
4101         -femit-struct-debug-... options.
4102         * opts.c (matches_main_base, main_input_basename,
4103         main_input_baselength, base_of_path, matches_main_base): Add
4104         variables and functions to compare header base name to compilation
4105         unit base name.
4106         * opts.c (should_emit_struct_debug): Add to determine to emit a
4107         structure based on the option.
4108         (dump_struct_debug) Also disabled function to debug this
4109         function.
4110         * opts.c (handle_options): Save the base name of the
4111         compilation unit.
4112
4113         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
4114         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
4115         This hook indicates if a type is generic.  Set it by default
4116         to "never generic".
4117         * langhooks.h (struct lang_hooks_for_types): Add a new hook
4118         to determine if a struct type is generic or not.
4119         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
4120         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
4121         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
4122         with live C++ hook.
4123
4124         * flags.h (enum debug_info_usage): Add an enumeration to describe
4125         a program's use of a structure type.
4126         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
4127         to indicate the program's usage of the type.  Filter structs based
4128         on the -femit-struct-debug-... specification.
4129         (gen_type_die): Split into two routines, gen_type_die and
4130         gen_type_die_with_usage.  gen_type_die is now a wrapper
4131         that assumes direct usage.
4132         (gen_type_die_with_usage): Replace calls to gen_type_die
4133         with gen_type_die_with_usage adding the program usage of
4134         the referenced type.
4135         (dwarf2out_imported_module_or_decl): Suppress struct debug
4136         information using should_emit_struct_debug when appropriate.
4137
4138 2007-04-16  Ian Lance Taylor  <iant@google.com>
4139
4140         PR tree-optimization/31522
4141         * tree-vrp.c (vr_phi_edge_counts): New static variable.
4142         (vrp_initialize): Allocate vr_phi_edge_counts.
4143         (vrp_visit_phi_node): Don't push to infinity if we saw a new
4144         executable edge.  Drop test for all constants.
4145         (vrp_finalize): Free vrp_phi_edge_counts.
4146
4147         * doc/cpp.texi (Common Predefined Macros): Clarify description of
4148         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
4149
4150         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
4151         predecessors at head rather than tail.
4152
4153 2007-04-16  Matthias Klose  <doko@debian.org>
4154
4155         * config/alpha/linux.h (CPP_SPEC): Define.
4156         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
4157
4158 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
4159
4160         * function.h: Remove sequence_stack extern declaration.
4161
4162 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
4163
4164         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
4165         TARGET_FIDOA.
4166         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
4167         defined.
4168
4169 2007-04-16  Anatoly Sokolov <aesok@post.ru>
4170
4171         * config/avr/avr.c (avr_arch_types): Rearranging  array.
4172         (enum avr_arch): Add.
4173         (avr_mcu_types): Use avr_arch enumeration constants instead of
4174         numbers.
4175         * config/avr/avr.h (LINK_SPEC): Simplify.
4176
4177 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
4178
4179         * config/m68k/m68k.c (m68k_libcall_value,
4180         m68k_function_value): Use macros for register names more.
4181
4182         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
4183         instead.
4184         (M68K_REGNAME): Use A6_REG.
4185         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
4186
4187 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4188
4189         PR middle-end/28071
4190         * sched-int.h (struct deps): Split field 'pending_lists_length' into
4191         'pending_read_list_length' and 'pending_write_list_length'.  Update
4192         comment.
4193         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
4194         to handle two length counters instead of one.  Update all uses.
4195         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
4196         two length counters instead of one.
4197         * sched-rgn.c (propagate_deps): Update to handle two length counters
4198         instead of one.
4199
4200 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
4201
4202         PR target/31582
4203         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
4204         copy of source, pass it to ix86_expand_vector_set and return
4205         it as target.
4206
4207 2007-04-16  David Ung  <davidu@mips.com>
4208             Joseph Myers  <joseph@codesourcery.com>
4209
4210         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
4211         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
4212         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
4213         Add 74K processor information.
4214         * config/mips/mips.md: Include 74k.md.
4215         (cpu): Add 74kc,74kf,74kx.
4216         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
4217         * config/mips/74k.md: New.
4218         * doc/invoke.texi (MIPS Options): Document 74K support.
4219
4220 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
4221
4222         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
4223         vectorizable_* functions.
4224         * tree-vect-transform.c (vectorizable_call): Add check for
4225         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
4226         (vectorizable_store): likewise.
4227         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
4228         Add comments.
4229         (vectorizable_operation, vectorizable_type_demotion): Likewise.
4230         (vectorizable_type_promotion, vectorizable_load): Likewise.
4231         (vectorizable_live_operation, vectorizable_condition): Likewise.
4232         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
4233         STMT_VINFO_LIVE_P.
4234         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
4235
4236 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4237
4238         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
4239         register numbers more.
4240         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
4241         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
4242         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
4243         FUNCTION_VALUE_REGNO_P): Likewise.
4244         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
4245         STATIC_CHAIN_REGNUM): Likewise.
4246         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
4247         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
4248         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
4249         * config/m68k/m68k.md (FP_REG): New.
4250
4251 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4252
4253         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
4254         alignment on fido.
4255
4256 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4257
4258         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
4259         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
4260         comment typos.
4261
4262 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
4263
4264         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
4265         cold loops.
4266
4267 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4268
4269         PR c/31520
4270         * c-decl.c (finish_decl): Grab the type of the decl after the call
4271         to store_init_value.
4272
4273 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
4274
4275         * common.opt (fforward-propagate): Fix "Optimization" annotation.
4276
4277 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
4278
4279         PR c++/25874
4280         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
4281         post dominators and cleanup cfg before returning.
4282
4283 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4284
4285         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
4286         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
4287
4288 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
4289
4290         * config.gcc: Recognize fido.
4291         * config/m68k/m68k-devices.def (fidoa): New.
4292         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
4293         __mfido__.
4294         (FL_FIDOA, TARGET_FIDOA): New.
4295         * config/m68k/m68k.opt (mfidoa): New.
4296
4297 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4298
4299         PR middle-end/31322
4300         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
4301         when a personality function is used.
4302
4303 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
4304
4305         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
4306
4307 2007-04-13  Mike Stump  <mrs@apple.com>
4308
4309         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
4310         we can...
4311         * config/darwin.opt (fapple-kext): Make C++ only.
4312         * config/darwin.c (darwin_override_options): Remove code to ensure
4313         -fapple-kext is given for C++ only.
4314
4315 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
4316
4317         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
4318         * config/mips/mips.c (override_options): Call
4319         SUBTARGET_OVERRIDE_OPTIONS, if defined.
4320
4321 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
4322
4323         * config/i386/i386.opt (msvr3-shlib): Removed.
4324
4325         * doc/invoke.texi: Remove -msvr3-shlib.
4326
4327 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
4328
4329         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
4330         with "popcnt" instruction.
4331
4332 2007-04-13  Richard Guenther  <rguenther@suse.de>
4333
4334         PR tree-optimization/21258
4335         * tree-vrp.c (compare_case_labels): New helper.
4336         (find_switch_asserts): New function.
4337         (find_assert_locations): Call it for SWITCH_EXPRs.
4338
4339 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
4340
4341         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
4342         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
4343         check is now implied in X87_FLOAT_MODE_P.
4344         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
4345         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
4346         (fix_trunc<mode>_i386_fisttp): Ditto.
4347         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
4348         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
4349         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
4350         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
4351         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
4352         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
4353         (unnamed_splitters): Ditto.
4354         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
4355         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
4356         FIRST_SSE_REG for local functions when SSE math is enabled or
4357         for functions with sseregparm attribute.
4358         (standard_80387_constant_p): Return -1 if mode is not
4359         X87_FLOAT_MODE_P.
4360         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
4361         (ix86_expand_compare): Ditto.
4362         (ix86_expand_carry_flag_compare): Ditto.
4363         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
4364         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
4365         DECIMAL_FLOAT_MODE_P.
4366         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
4367         of SCALAR_FLOAT_MODE_P.
4368         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
4369         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
4370         checks before FLOAT_MODE_P.
4371         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
4372         before FLOAT_MODE_P.
4373         [DIV]: Ditto.
4374         [NEG]: Ditto.
4375         [ABS]: Ditto.
4376         [SQRT]: Ditto.
4377         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
4378
4379 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
4380             Charles Wilson  <libtool@cwilson.fastmail.fm>
4381
4382         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
4383         (libgcc.mvars): Don't depend on them.
4384         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
4385         * exec-tool.in: New.
4386
4387 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
4388
4389         * doc/invoke.text (--help): Document --help=common.
4390
4391 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
4392
4393         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
4394
4395 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4396
4397         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
4398         * genemit.c (main): Emit #include "integrate.h".
4399         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
4400         (LOADGP_RTP): New mips_loadgp_style.
4401         * config/mips/mips.h: Include config/vxworks-dummy.h.
4402         (TARGET_RTP_PIC): New macro.
4403         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
4404         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
4405         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
4406         for TARGET_RTP_PIC.
4407         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
4408         -mvxworks-pic when using -mrtp and a PIC option.
4409         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
4410         for RTP PIC.
4411         (mips_symbolic_constant_p, mips_symbolic_address_p)
4412         (mips_symbol_insns): Handle SYMBOL_HALF.
4413         (override_options): Warn about -G and -mrtp being used together.
4414         Initialize mips_lo_relocs[SYMBOL_HALF].
4415         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
4416         (mips_emit_loadgp): Handle LOADGP_RTP.
4417         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
4418         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
4419         (tablejump): Handle function-relative case table entries if
4420         TARGET_RTP_PIC.
4421         * config/mips/predicates.md (symbol_ref_operand): New predicate.
4422
4423 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4424
4425         * config/mips/mips.md (load_call<mode>): Allow any general register.
4426         destination.
4427         (sibcall_value_internal, sibcall_value_multiple_internal)
4428         (call_value_internal, call_value_split, call_value_multiple_internal)
4429         (call_value_multiple_split): Remove constraints from operand 0.
4430
4431 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4432
4433         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
4434         rather than loadgp_noshared.
4435         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
4436         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
4437         gen_loadgp.
4438         * config/mips/mips.md (loadgp): Rename to...
4439         (loadgp_newabi): ...this.
4440         (loadgp_noshared): Rename to...
4441         (loadgp_absolute): ...this.
4442
4443 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4444
4445         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
4446         false for locally-binding symbols.
4447         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
4448
4449 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4450
4451         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
4452         (SYMBOL_GOT_PAGE_OFST): ...this.
4453         (SYMBOL_GOT_GLOBAL): Rename to...
4454         (SYMBOL_GOT_DISP): ...this.
4455         (SYMBOL_GOTOFF_GLOBAL): Rename to...
4456         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
4457         * config/mips/mips.c (mips_global_symbol_p): New function.
4458         (mips_symbol_binds_local_p): Likewise.
4459         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
4460         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
4461         and mips_symbol_binds_local_p.
4462         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
4463         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
4464         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
4465         SYMBOL_GOTOFF_DISP.
4466         (mips_ok_for_lazy_binding_p): New function.
4467         (mips_load_call_address, mips_expand_call): Use it.
4468         (mips_dangerous_for_la25_p): Likewise.
4469         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
4470         (*got_disp<mode>): Use got_disp_operand instead of
4471         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
4472         SYMBOL_GOTOFF_GLOBAL.
4473         (*got_page<mode>): Use got_page_ofst_operand instead of
4474         local_got_operand.
4475         * config/mips/predicates.md (const_call_insn_operand): Use
4476         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
4477         (global_got_operand): Rename to...
4478         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
4479         SYMBOL_GOT_GLOBAL.
4480         (local_got_operand): Rename to...
4481         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
4482         of SYMBOL_GOT_LOCAL.
4483
4484 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4485
4486         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
4487         TARGET_CALL_CLOBBERED_GP.
4488         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4489         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
4490         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
4491         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
4492         of TARGET_ABICALLS && !TARGET_NEWABI.
4493         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4494         * config/mips/mips.c (mips_load_call_address): Check
4495         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
4496         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4497         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
4498         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
4499         TARGET_ABICALLS && TARGET_NEWABI.
4500         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
4501         TARGET_ABICALLS.
4502         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
4503         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
4504         TARGET_ABICALLS && TARGET_NEWABI.
4505         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
4506         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
4507         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
4508         whether indirect calls must use $25.
4509         (mips_extra_live_on_entry): Check TARGET_GOT instead of
4510         TARGET_ABICALLS.
4511         * config/mips/mips.md (jal_macro): Check flag_pic and
4512         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
4513         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
4514         instead of TARGET_ABICALLS.
4515         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
4516         TARGET_ABICALLS && TARGET_OLDABI.
4517         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4518         (sibcall): In the comment above the define_insn, mention
4519         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
4520         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
4521         instead of TARGET_ABICALLS.
4522
4523 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4524
4525         * doc/md.texi (Blackfin family constraints): Document PA and PB.
4526         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
4527         (MACFLAGS_MATCH_P): New macro.
4528         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
4529         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
4530         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
4531         the other MACFLAG constants.
4532         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
4533         (flag_machi): Tighten constraints.  Renumber some of the operands.
4534         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
4535         output template.
4536         (flag_machi_parts_acconly): New pattern.
4537         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
4538         used.
4539         (flag_macinit1hi): Tighten constraints.
4540         (flag_mul_macv2hi_parts_acconly): New pattern.
4541
4542         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
4543         Use a more efficient implementation.
4544         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
4545         inline sequences when not optimizing for size.
4546
4547         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
4548         movhi_high2low): Delete, merge functionality into...
4549         (packv2hi): ... this pattern.
4550
4551         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
4552         * config/bfin/bfin.opt (msim): New option.
4553         (mcpu=): New option.
4554         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
4555         (bfin_cpu_t): Typedef of enum bfin_cpu.
4556         (bfin_cpu_type): New declaration.
4557         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
4558         -msim and -mcpu= options.
4559         (LIB_SPEC): Likewise.
4560         * config/bfin/bfin.c (bfin_cpu_type): Define.
4561         (bfin_handle_option): Handle -mcpu= option.
4562         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
4563         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
4564         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
4565
4566 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4567
4568         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
4569         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
4570         (powerpc-wrs-vxworksae): Use ${tm_file}.
4571         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
4572         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
4573         * config/i386/vx-common.h: New file.
4574
4575 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4576
4577         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
4578         of crt0.o%s.
4579
4580 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
4581
4582         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
4583         ldxtr.
4584
4585 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
4586
4587         PR c++/31078
4588         PR c++/31103
4589         * c-common.c (c_build_qualified_type): Set canonical type
4590         appropriately.
4591
4592 2007-04-12  Richard Guenther  <rguenther@suse.de>
4593
4594         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
4595         lower bound and element size if lower bound is not zero
4596         or either of the ARRAY_REF operands is set.
4597
4598 2007-04-12  Richard Guenther  <rguenther@suse.de>
4599
4600         PR tree-optimization/24689
4601         PR tree-optimization/31307
4602         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
4603         indices by value.
4604         * gimplify.c (canonicalize_addr_expr): To be consistent with
4605         gimplify_compound_lval only set operands two and three of
4606         ARRAY_REFs if they are not gimple_min_invariant.  This makes
4607         it never at this place.
4608         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
4609
4610 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4611
4612         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
4613         null before emitting a .nsubspa directive.
4614
4615 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
4616
4617         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
4618         need_to_partition_p if there are no memory statements in the
4619         function.
4620
4621 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
4622
4623         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
4624         (gcd_of_steps_may_divide_p): New function.
4625         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
4626
4627 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4628
4629         * reload.c (find_reloads_toplev, find_reloads_address,
4630         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
4631         not a pointer equality test, to decide if we need to call
4632         push_reg_equiv_alt_mem.
4633
4634 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
4635
4636         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
4637         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
4638         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
4639
4640 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
4641
4642         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
4643         vector to be positive.
4644
4645 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
4646
4647         PR 30735
4648         PR 31090
4649         * doc/invoke.texi: Document --params max-aliased-vops and
4650         avg-aliased-vops.
4651         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
4652         debug_memory_partitions): Move to tree-flow.h
4653         * params.h (AVG_ALIASED_VOPS): Define.
4654         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
4655         users.
4656         (mp_info_t): Likewise.
4657         (get_mem_sym_stats_for): New.
4658         (set_memory_partition): Move from tree-flow-inline.h.
4659         (mark_non_addressable): Only clear the set of symbols for the
4660         partition if it exists.
4661         (dump_memory_partitions): Move from tree-ssa-operands.c
4662         (debug_memory_partitions): Likewise.
4663         (need_to_partition_p): New.
4664         (dump_mem_ref_stats): New.
4665         (debug_mem_ref_stats): New.
4666         (dump_mem_sym_stats): New.
4667         (debug_mem_sym_stats): New.
4668         (update_mem_sym_stats_from_stmt): New.
4669         (compare_mp_info_entries): New.
4670         (mp_info_cmp): Call it.
4671         (sort_mp_info): Change argument to a list of mem_sym_stats_t
4672         objects.
4673         (get_mpt_for): Move from tree-ssa-operands.c.
4674         (find_partition_for): New.
4675         (create_partition_for): Remove.
4676         (estimate_vop_reduction): New.
4677         (update_reference_counts): New.
4678         (build_mp_info): New.
4679         (compute_memory_partitions): Refactor.
4680         Document new heuristic.
4681         Call build_mp_info, update_reference_counts,
4682         find_partition_for and estimate_vop_reduction.
4683         (compute_may_aliases): Populate virtual operands before
4684         calling debugging dumps.
4685         (delete_mem_sym_stats): New.
4686         (delete_mem_ref_stats): New.
4687         (init_mem_ref_stats): New.
4688         (init_alias_info): Call it.
4689         (maybe_create_global_var): Remove alias_info argument.
4690         Get number of call sites and number of pure/const call sites
4691         from gimple_mem_ref_stats().
4692         (dump_alias_info): Call dump_memory_partitions first.
4693         (dump_points_to_info_for): Show how many times a pointer has
4694         been dereferenced.
4695         * opts.c (decode_options): For -O2 set --param
4696         max-aliased-vops to 500.
4697         For -O3 set --param max-aliased-vops to 1000 and --param
4698         avg-aliased-vops to 3.
4699         * fortran/options.c (gfc_init_options): Remove assignment to
4700         MAX_ALIASED_VOPS.
4701         * tree-flow-inline.h (gimple_mem_ref_stats): New.
4702         * tree-dfa.c (dump_variable): Dump memory reference
4703         statistics.
4704         Dump NO_ALIAS* settings.
4705         (referenced_var_lookup): Tidy.
4706         (mem_sym_stats): New.
4707         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
4708         and ORIG are different SSA names for a memory partition.
4709         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
4710         * tree-flow.h (struct mem_sym_stats_d): Define.
4711         (mem_sym_stats_t): Define.
4712         (struct mem_ref_stats_d): Define.
4713         (struct gimple_df): Add field mem_ref_stats.
4714         (enum noalias_state): Define.
4715         (struct var_ann_d): Add bitfield noalias_state.
4716         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
4717         debug_mem_ref_stats, debug_memory_partitions,
4718         debug_mem_sym_stats): Declare.
4719         * tree-ssa-structalias.c (update_alias_info): Update call
4720         sites, pure/const call sites and asm sites in structure
4721         returned by gimple_mem_ref_stats.
4722         Remove local variable IS_POTENTIAL_DEREF.
4723         Increase NUM_DEREFS if the memory expression is a potential
4724         dereference.
4725         Call update_mem_sym_stats_from_stmt.
4726         If the memory references memory, call
4727         update_mem_sym_stats_from_stmt for all the direct memory
4728         symbol references found.
4729         (intra_create_variable_infos): Set noalias_state field for
4730         pointer arguments according to the value of
4731         flag_argument_noalias.
4732         * tree-ssa-structalias.h (struct alias_info): Remove fields
4733         num_calls_found and num_pure_const_calls_found.
4734         (update_mem_sym_stats_from_stmt): Declare.
4735         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
4736         Set default value to 100.
4737         (PARAM_AVG_ALIASED_VOPS): Define.
4738
4739 2007-04-11  Richard Guenther  <rguenther@suse.de>
4740
4741         PR middle-end/31530
4742         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
4743         a * -b + c as c - a * b if we honor sign dependent rounding.
4744
4745 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
4746
4747         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
4748         bfin_expand_strmov.
4749         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
4750         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
4751         variables.
4752         (initialize_trampoline): Don't use old-style function definition.
4753         (bfin_secondary_reload): Mark IN_P argument as unused.
4754
4755 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
4756
4757         PR tree-optimization/31343
4758         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
4759         (build_polynomial_chrec): Return a scalar when the evolution is zero.
4760         * testsuite/gcc.dg/vect/pr31343.c: New.
4761
4762 2007-04-10  Eric Christopher  <echristo@apple.com>
4763
4764         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
4765         * config/i386/i386.md (*cmpfp0): Use.
4766         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
4767         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
4768         (fix_trunc<mode>_i386_fisttp): Ditto.
4769         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
4770         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
4771         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
4772         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
4773         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
4774         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
4775         (unnamed_splitters): Ditto.
4776         * config/i386/i386.c (output_fix_trunc): Assert that
4777         we're not being passed a TFmode operand.
4778
4779 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
4780
4781         PR tree-optimization/31526
4782         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
4783         n_basic_blocks to find newly added blocks.
4784
4785 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
4786
4787         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
4788         alternative.
4789         (fix_trunc<mode>si_sse): Ditto.
4790         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
4791         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
4792         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
4793         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
4794         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
4795         expander using SSEMODEF mode macro.
4796         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
4797         expander using SSEMODEF mode macro.
4798         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
4799         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
4800         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
4801         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
4802         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
4803         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
4804         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
4805         Macroize insn using X87MODEF mode macro.
4806
4807 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
4808
4809         * config/i386/sse.md (sse2_pinsrw): Removed.
4810         (sse2_pextrw): Renamed to ...
4811         (*sse2_pextrw): This.
4812
4813 2007-04-09  Jan Hubicka  <jh@suse.cz>
4814
4815         PR target/27869
4816         * config/i386/sse.md
4817         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
4818         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
4819         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
4820         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
4821
4822 2007-04-09  Jan Hubicka  <jh@suse.cz>
4823
4824         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
4825         multiple fields of union.
4826
4827 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
4828
4829         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
4830         (create_preheaders): Check that loops are available.
4831         (fix_loop_structure): Clean up, improve comments.
4832         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
4833         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
4834         state flags.
4835         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
4836         * predict.c (tree_estimate_probability): Do not call
4837         calculate_dominance_info.  Call create_preheaders.
4838         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
4839         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
4840         flags.
4841         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
4842         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
4843         * tree-cfg.c (tree_split_edge): Make an assert more precise.
4844         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
4845         arguments.
4846
4847 2007-04-08  Jan Hubicka  <jh@suse.cz>
4848
4849         * tree.h (maybe_fold_offset_to_component_ref): Declare.
4850         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
4851         * fold-const.c (fold_unary): Use it.
4852
4853 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4854
4855         * varasm.c (assemble_variable): Remove call to
4856         lang_hooks.decls.prepare_assemble_variable.
4857         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
4858         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
4859         * langhooks.h (lang_hooks_for_decls): Remove
4860         prepare_assemble_variable.
4861
4862 2007-04-08  Mike Stump  <mrs@apple.com>
4863
4864         * config/i386/i386.c: Use inc/dec on Core2.
4865
4866 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
4867
4868         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
4869         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
4870         lhd_tree_inlining_end_inlining): Remove.
4871         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
4872         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
4873         end_inlining hooks.
4874         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
4875         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
4876         lhd_tree_inlining_end_inlining): Remove prototypes.
4877         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
4878         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
4879         LANG_HOOKS_TREE_INLINING_START_INLINING,
4880         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
4881
4882         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
4883         not set it.
4884
4885 2007-04-08  Anatoly Sokolov <aesok@post.ru>
4886
4887         PR target/29932
4888         * config/avr/predicates.md (io_address_operand): Delete predicate.
4889         (low_io_address_operand): Don't use 'mode' argument.
4890         (higth_io_address_operand): Rename ...
4891         (high_io_address_operand): ... to this. Don't use 'mode' argument.
4892         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
4893         for above change.
4894
4895 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
4896
4897         Revert change removing staticp.
4898
4899 2007-04-07  Anatoly Sokolov <aesok@post.ru>
4900
4901         PR target/30289
4902         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
4903         earlyclobber.
4904
4905 2007-04-07  Bruce Korb  <bkorb@gnu.org>
4906
4907         * c.opt: Add -Wformat-contains-nul.
4908         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
4909           -Wformat setting.
4910         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
4911         the NUL byte warning.
4912
4913 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
4914
4915         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
4916
4917 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
4918
4919         * tree.c (staticp): No longer use staticp langhook.
4920         * langhooks.c (lhd_staticp): Removed.
4921         * langhooks.h (struct lang_hooks): Remove staticp.
4922         * c-common.c (c_staticp): Remove.
4923         * c-common.h (c_staticp): Ditto.
4924         * langhooks-defs.h (lhd_staticp): Ditto.
4925         (LHD_HOOKS_STATICP): Ditto
4926         * tree.h (gcc_assert_lowered): New macro.
4927
4928 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
4929
4930         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
4931         argument "reliable".
4932         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
4933         Add argument "reliable".  Propagate it through calls.
4934         (infer_loop_bounds_from_undefined):  Derive number of iterations
4935         estimates from references in blocks that do not dominate loop latch.
4936         (gcov_type_to_double_int): New function.
4937         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
4938         and expected_loop_iterations_unbounded.
4939         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
4940         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
4941         * tree-data-ref.c (estimated_loop_iterations): Export.
4942         (get_references_in_stmt): Fix -- do not return addresses of local
4943         objects.
4944         * cfgloop.h (expected_loop_iterations_unbounded,
4945         estimated_loop_iterations): Declare.
4946
4947 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
4948
4949         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
4950
4951 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
4952
4953         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
4954         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
4955         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
4956         Use output_387_reg_move().
4957         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
4958         expander using X87MODEF12 mode macro.
4959         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
4960         choosing register preferences.  Use output_387_reg_move().
4961         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
4962         instead of "x".  Use output_387_reg_move().
4963         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
4964         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
4965         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
4966         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
4967         Use output_387_reg_move().
4968         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
4969         mode macro.
4970         (*truncxf?f_i387 splitter): Ditto.
4971
4972 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
4973
4974         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
4975         LANG_HOOKS_SAFE_FROM_P.
4976         * expr.c (safe_from_p): Remove langhook call.
4977         * langhooks.h (lang_hooks): Remove safe_from_p.
4978         (lhd_safe_from_p): Remove prototype.
4979         * langhooks.c (lhd_safe_from_p): Remove.
4980
4981 2007-04-06  Jan Hubicka  <jh@suse.cz>
4982
4983         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
4984         functions.
4985
4986 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
4987
4988         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
4989         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
4990         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
4991         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
4992         alternative.
4993         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
4994         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
4995
4996 2007-04-05  Richard Henderson  <rth@redhat.com>
4997
4998         * config/alpha/alpha.c (print_operand) [+]: Remove.
4999         (alpha_end_function): Print nop if call at end of function.
5000         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
5001         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
5002         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
5003         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
5004         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
5005         the call pattern. Update peepholes to match.
5006
5007 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
5008
5009         * doc/extend.texi (Other Builtins): Add decimal float variants
5010         of signbit.
5011         * builtins.def: Ditto.
5012         * builtins.c (expand_builtin): Ditto.
5013
5014 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
5015             H.J. Lu  <hongjiu.lu@intel.com>
5016
5017         PR target/31478
5018         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
5019         of V8HImode when calling ix86_binary_operator_ok.
5020         (sse2_pmaddwd): Call ix86_binary_operator_ok.
5021         (sdot_prodv8hi): Operands 1 and 2 must be register.
5022
5023 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5024
5025         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5026         initialize align to silence bogus warning.
5027
5028 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5029
5030         PR middle-end/22156
5031         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5032         all_no_warning.
5033         (struct sra_walk_fns): Remove use_all parameter from use.
5034         (sra_hash_tree): Handle BIT_FIELD_REFs.
5035         (sra_elt_hash): Don't hash bitfld blocks.
5036         (sra_elt_eq): Skip them in parent compares as well.  Handle
5037         BIT_FIELD_REFs.
5038         (sra_walk_expr): Don't maintain or pass down use_all_p.
5039         (scan_use): Remove use_all parameter.
5040         (scalarize_use): Likewise.  Re-expand assignment to
5041         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5042         output, and re-scalarize after output.  Don't mark anything
5043         for no warning.
5044         (scalarize_ldst): Adjust.
5045         (scalarize_walk_gimple_modify_statement): Likewise.
5046         (build_element_name_1): Handle BIT_FIELD_REFs.
5047         (instantiate_element): Don't warn for any element whose parent
5048         is used as a whole.
5049         (instantiate_missing_elements_1): Return the sra_elt.
5050         (canon_type_for_field): New.
5051         (try_instantiate_multiple_fields): New.
5052         (instantiate_missing_elemnts): Use them.
5053         (mark_no_warning): Removed.
5054         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5055         (REPLDUP, sra_build_elt_assignment): New.
5056         (generate_copy_inout): Use them.
5057         (generate_element_copy): Likewise.  Handle bitfld differences.
5058         (generate_element_zero): Don't recurse for blocks.  Use
5059         sra_build_elt_assignment.
5060         (generate_one_element_int): Take elt instead of var.  Use
5061         sra_build_elt_assignment.
5062         (generate_element_init_1): Adjust.
5063         (scalarize_use, scalarize_copy): Use REPLDUP.
5064         (scalarize_ldst): Move assert before dereference.
5065         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5066
5067 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
5068
5069         * regmove.c: Fix unused variable warnings due to previous commit.
5070
5071 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
5072
5073         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
5074         (regmove_bb_head): Remove.
5075         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
5076         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
5077         problems with fixup_match_1.
5078         Don't initialize/free regmove_bb_head.
5079
5080         (reg_is_remote_constant_p): If an insn is in the same basic block
5081         but not before INSN, consider it remote, too.
5082
5083 2007-04-05  Anatoly Sokolov <aesok@post.ru>
5084
5085         PR target/25448
5086         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
5087         DECL_ASSEMBLER_NAME, not the DECL_NAME.
5088
5089 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
5090
5091         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
5092         (CONDITIONAL_REGISTER_USAGE): Likewise.
5093
5094 2007-04-04  Richard Henderson  <rth@redhat.com>
5095
5096         * config/alpha/lib1funcs.asm: Remove unused file.
5097
5098 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5099
5100         PR other/31356
5101         * opts.c (print_specific_help): Fix --help=<language>
5102         header line.
5103         (common_handle_option): Support --help=common.
5104
5105 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5106
5107         PR other/31353
5108         * gcc.c (main): Do not run the linker if
5109         print_subprocess_help indicates that it shouldn't be
5110         run.
5111
5112 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5113
5114         PR doc/31355
5115         * doc/invoke.texi (--help=): Document <languages> value, fix
5116         formatting in tables of values.
5117
5118 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
5119
5120         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
5121         dllimport attribute of virtual methods.
5122
5123 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
5124
5125         * config/score/crti.asm: Change _bss_start to __bss_start.
5126         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
5127         (OUTGOING_REG_PARM_STACK_SPACE) update.
5128         * config/score/score.opt: add options to make backend support
5129         score5, score5u, score7 and score7d.
5130         * config/score/score.md: Likewise.
5131         * config/score/misc.md: Likewise.
5132         * config/score/mac.md: Likewise.
5133         * doc/invoke.texi: Likewise.
5134         * doc/md.texi: update constraints define.
5135
5136 2007-04-03  Richard Henderson  <rth@redhat.com>
5137
5138         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
5139         an appropriate type, use the mode instead.
5140
5141 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
5142
5143         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
5144         Set the default --with-arch setting to mips2.
5145         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
5146         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
5147         (MULTILIB_OSDIRNAMES): Delete.
5148         (MULTILIB_DIRNAMES): Define.
5149         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
5150         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
5151         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
5152         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
5153         VXWORKS_OS_CPP_BUILTINS.
5154         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
5155         (MIPS_DEBUGGING_INFO): Undefine.
5156         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
5157
5158 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
5159
5160         PR middle-end/30704
5161         * fold-const.c (native_encode_real): Encode real.c provided longs
5162         as a series of 32-bit native integers.
5163         (native_interpret_real): Interpret buffer as a series of 32-bit
5164         native integers.
5165
5166 2007-04-03  Richard Guenther  <rguenther@suse.de>
5167
5168         * genpreds.c (write_insn_constraint_len): Write function
5169         optimized for CONSTRAINT_LEN implementation.
5170         (write_tm_preds_h): Output insn_constraint_len inline and
5171         use it for CONSTRAINT_LEN.
5172         (write_insn_preds_c): Don't output insn_constraint_len.
5173         * doc/md.texi (define_register_constraint): Document multi-letter
5174         constraints shall have the same length if they start with the same
5175         letter.
5176
5177 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
5178
5179         PR target/31175
5180         * config/i386/i386.md (isinf<mode>2): Expand only when
5181         TARGET_C99_FUNCTIONS is set.
5182
5183 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
5184
5185         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
5186         (x86_64-*-linux*): Ditto.
5187         * config/i386/i386.opt (mpc): New option.
5188         * config/i386/i386.c (overrride_options): Handle
5189         ix87_precision_string.
5190         * config/i386/crtprec.c: New file.
5191         * config/i386/t-crtpc: Ditto.
5192         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
5193         and -mpc80 options.
5194         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
5195         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
5196         crtprec32.o, crtprec64.o and crtprec80.o.
5197
5198         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
5199         and -mpc80 options.
5200         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
5201
5202 2007-04-02  Eric Christopher  <echristo@apple.com>
5203
5204         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
5205         limitations on darwin.
5206
5207 2007-04-02  Anatoly Sokolov <aesok@post.ru>
5208
5209         PR target/31137
5210         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
5211
5212 2007-04-02  Dave Korn  <dave.korn@artimi.com>
5213
5214         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
5215
5216 2007-04-02  Dave Korn  <dave.korn@artimi.com>
5217
5218         * libgcc2.h (exception_descriptor): Don't forward-declare.
5219         (__get_eh_table_language, __get_eh_table_version): Delete
5220         prototypes of long-dead functions.
5221
5222 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
5223
5224         * ebitmap.h: New file
5225         * ebitmap.c: New file
5226         * Makefile.in (ebitmap.o): New target.
5227
5228 2007-04-01  Jan Hubicka  <jh@suse.cz>
5229
5230         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
5231         before very first instruction.
5232
5233 2007-04-01  Jan Hubicka  <jh@suse.cz>
5234
5235         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
5236         waring on 64bit hosts.
5237         * bitmap.h: Fix typo in bitmap_head_def.
5238
5239 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
5240
5241         PR rtl-optimization/31391
5242         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
5243         into a DELETED_LABEL note, and the label is in an empty basic
5244         block, update BB_END as well as BB_HEAD.
5245
5246 2007-04-01  Richard Henderson  <rth@redhat.com>
5247
5248         PR tree-optimization/31169
5249         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
5250         to varying if the range is outside [0,  prec-1].
5251
5252 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
5253
5254         PR target/31388
5255         * config/mips/mips.md (load_const_gp): New insn.
5256         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
5257         the MIPS16 GP pseudo register if no_new_pseudos.
5258         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
5259
5260 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5261
5262         PR target/31364
5263         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
5264         secureplt.
5265         (call_value): Likewise.
5266
5267 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
5268             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5269
5270         PR 14737
5271         * doc/invoke.texi: (optimization options): Reword description
5272         of -ffast-math. Document its primary purpose.
5273
5274 2007-03-31  Richard Guenther  <rguenther@suse.de>
5275
5276         * omp-low.c (splay-tree.h): Include.
5277         (lookup_decl): Replace splay-tree usage by pointer-map.
5278         (maybe_lookup_decl): Likewise.
5279         (new_omp_context): Likewise.
5280         (delete_omp_context): Likewise.
5281         * gimplify.c (splay-tree.h): Include.
5282         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
5283         pointer-map.
5284         (remap_ssa_name): Likewise.
5285         (remap_decl): Likewise.
5286         (remap_type_1): Likewise.
5287         (remap_type): Likewise.
5288         (copy_body_r): Likewise.
5289         (expand_call_inline): Likewise.
5290         (clone_body): Likewise.
5291         (copy_tree_r): Likewise.
5292         (remap_save_expr): Likewise.
5293         (unsave_r): Likewise.
5294         (unsave_expr_now): Likewise.
5295         (tree_function_versioning): Likewise.
5296         (build_duplicate_type): Likewise.
5297         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
5298         (struct copy_body_data): Replace splay-tree by pointer-map.
5299         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
5300         not $(SPLAY_TREE_H).
5301         (gimplify.o): Depend on $(SPLAY_TREE_H).
5302         (omp-low.p): Likewise.
5303
5304 2007-03-31  Anatoly Sokolov <aesok@post.ru>
5305
5306         * config/avr/predicates.md (even_register_operand,
5307         odd_register_operand): New predicates.
5308         * config/avr/avr.md (movw peephole2): New.
5309         (movw_r peephole2): New.
5310
5311 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
5312
5313         * tree.h (get_signed_or_unsigned_type): New.
5314         * fold-const.c (operand_equal_for_comparison_p): Use
5315         get_signed_or_unsigned_type instead of
5316         lang_hooks.types.signed_or_unsigned_type.
5317         * expr.c (store_expr): Ditto.
5318         * langhooks.c (get_signed_or_unsigned_type): New.
5319         (lhd_signed_or_unsigned_type): New.
5320         * langhooks.h (lhd_signed_or_unsigned_type): New.
5321         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
5322
5323 2007-03-30  Richard Henderson  <rth@redhat.com>
5324
5325         * tree-ssa-loop-ivopts.c: Include target.h.
5326         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
5327         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
5328         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
5329         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
5330
5331 2007-03-30  Richard Henderson  <rth@redhat.com>
5332             Kai Tietz  <kai.tietz@onevision.com>
5333
5334         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
5335         default for 64-bit.
5336         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
5337         (TARGET_64BIT_MS_ABI): New.
5338         (DBX_REGISTER_NUMBER): Handle 64-bit.
5339         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
5340         (LONG_TYPE_SIZE): Force to 32.
5341         (REG_PARM_STACK_SPACE): New.
5342         (OUTGOING_REG_PARM_STACK_SPACE): New.
5343         (REGPARM_MAX, SSE_REGPARM_MAX): New.
5344         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
5345         (STACK_BOUNDARY): Use 128 for 64-bit.
5346         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
5347         Add 64-bit implementation.
5348         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
5349         argument unused.
5350         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
5351         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
5352         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
5353         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
5354         (ix86_handle_cconv_attribute): Don't warn when ignoring if
5355         TARGET_64BIT_MS_ABI.
5356         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
5357         (ix86_pass_by_reference): Likewise.
5358         (ix86_function_value_regno_p): Likewise.
5359         (ix86_build_builtin_va_list): Likewise.
5360         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
5361         (function_arg_advance_ms_64): New.
5362         (function_arg_advance): Call it.
5363         (function_arg_ms_64): New.
5364         (function_arg): Call it.
5365         (function_value_ms_64): New.
5366         (ix86_function_value_1): Call it.
5367         (return_in_memory_ms_64): New.
5368         (ix86_return_in_memory): Call it.
5369         (setup_incoming_varargs_ms_64): New.
5370         (ix86_setup_incoming_varargs): Call it.
5371         (ix86_expand_prologue): Handle 64-bit stack probing.
5372         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
5373         (output_pic_addr_const): Likewise.
5374         (x86_this_parameter): Likewise.
5375         (x86_output_mi_thunk): Likewise.
5376         (x86_function_profiler): Likewise.
5377         (TARGET_STRICT_ARGUMENT_NAMING): New.
5378         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
5379         (TARGET_64BIT_MS_ABI): New.
5380         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
5381         * config/i386/i386.md (allocate_stack_worker): Remove.
5382         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
5383         describe the clobber of eax without a match_scratch.
5384         (allocate_stack_worker_postreload): Remove.
5385         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
5386         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
5387         (allocate_stack_worker_rex64_postreload): Remove.
5388         (allocate_stack): Handle 64-bit.
5389         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
5390         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
5391         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
5392         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
5393         (STANDARD_STARTFILE_PREFIX_1): Likewise.
5394         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
5395         * config.build (x86_64-*-mingw*): New host.
5396         * config.host (x86_64-*-mingw*): New host.
5397         * config.gcc (x86_64-*-mingw*): New target.
5398         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
5399
5400 2007-03-30  Richard Henderson  <rth@redhat.com>
5401             Kai Tietz  <kai.tietz@onevision.com>
5402
5403         * c-pragma.c (struct def_pragma_macro_value): New.
5404         (struct def_pragma_macro): New.
5405         (pushed_macro_table): New.
5406         (dpm_hash, dpm_eq): New.
5407         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
5408         (init_pragma): Install them.
5409         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
5410
5411 2007-03-30  Anatoly Sokolov <aesok@post.ru>
5412
5413         * config/avr/avr.c (avr_override_options): Clear
5414         'flag_delete_null_pointer_checks'.
5415
5416 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
5417
5418         PR c++/26099
5419         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
5420         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
5421         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
5422         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
5423         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
5424         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
5425         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
5426         C++ extensions.
5427         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
5428
5429 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
5430
5431         * regmove.c: Move all of pass_stack_adjustments from here...
5432         * combine-stack-adj.c: ...to this new file.
5433         * Makefile.in: Add rules for combine-stack-adj.o.
5434
5435 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
5436
5437         PR tree-optimization/31383
5438         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
5439         to have the same length.
5440
5441 2007-03-30  Jan Hubicka  <jh@suse.cz>
5442
5443         PR middle-end/30700
5444         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
5445         availablility; add more sanity checking; ask varpool only about
5446         VAR_DECL.
5447
5448 2007-03-29  Richard Henderson  <rth@redhat.com>
5449
5450         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
5451         to decide, but __SIZEOF_LONG_LONG__.
5452
5453 2007-03-29  Richard Henderson  <rth@redhat.com>
5454
5455         * emutls.c (struct __emutls_array): New.
5456         (emutls_destroy): Use it instead of casting element 0 from void*.
5457         (__emutls_get_address): Likewise.
5458
5459 2007-03-29  Richard Henderson  <rth@redhat.com>
5460
5461         * varasm.c (initializer_constant_valid_p): Don't deny
5462         DECL_DLLIMPORT_P on functions.
5463
5464         * config/i386/cygming.h: Remove function declarations.
5465         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
5466         (ASM_OUTPUT_LABELREF): Remove.
5467         (COMMON_ASM_OP): Remove.
5468         (ASM_OUTPUT_COMMON): Remove.
5469         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
5470         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
5471         (ASM_DECLARE_FUNCTION_NAME): Likewise.
5472         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
5473         Rename from TARGET_ENCODE_SECTION_INFO.
5474         * config/i386/netware.h: Likewise.
5475         * config/i386/i386-protos.h: Update.
5476         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
5477         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
5478         (legitimate_constant_p): Reject dllimports.
5479         (dllimport_map, get_dllimport_decl): New.
5480         (legitimize_dllimport_symbol): New.
5481         (legitimize_address, ix86_expand_move): Use it.
5482         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
5483         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
5484         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
5485         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
5486         * config/i386/predicates.md (constant_call_address_operand): Only
5487         accept symbols; reject dllimport_p symbols.
5488         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
5489         i386_pe_maybe_record_exported_symbol.
5490         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
5491         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
5492         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
5493         trust the setting of DECL_DLLIMPORT_P.
5494         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
5495         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
5496         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
5497         tidy the argument scanning loop.
5498         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
5499         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
5500         (i386_pe_strip_name_encoding): Remove.
5501         (i386_pe_binds_local_p): New.
5502         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
5503         (i386_pe_output_labelref): Remove.
5504         (i386_pe_asm_output_aligned_decl_common): New.
5505         (i386_pe_maybe_record_exported_symbol): Rename from
5506         i386_pe_record_exported_symbol; check for dllexported symbols.
5507
5508 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
5509
5510         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
5511         add comment explaining why vsnprintf cannot be used.
5512
5513 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
5514
5515         PR tree-optimization/30666
5516         * tree.c (build_complex_type): When creating type names for DWARF2
5517         debug info, create TYPE_DECLs for TYPE_NAME instead of
5518         IDENTIFIER_NODEs.
5519         (build_common_tree_nodes_2): Use build_complex_type when building
5520         predefined complex types, to preserve canonical types.
5521
5522 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
5523
5524         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
5525         (noce_get_alt_condition): Look at it to determine whether to
5526         reverse the condition or not.
5527         (noce_get_condition): Substitute the truth for lies.
5528         (noce_find_if_block): Set the then_else_reversed field.
5529
5530 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
5531
5532         * config/fr30/fr30.md (movdi): Do not accept immediates as the
5533         destination of this insn.
5534         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
5535         than calling gen_rtx_SET directly.  Use r0 to hold the value of
5536         'address + 4' rather than a stack based temporary which can be
5537         mis-optimized away.
5538
5539 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5540
5541         * config/s390/s390.c (s390_secondary_input_reload_class,
5542         s390_secondary_output_reload_class): Functions removed.
5543         (s390_secondary_reload): New function.
5544         (TARGET_SECONDARY_RELOAD): Target macro defined.
5545         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
5546         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
5547         * config/s390/s390.md ("reload_outti", "reload_outdi",
5548         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
5549         "reload_out<mode>"): Expanders removed.
5550         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
5551         "reload<mode>_nonoffmem_out"): Expanders added.
5552
5553 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5554
5555         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
5556         SRC->DEST replacement failed anyway.
5557
5558 2007-03-28  Mike Stump  <mrs@apple.com>
5559
5560         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
5561         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
5562         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
5563
5564 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5565
5566         * config.gcc: Accept barcelona as a variant of amdfam10.
5567         * config/i386/i386.c (override_options): Likewise.
5568         * doc/invoke.texi: Likewise.
5569
5570 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
5571
5572         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
5573         offsets for BIT_FIELD_REF and COMPONENT_REF.
5574
5575 2007-03-28  Richard Guenther  <rguenther@suse.de>
5576
5577         * tree.c (is_global_var): Move ...
5578         * tree-flow-inline.h (is_global_var): ... here.
5579         * tree.h (is_global_var): Remove declaration.
5580
5581 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
5582
5583         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
5584         option.
5585         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
5586         * config/i386/i386.c (ix86_tune_features): Initialize new
5587         tuning option.
5588         * config/i386/predicates.md (promotable_binary_operator): Use
5589         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
5590
5591 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
5592
5593         PR target/31380
5594         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
5595
5596 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
5597
5598         * config/fr30/fr30.md (movsi_internal): Change destination
5599         constraint from m to V and add m to the end.
5600
5601 2007-03-28  Christian Bruel  <christian.bruel@st.com>
5602
5603         * config/sh/sh.md (movsi_i): Fix type attribute.
5604
5605 2007-03-28  Christian Bruel  <christian.bruel@st.com>
5606
5607         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
5608         (movsf_ie): Likewise.
5609
5610 2007-03-28  Christian Bruel  <christian.bruel@st.com>
5611
5612         * config.gcc: Add sh4-300 to multilib.
5613         * config/sh/t-mlib-sh4-300: New file.
5614
5615 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
5616
5617         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
5618         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
5619         fix_trunc<mode>di2.
5620         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
5621         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
5622         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
5623         "fixuns_trunctddi2"): Whitespace fix.
5624
5625 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
5626
5627         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
5628         the definition of struct sh_args.
5629         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
5630         CALL_COOKIE_INT_REG_GET): Likewise.
5631
5632 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
5633
5634         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
5635         transformations are applied successfully.
5636
5637 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
5638
5639         * tree.c (tree_contains_struct): Permit 512 tree codes.
5640         * tree.h (tree_contains_struct): Ditto.
5641         (MAX_TREE_CODES): Ditto.
5642         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
5643         SPARE member to store remaining padding bits.
5644
5645 2007-03-27  Anatoly Sokolov <aesok@post.ru>
5646
5647         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
5648         architecture.
5649
5650 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
5651
5652         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
5653         * configure: Regenerate.
5654
5655         * configure: Regenerate using the correct version of autoconf.
5656
5657 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
5658
5659         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
5660         pointer regs.
5661         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
5662         regs to "__SP_L__" and "__SP_H__".
5663
5664 2007-03-27  Richard Guenther  <rguenther@suse.de>
5665
5666         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
5667         computations with it with a HOST_WIDE_INT variable.
5668
5669 2007-03-26  Mike Stump  <mrs@apple.com>
5670
5671         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
5672         objective-c-header, objective-c++-header and objc++-cpp-output
5673         support.
5674         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
5675
5676 2007-03-26  Richard Henderson  <rth@redhat.com>
5677
5678         PR target/31361
5679         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
5680         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
5681         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
5682         IX86_BUILTIN_PSRLQ128): New.
5683         (ix86_init_mmx_sse_builtins): Add them.
5684         (ix86_expand_builtin): Expand them.
5685         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
5686         operand 2 be TImode.
5687         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
5688         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
5689         _mm_srli_epi64): Mark __B const.
5690         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
5691         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
5692         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
5693         new two-vector shift builtins.
5694
5695 2007-03-26  Ian Lance Taylor  <iant@google.com>
5696
5697         PR tree-optimization/31345
5698         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
5699         [+INF, +INF(OVF)] into VARYING.
5700
5701 2007-03-26  Zack Weinberg  <zackw@panix.com>
5702
5703         * gengtype-parse.c: New file.
5704         * gengtype-yacc.y: Delete.
5705         * gengtype-lex.l: Don't include gengtype-yacc.h.
5706         Define YY_DECL and yyterminate appropriately for recursive
5707         descent parser.  yylval is now a string out-parameter to yylex.
5708         (HWS, EOID): New shorthand.
5709         (IWORD): Add a couple more types.
5710         (yylex): Add a setup stanza.  Remove the complex rules for
5711         detecting GTY'ed types and typedefs; replace with simple
5712         keyword detectors.  Adjust everything for the changed
5713         definition of yylval.  Ignore all pp-directives, not just #define.
5714         (yyerror): Delete.
5715         (parse_file): Rename yybegin; do not call yyparse.
5716         (yyend): New.
5717         * gengtype.c (xasprintf): Export again.
5718         (this_file): New.  Use everywhere __FILE__ was being used.
5719         (get_lang_bitmap): Special case types defined in gengtype.c.
5720         (do_typedef, new_structure): Suppress definition of certain types.
5721         (new_structure): Improve diagnostics of duplicate definitions.
5722         Make sure location_s is associated with input.h.
5723         (nreverse_pairs, define_location_structures): New functions.
5724         (main): Improve tagging of kludge types.  Remove old kludges
5725         for input.h types; use define_location_structures.
5726         * gengtype.h: Update prototypes.  Define token codes here.
5727         * Makefile.in: Remove all references to gengtype-yacc.
5728         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
5729         and gengtype.
5730         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
5731         add GTY((skip)) to the field that's only conditionally there.
5732         * doc/install.texi: Document that Bison is no longer required
5733         unless building treelang.
5734
5735         * gengtype.c: Don't include gtyp-gen.h.
5736         (srcdir): Declare here.
5737         (base_files, lang_dir_names): Allocate dynamically.
5738         (gt_files, num_gt_files, num_lang_dirs): New globals.
5739         (measure_input_list, read_input_line, read_input_list)
5740         (set_lang_bitmap): New functions.
5741         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
5742         simplify, relying on read_input_list to set up the bitmaps.
5743         (main): Arguments are no longer unused.  Check for correct number
5744         of command line arguments, set srcdir and srcdir_len, then call
5745         read_input_list, before doing anything else.  No need to worry
5746         about duplicates in main loop.
5747         * configure.ac: Simplify the calculation of all_gtfiles.
5748         Put language tags in there.  Don't set or substitute
5749         all_gtfiles_files_langs or all_gtfiles_files_frags.
5750         * Makefile.in: Revamp the way gengtype is invoked, now that it
5751         takes a file on its command line with a much simpler format.
5752         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
5753         (GTFILES): Remove duplicates and C source files.
5754         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
5755         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
5756         * configure: Regenerate.
5757
5758         * gengtype.h: Remove all type definitions to gengtype.c; leave
5759         only definitions of options_p, type_p, and pair_p as opaque
5760         pointers.  Update prototypes.
5761         * gengtype.c: Many type definitions moved here from gengtype.h.
5762         Consolidate type definitions at the top of the file.
5763         (xvasprintf): Delete.
5764         (xasprintf): Make static.
5765         (create_nested_pointer_option): Add 'next' parameter.
5766         (create_field_all, create_field_at): New functions.
5767         (create_field): Now a thin wrapper around create_field_all.
5768         (create_optional_field): Rename create_optional_field_ and add
5769         line argument.  Original name is now a macro which supplies
5770         __LINE__.
5771         (oprintf): Use vsnprintf directly.
5772         (close_output_files): Use fatal rather than perror/exit.
5773         (note_def_vec, note_def_vec_alloc): Use create_field_at.
5774         (main): Set progname.  Don't use exit.
5775         * gengtype-yacc.y (struct_fields): Use create_field_at.
5776         (option, optionseqopt): Delete.
5777         (optionseq): Consolidate productions from option here so we
5778         can use the first argument to create_option.
5779
5780         * gengtype-lex.l: Distinguish unions from structures in the
5781         token type.  Don't call find_structure; return the tag as a string.
5782         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
5783         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
5784         Reorganize typedef_struct production accordingly.
5785         Use create_nested_ptr_option.
5786         * gengtype.c (create_nested_ptr_option): New function.
5787         * gengtype.h: Declare it.
5788
5789         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
5790         (string_type): Don't declare.
5791         (do_scalar_typedef): Declare.
5792         (create_scalar_type): Update prototype.
5793         * gengtype.c (string_type): Make static.
5794         (scalar_nonchar, scalar_char): New.
5795         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
5796         (resolve_typedef): Use scalar_nonchar for error recovery.
5797         (create_scalar_type): Remove name_len field.  Return scalar_char
5798         or scalar_nonchar as appropriate.
5799         (adjust_field_type): Look at scalar_is_char boolean to decide whether
5800         to use string_type.
5801         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
5802         whenever possible.
5803         (main): Initialize scalar_char and scalar_nonchar before calling
5804         gen_rtx_next.
5805         * gengtype-lex.l: Adjust for removal of second argument to
5806         create_scalar_type.  Use yylval.s instead of yylval.t when
5807         returning SCALAR.
5808         * gengtype-yacc.y: Type of SCALAR is string.  Call
5809         create_scalar_type from type:SCALAR rule.  Adjust for removal of
5810         second argument to create_scalar_type.
5811
5812         * vec.h: Remove all #if IN_GENGTYPE blocks.
5813         Add comment saying that changes may require adjustments to gengtype.
5814         * gengtype.c: Don't include coretypes.h or tm.h.
5815         Add comment to inclusion of errors.h.
5816         (note_def_vec, note_def_vec_alloc): New functions.
5817         * gengtype.h: Declare new functions.
5818         * gengtype-lex.l: Don't include coretypes.h.
5819         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
5820         Delete.
5821         (update_lineno): Remove unnecessary prototype.
5822         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
5823         (VEC rule): Just return VEC_TOKEN.
5824         * gengtype-yacc.y (VEC_TOKEN): New token type.
5825         (type): Add a production for VEC(a,b).
5826         * Makefile.in: Update dependencies.
5827
5828         * gengtype-lex.l: Remove rules for parsing pointer-to-function
5829         typedefs that use the old PARAMS macro.
5830
5831         * gengtype-lex.l: Remove all rules and states relating to yacc
5832         input files.
5833         * gengtype-yacc.y: Similarly.
5834         * gengtype.c (note_yacc_type): Delete function.
5835         * gengtype.h: Update prototypes.
5836
5837 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
5838
5839         * tree-pretty-print.c (dump_generic_node): Report precision of
5840         unnamed integer types.
5841
5842 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
5843
5844         * ifcvt.c (noce_try_store_flag_constants): Don't check
5845         no_new_pseudos here.
5846         (noce_try_store_flag_constants): Don't check no_new_pseudos.
5847         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
5848         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
5849         noce_try_sign_mask): Likewise.
5850         (if_convert): Check no_new_pseudos here.
5851
5852         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
5853         Remove prototypes.
5854         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
5855         (noce_get_condition): Handle new then_else_reversed argument.
5856         (noce_init_if_info): Remove, fold into noce_find_if_block.
5857         (noce_process_if_block): Take a struct noce_if_info as the
5858         argument.  Don't set up one based on ce_if_info.  Update pointer
5859         references accordingly.
5860         (cond_move_process_if_block): Likewise.
5861         (process_if_block): Removed.
5862         (find_if_block): Removed.  Move functionality two new functions,
5863         noce_find_if_block and cond_exec_find_if_block.
5864         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
5865         blocks and the symmetric IF-ELSE-JOIN case.
5866         (cond_exec_find_if_block): Also new function mostly based on old
5867         find_if_block and process_if_block.
5868         (find_if_header): Replace find_if_block call with separately
5869         guarded calls to noce_find_if_block and cond_exec_find_if_block.
5870         (find_cond_trap): Update noce_get_condition call.
5871         (dead_or_predicable): Likewise.
5872
5873 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
5874
5875         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
5876         Remove.
5877         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
5878         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
5879         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
5880         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
5881         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
5882         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
5883         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
5884         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
5885         __builtin_ia32_psrad128 builtins.
5886
5887 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
5888
5889         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
5890         * config/i386/constraints.md
5891         (define_constraint "I"): Use IN_RANGE macro.
5892         (define_constraint "J"): Ditto.
5893         (define_constraint "K"): Ditto.
5894         (define_constraint "M"): Ditto.
5895         (define_constraint "N"): Ditto.
5896         (define_constraint "O"): Ditto.
5897         * config/i386/predicates.md
5898         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
5899         (define_predicate "const_0_to_3_operand"): Ditto.
5900         (define_predicate "const_0_to_7_operand"): Ditto.
5901         (define_predicate "const_0_to_15_operand"): Ditto.
5902         (define_predicate "const_0_to_63_operand"): Ditto.
5903         (define_predicate "const_0_to_255_operand"): Ditto.
5904         (define_predicate "const_1_to_31_operand"): Ditto.
5905         (define_predicate "const_2_to_3_operand"): Ditto.
5906         (define_predicate "const_4_to_7_operand"): Ditto.
5907
5908 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
5909
5910         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
5911         in SImode for save_world.
5912         * config/rs6000/altivec.md (save_world, restore_world): Convert to
5913         LR hard reg.
5914
5915 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
5916
5917         PR tree-optimization/30784
5918         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
5919         BIT_FIELD_REF.
5920
5921 2007-03-25  Revital Eres  <eres@il.ibm.com>
5922
5923         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
5924           Fold movement_possibility function into it.
5925
5926 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
5927
5928         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
5929         (load_macho_picbase_{si,di}): Convert to LR hard reg.
5930         (call_indirect_nonlocal_darwin64): Same.
5931         (call_nonlocal_darwin64): Same.
5932         (call_value_indirect_nonlocal_darwin64): Same.
5933         (call_value_nonlocal_darwin64): Same.
5934         (sibcall_nonlocal_darwin64): Same.
5935         (sibcall_value_nonlocal_darwin64): Same.
5936         (sibcall_symbolic_64): Same.
5937         (sibcall_value_symbolic_64): Same.
5938         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
5939         LR pseudo.
5940         (rs6000_emit_load_toc_table): Same.
5941         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
5942         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
5943         (mull_call): Same.
5944         (divss_call): Same.
5945         (divus_call): Same.
5946         (quoss_call): Same.
5947         (quous_call): Same.
5948         (load_toc_v4_pic_si): Same
5949         (load_toc_v4_PIC_1): Same.
5950         (load_toc_v4_PIC_1b): Same.
5951         (call_indirect_aix{32,64}): Same.
5952         (call_value_indirect_aix{32,64}): Same.
5953         (call): Same.
5954         (call_value): Same.
5955         (call_local{32,64}): Same.
5956         (call_value_local{32,64}): Same.
5957         (call_indirect_nonlocal_aix{32,64}): Same.
5958         (call_nonlocal_aix{32,64}): Same.
5959         (call_value_indirect_nonlocal_aix{32,64}): Same.
5960         (call_value_nonlocal_aix{32,64}): Same.
5961         (call_indirect_nonlocal_sysv<mode>): Same.
5962         (call_nonlocal_sysv<mode>): Same.
5963         (call_value_indirect_nonlocal_sysv<mode>): Same.
5964         (call_value_nonlocal_sysv<mode>): Same.
5965         (sibcall): Same.
5966         (sibcall_local{32,64}): Same.
5967         (sibcall_value_local{32,64}): Same.
5968         (sibcall_nonlocal_aix{32,64}): Same.
5969         (sibcall_value_nonlocal_aix{32,64}): Same.
5970         (sibcall_nonlocal_sysv<mode>): Same.
5971         (sibcall_value): Same.
5972         (sibcall_value_nonlocal_sysv<mode>): Same.
5973
5974 2007-03-24  Paul Brook  <paul@codesourcery.com>
5975
5976         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
5977         * config/arm/linux-eabi.h: Remove legacy syscall hack.
5978
5979 2007-03-24  Richard Henderson  <rth@redhat.com>
5980
5981         * config/ia64/constraints.md: New file.
5982         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
5983         satisfies_constraint_?.
5984         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
5985         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
5986         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
5987         ia64_output_mi_thunk): Likewise.
5988         (ia64_const_ok_for_letter_p): Remove.
5989         (ia64_const_double_ok_for_letter_p): Remove.
5990         (ia64_extra_constraint): Remove.
5991         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
5992         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
5993         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
5994         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
5995         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
5996         EXTRA_MEMORY_CONSTRAINT): Remove.
5997         * config/ia64/ia64.md: Include constriants.md.  Replace
5998         CONST_OK_FOR_? with satisfies_constraint_?.
5999
6000 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
6001             H.J. Lu  <hongjiu.lu@intel.com>
6002
6003         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
6004         DPD or BID name.
6005         (name macros): Use DPD_BID_NAME to convert names properly.
6006
6007         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
6008         decimal floating point format.
6009         (init_floating_libfuncs): Change decimal functions so that they
6010         have a "bid_" prefix if the decimal system uses the BID format,
6011         and "dpd_" prefix if the decimal system uses the DPD format.
6012         (init_interclass_conv_libfuncs): Ditto.
6013         (init_intraclass_conv_libfuncs): Ditto.
6014
6015         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
6016         using the BID format.
6017
6018         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
6019         whether we are using the BID decimal format.
6020         * configure: Regenerate.
6021
6022         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
6023         the compiler has decimal floating point enabled.  Define
6024         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
6025         instead of DPD.
6026
6027         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
6028         using the BID format.
6029
6030         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
6031         whether we are using the BID decimal format.
6032         * configure: Regenerate.
6033
6034         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
6035         the compiler has decimal floating point enabled.  Define
6036         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
6037         instead of DPD.
6038
6039         * doc/install.texi (--enable-decimal-float): Document BID and DPD
6040         options, and that it is enabled for i386/x86_64 systems.
6041
6042         * Makefile.in (enable_decimal_float): New.
6043         (DECNUMFMT): New.
6044         (DECNUMINC): Add  -I$(DECNUMFMT).
6045         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
6046         to $(DECNUMFMT) from $(DECNUM).
6047
6048         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
6049         Substitute enable_decimal_float.
6050         * configure: Regenerated.
6051
6052         PR other/30529
6053         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
6054         unsigned long.
6055
6056         * configure.ac: Enable decimal float for x86_64-*-linux*.
6057         * configure: Regenerated.
6058
6059         PR other/30530
6060         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
6061         decimal128ClearSign to flip and clear the sign bit in decimal128.
6062         (decimal_real_maxval): Set decimal128SetSign to set the sign
6063         bit in decimal128.
6064
6065 2007-03-23  Ian Lance Taylor  <iant@google.com>
6066
6067         * fold-const.c (fold_binary): Correct warning for X - c >= X.
6068
6069 2007-03-23  Ian Lance Taylor  <iant@google.com>
6070
6071         * tree-dump.c (dump_files): Correct comment.
6072
6073 2007-03-23  Ian Lance Taylor  <iant@google.com>
6074
6075         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
6076
6077 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
6078
6079         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
6080         in cfglayout mode.  Don't go into and out of cfglayout mode.
6081         Link the blocks in the order of the constructed traces.
6082         (rest_of_handle_tracer): Adjust call to tracer.
6083         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
6084         Don't go into cfglayout mode.
6085         (rtl_loop_done): Don't go out of cfglayout mode.
6086         * cfglayout.c (relink_block_chain): New function, split out from...
6087         (fixup_reorder_chain): ...here.  Remove redundant checking.
6088         (cfg_layout_finalize): Don't clear the header, footer, and aux
6089         fields here, move the code to do so to relink_block_chain.  Likewise
6090         for free_original_copy_tables.
6091         * rtl.h (tracer): Update prototype.
6092         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
6093         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
6094         mode.  Use relink_block_chain to serialize the CFG according to the
6095         new basic block order.  Move targetm.cannot_modify_jumps_p check from
6096         here...
6097         (gate_handle_reorder_blocks): ...to here.
6098         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
6099         from here...
6100         (gate_duplicate_computed_gotos): ...to here.
6101         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
6102         something always changes when going into and out of cfglayout mode.
6103         Perform an expensive cfg cleanup while going into cfglayout mode.
6104         Always update liveness information on HAVE_conditional_execution
6105         targets.  Reserialize the basic blocks and go out of cfglayout mode.
6106         * reg-stack.c: Include cfglayout.h.
6107         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
6108         the call to reorder_basic_blocks.
6109         * basic-block.h (reorder_basic_blocks): Update prototype.
6110         (relink_block_chain): New prototype.
6111         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
6112
6113 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
6114
6115         * config/mips/mips.md (type, hazard, *movdi_32bit,
6116         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
6117         *movhi_internal, *movqi_internal, *movsf_hardfloat,
6118         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
6119         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
6120         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
6121         applicable.
6122         (movcc): Change first xfer to multi.
6123         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
6124         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
6125         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
6126         config/mips/generic.md: Change reservations using "xfer" to use
6127         "mfc,mtc".
6128         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
6129         using match_operand.
6130         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
6131         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
6132         examining mode.
6133         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
6134
6135 2007-03-22  Richard Henderson  <rth@redhat.com>
6136
6137         * config/i386/i386.c: Remove unnecessary function declarations.
6138         Move targetm definition, and all related macros, to the end of
6139         the file.  Resort some functions to put definitions before uses.
6140         (ix86_attribute_table): Make static.  Move to end of file.
6141         (ix86_gimplify_va_arg): Make static.
6142
6143 2007-03-22  Richard Henderson  <rth@redhat.com>
6144
6145         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
6146         don't increase local_regparm with force_align_arg_pointer check.
6147         (ix86_function_sseregparm): Assert 32-bit.
6148         (type_has_variadic_args_p): New.
6149         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
6150         type_has_variadic_args_p.
6151         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
6152         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
6153         use memset instead.  Do maybe_vaarg check first; skip attribute
6154         tests if true; skip attribute tests for 64-bit.
6155         (construct_container): Remove TARGET_DEBUG_ARG.
6156         (function_arg_advance_32, function_arg_advance_64): Split out ...
6157         (function_arg_advance): ... from here.
6158         (function_arg_32, function_arg_64): Split out ...
6159         (function_arg): ... from here.
6160         (ix86_pass_by_reference): Tidy.
6161         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
6162         (function_value_32): New, from parts of ix86_function_value
6163         and ix86_value_regno.
6164         (function_value_64): New, from parts of ix86_function_value
6165         and ix86_libcall_value.
6166         (ix86_function_value_1): New.
6167         (ix86_function_value, ix86_libcall_value): Use it.
6168         (return_in_memory_32, return_in_memory_64): Split out ...
6169         (ix86_return_in_memory): ... from here.
6170         (ix86_struct_value_rtx): Skip for 64-bit.
6171         (ix86_libcall_value, ix86_value_regno): Remove.
6172         (setup_incoming_varargs_64): Split out ...
6173         (ix86_setup_incoming_varargs): ... from here.
6174         (ix86_va_start): Remove TARGET_DEBUG_ARG.
6175         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
6176         * config/i386/i386-protos.h (ix86_function_value): Remove.
6177         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
6178
6179 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6180
6181         PR other/23572
6182         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
6183         infinities not supported, otherwise emit warning if -Woverflow. On
6184         underflow, emit warning if -Woverflow.
6185         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
6186         and 0 otherwise.
6187         * real.h (real_from_string): Update declaration
6188
6189 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
6190             Richard Henderson  <rth@redhat.com>
6191
6192         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
6193         * calls.c (compute_argument_block_size, expand_call,
6194         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
6195         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
6196         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
6197         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
6198         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
6199         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
6200         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
6201         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
6202         Set to 1.
6203
6204 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
6205
6206         * c-incpath.c (add_sysroot_to_chain): New.
6207         (merge_include_chains): Add sysroot argument.  Call
6208         add_sysroot_to_chain if sysrooted.
6209         (register_include_chains): Update call to merge_include_chains.
6210         * doc/cppopts.texi: Document use of '=' in include directory
6211         arguments.
6212
6213 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
6214
6215         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
6216         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
6217         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
6218         insn pattern using X87MODEF12 mode macro.
6219
6220 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
6221
6222         * regmove.c (regmove_optimize): Use reg_mentioned_p
6223         instead of reg_overlap_mentioned_p for DST.
6224
6225 2007-03-21  Mike Stump  <mrs@apple.com>
6226
6227         * c.opt: Fixup for Objective-C/C++.
6228
6229 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
6230
6231         * explow.c (convert_memory_address): Fold memory reference when
6232         POINTERS_EXTEND_UNSIGNED < 0
6233
6234 2007-03-21  Richard Henderson  <rth@redhat.com>
6235
6236         PR target/31245
6237         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
6238         * config/i386/mmintrin.h (__m64): Likewise.
6239         * config/i386/xmmintrin.h (__m128): Likewise.
6240
6241 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6242
6243         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
6244         (VXWORKS_OS_CPP_BUILTINS): Define.
6245         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
6246         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
6247
6248 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6249
6250         * rtl.h (constant_pool_reference_p): Delete.
6251         (find_constant_src): Declare.
6252         * rtlanal.c (find_constant_src): New function.
6253         * simplify-rtx.c (constant_pool_reference_p): Delete.
6254         * config/i386/i386.md: Use find_constant_src instead of
6255         constant_pool_reference_p/avoid_constant_pool_reference pairs.
6256
6257 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6258
6259         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
6260         * c-cppbuiltin.c (c_cpp_builtins): Define them.
6261
6262 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
6263
6264         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
6265         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
6266         (arm_elf_asm_constructor): Use it.
6267         (arm_elf_asm_destructor): New function.
6268
6269 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
6270
6271         * jump.c (mark_jump_label): Treat SEQUENCE specially.
6272
6273 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
6274
6275         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
6276
6277 2007-03-19  Andrew Haley  <aph@redhat.com>
6278
6279         PR tree-optimization/31264
6280         * tree-vrp.c (register_edge_assert_for_1): Don't look though
6281         VIEW_CONVERT_EXPRs.
6282
6283 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
6284
6285         PR rtl-optimization/30907
6286         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
6287         (fwprop_init): Always call loop_optimizer_initialize.
6288         (fwprop_done): Always call loop_optimizer_finalize.
6289         (fwprop): We always have loop info now.
6290         (gate_fwprop_addr): Remove.
6291         (pass_fwprop_addr): Use gate_fwprop as gate.
6292
6293         PR rtl-optimization/30841
6294         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
6295         df_chain_alloc): Call df_reorganize_refs unconditionally.
6296         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
6297         refs_organized to refs_organized_size.
6298         (df_ref_create_structure): Use refs_organized_size instead of
6299         bitmap_size if refs had been organized, and keep refs_organized_size
6300         up-to-date.
6301         * df.h (struct df_ref_info): Change refs_organized to
6302         refs_organized_size.
6303         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
6304         bitmap_size.
6305
6306 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
6307
6308         * except.c (output_function_exception_table): Do not reference the
6309         EH personality routine for functions that do not require an
6310         exception table.
6311
6312 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
6313
6314         PR c/30762
6315         * c-typeck.c (convert_for_assignment): Call comptypes for
6316         RECORD_TYPE or UNION_TYPE.
6317
6318         PR inline-asm/30505
6319         * reload1.c (reload): Do invalid ASM checking after
6320         cleanup_subreg_operands.
6321
6322 2007-03-19  Jeff Law  <law@redhat.com>
6323
6324         * tree-cfg.c (find_taken_edge): Tighten conditions for
6325         optimizing computed gotos.
6326
6327 2007-03-19  Michael Matz  <matz@suse.de>
6328
6329         * builtins.c (expand_builtin_sync_operation,
6330         expand_builtin_compare_and_swap,
6331         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
6332         correctly.
6333
6334         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
6335         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
6336         for operand 3.
6337
6338 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6339
6340         * doc/tm.texi: Add brackets around the return type of
6341         TARGET_SECONDARY_RELOAD.
6342
6343 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6344         Richard Guenther  <rguenther@suse.de>
6345
6346         PR tree-optimization/31254
6347         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
6348         Use handled_component_p () where appropriate.  Continue
6349         propagating into the rhs if we propagated into an INDIRECT_REF
6350         on the lhs.
6351
6352 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6353
6354         * config/s390/s390.md (op_type attribute): RRR instruction type added.
6355         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
6356         (xde, xdee): Mode attributes adjusted to support DFP modes.
6357         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
6358         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
6359         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
6360         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
6361         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
6362         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
6363         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
6364         numbers.
6365         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
6366         "movsf"): Insn definitions removed.
6367         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
6368         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
6369         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
6370         definitions added.
6371         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
6372         "reload_in<mode>", "reload_out<mode>"): Expander added.
6373         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
6374         Expander removed.
6375
6376 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6377
6378         * config/s390/s390.md: Only non-functional changes.  Renamed
6379         FPR mode macro to BFP all over the file.
6380
6381 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6382
6383         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
6384         (op_type attribute): RRF instruction type added.
6385         (fT0): New mode attribute.
6386         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
6387         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
6388         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
6389         no secondary memory is needed when moving DFmode values between GPRs
6390         and FPRs.
6391
6392 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6393
6394         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
6395         inverted and documentation adjusted.
6396         ("mhard-dfp", "msoft-dfp"): New options.
6397         * config/s390/s390.c (s390_handle_arch_option): New architecture
6398         switch: z9-ec.
6399         (override_options): Sanity checks for the new options added.
6400         * config.gcc: New architecture switch: z9-ec.
6401         * config/s390/s390.h (processor_flags): PF_DFP added.
6402         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
6403         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
6404         when the bit is NOT set so remove it from the defaults.
6405
6406 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6407
6408         * genemit.c (main): Print include statement for dfp.h.
6409         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
6410         is not available.
6411
6412 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
6413
6414         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
6415
6416 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
6417
6418         PR target/31022
6419         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
6420         instead of PATTERN.
6421
6422 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6423
6424         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
6425         attr_length_call, output_call, output_indirect_call): Cleanup
6426         formatting of targetm calls.
6427
6428 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
6429
6430         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
6431
6432 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6433
6434         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
6435         reservation, bypass and anti-bypass descriptions for these instructions.
6436         Update move patterns.
6437         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
6438         TYPE_FPSTORE.
6439
6440 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
6441
6442         * tree-vect-transform.c (get_initial_def_for_induction): Replace
6443         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
6444         (get_initial_def_for_reduction): Likewise.
6445
6446 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
6447
6448         Fix PR tree-optimization/29922
6449         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
6450         (get_representative): Removed.
6451         (value_dies_in_block_x): Update for rvuse removal.
6452         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
6453         (compute_antic_aux): Handle when PHI nodes appear in
6454         non-single-successors.
6455         (dump_bitmap_of_names): Removed.
6456         (compute_antic_safe): Renamed and removed rvuse calculation.
6457         Calculate only antic safe.
6458         (insert_into_preds_of_block): Remove assert.
6459         (execute_pre): Update for renamed functions.
6460         (defer_or_phi_translate_block): New function.
6461
6462 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
6463
6464         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
6465         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
6466         typos.
6467         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
6468         Follow spelling conventions.
6469
6470         * tree-data-ref.h: Remove the prototype for analyze_array.
6471
6472 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
6473
6474         PR tree-optimization/31041
6475         * tree-vect-transform.c (get_initial_def_for_induction): Call
6476         force_gimple_operand.
6477
6478 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
6479
6480         * ipa-type-escape.c (look_for_casts) : Revert code to use
6481         handled_component_p due to ada test a-numaux.adb.
6482
6483 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
6484
6485         * final.c (final_scan_insn): Alter the condition of a
6486         conditional trap if we have nonstandard CC.
6487
6488 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6489
6490         * configure.ac: Remove excess quoting from asm line 0 test.
6491         * configure: Rebuilt.
6492
6493 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6494
6495         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
6496         * c-common.c (convert_and_check): Move warning logic to...
6497         (warnings_for_convert_and_check): ...here. Define.
6498         * c-common.h (warnings_for_convert_and_check): Declare.
6499
6500 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6501
6502         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
6503         (output_call): Likewise.
6504
6505 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
6506
6507         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
6508
6509 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
6510
6511         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
6512
6513 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
6514
6515         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
6516         opteron, athlon-64 and athlon-fx processor_alias_table entries.
6517
6518 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
6519
6520         PR tree-optimization/31183
6521         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
6522         Use double_int instead of unsigned int for representing access_strides.
6523         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
6524
6525 2007-03-16  Richard Guenther  <rguenther@suse.de>
6526
6527         PR tree-optimization/31146
6528         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
6529         to allow recursion of forward_propagate_addr_expr.
6530         (forward_propagate_addr_into_variable_array_index): Likewise.
6531         (forward_propagate_addr_expr): Likewise.
6532         (tree_ssa_forward_propagate_single_use_vars): Likewise.
6533         (forward_propagate_addr_expr_1): Recurse on simple copies
6534         instead of propagating into them.  Do so for useless conversions
6535         as well.
6536         (forward_propagate_addr_expr): Clean up unused statements after
6537         recursion.
6538
6539 2007-03-16  Richard Guenther  <rguenther@suse.de>
6540
6541         * builtins.c (expand_builtin_cexpi): Use the right argument
6542         for the expansion via cexp.
6543
6544 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6545
6546         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
6547         * configure: Rebuilt.
6548
6549 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6550
6551         PR debug/29906
6552         * dwarf2out.c (force_type_die): Adjust comment.
6553         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
6554
6555 2007-03-15  DJ Delorie  <dj@redhat.com>
6556
6557         * config/frv/predicates.md (minmax_operator): Don't check operands
6558         here.
6559
6560 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
6561
6562         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
6563         Update constant estimates of number of iterations.
6564         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
6565         argument renamed to "realistic".
6566         (compute_estimated_nb_iterations): Removed.
6567         (record_niter_bound): New function.
6568         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
6569         call record_nonwrapping_iv with upper = false.
6570         (infer_loop_bounds_from_signedness): Pass upper argument to
6571         record_nonwrapping_iv.
6572         (estimate_numbers_of_iterations_loop): Do not call
6573         compute_estimated_nb_iterations.  Record estimate based on profile
6574         information.  Initialize the constant estimates of number of
6575         iterations.
6576         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
6577         estimates.
6578         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
6579         number of iterations is too small.
6580         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
6581         (EST_NOT_AVAILABLE): Removed.
6582         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
6583         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
6584         fields.
6585
6586 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
6587
6588         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
6589         Handle NE_EXPR guards.
6590
6591 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6592
6593         PR c++/24924
6594         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
6595         Set also -pedantic-errors by default for the  preprocessor unless
6596         -fpermissive is given.
6597
6598 2007-03-15  Richard Guenther  <rguenther@suse.de>
6599
6600         PR middle-end/29719
6601         PR middle-end/31161
6602         * builtins.c (expand_builtin_cexpi): As a fallback if we
6603         don't have builtins for sincos or cexp create a function
6604         declaration for cexp and expand to a call to that.
6605         (expand_builtin_int_roundingfn): Always fall
6606         back to floor/ceil and its variants even if they may be
6607         not available.
6608
6609 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
6610
6611         PR middle-end/31159
6612         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
6613         jump tables, move the call to delete_dead_jumptables from here...
6614         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
6615         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
6616         don't allow merging of blocks that try_redirect_by_replacing_jump
6617         also does not handle when not optimizing.
6618
6619 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
6620             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
6621
6622         * config/i386/i386.md (x86_sahf_1): Correctly handle
6623         HAVE_AS_IX86_SAHF.
6624
6625 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
6626
6627         PR target/31167
6628         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
6629         x86_64_general_operand as operand[2] predicate.  Remove "iF"
6630         from operand constraints and use "e" constraint instead.
6631         (*subti3_1, *subti3_1 splitter): Ditto.
6632         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
6633         operand[1] predicate.
6634
6635 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
6636
6637         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
6638         arrays, multiply the access strides by the size of the sub-array.
6639         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
6640
6641 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
6642
6643         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
6644         the configured assembler supports the sahf mnemonic.
6645         * configure: Regenerate.
6646         * config.in: Regenerate.
6647
6648         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
6649         emit "sahf" or ".byte\t0x9e" as asm template.
6650
6651 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
6652
6653         PR 31018
6654         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
6655         option to replace hard coded TARGET_xxx in md file.
6656         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
6657         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
6658         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
6659         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
6660         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
6661         (X86_TUNE_NOT_VECTORMODE): Ditto.
6662         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
6663         (TUNE_AVOID_VECTOR_DECODE): Ditto.
6664         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
6665         (TUNE_SLOW_IMUL_IMM8): Ditto.
6666         (TUNE_MOVE_M1_VIA_OR): Ditto.
6667         (TUNE_NOT_UNPAIRABLE): Ditto.
6668         (TUNE_NOT_VECTORMODE): Ditto.
6669
6670         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
6671         options.
6672
6673         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
6674         tuning options instead of hard coded TARGET_xxx.
6675         (fix ssemode peephole2's): Ditto.
6676         (imul peephole2's): Ditto.
6677         (movsi_or): Ditto.
6678         (movdi_or_rex64): Ditto.
6679         (move peephole2): Ditto.
6680         (not peephole2's): Ditto.
6681
6682 2007-03-14  Dirk Mueller  <dmueller@suse.de>
6683
6684         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
6685         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
6686         * c-parser.c (c_parser_if_body): Always add an empty statement in case
6687         of empty body.
6688         * c-parser.c (c_parser_do_statement): Warn about empty body in
6689         do/while statement.
6690         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
6691         * doc/invoke.texi (-Wempty-body): Update documentation.
6692
6693 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6694
6695         PR c/21438
6696         * c-common.h (warn_for_div_by_zero): Declare.
6697         * c-common.c (warn_for_div_by_zero): Define.
6698         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
6699         warning.
6700
6701 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
6702
6703         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
6704         to PREFIX and STANDARD_PREFIX.
6705
6706 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
6707             Phil Edwards  <phil@codesourcery.com>
6708
6709         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
6710         (__gthread_once_t): Remove busy field for RTPs.
6711         (__GTHREAD_ONCE_INIT): Update accordingly.
6712
6713 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
6714
6715         * doc/invoke.texi: Document VxWorks options.
6716
6717 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
6718
6719         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
6720
6721 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
6722
6723         PR tree-optimization/30590
6724         * tree-nrv.c (tree_nrv): Check for the partial update of the
6725         return value.
6726
6727 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
6728
6729         * flags.h (flag_random_seed): Remove declaration, in favor of...
6730         * toplev.h (get_random_seed, set_random_seed): ... these.
6731         * tree.c (get_file_function_name): Use the former.
6732         * opts.c (common_handle_option): Use the latter.
6733         * toplev.c
6734
6735 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
6736
6737         PR middle-end/31127
6738         * cse.c (cse_find_path): Do not bail out if a basic block that
6739         we already visited now becomes part of a path that starts at a
6740         different basic block.  Just disallow this, to make sure we
6741         visit each basic block at most once.
6742
6743 2007-03-13  Jan Hubicka  <jh@suse.cz>
6744
6745         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
6746         when profile esitmate is present, calls with very low frequency are
6747         cold.
6748
6749 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
6750
6751         PR tree-optimization/30730
6752         PR tree-optimization/26900
6753         * tree-ssa-loop-niter.c: Include gmp.h.
6754         (bounds): New type.
6755         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
6756         split_to_var_and_offset, determine_value_range,
6757         bound_difference_of_offsetted_base, refine_bounds_using_guard,
6758         bound_difference, bounds_add, bounds_negate,
6759         number_of_iterations_ne_max, dump_affine_iv): New functions.
6760         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
6761         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
6762         difference of initial and final value of control iv to validate
6763         results.
6764         (number_of_iterations_cond): Add loop parameter.  Determine bounds
6765         on the difference of the extremes of the control iv.  Add dumps.
6766         (expand_simple_operations): Handle phi nodes.
6767         (simplify_using_initial_conditions): Do not record used conditions.
6768         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
6769         Do not set additional_info.
6770         (implies_nonnegative_p, implies_ge_p): Removed.
6771         (derive_constant_upper_bound): Do not use parameter `additional'.
6772         (record_estimate): Parameter `additional' removed.  Parameter
6773         `i_bound' added.  Do not call derive_constant_upper_bound.
6774         (record_nonwrapping_iv): Use derive_constant_upper_bound to
6775         bound the number of iterations estimate.
6776         (estimate_numbers_of_iterations_loop): Pass the estimate from
6777         the number of iterations analysis to record_estimate.
6778         * tree.h (multiple_of_p): Declare.
6779         * tree-scalar-evolution.c (expression_expensive_p): Removed.
6780         (scev_const_prop): Do not check expression_expensive_p.
6781         * fold-const.c (multiple_of_p): Exported.
6782         * double-int.c (double_int_mask): Exported.
6783         * double-int.h (double_int_mask): Declare.
6784         * tree-flow.h (struct tree_niter_desc): Removed additional_info
6785         field.  Added max field.
6786
6787 2007-03-13  David Taylor  <taylor@candd.org>
6788
6789         PR driver/12448:
6790         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
6791         default -MQ.
6792
6793 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6794
6795         PR target/31123
6796         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
6797         two unamed patterns.
6798
6799 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
6800
6801         * config/i386/i386.opt (mcx16, msahf): New options.
6802         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
6803         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
6804
6805         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
6806         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
6807         Output -mcx16 and -msahf options when corresponding bit is set.
6808
6809         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
6810         and -msahf options.
6811
6812 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
6813
6814         * configure.ac: Test for assembler tolerance to # 0 "".
6815         * configure, config.in: Rebuilt.
6816         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
6817
6818 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
6819
6820         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
6821
6822         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
6823         (handle_syscall): Handle direct system calls.
6824         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
6825
6826 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
6827
6828         * doc/invoke.texi: Fix cpp.info cross-reference.
6829         * doc/passes.texi: Fix gcc.info cross-reference.
6830
6831 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
6832
6833         PR tree-optimization/30835
6834         * lambda-code.c (can_convert_to_perfect_nest): Check whether
6835         bb_for_stmt is not NULL before accessing it.
6836
6837 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
6838
6839         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
6840         some multilibs.
6841
6842 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
6843
6844         PR 30635
6845         * doc/install.texi: Document --enable-stage1-languages
6846
6847 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
6848
6849         * tree-pass.h (pass_into_cfg_layout_mode,
6850         pass_outof_cfg_layout_mode): Declare.
6851         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
6852         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
6853         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
6854         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
6855
6856 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
6857
6858         * c-decl.c (warn_variable_length_array): New function.
6859         Refactored from grokdeclarator to handle warn_vla
6860         and handle unnamed array case.
6861         (grokdeclarator): Refactored VLA warning case.
6862         * c.opt (Wvla): New flag.
6863         * doc/invoke.texi (Wvla): New warning.
6864
6865 2007-03-12  Richard Henderson  <rth@redhat.com>
6866
6867         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
6868         (TARGET_SECTION_TYPE_FLAGS): New.
6869
6870 2007-03-12  Richard Henderson  <rth@redhat.com>
6871
6872         * config/darwin.c (machopic_reloc_rw_mask): New.
6873         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
6874         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
6875
6876 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
6877
6878         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
6879         * cppdefault.h (cpp_PREFIX): Document.
6880         (cpp_PREFIX_len): Likewise.
6881         (cpp_EXEC_PREFIX): New variable.
6882         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
6883         * c-incpath.c (add_standard_paths): Correct logic for relocating
6884         paths within prefix.
6885
6886 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
6887
6888         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
6889         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
6890         mode macro.
6891         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
6892         fix_truncdfdi_sse using SSEMODEF mode macro.
6893         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
6894         fix_truncdfsi_sse using SSEMODEF mode macro.
6895         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
6896         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
6897
6898 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
6899
6900         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
6901         elfos.h to tm_file.
6902
6903 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
6904
6905         * tree.h : Add multiple_of_p declaration.
6906         * fold-const.c (multiple_of_p): Make multiple_of_p public.
6907         * ipa-type-escape.c (results_of_malloc): Redundant.
6908         (visited_stmts): New. Visited stmt for walk_use_def_chains.
6909         (cast_type): Extended with new members.
6910         (check_cast): Returns cast_type.
6911         (cast): New structure for data of walk_use_def_chains.
6912         (is_malloc_result, is_cast_from_non_pointer_1,
6913         is_cast_from_non_pointer,
6914         is_array_access_through_pointer_and_index): New functions.
6915         (look_for_casts): Returns cast types.
6916         (check_call): Returns void.
6917         (okay_pointer_operation): Use support of pointer plus index,
6918         pointer plus constant and allow all multiplications.
6919
6920 2007-03-11  Richard Guenther  <rguenther@suse.de>
6921
6922         PR tree-optimization/31115
6923         * tree-vrp.c (extract_range_from_binary_expr): Make sure
6924         the shift count is positive and non-anti-range for RSHIFT_EXPR.
6925         A shift count of zero is not special as with *_DIV_EXPR.
6926         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
6927         direction.
6928
6929 2007-03-11  Ian Lance Taylor  <iant@google.com>
6930
6931         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
6932         the *_DIV_EXPR codes correctly with overflow infinities.
6933
6934 2007-03-11  Ira Rosen  <irar@il.ibm.com>
6935
6936         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
6937         indicate success/failure of the analysis. Add negation to subtrahend
6938         in case of subtraction. Fail if both operands contain constants.
6939         (create_data_ref): Fail if analyze_offset fails.
6940
6941 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
6942
6943         * config/i386/i386.md (frndintxf2): Rename to ...
6944         (rintxf2): ... this. Remove expander having same name.
6945         (rintsf2, rintdf2): Implement using SSEMODEF macro.
6946         (roundsf2, rounddf2): Ditto.
6947         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
6948         (lround<mode>di2, lround<mode>si2): Ditto.
6949
6950 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
6951
6952         * lower-subreg.c: Include except.h.
6953         (decompose_multiword_subregs): Verify that the only control flow
6954         insns we can split are loads to multi-words pseudos.
6955         Handle breaking such blocks after splitting, instead of calling
6956         find_many_sub_basic_blocks.
6957
6958         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
6959         on the new basic block.  Add a lengthy comment explaining why we
6960         thought this was necessary.
6961         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
6962
6963 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
6964
6965         PR c++/30924
6966         * tree.c (walk_type_fields): Recurse into the element type of
6967         ARRAY_TYPEs if there is a pointer set.
6968
6969 2007-03-10  Dirk Mueller  <dmueller@suse.de>
6970
6971         * c-common.c (warn_logical_operator): Fix condition.
6972
6973 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
6974
6975         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
6976         quotation mark.
6977         * config/darwin.c (machopic_select_section): Remove superfluous
6978         argument in call to categorize_decl_for_section.  Remove unused
6979         variable shlib.
6980
6981 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
6982
6983         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
6984         defined.
6985         * configure: Regenerate.
6986
6987 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
6988
6989         PR target/31101
6990         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
6991         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
6992         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
6993         Add LABEL_NUSES to emitted label.
6994         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
6995         branch probability value to emitted jump insn.
6996         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
6997         Do not check life information and do not re-arrange input operands
6998         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
6999
7000 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7001
7002         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
7003         the change of decode_asm_operands.
7004
7005 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7006
7007         * mode-switching.c (create_pre_exit): Skip blockage insn.
7008
7009 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
7010
7011         * tree-pass.h (TODO_update_smt_usage): Remove.
7012         Update all users.
7013         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
7014         argument SOME.
7015         Update all users.
7016
7017 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7018
7019         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
7020         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
7021         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
7022         SOM target.
7023
7024 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
7025
7026         * gcc.c: Document %{, in big comment at top.
7027         (input_suffix_matches): Remove special handling for .s and
7028         .S.
7029         (input_spec_matches): New.
7030         (handle_braces): Handle %{,.
7031         (validate_switches): ',' indicates a value which is not a switch.
7032         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
7033         to detect assembler input.
7034         * config/i386/sol2.h (CPP_SPEC): Likewise.
7035         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
7036         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
7037         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
7038         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
7039         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
7040         -m64 causes deployment target to default to 10.5.
7041         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
7042
7043 2007-03-09  Richard Henderson  <rth@redhat.com>
7044
7045         PR target/26090
7046         * target.h (targetm.asm.out.reloc_rw_mask): New.
7047         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
7048         (TARGET_ASM_OUT): Use it.
7049         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
7050         * varasm.c (categorize_decl_for_section): Remove shlib argument;
7051         use the new reloc_rw_mask target hook instead.
7052         (default_section_type_flags_1): Merge into...
7053         (default_section_type_flags): ... here.
7054         (decl_readonly_section_1): Merge into...
7055         (decl_readonly_section): ... here.
7056         (default_elf_select_section_1): Merge into...
7057         (default_elf_select_section): ... here.
7058         (default_unique_section_1): Merge into...
7059         (default_unique_section): ... here.
7060         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
7061         (default_select_rtx_section): Use it.
7062         (default_elf_select_rtx_section): Likewise.
7063         * output.h: Update to match.
7064         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
7065         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
7066         (TARGET_ASM_RELOC_RW_MASK): New.
7067         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
7068         to categorize_decl_for_section.
7069         (x86_64_elf_unique_section): Likewise.
7070         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
7071         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
7072         (TARGET_ASM_RELOC_RW_MASK): New.
7073         * config/ia64/ia64.c (ia64_rwreloc_select_section,
7074         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
7075         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
7076         (TARGET_RWRELOC): Remove.
7077         (ia64_section_type_flags): Adjust call to default_section_type_flags.
7078         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
7079         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
7080         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
7081         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
7082         (rs6000_xcoff_select_section): Use decl_readonly_section.
7083         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
7084         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
7085         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
7086         (TARGET_SECTION_TYPE_FLAGS): Remove.
7087         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
7088
7089 2007-03-09  Roger Sayle  <roger@eyesopen.com>
7090
7091         * fold-const.c (fold_comparison): Remove compile-time evaluation of
7092         complex constant equality/inequality comparisons for here.
7093         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
7094         known at compile-time or can be simplified to a scalar comparison.
7095         (fold_relational_const): Move compile-time evaluation of complex
7096         constant equality/inequality comparisons to here.
7097
7098 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7099
7100         PR rtl-optimization/30643
7101         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
7102         dest_addr_elt.
7103         (fold_rtx): Recurse, like before 2006-11-03.
7104
7105 2007-03-09  DJ Delorie  <dj@redhat.com>
7106
7107         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
7108         m32c-pragma.o.
7109
7110 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
7111
7112         PR tree-optimization/30375
7113         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
7114         LHS of statements is not the same.
7115         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
7116
7117 2007-03-09  Chao-ying Fu  <fu@mips.com>
7118
7119         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
7120         REV 2.
7121         * doc/invoke.texi (-mdspr2): Document new option.
7122         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
7123         New unspec for DSP REV 2.
7124         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
7125         these instructions are extended in DSP REV 2.
7126         (mips-dspr2.md): Include.
7127         * config/mips/mips.opt (mdspr2): New option.
7128         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
7129         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
7130         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
7131         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
7132         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
7133         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
7134         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
7135         and 2 builtins.
7136         (bdesc_map): Add one field of unsupported_target_flags.
7137         (bdesc_arrays):  Update entries to have extra fields.  Add
7138         dsp_32only_bdesc.
7139         (mips_init_builtins): Initialize new function types.
7140         Check unsupported_target_fileds to filter out builtins.
7141         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
7142         TARGET_DSPR2.
7143         (ASM_SPEC): Pass mdspr2 to the assembler.
7144         * config/mips/mips-dspr2.md: New file.
7145
7146 2007-03-09  Sa Liu  <saliu@de.ibm.com>
7147
7148         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
7149
7150 2007-03-09  Ian Lance Taylor  <iant@google.com>
7151
7152         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
7153         argument) like -Wstrict-overflow=2.
7154         * doc/invoke.texi (Warning Options): Update documentation.
7155
7156 2007-03-09  Dirk Mueller  <dmueller@suse.de>
7157
7158         PR c++/17946
7159         * doc/invoke.texi (-Wlogical-op): Document.
7160         * common.opt (-Wlogical-op): New.
7161         * c-common.h (warn_logical_operator): Declare.
7162         * c-common.c (warn_logical_operator): Define.
7163         * c-typeck.c (parser_build_binary_op): Call
7164         warn_logical_operator.
7165
7166 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7167
7168         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
7169         * final.c (final_scan_insn): Test for non-"" file name.
7170
7171 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
7172
7173         * doc/loop.texi: Document the Omega linear constraints solver.
7174         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
7175         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
7176         omega-hash-table-size, omega-max-keys, and
7177         omega-eliminate-redundant-constraints.
7178         * tree-pass.h (pass_check_data_deps): Declared.
7179         * omega.c: New.
7180         * omega.h: New.
7181         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
7182         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
7183         pass_check_data_deps): New.
7184         * tree-data-ref.c (init_data_ref): Remove declaration.
7185         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
7186         (analyze_array): Renamed init_array_ref, move up initializations.
7187         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
7188         Removed arguments that are set to NULL.
7189         (analyze_indirect_ref): Correct indentation, correct call to
7190         init_pointer_ref.
7191         (object_analysis): Call init_array_ref instead of analyze_array.
7192         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
7193         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
7194         of DR_ACCESS_FNS_ADDR.
7195         (init_omega_eq_with_af, omega_extract_distance_vectors,
7196         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
7197         ddr_consistent_p): New.
7198         (compute_affine_dependence): Check consistency of ddrs when
7199         flag_check_data_deps is passed.
7200         (analyze_all_data_dependences): Uncomment.
7201         (tree_check_data_deps): New.
7202         * tree-data-ref.h: Include omega.h.
7203         (DR_ACCESS_FNS_ADDR): Removed.
7204         (data_dependence_relation): Add inner_loop.
7205         (DDR_INNER_LOOP): New.
7206         * common.opt (fcheck-data-deps): New.
7207         * tree-flow.h (tree_check_data_deps): Declare.
7208         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
7209         (OBJS-common): Depend on omega.o.
7210         (omega.o): Define.
7211         * passes.c (pass_check_data_deps): Scheduled.
7212         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
7213         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
7214         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
7215         PARAM_VECT_MAX_VERSION_CHECKS,
7216         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
7217
7218 2007-03-09  Richard Guenther  <rguenther@suse.de>
7219
7220         PR tree-optimization/30904
7221         PR middle-end/31058
7222         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
7223         the same way as *_DIV_EXPR.
7224
7225 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7226
7227         * recog.c (decode_asm_operands): No mixed declarations and code.
7228
7229 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7230
7231         * rtl.def (ASM_INPUT): Add location.
7232         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
7233         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
7234         (decode_asm_operands): Add loc operand.
7235         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
7236         * stmt.c (expand_asm): Rename to...
7237         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
7238         gen_rtx_ASM_INPUT_loc.
7239         (expand_asm_expr): Adjust.
7240         * recog.c (decode_asm_operands): Add loc operand.
7241         (check_asm_operands, extract_insn): Adjust.
7242         * reload1.c (maybe_fix_stack_asms): Likewise.
7243         * final.c (asm_insn_count): Likewise.
7244         (final_scan_insn): Output # line before and after asm.
7245
7246 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
7247
7248         * tree-ssa-structalias.c (variable_info): Remove
7249         finished_solution.
7250         (new_var_info): Ditto.
7251         (shared_bitmap_info_t): New structure.
7252         (shared_bitmap_table): New variable.
7253         (shared_bitmap_hash): New function.
7254         (shared_bitmap_eq): Ditto
7255         (shared_bitmap_lookup): Ditto.
7256         (shared_bitmap_add): Ditto.
7257         (merge_smts_into): Change to take bitmap directly.
7258         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
7259         (init_alias_vars): Init shared bitmap hashtable.
7260         (delete_points_to_sets): Delete shared bitmap hashtable.
7261         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
7262         is_aliased removal as a change that was still necessary was
7263         deleted.
7264
7265 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
7266
7267         * config/i386/i386.h (override_options): Conditionally disable
7268         x86_sahf for 64bit targets only.
7269
7270 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7271
7272         PR C/31072
7273         * c-decl.c (merge_decls): Don't call make_var_volatile.
7274         * varasm.c (make_var_volatile): Remove.
7275         * output.h (make_var_volatile): Remove.
7276
7277 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
7278
7279         PR tree-optimization/31085
7280         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
7281
7282 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7283
7284         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
7285         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
7286         ATTR_CONST_NOTHROW_LIST.
7287
7288         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
7289         FIX_TRUNC_EXPR.
7290
7291 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
7292
7293         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
7294
7295 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
7296
7297         PR 31013
7298         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
7299         is declared.
7300         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
7301         passed, use shared libgcc.
7302
7303 2007-03-08  Roger Sayle  <roger@eyesopen.com>
7304
7305         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
7306         instead of calling build2 with a GIMPLE_MODIFY_STMT.
7307         (honor_protect_cleanup_actions, lower_try_finally_switch):
7308         Likewise.
7309         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
7310         ifc_temp_var): Likewise.
7311         * tree-inline.c (setup_one_parameter): Likewise.
7312         * tree-mudflap.c (mf_decl_cache_locals,
7313         mf_build_check_statement_for): Likewise.
7314         * tree-nested.c (init_tmp_var, save_tmp_var,
7315         finalize_nesting_tree_1): Likewise.
7316         * tree-outof-ssa.c (insert_copy_on_edge,
7317         insert_backedge_copies): Likewise.
7318         * tree-profile.c (tree_gen_edge_profiler,
7319         tree_gen_ic_profiler): Likewise.
7320         * tree-scalar-evolution.c (scev_const_prop): Likewise.
7321         * tree-sra.c (sra_build_assignment): Likewise.
7322         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
7323         * tree-ssa-math-opts.c (insert_reciprocals,
7324         execute_cse_sincos_1): Likewise.
7325         * tree-tailcall.c (adjust_accumulator_values,
7326         adjust_return_value): Likewise.
7327         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
7328         * tree-vect-transform.c (vect_create_data_ref_ptr,
7329         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
7330         vect_create_epilog_for_reduction, vectorizable_reduction,
7331         vectorizable_call, vectorizable_conversion,
7332         vectorizable_assignment, vectorizable_operation,
7333         vectorizable_type_demotion, vect_gen_widened_results_half,
7334         vect_permute_store_chain, vectorizable_store,
7335         vect_setup_realignment, vect_permute_load_chain,
7336         vectorizable_load, vectorizable_condition,
7337         vect_create_cond_for_align_checks): Likewise.
7338         * tree-vrp.c (build_assert_expr_for): Likewise.
7339
7340 2007-03-08  Ian Lance Taylor  <iant@google.com>
7341
7342         * tree-vrp.c: Include "intl.h".
7343         (usable_range_p): New static function.
7344         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
7345         overflowed values, juts set *strict_overflow_p.
7346         (compare_values): Only return -2 if one of the operands is not a
7347         constant.
7348         (compare_ranges): Call usable_range_p.
7349         (compare_range_with_value): Likewise.
7350         (vrp_evaluate_conditional_warnv): Rename from
7351         vrp_evaluate_conditional.  Make static.  Change all callers.
7352         (vrp_evaluate_conditional): New function.
7353         (simplify_div_or_mod_using_ranges): Issue warning about reliance
7354         on signed overflow.
7355         (simplify_abs_using_ranges): Likewise.
7356         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
7357         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
7358         within_stmt parameter.
7359         * tree-ssa-propagate.c (fold_predicate_in): Update call to
7360         vrp_evaluate_conditional.
7361         * tree-ssa-threadedge.c
7362         (record_temporary_equivalences_from_stmts_at_dest): Change
7363         simplify parameter to take a second tree parameter.
7364         (simplify_control_stmt_condition): Likewise.
7365         (thread_across_edge): Likewise.
7366         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
7367         (thread_across_edge): Likewise.
7368         * Makefile.in (tree-vrp.o): Depend upon intl.h.
7369
7370 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
7371
7372         * config/i386/i386.h (TARGET_SAHF): New define.
7373         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
7374         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
7375         (x86_sahf): New global variable.
7376         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
7377         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
7378         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
7379         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
7380         for 64-bit.
7381         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
7382         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
7383         when expanding fcomi/sahf based tests.
7384         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
7385         expanding sahf based alternative. Emit sahf based sequence when
7386         optimizing for code size.
7387         * config/i386/i386.md (x86_sahf_1): Do not disable for
7388         TARGET_64BIT, enable for TARGET_SAHF.
7389
7390 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
7391
7392         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
7393         spurious whitespace from error message.
7394
7395 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
7396
7397         PR c++/30852
7398         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
7399
7400 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
7401
7402         * c-decl.c (grokdeclarator): Disable warnings for anonymous
7403         bitfields.
7404         * tree-sra.c (instantiate_element): Propagate disabled warnings
7405         from the element itself to the created variable.
7406
7407 2007-03-07  Richard Henderson  <rth@redhat.com>
7408
7409         PR target/30848
7410         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
7411         silently fix up the stack in the case of a missing register.
7412
7413 2007-03-07  Paul Brook  <paul@codesourcery.com>
7414
7415         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
7416
7417 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
7418
7419         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
7420         New.
7421         (phase1_vrs): Use them.
7422         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
7423         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
7424         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
7425         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
7426         __gnu_Unwind_Restore_WMMXC if required.
7427         (_Unwind_VRS_Pop): Implement iWMMXt support.
7428         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
7429         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
7430         gnu_Unwind_Save_WMMXC): Define.
7431
7432 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
7433
7434         * config/vxworks.h (vxworks_override_options): Declare.
7435         (VXWORKS_OVERRIDE_OPTIONS): Use it.
7436         * config/vxworks.c: Include target.h and toplev.h.
7437         (vxworks_override_options): New function.
7438         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
7439
7440 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
7441
7442         * config/s390/s390.c (override_options): Don't emit an error when
7443         -mstack-size is used without providing -mstack-guard.
7444         (s390_emit_prologue): Choose stack_guard value automatically if not
7445         provided via command line.
7446         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
7447
7448 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
7449
7450         * config/i386/i386.c (output_set_got): Add a GOT initialization
7451         sequence for VxWorks PIC.
7452         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
7453         around labels as well as symbols.  Use gotoff_operand instead
7454         of local_symbolic_operand.
7455         (legitimize_pic_address): Use gotoff_operand instead of
7456         local_symbolic_operand.  Use @GOT accesses for labels as
7457         well as symbols.
7458         (ix86_output_addr_diff_elt): Use PC-relative rather than
7459         GP-relative offsets for VxWorks PIC.
7460         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
7461         no_new_pseudos.  Check whether the returned register is op0.
7462         * config/i386/i386.md (tablejump): Use PC-relative rather than
7463         GP-relative offsets for VxWorks PIC.
7464         * config/i386/predicates.md (gotoff_operand): New predicate.
7465
7466 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7467
7468         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
7469         before defining.
7470         * config/vxworks-dummy.h: New file.
7471         * config/i386/i386.h: Include it.
7472
7473 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
7474
7475         * dwarf2out.c (is_inlined_entry_point): New
7476         (add_high_low_attributes): Emit DW_AT_entry_pc along with
7477         DW_AT_ranges if the first subblock is the entry point.
7478
7479 2007-03-06  David Daney  <ddaney@avtrex.com>
7480
7481         * doc/install.texi (mips-*-*): Change recommended binutils
7482         version.
7483
7484 2007-03-06  Anatoly Sokolov <aesok@post.ru>
7485
7486         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
7487         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
7488         devices.
7489         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7490         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7491
7492 2007-03-06  Jan Hubicka  <jh@suse.cz>
7493
7494         * errors.h (warning, error, fatal, internal_error): Mark as cold.
7495         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
7496         are hot.
7497         (probably_cold_bb_p): Cold functions are cold.
7498         (probably_never_executed_bb_p): Cold functions are cold.
7499         (tree_bb_level_predictions): Predict calls to cold functions as not
7500         taken.
7501         (compute_function_frequency): Check hot/cold attributes.
7502         * function.h (function_frequency): Update comments.
7503         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
7504         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
7505         (c_common_att): Add cold and hot.
7506
7507         * doc/extend.texi (hot,cold attributes): Document.
7508
7509 2007-03-06  Andrew Haley  <aph@redhat.com>
7510
7511         * function.c (expand_function_end): Move blockage to just after we
7512         emit the label for the naked return from the function.
7513
7514 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7515
7516         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
7517         before redefining.
7518
7519 2007-03-06  Jan Hubicka  <jh@suse.cz>
7520
7521         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
7522         loaded for constant large models.  Non-large 64bit PIC can do.
7523         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
7524         * cmodel.h: Add LARGE PIC.
7525         * i386.md (UNSPEC_PLTOFF): New.
7526         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
7527         needed.
7528         (*call_1_rex64): Disable for large models.
7529         (*call_1_rex64_large): New.
7530         (*call_value_1_rex64): Disable for large models.
7531         (*call_value_1_rex64_large): New.
7532         (set_rip_rex4): New.
7533         (set_got_offset_rex64): New.
7534         * predicates.md (constant_call_address_operand): For large model
7535         constant calls are not possible.
7536         * i386-protos.h (construct_plt_address): Declare.
7537         * i386.c (override_options): Accept large models.
7538         (ix86_expand_prologue): Expand large PIC GOT pointer load.
7539         (legitimate_constant_p): Add new UNSPECs.
7540         (legitimate_pic_operand_p): Likewise.
7541         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
7542         (legitimize_pic_address): Do easy RIP relative way for TLS only for
7543         non-large model.
7544         (output_pic_addr_const): Add PLTOFF.
7545         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
7546         (ix86_expand_move): Legitimize pic address when in PIC mode.
7547         (construct_plt_address): New function.
7548         (ix86_expand_call): Offload the address to register and use GOT pointer
7549         for large model.
7550         * invoke.texi (mcmodel=large): Update documentation.
7551
7552 2007-03-06  Richard Henderson  <rth@redhat.com>
7553
7554         * config/i386/i386.c (x86_use_leave, x86_push_memory,
7555         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
7556         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
7557         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
7558         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
7559         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
7560         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
7561         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
7562         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
7563         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
7564         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7565         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
7566         x86_sse_partial_reg_dependency, x86_sse_split_regs,
7567         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
7568         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
7569         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
7570         x86_schedule, x86_use_bt, x86_pad_returns,
7571         x86_use_xchgb): Merge into ...
7572         (ix86_tune_features): ... here.  New array.
7573         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
7574         x86_bswap): Merge into ...
7575         (ix86_arch_features): ... here.  New array.
7576         (x86_3dnow_a): Remove.
7577         (x86_accumulate_outgoing_args): Make static.
7578         (x86_arch_always_fancy_math_387): Make static.
7579         (ix86_tune_mask, ix86_arch_mask): Move ...
7580         (override_options): ... to local variables here.  Apply the
7581         appropriate mask to each element of ix86_arch_features and
7582         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
7583         as were done in the old macros.
7584         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
7585         * config/i386/i386.h (x86_use_leave, x86_push_memory,
7586         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
7587         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
7588         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
7589         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
7590         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
7591         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
7592         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
7593         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
7594         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
7595         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7596         x86_accumulate_outgoing_args, x86_prologue_using_move,
7597         x86_epilogue_using_move, x86_decompose_lea,
7598         x86_arch_always_fancy_math_387, x86_shift1,
7599         x86_sse_partial_reg_dependency, x86_sse_split_regs,
7600         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
7601         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
7602         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
7603         x86_use_incdec, x86_pad_returns, x86_bswap,
7604         x86_partial_flag_reg_stall): Remove.
7605         (enum ix86_tune_indices): New.
7606         (ix86_tune_features): New.
7607         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
7608         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
7609         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
7610         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
7611         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
7612         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
7613         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
7614         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
7615         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
7616         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
7617         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
7618         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
7619         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
7620         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
7621         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
7622         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
7623         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
7624         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
7625         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
7626         TARGET_EXT_80387_CONSTANTS): Use it.
7627         (enum ix86_arch_indices): New.
7628         (ix86_arch_features): New.
7629         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
7630         TARGET_BSWAP): Use it.
7631         (ix86_tune_mask, ix86_arch_mask): Remove.
7632
7633 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
7634
7635         PR bootstrap/31020
7636         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
7637         Define using $${sysroot_headers_suffix}.
7638         * configure: Regenerate.
7639         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
7640         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
7641         defined.
7642         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
7643         * gcc.c (print_sysroot_headers_suffix): New.
7644         (option_map): Include --print-sysroot-headers-suffix.
7645         (display_help): Mention -print-sysroot-headers-suffix.
7646         (process_command): Handle -print-sysroot-headers-suffix.
7647         (do_spec_1): Append multilib directory to include-fixed path if
7648         sysroot suffixes in use.
7649         (main): Handle -print-sysroot-headers-suffix.
7650         * Makefile.in (start.encap): Don't depend on xlimits.h
7651         (xlimits.h): Remove.
7652         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
7653         limits.h for each multilib in fixinc_list.
7654         (fixinc_list, s-fixinc_list): New.
7655         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
7656         generate them for each multilib in fixinc_list.
7657         (stmp-fixproto): Use include-fixed.  Run fixproto for each
7658         multilib in fixinc_list.
7659         (mostlyclean): Don't remove xlimits.h.
7660         (clean): Remove include-fixed.
7661         (real-install-headers-tar, real-install-headers-cpio,
7662         real-install-headers-cp): Don't copy include, only include-fixed.
7663         (install-mkheaders): Depend on fixinc_list.  Don't depend on
7664         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
7665         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
7666         SYSTEM_HEADER_DIR setting in mkheaders.conf.
7667
7668 2007-03-06  Jan Hubicka  <jh@suse.cz>
7669
7670         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
7671         NANs easilly.
7672
7673 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7674
7675         * configure.ac: Allow tm_file to contain build-directory files.
7676         * configure: Regenerate.
7677         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
7678         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
7679         * config/m68k/print-sysroot-suffix.sh: New file.
7680
7681 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7682
7683         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
7684         of pic_offset_table_rtx if reload_completed.
7685         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
7686         PIC_OFFSET_TABLE_REGNUM.
7687         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
7688         return true.
7689         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
7690         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
7691
7692 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7693
7694         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
7695         functions that call eh_return.
7696
7697 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7698
7699         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
7700         functions that need a constant pool.
7701
7702 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7703
7704         PR target/28181
7705         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
7706         (m68k_preferred_reload_class): Likewise.
7707         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
7708         (SECONDARY_RELOAD_CLASS): Define.
7709         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
7710         (LIMIT_RELOAD_CLASS): Delete.
7711         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
7712         registers from storing bytes.
7713         (m68k_secondary_reload_class): New function.
7714         (m68k_preferred_reload_class): Likewise.
7715
7716 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7717
7718         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
7719         leaf functions.
7720         (m68k_expand_prologue): Likewise.
7721
7722 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7723
7724         * config/m68k/m68k-protos.h (output_sibcall): Declare.
7725         (mips_expand_epilogue): Add a bool parameter.
7726         (m68k_legitimize_sibcall_address): Declare.
7727         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
7728         (m68k_expand_epilogue): Add a parameter to select between sibling
7729         and normal epilogues.  Only generate a return for the latter.
7730         (m68k_ok_for_sibcall_p): New function.
7731         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
7732         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
7733         (sibcall_value, *sibcall_value): Likewise.
7734         (*call, *call_value): Require !SIBLING_CALL_P.
7735         (epilogue): Update call to m68k_expand_epilogue.
7736         (sibcall_epilogue): New pattern.
7737         * config/m68k/predicates.md (const_call_operand): Say that this
7738         predicate applies to sibling calls too.
7739         (sibcall_operand): New predicate.
7740
7741 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7742
7743         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
7744         alternatives as movsi_cf.
7745         (movsf_cf_hard): Add commentary.
7746
7747 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
7748             Richard Sandiford  <richard@codesourcery.com>
7749
7750         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
7751         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
7752         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
7753         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
7754         as being live on exit from an interrupt function.
7755         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
7756         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
7757         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
7758         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
7759         (m68k_interrupt_function_p): Globalize.
7760         (m68k_compute_frame_layout): Remove reverse mask code.
7761         (m68k_emit_movem, m68k_set_frame_related): New functions.
7762         (m68k_output_function_prologue): Delete in favor of...
7763         (m68k_expand_prologue): ...this new function.
7764         (m68k_output_function_epilogue): Delete in favor of...
7765         (m68k_expand_epilogue): ...this new function.
7766         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
7767         functions.
7768         (print_operand): Handle %?.
7769         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
7770         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
7771         (prologue, epilogue): New patterns.
7772         (return): Turn into a define_expand.
7773         (*return): New pattern, derived from old "return" pattern.  Use rte
7774         rather than rts for interrupt functions.  Only use rtd if the pop
7775         count is nonzero.
7776         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
7777         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
7778         (link, *link, unlink, *unlink, load_got): Likewise.
7779
7780 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7781
7782         PR target/23482
7783         PR target/17114
7784         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
7785         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
7786         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
7787         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
7788         and m68k_matches_u_p.
7789         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
7790         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
7791         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
7792         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
7793         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
7794         (REG_STRICT_P): New macro.
7795         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
7796         PCREL_GENERAL_OPERAND_OK.
7797         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
7798         m68k_legitimate_base_reg_p.
7799         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
7800         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
7801         (PIC_CASE_VECTOR_ADDRESS): Update comment.
7802         * config/m68k/m68k.c (m68k_address): New structure.
7803         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
7804         (m68k_decompose_index, m68k_legitimate_constant_address_p)
7805         (m68k_jump_table_ref_p, m68k_decompose_address)
7806         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
7807         (m68k_matches_u_p): New functions.
7808         (print_operand_address): Rewrite to use m68k_decompose_index.
7809
7810 2007-03-05  David Taylor  <dtaylor@emc.com>
7811
7812         * gcc.c: Correct copyright date in --version output.
7813
7814 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7815
7816         * pa.md: In unamed move patterns, disparge copies between general
7817         and floating point registers using '?' modifier.  Don't include 'f'
7818         constraint for register preferences in DImode, SImode, HImode and
7819         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
7820         Remove constraints for copies between general and floating registers
7821         in soft-float DFmode pattern.
7822         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
7823         floating register.
7824         (movsf): Likewise.
7825
7826 2007-03-05  Mike Stump  <mrs@apple.com>
7827
7828         * c-common.c (targetcm): Add.
7829         * c-opts.c (c_common_handle_option): Handle language specific
7830         target options.
7831         * opts.c (handle_option): Verify language for target options, if
7832         any are given.
7833         * opth-gen.awk: Add CL_LANG_ALL.
7834         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
7835         (TARGETCM_INITIALIZER): Add.
7836         * target.h (struct gcc_targetcm): Add.
7837         (targetcm): Add.
7838         * targhooks.c (default_handle_c_option): Add.
7839         * targhooks.h (default_handle_c_option): Add.
7840         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
7841
7842         * config/darwin.opt (iframework): Add.
7843         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
7844         * config/darwin-c.c (handle_c_option): Add.
7845         (TARGET_HANDLE_C_OPTION): Add.
7846         (targetcm): Add.
7847         * doc/invoke.texi (Darwin Options): Add -iframework.
7848
7849 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7850
7851         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
7852         conversion.
7853
7854 2007-03-05  Ian Lance Taylor  <iant@google.com>
7855
7856         * c.opt (fgnu89-inline): New option.
7857         * c-opts.c (c_common_post_options): Set default value for
7858         flag_gnu89_inline.
7859         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
7860         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
7861         inline functions.
7862         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
7863         (grokdeclarator, start_function): Likewise.
7864         * c-cppbuiltin.c (c_cpp_builtins): Define either
7865         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
7866         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
7867         (C Dialect Options): Document -fgnu89-inline.
7868         * doc/extend.texi (Function Attributes): Explain what the
7869         gnu_inline attribute does.
7870         * doc/cpp.texi (Common Predefined Macros): Document
7871         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
7872
7873 2007-03-05  Ian Lance Taylor  <iant@google.com>
7874
7875         PR tree-optimization/31034
7876         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
7877         half-range if the other side is an overflow infinity.
7878
7879 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
7880
7881         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
7882         (bfin*-linux-uclibc*): New configuration.
7883         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
7884         defining.
7885         * config/bfin/linux.h: New file.
7886         * config/bfin/libgcc-bfin.ver: New file.
7887         * config/bfin/t-bfin-uclinux: New file.
7888         * config/bfin/t-bfin-linux: New file.
7889         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
7890         (TARGET_OS_CPP_BUILTINS): New macro.
7891
7892 2007-03-05  Richard Guenther  <rguenther@suse.de>
7893
7894         * fold-const.c (fold_binary): Remove duplicate folding
7895         of comparison of non-null ADDR_EXPR against null.
7896
7897 2007-03-05  Richard Guenther  <rguenther@suse.de>
7898             Dorit Nuzman  <dorit@il.ibm.com>
7899
7900         PR tree-optimization/26420
7901         * tree-vectorizer.c (vectorize_loops): Bail out early if there
7902         are no loops in the function.  Only print the number of
7903         vectorized loops if it is greater than zero or we are supposed
7904         to print information about unvectorized loops.
7905
7906 2007-03-05  Revital Eres  <eres@il.ibm.com>
7907
7908         * gcc.dg/var-expand1.c: New test.
7909         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
7910         when an accumulator is expanded.
7911
7912 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7913
7914         PR other/30465
7915         * c-common.c (convert_and_check): Don't give warnings for
7916         conversion if 'expr' already overflowed.
7917
7918 2007-03-04  Roger Sayle  <roger@eyesopen.com>
7919
7920         PR middle-end/30744
7921         * fold-const.c (fold_comparison): Enforce type consistency when
7922         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
7923
7924 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
7925
7926         * tree-ssa-address.c (create_mem_ref): Do not put an expression
7927         containing a cast to the base of TARGET_MEM_REF.
7928
7929 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
7930
7931         * tree.c (tree_contains_struct_check_failed): Remove spurious
7932         whitespace from error message.
7933
7934 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
7935
7936         PR target/30406
7937         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
7938         instead of precision.
7939
7940 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
7941             Nathan Sidwell  <nathan@codesourcery.com>
7942
7943         * emit-rtl.c (find_auto_inc): New.
7944         (try_split): recreate REG_INC notes,
7945         Use regular for loops rather than whiles.
7946
7947 2007-03-03  Andreas Schwab  <schwab@suse.de>
7948
7949         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
7950         * configure: Regenerate.
7951
7952 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7953
7954         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
7955         flag_rounding_math, not flag_unsafe_math_optimizations.
7956
7957         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
7958         fold_build2.
7959         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
7960         alpha_fold_vector_minmax): Likewise.
7961         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
7962         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
7963
7964 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7965
7966         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
7967         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
7968         if the lhs has side-effects.
7969         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
7970
7971 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
7972
7973         * config/i386/i386.h (TUNEMASK): Remove define.
7974         (ARCHMASK): Remove define.
7975         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
7976          Use ix86_arch_mask variable instead of ARCHMASK.
7977         * config/i386/i386.c (override_options): Ditto.
7978         (standard_80387_constant_p): Ditto.
7979
7980 2007-03-02  Ian Lance Taylor  <iant@google.com>
7981
7982         Used signed infinities in VRP.
7983         * tree-vrp.c (uses_overflow_infinity): New static function.
7984         (supports_overflow_infinity): New static function.
7985         (make_overflow_infinity): New static function.
7986         (negative_overflow_infinity): New static function.
7987         (positive_overflow_infinity): New static function.
7988         (is_negative_overflow_infinity): New static function.
7989         (is_positive_overflow_infinity): New static function.
7990         (is_overflow_infinity): New static function.
7991         (overflow_infinity_range_p): New static function.
7992         (compare_values_warnv): New function split out of compare_values.
7993         (compare_value): Call it.
7994         (set_value_range_to_nonnegative): Add overflow_infinity
7995         parameter.  Change caller.
7996         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
7997         Change callers.
7998         (vrp_expr_computes_nonzero): Likewise.
7999         (compare_ranges, compare_range_with_value): Likewise.
8000         (compare_name_with_value, compare_names): Likewise.
8001         (vrp_evaluate_conditional): Likewise.
8002         (set_value_range): Handle infinity
8003         (vrp_operand_equal_p, operand_less_p): Likewise.
8004         (extract_range_from_assert): Likewise.
8005         (vrp_int_const_binop): Likewise.
8006         (extract_range_from_binary_expr): Likewise.
8007         (extract_range_from_unary_expr): Likewise.
8008         (extract_range_from_comparison): Likewise.
8009         (extract_range_from_expr): Likewise.
8010         (dump_value_range): Likewise.
8011         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
8012         (test_for_singularity): Likewise.
8013         (vrp_int_const_binop): Remove inline qualifier.
8014         (adjust_range_with_scev): Add comment.
8015         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
8016
8017 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
8018
8019         * tree-ssa-structalias.c (could_have_pointers): Tidy.
8020         (get_constraint_for): Likewise.
8021         (do_structure_copy): Likewise.
8022         (find_func_aliases): Fix references to MODIFY_EXPR.
8023         (intra_create_variable_infos): Tidy.
8024         * tree-ssa-operands.c (add_virtual_operand): Add argument
8025         IS_CALL_SITE.
8026         When adding members of alias sets, if IS_CALL_SITE is true and
8027         the symbol is not call-clobbered, skip it.
8028         Adjust all callers.
8029
8030 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8031
8032         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
8033         entry by means of emit_insn_at_entry.
8034
8035 2007-03-02  Richard Henderson  <rth@redhat.com>
8036
8037         * expr.h (promoted_input_arg): Remove decl.
8038         * function.c (promoted_input_arg): Merge into ...
8039         * combine.c (setup_incoming_promotions): ... only caller.
8040         Rearrange to avoid double loop.
8041
8042 2007-03-02  Ben Elliston  <bje@au.ibm.com>
8043             Peter Bergner  <bergner@vnet.ibm.com>
8044             Janis Johnson  <janis187@us.ibm.com>
8045
8046         * config/rs6000/dfp.md: New file.
8047         * config/rs6000/rs6000.md: Include dfp.md.
8048         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
8049         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
8050         and TDmode decimal float modes in FP registers.
8051         (num_insns_constant): Likewise.
8052         (rs6000_legitimate_offset_address_p): Likewise.
8053         (rs6000_legitimize_address): Likewise.
8054         (rs6000_legitimize_reload_address): Likewise.
8055         (rs6000_legitimate_address): Likewise.
8056         (rs6000_emit_move): Likewise.
8057         (function_arg_boundary): Likewise.
8058         (function_arg_advance): Likewise.
8059         (rs6000_darwin64_record_arg_recurse): Likewise.
8060         (function_arg): Likewise.
8061         (rs6000_gimplify_va_arg): Likewise.
8062         (rs6000_split_multireg_move): Likewise.
8063         (rs6000_output_function_epilogue): Likewise.
8064         (rs6000_output_function_epilogue): Likewise.
8065         (rs6000_register_move_cost): Likewise.
8066         (rs6000_function_value): Likewise.
8067         (rs6000_libcall_value): Likewise.
8068
8069 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
8070
8071         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
8072
8073 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
8074
8075         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
8076         Use $MULTIDIR to choose between the kernel and RTP headers,
8077         and use $WIND_BASE and $WIND_USR to locate them.
8078
8079 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8080
8081         * config/i386/i386.c (override_options): Put initialization of
8082         ix86_tune_mask and ix86_arch_mask to the correct place.
8083
8084 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8085             Michael Meissner  <michael.meissner@amd.com>
8086
8087         PR target/31019
8088         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
8089         (ARCHMASK): Define.
8090         (TARGET_CMOVE): Use ARCHMASK.
8091         (TARGET_CMPXCHG): Ditto.
8092         (TARGET_CMPXCHG8B): Ditto.
8093         (TARGET_XADD): Ditto.
8094         (TARGET_BSWAP): Ditto.
8095         * config/i386/i386.c (ix86_tune_mask): New global variable.
8096         (ix86_arch_mask): Ditto.
8097         (override_options): Initialize ix86_tune_mask and
8098         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
8099         target_flags.
8100
8101 2007-03-02  Ben Elliston  <bje@au.ibm.com>
8102
8103         PR 30992
8104         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
8105
8106 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
8107
8108         * target.h (init_dwarf_reg_sizes_extra): New target hook.
8109         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
8110         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
8111         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
8112         hook.
8113         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
8114         rs6000_init_dwarf_reg_sizes_extra): New.
8115         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
8116         SPE register high parts.
8117
8118 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
8119
8120         * Makefile.in: Add install-pdf target as
8121         copied from automake v1.10 rules.
8122         * configure.ac: Add install-pdf to target list.
8123         * configure: Regenerate.
8124
8125 2007-03-01  Paul Brook  <paul@codesourcery.com>
8126
8127         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
8128         modes to LDRD for DImode.
8129         (output_move_double): Fixup out of range ldrd/strd.
8130         (vfp_secondary_reload_class): Rename...
8131         (coproc_secondary_reload_class): ... to this.  Add wb argument.
8132         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
8133         coproc_secondary_reload_class for CLASS_IWMMXT.
8134         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
8135         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
8136
8137 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
8138
8139         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
8140         factor by the estimated number of iterations.
8141         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
8142         prefetch latency.
8143
8144         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
8145         decode_caches_intel, detect_caches_intel): New functions.
8146         (host_detect_local_cpu): Use detect_caches_amd and
8147         detect_caches_intel.
8148
8149 2007-03-01  Richard Henderson  <rth@redhat.com>
8150
8151         * expr.c (emit_move_complex_push): Export.
8152         (emit_move_complex_parts): Split out from ...
8153         (emit_move_complex): ... here.
8154         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
8155         * config/i386/i386.md (movcdi): New.
8156
8157 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
8158
8159         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
8160         size of mode1 to check for tieable modes in MMX case.
8161
8162 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
8163
8164         * Makefile.in (rtlanal.o): Depend on tree.h.
8165         * rtl.h (offset_within_section_p, split_const): Declare.
8166         * rtlanal.c: Include tree.h.
8167         (offset_within_block_p): New function, taken from
8168         mips_offset_within_object_p.
8169         (split_const): New function, taken from mips_split_const.
8170         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
8171         Declare.
8172         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
8173         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
8174         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
8175         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
8176         (m68k_illegitimate_symbolic_constant_p): New function.
8177         * config/m68k/m68k.md (movsi): Remove misleading predicates.
8178         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
8179         symbolic constant that might be outside the symbol's section,
8180         move the symbol first and then add the offset.
8181         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
8182         Override.
8183         * config/mips/mips.c (mips_split_const): Delete.
8184         (mips_offset_within_object_p): Delete.
8185         (mips_symbolic_constant_p): Use offset_within_section_p and
8186         split_const instead of mips_offset_within_object_p and
8187         mips_split_const.
8188         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
8189         (mips_legitimize_const_move, print_operand_reloc)
8190         (mips_dangerous_for_la25_p): Use split_const instead of
8191         mips_split_const.
8192
8193 2007-02-28  Eric Christopher  <echristo@apple.com>
8194
8195         * Makefile.in (install-include-dir): Don't rm -rf include.
8196
8197 2007-02-28  Richard Guenther  <rguenther@suse.de>
8198
8199         PR middle-end/30364
8200         * fold-const.c (fold_binary): Do not associate expressions
8201         with more than one variable for integer types that do not wrap.
8202
8203 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
8204
8205         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
8206         Delete, and replace with...
8207         (fold_builtin_call_array): This.  Update callers to use it.
8208         * fold-const.c (fold_build_call_list): Delete, and replace with...
8209         (fold_build_call_array): This.
8210         (fold_build_call_list_initializer): Delete, and replace with...
8211         (fold_build_call_array_initializer): This.
8212         * tree.h: Update declarations to reflect above changes.
8213
8214         * c-typeck.c (build_function_call): Store converted arguments
8215         in a stack-allocated array instead of building a list.
8216         (convert_arguments): Store arguments in the array passed in as an
8217         argument, and return the actual number of arguments.
8218         * c-format.c: (check_function_format): Pass arguments in an
8219         array instead of a list.
8220         * c-common.c (check_function_nonnull): Likewise.
8221         (check_function_sentinel): Likewise.
8222         (check_function_arguments): Likewise.
8223         * c-common.h: Update declarations to reflect above changes.
8224
8225 2007-02-28  Jan Hubicka  <jh@suse.cz>
8226
8227         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
8228         PRED_NEGATIVE_RETURN): Update outcomes.
8229
8230 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
8231
8232         * calls.c (emit_library_call_value_1): Handle partial registers
8233         correctly when building up CALL_INSN_FUNCTION_USAGE.
8234
8235 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8236
8237         * pa/predicates.md (move_src_operand): Allow zero for mode.
8238         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
8239         move pattern.
8240
8241 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
8242
8243         PR target/30970
8244         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
8245         *movv2df_internal): Enable pattern only for valid operand
8246         combinations.
8247         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
8248         tie only 128bit modes. For MMX registers, tie only 64bit modes.
8249
8250 2007-02-27  Mike Stump  <mrs@apple.com>
8251
8252         * config/darwin-crt3.c: Avoid compilation when compiling for a
8253         kext multilib.
8254
8255 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
8256
8257         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
8258         FIXED_INCLUDE_DIR.
8259         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
8260         for fixed headers and limits.h.
8261         (install-include-dir, install-headers-tar, install-headers-cpio,
8262         install-headers-cp, real-install-headers-tar,
8263         real-install-headers-cpio, real-install-headers-cp): Handle
8264         include-fixed as well as include.
8265         (install-mkheaders): Don't install files that go only in include
8266         not include-fixed.
8267         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
8268         from GCC_INCLUDE_DIR.
8269         * gcc.c (process_command): Remove special -BstageN/ handling.
8270         (do_spec_1): Add include-fixed directories.
8271
8272 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8273
8274         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
8275         _smulsi3_highpart.
8276         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
8277         New functions.
8278         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
8279         patterns.
8280
8281 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
8282
8283         * c-common.c (get_priority): Add check for
8284         SUPPORTS_INIT_PRIORITY.
8285
8286 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8287
8288         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
8289
8290         * config/bfin/bfin.c: Include "cfglayout.h".
8291         (MAX_LSETUP_DISTANCE): New macro.
8292         (struct loop_info): New members incoming, incoming_src and
8293         incoming_dest.  Delete member predecessor.
8294         (length_for_loop): New function.
8295         (bfin_optimize_loop): Handle more different loop structures.
8296         (bfin_discover_loop): Rework detection of predecessor blocks by
8297         examining incoming edges.
8298         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
8299         bfin_reorg_loops.
8300         (bfin_reorder_loops): New function.
8301         (bfin_reorg_loops): Use these three new functions.
8302
8303         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
8304         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
8305         (CONSTRAINT_LEN): Add entry for 'q'.
8306         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
8307         Add 'q' constraints.
8308         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
8309         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
8310
8311         * config/bfin/bfin.md (add_with_carry): New pattern.
8312         (s_or_u, su_optab, su_modifier): New code macros/attrs.
8313         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
8314         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
8315         support unsigned multiplies too.  Removed incorrect commutativity from
8316         operand 1 constraint where appropriate.
8317         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
8318         patterns.
8319         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
8320         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
8321         New patterns.
8322         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
8323         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
8324         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
8325         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
8326         usmulhisi_hh_huh): New patterns.
8327
8328         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
8329         lshifthi3): Fix output template to use half reg for operand 2.
8330
8331         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
8332         instead of R2.
8333
8334         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
8335
8336 2007-02-27  Andreas Schwab  <schwab@suse.de>
8337
8338         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
8339
8340 2007-02-27  Jan Hubicka  <jh@suse.cz>
8341
8342         * predict.c (last_basic_block_p): Remove.
8343         (tree_estimate_probability): Update return heuristic for commonized
8344         return blocks.
8345
8346 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
8347
8348         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
8349
8350 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
8351
8352         * doc/include/gcc-common.texi (versionsubtitle): New macro.
8353         * doc/cpp.texi: Standardize title page.
8354         * doc/cppinternals.texi: Likewise.
8355         * doc/gcc.texi: Standardize title page, remove version number
8356         from copyright page.
8357         * doc/gccint.texi: Likewise.
8358         * doc/install.texi: Standardize title page, add table of
8359         contents.
8360
8361 2007-02-26  Jan Hubicka  <jh@suse.cz>
8362
8363         * predict.def: Set outcomes according to more recent results.
8364         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
8365         Remove dead predictors.
8366         * predict.c (return_prediction): Fix pasto.
8367
8368 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8369
8370         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
8371         change; avoid a memory leak when returning early.
8372
8373 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
8374
8375         * c-decl.c (static_ctors): Move to c-common.c.
8376         (static_dtors): Likewise.
8377         (finish_function): Use c_record_cdtor_fn.
8378         (build_cdtor): Move to c-common.c.
8379         (c_write_global_declarations): Use c_build_cdtor_fns.
8380         * c-common.h (static_ctors): Declare.
8381         (static_dtors): Likewise.
8382         (c_record_cdtor_fn): Likewise.
8383         (c_build_cdtor_fns): Likewise.
8384         * c-common.c (static_ctors): New variable.
8385         (static_dtors): Likewise.
8386         (c_record_cdtor_fn): New function.
8387         (build_cdtor): Move from c-decl.c
8388         (c_build_cdtor_fns): New function.
8389
8390         * output.h (assemble_addr_to_section): Declare.
8391         (get_cdtor_priority_section): Likewise.
8392         * varasm.c (assemble_addr_to_section): New function.
8393         (get_cdtor_priority_section): Likewise.
8394         (default_named_section_asm_out_destructor): Use them.
8395         (destor_dtor_section_asm_out_destructor): Likewise.
8396         (default_named_section_asm_out_constructor): Likewise.
8397         (default_ctor_section_asm_out_constructor): Likewise.
8398         * config.gcc (*-*-vxworks*): Include vxworks.o.
8399         * config/t-vxworks (vxworks.o): New target.
8400         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
8401         (TARGET_ASM_CONSTRUCTOR): Define.
8402         (TARGET_ASM_DESTRUCTOR): Likewise.
8403         (vxworks_asm_out_constructor): Declare.
8404         (vxworks_asm_out_destructor): Likewise.
8405
8406         * c-common.c (get_priority): Check that we have not just an
8407         INTEGER_CST, but an integer constant with integeral type.
8408
8409 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
8410
8411         PR tree-optimization/30938
8412         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
8413         use &dt[nargs-1] instead of &dt[nargs] in the call to
8414         vect_is_simple_use().
8415
8416 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
8417
8418         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
8419         from register elimination as PRE_MODIFY / POST_MODIFY increments.
8420         Do not attempt to handle MEM inside auto-inc expressions.
8421         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
8422         of a register modified by an auto-inc expression.  However, do handle
8423         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
8424         (elimination_effects): Prohibit elimination of a register modified
8425         by an auto-inc expression.  Disable register elimination rules whose
8426         target register is modified by an auto-inc expression with variable
8427         increment.
8428
8429 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
8430
8431         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
8432         off-by-one error.
8433         (array_at_struct_end_p): New function.
8434         (idx_infer_loop_bounds): Use it.
8435         (estimate_numbers_of_iterations_loop): Export.
8436         * predict.c (predict_loops): Use estimated_loop_iterations_int.
8437         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
8438         (tree_estimate_probability): Call record_loop_exits.
8439         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
8440         (estimated_loop_iterations, estimated_loop_iterations_int,
8441         estimated_loop_iterations_tree): New functions.
8442         (analyze_siv_subscript_cst_affine,
8443         compute_overlap_steps_for_affine_1_2,
8444         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
8445         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
8446         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
8447         (PRED_LOOP_ITERATIONS_GUESSED): New.
8448         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
8449         * cfgloop.h (estimate_numbers_of_iterations_loop,
8450         estimated_loop_iterations_int): Declare.
8451
8452 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
8453
8454         * doc/extend.texi: Document optional priority argument to
8455         constructors and destructors.
8456         * tree.c (init_priority_for_decl): Adjust GTY markers.
8457         (init_ttree): Use priority-info hash functions for
8458         init_priority_for_decl.
8459         (tree_map_eq): Rename to ...
8460         (tree_map_base_eq): ... this.
8461         (tree_map_marked_p): Rename to ...
8462         (tree_map_base_marked_p): ... this.
8463         (tree_map_base_hash): New function.
8464         (decl_init_priority_lookup): Rework.
8465         (decl_fini_priority_lookup): New function.
8466         (decl_priority_info): New function.
8467         (decl_init_priority_insert): Use it.
8468         (decl_fini_priority_insert): Likewise.
8469         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
8470         hierarchy.
8471         (decl_restrict_base_insert): Likewise.
8472         (decl_debug_expr_insert): Likewise.
8473         (decl_value_expr_lookup): Likewise.
8474         (decl_value_expr_insert): Likewise.
8475         * tree.h (priority_type): New type.
8476         (decl_init_priority_lookup): Use priority_type.
8477         (decl_fini_priority_lookup): New function.
8478         (decl_init_priority_insert): Use priority_type.
8479         (decl_fini_priority_insert): New function.
8480         (DECL_HAS_INIT_PRIORITY): Tweak comments.
8481         (DECL_INIT_PRIORITY): Likewise.
8482         (SET_DECL_INIT_PRIORITY): Add comment.
8483         (DECL_FINI_PRIORITY): New macro.
8484         (SET_DECL_FINI_PRIORITY): Likewise.
8485         (DEFAULT_INIT_PRIORITY): Document.
8486         (MAX_INIT_PRIORITY): Likewise.
8487         (MAX_RESERVED_INIT_PRIORITY): Likewise.
8488         (tree_map_base): New type.
8489         (tree_map_base_eq): New function.
8490         (tree_map_base_hash): Likewise.
8491         (tree_map_base_marked_p): Likewise.
8492         (tree_map): Inherit from tree_map_base.
8493         (tree_map_eq): Make it a macro.
8494         (tree_map_marked_p): Likewise.
8495         (tree_int_map): Inherit from tree_map_base.
8496         (tree_int_map_eq): Make it a macro.
8497         (tree_int_map_hash): Likewise.
8498         (tree_int_map_marked_p): Likewise.
8499         (tree_priority_map): New type.
8500         (tree_priority_map_eq): New macro.
8501         (tree_priority_map_hash): Likewise.
8502         (tree_priority_map_marked_p): Likewise.
8503         * varasm.c (emults_decl): Adjust for refactoring of tree_map
8504         hierarchy.
8505         (emutls_common_1): Likewise.
8506         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
8507         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
8508         of tree_map hierarchy.
8509         * tree-cfg.c (move_stmt_r): Likewise.
8510         (new_label_mapper): Likewise.
8511         * c-tree.h (c_expand_body): Move to ...
8512         * c-common.h (c_expand_body): ... here.
8513         * c-decl.c (c_expand_body): Move to ...
8514         * c-common.c (c_expand_body): ... here.
8515         (c_common_attribute_table): Allow 1 argument for the constructor
8516         and destructor attributes.
8517         (get_priority): New function.
8518         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
8519         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
8520
8521 2007-02-24  Jan Hubicka  <jh@suse.cz>
8522
8523         PR middle-end/30509
8524         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
8525
8526 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
8527             Jan Hubicka  <jh@suse.cz>
8528
8529         PR target/30778
8530         * i386.c (counter_mode): New function.
8531         (expand_set_or_movmem_via_loop): Use it.
8532         (expand_movmem_epilogue): Likewise; fix pasto.
8533         (ix86_expand_movmem): Do emit guard even for constant counts.
8534         (ix86_expand_setmem): Likewise.
8535
8536 2007-02-25  Nick Clifton  <nickc@redhat.com>
8537
8538         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
8539         (JUMP_TABLES_IN_TEXT_SECTION): Define.
8540
8541 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
8542
8543         PR target/30770
8544         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
8545         count argument with 0x10, not with 0x16.
8546         (expand_setmem_epilogue): Ditto.
8547
8548 2007-02-24  Mike Stump  <mrs@apple.com>
8549
8550         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
8551         symbols.
8552
8553 2007-02-24  Richard Guenther  <rguenther@suse.de>
8554
8555         PR middle-end/30951
8556         * fold-const.c (fold_binary): Fold x +- CST op x for
8557         EQ_EXPR and NE_EXPR.
8558
8559 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8560
8561         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
8562
8563 2007-02-24  Jan Hubicka  <jh@suse.cz>
8564
8565         * cgraphunit.c (decide_is_function_needed): Honor
8566         -fkeep-inline-functions.
8567
8568 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8569
8570         * builtins.c (fold_builtin_modf): New.
8571         (fold_builtin_2): Use it.
8572
8573 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
8574
8575         * loop-iv.c (implies_p): Detect additional cases where A implies B.
8576         (determine_max_iter): Take additional LOOP arg; all callers changed.
8577         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
8578         one using simplifications.
8579         (simplify_using_initial_values): Return if the expression becomes
8580         invalid due to altered regs.
8581
8582 2007-02-23  DJ Delorie  <dj@redhat.com>
8583
8584         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
8585
8586 2007-02-23  Mike Stump  <mrs@apple.com>
8587
8588         * tlink.c (scan_linker_output): Parse linker messages from
8589         darwin9's linker better.
8590
8591 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
8592
8593         PR debug/29614
8594         * varpool.c (varpool_assemble_pending_decls):  Set
8595         varpool_last_needed_node to null.
8596
8597 2007-02-23  DJ Delorie  <dj@redhat.com>
8598
8599         * config/i386/i386.c (ix86_data_alignment): Don't specify an
8600         alignment bigger than the object file can handle.
8601
8602 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
8603
8604         PR target/30825
8605         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
8606         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
8607         (*movsf_1): Penalize MMX moves.
8608
8609 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
8610
8611         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
8612         2^32-1 or more times unless flag_unsafe_loop_optimizations.
8613
8614         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
8615
8616 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8617
8618         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
8619         (fold_builtin_1): Use them.
8620         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
8621         BUILT_IN_SIGNIFICAND.
8622
8623 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
8624
8625         * config/i386/i386.c (bdesc_1arg): Initialize
8626         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
8627         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
8628         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
8629         and IX86_BUILTIN_MOVSLDUP.
8630
8631 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
8632
8633         PR rtl-optimization/30841
8634         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
8635
8636 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8637
8638         * builtins.c (fold_builtin_frexp): New.
8639         (fold_builtin_2): Use it.
8640
8641 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
8642
8643         * doc/invoke.texi (Spec Files): Document getenv spec function.
8644
8645         * gcc.c (getenv_spec_function): New function.
8646         (static_spec_functions): Add it.
8647         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
8648         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
8649         header files.
8650
8651 2007-02-22  Michael Matz  <matz@suse.de
8652
8653         PR c++/29433
8654         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
8655         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
8656
8657 2007-02-22  Ian Lance Taylor  <iant@google.com>
8658
8659         PR debug/30898
8660         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
8661         (mem_loc_descriptor): Call it.
8662
8663 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
8664             Ira Rosen  <irar@il.ibm.com>
8665
8666         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
8667
8668 2007-02-22  Ira Rosen  <irar@il.ibm.com>
8669
8670         PR tree-optimization/30843
8671         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
8672         stores only after all the group is vectorized.
8673
8674 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
8675
8676         PR tree-optimization/30858
8677         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
8678         in the reduction cycle have a single use in the loop.
8679         * tree-vectorizer.h (relevant): Add documentation.
8680
8681 2007-02-20  Mike Stump  <mrs@apple.com>
8682
8683         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
8684         * configure: Regenerate.
8685
8686 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
8687
8688         Change the defaults of some parameters and options.
8689         * config/spu/spu-protos.h (spu_optimization_options): Declare.
8690         * config/spu/spu.c (spu_optimization_options): Add.
8691         (spu_override_options): Change params in spu_optimization_options.
8692         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
8693
8694         Register 127 is only 16 byte aligned when used as a frame pointer.
8695         * config/spu/spu-protos.h (spu_init_expanders): Declare.
8696         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
8697         HARD_FRAME_POINTER_REGNUM.
8698         (spu_legitimate_address):  Use regno_aligned_for_reload.
8699         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
8700         aligned when frame_pointer_needed is true.
8701         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
8702         to 8 bits.
8703         * config/spu/spu.h (INIT_EXPANDERS): Define.
8704
8705         Make sure shift and rotate instructions have valid immediate operands.
8706         * config/spu/predicates.md (spu_shift_operand): Remove.
8707         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
8708         * config/spu/constraints.md (W, O): Extend range.
8709         * config/spu/spu.md (umask, nmask): Define.
8710         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
8711         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
8712         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
8713         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
8714         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
8715         (lshr<mode>3_reg):  Fix rtl description.
8716
8717         Make sure mulhisi immediate operands are valid.
8718         * config/spu/predicates.md (imm_K_operand): Add.
8719         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
8720
8721         Generate constants using fsmbi and andi.
8722         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
8723         (print_operand, spu_split_immediate, classify_immediate,
8724         fsmbi_const_p): Handle IC_FSMBI2.
8725
8726         Correctly handle a CONST_VECTOR containing symbols.
8727         * config/spu/spu.c (print_operand): Handle HIGH correctly.
8728         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
8729         (immediate_load_p): Allow symbols that use 2 instructions to create.
8730         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
8731         with symbols when flag_pic is set.
8732         (const_vector_immediate_p): New.
8733         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
8734         accept a CONST_VECTOR with symbols.
8735         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
8736         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
8737         correctly.
8738         * config/spu/spu.md (high, low): Delete.
8739         (low_<mode>): Define.
8740
8741         Remove INTRmode and INTR_REGNUM, which didn't work.
8742         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
8743         of INTR_REGNUM.
8744         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
8745         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
8746         peephole2 pattern): Don't use INTR or 131.
8747         (movintrcc): Delete.
8748         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
8749         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
8750         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
8751         (UNSPEC_SET_INTR): Add.
8752         * config/spu/spu-modes.def (INTR): Remove.
8753
8754         More accurate warnings about run-time relocations.
8755         * config/spu/spu.c (reloc_diagnostic): Test in_section.
8756
8757         Correctly warn about immediate arguments to specific intrinsics.
8758         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
8759         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
8760         the instruction predicate.
8761
8762         Fix tree check errors with latest update.
8763         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
8764         CALL_EXPR_ARG.
8765         (spu_expand_builtin): Use CALL_EXPR_FN.
8766
8767         Add missing specific intrinsics.
8768         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
8769         si_bislede.
8770         * config/spu/spu_internals.h: Ditto.
8771
8772         Fix incorrect operand modifiers.
8773         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
8774         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
8775
8776         Optimize one case of zero_extend of a vec_select.
8777         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
8778
8779         Accept any immediate for hbr.
8780         * config/spu/spu.md (hbr):  Change s constraints to i.
8781
8782 2007-02-21  Paul Brook  <paul@codesourcery.com>
8783
8784         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
8785         condexec_count when skipping USE and CLOBBER.
8786
8787 2007-02-21  Nick Clifton  <nickc@redhat.com>
8788
8789         * common.opt (Warray-bounds): Add Warning attribute.
8790         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
8791         Likewise.
8792         (fsized-zeroes): Add Optimization attribute.
8793         (fsplit-wide-types, ftree-scev-cprop): Likewise.
8794         * c.opt (Wc++0x-compat): Add Warning attribute.
8795
8796 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
8797
8798         PR middle-end/30761
8799         * reload1.c (eliminate_regs_in_insn): In the single_set special
8800         case, attempt to re-recognize the insn before falling back to
8801         having reload fix it up.
8802
8803 2007-02-20  Eric Christopher  <echristo@gmail.com>
8804
8805         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
8806         Rewrite accordingly.
8807         (frv_read_iacc_argument): Ditto.
8808         (frv_expand_set_builtin): Take a call instead of arglist, update for
8809         above changes.
8810         (frv_expand_unop_builtin): Ditto.
8811         (frv_expand_binop_builtin): Ditto.
8812         (frv_expand_cut_builtin): Ditto.
8813         (frv_expand_binopimm_builtin): Ditto.
8814         (frv_expand_voidbinop_builtin): Ditto.
8815         (frv_expand_int_void2arg): Ditto.
8816         (frv_expand_prefetches): Ditto.
8817         (frv_expand_voidtriop_builtin): Ditto.
8818         (frv_expand_voidaccop_builtin): Ditto.
8819         (frv_expand_load_builtin): Ditto.
8820         (frv_expand_store_builtin): Ditto.
8821         (frv_expand_mdpackh_builtin): Ditto.
8822         (frv_expand_mclracc_builtin): Ditto.
8823         (frv_expand_mrdacc_builtin): Ditto.
8824         (frv_expand_mwtacc_builtin): Ditto.
8825         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
8826         calls for above.
8827
8828 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
8829
8830         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
8831         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
8832         cmpb instruction.
8833         (HAVE_GAS_DFP): Check for assembler support of decimal floating
8834         point instructions.
8835         * configure: Regenerate.
8836         * config.in: Regenerate.
8837         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
8838         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
8839         masks to power6 and power6x and to POWERPC_MASKS.
8840         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8841         _ARCH_PWR6.
8842         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
8843         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
8844         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
8845         Access PROTOTYPE as variable, not mask.
8846
8847 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
8848
8849         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
8850         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
8851         * combine.c (adjust_for_new_dest): Use it.
8852         * postreload.c (reload_combine): Likewise.
8853
8854 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
8855
8856         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
8857         notes on an insn with multiple sets, even if single_set returns
8858         non-NULL for that insn.
8859
8860 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8861
8862         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
8863         scalbn and scalbln.
8864
8865 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
8866
8867         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
8868         if user didn't pass it.
8869         * config/i386/darwin.h (CC1_SPEC): Likewise.
8870         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
8871         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
8872         -mmacosx-version-min.
8873
8874 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8875             Uros Bizjak  <ubizjak@gmail.com>
8876
8877         * optabs.h (enum optab_index): Add new OTI_scalb.
8878         (scalb_optab): Define corresponding macro.
8879         * optabs.c (init_optabs): Initialize scalb_optab.
8880         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
8881         patterns.
8882         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
8883         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
8884         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
8885         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
8886         flag_unsafe_math_optimizations is set.
8887
8888         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
8889         to implement scalbf, scalb and scalbl built-ins as inline x87
8890         intrinsics.
8891
8892 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8893             DJ Delorie <dj@redhat.com>
8894
8895         PR other/30824
8896         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
8897         (diagnostic_report_diagnostic): ... here, and turn them into real
8898         errors. If warnings are inhibited, no need to do anything.
8899
8900 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
8901
8902         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
8903         better code generation.
8904
8905 2007-02-20  Ben Elliston  <bje@au.ibm.com>
8906
8907         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
8908
8909 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
8910
8911         * config/alpha/alpha.c, config/alpha/alpha.md,
8912         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
8913         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
8914         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
8915         config/arm/lib1funcs.asm: Follow spelling conventions.
8916
8917         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
8918         config/fr30/fr30.md, config/i386/i386.h,
8919         config/iq2000/iq2000.h, config/iq2000/predicates.md,
8920         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
8921         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
8922         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
8923         config/rs6000/altivec.md, config/rs6000/rs6000.c,
8924         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
8925         config/sparc/sparc.c, config/sparc/sparc.h,
8926         config/sparc/sparc.md, config/spu/constraints.md,
8927         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
8928         conventions.
8929
8930 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
8931
8932         PR target/29943
8933         * varasm.c (use_blocks_for_decl_p): Return false for decls with
8934         alias attribute.
8935
8936 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
8937
8938         * doc/invoke.texi (-ftree-lrs): Remove.
8939
8940 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
8941
8942         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
8943         NULL.
8944
8945 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
8946
8947         * config/ia64/ia64.c (ia64_expand_builtin): Use the
8948         new CALL_EXPR_FN macro for retrieving the function
8949         declaration of the input expression.
8950
8951 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8952
8953         * c.opt (Waddress): New.
8954         * common.opt (Walways-true): Delete.
8955         (Wstring-literal-comparison): Delete.
8956         * doc/invoke.texi (Warning Options): Delete -Walways-true and
8957         -Wstring-literal-comparison. Add -Waddress.
8958         (Waddress): New.
8959         (Walways-true): Delete.
8960         (Wstring-literal-comparison): Delete.
8961         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
8962         consistently instead of -Walways-true in example.
8963         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
8964         * c-typeck.c (parser_build_binary_op): Replace
8965         -Wstring-literal-comparison and -Walways-true with -Waddress.
8966         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
8967         with -Waddress.
8968
8969 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
8970
8971         * tree-cfg.c (dump_function_to_file): Be prepared for functions
8972         without DECL_STRUCT_FUNCTION initialized.
8973
8974 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
8975
8976         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
8977         due to calls to functions taking pointers as parameters.
8978
8979 2007-02-19  Richard Henderson  <rth@redhat.com>
8980
8981         PR debug/29558
8982         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
8983         in memory.
8984
8985 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
8986
8987         * config/s390/s390.c (s390_call_saved_register_used,
8988         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
8989         accessed to the new scheme.
8990
8991 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
8992
8993         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
8994         (cris_print_index, cris_print_operand, cris_print_operand_address)
8995         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
8996         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
8997         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
8998         GET_CODE () == xxx.
8999         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
9000         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
9001         GO_IF_LEGITIMATE_ADDRESS): Ditto.
9002         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
9003         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
9004         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
9005         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
9006         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
9007         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
9008         (uminsi3, call, call_value): Ditto.
9009         (define_split: indir_to_reg_split, unnamed): Ditto.
9010
9011 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
9012
9013         PR tree-optimization/30975
9014         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
9015         wrong assert.
9016
9017 2007-02-18  Eric Christopher  <echristo@gmail.com>
9018
9019         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
9020         Remove use of arglist.
9021         (mips_expand_builtin): Remove use of arglist, pass in expr.
9022         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
9023         (mips_expand_builtin_movtf): Ditto.
9024         (mips_expand_builtin_compare): Ditto.
9025
9026 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
9027
9028         * tree-sra.c (sra_build_assignment): Replace assertion
9029         checking with a comment explaining why it can't be done.
9030
9031 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
9032
9033         PR middle-end/30833
9034         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
9035         during CALL_EXPR representation conversion.
9036         * tree-ssa-propagate.c (set_rhs): Likewise.
9037
9038 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
9039
9040         * tree-sra.c (sra_build_assignment): Disable assertion checking
9041         for now.
9042
9043 2007-02-18  Roger Sayle  <roger@eyesopen.com>
9044
9045         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
9046         instead of calling build2 with a GIMPLE_MODIFY_STMT.
9047         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
9048         Likewise.
9049         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
9050         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
9051         gimplify_init_ctor_eval_range, gimple_push_cleanup,
9052         gimplify_omp_for, gimplify_omp_atomic_pipeline,
9053         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
9054         force_gimple_operand): Likewise.
9055         * ipa-cp.c (constant_val_insert): Likewise.
9056         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
9057         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
9058         perfect_nestify): Likewise.
9059         * langhooks.c (lhd_omp_assignment): Likewise.
9060         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
9061         lower_copyprivate_clauses, lower_send_clauses,
9062         lower_send_shared_vars, expand_parallel_call,
9063         expand_omp_for_generic, expand_omp_for_static_nochunk,
9064         expand_omp_for_static_chunk, expand_omp_sections,
9065         lower_omp_single_copy, lower_omp_for_lastprivate,
9066         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
9067         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
9068         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
9069         Likewise.
9070
9071 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
9072
9073         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
9074         config/sh/sh.md: Follow spelling conventions.
9075
9076         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
9077         config/frv/predicates.md: Follow spelling conventions.
9078
9079         * config/m68k/linux-unwind.h: Fix a comment typo.
9080         * target.h: Follow spelling conventions.
9081
9082 2007-02-18  Roger Sayle  <roger@eyesopen.com>
9083
9084         PR rtl-optimization/28173
9085         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
9086         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
9087         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
9088         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
9089         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
9090
9091 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9092
9093         * builtins.c (fold_builtin_load_exponent): New.
9094         (fold_builtin_2): Use it.
9095
9096 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
9097
9098         PR rtl-optimization/30773
9099         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
9100         if we fail to attach a REG_EQUIV note.
9101
9102 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
9103             Roger Sayle  <roger@eyesopen.com>
9104
9105         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
9106
9107 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
9108
9109         * calls.c (initialize_argument_information): Pass original EXP
9110         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
9111         code to split complex arguments here, as part of initializing the
9112         ARGS array.
9113         (expand_call): Remove code that builds a list of arguments and
9114         inserts implicit arguments into it.  Instead, just count how many
9115         implicit arguments there will be so we can determine the size of
9116         the ARGS array, and let initialize_argument_information do the work.
9117         (split_complex_values): Delete unused function.
9118
9119 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
9120
9121         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
9122
9123 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
9124
9125         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
9126         for arg pointer based indexed addressing.
9127
9128 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
9129
9130         * config/ia64/ia64.h, config/ia64/ia64.md,
9131         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
9132         spelling conventions.
9133
9134 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9135
9136         * config/m68k/m68k.c (split_di): New.
9137         * config/m68k/m68k-protos.h: Declare split_di.
9138         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
9139           Improve predicate handling and split constant shifts.
9140
9141 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9142
9143         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
9144         parameter for register bitfield operations, general predicates
9145         cleanup
9146
9147 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9148
9149         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
9150         * config/m68k/linux-unwind.h: New file.
9151
9152 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
9153
9154         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
9155         config/i386/athlon.md, config/ia64/ia64.md,
9156         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
9157         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
9158         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
9159         tree-ssa-loop-niter.c, tree-vect-analyze.c,
9160         tree-vect-transform.c: Fix comment typos.
9161
9162 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
9163
9164         * sched-deps.c (find_insn_list): Remove.
9165         * sched-int.h: Remove the prototype for find_insn_list.
9166
9167 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
9168
9169         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
9170         to linker.
9171         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
9172         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
9173         darwin_rs6000_override_options.
9174         (C_COMMON_OVERRIDE_OPTIONS): Expect
9175         darwin_macosx_version_min to be non-NULL always.
9176         (TARGET_C99_FUNCTIONS): Likewise.
9177         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
9178         (DARWIN_MINVERSION_SPEC): New.
9179         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
9180         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
9181         to cc1*.
9182         (DARWIN_MINVERSION_SPEC): New.
9183         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
9184         value.
9185         * config/darwin-c.c (darwin_cpp_builtins): Expect
9186         darwin_macosx_version_min to be non-NULL always.
9187
9188         * config/rs6000/rs6000.c: Clean up trailing whitespace.
9189
9190 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
9191
9192         * config/i386/i386.h (x86_use_xchgb): New.
9193         (TARGET_USE_XCHGB): New macro.
9194         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
9195         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
9196         Split after reload into bswaphi for shifts of 8.
9197         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
9198         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
9199         or when optimizing for size.
9200
9201 2007-02-16  Richard Guenther  <rguenther@suse.de>
9202             Christian Bruel  <christian.bruel@st.com>
9203
9204         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
9205         DECLs but prefer SSA_NAMEs over DECLs.
9206
9207 2007-02-16  Richard Guenther  <rguenther@suse.de>
9208
9209         * tree-flow-inline.h (single_imm_use_p): Remove.
9210         (zero_imm_uses_p): Likewise.
9211         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
9212         instead of single_imm_use_p.
9213         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
9214         zero_imm_uses_p.
9215
9216 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9217
9218         PR other/27843
9219         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
9220         nested double- and backquotes.
9221
9222 2007-02-15  Roger Sayle  <roger@eyesopen.com>
9223
9224         PR middle-end/30391
9225         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
9226         should be unreachable.
9227         (build2_stat): Allow construction of MODIFY_EXPR at any time.
9228         For the time being redirect GIMPLE_MODIFY_STMT to the new
9229         (renamed) build_gimple_modify_stmt_stat.
9230         (build2_gimple_stat): Rename to...
9231         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
9232         Always build a GIMPLE_MODIFY_STMT node.
9233         * tree.h (build2_gimple, build2_gimple_stat): Delete.
9234         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
9235         declarations.
9236
9237         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
9238         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
9239         * tree-complex.c (set_component_ssa_name, expand_complex_move,
9240         expand_complex_div_wide): Likewise.
9241         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
9242         * tree-ssa-loop-im.c (schedule_sm): Likewise.
9243         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
9244         * tree-ssa-loop-manip.c (create_iv): Likewise.
9245         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
9246         abs_replacement): Likewise.
9247         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
9248         realify_fake_stores): Likewise.
9249
9250         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
9251         node rather than a GIMPLE_MODIFY_STMT node.
9252         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
9253         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
9254         Likewise.
9255         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
9256         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
9257         GIMPLE_MODIFY_STMT.
9258
9259 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9260
9261         PR middle-end/30433
9262         * fold-const.c (fold_comparison): Add back the
9263         folding of constant complex comparisions.
9264
9265 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9266
9267         PR middle-end/30729
9268         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
9269         effects unknown to this function, return early.
9270
9271 2007-02-15  Ian Lance Taylor  <iant@google.com>
9272
9273         * lower-subreg.c (move_eh_region_note): New static function.
9274         (resolve_simple_move): Call it.
9275         (decompose_multiword_subregs): Track blocks for which we resolve a
9276         simple move which is also a control flow insn.  Pass them to
9277         find_many_sub_basic_blocks.
9278         (pass_lower_subreg): Add TODO_verify_flow.
9279         (pass_lower_subreg2): Likewise.
9280
9281 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9282             Brooks Moses  <brooks.moses@codesourcery.com>
9283             Lee Millward  <lee.millward@codesourcery.com>
9284
9285         * tree.h (enum tree_code_class): Add tcc_vl_exp.
9286         (VL_EXP_CLASS_P): New.
9287         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
9288         TREE_CODE_LENGTH.
9289         (TREE_OPERAND_CHECK_CODE): Likewise.
9290         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
9291         (TREE_RTL_OPERAND_CHECK): Likewise.
9292         (tree_operand_check_failed): Make second parameter the whole tree
9293         instead of its code.  Fixed callers.
9294         (VL_EXP_CHECK): New.
9295         (TREE_OPERAND_LENGTH): New.
9296         (VL_EXP_OPERAND_LENGTH): New.
9297         (CALL_EXPR_FN): New.
9298         (CALL_EXPR_STATIC_CHAIN): New.
9299         (CALL_EXPR_ARGS): New.
9300         (CALL_EXPR_ARG): New.
9301         (call_expr_nargs): New.
9302         (CALL_EXPR_ARGP): New.
9303         (build_nt_call_list): Declare.
9304         (build_vl_exp_stat): Declare.
9305         (build_vl_exp): New.
9306         (build_call_list): Declare.
9307         (build_call_nary): Declare.
9308         (build_call_valist): Declare.
9309         (build_call_array): Declare.
9310         (call_expr_arg): Declare.
9311         (call_expr_argp): Declare.
9312         (call_expr_arglist): Declare.
9313         (fold_build_call_list): Declare.
9314         (fold_build_call_list_initializer): Declare.
9315         (fold_call_expr): Declare to replace fold_builtin.
9316         (fold_builtin_fputs): Update to agree with modified definition.
9317         (fold_builtin_strcpy): Likewise.
9318         (fold_builtin_strncpy): Likewise.
9319         (fold_builtin_memory_chk): Likewise.
9320         (fold_builtin_stxcpy_chk): Likewise.
9321         (fold_builtin_strncpy_chk): Likewise.
9322         (fold_builtin_next_arg): Likewise.
9323         (fold_build_call_expr): Declare.
9324         (fold_builtin_call_list): Declare.
9325         (fold_builtin_call_valist): Declare.
9326         (build_call_expr): Declare.
9327         (validate_arglist): Update to agree with modified definition.
9328         (tree_operand_length): New.
9329         (call_expr_arg_iterator): New.
9330         (init_call_expr_arg_iterator): New.
9331         (next_call_expr_arg): New.
9332         (first_call_expr_arg): New.
9333         (more_call_expr_args_p): New.
9334         (FOR_EACH_CALL_EXPR_ARG): New.
9335
9336         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
9337         and tcc_gimple_stmt.
9338         (tree_code_size): Update documentation.  Use sizeof (tree) rather
9339         than sizeof (char *).
9340         (tree_size): Likewise.  Add case for tcc_vl_exp.
9341         (tree_node_structure): Add case for tcc_vl_exp.
9342         (contains_placeholder_p): Likewise.
9343         (substitute_in_expr): Likewise.
9344         (substitute_placeholder_in_expr): Likewise.
9345         (stabilize_reference_1): Likewise.
9346         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
9347         to diagnose breakage of this interface for constructing CALL_EXPRs.
9348         (build_nt): Add similar assertion here.
9349         (build_nt_call_list): New.
9350         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
9351         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
9352         TREE_CODE_LENGTH.
9353         (get_callee_fndecl): Use new CALL_EXPR accessors.
9354         (tree_operand_check_failed): Change parameters to pass entire node
9355         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
9356         (process_call_operands): New.
9357         (build_vl_exp_stat): New.
9358         (build_call_list): New.
9359         (build_call_nary): New.
9360         (build_call_valist): New.
9361         (build_call_array): New.
9362         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9363         (call_expr_arglist): New.
9364
9365         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
9366         tcc_vl_exp instead of a fixed-size tcc_expression.
9367
9368         * doc/c-tree.texi (CALL_EXPR): Document new representation and
9369         accessors for CALL_EXPRs.
9370         (AGGR_INIT_EXPR): Likewise.
9371
9372 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9373             Brooks Moses  <brooks.moses@codesourcery.com>
9374             Lee Millward  <lee.millward@codesourcery.com>
9375
9376         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
9377         (expand_builtin_nonlocal_goto): Change parameter to be entire
9378         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
9379         (expand_builtin_prefetch): Likewise.
9380         (expand_builtin_classify_type): Likewise.
9381         (mathfn_built_in): Return NULL_TREE instead of 0.
9382         (expand_errno_check): Use new CALL_EXPR accessors.
9383         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
9384         Return NULL_RTX instead of 0.
9385         (expand_builtin_mathfn_2): Likewise.
9386         (expand_builtin_mathfn_3): Likewise.
9387         (expand_builtin_interclass_mathfn): Likewise.
9388         (expand_builtin_sincos): Likewise.
9389         (expand_builtin_cexpi): Likewise.
9390         (expand_builtin_int_roundingfn): Likewise.
9391         (expand_builtin_int_roundingfn_2): Likewise.
9392         (expand_builtin_pow): Likewise.
9393         (expand_builtin_powi): Likewise.
9394         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
9395         of arglist, fixing callers appropriately.  Use new CALL_EXPR
9396         accessors and constructors.  Return NULL_RTX instead of 0.
9397         (expand_builtin_strstr): Likewise.
9398         (expand_builtin_strchr): Likewise.
9399         (expand_builtin_strrchr): Likewise.
9400         (expand_builtin_strpbrk): Likewise.
9401         (expand_builtin_memcpy): Likewise.
9402         (expand_builtin_mempcpy): Likewise.
9403         (expand_builtin_mempcpy_args): New.
9404         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
9405         (expand_builtin_memmove_args): New.
9406         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
9407         (expand_movstr): Likewise.
9408         (expand_builtin_strcpy): Likewise.
9409         (expand_builtin_strcpy_args): New.
9410         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
9411         (expand_builtin_strncpy): Likewise.
9412         (expand_builtin_memset): Likewise.
9413         (expand_builtin_memset_args): New.
9414         (expand_builtin_bzero): Similarly to expand_builtin_memset.
9415         (expand_builtin_memcmp): Likewise.
9416         (expand_builtin_strcmp): Likewise.
9417         (expand_builtin_strncmp): Likewise.
9418         (expand_builtin_strcat): Likewise.
9419         (expand_builtin_strncat): Likewise.
9420         (expand_builtin_strspn): Likewise.
9421         (expand_builtin_strcspn): Likewise.
9422         (expand_builtin_args_info): Likewise.
9423         (expand_builtin_va_start): Likewise.
9424         (gimplify_va_arg_expr): Likewise.
9425         (expand_builtin_va_end): Likewise.
9426         (expand_builtin_va_copy): Likewise.
9427         (expand_builtin_frame_address): Likewise.
9428         (expand_builtin_alloca): Likewise.
9429         (expand_builtin_bswap): Likewise.
9430         (expand_builtin_unop): Likewise.
9431         (expand_builtin_fputs): Likewise.
9432         (expand_builtin_expect): Likewise.
9433         (expand_builtin_fabs): Likewise.
9434         (expand_builtin_copysign): Likewise.
9435         (expand_builtin_printf): Likewise.
9436         (expand_builtin_fprintf): Likewise.
9437         (expand_builtin_sprintf): Likewise.
9438         (expand_builtin_init_trampoline): Likewise.
9439         (expand_builtin_signbit): Likewise.
9440         (expand_builtin_fork_or_exec): Likewise.
9441         (expand_builtin_sync_operation): Likewise.
9442         (expand_builtin_compare_and_swap): Likewise.
9443         (expand_builtin_lock_test_and_set): Likewise.
9444         (expand_builtin_lock_release): Likewise.
9445         (expand_builtin): Likewise.
9446         (builtin_mathfn_code): Likewise.
9447
9448         (fold_builtin_constant_p): Pass call arguments individually instead
9449         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9450         accessors and constructors.  Return NULL_TREE instead of 0.
9451         (fold_builtin_expect): Likewise.
9452         (fold_builtin_classify_type): Likewise.
9453         (fold_builtin_strlen): Likewise.
9454         (fold_builtin_nan): Likewise.
9455         (integer_valued_real_p): Likewise.
9456         (fold_trunc_transparent_mathfn): Likewise.
9457         (fold_fixed_mathfn): Likewise.
9458         (fold_builtin_cabs): Likewise.
9459         (fold_builtin_sqrt): Likewise.
9460         (fold_builtin_cbrt): Likewise.
9461         (fold_builtin_cos): Likewise.
9462         (fold_builtin_cosh): Likewise.
9463         (fold_builtin_tan): Likewise.
9464         (fold_builtin_sincos): Likewise.
9465         (fold_builtin_cexp): Likewise.
9466         (fold_builtin_trunc): Likewise.
9467         (fold_builtin_floor): Likewise.
9468         (fold_builtin_ceil): Likewise.
9469         (fold_builtin_round): Likewise.
9470         (fold_builtin_int_roundingfn): Likewise.
9471         (fold_builtin_bitop): Likewise.
9472         (fold_builtin_bswap): Likewise.
9473         (fold_builtin_logarithm): Likewise.
9474         (fold_builtin_hypot): Likewise.
9475         (fold_builtin_pow): Likewise.
9476         (fold_builtin_powi): Likewise.
9477         (fold_builtin_exponent): Likewise.
9478         (fold_builtin_memset): Likewise.
9479         (fold_builtin_bzero): Likewise.
9480         (fold_builtin_memory_op): Likewise.
9481         (fold_builtin_bcopy): Deleted; call site changed to invoke
9482         fold_builtin_memory_op directly.
9483         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
9484         (fold_builtin_strncpy): Likewise.
9485         (fold_builtin_memcmp): Likewise.
9486         (fold_builtin_strcmp): Likewise.
9487         (fold_builtin_strncmp): Likewise.
9488         (fold_builtin_signbit): Likewise.
9489         (fold_builtin_copysign): Likewise.
9490         (fold_builtin_isascii): Likewise.
9491         (fold_builtin_toascii): Likewise.
9492         (fold_builtin_isdigit): Likewise.
9493         (fold_builtin_fabs): Likewise.
9494         (fold_builtin_abs): Likewise.
9495         (fold_builtin_fmin_fmax): Likewise.
9496         (fold_builtin_carg): Likewise.
9497         (fold_builtin_classify): Likewise.
9498         (fold_builtin_unordered_cmp): Likewise.
9499
9500         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
9501         New functions split out from fold_builtin_1.
9502         (fold_builtin_n): New.
9503         (fold_builtin_varargs): New.
9504         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
9505         instead.
9506         (fold_call_expr): New.
9507         (build_function_call_expr): Rewrite to use new helper function.
9508         (fold_builtin_call_list): New.
9509         (build_call_expr): New.
9510         (fold_builtin_call_valist): New.
9511         (rewrite_call_expr): New.
9512         (validate_arg): New.
9513         (validate_arglist): Change parameter to be entire CALL_EXPR instead
9514         of an arglist.  Change return type to bool.  Use new CALL_EXPR
9515         accessors.
9516
9517         (fold_builtin_strstr):  Pass call arguments individually instead
9518         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9519         accessors and constructors.  Return NULL_TREE instead of 0.
9520         (fold_builtin_strchr): Likewise.
9521         (fold_builtin_strrchr): Likewise.
9522         (fold_builtin_strpbrk): Likewise.
9523         (fold_builtin_strcat): Likewise.
9524         (fold_builtin_strncat): Likewise.
9525         (fold_builtin_strspn): Likewise.
9526         (fold_builtin_strcspn): Likewise.
9527         (fold_builtin_fputs): Likewise.
9528         (fold_builtin_next_arg): Likewise.
9529         (fold_builtin_sprintf): Likewise.
9530
9531         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
9532         NULL_RTX instead of 0.
9533         (expand_builtin_memory_chk): Likewise.
9534         (maybe_emit_chk_warning): Likewise.
9535         (maybe_emit_sprintf_chk_warning): Likewise.
9536
9537         (fold_builtin_object_size): Pass call arguments individually instead
9538         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9539         accessors and constructors.  Return NULL_TREE instead of 0.
9540         (fold_builtin_memory_chk): Likewise.
9541         (fold_builtin_stxcpy_chk): Likewise.
9542         (fold_builtin_strncpy_chk): Likewise.
9543         (fold_builtin_strcat_chk): Likewise.
9544         (fold_builtin_strcat_chk): Likewise.
9545         (fold_builtin_strncat_chk): Likewise.
9546         (fold_builtin_sprintf_chk): Likewise.
9547         (fold_builtin_snprintf_chk): Likewise.
9548         (fold_builtin_printf): Likewise.
9549         (fold_builtin_vprintf): Likewise.
9550
9551         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
9552         constructors.
9553         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
9554         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9555         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
9556         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
9557         (fold_unary): Likewise.
9558         (fold_binary): Likewise.
9559         (fold_ternary): Remove CALL_EXPR case, since they are no longer
9560         ternary expressions.
9561         (fold): Add logic for tcc_vl_exp.
9562         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
9563         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9564         (fold_build3_stat): Add assertion to flag broken interface for
9565         constructing CALL_EXPRs.
9566         (fold_build_call_list): New.
9567         (fold_build_call_list_initializer): New.
9568         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
9569         constructors.
9570         (fold_strip_sign_ops): Likewise.
9571
9572 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9573             Brooks Moses  <brooks.moses@codesourcery.com>
9574             Lee Millward  <lee.millward@codesourcery.com>
9575
9576         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
9577         accessors and dump arguments explicitly.
9578
9579         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
9580         TREE_CODE_LENGTH.
9581         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
9582         explicitly.
9583         (print_call_name): Use new CALL_EXPR accessors.
9584
9585         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
9586         CALL_EXPR arguments explicitly instead of as a list.  Use
9587         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9588
9589         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
9590         (vrp_visit_stmt): Likewise.
9591
9592         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
9593         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
9594         TREE_CODE_LENGTH.
9595         (force_move_till_expr): Likewise.
9596
9597         * targhooks.c (default_external_stack_protect_fail): Use
9598         build_call_expr instead of build_function_call_expr.
9599         (default_hidden_stack_protect_fail): Likewise.
9600
9601         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
9602         build the call.
9603
9604         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
9605         and walk arguments explicitly.
9606
9607         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
9608         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9609         (expand_simple_operations): Likewise.
9610         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
9611
9612         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
9613         of TREE_CODE_LENGTH.
9614         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
9615
9616         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
9617         instead of TREE_CODE_LENGTH.
9618
9619         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
9620         (tree_ic_transform): Likewise.
9621         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
9622         parameter instead of arglist.  Fix callers.
9623         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
9624         (tree_stringops_transform): Likewise.
9625         (tree_indirect_call_to_profile): Likewise.
9626         (tree_stringops_values_to_profile): Likewise.
9627
9628         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
9629         (eliminate_tail_call): Likewise.
9630
9631         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
9632
9633         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
9634         Use TREE_OPERAND_LENGTH and generalize to handle any number of
9635         operands.
9636         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
9637
9638         * omp-low.c (build_omp_barrier): Use build_call_expr.
9639         (lower_rec_input_clauses): Likewise.
9640         (lower_reduction_clauses): Likewise.
9641         (expand_parallel_call): Likewise.
9642         (maybe_catch_exception): Likewise.
9643         (expand_omp_for_generic): Likewise.
9644         (expand_omp_for_static_nochunk): Likewise.
9645         (expand_omp_sections): Likewise.
9646         (lower_omp_single_simple): Likewise.
9647         (lower_omp_single_copy): Likewise.
9648         (lower_omp_master): Likewise.
9649         (lower_omp_ordered): Likewise.
9650         (lower_omp_critical): Likewise.
9651
9652         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
9653         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
9654
9655         * tree-gimple.c (is_gimple_call_addr): Fix doc.
9656         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
9657         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
9658
9659         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
9660         and generalize to handle any number of operands.
9661         (chrec_contains_undetermined): Likewise.
9662         (tree_contains_chrecs): Likewise.
9663         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
9664
9665         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
9666
9667         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
9668         fold_call_expr instead of fold_builtin.
9669         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
9670         match declarations there.
9671         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
9672         updates.
9673
9674         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
9675         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9676
9677         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
9678         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
9679
9680         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
9681         accessors.
9682
9683         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
9684         (execute_cse_sincos): Use new CALL_EXPR accessors.
9685
9686         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
9687
9688         * gimple-low.c (lower_function_body): Use build_call_expr.
9689         (lower_builtin_setjmp): Likewise.
9690
9691         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
9692         (set_storage_via_libcall): Likewise.
9693         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
9694         instead of TREE_CODE_LENGTH.
9695         (expand_expr_real_1): Use new CALL_EXPR accessors.
9696
9697         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
9698         generalize to handle any number of operands.
9699         (TB_parent_eq): Likewise.
9700
9701         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
9702         (strip_builtin_expect): Likewise.
9703
9704         * function.c (gimplify_parameters): Use build_call_expr.
9705
9706         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
9707         instead of TREE_CODE_LENGTH.
9708
9709         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
9710         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
9711
9712         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
9713         iterators.
9714
9715         * gimplify.c (build_stack_save_restore): Use build_call_expr.
9716         (gimplify_decl_expr): Likewise.
9717         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
9718         Use new CALL_EXPR iterators.
9719         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
9720         (gimplify_modify_expr_to_memset): Likewise.
9721         (gimplify_variable_sized_compare): Likewise.
9722         (gimplify_omp_atomic_fetch_op): Likewise.
9723         (gimplify_omp_atomic_pipeline): Likewise.
9724         (gimplify_omp_atomic_mutex): Likewise.
9725         (gimplify_function_tree): Likewise.
9726
9727         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
9728         (call_expr_flags): Likewise.
9729         (expand_call): Likewise.
9730
9731         * except.c (expand_builtin_eh_return_data_regno): Pass entire
9732         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
9733         accessors.
9734
9735         * coverage.c (create_coverage): Use build_call_expr.
9736
9737         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
9738         (temp_call_expr_obstack): New.
9739         (pool_copy_list): Delete.
9740         (temp_copy_call_expr): New.
9741         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
9742         CALL_EXPR accessors.  Get rid of special goo for copying argument
9743         lists and use temp_copy_call_expr instead.
9744         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
9745         CALL_EXPR accessors.
9746         (create_expression_by_pieces): Likewise.  Use build_call_array
9747         to construct the result instead of fold_build3.
9748         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
9749         dealing with argument lists.
9750         (init_pre): Remove references to expression_node_pool and
9751         list_node_pool.  Init temp_call_expr_obstack instead.
9752         (fini_pre): Remove references to expression_node_pool and
9753         list_node_pool.
9754
9755         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
9756         and walk arguments explicitly instead of as a list.
9757
9758         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
9759         (mx_register_decls): Likewise.
9760         (mudflap_register_call): Likewise.
9761         (mudflap_finish_file): Likewise.
9762
9763         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
9764         (ipa_callsite_compute_param): Likewise.
9765
9766         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
9767         accessors and constructor.
9768
9769         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
9770         accessors and constructor.
9771         (convert_tramp_reference): Likewise.
9772         (convert_call_expr): Likewise.
9773         (finalize_nesting_tree_1): Likewise.
9774
9775         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
9776         accessors.
9777
9778         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
9779
9780         * tree-inline.c (initialize_inlined_parameters): Pass entire
9781         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
9782         accessors.
9783         (estimate_num_insns_1): Use new CALL_EXPR accessors.
9784         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
9785
9786         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
9787         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9788         (vectorizable_reduction): Likewise.
9789         (vectorizable_call): Use new CALL_EXPR iterators.
9790         (vectorizable_conversion): Use build_call_expr.
9791         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
9792         (vect_gen_widened_results_half): Use build_call_expr.
9793         (vect_setup_realignment): Likewise.
9794         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
9795
9796         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
9797         (pass_through_call): Likewise.
9798         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
9799         fold_builtin.
9800
9801         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
9802         (tree_gen_pow2_profiler): Likewise.
9803         (tree_gen_one_value_profiler): Likewise.
9804         (tree_gen_ic_func_profiler): Likewise.
9805         (tree_gen_average_profiler): Likewise.
9806         (tree_gen_ior_profiler): Likewise.
9807
9808         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
9809         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
9810         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9811
9812         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
9813         of TREE_CODE_LENGTH.
9814
9815         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
9816         of TREE_CODE_LENGTH.
9817
9818         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
9819         constructor.
9820         (convert_to_integer): Likewise.
9821
9822         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
9823         accessors.
9824
9825 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9826             Brooks Moses  <brooks.moses@codesourcery.com>
9827             Lee Millward  <lee.millward@codesourcery.com>
9828
9829         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
9830         accessors.
9831         * config/frv/frv.c (frv_expand_builtin): Likewise.
9832         * config/s390/s390.c (s390_expand_builtin): Likewise.
9833
9834         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
9835         (sparc_expand_builtin): Use new CALL_EXPR accessors.
9836
9837         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
9838         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
9839         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
9840         (ix86_expand_store_builtin): Likewise.
9841         (ix86_expand_unop_builtin): Likewise.
9842         (ix86_expand_unop1_builtin): Likewise.
9843         (ix86_expand_sse_compare): Likewise.
9844         (ix86_expand_sse_comi): Likewise.
9845         (ix86_expand_vec_init_builtin): Likewise.
9846         (ix86_expand_vec_ext_builtin): Likewise.
9847         (ix86_expand_vec_set_builtin): Likewise.
9848         (ix86_expand_builtin): Use new CALL_EXPR accessors.
9849
9850         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
9851         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
9852
9853         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
9854         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
9855         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
9856
9857         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
9858         build_call_expr.
9859         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
9860         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
9861         arglist.  Use new CALL_EXPR accessors.  Fix callers.
9862         (altivec_expand_abs_builtin): Likewise.
9863         (rs6000_expand_binop_builtin): Likewise.
9864         (altivec_expand_predicate_builtin): Likewise.
9865         (altivec_expand_lv_builtin): Likewise.
9866         (spe_expand_stv_builtin): Likewise.
9867         (altivec_expand_stv_builtin): Likewise.
9868         (rs6000_expand_ternop_builtin): Likewise.
9869         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
9870         (altivec_expand_st_builtin): Likewise.
9871         (altivec_expand_dst_builtin): Likewise.
9872         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
9873         arglist.  Use new CALL_EXPR accessors.  Fix callers.
9874         (altivec_expand_vec_set_builtin): Likewise.
9875         (altivec_expand_vec_ext_builtin): Likewise.
9876         (altivec_expand_builtin): Use new CALL_EXPR accessors.
9877         (spe_expand_builtin): Likewise.
9878         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
9879         arglist.  Use new CALL_EXPR accessors.  Fix callers.
9880         (spe_expand_evsel_builtin): Likewise.
9881         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
9882         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
9883
9884         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
9885         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
9886         (arm_expand_unop_builtin): Likewise.
9887         (arm_expand_builtin): Use new CALL_EXPR accessors.
9888
9889         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
9890         accessors.
9891
9892         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
9893         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
9894         (bfin_expand_unop_builtin): Likewise.
9895         (bfin_expand_builtin): Use new CALL_EXPR accessors.
9896
9897 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9898             Brooks Moses  <brooks.moses@codesourcery.com>
9899             Lee Millward  <lee.millward@codesourcery.com>
9900
9901         * c-semantics.c (build_stmt): Add internal diagnostic check.
9902
9903         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
9904         accessors.  Print arguments explicitly instead of as a list.
9905
9906         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
9907
9908         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
9909         (c_finish_omp_flish): Likewise.
9910
9911         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
9912         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
9913         instead of TREE_CODE_LENGTH.
9914         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
9915         (c_warn_unused_result): Likewise.
9916
9917 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9918
9919         PR c/26494
9920         * doc/invoke.texi (Warning Options): Remove
9921         -Werror-implicit-function-declaration.
9922         (Wimplicit-function-declaration): Update description.
9923         * opts.c (common_handle_option): Move handling of -Werror=* to...
9924         (enable_warning_as_error): ...here.
9925         * opts.h (enable_warning_as_error): Declare.
9926         * c-decl.c (implicit_decl_warning): Unless
9927         -Wno-implicit-function-declaration is given, emit a pedwarn if
9928         -std=c99 or emit a warning if -Wimplicit-function-declaration.
9929         * c.opt (Wimplicit-function-declaration): Replace
9930         mesg_implicit_function_declaration with
9931         warn_implicit_function_declaration.
9932         * c-opts.c (c_common_handle_option):
9933         -Werror-implicit-function-declaration is exactly equal as
9934         -Werror=implicit-function-declaration.
9935         (set_Wimplicit): Replace mesg_implicit_function_declaration with
9936         warn_implicit_function_declaration.
9937         (c_common_post_options): -Wimplict-function-declaration is enabled
9938         by default by -std=c99, otherwise is disabled by default.
9939         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
9940
9941 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
9942
9943         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
9944         DECL on the rhs to a DECL on the lhs for debug info purposes if the
9945         former is ignored but not the latter.
9946
9947 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
9948
9949         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
9950         is made and the reference doesn't use the alias set of its type,
9951         do not create the temporary using that type.
9952
9953 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
9954
9955         * jump.c: Remove prototypes for delete_computation and
9956         delete_prior_computation.
9957
9958 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
9959
9960         * jump.c (get_label_after): Delete.
9961         (get_label_before, delete_computation, delete_jump,
9962         delete_prior_computation, follow_jumps): Move...
9963         * reorg.c (delete_computation, delete_prior_computation): ... here...
9964         (get_label_before, delete_jump): ... making these static ...
9965         (follow_jumps): ... and simplifying this since it only runs after
9966         reload.
9967         * rtl.h (get_label_after, get_label_before, delete_jump,
9968         follow_jumps): Delete prototypes.
9969
9970 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
9971
9972         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
9973
9974 2007-02-15  Nick Clifton  <nickc@redhat.com>
9975
9976         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
9977         order to prevent it from being munged by the target.
9978
9979 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
9980
9981         * config/i386/i386.md: Remove misleading comment.
9982
9983 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9984
9985         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
9986         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
9987         invalid patterns.
9988
9989 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9990
9991         * tree-sra.c (instantiate_missing_elements): Canonicalize
9992         bit-field types.
9993         (sra_build_assignment): New.
9994         (generate_copy_inout, generate_element_copy,
9995         generate_element_zero, generate_one_element_init): Use it.
9996
9997 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
9998
9999         * tree-sra.c (instantiate_missing_elements): Canonicalize
10000         bit-field types.
10001         (sra_build_assignment): New.
10002         (generate_copy_inout, generate_element_copy,
10003         generate_element_zero, generate_one_element_init): Use it.
10004
10005 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10006
10007         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
10008         limbo die nodes.
10009
10010 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
10011
10012         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
10013         types as aggregates not scalars.
10014         * function.c (assign_stack_temp_for_type): Likewise.
10015
10016 2007-02-14  Roger Sayle  <roger@eyesopen.com>
10017             Zdenek Dvorak  <dvorakz@suse.cz>
10018
10019         * tree-dump.c (dump_switch_p_1): Require exact match of the option
10020         name.
10021
10022 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
10023
10024         * passes.c (next_pass_1): Clear the next field of the copied
10025         pass structure.
10026
10027 2007-02-14  Richard Henderson  <rth@redhat.com>
10028
10029         * tree-sra.c (early_sra): New.
10030         (decl_can_be_decomposed_p): Deny va_list if early_sra.
10031         (tree_sra_early, pass_sra_early): New.
10032         * tree-pass.h (pass_sra_early): Declare.
10033         * passes.c (init_optimization_passes): Use it.
10034
10035 2007-02-14  Richard Guenther  <rguenther@suse.de>
10036
10037         * flags.h (issue_strict_overflow_warning): Convert to a macro.
10038
10039 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
10040
10041          PR tree-optimization/30771
10042         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
10043         also phi nodes.
10044         (vect_analyze_operations): Induction phis can now be marked as
10045         used_in_loop.
10046         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
10047         Update documentation accordingly.
10048
10049 2007-02-14  Nick Clifton  <nickc@redhat.com>
10050
10051         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
10052         most 3 arguments are supported.
10053         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
10054
10055 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
10056
10057         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
10058         Ensure dst->current is valid.
10059
10060 2007-02-13  Paul Brook  <paul@codesourcery.com>
10061
10062         * config.gcc: Add arm*-*-uclinux-*eabi.
10063         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
10064         (SUBTARGET_EXTRA_LINK_SPEC): Define.
10065         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
10066         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
10067         (LINK_SPEC): Define.
10068         (LIB_SPEC): Define.
10069         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
10070         register.
10071         * config/arm/uclinux-eabi.h: New file.
10072         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
10073         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
10074         based targets.
10075
10076 2007-02-13  Ian Lance Taylor  <iant@google.com>
10077
10078         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
10079         * flags.h (warn_strict_overflow): Declare.
10080         (enum warn_strict_overflow_code): Define.
10081         (issue_strict_overflow_warning): New static inline function.
10082         * opts.c (warn_strict_overflow): New variable.
10083         (common_handle_option): Handle OPT_Wstrict_overflow and
10084         OPT_Wstrict_overflow_.
10085         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
10086         OPT_Wall.
10087         * fold-const.c: Include intl.h.
10088         (fold_deferring_overflow_warnings): New static variable.
10089         (fold_deferred_overflow_warning): New static variable.
10090         (fold_deferred_overflow_code): New static variable.
10091         (fold_defer_overflow_warnings): New function.
10092         (fold_undefer_overflow_warnings): New function.
10093         (fold_undefer_and_ignore_overflow_warnings): New function.
10094         (fold_deferring_overflow_warnings_p): New function.
10095         (fold_overflow_warning): New static function.
10096         (make_range): Add strict_overflow_p parameter.  Change all
10097         callers.
10098         (extract_muldiv, extract_muldiv_1): Likewise.
10099         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
10100         tree_expr_nonnegative_p.
10101         (fold_negate_expr): Call fold_overflow_warning.
10102         (fold_range_test): Likewise.
10103         (fold_comparison): Likewise.
10104         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
10105         instead of tree_expr_nonnegative_p.
10106         (tree_expr_nonnegative_warnv_p): Rename from
10107         tree_expr_nonnegative_p, add strict_overflow_p parameter.
10108         (tree_expr_nonnegative_p): New function.
10109         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
10110         strict_overflow_p parameter.
10111         (tree_expr_nonzero_p): New function.
10112         * passes.c (verify_interpass_invariants): New static function.
10113         (execute_one_pass): Call it.
10114         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
10115         warnings.
10116         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
10117         (estimate_numbers_of_iterations): Likewise.
10118         (scev_probably_wraps_p): Likewise.
10119         * tree-ssa-ccp.c: Include "toplev.h".
10120         (evaluate_stmt): Defer fold overflow warnings until we know we are
10121         going to optimize.
10122         (struct fold_stmt_r_data): Add stmt field.
10123         (fold_stmt_r): Defer fold overflow warnings until we know we
10124         optimized.
10125         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
10126         (fold_stmt_inplace): Likewise.
10127         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
10128         (cleanup_control_expr_graph): Defer fold overflow warnings until
10129         we know we are going to optimize.
10130         * tree-cfg.c (fold_cond_expr_cond): Likewise.
10131         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
10132         Likewise.
10133         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
10134         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
10135         * tree-ssa-loop-manip.c (create_iv): Likewise.
10136         * c-typeck.c (build_conditional_expr): Likewise.
10137         (build_binary_op): Likewise.
10138         * tree-vrp.c (vrp_expr_computes_nonzero): Call
10139         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
10140         (extract_range_from_unary_expr): Likewise.
10141         * simplify-rtx.c (simplify_const_relational_operation): Warn when
10142         assuming that signed overflow does not occur.
10143         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
10144         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
10145         (fold_defer_overflow_warnings): Declare.
10146         (fold_undefer_overflow_warnings): Declare.
10147         (fold_undefer_and_ignore_overflow_warnings): Declare.
10148         (fold_deferring_overflow_warnings_p): Declare.
10149         (tree_expr_nonzero_warnv_p): Declare.
10150         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
10151         of warning options.
10152         (Warning Options): Document -Wstrict-overflow.
10153         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
10154         (tree-ssa-ccp.o): Likewise.
10155         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
10156         (fold-const.o): Depend on intl.h.
10157
10158 2007-02-13  Ian Lance Taylor  <iant@google.com>
10159
10160         PR middle-end/30751
10161         * lower-subreg.c (resolve_simple_move): Decompose subregs in
10162         addresses.
10163
10164 2007-02-13  Stuart Hastings  <stuart@apple.com>
10165
10166         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
10167
10168 2007-02-13  Richard Henderson  <rth@redhat.com>
10169
10170         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
10171         handled_component_p before looking for the indirect_ref.
10172
10173 2007-02-13  Richard Henderson  <rth@redhat.com>
10174
10175         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
10176         remove flags clobber.
10177         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
10178         (bswaphi_lowpart): New.
10179         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
10180         remove TARGET_BSWAP test.  Delete expander of the same name.
10181
10182         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
10183         (expand_unop): Use them.
10184
10185 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
10186
10187         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
10188         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
10189         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
10190         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
10191         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
10192         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
10193         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
10194         assembler dialect choice from asm templates.
10195
10196 2007-02-12  Richard Henderson  <rth@redhat.com>
10197
10198         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
10199         (fixuns_trunc<SSEMODEF>si2): Use it.
10200         * config/i386/sse.md (vec_setv4sf_0): Export.
10201         * config/i386/i386.c (ix86_build_const_vector): Export.
10202         (ix86_split_convert_uns_si_sse): Rename from
10203         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
10204         * config/i386/i386-protos.h: Update.
10205
10206 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10207
10208         PR c/29521
10209         * c-typeck.c (c_finish_return): Improve warning message.
10210
10211 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10212
10213         * alias.c (find_symbolic_term): Delete unused function.
10214
10215 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
10216
10217         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
10218         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
10219         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
10220
10221 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
10222
10223         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
10224         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
10225         the function, temporarily point the debug interface to the null one.
10226
10227 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
10228
10229         * dwarf2out.c (round_up_to_align): New static function.
10230         (field_byte_offset): Use it to round the offset.
10231
10232 2007-02-12  Richard Henderson  <rth@redhat.com>
10233
10234         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
10235         (inswl_const): Export.
10236
10237 2007-02-12  Richard Henderson  <rth@redhat.com>
10238
10239         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
10240         result mode of the libcall, convert back to outmode.
10241
10242 2007-02-12  Roger Sayle  <roger@eyesopen.com>
10243
10244         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
10245         (bswapdi2): New define_expand to implement 32-bit implementation.
10246
10247 2007-02-12  Nick Clifton  <nickc@redhat.com>
10248
10249         * doc/invoke.texi (Overall Options): Document --help=.
10250         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
10251         (cc1_options): Pass --help= on to cc1.
10252         (display_help): Add description of --help=.
10253         (process_command): Add code to handle --help=.  Allow translated
10254         --help and --target-help switches to be passed on to compiler
10255         sub-process.
10256         (main): Remove unused if statement.
10257         * opts.c (columns): Remove.
10258         (LEFT_COLUMN): Define.
10259         (wrap_help): Add columns argument.
10260         (print_filtered_help): Change parameters to be an include bitmask,
10261         an exclude bitmask, an any bitmask and the column width.  Move the
10262         code to display the params list here.  Add code to display the
10263         status of options rather than their descriptions if the quiet flag
10264         is not active.
10265         (print_specific_help): Change parameters to be an include bitmask,
10266         an exclude bitmask and an any bitmask.  Move code to look up the
10267         column width here.  Decide upon the title for an options listing.
10268         (common_handle_options): Add code to handle --help=.  Adapt code
10269         for --help and --target-help to use the revised form of the
10270         print_specific_help function.
10271         (print_help): Delete.
10272         (print_param_help): Delete.
10273         (print_switch): Delete.
10274         * opts.h (cl_lang_count): Add prototype.
10275         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
10276         CL_MAX_OPTION_CLASS): New defines.
10277         * optc-gen.awk: Add construction of cl_lang_count.
10278         * c.opt: Add Warning attribute to warning options and Optimization
10279         attribute to optimization options.
10280         * common.opt: Likewise.
10281         Add --help=.
10282         Add -fhelp and -ftarget-help as aliases for the transformed --help
10283         and --target-help options.
10284         * opt-functions.awk: Add code to handle Warning and Optimization
10285         attributes.
10286
10287 2007-02-12  Richard Henderson  <rth@redhat.com>
10288
10289         * config/alpha/constraints.md: New file.
10290         * config/alpha/alpha.c: Include tm-constrs.h.
10291         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
10292         alpha_extra_constraint): Remove.
10293         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
10294         * config/alpha/alpha-protos.h: Update.
10295         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
10296         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
10297         (EXTRA_CONSTRAINT): Remove.
10298         * config/alpha/alpha.md: Include constraints.md.
10299         (adddi splitter): Use satisfies_constraint_*.
10300         * config/alpha/predicates.md (add_operand): Likewise.
10301         (sext_add_operand, addition_operation): Likewise.
10302
10303 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
10304
10305         PR tree-optimization/29145
10306         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
10307         in our handling of restrict qualified pointers.
10308
10309 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10310
10311         PR middle-end/7651
10312         * doc/invoke.texi (Wunused-value): Update description.
10313         (Wextra): Delete item.
10314         * opts.c (set_Wextra): Don't use the value of Wextra to set the
10315         value of Wunused-value.
10316         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
10317         (c_finish_stmt_expr): Don't check extra_warnings.
10318         (emit_side_effect_warnings): The caller is responsible to check
10319         warn_unused_value.
10320
10321 2007-02-11  Roger Sayle  <roger@eyesopen.com>
10322             Matt Thomas  <matt@3am-software.com>
10323
10324         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
10325
10326 2007-02-11  Roger Sayle  <roger@eyesopen.com>
10327
10328         * simplify-rtx.c (simplify_relational_operation_1): Optimize
10329         comparisons of POPCOUNT against zero.
10330         (simplify_const_relational_operation): Likewise.
10331
10332 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10333
10334         * doc/invoke.texi (Wextra): Delete outdated paragraph.
10335
10336 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10337
10338         * dwarf2out.c (root_type): Delete unused function.
10339
10340 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10341
10342         * genattrtab.c (contained_in_p): Delete unused function.
10343         (write_expr_attr_cache): Likewise.
10344
10345 2007-02-11  Jan Hubicka  <jh@suse.cz>
10346
10347         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
10348         previous patch.
10349
10350 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
10351
10352         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
10353         to add the REG_EQ* note.
10354         * see.c (see_merge_one_use_extension): Likewise.
10355         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
10356         turn REG_EQUAL notes into REG_EQUIV notes if the target
10357         register may have more than one set.
10358         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
10359         * gcse.c (try_replace_reg): Likewise.
10360         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
10361         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
10362         more than one REG_EQUIV note.
10363         * reload1.c (gen_reload): Use set_unique_reg_note.
10364
10365 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
10366
10367         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
10368         (ix86_builtin_conversion): New function.
10369
10370 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
10371
10372         PR target/29487
10373         * tree.h (DECL_REPLACEABLE_P): New macro.
10374         * except.c (set_nothrow_function_flags): Likewise.
10375
10376 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
10377             Ira Rosen  <irar@il.ibm.com>
10378             Dorit Nuzman  <dorit@il.ibm.com>
10379
10380         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
10381         * targhooks.c (default_builtin_vectorized_conversion): New.
10382         * targhooks.h (default_builtin_vectorized_function): New declaration.
10383         * target.h (struct vectorize): Add builtin_conversion field.
10384         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
10385         stmt_vec_info_type value.
10386         (vectorizable_conversion): New declaration.
10387         * tree-vect-analyze.c (vect_analyze_operations): Add
10388         vectorizable_conversion call.
10389         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
10390         * tree-vect-transform.c (vectorizable_conversion): New function.
10391         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
10392         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
10393         mode.
10394         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
10395         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
10396         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
10397         or ALTIVEC_BUILTIN_VCFSX.
10398
10399 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10400
10401         PR target/30634
10402         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
10403         CONST_DOUBLE and operand 0 is a hard register.
10404         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
10405         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
10406         is a hard floating-point register.
10407
10408 2007-02-10  Richard Henderson  <rth@redhat.com>
10409             Jakub Jelinek  <jakub@redhat.com>
10410             Alexandre Oliva  <aoliva@redhat.com>
10411
10412         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
10413         * builtin-types.def (BT_WORD): Make unsigned.
10414         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
10415         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
10416         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
10417         * c-decl.c (grokdeclarator): Don't error if !have_tls.
10418         * c-parser.c (c_parser_omp_threadprivate): Likewise.
10419         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
10420         emulated tls.
10421         * expr.c (emutls_var_address): New.
10422         (expand_expr_real_1): Expand emulated tls.
10423         (expand_expr_addr_expr_1): Likewise.
10424         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
10425         * output.h (emutls_finish): Declare.
10426         * toplev.c (compile_file): Call it.
10427         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
10428         address before wrapping in CONST.
10429         * varasm.c (emutls_htab, emutls_object_type): New.
10430         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
10431         (get_emutls_object_name, get_emutls_object_type): New.
10432         (get_emutls_init_templ_addr, emutls_decl): New.
10433         (emutls_common_1, emutls_finish): New.
10434         (assemble_variable): When emulating tls, swap decls; generate
10435         constructor for the emutls objects.
10436         (do_assemble_alias): When emulating tls, swap decl and target name.
10437         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
10438         for emulated tls.
10439         * varpool.c (decide_is_variable_needed): Look at force_output.
10440         Recurse for emulated tls.
10441         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
10442         with decide_is_variable_needed.
10443         * emutls.c: New file.
10444         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
10445         tls_object for real tls.
10446
10447 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
10448
10449         PR rtl-optimization/29599
10450         * reload1.c (eliminate_regs_in_insn): Take the destination
10451         mode into account when computing the offset.
10452
10453 2007-02-09  Stuart Hastings  <stuart@apple.com>
10454             Richard Henderson  <rth@redhat.com>
10455
10456         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
10457         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
10458         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
10459         fixuns_truncdfhi2): New.
10460         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
10461         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
10462         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
10463         (floatunssidf2): Allow nonimmediate source.
10464         * config/i386/sse.md (movdi_to_sse): New.
10465         (vec_concatv2di): Drop '*'.
10466         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
10467         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
10468         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
10469         New.
10470         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
10471         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
10472         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
10473         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
10474         (ix86_build_signbit_mask): Fix decl of v, refactor to call
10475         ix86_build_const_vector.
10476         (x86_emit_floatuns): Rewrite.
10477
10478 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10479
10480         * genautomata.c (longest_path_length): Delete unused function.
10481         (struct state): Delete unused longest_path_length.
10482         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
10483         (get_free_state): Delete unused.
10484
10485 2007-02-09  Jan Hubicka  <jh@suse.cz>
10486
10487         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
10488         * doc/invoke.texi (inline-unit-growth): Update default value.
10489
10490         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
10491         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
10492         (rebuild_cgraph_edges): Likewise.
10493         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
10494         (dump_cgraph_node): Dump frequencies.
10495         (cgraph_clone_edge): Add frequency scales.
10496         (cgraph_clone_node): Add freuqnecy.
10497         * cgraph.h (cgraph_edge): Add freuqnecy argument.
10498         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
10499         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
10500         * tree-pass.h (TODO_rebuild_frequencies): New constant.
10501         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
10502         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
10503         (save_inline_function_body): Likewise.
10504         * ipa-inline.c: inluce rtl.h
10505         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
10506         (cgraph_edge_badness): Use frequencies.
10507         (cgraph_decide_recursive_inlining): Update clonning.
10508         (cgraph_decide_inlining_of_small_function): Dump frequency.
10509         * predict.c (estimate_bb_frequencies): Export.
10510         * predict.h (estimate_bb_frequencies): Declare.
10511         * tree-inline.c (copy_bb): Watch overflows.
10512         (expand_call_inline): Update call of cgraph_create_edge.
10513         (optimize_inline_calls): Use TODO flags to update frequnecies.
10514         * passes.h: Include predict.h
10515         (init_optimization_passes): Move profile ahead.
10516         (execute_function_todo): Handle TODO_rebuild_frequencies.
10517
10518 2007-02-09  Roger Sayle  <roger@eyesopen.com>
10519
10520         * config/alpha/alpha.c (emit_insxl): Force the first operand of
10521         the insbl or inswl pattern into a register.
10522
10523 2007-02-09  Roger Sayle  <roger@eyesopen.com>
10524
10525         * config/ia64/ia64.md (bswapdi2): New define_insn.
10526
10527 2007-02-09  Richard Henderson  <rth@redhat.com>
10528
10529         * config/i386/constraints.md (Ym): New constraint.
10530         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
10531         (movdi_1_rex64): Split sse and xmm general register moves from
10532         memory move alternatives.  Use conditional register constraints.
10533         (movsf_1, movdf_integer): Likewise.
10534         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
10535         (movdf_integer_rex64): New.
10536         (pushsf_rex64): Fix output constraints.
10537         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
10538         (sse2_stored): Likewise.
10539         (sse2_storeq_rex64): New.
10540         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
10541         amd and not generic.
10542         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
10543         for optimize_size.  Remove SF/DFmode hack.
10544
10545 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10546
10547         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
10548         (bit_SSE4a): New.
10549
10550 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
10551             Richard Sandiford  <richard@codesourcery.com>
10552
10553         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
10554         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
10555         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
10556         m68k/t-mlib to tmake_file.
10557         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
10558         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
10559         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
10560         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
10561         variable is not empty, add t-$m68k_arch_family to tmake_file.
10562         Add t-mlibs to tmake_file.
10563         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
10564         * config/m68k/t-cf: New file.
10565         * config/m68k/t-m68k: Likewise.
10566         * config/m68k/t-mlibs: Likewise.
10567         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10568         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10569         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
10570         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10571         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
10572         Delete.
10573         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
10574         (INSTALL_LIBGCC): Delete.
10575         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
10576         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10577         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10578         (M68K_MLIB_CPU): Define.
10579         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10580         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10581         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
10582
10583 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
10584             Richard Guenther  <rguenther@suse.de>
10585
10586         PR middle-end/23361
10587         * fold-const.c (fold_comparison): Handle obfuscated comparisons
10588         against INT_MIN/INT_MAX.
10589         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
10590         file if a loop is removed.
10591
10592 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
10593
10594         * calls.c (store_one_arg): Pass correct alignment to
10595         emit_push_insn for non-BLKmode values.
10596         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
10597         unaligned stack slot via a suitably aligned slot.
10598
10599 2007-02-08  DJ Delorie  <dj@redhat.com>
10600
10601         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
10602         warnings.
10603         (legal_subregs): Use unsigned char, make const.
10604         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
10605
10606 2007-02-08  Paul Brook  <paul@codesourcery.com>
10607
10608         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
10609         special interworking needed.
10610
10611 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
10612
10613         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
10614         conditional to __SSE2__.
10615         (Entries below should have been added to first ChangeLog
10616         entry for amdfam10 dated 2007-02-05)
10617         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
10618         defined.
10619         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
10620         defined.
10621         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
10622         defined.
10623
10624 2007-02-08  DJ Delorie  <dj@redhat.com>
10625
10626         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
10627         * config/m32c/m32c.c (legal_subregs): New.
10628         (m32c_illegal_subreg_p): New.
10629         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
10630         unsupported subregs of hard regs.
10631
10632 2007-02-08  Jan Hubicka  <jh@suse.cz>
10633
10634         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
10635         the same one; always update histograms.
10636
10637 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
10638
10639         * passes.c (init_optimization_passes): Tidy comment.
10640
10641 2007-02-08  Roger Sayle  <roger@eyesopen.com>
10642
10643         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
10644         strip zero_extend, bswap and rotates from POCOUNT's argument.
10645         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
10646         zero_extend and rotates from PARITY's argument.
10647         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
10648         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
10649         of an integer constant at compile-time.
10650
10651 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
10652
10653         PR 30562
10654         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
10655         Update all users.
10656         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
10657         users.
10658         (init_alias_info):
10659         * tree-ssa-live.c (remove_unused_locals): Do not remove
10660         TREE_ADDRESSABLE variables.
10661         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
10662         * tree-ssa-operands.c (add_virtual_operand): Remove argument
10663         FOR_CLOBBER.  Update all users.
10664         If VAR has an associated alias set, add a virtual operand for
10665         it if no alias is found to conflict with the memory reference.
10666
10667 2007-02-07  Jan Hubicka  <jh@suse.cz>
10668             Robert Kidd <rkidd@crhc.uiuc.edu>
10669
10670         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
10671
10672 2007-02-07  Ian Lance Taylor  <iant@google.com>
10673
10674         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
10675
10676 2007-02-07  Roger Sayle  <roger@eyesopen.com>
10677
10678         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
10679         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
10680         tablejumpdi, movsi_to_cr_one): Remove constraints from
10681         define_expand's match_operands.
10682
10683 2007-02-07  Roger Sayle  <roger@eyesopen.com>
10684
10685         * global.c (compute_regsets): Move declatation of "i" inside of
10686         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
10687
10688 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
10689
10690         PR c++/30703
10691         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
10692         of INDIRECT_REF <RESULT_DECL>.
10693
10694         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
10695
10696 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
10697             Kaz Kojima  <kkojima@gcc.gnu.org>
10698
10699         PR target/29746
10700         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
10701         properly.
10702         (sh_initialize_trampoline): Add parentheses to avoid a warning.
10703
10704 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
10705
10706         * doc/loop.texi: Document possibility not to perform disambiguation
10707         of loops with multiple latches.
10708         * cfgloopmanip.c (alp_enum_p): Removed.
10709         (add_loop): Handle subloops.  Use get_loop_body_with_size.
10710         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
10711         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
10712         the new forwarder block.
10713         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
10714         Handle the case latch is NULL.
10715         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
10716         when marking loop exits.
10717         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
10718         be modified.
10719         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
10720         disambiguate_loops_with_multiple_latches.
10721         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
10722         before fix_loop_structure.
10723         * cfgloop.c: Include pointer-set.h and output.h.
10724         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
10725         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
10726         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
10727         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
10728         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
10729         disambiguate_multiple_latches, get_loop_body_with_size,
10730         disambiguate_loops_with_multiple_latches): New functions.
10731         (flow_loop_dump): Dump multiple latch edges.
10732         (flow_loop_nodes_find): Handle loops with multiple latches.
10733         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
10734         (glb_enum_p): Modified.
10735         (get_loop_body): Use get_loop_body_with_size.
10736         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
10737         (AVOID_CFG_MODIFICATIONS): New constant.
10738         (disambiguate_loops_with_multiple_latches, add_loop,
10739         get_loop_body_with_size): Declare.
10740         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
10741
10742 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
10743
10744         PR inline-asm/28686
10745         * global.c (compute_regsets): New function.
10746         (global_alloc): Refactored ELIMINABLE_REGSET
10747         and NO_GLOBAL_ALLOC_REGS computation out.
10748         (rest_of_handle_global_alloc): Call compute_regsets()
10749         for non-optimizing case.
10750
10751 2007-02-06  Richard Henderson  <rth@redhat.com>
10752
10753         * config/i386/constraints.md (Y2): Rename from Y.
10754         (Yi): New constraint.
10755         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
10756         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
10757         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
10758         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
10759         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
10760         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
10761         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
10762         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
10763         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
10764         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
10765         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
10766         vec_extractv2si_1): Change Y constraints to Y2.
10767         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
10768         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
10769         Change Y constraints to Y2.
10770         (sse2_loadld): Change Y constraints to x.
10771
10772 2007-02-06  Roger Sayle  <roger@eyesopen.com>
10773
10774         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
10775         (parity<mode>2): New define_expand using rs6000_emit_parity.
10776         * config/rs6000/rs6000.c (rs6000_emit_popcount,
10777         rs6000_emit_parity): New functions.
10778         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
10779         rs6000_emit_parity): Prototype here.
10780
10781 2007-02-06  Ian Lance Taylor  <iant@google.com>
10782
10783         * lower-subreg.c (simple_move_operand): Reject CONST.
10784         (resolve_clobber): Call validate_change rather than directly
10785         assigning to XEXP (pat, 0).
10786
10787 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
10788
10789         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
10790         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
10791         (tree-cfg.o): Remove hashtab.h dependency.
10792
10793         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
10794         (struct ivopts_data): Change niters to pointer_map_t.
10795         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
10796         (niter_for_exit): Create pointer_map on demand.  Change for
10797         pointer_map API.
10798         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
10799         (free_loop_data): Destroy data->niters if created and reset field.
10800         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
10801         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
10802
10803         * tree-ssa-reassoc.c: Include pointer-set.h.
10804         (bb_rank): Change to long *.
10805         (operand_rank): Change to pointer_map_t.
10806         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
10807         (insert_operand_rank): Accept long.
10808         (operand_entry_hash, operand_entry_eq): Remove.
10809         (get_rank): Return long.  Adjust for changes above.
10810         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
10811         and operand_rank.
10812         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
10813
10814         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
10815         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
10816         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
10817         is not NULL.
10818         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
10819         directly since it cannot be NULL.
10820         (get_vi_for_tree): Rewrite for pointer_map API.
10821         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
10822         (init_alias_vars): Create vi_for_tree as pointer_map.
10823         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
10824
10825         * tree-cfg.c: Don't include hashtab.h.
10826         (edge_to_cases): Declare as pointer_map.
10827         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
10828         Delete.
10829         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
10830         (start_recording_case_labels): Create edge_to_cases as pointer_map.
10831         (end_recoding_case_labels): Cleanup edge_to_cases manually before
10832         destroying it.
10833         (record_switch_edge): Delete.
10834         (get_cases_for_edge): Adjust for pointer_map API, inline
10835         record_switch_edge (rewritten for new API), remove goto.
10836
10837 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
10838
10839         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
10840         * tree-nested.c: Include pointer-set.h.
10841         (var_map_elt, var_map_eq, var_map_hash): Delete.
10842         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
10843         to pointer_map_t's.
10844         (nesting_info_bitmap_obstack): New.
10845         (lookup_field_for_decl): Adjust for pointer_map API.
10846         (lookup_tramp_for_decl): Adjust for pointer_map API.
10847         (get_nonlocal_debug_decl): Adjust for pointer_map API.
10848         (get_local_debug_decl): Adjust for pointer_map API.
10849         (convert_nl_goto_reference): Adjust for pointer_map API.
10850         (convert_nl_goto_receiver): Adjust for pointer_map API.
10851         (create_nesting_tree): Create outside GGC space.  Create bitmap on
10852         the new obstack.  Create field_map and var_map as pointer_maps.
10853         (free_nesting_tree): Adjust for changes to create_nesting_tree.
10854         (root): Delete.
10855         (lower_nested_functions): Move root here, no need to NULL it.
10856         Initialize and release the obstack.
10857
10858 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
10859
10860         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
10861         Remove prototypes and make them non-static.
10862         (struct tree_int_map): Remove.
10863         * tree.h (struct tree_int_map): Move here, turning TO into an
10864         unsigned int.
10865         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
10866
10867         * tree.h (TREE_COMPLEXITY): Remove.
10868         (struct tree_exp): Remove complexity field.
10869         * tree.c (build1_stat): Don't set it.
10870
10871 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
10872             Victor Kaplansky  <victork@il.ibm.com>
10873
10874         * tree-vectorizer.c (vect_is_simple_use): Support induction.
10875         (vect_is_simple_reduction): Support reduction with induction as
10876         one of the operands.
10877         (vect_is_simple_iv_evolution): Fix formatting.
10878         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
10879         formatting.  Don't mark induction phis for vectorization.
10880         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
10881         * tree-vect-transform.c (get_initial_def_for_induction): New function.
10882         (vect_get_vec_def_for_operand): Support induction.
10883         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
10884         induction case.
10885         (vectorizable_reduction): Support reduction with induction as one of
10886         the operands.
10887         (vectorizable_type_demotion): Use def-type of stmt argument rather
10888         than dummy def-type.
10889
10890         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
10891         flag_tree_scev_cprop.
10892         * common.opt (tree-scev-cprop): New flag.
10893
10894         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
10895         call to vect_get_new_vect_var.
10896
10897 2007-02-06  Ira Rosen  <irar@il.ibm.com>
10898
10899         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
10900         vectype is not NULL.
10901         (vect_pattern_recog_1): Likewise.
10902
10903 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
10904
10905         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
10906         (fold_negate_expr): Likewise.
10907
10908 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
10909
10910         PR debug/30189
10911         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
10912         even if cv-qualification is the same.
10913
10914 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
10915
10916         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
10917         __enable_execute_stack on completion.
10918
10919 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10920
10921         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
10922         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
10923         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
10924         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
10925         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
10926         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
10927         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
10928         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
10929
10930 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10931
10932         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
10933         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
10934         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
10935         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
10936         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
10937         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
10938         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
10939         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
10940         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
10941         umuldi3_highpart_rex64, umulsi3_highpart_insn,
10942         umulsi3_highpart_zext, smuldi3_highpart_rex64,
10943         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
10944         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
10945         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
10946         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
10947         sqrtextenddfxf2_i387): Added amdfam10_decode.
10948
10949         * config/i386/athlon.md (athlon_idirect_amdfam10,
10950         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
10951         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
10952         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
10953         athlon_ivector_store_amdfam10): New define_insn_reservation.
10954         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
10955         amdfam10.
10956
10957 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10958
10959         * config/i386/athlon.md (athlon_call_amdfam10,
10960         athlon_pop_amdfam10, athlon_lea_amdfam10): New
10961         define_insn_reservation.
10962         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
10963         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
10964         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
10965
10966 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10967
10968         * config/i386/athlon.md (athlon_sseld_amdfam10,
10969         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
10970         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
10971
10972 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10973
10974         * config/i386/athlon.md (athlon_sseins_amdfam10): New
10975         define_insn_reservation.
10976         * config/i386/i386.md (sseins): Added sseins to define_attr type
10977         and define_attr unit.
10978         * config/i386/sse.md: Set type attribute to sseins for insertq
10979         and insertqi.
10980
10981 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10982
10983         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
10984         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
10985         ssecomi_load_amdfam10, ssecomi_amdfam10,
10986         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
10987         define_insn_reservation.
10988         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
10989
10990 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
10991
10992         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
10993         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
10994         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
10995         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
10996         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
10997         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
10998         define_insn_reservation.
10999
11000         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
11001         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
11002         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
11003         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
11004         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
11005
11006 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11007
11008         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
11009         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
11010         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
11011         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
11012         athlon_ssemul_load_k8): Added amdfam10.
11013
11014 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11015
11016         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
11017         (x86_sse_unaligned_move_optimal): New variable.
11018
11019         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
11020         m_AMDFAM10.
11021         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
11022         for unaligned vector SSE double/single precision loads for AMDFAM10.
11023
11024 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11025
11026         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
11027         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
11028         Define TARGET_CPU_DEFAULT_amdfam10.
11029         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
11030         (processor_type): Add PROCESSOR_AMDFAM10.
11031
11032         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
11033         processor_type in config/i386/i386.h.
11034         Enable imul peepholes for TARGET_AMDFAM10.
11035
11036         * config.gcc: Add support for --with-cpu option for amdfam10.
11037
11038         * config/i386/i386.c (amdfam10_cost): New variable.
11039         (m_AMDFAM10): New macro.
11040         (m_ATHLON_K8_AMDFAM10): New macro.
11041         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
11042         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
11043         x86_promote_QImode, x86_integer_DFmode_moves,
11044         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11045         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
11046         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
11047         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
11048         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
11049         Enable/disable for amdfam10.
11050         (override_options): Add amdfam10_cost to processor_target_table.
11051         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
11052         processor_alias_table.
11053         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
11054         (ix86_adjust_cost): Add code for amdfam10.
11055
11056 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11057
11058         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
11059         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
11060         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
11061         * config/i386/i386.h: Add builtin definition for SSE4A.
11062         * config/i386/i386.md: Add support for ABM instructions
11063         (popcnt and lzcnt).
11064         * config/i386/sse.md: Add support for SSE4A instructions
11065         (movntss, movntsd, extrq, insertq).
11066         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
11067         Add -march=amdfam10 flag.
11068         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
11069         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
11070         and amdfam10.
11071         * doc/extend.texi: Add documentation for SSE4A builtins.
11072
11073 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
11074
11075         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
11076
11077 2007-02-05  Richard Guenther  <rguenther@suse.de>
11078
11079         * tree-vectorizer.h (vectorizable_function): Add argument type
11080         argument, change return type.
11081         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
11082         * tree-vect-transform.c (vectorizable_function): Handle extra
11083         argument, return vectorized function decl.
11084         (build_vectorized_function_call): Remove.
11085         (vectorizable_call): Handle calls with result and argument types
11086         differing.  Handle loop vectorization factor correctly.
11087         * targhooks.c (default_builtin_vectorized_function): Adjust for
11088         extra argument.
11089         * targhooks.h (default_builtin_vectorized_function): Likewise.
11090         * target.h (builtin_vectorized_function): Add argument type
11091         argument.
11092         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
11093         extra argument, allow vectorizing of lrintf.
11094         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
11095         documentation of target hook.
11096
11097 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
11098
11099         PR target/30665
11100         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
11101         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
11102         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
11103
11104 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11105
11106         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
11107         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
11108         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
11109         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
11110         before canonicalizing sincos to cexpi.
11111         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
11112
11113 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11114
11115         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
11116         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
11117         (alpha_init_builtins): Use alpha_add_builtins to process tables.
11118
11119 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11120
11121         * mips-tfile.c (initialize_init_file): Correct endianness test.
11122
11123 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
11124
11125         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
11126         the 'y' constraint.
11127
11128 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
11129
11130         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
11131         saves in a PARALLEL before the register assignments.
11132
11133 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
11134
11135         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
11136         DWARF_FRAME_RETURN_COLUMN to be a general register.
11137         * dwarf2out.c (init_return_column_size): New function, split from...
11138         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
11139         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
11140         to be nongeneral registers.
11141         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
11142         integer registers.
11143         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
11144         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
11145
11146 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
11147
11148         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
11149
11150 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
11151
11152         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
11153         (remove_path): Use can_remove_branch_p and remove_branch instead
11154         of loop_delete_branch_edge.
11155         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
11156         (tree_transform_and_unroll_loop): Remove dead branches immediately.
11157         Update profile using scale_dominated_blocks_in_loop.
11158         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
11159         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
11160         (can_remove_branch_p, remove_branch): Declare.
11161         * tree-cfg.c (tree_can_remove_branch_p): New function.
11162         (tree_cfg_hooks): Add tree_can_remove_branch_p.
11163         * cfgrtl.c (rtl_can_remove_branch_p): New function.
11164         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
11165
11166 2007-02-05  Jan Hubicka  <jh@suse.cz>
11167
11168         PR middle-end/30696
11169         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
11170         nodes in cgraph, don't remove offline copy of the function.
11171
11172 2007-02-04  Jan Hubicka  <jh@suse.cz>
11173
11174         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
11175         vectors might cause maybe_lookup_element_for_expr to be called
11176         on non-sra-candidate.
11177
11178 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11179
11180         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
11181         config/bfin/bfin.md, config/bfin/predicates.md: Follow
11182         spelling conventions.
11183
11184 2007-02-04  Richard Guenther  <rguenther@suse.de>
11185
11186         PR middle-end/30636
11187         * fold-const.c (try_move_mult_to_index): Make sure to not
11188         overflow one dimension of a multi-dimensional array access.
11189
11190 2007-02-04  Jan Hubicka  <jh@suse.cz>
11191
11192         * passes.c (init_optimization_passes): Reindent.
11193
11194 2007-02-04  Jan Hubicka  <jh@suse.cz>
11195             Eric Botcazou  <ebotcazou@adacore.com>
11196
11197         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
11198         (execute_fixup_cfg): Break out the abnormal goto code.
11199         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
11200         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
11201         (optimize_inline_calls): Call make_nonlocal_label_edges.
11202
11203 2007-02-04  Jan Hubicka  <jh@suse.cz>
11204
11205         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
11206         true when something was changed.
11207         (rename_ssa_copies): When something was changed, do
11208         TODO_remove_unused_locals.
11209         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
11210         add TODO_remove_unused_locals when instruction was removed.
11211
11212 2007-02-04  Jan Hubicka  <jh@suse.cz>
11213
11214         * ipa-inline.c (try_inline): Improve debug output; work on already
11215         inline edges too.
11216         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
11217         call try_inline for already inlined edges too when flattening;
11218         inline also functions that make callee growth but overall unit size
11219         reduce.
11220
11221 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11222
11223         * config/m32c/bitops.md, config/m32c/jump.md,
11224         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
11225         config/m32r/m32r.h, config/m32r/m32r.md,
11226         config/m32r/predicates.md, config/m68hc11/larith.asm,
11227         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
11228         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
11229         config/mips/mips-protos.h, config/mips/mips.c,
11230         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
11231         config/mn10300/mn10300.h, config/mn10300/predicates.md,
11232         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
11233         spelling conventions.
11234
11235         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
11236         Follow spelling conventions.
11237
11238 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
11239
11240         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
11241         warn about C++0x compatibility.
11242
11243 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11244
11245         * config/h8300/h8300.c, config/h8300/h8300.h,
11246         config/h8300/h8300.md: Follow spelling conventions.
11247
11248 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
11249
11250         PR middle-end/30667
11251         * combine.c (try_combine): Do not substitute source operand
11252         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
11253
11254 2007-02-03  Jan Hubicka  <jh@suse.cz>
11255
11256         PR gcov-profile/30650
11257         * value-prof.c (stringop_block_profile): Fix handling of size counter;
11258         do not divide by zero for never executed counters.
11259         (tree_find_values_to_profile): Fix counters.
11260         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
11261
11262 2007-02-03  Ian Lance Taylor  <iant@google.com>
11263
11264         * lower-subreg.c (simple_move_operand): New static function,
11265         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
11266         operands.
11267         (simple_move): Call simple_move_operand.
11268         (find_decomposable_subregs): Add special handling of MEMs.
11269         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
11270         meaning of return value.  If we see a hard register, test whether
11271         it can store a word_mode value.  Change all callers.
11272
11273 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11274
11275         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
11276         ftrapv insns and expanders.
11277         (subdi3): Change define_expand operand 1 to arith11_operand, and
11278         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
11279         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
11280         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
11281         respectively.
11282
11283         PR middle-end/30174
11284         * varasm.c (notice_global_symbol): Treat global objects as weak when
11285         flag_shlib is true.
11286
11287 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11288
11289         * emit-rtl.c (dconstpi): Delete.
11290         (dconstsqrt2): New.
11291         (init_emit_once): Delete dconstpi and init dconstsqrt2.
11292         * real.h (dconstpi): Delete.
11293         (dconstsqrt2): New.
11294         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
11295         (fold_builtin_hypot): Likewise.
11296
11297 2007-02-03  Tom Tromey  <tromey@redhat.com>
11298
11299         PR driver/30246
11300         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
11301         -gcoff3, -gxcoff3, -gvms3 implies -dD.
11302
11303 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
11304
11305         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
11306         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
11307         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
11308         config/rs6000/cell.md, config/rs6000/darwin.h,
11309         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
11310         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
11311         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
11312         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
11313         typos.  Follow spelling conventions.
11314         * doc/invoke.texi: Follow spelling conventions.
11315
11316 2007-02-03  Roger Sayle  <roger@eyesopen.com>
11317
11318         * simplify-rtx.c (simplify_relational_operation_1): Implement some
11319         canonicalization transformations that attempt to simplify integer
11320         constant comparisons to become comparisons against zero.
11321
11322 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11323
11324         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
11325         fabs(x)*sqrt(2).
11326         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
11327         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
11328
11329 2007-02-02  Mike Stump  <mrs@apple.com>
11330
11331         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
11332         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
11333         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
11334         generate a branch island.
11335
11336 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
11337
11338         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
11339         (xtensa_legitimate_address_p): New.
11340         (xtensa_legitimize_address): New.
11341         (xtensa_output_addr_const_extra): New.
11342         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
11343         (BASE_REG_P): New.
11344         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
11345         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
11346         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
11347         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
11348         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
11349         (xtensa_legitimize_address): New.
11350         (xtensa_output_addr_const_extra): New.
11351
11352 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
11353
11354         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
11355
11356 2007-02-02  Ian Lance Taylor  <iant@google.com>
11357
11358         * expmed.c (expand_divmod): Add comment.
11359
11360 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
11361
11362         * emit-rtl.c (renumber_insns): Remove.
11363         * flags.h: Remove the extern for flag_renumber_insns.
11364         * rtl.h: Remove the prototype for renumber_insns.
11365         * toplev.c (flag_renumber_insns): Remove.
11366
11367 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
11368
11369         Revert for x86 darwin:
11370         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
11371
11372         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
11373         code before the following patch under TARGET_MACHO.
11374         (ix86_function_value_regno_p): Likewise.
11375
11376 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11377
11378         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
11379         COMPLEX_EXPR.
11380
11381 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11382
11383         PR target/29682
11384         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
11385         general or fp registers.  Add comments.
11386         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
11387
11388 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
11389
11390         * pointer-set.c (insert_aux): Only return insertion slot.
11391         (pointer_set_insert): Adjust.
11392         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
11393         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
11394         pointer_map_traverse): New.
11395         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
11396         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
11397         pointer_map_contains, pointer_map_traverse): Declare.
11398
11399 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
11400
11401         PR middle-end/30473
11402         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
11403         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
11404
11405 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11406
11407         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
11408
11409         (struct _dep): New type.
11410         (dep_t): New typedef.
11411         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
11412         (DEP_STATUS): New access macro.  The macro with the same name was
11413         renamed to DEP_LINK_STATUS.
11414         (dep_init): Declare function
11415
11416         (struct _dep_link): New type.
11417         (dep_link_t): New typedef.
11418         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
11419         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
11420         (DEP_LINK_STATUS): New macro.
11421         (debug_dep_links): New debug function.
11422
11423         (struct _deps_list): New type.
11424         (deps_list_t): New typedef.
11425         (DEPS_LIST_FIRST): New access macro.
11426         (FOR_EACH_DEP_LINK): New cycle macro.
11427         (create_deps_list, free_deps_list, delete_deps_list): Declare
11428         functions.
11429         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
11430         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
11431         (copy_deps_list_change_con): Ditto.
11432
11433         (move_dep_link): Declare function.
11434
11435         (struct _dep_node): New type.
11436         (dep_node_t): New typedef.
11437         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
11438
11439         (struct haifa_insn_data.back_deps): New field to hold backward
11440         dependencies of the insn.
11441         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
11442         to deps_list_t.
11443         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
11444         Change its type to deps_list_t.
11445         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
11446         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
11447         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
11448
11449         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
11450
11451         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
11452
11453         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
11454         all callers.
11455         (dep_cost): Declare.
11456
11457         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
11458         (ds_to_dk, dk_to_ds): New functions.
11459
11460         (init_dep_1): New static function.
11461         (init_dep): New function.
11462         (copy_dep): New static function.
11463
11464         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
11465         functions.
11466         (detach_dep_link): New static function.
11467         (move_dep_link): New function.
11468
11469         (dep_links_consistent_p, dump_dep_links): New static functions.
11470         (debug_dep_links): New debugging function.
11471
11472         (deps_obstack, dl_obstack, dn_obstack): New static variables.
11473
11474         (alloc_deps_list, init_deps_list): New static functions.
11475         (create_deps_list): New function.
11476         (clear_deps_list): New static function.
11477         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
11478         (deps_list_consistent_p, dump_deps_list): New static functions.
11479         (debug_deps_list): New function.
11480         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
11481         functions.
11482         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
11483
11484         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
11485         use new scheduler dependencies lists.
11486         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
11487         (sched_analyze): Ditto.  Initialize dependencies lists.
11488         (add_forw_dep, compute_forward_dependences): Update to use new
11489         scheduler dependencies lists.
11490
11491         (init_dependency_caches): Init deps_obstack.
11492         (free_dependency_caches): Free deps_obstack.
11493
11494         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
11495         new scheduler dependencies lists.
11496         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
11497         (add_back_forw_dep, delete_back_forw_dep): Ditto.
11498
11499         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
11500         Update to use new scheduler dependencies lists.
11501         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
11502         (debug_dependencies): Ditto.
11503         (schedule_region): Update comments.
11504
11505         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
11506         scheduler dependencies lists.
11507         (schedule_ebb): Update comments.
11508
11509         * rtl.def (DEPS_LIST): Remove.
11510
11511         * lists.c (unused_deps_list): Remove.
11512         (free_list): Update assertions.
11513
11514         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
11515         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
11516
11517         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
11518         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
11519
11520         * haifa-sched.c (comments): Update.
11521         (insn_cost1): Remove.  Inline the code into insn_cost ().
11522         (insn_cost): Update to use new scheduler dependencies lists.  Move
11523         processing of the dependency cost to dep_cost ().
11524         (dep_cost): New function.  Use it instead of insn_cost () when
11525         evaluating cost of the dependency.  Use compatible interface to
11526         interact with the target.
11527         (priority): Update to use new scheduler dependencies lists.
11528         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
11529         with greater number of insns that depend on the insn.
11530         (schedule_insn): Update to use new scheduler dependencies lists.  Add
11531         code to free backward dependencies lists.  Inline and optimize code
11532         from resolve_dep () - see PR28071.
11533         (ok_for_early_queue_removal): Update to use new scheduler dependencies
11534         lists.  Update call to targetm.sched.is_costly_dependence hook.
11535
11536         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
11537         scheduler dependencies lists.
11538
11539         (resolve_dep): Remove.  Move the logic to schedule_insn ().
11540         (init_h_i_d): Initialize dependencies lists.
11541
11542         (process_insn_depend_be_in_spec): Rename to
11543         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
11544         dependencies lists.
11545         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
11546         Update to use new scheduler dependencies lists.
11547         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
11548
11549         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
11550         new scheduler dependencies lists.
11551         (build_intra_loop_deps): Ditto.
11552
11553         * target.h (struct _dep): Declare to use in
11554         gcc_target.sched.is_costly_dependence.
11555         (struct gcc_target.sched.adjust_cost): Fix typo.
11556         (struct gcc_target.sched.is_costly_dependence): Change signature to use
11557         single dep_t parameter instead of an equivalent triad.
11558         (struct gcc_target.sched.adjust_cost_2): Remove.
11559
11560         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
11561
11562         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
11563
11564         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
11565         documentation.
11566         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
11567
11568         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
11569         (REG_DEP_TRUE): Document.
11570
11571         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
11572         Change signature to correspond to the targetm.sched.adjust_cost hook.
11573         Update use in TARGET_SCHED_ADJUST_COST_2.
11574         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
11575         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
11576         new scheduler dependencies lists.
11577         (ia64_gen_check): Ditto.
11578
11579         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
11580         dependencies lists.
11581
11582         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
11583         signature to correspond to the targetm.sched.is_costly_dependence hook.
11584         (is_costly_group): Update to use new scheduler dependencies lists.
11585
11586         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
11587         instead of INSN_COST () macro.
11588
11589 2007-02-01  Ian Lance Taylor  <iant@google.com>
11590
11591         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
11592
11593 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
11594
11595         * pa.md (tp_load): Correct mfctl instruction syntax.
11596
11597 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
11598
11599         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
11600         altivec_padding_size calculation on AIX.  Improve comment, add
11601         assert to verify that it's right.
11602
11603         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
11604         64-bit.
11605
11606 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
11607
11608         PR inline-asm/28686
11609         * global.c (global_alloc): Add mising initialization of
11610         ELIMINABLE_REGSET.
11611
11612 2007-02-01  Roger Sayle  <roger@eyesopen.com>
11613
11614         * alias.c (init_alias_analysis): Correct whitespace.
11615         * bb-reorder.c (fix_edges_for_rarely_executed_code,
11616         partition_hot_cold_basic_blocks): Likewise.
11617         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
11618         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
11619         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
11620         fold_builtin_snprintf_chk, fold_builtin_printf,
11621         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
11622         do_mpfr_arg3, do_mpfr_sincos): Likewise.
11623         * cfgcleanup.c (cleanup_cfg): Likewise.
11624         * cfgexpand.c (tree_expand_cfg): Likewise.
11625         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
11626         * function.c (get_next_funcdef_no): Likewise.
11627         * gengtype.c (main): Likewise.
11628         * genmodes.c (main): Likewise.
11629         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
11630         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
11631         * ifcvt.c (noce_emit_move_insn): Likewise.
11632         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
11633         Likewise.
11634         * stor-layout.c (get_best_mode): Likewise.
11635         * tree-ssa-loop-niter.c (get_val_for): Likewise.
11636         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
11637         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
11638         perform_var_substitution, solve_graph): Likewise.
11639         * tree-vrp.c (vrp_finalize): Likewise.
11640
11641 2007-02-01  Ian Lance Taylor  <iant@google.com>
11642
11643         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
11644         high part of a paradoxical subreg, return a constant zero.
11645
11646 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
11647
11648         * toplev.c (lang_dependent_init): Call init_set_costs.
11649         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
11650
11651 2007-02-01  Richard Guenther  <rguenther@suse.de>
11652
11653         PR middle-end/30656
11654         * fold-const.c (fold_negate_expr): Allow negating a
11655         constant if overflow does not change.
11656
11657 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
11658
11659         * doc/c-tree.texi (Expression trees): Improve markup.
11660         * doc/tm.texi (Register Classes, Addressing Modes)
11661         (Floating Point): Fix spacing after abbreviations.  Fix some
11662         typos.
11663
11664 2007-02-01  Ben Elliston  <bje@au.ibm.com>
11665
11666         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
11667         * doc/contrib.texi: Likewise.
11668         * doc/install.texi: Likewise.
11669
11670 2007-01-31  Richard Henderson  <rth@redhat.com>
11671             Ian Lance Taylor  <iant@google.com>
11672
11673         * lower-subreg.c: New file.
11674         * rtl.def (CONCATN): Define.
11675         * passes.c (init_optimization_passes): Add pass_lower_subreg and
11676         pass_lower_subreg2.
11677         * emit-rtl.c (update_reg_offset): New static function, broken out
11678         of gen_rtx_REG_offset.
11679         (gen_rtx_REG_offset): Call update_reg_offset.
11680         (gen_reg_rtx_offset): New function.
11681         * regclass.c: Revert patch of 2006-03-05, restoring
11682         reg_scan_update.
11683         (clear_reg_info_regno): New function.
11684         * dwarf2out.c (concatn_loc_descriptor): New static function.
11685         (loc_descriptor): Handle CONCATN.
11686         * common.opt (fsplit_wide_types): New option.
11687         * opts.c (decode_options): Set flag_split_wide_types when
11688         optimizing.
11689         * timevar.def (TV_LOWER_SUBREG): Define.
11690         * rtl.h (gen_reg_rtx_offset): Declare.
11691         (reg_scan_update): Declare.
11692         * regs.h (clear_reg_info_regno): Declare.
11693         * tree-pass.h (pass_lower_subreg): Declare.
11694         (pass_lower_subreg2): Declare.
11695         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
11696         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
11697         -fsplit-wide-types.
11698         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
11699         * Makefile.in (OBJS-common): Add lower-subreg.o.
11700         (lower-subreg.o): New target.
11701
11702 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
11703
11704         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
11705
11706 2007-01-31  Anatoly Sokolov <aesok@post.ru>
11707
11708         PR target/19087
11709         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
11710
11711 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11712
11713         PR middle-end/29335
11714         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
11715
11716 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
11717
11718         * cfgloop.h: Include vec-prim.h.
11719         (enum li_flags): Remove LI_ONLY_OLD.
11720         (loop_iterator): Changed.
11721         (fel_next, fel_init): Iterate over loop tree.
11722         (FOR_EACH_LOOP_BREAK): New macro.
11723         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
11724         FOR_EACH_LOOP.
11725         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
11726         * modulo-sched.c (sms_schedule): Ditto.
11727         * tree-vectorizer.c (vectorize_loops): Ditto.
11728         * doc/loop.texi: Update information on loop numbering and behavior of
11729         FOR_EACH_LOOP wrto new loops.
11730         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
11731         add_to_evolution_1): Test nestedness of loops instead of comparing
11732         their numbers.
11733         * tree-chrec.c (chrec_fold_plus_poly_poly,
11734         chrec_fold_multiply_poly_poly, chrec_evaluate,
11735         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
11736         reset_evolution_in_loop): Ditto.
11737         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
11738
11739 2007-01-31  Dirk Mueller  <dmueller@suse.de>
11740
11741         * c-common.c (warn_about_parentheses): Separate warning about
11742         un-parenthized sequence of comparison operators from the one
11743         which is supposed to warn about x <= y <= z.
11744
11745 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
11746
11747         * optabs.h (enum optab_index): Add new OTI_isinf.
11748         (isinf_optab): Define corresponding macro.
11749         * optabs.c (init_optabs): Initialize isinf_optab.
11750         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
11751         patterns.
11752         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
11753         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
11754         using isinf_optab.
11755         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
11756         expand_builtin_interclass_mathfn.
11757         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
11758         * config/i386/i386.md (UNSPEC_FXAM): New constant.
11759         (fxam<mode>2_i387): New insn pattern.
11760         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
11761         built-in functions as x87 inline asm.
11762
11763 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
11764
11765         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
11766
11767 2007-01-30  Eric Christopher  <echristo@apple.com>
11768
11769         * config.gcc: Add geode.
11770
11771 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
11772
11773         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
11774         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
11775         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
11776         value-prof.c: Fix comment typos.
11777
11778 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11779
11780         PR c++/24745
11781         * doc/invoke.texi (Wpointer-arith): Document warning.
11782
11783 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
11784
11785         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
11786         the list of discrepancies from the draft TR.
11787
11788 2007-01-30  Dirk Mueller  <dmueller@suse.de>
11789
11790         PR c++/30601
11791         * doc/invoke.texi (-Wreturn-type): Update description to
11792         match new behavior.
11793
11794 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
11795
11796         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
11797
11798 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
11799
11800         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
11801         to handle optabs that operate on floating point input argument and
11802         output to integer output.
11803         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
11804         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
11805         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
11806         expand_builtin_interclass_mathfn ().
11807         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
11808         (ilogbsi2): Remove.
11809         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
11810         ilogbl built-in functions as x87 intrinsics.
11811
11812 2007-01-30  Richard Guenther  <rguenther@suse.de>
11813
11814         PR middle-end/27657
11815         * dwarf2out.c (reference_to_unused): Query varpool if the
11816         variable was output.
11817
11818 2007-01-30  Richard Guenther  <rguenther@suse.de>
11819
11820         PR middle-end/30313
11821         * passes.c (execute_one_pass): Reset in_gimple_form to not
11822         confuse non-unit-at-a-time mode.
11823
11824 2007-01-29  Roger Sayle  <roger@eyesopen.com>
11825             Richard Guenther  <rguenther@suse.de>
11826
11827         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
11828         avoid undefined behaviour on overflow.  Use force_fit_type_double
11829         to construct the constant with the specified TREE_OVERFLOW.
11830
11831 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
11832
11833         * config/dfp-bit.c: Add parameterized support for fp exceptions.
11834         * config/dfp-bit.h: Ditto.
11835
11836 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11837
11838         * c-decl.c (pop_scope): Replace warnings with call to
11839         warn_for_unused_label.
11840         * c-common.h (warn_for_unused_label): Declare.
11841         * c-common.c (warn_for_unused_label): Define.
11842
11843 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
11844
11845         * tree-optimize.c (update_inlined_to_pointers): Delete unused
11846         function.
11847
11848 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
11849
11850         * Makefile.in (USER_H): Remove decfloat.h.
11851         * ginclude/decfloat.h: Delete, moving contents to ...
11852         * ginclude/float.h: Add support for decimal floating point,
11853         guarded by __STDC_WANT_DEC_FP__.
11854
11855 2007-01-29  Mike Stump  <mrs@apple.com>
11856
11857         * doc/gccint.texi (Top): Rename Loop Representation to Loop
11858         Analysis and Representation to resolve case insensitive conflict.
11859         * doc/loop.texi (Loop Analysis and Representation): Likewise.
11860
11861 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
11862
11863         * tree.h (struct tree_memory_tag): Add aliases member.
11864         (MTAG_ALIASES): New macro.
11865         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
11866         (add_may_alias): Remove pointer-set. Update for may_aliases being
11867         a bitmap.
11868         (mark_aliases_call_clobbered): Update for may_aliases being a
11869         bitmap.
11870         (compute_tag_properties): Ditto.
11871         (create_partition_for): Ditto.
11872         (compute_memory_partitions): Ditto.
11873         (dump_may_aliases_for): Ditto.
11874         (is_aliased_with): Ditto.
11875         (add_may_alias_for_new_tag): Ditto.
11876         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
11877         (compute_is_aliased): New function.
11878         (compute_may_aliases): Call compute_is_aliased).
11879         (init_alias_info): Initialize alias_bitmap_obstack.
11880         (union_alias_set_into): New function.
11881         (compute_flow_sensitive_aliasing): Use union_aliases_into.
11882         (have_common_aliases_p): Rewrite to take two bitmaps and use
11883         intersection.
11884         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
11885         Update for bitmaps.
11886         (finalize_ref_all_pointers): Update for add_may_alias changes.
11887         (new_type_alias): Ditto.
11888         * tree-flow-inline.h (may_aliases): Return a bitmap.
11889         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
11890         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
11891         may_aliases being a bitmap.
11892         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
11893         may_aliases now returns a bitmap.
11894         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
11895         being a bitmap.
11896         * tree-ssa-operands.c (add_virtual_operand): Update for
11897         may_aliases being a bitmap.
11898
11899 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
11900
11901         PR tree-optimization/30630
11902         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
11903         variable as changed.
11904
11905 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
11906
11907         PR c++/28266
11908         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
11909         expanded only once even if an error occurs.
11910
11911 2007-01-29  Ben Elliston  <bje@au.ibm.com>
11912
11913         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
11914         (__gcov_average_profiler): Likewise.
11915         (__gcov_ior_profiler): Likewise.
11916         (__gcov_merge_ior): Likewise.
11917
11918 2007-01-28  Jan Hubicka  <jh@suse.cz>
11919
11920         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
11921         * value-prof.c (stringop_block_profile): Likewise.
11922
11923 2007-01-28  Jan Hubicka  <jh@suse.cz>
11924
11925         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
11926         variant handling histograms; add wrapper.
11927         (clear_storage_via_libcall): Export.
11928         (emit_block_move_hints): Break out from ...; add histograms.
11929         (emit_block_move): ... this one.
11930         (clear_storage_hints): Break out from ...; add histograms.
11931         (clear_storage): ... this one.
11932         (set_storage_via_memset): Handle histogram.
11933         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
11934         (clear_storage_hints, clear_storage_via_libcall): Declare.
11935         (set_storage_via_setmem): Update prototype.
11936         * doc/md.texi (movmem, setmem): Document new arguments.
11937
11938         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
11939         new histograms.
11940         (stringop_block_profile): New global function.
11941         (tree_stringops_values_to_profile): Profile block size and alignment.
11942         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
11943         HIST_TYPE_IOR.
11944         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
11945         (stringop_block_profile): Declare.
11946         * builtins.c: Include value-prof.h.
11947         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
11948         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
11949         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
11950         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
11951         * profile.c (instrument_values): Add new counters.
11952         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
11953         calls.
11954         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
11955         (tree_init_edge_profiler): Build new profilers.
11956         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
11957         (pass_tree_profile): Add dump.
11958         (tree_profile_hooks): Update.
11959         * Makefile.in (LIBGCOV): Add new constants.
11960         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
11961         __gcov_ior_profiler): New.
11962         * i386.md (movmem/setmem expanders): Add new optional arguments.
11963
11964 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
11965
11966         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
11967
11968 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
11969
11970         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
11971         (tree_unswitch_single_loop): Pass eni_size_weights to
11972         tree_num_loop_insns.
11973         * tree-ssa-loop-manip.c: Include tree-inline.h.
11974         (can_unroll_loop_p): Pass eni_size_weights to
11975         tree_num_loop_insns.
11976         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
11977         Pass eni_size_weights to estimate_num_insns.
11978         * tree.h (init_inline_once): Export.
11979         * toplev.c (backend_init): Call init_inline_once.
11980         * cgraphunit.c (cgraph_process_new_functions,
11981         cgraph_analyze_function): Pass eni_inlining_weights to
11982         estimate_num_insns.
11983         * ipa-inline.c (compute_inline_parameters): Ditto.
11984         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
11985         to estimate_num_insns.
11986         (try_unroll_loop_completely): Pass eni_size_weights to
11987         tree_num_loop_insns.
11988         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
11989         ot estimate_num_insns.
11990         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
11991         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
11992         * tree-inline.c (eni_inlining_weights, eni_size_weights,
11993         eni_time_weights): New variables.
11994         (init_inline_once): Initialize them.
11995         (struct eni_data): Mew.
11996         (estimate_num_insns_1, estimate_num_insns): Use weights.
11997         * tree-inline.h (struct eni_weights_d): New.
11998         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
11999         (estimate_num_insns): Declaration changed.
12000         * cfgloop.h (tree_num_loop_insns): Declaration changed.
12001         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
12002         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
12003
12004 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
12005
12006         * tree-data-ref.c (conflict_fn): Assert that the number of affine
12007         relations in the conflict function is valid.
12008
12009 2007-01-27  Ian Lance Taylor  <iant@google.com>
12010
12011         * common.opt: Add fstrict-overflow.
12012         * opts.c (decode_options): Set flag_strict_overflow if -O2.
12013         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
12014         (TYPE_OVERFLOW_UNDEFINED): Define.
12015         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
12016         Replace all uses.
12017         * tree.h (TYPE_TRAP_SIGNED): Don't define.
12018         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
12019         (fold_negate_expr): Likewise.
12020         (make_range): Likewise.
12021         (extract_muldiv_1): Likewise.
12022         (maybe_canonicalize_comparison): Likewise.
12023         (fold_comparison): Likewise.
12024         (fold_binary): Likewise.
12025         (tree_expr_nonnegative_p): Likewise.
12026         (tree_expr_nonzero_p): Likewise.
12027         * tree-vrp.c (compare_values): Likewise.
12028         (extract_range_from_binary_expr): Likewise.
12029         (extract_range_from_unary_expr): Likewise.
12030         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
12031         Likewise.
12032         (nowrap_type_p): Likewise.
12033         * tree-scalar-evolution.c (simple_iv): Likewise.
12034         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
12035         (build_range_check): Likewise.
12036         (extract_muldiv_1): Likewise.
12037         (fold_comparison): Likewise.
12038         * tree-vrp.c (vrp_int_const_binop): Likewise.
12039         (extract_range_from_unary_expr): Likewise.
12040         * convert.c (convert_to_integer): Likewise.
12041         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
12042         (fold_comparison): Likewise.
12043         (fold_binary): Likewise.
12044         * optabs.c (optab_for_tree_code): Likewise.
12045         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
12046         * simplify-rtx.c (simplify_const_relational_operation): Check
12047         flag_strict_overflow and flag_trapv.
12048         (simplify_const_relational_operation): Likewise.
12049         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
12050         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
12051         -fstrict-overflow.
12052
12053 2007-01-27  Roger Sayle  <roger@eyesopen.com>
12054
12055         * tree.c (tree_fold_gcd): Delete.
12056         * tree.h (tree_fold_gcd): Remove prototype.
12057         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
12058         test whether one constant integer is a multiple of another.  Instead
12059         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
12060         * fold-const.c (multiple_of_p):  We've determined both TOP and
12061         BOTTOM are integer constants so we can call int_const_binop directly
12062         instead of the more generic const_binop.
12063
12064 2007-01-27  Roger Sayle  <roger@eyesopen.com>
12065
12066         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
12067         1*X check that the constant hasn't overflowed, to preserve the
12068         TREE_OVERFLOW bit.
12069         (round_up): Provide an efficient implementation when rouding-up an
12070         INTEGER_CST to a power-of-two.
12071
12072 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12073
12074         * doc/sourcebuild.texi: Add comma for clarity.
12075         * doc/extend.texi: Fix some typos.
12076         * doc/passes.texi: Likewise.
12077         * doc/cppinternals.texi: Likewise.
12078         * doc/c-tree.texi: Likewise.
12079         * doc/tree-ssa.texi: Likewise.
12080         * doc/install.texi: Likewise.
12081
12082 2007-01-27  Jan Hubicka  <jh@suse.cz>
12083
12084         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
12085         (pass_sra): Do not require alias information.
12086         * passes.c (init_optimization_passes): Add SRA
12087
12088 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
12089
12090         * tracer.c (rest_of_handle_tracer): We already cleaned
12091         up the CFG in tracer() so don't do it here again.
12092         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
12093         cleanup_cfg here, either.  And don't call renumber_insns.
12094
12095         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
12096         and BB_HEAD are in the insn stream here.  Instead make sure
12097         that BB_INSN is valid on all insns.  Also, do check here that
12098         there are no pending branch predictions...
12099         (rtl_verify_flow_info): ...instead of doing it here.  Checks
12100         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
12101         here.
12102
12103 2007-01-26  Roger Sayle  <roger@eyesopen.com>
12104
12105         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
12106         function to simplify/factorize operand order canonicalization.
12107         (ix86_fixup_binary_operands): Reorganize using the above function.
12108         (ix86_binary_operator_ok): Likewise.
12109
12110 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
12111
12112         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
12113         file scope from optimize_attrs.
12114         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
12115         up search.
12116         (optimize_attrs): Clear insn_code_values after freeing it.
12117
12118 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
12119
12120         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
12121         a parts.base assignment.
12122
12123 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
12124
12125         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
12126         (compute_subscript_distance, initialize_data_dependence_relation,
12127         finalize_ddr_dependent, analyze_ziv_subscript,
12128         analyze_siv_subscript_cst_affine,
12129         compute_overlap_steps_for_affine_univar,
12130         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
12131         analyze_siv_subscript, analyze_miv_subscript,
12132         analyze_overlapping_iterations, subscript_dependence_tester_1,
12133         compute_self_dependence, free_dependence_relation): Work
12134         with affine_fn instead of chrecs.
12135         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
12136         common_affine_function, affine_function_base,
12137         affine_function_constant_p, affine_fn_op, affine_fn_plus,
12138         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
12139         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
12140         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
12141         (all_chrecs_equal_p): Removed.
12142         * tree-data-ref.h (affine_fn, conflict_function): New types.
12143         (struct subscript): Change type of conflicting_iterations_in_a
12144         and conflicting_iterations_in_b.
12145
12146 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
12147
12148         PR other/30182
12149         * config/pa/pa.h (TARGET_HPUX_11): New.
12150         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
12151         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
12152
12153 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
12154         Richard Guenther  <rguenther@suse.de>
12155
12156         * tree-ssa-structalias.c (solve_graph): Handle case
12157         we merged the variable to another.
12158
12159 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12160
12161         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
12162         functions.
12163
12164         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
12165         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
12166
12167 2007-01-25  DJ Delorie  <dj@redhat.com>
12168
12169         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
12170         allow changes to modes which don't fit in those registers.
12171
12172         * reload1.c (choose_reload_regs): Check for invalid subregs before
12173         computing their locations, not after.
12174
12175 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
12176
12177         PR 25127
12178         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
12179         save Altivec registers in an eh_return function.
12180         (compute_vrsave_mask): Likewise.
12181         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
12182         for saving Altivec registers.
12183         (rs6000_emit_prologue): Don't allocate stack twice in
12184         eh_return function.  Correct expected value of altivec_save_offset
12185         when using save_world.  Describe save of R0 to stack when using
12186         save_world.  Describe stack pointer adjustment when using
12187         save_world.  Remove duplicated eh_return parameter register saving.
12188         Update sp_offset variable after save_world.
12189         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
12190         darwin-world.asm.
12191         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
12192         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
12193         implies Altivec.
12194
12195 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
12196
12197         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
12198
12199 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
12200
12201         PR other/30182
12202         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
12203         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
12204
12205 2007-01-25  Richard Guenther  <rguenther@suse.de>
12206
12207         * doc/invoke.texi (-Wcoverage-mismatch): Document.
12208         * common.opt (-Wcoverage-mismatch): New warning option.
12209         * coverage.c (get_coverage_counts): Ignore coverage mismatch
12210         if -Wcoverage-mismatch is given.
12211
12212 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
12213
12214         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
12215         (ipcp_driver): Change to static definition.
12216         Add dumping of the ifunctions.
12217         (constant_val_insert): Remove unused parameter. Support for SSA.
12218         (ipcp_propagate_const): Support for SSA.
12219         (ipcp_profile_bb_print): Print only analyzed nodes.
12220         (ipcp_replace_map_create): Remove support for Fortran constant
12221         for now.
12222         * ipa-prop.c (ipa_method_modify_stmt,
12223         ipa_callsite_compute_param): Support for SSA.
12224         * ipa-prop.h (ipcp_driver): Remove declaration.
12225         (IS_VALID_TREE_MAP_INDEX): Add define.
12226
12227 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
12228
12229         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
12230
12231 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12232
12233         PR middle-end/30447
12234         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
12235         constant argument to cabs and do it without checking for
12236         -funsafe-math-optimizations.
12237
12238 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
12239
12240         * c-common.h (RID_FIRST_CXX0X): New.
12241         (RID_LAST_CXX0X): New.
12242         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
12243         by -Wall.
12244         * c.opt (Wc++0x-compat): New.
12245         * doc/invoke.texi (-Wc++0x-compat): Document.
12246
12247 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12248
12249         * builtins.c (fold_builtin_carg): New.
12250         (fold_builtin_1): Use it.
12251
12252 2007-01-24  Jan Hubicka  <jh@suse.cz>
12253
12254         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
12255
12256         * ipa-inline.c (initial_insns, max_insns): Delete.
12257         (compute_max_insns): New function.
12258         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
12259         of insns as base for code growth.
12260         (cgraph_decide_inlining): Make initial_insns local; do not compute
12261         max_insns.
12262         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
12263         * doc/invoke.texi (inline-unit-growth): Update docs.
12264
12265 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
12266
12267         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
12268         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
12269         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
12270         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
12271         for CPUs that have PTA_CX16 set.
12272
12273         PR middle-end/27416
12274         * gimplify.c (omp_check_private): New function.
12275         (gimplify_scan_omp_clauses): Use it for
12276         firstprivate/lastprivate/reduction.
12277
12278         PR middle-end/30494
12279         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
12280         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
12281
12282         PR middle-end/30421
12283         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
12284         If lower_lastprivate_clauses emits some statements, append them
12285         to dlist rather than body_p and to body_p append an initializer.
12286         (lower_omp_for): Adjust caller.
12287
12288 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
12289
12290         * target.h (globalize_decl_name): New.
12291         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
12292         * output.h (default_globalize_decl_name): New.
12293         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
12294         globalize_label.
12295         (globalize_decl): Ditto.
12296         (default_globalize_decl_name): New.
12297         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
12298         (ia64_handle_version_id_attribute): New.
12299         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
12300         (ia64_asm_output_external): Use globalize_decl_name instead
12301         of globalize_label.
12302         * doc/extend.texi (version_id): New pragma.
12303         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
12304
12305 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12306
12307         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
12308         _uleb128_t and _Unwind_SWord with _sleb128_t.
12309         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
12310         uw_frame_state_for, uw_update_context_1): Likewise.
12311         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
12312         * unwind-pe.h (read_uleb128, read_sleb128,
12313         read_encoded_value_with_base): Likewise.
12314         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
12315
12316 2007-01-24  Richard Guenther  <rguenther@suse.de>
12317
12318         * builtins.c (expand_builtin_cexpi): Get the fndecl
12319         for cexp in the correct way.
12320
12321 2007-01-24  Jan Hubicka  <jh@suse.cz>
12322
12323         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
12324
12325 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12326
12327         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
12328         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
12329         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
12330         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
12331         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
12332         __SIZEOF_PTRDIFF_T__.
12333         * doc/cpp.texi: Documentation for the new builtin macros added.
12334
12335 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
12336
12337         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
12338         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
12339         instead of operands[2] to avoid access past the end of array.
12340
12341 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
12342
12343         * reload1.c (emit_reload_insns): Pass the reload register
12344         for a non-spill output reload through forget_old_reloads_1.
12345
12346 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
12347
12348         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
12349         _SOFT_DOUBLE if doubles use software floating-point.
12350         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
12351         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
12352         * config/rs6000/darwin-ldouble.c: Also compile functions for
12353         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
12354         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
12355         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
12356         commented-out long double override.
12357         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
12358         * config/rs6000/eabispe.h: Likewise.
12359         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
12360         long double for non-SPE.
12361         (rs6000_handle_option): Likewise.
12362         (invalid_e500_subreg): Disallow more subregs involding DImode,
12363         DFmode, TImode or TFmode.
12364         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
12365         E500 double.
12366         (legitimate_lo_sum_address_p): Also check for TFmode for E500
12367         double.
12368         (rs6000_legitimize_address): Also handle TFmode for E500 double.
12369         (rs6000_legitimize_reload_address): Also handle TFmode for E500
12370         double.
12371         (rs6000_legitimate_address): Also check for TFmode for E500
12372         double.
12373         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
12374         (spe_build_register_parallel): Handle TFmode and TCmode.
12375         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
12376         double.
12377         (function_arg): Handle TFmode and TCmode for E500 double.
12378         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
12379         in general.
12380         (print_operand): Handle TFmode and TImode for %y.
12381         (rs6000_generate_compare): Handle TFmode comparisons for E500
12382         double.
12383         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
12384         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
12385         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
12386         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
12387         TFmode for E500 double.
12388         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
12389         (floatsidf2): Enable for E500 double.
12390         (movtf_softfloat): Use rs6000_nonimmediate_operand.
12391         (extenddftf2): Change to extenddftf2_fprs.
12392         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
12393         depending on TARGET_E500_DOUBLE.
12394         (extendsftf2): Enable for E500 double.
12395         (trunctfdf2): Enable for E500 double.
12396         (trunctfsf2): Change to trunctfsf2_fprs.
12397         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
12398         depending on TARGET_E500_DOUBLE.
12399         (floatsitf2): Enable for E500 double.
12400         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
12401         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
12402         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
12403         (negtf2): Change to negtf2_internal.
12404         (negtf2): New expander.
12405         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
12406         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
12407         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
12408         (movdi_internal32): Use rs6000_nonimmediate_operand.
12409         (unnamed splitter): Likewise.
12410         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
12411         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
12412         (SPE64TF, DITI): New mode macros.
12413         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
12414         modes.
12415         (frob_tf_ti): New.
12416         (frob_<mode>_di_2): New.
12417         (frob_tf_di_8_2): New.
12418         (frob_di_df): Change to frob_di_<mode>; allow more modes.
12419         (frob_ti_tf): New.
12420         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
12421         more modes.
12422         (frob_ti_<mode>_8_2): New.
12423         (frob_ti_tf_2): New.
12424         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
12425         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
12426         TFmode.
12427         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
12428         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
12429         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
12430         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
12431         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
12432         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
12433         tsttflt_gp): New.
12434
12435 2007-01-23  Ian Lance Taylor  <iant@google.com>
12436
12437         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
12438         insn-*.o first.
12439         (OBJS-archive): Reformat, alphabetize.
12440         (OBJS): Change out_object_file to OBJS-md.
12441
12442 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
12443
12444         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12445         JUMP_P and CALL_P predicates where applicable.
12446         * config/i386/i386.c: Ditto.
12447         * config/i386/i386.md: Ditto.
12448         * config/i386/mmx.md: Ditto.
12449         * config/i386/predicates.md: Ditto.
12450
12451 2007-01-22  Andreas Schwab  <schwab@suse.de>
12452
12453         * config/m68k/m68k.h: Fix comment.
12454
12455 2007-01-22  Jan Hubicka  <jh@suse.cz>
12456
12457         * passes.c (init_optimization_passes): Do not rerun
12458         pass_early_warn_uninitialized.
12459
12460 2007-01-22  Richard Guenther  <rguenther@suse.de>
12461
12462         PR tree-optimization/30038
12463         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
12464         function.
12465         (execute_cse_sincos_1): Likewise.
12466         (execute_cse_sincos): Likewise.
12467         (gate_cse_sincos): Likewise.
12468         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
12469         the cexpi() canonicalization of sincos().
12470         * tree-pass.h (pass_cse_sincos): Declare.
12471         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
12472
12473 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
12474
12475         PR rtl-optimization/29329
12476         * combine.c (replaced_rhs_insn): Rename to i2mod.
12477         (replaced_rhs_value): Rename to i2mod_new_rhs.
12478         (i2mod_old_rhs): New global variable.
12479         (combine_instructions): Adjust for above change.  Save a copy of
12480         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
12481         note are substituted in the second instruction.
12482         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
12483         ditch the note if it pertains to the second eliminated register
12484         and this register is mentioned in i2mod_old_rhs.
12485
12486         Revert:
12487         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
12488
12489         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
12490         the insn to which the note was originally attached.
12491
12492 2007-01-21  Jan Hubicka  <jh@suse.cz>
12493
12494         * ipa-inline.c (inlining_mode): Comment, move up.
12495         (cgraph_decide_inlining_incrementally): Do not perform inlining
12496         itself; fix handling of flattening of self recursive functions.
12497         (cgraph_find_cycles): Remove.
12498         (cgraph_flatten_node): Remove.
12499         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
12500         (try_inline): New function.
12501         (cgraph_early_inlining): Update call of
12502         cgraph_decide_inlining_incrementally.  Apply inlining here.
12503         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
12504
12505 2007-01-21  Dirk Mueller  <dmueller@suse.de>
12506
12507         PR bootstrap/30511
12508         * tree-vrp.c (check_array_bounds): do not warn
12509         about ADDR_EXPR's of ARRAY_REF's which are immediately
12510         used in binary expressions.
12511
12512 2007-01-21  Ira Rosen  <irar@il.ibm.com>
12513
12514         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
12515         read_write_dep and macros for its access.
12516         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
12517         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
12518         argument, call vect_check_interleaving for every independent pair of
12519         data-refs. Mark loads that access the same memory location as a store
12520         in the loop.
12521         (vect_check_dependences): Remove.
12522         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
12523         call, fix the call to vect_analyze_data_ref_dependence.
12524         (vect_analyze_data_ref_access): For statements that access the same
12525         data-ref, check that they are not stores; for loads, check that there
12526         is no store that access the same location.
12527
12528 2007-01-20  Roger Sayle  <roger@eyesopen.com>
12529             Joseph Myers  <joseph@codesourcery.com>
12530
12531         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
12532         (-fdump-rtl-stack): Likewise.
12533         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
12534         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
12535         (-mpt-fixed): Use @minus{} for minus sign.
12536         (Using Precompiled Headers): Fix under/overfull hbox.
12537
12538 2007-01-20  Jan Hubicka  <jh@suse.cz>
12539
12540         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
12541         place within annotation.
12542
12543 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12544
12545         * pa.c (output_move_double): Change array size of xoperands to 4.
12546
12547 2007-01-20  Jan Hubicka  <jh@suse.cz>
12548
12549         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
12550         as temporary.
12551
12552 2007-01-19  Ian Lance Taylor  <iant@google.com>
12553
12554         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
12555         constant to unsigned HOST_WIDE_INT before negating.
12556
12557 2007-01-19  Ian Lance Taylor  <iant@google.com>
12558
12559         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
12560         to unsigned.
12561         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
12562         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
12563         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
12564         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
12565         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
12566         (realloc_vdef, realloc_vuse): Change second parameter to
12567         unsigned.
12568         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
12569         fields to unsigned.
12570         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
12571         unsigned. Change x and lim locals to unsigned.
12572         (realloc_vdef, realloc_vuse): Change num_elem parameter to
12573         unsigned.
12574         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
12575         (copy_virtual_operands): Change i and n locals to unsigned.
12576
12577 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12578
12579         PR middle-end/29335
12580         * builtins.c (fold_builtin_1): Handle builtin fdim.
12581
12582 2007-01-20  Jan Hubicka  <jh@suse.cz>
12583
12584         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
12585         * tree-ssa-structalias.c (compute_points_to_sets): Do call
12586         init_alias_heapvars.
12587         (init_alias_heapvars): Initialize only when not already initialized.
12588         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
12589
12590 2007-01-19  Roger Sayle  <roger@eyesopen.com>
12591
12592         * common.opt (fsigned-zeros): New command line option.
12593         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
12594         of flag_unsafe_math_optimizations.
12595         * opts.c (set_fast_math_flags): The -ffast-math command line option
12596         implies -fno-signed-zeros.
12597         (fast_math_flags_set_p): Likewise.
12598
12599         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
12600         the documentation of -ffast-math appropriately.  Wrap long lines.
12601
12602 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
12603
12604         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
12605         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
12606
12607 2007-01-19  Tomas Bily  <tbily@suse.cz>
12608
12609         * cgraphunit.c (cgraph_finalize_function): Updating of pid
12610         * tree-profile.c:
12611         (tree_init_ic_make_global_vars): New function
12612         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
12613         (tree_gen_ic_profiler): New function
12614         (tree_gen_ic_func_profiler): New function
12615         (tree_profiling): Added calling of tree_gen_ic_func_profiler
12616         (tree_profile_hooks): Added hook for indirec/virtual calls
12617         * value-prof.c (tree_find_values_to_profile): New case for
12618         indirect calls
12619         (tree_values_to_profile): Call for determining indirect/virtual
12620         counters
12621         (tree_indirect_call_to_profile): New function
12622         (tree_ic_transform): New function
12623         (tree_ic): New function
12624         (find_func_by_pid): New function
12625         (init_pid_map): New function
12626         (tree_value_profile_transformations): Added check for
12627         indirect/virtual call transformation
12628         * value-prof.h (enum hist_type): New counter type for
12629         indirect/virtual calls
12630         (profile_hooks): Added new hook for profiling indirect/virtual
12631         calls
12632         * profile.c (instrument_values): New case for indirect/virtual
12633         call added
12634         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
12635         (GCOV_COUNTER_V_INDIR): New counter type
12636         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
12637         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
12638         call added
12639         * cgraph.c: Definition of cgraph_max_pid
12640         (cgraph_create_node): Default init of pid attribute
12641         * cgraph.h: Declaration of cgraph_max_pid
12642         (struct cgraph_node): Added pid attribute
12643         * libgcov.c (__gcov_indirect_call_profiler): New function
12644         (__gcov_one_value_profiler_body): New function
12645         (__gcov_one_value_profiler): Body was moved to
12646         __gcov_one_value_profiler_body and calls it
12647
12648 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
12649
12650         * doc/gty.texi (Options): Document the mark_hook option to GTY.
12651         * gengtype.c (write_types_data, write_func_for_structure,
12652         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
12653         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
12654         (walk_type, write_func_for_structure): Generate the mark_hook if
12655         needed.
12656
12657 2007-01-19  Jan Hubicka  <jh@suse.cz>
12658
12659         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
12660         'early' argument take inlining mode argument specifying whether to
12661         inline for size/speeed or all functions; add support for flattening;
12662         improve dumpting.
12663         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
12664
12665 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12666
12667         PR c++/17947
12668         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
12669         the name of the declared identifier.
12670
12671 2007-01-19  Dirk Mueller  <dmueller@suse.de>
12672
12673         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
12674         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
12675         duplicate evaluation.
12676
12677 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
12678
12679         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
12680         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
12681         to XFMode, use acosxf2 and truncate result to requested mode.
12682         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
12683         (asin<mode>2): Similarly, with asin expanders.
12684         (*fscalexf4_i387): Rename from *fscalexf4.
12685         (expNcorexf3): New expander.
12686         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
12687         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
12688         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
12689         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
12690         patterns for SSE math.
12691         (exp10<mode>2): Similarly, with exp10 expanders.
12692         (exp2<mode>2): Similarly, with exp2 expanders.
12693         (expm1<mode>2): Similarly, with expm1 expanders.
12694         (ldexp<mode>3): Similarly, with ldexp expanders.
12695         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
12696         Use gen_truncxf<mode>2_i387_noop to truncate result.
12697
12698 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12699
12700         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
12701         for ColdFire targets.
12702
12703 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
12704             Richard Sandiford  <richard@codesourcery.com>
12705
12706         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
12707         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
12708         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
12709         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
12710         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
12711         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
12712
12713 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12714
12715         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
12716         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
12717         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
12718         (*adddi_dilshr32_cf): New pattern.
12719         (adddi3, subdi3): Remove first alternatives.
12720
12721 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12722
12723         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
12724         implemented using move.l, do not use its cc result for floating-point
12725         comparisons.
12726
12727 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12728
12729         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
12730         from accepting 's' constraints if flag_pic.
12731
12732 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12733
12734         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
12735         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
12736         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
12737         condition from TARGET_68881 to TARGET_HARD_FLOAT.
12738
12739 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
12740
12741         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
12742         ColdFire alternatives.
12743         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
12744         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
12745         architectures that support ff1 instruction.
12746
12747 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12748             Julian Brown  <julian@codesourcery.com>
12749
12750         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
12751         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
12752         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
12753         Add commentary.
12754
12755 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
12756
12757         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
12758         and return a bool.
12759         (output_move_const_into_data_reg, output_move_simode_const): Delete.
12760         * config/m68k/m68k.c (const_method, const_int_cost): Take a
12761         HOST_WIDE_INT instead of an rtx.
12762         (m68k_rtx_costs): Update call accordingly.
12763         (output_move_const_into_data_reg): Likewise.  Fix formatting.
12764         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
12765         Return a bool.
12766         (output_move_simode_const): Update calls after above changes.
12767         Rework to use automatic variables and predicates like MEM_P.
12768         * config/m68k/m68k.md (pushexthisi_const): Update call to
12769         valid_mov3q_const.
12770
12771 2007-01-19  Dirk Mueller  <dmueller@suse.de>
12772
12773         * tree-ssa-alias.c (perform_var_substitution): Fix typo
12774         in dump_flags test.
12775
12776 2007-01-19  Richard Guenther  <rguenther@suse.de>
12777
12778         * builtins.c (expand_builtin_cexpi): Fall back to expanding
12779         via cexp in case sincos is not available.
12780
12781 2007-01-19  Richard Guenther  <rguenther@suse.de>
12782
12783         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
12784         * defaults.h (TARGET_HAS_SINCOS): Default to off.
12785         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
12786         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
12787         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
12788         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
12789         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
12790         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
12791
12792 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
12793
12794         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
12795         New insn patterns.
12796         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
12797         (atan2xf3): Directly generate RTL pattern.
12798         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
12799         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
12800         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
12801         disable patterns for SSE math.
12802         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
12803         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
12804         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
12805         disable patterns for SSE math.
12806
12807 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
12808
12809         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
12810
12811 2007-01-18  Roger Sayle  <roger@eyesopen.com>
12812
12813         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
12814         VIEW_CONVERT_EXPR to the same type as it's operand.
12815
12816 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
12817
12818         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
12819         configured for long double 128.
12820
12821 2007-01-18  Mike Stump  <mrs@apple.com>
12822
12823         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
12824         error.
12825
12826 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
12827
12828         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
12829         type correct.
12830
12831 2007-01-18  Jan Hubicka  <jh@suse.cz>
12832
12833         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
12834         greater than NUM_VOP_FREE_BUCKETS.
12835
12836 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
12837
12838         * tree-ssa-structalias.c: Update comments.
12839         (ptabitmap_obstack): Removed.
12840         (pta_obstack): New.
12841         (oldpta_obstack): Ditto.
12842         (stats): Add a few members.
12843         (struct variable_info): Remove node, complex, address_taken, and
12844         indirect_target members. Add oldsolution member.
12845         (new_var_info): Do not initialize removed members.
12846         (constraint_expr_type): Remove INCLUDES.
12847         (constraint_graph): Add size, implicit_preds, rep,
12848         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
12849         (FIRST_REF_NODE): New macro.
12850         (LAST_REF_NODE): Ditto.
12851         (FIRST_ADDR_NODE): Ditto.
12852         (find): New function.
12853         (unite): Ditto.
12854         (dump_constraint): Do not handle INCLUDES.
12855         (insert_into_complex): Do not insert duplicate constraints.
12856         (condense_varmap_nodes): Renamed and rewritten into ...
12857         (merge_node_constraints): This. Also fix bug in handling of
12858         offseted copy constraints.
12859         (clear_edges_for_node): No longer need to deal with preds at all,
12860         or removing associated preds/succs.
12861         (merge_graph_nodes): Deal with indirect_cycles.
12862         Don't deal with predecessors.
12863         (add_implicit_graph_edge): New function.
12864         (add_pred_graph_edge): Ditto.
12865         (add_graph_edge): Don't deal with predecessors.
12866         (build_constraint_graph): Removed.
12867         (build_pred_graph): New function.
12868         (build_succ_graph): Ditto.
12869         (struct scc_info): Removed in_component. Added roots, dfs, and
12870         node_mapping. Remove visited_index, unification_queue.
12871         (scc_visit): Deal with union-find we do now.
12872         Deal with cycles with REF nodes.
12873         (collapse_nodes): Renamed and rewritten to ...
12874         (unify_nodes): This.
12875         (process_unification_queue): Removed.
12876         (topo_visit): Cleanup
12877         (do_da_constraint): Use find.
12878         (do_sd_constraint): Ditto.
12879         (do_ds_constraint): Ditto.
12880         (do_complex_constraint): Ditto.
12881         (init_scc_info): Update for removed and added members.
12882         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
12883         (find_indirect_cycles): This.
12884         (equivalence_class): New variable.
12885         (label_visit): New function.
12886         (perform_variable_substitution): Rewritten.
12887         (free_var_substitution_info): New function.
12888         (find_equivalent_node): Ditto.
12889         (move_complex_constraints): Ditto.
12890         (eliminate_indirect_cycles): Ditto.
12891         (solve_graph): Only propagate changed bits.
12892         Use indirect cycle elimination.
12893         Use find.
12894         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
12895         (tree_id_eq): Renamed to ...
12896         (tree_vi_eq): This. Update for member change
12897         (insert_id_for_tree): Renamed and rewritten to ...
12898         (insert_vi_for_tree): This.
12899         (lookup_id_for_tree): Renamed and rewritten to ...
12900         (lookup_vi_for_tree): This.
12901         (get_id_for_tree): Renamed and rewritten to ...
12902         (get_vi_for_tree): Ditto.
12903         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
12904         (process_constraint): Don't handle INCLUDES.
12905         Remove special ADDRESSOF case.
12906         (find_func_aliases): Rewrite to use vi functions instead of id
12907         ones.
12908         (create_function_info_for): Ditto.
12909         (create_variable_info_for): Ditto.
12910         (intra_create_variable_infos): Ditto.
12911         (merge_smts_into): Ditto.
12912         (find_what_p_points_to): Ditto.
12913         (init_base_vars): Ditto.
12914         (init_alias_vars): Ditto.
12915         (remove_preds_and_fake_succs): New function.
12916         (dump_sa_points_to_info): Dump new stats.
12917         (dump_solution_for_var): Use find.
12918         (set_used_smts): Fix formatting.
12919         (compute_points_to_sets): Updated for new functions.
12920         (ipa_pta_execute): Ditto.
12921
12922 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12923             Richard Sandiford  <richard@codesourcery.com>
12924
12925         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
12926         parallels.
12927         * calls.c (expand_call): If the return value is a PARALLEL,
12928         extract its first member.
12929         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
12930         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
12931         use FUNCTION_EXTRA_EPILOGUE.
12932         (m68k_function_value): Return a PARALLEL if the return value
12933         is of a pointer type.
12934         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
12935         (FUNCTION_EXTRA_EPILOGUE): Remove.
12936         * config/m68k/m68k.md (D0_REG): New constant.
12937
12938 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12939
12940         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
12941         output a NOP for empty epilogues.
12942
12943 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12944
12945         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
12946         before function.  Extend register save check to include all
12947         registers, not just integer ones.
12948
12949 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
12950
12951         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
12952         (m68k_use_return_insn): ...this.
12953         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
12954         * config/m68k/m68k.c (use_return_insn): Rename to...
12955         (m68k_use_return_insn): ...this.
12956         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
12957         of USE_RETURN_INSN.
12958
12959 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
12960
12961         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
12962         nearest even, fix denormal rounding overflow.
12963
12964 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12965
12966         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
12967         f%$smove and f%$move.
12968         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
12969         (extendsfdf2_cf): Use fdmove instead of f%&move.
12970         (truncdfsf2_cf): Use fsmove instead of f%$smove.
12971         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
12972
12973 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12974
12975         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
12976         GPR<-GPR moves.
12977
12978 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
12979
12980         * real.h (real_format): Add a canonical_nan_lsbs_set field.
12981         (coldfire_single_format): Declare.
12982         (coldfire_double_format): Likewise.
12983         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
12984         of qnan_msb_set to determine the lower bits of a canonical
12985         NaN significand.
12986         (encode_ieee_double): Likewise.
12987         (encode_ieee_quad): Likewise.
12988         (ieee_single_format): Initialize canonical_nan_lsbs_set.
12989         (mips_single_format): Likewise.
12990         (ieee_double_format): Likewise.
12991         (mips_double_format): Likewise.
12992         (ieee_extended_motorola_format): Likewise.
12993         (ieee_extended_intel_96_format): Likewise.
12994         (ieee_extended_intel_128_format): Likewise.
12995         (ieee_extended_intel_96_round_53_format): Likewise.
12996         (ibm_extended_format): Likewise.
12997         (mips_extended_format): Likewise.
12998         (ieee_quad_format): Likewise.
12999         (mips_quad_format): Likewise.
13000         (vax_f_format): Likewise.
13001         (vax_d_format): Likewise.
13002         (vax_g_format): Likewise.
13003         (i370_single_format): Likewise.
13004         (i370_double_format): Likewise.
13005         (decimal_single_format): Likewise.
13006         (decimal_double_format): Likewise.
13007         (decimal_quad_format): Likewise.
13008         (c4x_single_format): Likewise.
13009         (c4x_extended_format): Likewise.
13010         (real_internal_format): Likewise.
13011         (coldfire_single_format): New real_format.
13012         (coldfire_double_format): Likewise.
13013         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
13014         canonical_nan_lsbs_set.
13015         (pdp11_d_format): Likewise.
13016         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
13017         if TARGET_COLDFIRE_CPU.
13018
13019 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13020
13021         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
13022         (output_call, m68k_legitimize_call_address): Declare.
13023         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
13024         parenthesees.  Add support for a 'W' constraint.
13025         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
13026         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
13027         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
13028         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
13029         variables.
13030         (override_options): Initialize them.  Do not set flag_no_function_cse
13031         for TARGET_ID_SHARED_LIBRARY.
13032         (m68k_output_pic_call): Delete.
13033         (m68k_legitimize_call_address): New function.
13034         (print_operand): Remove the %o prefix.  Handle the %p prefix.
13035         (output_call): New function.
13036         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
13037         target address from the GOT if symbolic jumps are not allowed.
13038         * config/m68k/m68k.md (call, general_operand): Do not set
13039         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
13040         Merge separate flag_pic and !flag_pic define_insns into...
13041         (*call, *call_value): ...these new patterns.  Match the address
13042         rather than the containing MEM and require it to be a call_operand.
13043         Use output_call to generate the asm template.
13044         * config/m68k/predicates.md (const_call_operand): New predicate.
13045         (call_operand): Likewise.
13046
13047 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13048
13049         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
13050         (STACK_GROWS_DOWNWARD): Define to 1.
13051         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
13052         comments, emphasizing that these values are only defaults.
13053         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
13054         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
13055
13056 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13057
13058         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
13059
13060 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13061             Richard Sandiford  <richard@codesourcery.com>
13062
13063         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
13064         (FP_REGNO_P): New macros.
13065         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
13066         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
13067         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
13068         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
13069
13070 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13071
13072         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13073         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
13074         to $tmake_file.
13075         * config/m68k/t-floatlib: New file, extracting common code from...
13076         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
13077         * config/m68k/t-uclinux: Here.
13078         * config/m68k/fpgnulib.c: Do not compile extendeed precision
13079         routines on ColdFire targets.
13080
13081 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13082
13083         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13084         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
13085         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
13086         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
13087         explicitly set MOTOROLA to 1.
13088         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
13089
13090 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13091             Nathan Sidwell  <nathan@codesourcery.com>
13092
13093         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
13094         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
13095         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
13096         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
13097         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
13098         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
13099         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
13100         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
13101         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
13102         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
13103         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
13104         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
13105         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
13106         (DBX_REGISTER_NUMBER): Delete.
13107         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
13108         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
13109         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
13110
13111 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13112
13113         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
13114         * config/flat.h: New file.
13115         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
13116         OBJECT_FORMAT_FLAT.
13117         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
13118         indirect references for -msep-data or -mid-shared-library.
13119         Do not use PC-relative code addresses either.
13120         * config/m68k/m68k.c (override_options): Restrict -fPIC error
13121         to -mpcrel.
13122         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
13123         for shared libraries and crt1.o for executables.  Use crti.o and
13124         crtbegin.o.
13125         (ENDFILE_SPEC): Use crtend.o and crtn.o.
13126         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
13127         Do not add -elf2flt or -shared-lib-id options here.
13128         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
13129         Pass -shared-lib-id if -mid-shared-library, taking the library
13130         identifier from -mshared-library-id if given, otherwise
13131         defaulting to 0.
13132         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
13133         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
13134         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
13135         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
13136         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
13137         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
13138         and crtend.o.
13139         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
13140         jump sequence for ISA A and ISA A+.
13141         (PICJUMP): Likewise.
13142
13143 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13144
13145         * config.gcc (m68k-*-uclinux*): Base the port on the common
13146         and m68k GNU/Linux files rather than on the generic ELF ones.
13147         * config/m68k/uclinux.h (TARGET_VERSION): Override.
13148         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
13149
13150 2007-01-18  Julian Brown  <julian@codesourcery.com>
13151             Richard Sandiford  <richard@codesourcery.com>
13152
13153         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
13154         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
13155         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
13156         before redefining.
13157         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
13158         80 unconditionally.
13159         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
13160
13161 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13162
13163         * doc/install.texi: Document m68k-uclinuxoldabi.
13164         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
13165         * config/m68k/uclinux-oldabi.h: New file, copied from
13166         config/m68k/uclinux.h.
13167
13168 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
13169
13170         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
13171         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
13172         (m32r_compute_frame_size): Use unsigned for regno.
13173         (m32r_reload_lr): Use gen_frame_mem.
13174         (pop): New.
13175         (m32r_output_function_epilogue): Don't output the function epilogue
13176         textually here.
13177         (m32r_expand_epilogue): New.
13178         (direct_return): Return false if the function has the interrupt
13179         attribute.
13180         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
13181         * config/m32r/m32r.md (epilogue): New expander.
13182         (return_lr, return_rte): New insns.
13183         (return): Make it expander.
13184         (return_normal): New expander.
13185
13186 2007-01-18  Josh Conner  <jconner@apple.com>
13187
13188         PR target/30485
13189         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
13190         support for UNLE, UNLT, UNGE, and UNGT.
13191
13192 2007-01-18  Jan Hubicka  <jh@suse.cz>
13193
13194         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
13195         * tree-tailcall (add_virtual_phis): Likewise.
13196         (optimize_tail_call): Return TODOs.
13197         (execute_tail_calls): Return TODOs.
13198         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
13199         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
13200         changed.
13201         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
13202         Cleanup cfg using TODO.
13203         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
13204         * passes.c (execute_function_todo): When cleanup did something, remove
13205         unused locals.
13206         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
13207         (make_edges): Don't cleanup_cfg.
13208
13209 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
13210
13211         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
13212         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
13213         operate on the top of stack.
13214         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
13215         register handling of instructions that output to the second
13216         stack slot.
13217         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
13218         (move_for_stack_reg): Special-case check for dead destination
13219         stack slot for constant load of 1.0 inside UNSPEC_TAN.
13220
13221         * config/i386/i386.md (UNSPEC_TAN): New constant.
13222         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
13223         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
13224         to correctly model move of constant 1.0 to top stack slot.
13225         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
13226         (unnamed peephole2 pattern): Remove corresponding peephole2
13227         pattern that optimizes tan insn and loading of constant 1.0.
13228         (tanxf2): Use fptanxf4_i387.
13229         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
13230         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
13231         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13232         disable patterns for SSE math.
13233         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
13234         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
13235
13236 2007-01-18  Dirk Mueller  <dmueller@suse.de>
13237             Richard Guenther <rguenther@suse.de>
13238
13239         PR diagnostic/8268
13240         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
13241         * common.opt (Warray-bounds): Add new warning option.
13242         * c-opts.c (c_common_handle_option): Define -Warray-bounds
13243         if -Wall is given.
13244         * Makefile.in: make tree-vrp.o depend on toplev.h
13245         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
13246         is enabled.
13247         (check_array_refs, check_array_bounds, check_array_ref): New.
13248
13249 2007-01-18  Jan Hubicka  <jh@suse.cz>
13250
13251         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
13252         (execute_ssa_ccp): Return flags conditionally.
13253         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
13254         changed.
13255         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
13256
13257 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
13258
13259         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
13260         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
13261
13262         * Makefile.c (GTFILES): Add cfglayout.h.
13263         * gengtype.c (open_base_files): Likewise.
13264         * cfglayout.c (cfg_layout_function_footer,
13265         cfg_layout_function_header) Reindent to make gengtype happy.
13266         * cfglayout.h (cfg_layout_function_footer,
13267         cfg_layout_function_header): Add GTY(()) marker.
13268
13269         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
13270
13271 2007-01-18  Ben Elliston  <bje@au.ibm.com>
13272
13273         * genautomata.c (write_automata): Include xstrerror output in the
13274         error message if writing the DFA description file fails.
13275
13276 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
13277
13278         * config/mips/mips-protos.h (mips_output_external): Make it
13279         return void.
13280         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
13281         * config/mips/mips.c (irix_output_external_libcall): Likewise.
13282         (extern_list): Likewise.
13283         (extern_head): Likewise.
13284         (TARGET_ASM_FILE_END): Likewise.
13285         (mips_file_end): Likewise.
13286         (mips_output_external): Rewritten.
13287
13288 2007-01-18  Ben Elliston  <bje@au.ibm.com>
13289
13290         * genpreds.c (write_insn_preds_c): Only write out the function
13291         body for regclass_for_constraint if we have register constraints.
13292
13293 2007-01-17  Tom Tromey  <tromey@redhat.com>
13294
13295         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
13296         * doc/install.texi (Testing): Use sourceware.org.
13297         (Binaries): Likewise.
13298         (Specific): Likewise.
13299         * doc/contrib.texi (Contributors): Use sourceware.org.
13300
13301 2007-01-17  Anatoly Sokolov <aesok@post.ru>
13302
13303         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
13304         (AVR_ENHANCED): Rename to ...
13305         (AVR_HAVE_MUL): ... new.
13306         (avr_enhanced_p): Rename to ...
13307         (avr_have_mul_p): ... new.
13308         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
13309         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
13310         * config/avr/avr.c (avr_enhanced_p): Rename to ...
13311         (avr_have_mul_p): ... new.
13312         (base_arch_s): Rename 'enhanced' to 'have_mul'.
13313         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
13314         'avr_enhanced_p' and 'enhanced'.
13315         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
13316         AVR_HAVE_MUL instead of AVR_ENHANCED.
13317         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
13318         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
13319         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
13320         instead of AVR_ENHANCED.
13321         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
13322         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
13323         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
13324
13325 2007-01-17  Ian Lance Taylor  <iant@google.com>
13326
13327         * vec.h (VEC_reserve_exact): Define.
13328         (vec_gc_p_reserve_exact): Declare.
13329         (vec_gc_o_reserve_exact): Declare.
13330         (vec_heap_p_reserve_exact): Declare.
13331         (vec_heap_o_reserve_exact): Declare.
13332         (VEC_OP (T,A,reserve_exact)): New static inline function, three
13333         versions.
13334         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
13335         negative parameter.
13336         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
13337         (VEC_OP (T,A,copy)) [all versions]: Likewise.
13338         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
13339         * vec.c (calculate_allocation): Add exact parameter.  Change all
13340         callers.
13341         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
13342         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
13343         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
13344         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
13345         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
13346         (vec_heap_p_reserve_exact): New function.
13347         (vec_heap_o_reserve_exact): New function.
13348
13349 2007-01-17  Jan Hubicka  <jh@suse.cz>
13350
13351         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
13352
13353 2007-01-17  Eric Christopher  <echristo@apple.com>
13354
13355         * config.gcc: Support core2 processor.
13356
13357 2007-01-16  Jan Hubicka  <jh@suse.cz>
13358
13359         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
13360         the names, just unlink the chain so we don't crash on dangling pointers
13361         to dead SSA names.
13362
13363 2007-01-16  Jan Hubicka  <jh@suse.cz>
13364
13365         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
13366         * tree-pass.h: Reorder to make IPA passes appear toegher.
13367         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
13368         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
13369         parameters, do not call early inliner.
13370         * ipa-inline.c: Update comments.  Include tree-flow.h
13371         (cgraph_decide_inlining): Do not compute inlining parameters.
13372         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
13373         be called with function context set up.
13374         (pass_ipa_inline): Remove unreachable functions before pass.
13375         (cgraph_early_inlining): Simplify assuming to be called from the
13376         PM as local pass.
13377         (pass_early_inline): New pass.
13378         (cgraph_gate_ipa_early_inlining): New gate.
13379         (pass_ipa_early_inline): Turn into simple wrapper.
13380         (compute_inline_parameters): New function.
13381         (gate_inline_passes): New gate.
13382         (pass_inline_parameters): New pass.
13383         (apply_inline): Move here from tree-optimize.c
13384         (pass_apply_inline): New pass.
13385         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
13386         transforming.
13387         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
13388         doing them by hand.
13389         (tree_function_versioning): Do not allocate dummy struct function.
13390         * tree-inline.h (optimize_inline_calls): Update prototype.
13391         * tree-optimize.c (execute_fixup_cfg): Export.
13392         (pass_fixup_cfg): Remove
13393         (tree_rest_of_compilation): Do not apply inlines.
13394         * tree-flow.h (execute_fixup_cfg): Declare.
13395         * Makefile.in (gt-passes.c): New.
13396         * passes.c: Include gt-passes.h
13397         (init_optimization_passes): New passes.
13398         (nnodes, order): New static vars.
13399         (do_per_function_toporder): New function.
13400         (execute_one_pass): Dump current pass here.
13401         (execute_ipa_pass_list): Don't dump current pass here.
13402
13403 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
13404
13405         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
13406         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
13407
13408 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
13409
13410         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
13411         (strong_alias): Define.
13412         (__gcc_qmul): Provide non-FMA for soft-float.
13413         (__gcc_qdiv): Same.
13414         (__gcc_qneg): New.
13415         (__gcc_qeq): New.
13416         (__gcc_qle): New.
13417         (__gcc_qge): New.
13418         (__gcc_qunord): New.
13419         (__gcc_stoq): New.
13420         (__gcc_dtoq): New.
13421         (__gcc_qtos): New.
13422         (__gcc_qtod): New.
13423         (__gcc_qtoi): New.
13424         (__gcc_qtou): New.
13425         (__gcc_itoq): New.
13426         (__gcc_utoq): New.
13427         (fmsub): New.
13428         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
13429         soft-float functions.
13430         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
13431         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
13432         about long double soft float.
13433
13434 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
13435             Tehila Meyzels  <tehila@il.ibm.com>
13436
13437         * tree-vectorizer.h (is_pattern_stmt_p): New.
13438         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
13439         formatting (tabs instead of spaces). Cleanup and clarify setting
13440         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
13441         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
13442         (vectorizable_type_demotion): Check that types are integral.
13443         (vectorizable_type_promotion): Likewise.
13444         (vectorizable_store): Fix typo.  Eliminate new-line at end of
13445         comments.
13446
13447 2007-01-16  Jan Hubicka  <jh@suse.cz>
13448
13449         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
13450         cgraph edges too.
13451
13452 2007-01-15  Eric Christopher  <echristo@apple.com>
13453
13454         * ifcvt.c: Include vec.h, vecprim.h.
13455         (check_cond_move_block): New argument regs.
13456         Reorganize. Add registers used to regs.
13457         (cond_move_process_if_block): Use regs set above as
13458         loop bounds.
13459
13460 2007-01-15  Eric Christopher  <echristo@apple.com>
13461
13462         * config/darwin.h: Update copyright.
13463         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
13464         (LINK_COMMAND_SPEC): Add -u.
13465         (LINK_SPEC): Fix umbrella for above.
13466
13467 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
13468
13469         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
13470         glibc CVS.
13471
13472 2007-01-15  Tom Tromey  <tromey@redhat.com>
13473
13474         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
13475         * doc/install.texi (Testing): Don't mention jacks.
13476         (Configuration): Document --enable-java-maintainer-mode.  Move
13477         --with-java-home to libgcj-specific section.  Document
13478         --with-ecj-jar.
13479         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
13480
13481 2007-01-15  Jan Hubicka  <jh@suse.cz>
13482
13483         * tree-ssa-dce.c (DCE_TODOs): New.
13484         (propagate_necessity): Return if something changed.
13485         (eliminate_unnecessary_stmts): Likewise.
13486         (perform_tree_ssa_dce): Return TODO flags when needed.
13487         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
13488
13489 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
13490
13491         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
13492         (fyl2x_extend<mode>xf3_i387): New insn pattern.
13493         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
13494         patterns using X87MODEF12 mode macro.  Extend operand 1
13495         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
13496         (log10<mode>2): Ditto.
13497         (log2<mode>2): Ditto.
13498         (log1p<mode>2): Ditto.
13499         (logb<mode>2): Ditto.
13500         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
13501         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
13502         (*fxtractxf3_i387): Rename from *fxtractxf3.
13503         (fxtract_extend<mode>xf3_i387): New insn pattern.
13504         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
13505         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
13506         and gen_fyl2xxf3_i387().
13507
13508 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
13509
13510         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
13511         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
13512         get_loop_exit_edges.  Changed return type to bool.
13513         * cfgloop.h (fix_loop_placement): Declaration removed.
13514
13515 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
13516
13517         * param.h (MIN_VECT_LOOP_BOUND): New.
13518         * params.def (MIN_VECT_LOOP_BOUND): New.
13519         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
13520         argument - minimum threshold for number of iterations.
13521         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
13522         argument to declaration.
13523         * tree-vect-analyze.c (vect_analyze_operations): Check value of
13524         MIN_VECT_LOOP_BOUND.
13525         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
13526         slpeel_tree_peel_loop_to_edge with additional argument.
13527         (vect_do_peeling_for_alignment): Likewise.
13528         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
13529
13530 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
13531
13532         PR target/30413
13533         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
13534         operands of size 1.
13535
13536 2007-01-14  Jan Hubicka  <jh@suse.cz>
13537
13538         * tree-dfa.c (remove_referenced_var): New function.
13539         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
13540         prune referenced vars list too.
13541         * tree-flow.h (remove_referenced_var): Declare.
13542
13543 2007-01-14  Jan Hubicka  <jh@suse.cz>
13544
13545         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
13546         separately.
13547         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
13548         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
13549         * except.h (verify_eh_throw_table_statements): Kill prototype.
13550         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
13551         into call exrepssions.
13552         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
13553         eh trhow verifier.
13554         * tree-cfg.c: Include pointer-set.h.
13555         (verify_node_sharing): Work on pointer set.
13556         (verify_eh_throw_stmt_node): New.
13557         (verify_stmts): Use pointers sets, verify throw_stmt.
13558
13559 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
13560
13561         * ipa-reference.c (analyze_function): Consider also addresses taken
13562         in phi nodes.
13563
13564 2007-01-12  Roger Sayle  <roger@eyesopen.com>
13565
13566         * c-typeck.c (null_pointer_constant_p): Replace use of
13567         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13568         (build_c_cast): Likewise.
13569
13570 2007-01-12  Roger Sayle  <roger@eyesopen.com>
13571
13572         * tree.h (force_fit_type_double): Remove unused final argument.
13573         * c-common.c (constant_expression_warning): Replace use of
13574         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13575         (convert_and_check): Likewise.
13576         (shorten_compare): Update call to force_fit_type_double.
13577         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
13578         * convert.c (convert_to_pointer): Update call to
13579         force_fit_type_double.
13580         * fold-const.c (force_fit_type_double): Remove overflowed_const
13581         argument.
13582         (int_const_binop, fold_convert_const_int_from_int,
13583         fold_convert_const_int_from_real, fold_div_compare,
13584         fold_sign_changed_comparison, fold_unary, fold_negate_const,
13585         fold_abs_const, fold_not_const): Remove the final argument from
13586         calls to force_fit_type_double.
13587
13588 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13589
13590         * configure.ac: Set insn to "nop" for spu-*-* also.
13591         * configure: Regenerate.
13592
13593 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
13594
13595         * builtins.def : Add BUILT_IN_FREE.
13596
13597 2007-01-12  Jan Hubicka  <jh@suse.cz>
13598
13599         PR tree-optimization/30443
13600         * tree-inline.c (tree_function_versioning): Do not optimize when
13601         cloning for inlining.
13602
13603 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
13604
13605         * doc/loop.texi: Document recording of loop exits.
13606         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
13607         (update_single_exits_after_duplication,
13608         update_single_exit_for_duplicated_loop,
13609         update_single_exit_for_duplicated_loops): Removed.
13610         (duplicate_loop_to_header_edge): Do not call
13611         update_single_exits_after_duplication and
13612         update_single_exit_for_duplicated_loops.
13613         (loop_version): Do not update single_exit information.
13614         (fix_loop_structure): Use record_loop_exits instead of
13615         mark_single_exit_loops.
13616         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
13617         the lists of loop exits.
13618         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
13619         split_edge, merge_blocks): Update the lists of loop exits.
13620         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
13621         loop_optimizer_init.
13622         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
13623         of mark_single_exit_loops.
13624         (loop_optimizer_finalize): Call release_recorded_exits.
13625         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
13626         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
13627         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
13628         update single exit information.
13629         * lambda-code.c (perfect_nestify): Ditto.
13630         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
13631         (mark_single_exit_loops): Removed.
13632         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
13633         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
13634         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
13635         functions.
13636         (get_loop_exit_edges, single_exit): Use recorded exit lists.
13637         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
13638         (verify_loop_structure): Verify consistency of the exit lists.
13639         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
13640         (set_single_exit): Removed.
13641         * cfgloop.h (struct loop_exit): New function.
13642         (struct loop): single_exit_ field replaced by exits field.
13643         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
13644         (struct loops): Added exits hash.
13645         (mark_single_exit_loops, set_single_exit): Declaration removed.
13646         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
13647
13648 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13649
13650         * doc/invoke.texi: Avoid use of @headitem.
13651
13652 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13653
13654         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
13655
13656 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13657
13658         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
13659         list of targets.
13660
13661 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
13662             Richard Sandiford  <richard@codesourcery.com>
13663
13664         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
13665         * config/m68k/m68k.opt: Resort options.
13666         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
13667
13668 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
13669             Richard Sandiford  <richard@codesourcery.com>
13670
13671         * doc/invoke.texi: Document the macros that are defined by
13672         m68k's -mtune and -mhard-float options.
13673         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
13674         (m68k_cpp_cpu_family): Likewise.
13675         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
13676         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
13677         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
13678         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
13679         (m68k_cpp_cpu_family): Likewise.
13680
13681 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13682
13683         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
13684         macros besides mc68000 as tuning macros.  Use a switch statement
13685         to set them and mcpu32.
13686
13687 2007-01-12  Julian Brown  <julian@codesourcery.com>
13688
13689         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
13690         (TARGET_68040_ONLY): Rename to...
13691         (TARGET_68040): ...this.
13692         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
13693         * config/m68k/m68k.md: Likewise.
13694
13695 2007-01-12  Julian Brown  <julian@codesourcery.com>
13696             Nathan Sidwell  <nathan@codesourcery.com>
13697             Richard Sandiford  <richard@codesourcery.com>
13698
13699         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
13700         the -mcpu= argument associated with the --with-cpu setting.
13701         Define M68K_DEFAULT_TUNE to the default -mtune= option,
13702         if different from the one implied by the -mcpu setting.
13703         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
13704         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
13705         * doc/invoke.texi: Mention ColdFire in the introduction to the
13706         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
13707         -mno-div and -mhard-float options.  Make -m68881 a synonym for
13708         -mhard-float.  Document the previously-undocumented -m5206e,
13709         -m528x, -m5307 and -m5407 options.  Tweak the existing option
13710         documentation for consistency.
13711         * doc/install.texi: Mention new --with-cpu arguments.
13712         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
13713         default CPU if neither -mcpu nor -march are specified.
13714         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
13715         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
13716         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
13717         using m68k_tune to decide between families that implement the
13718         same ISA.  Use m68k_tune to set __mcfv4e__.
13719         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
13720         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
13721         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
13722         (FL_ISA_C, FL_ISA_MMU): New macros.
13723         (MASK_COLDFIRE): Delete.
13724         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
13725         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
13726         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
13727         (TARGET_HARD_FLOAT): Do not define here.
13728         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
13729         (TUNE_68000): New macro.
13730         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
13731         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
13732         (TUNE_CFV2): Redefine in terms of m68k_tune.
13733         (uarch_type, target_device, fpu_type): New enums.
13734         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
13735         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
13736         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
13737         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
13738         (FL_FOR_isa_c): New macros.
13739         (m68k_isa): New enum.
13740         (m68k_target_selection): New structure.
13741         (all_devices, all_isas, all_microarchs): New tables.
13742         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
13743         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
13744         (MASK_ALL_CPU_BITS): Delete.
13745         (m68k_find_selection): New function.
13746         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
13747         Map the legacy target options to a combination of the new ones.
13748         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
13749         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
13750         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
13751         settings.
13752         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
13753         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
13754         properties.
13755         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
13756         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
13757         * config/m68k/m68k-devices.def: New file.
13758
13759 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13760             Nathan Sidwell  <nathan@codesourcery.com>
13761
13762         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
13763         (SUBTARGET_EXTRA_SPECS): New macros.
13764         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
13765         use %(asm_cpu_spec) instead.
13766         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
13767         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
13768         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
13769         (EXTRA_SPECS): Rename to...
13770         (SUBTARGET_EXTRA_SPECS): ...this.
13771
13772 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
13773             Richard Sandiford  <richard@codesourcery.com>
13774             Julian Brown  <julian@codesourcery.com>
13775
13776         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13777         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
13778         to the configuration's default CPU.
13779         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
13780         Remove default masks.
13781         (m680[012]0-*-*): Set the default with_cpu to the first part of
13782         the target name.
13783         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
13784         (m68k*-*-linux): Extend the --with-cpu handling to...
13785         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
13786         and m68010.  Don't set target_cpu_default2.
13787         * doc/install.texi: Document --with-cpu for m68k.
13788         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
13789         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
13790         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
13791         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
13792         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
13793         (ASM_SPEC): Remove use of %(asm_cpu_default).
13794         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
13795         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
13796         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
13797         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
13798         __HAVE_FPU__ if TARGET_HARD_FLOAT.
13799         (TARGET_DEFAULT): Delete.
13800         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
13801         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
13802         (CPP_CPU_SPEC): Delete.
13803         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
13804         the appropriate string.
13805         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
13806         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
13807         (ASM_SPEC): Don't use %(asm_default_spec).
13808         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
13809         TARGET_DEFAULT and add MASK_68881.
13810         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
13811
13812 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13813
13814         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
13815         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
13816         MASK_68010 alongside MASK_68020.
13817         * doc/invoke.texi: Document -m68010.
13818         * config/m68k/m68k.opt (m68010): New.
13819         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
13820         if TUNE_68010.
13821         (TUNE_68010): New macro.
13822         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
13823         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
13824         (M68K_CPU_m68332): Add MASK_68010.
13825         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
13826         fallback definition.
13827         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
13828         defines.
13829         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
13830         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
13831         to all entries that use MASK_68020.
13832         (output_move_simode_const, output_move_himode, output_move_qimode)
13833         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
13834         instead of TARGET_68020 to select clr behavior.  Remove comment
13835         about there being no TARGET_68010.
13836         * config/m68k/m68k.md: Likewise throughout.
13837
13838 2007-01-12  Julian Brown  <julian@codesourcery.com>
13839
13840         * config/m68k/m68k.h (TARGET_ISAB): New macro.
13841         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
13842         * config/m68k/m68k.md: Likewise.
13843
13844 2007-01-12  Julian Brown  <julian@codesourcery.com>
13845
13846         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
13847         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
13848
13849 2007-01-12  Julian Brown  <julian@codesourcery.com>
13850
13851         * config/m68k/m68k.h (TUNE_68040_60): New macro.
13852         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
13853         * config/m68k/m68k.md: Likewise.
13854
13855 2007-01-12  Julian Brown  <julian@codesourcery.com>
13856             Richard Sandiford  <richard@codesourcery.com>
13857
13858         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
13859         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
13860         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
13861         TARGET_CPU32.
13862         (TARGET_CPU32): Rename to...
13863         (TUNE_CPU32): ...this.
13864         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
13865         (TUNE_CFV2): New macros.
13866         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
13867         remove conditions that are implied by TARGET_68020.
13868         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
13869         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
13870         (m68k_output_function_epilogue): Likewise.
13871         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
13872         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
13873         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
13874         non-68000 timings.  Refactor multiplication and division costs.
13875         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
13876         TUNE_CPU32 instead of TARGET_CPU32.
13877         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
13878         and TUNE_68060 instead of TARGET_68060.
13879         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
13880         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
13881         TARGET_CPU32.
13882         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
13883         && !TARGET_COLDFIRE" to choose between moveq and clr.
13884         Likewise in the unnamed movsf pattern.
13885         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
13886         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
13887         ashiftrt pattern.
13888
13889 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
13890
13891         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
13892         of tabbing before backslashes.
13893
13894 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
13895
13896         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
13897         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
13898         (ASM_OUTPUT_INTERNAL_LABEL): Define.
13899
13900 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
13901
13902         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
13903         find_interesting_uses_cond.
13904         (find_interesting_uses_cond): Use extract_cond_operands.
13905         (rewrite_use_compare): Use extract_cond_operands and
13906         force_gimple_operand_bsi.  Do not call update_stmt.
13907         (determine_use_iv_cost_condition): Use extract_cond_operands.
13908         Return cheaper of using original bound and changing the exit bound.
13909
13910 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
13911
13912         PR tree-optimization/29516
13913         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
13914         most_expensive_mult_to_index, addr_to_parts,
13915         create_mem_ref, maybe_fold_tmr): Make the type of
13916         fields of TARGET_MEM_REF sizetype.
13917         (move_fixed_address_to_symbol, move_pointer_to_base):
13918         New functions.
13919         * tree.def (TARGET_MEM_REF): Add comment on types of
13920         the operands.
13921
13922 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
13923
13924         * c-common.c (vector_types_convertible_p): Treat opaque types as
13925         always convertible if they have the same size, but not otherwise.
13926
13927 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
13928
13929         * ifcvt.c (struct noce_if_info): Add comments to the fields.
13930         Remove the b_unconditional field.
13931         (noce_try_sign_mask): Do not look at b_unconditional.
13932         (noce_process_if_block): Do not use merge_if_blocks.  Update
13933         the CFG here.  Do not set b_unconditional.
13934         (cond_move_process_if_block): Likewise.
13935         (find_cond_trap): Likewise.
13936         (check_cond_move_block): Require simple jump insns at the end
13937         of the basic block.
13938
13939 2007-01-11  Jan Hubicka  <jh@suse.cz>
13940
13941         PR tree-optimization/1046
13942         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
13943         when alias info is not ready.
13944         (pass_tail_recursion): Do not require aliasing.
13945         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
13946         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
13947         * tree-ssa-copy.c (pass_copy_prop): Likewise.
13948         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
13949         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
13950         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
13951         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
13952         before inlining.
13953         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
13954         When aliasing is not build, mark statement as volatile.
13955
13956 2007-01-11  Tom Tromey  <tromey@redhat.com>
13957
13958         PR preprocessor/15185, PR preprocessor/20989:
13959         * doc/cppopts.texi <-MT>: Update description of algorithm for
13960         computing default target.
13961         <-M, -MD>: Reword "basename" text.
13962
13963 2007-01-11  Roger Sayle  <roger@eyesopen.com>
13964
13965         * builtins.c (expand_builtin_pow, expand_builtin_powi,
13966         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
13967         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
13968         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
13969         fold_builtin_bswap, real_constp, fold_builtin_pow,
13970         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
13971         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
13972         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13973         * convert.c (convert_to_pointer): Likewise.
13974         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
13975         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
13976         const_binop, fold_convert_const_int_from_int,
13977         fold_convert_const_int_from_real,
13978         fold_convert_const_real_from_real, sign_bit_p,
13979         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
13980         fold_sign_changed_comparison, fold_unary, fold_comparison,
13981         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
13982         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
13983         * print-tree.c (print_node_brief, print_node): Likewise.
13984         * stor-layout.c (place_field, layout_type): Likewise.
13985         * tree-chrec.c (keep_cast): Likewise.
13986         * tree.c (build_vector, build_real, build_real_from_int_cst,
13987         build_complex): Likewise.
13988
13989 2007-01-11  Roger Sayle  <roger@eyesopen.com>
13990
13991         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
13992         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
13993
13994 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
13995
13996         * configure.ac (strict1_warn): Rename to strict_warn.
13997         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
13998         cc_set_by_configure, quoted_cc_set_by_configure,
13999         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
14000         all_boot_languages, all_stagestuff): Remove.
14001         (target_list): Remove bootstrap targets.
14002         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
14003         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
14004         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
14005         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
14006         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
14007         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
14008         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
14009         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
14010         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
14011         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
14012         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
14013         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
14014         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
14015         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
14016         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
14017         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
14018         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
14019         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
14020         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
14021         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
14022         (mostlyclean): Adjust.
14023         (clean, distclean): Don't mention bootstrap stuff.
14024         * configure: Regenerate.
14025         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
14026         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
14027         treelang/config-lang.in (stagestuff): Remove.
14028         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
14029         stageprofile, stagefeedback, stagestuff): Remove mention.
14030
14031 2007-01-11  Nick Clifton  <nickc@redhat.com>
14032
14033         * config/mcore/predicates.md (mcore_general_movesrc_operand):
14034         Accept CONSTs.
14035         (mcore_general_movdst_operand): Do not accept CONST_INTs.
14036         (mcore_arith_K_S_operand): Run the test for the S constraint not
14037         the test for the M constraint.
14038         (mcore_addsub_operand): Do not accept integer values that are
14039         larger than 32 bits.
14040         * config/mcore/mcore.md: Remove unused constraints from split.
14041         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
14042         (addsi3): Likewise.
14043         (allocate_stack): Likewise.
14044         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
14045         operands to 32 bits.
14046         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
14047         INTVAL.
14048         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
14049         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
14050         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
14051         mcore_output_bclri, mcore_output_andn, output_inline_const,
14052         mcore_output_move, mcore_output_movedouble): Likewise.
14053         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
14054         (output_inline_const): Likewise.
14055         (output_inline_const): Fix format strings used in sprintf
14056         statements.
14057         * config/mcore/mcore-protos.h: Update prototypes for changed
14058         functions in mcore.c.
14059         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
14060         HOST_WIDE_INT and not int.
14061         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
14062         CONST_OK_FOR_N): Likewise.
14063         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
14064         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
14065         an INTVAL.
14066
14067 2007-01-10  Jan Hubicka  <jh@suse.cz>
14068
14069         * tree-vrp.c (remove_range_assertions): Release defs.
14070         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
14071         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
14072
14073 2007-01-10  Paul Brook  <paul@codesourcery.com>
14074
14075         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
14076         * config/arm/arm.md (mulsi3subsi): New insn.
14077
14078 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
14079
14080         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
14081         (tree_transform_and_unroll_loop): New.
14082         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
14083         Declare.
14084
14085 2007-01-10  Robert Kennedy <jimbob@google.com>
14086
14087         * fold-const.c (fold_comparison): Fold comparisons like (x *
14088         1000 < 0) to (x < 0).
14089
14090 2007-01-10  Ian Lance Taylor  <iant@google.com>
14091
14092         * tree-pretty-print.c (dump_generic_node): Print parentheses when
14093         operands have the same priority.
14094
14095 2007-01-10  Tom Tromey  <tromey@redhat.com>
14096
14097         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
14098         (fold_binary): Likewise.
14099         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
14100         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
14101         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
14102         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
14103         * langhooks.h (struct lang_hooks): Removed field
14104         'can_use_bit_fields_p'.
14105
14106 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
14107
14108         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
14109
14110 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
14111
14112         * function.c (get_last_funcdef_no): New function.
14113         * function.h (get_last_funcdef_no): Declare.
14114         * tree-inline.c (initialize_cfun): Add initialization.
14115         (tree_function_versioning): Cleanup.
14116
14117 2007-01-10  Jan Hubicka  <jh@suse.cz>
14118
14119         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
14120         PHIs.
14121
14122 2007-01-10  Sa Liu  <saliu@de.ibm.com>
14123             Ben Elliston  <bje@au.ibm.com>
14124
14125         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
14126         for SAVE_NONLOCAL and Pmode for any other save level.
14127         * spu-protos.h (spu_restore_stack_block): Declare.
14128         * spu.md (save_stack_block): Remove.
14129         (restore_stack_block): Call spu_restore_stack_block.
14130         * spu.c (spu_restore_stack_block): New function.
14131         (spu_expand_epilogue): Remove old comment.
14132
14133 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
14134
14135         PR tree-optimization/30322
14136         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
14137         (cand_value_at): Return the value as aff_tree.
14138         (may_eliminate_iv): Convert the bound from aff_tree to tree.
14139         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
14140         aff_combination_mult): New functions.
14141         (aff_combination_add): Use aff_combination_add_cst.
14142         (aff_combination_convert): Allow conversions to a wider type.
14143         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
14144         * tree-affine.h (aff_combination_mult): Declare.
14145
14146 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
14147
14148         * doc/tm.texi: Update documentation to reflect reality of exec
14149         and start file search behaviours. Update copyright year.
14150         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
14151         header file directories.
14152
14153 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
14154
14155         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
14156         (*cosxf2): Rename to cosxf2_i387.
14157         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
14158         using X87MODEF12 mode macro. Rename patterns to
14159         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
14160         for SSE math.
14161         (*cosdf2, *cossf2): Ditto.
14162         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
14163         to match extended input operands.
14164         (sincos<mode>3): New expander.
14165         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
14166         insn patterns and corresponding splitters.
14167
14168 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
14169
14170         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
14171         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
14172
14173 2007-01-09  Nicolas Pitre  <nico@cam.org>
14174
14175         PR target/30173
14176         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
14177
14178 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
14179
14180         * target.h (struct gcc_target): New field library_rtti_comdat.
14181         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
14182         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
14183         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
14184         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
14185
14186 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
14187
14188         * doc/invoke.texi (Optimize Options): Correct description of -O0.
14189
14190 2007-01-08  Richard Guenther  <rguenther@suse.de>
14191
14192         * tree.h (force_fit_type_double): Export.
14193         (force_fit_type): Remove.
14194         * fold-const.c (force_fit_type_double): New function.
14195         (force_fit_type): Remove.
14196         (int_const_binop): Use it.
14197         (fold_convert_const_int_from_int): Likewise.
14198         (fold_convert_const_int_from_real): Likewise.
14199         (fold_div_compare): Likewise.
14200         (fold_sign_changed_comparison): Likewise.
14201         (fold_unary): Likewise.
14202         (fold_negate_const): Likewise.
14203         (fold_abs_const): Likewise.
14204         (fold_not_const): Likewise.
14205         * c-common.c (shorten_compare): Use force_fit_type_double.
14206         * convert.c (convert_to_pointer): Likewise.
14207
14208 2007-01-08  Richard Guenther  <rguenther@suse.de>
14209
14210         * tree.h (build_int_cst_wide_type): Export.
14211         * tree.c (build_int_cst_wide_type): New function.
14212         (build_int_cst_wide): Fix comment.
14213         * builtins.c (fold_builtin_object_size): Use build_int_cst
14214         to build -1 or 0 of the correct type.  Use fit_double_type
14215         to check for overflow.
14216         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
14217         to build the mask.
14218         (decode_field_reference): Likewise.
14219         (all_ones_mask_p): Likewise.
14220         (native_interpret_int): Use build_int_cst_wide_type.
14221         (fold_binary): Use build_int_cst_type to build an all-ones
14222         value.
14223         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
14224
14225 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
14226
14227         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
14228
14229 2007-01-09  Ben Elliston  <bje@au.ibm.com>
14230
14231         * genautomata.c (STATS_OPTION): New option.
14232         (stats_flag): New flag.
14233         (gen_automata_option): Handle it.
14234         (initiate_automaton_gen): Ditto.
14235         (write_automata): Output statistics only if stats_flag is
14236         set. Likewise, output time statistics only if time_flag is set.
14237         * doc/md.texi (Processor pipeline description): Document new flag.
14238
14239 2007-01-08  Richard Guenther  <rguenther@suse.de>
14240
14241         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
14242         * tree.c (build_int_cst_type): Likewise.
14243         (size_in_bytes): Don't call force_fit_type on the result.
14244         (int_fits_type_p): Use fit_double_type.
14245         * fold-const.c (fit_double_type): New function.
14246         (force_fit_type): Use it.
14247         * tree.h (fit_double_type): Export.
14248
14249 2007-01-08  Jan Hubicka  <jh@suse.cz>
14250
14251         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
14252         * ipa.c (function_and_variable_visibility): Fix return type.
14253
14254 2007-01-08  Richard Guenther  <rguenther@suse.de>
14255
14256         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
14257         of offset to build the index.
14258         * tree-pretty-print.c (dump_generic_node): Don't build negated
14259         const just for printing.
14260         * c-pretty-print.c (pp_c_integer_constant): Likewise.
14261         * builtins.c (fold_builtin_int_roundingfn): Check if result
14262         fits the type by using force_fit_type and comparing the result.
14263         * predict.c (predict_loops): Use compare_tree_int for comparison.
14264         * tree.c (build_int_cst): Fall back to integer_type_node for
14265         NULL_TREE type.
14266         (build_int_cst_wide): Assert type is non-null.
14267
14268 2007-01-08  Roberto Costa  <roberto.costa@st.com>
14269
14270         * tree-vrp.c (extract_range_from_cond_expr): New.
14271         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
14272         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
14273         as expressions.
14274         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
14275         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
14276         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
14277         used as expressions.
14278         * tree-object-size.c (cond_expr_object_size): New.
14279         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
14280
14281 2007-01-08  Jan Hubicka  <jh@suse.cz>
14282
14283         * tree-ssa-forwprop.c (forward_propagate_into_cond,
14284         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
14285         statement.
14286
14287 2007-01-08  Richard Guenther  <rguenther@suse.de>
14288
14289         PR tree-optimization/23603
14290         * tree-vrp.c (set_value_range_to_truthvalue): New function.
14291         (extract_range_from_binary): Fall back to truthvalue instead of
14292         varying for TRUTH_*_EXPR.
14293         (extract_range_from_comparison): Fall back to truthvalue instead of
14294         varying.
14295         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
14296         if all visited PHI values were constant.
14297
14298 2007-01-08  Jan Hubicka  <jh@suse.cz>
14299
14300         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
14301         (cgraph_analyze_function): break out from ...
14302         (cgraph_finalize_compilation_unit): ... here.
14303         (cgraph_expand_function): Remove forgoten commented out line.
14304         (cgraph_optimize): Analyze functions.
14305
14306 2007-01-08  Jan Hubicka  <jh@suse.cz>
14307
14308         * tree-pas.h (TODO_remove_function): New flag.
14309         (TODO_update*): Renumber.
14310         (pass_ipa_increase_alignment,
14311         pass_ipa_function_and_variable_visibility): New passes.
14312         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
14313         (cgraph_function_and_variable_visibility): Move to ipa.c
14314         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
14315         cgraph_increase_alignment.
14316         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
14317         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
14318         calling tree-inline.
14319         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
14320         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
14321         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
14322         (gate_increase_alignment): New function.
14323         (pass_ipa_increase_alignment): New pass.
14324         * ipa.c: Inline tree-pass.h and timevar.h
14325         (function_and_variable_visibility): Move here from cgraphunit.c
14326         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
14327         * passes.c (init_optimization_passes): Add the two new passes.
14328         (execute_todo): Handle cgraph_remove_functions.
14329
14330 2007-01-08  Nick Clifton  <nickc@redhat.com>
14331
14332         * config/frv/predicates.md (reg_or_0_operand): Accept
14333         CONST_DOUBLEs.
14334
14335 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
14336
14337         * config/bfin/rtems.h, config/bfin/t-rtems: New.
14338         * config.gcc: Add bfin*-rtems*.
14339
14340 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
14341
14342         * c.opt: Add -flax-vector-conversions.
14343         * c-typeck.c (convert_for_assignment): Pass flag to
14344         vector_types_convertible_p to allow emission of note.
14345         (digest_init): Likewise.
14346         * c-opts.c: Handle -flax-vector-conversions.
14347         * c-common.c (flag_lax_vector_conversions): New.
14348         (vector_types_convertible_p): Unless -flax-vector conversions
14349         has been passed, disallow conversions between vectors with
14350         differing numbers of subparts and/or element types.  If such
14351         a conversion is disallowed, possibly emit a note on the first
14352         occasion only to inform the user of -flax-vector-conversions.
14353         The new last argument specifies this.
14354         * c-common.h (flag_lax_vector_conversions): New.
14355         (vector_types_convertible_p): Add extra argument.
14356         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
14357         char_type_node for V*QI type vectors.
14358         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
14359         Update to satisfy new typechecking rules.
14360         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
14361         C and C++ variants.
14362         * doc/invoke.texi (C Dialect Options): Document
14363         -flax-vector-conversions.
14364
14365 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
14366
14367         PR tree-optimization/29877
14368         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
14369         a register variable on the RHS to not be replaceable.
14370
14371 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
14372         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
14373         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
14374         const_simm15, const_pow2, const_npow2): Added.
14375         * config/score/misc.md (insv, extv, extzv, movmemsi,
14376         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
14377         * config/score/score.c (score_address_cost, score_select_cc_mode):
14378         Added.
14379         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
14380         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
14381         Update score_print_operand.
14382         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
14383         Adjust register allocate order and update some macro define.
14384         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
14385         mdx_block_move_straight, mdx_block_move_loop_head,
14386         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
14387         mdx_block_move): Added.
14388         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
14389         mdp_limm): Updated and fix some bug and typo.
14390         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
14391         (movsf, movdf, doloop_end): Added.
14392
14393 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
14394
14395         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
14396         config/arm/thumb2.md: Fix comment typos.
14397         * doc/extend.texi: Fix a typo.
14398
14399 2007-01-07  Eric Christopher  <echristo@apple.com>
14400
14401         * configure.ac: Check for __stack_chk_fail for darwin.
14402         * configure: Regenerate.
14403
14404 2007-01-07  Richard Guenther  <rguenther@suse.de>
14405
14406         * tree-vrp.c (extract_range_from_assert): CSE calls to
14407         compare_values where possible.
14408         (extract_range_from_unary_expr): Likewise.
14409
14410 2007-01-07  Anatoly Sokolov <aesok@post.ru>
14411
14412         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
14413         * config/avr/avr.c (call_insn_operand): Delete function.
14414         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
14415         instead of register number. Use predicates.
14416         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
14417         call_insn_operand): Add.
14418
14419 2007-01-06  Jan Hubicka  <jh@suse.cz>
14420
14421         * tree-pass.h (pass_build_cgraph_edges): Declare.
14422         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
14423         (visited_nodes): Remove.
14424         (cgraph_create_edges): Move to cgraphbuild.c; rename to
14425         build_cgrpah_edges; make visited_nodes local.
14426         (cgraph_process_new_functions): DO not call initialize_inline_failed.
14427         (record_references_in_initializer): Move to cgraphbuild.c
14428         (initialize_inline_failed, rebuild_cgraph_edges,
14429         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
14430         (verify_cgraph_node): Make visited_nodes local.
14431         (cgraph_analyze_function): Do not call cgraph_create_edges and
14432         initialize_inline_failed.
14433         (cgraph_expand_function): Do not call cgraph_lower_function;
14434         assert that function is already lowered.
14435         * Makefile.in (cgraphbuild.o): New.
14436         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
14437         at the end of lowering passes.
14438
14439 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
14440
14441         * ifcvt.c (cond_move_convert_if_block): New function, code
14442         factored out from...
14443         (cond_move_process_if_block): ...here.  Call the new function
14444         on the THEN and ELSE blocks.
14445         (merge_if_block): Do not copy global_live_at_end, merge_blocks
14446         already takes care of this.
14447
14448 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14449
14450         PR c/19978
14451         * tree.h (TREE_OVERFLOW_P): New.
14452         * c-typeck.c (parser_build_unary_op): Warn only if result
14453         overflowed and operands did not.
14454         (parser_build_binary_op): Likewise.
14455         (convert_for_assignment): Remove redundant overflow_warning.
14456         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
14457
14458 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14459
14460         * c-typeck.c (store_init_value): Split over two lines to follow
14461         the GNU coding style.
14462
14463 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
14464
14465         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
14466         __GXX_EXPERIMENTAL_CXX0X__.
14467         * doc/cpp.texi: Same.
14468
14469 2007-01-05  Richard Guenther  <rguenther@suse.de>
14470
14471         PR middle-end/27826
14472         * tree.c (get_narrower): Do not construct COMPONENT_REFs
14473         with mismatched types.  Instead explicitly build a
14474         conversion NOP_EXPR.
14475
14476 2007-01-05  Ian Lance Taylor  <iant@google.com>
14477
14478         * c-common.c (decl_with_nonnull_addr_p): New function.
14479         (c_common_truthvalue_conversion): Call it.
14480         * c-typeck.c (build_binary_op): Likewise.
14481         * c-common.h (decl_with_nonnull_addr_p): Declare.
14482
14483 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
14484
14485         PR c/30360
14486         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
14487         denom against 0.0.
14488
14489 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
14490
14491         * doc/install.texi (Final install): Document the fact that
14492         the GNAT runtime should not be stripped.
14493
14494 2007-01-04  Jan Hubicka  <jh@suse.cz>
14495
14496         * tree-inline.c (fold_marked_statements): Update operand caches
14497         and EH after folding
14498
14499 2007-01-04  Ian Lance Taylor  <iant@google.com>
14500
14501         * c-common.c (check_function_nonnull): Whitespace fix.
14502
14503 2007-01-04  Jan Hubicka  <jh@suse.cz>
14504
14505         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
14506         comitted older version of patch.
14507         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
14508         function, celanup cfg and collect garbage.
14509
14510 2007-01-04  Mike Stump  <mrs@apple.com>
14511
14512         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
14513         (clean): Likewise.
14514
14515 2007-01-04  Eric Christopher  <echristo@apple.com>
14516
14517         * libgcc2.c (__bswapsi2): Use SItype.
14518         (__bswapdi2): Use DItype.
14519         * libgcc2.h: Update for above.
14520
14521 2007-01-04  Paul Brook  <paul@codesourcery.com>
14522
14523         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
14524         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
14525         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
14526         umulsidi3, umulsidi3adddi, smulsi3_highpart,
14527         umulsi3_highpart): Make conditional on !arm_arch6.
14528         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
14529         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
14530         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
14531         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
14532         umulsi3_highpart_v6): New insns.
14533
14534 2007-01-04  Roger Sayle  <roger@eyesopen.com>
14535
14536         * fold-const.c (fold_convert): When casting an expression to void,
14537         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
14538         have a type.  Instead of attempting to build a NOP_EXPR, return
14539         these "special" trees directly.
14540
14541 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
14542
14543         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
14544         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
14545         rs6000_cost->fp not 0 as adjustment for outer NEG.
14546
14547 2007-01-04  Jan Hubicka  <jh@suse.cz>
14548
14549         * cgraph.c (cgraph_release_function_body): New function.
14550         (cgraph_remove_node): Use it.
14551         * cgraph.h (cgraph_release_function_body): Declare.
14552         * cgraphunit.c (cgraph_expand_function): Use it.
14553         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
14554         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
14555         is initialized and while compilation of other function is running.
14556         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
14557         statement CFG annotations from here to ...
14558         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
14559
14560 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
14561
14562         * cfgloop.h (enum li_flags): Make the constants powers of two.
14563
14564 2007-01-04  Jan Hubicka  <jh@suse.cz>
14565
14566         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
14567         set.
14568         (fold_marked_statements): New function.
14569         (optimize_inline_calls, tree_function_versioning): Fold new statements.
14570         * tree-inline.h (copy_body_data): Add statements_to_fold.
14571
14572 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
14573
14574         * config.gcc: Mention libgcc/config.host.
14575         * Makefile.in: Update comments mentioning libgcc.
14576         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
14577         (all.cross, start.encap, rest.encap, rest.cross): Update
14578         dependencies for libgcc move.
14579         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
14580         (clean-target, clean-target-libgcc): Delete.
14581         (srcdirify, GCC_EXTRA_PARTS): New macros.
14582         (libgcc-support, libgcc.mvars): New rules.
14583         (distclean): Remove mention of mklibgcc.
14584         (install): Don't reference INSTALL_LIBGCC.
14585         (install-common): Don't reference EXTRA_PARTS.
14586         (install-libgcc, install-multilib): Delete rules.
14587         * mklibgcc.in: Delete file.
14588         * doc/configfiles.texi: Don't mention mklibgcc.
14589
14590         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
14591         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
14592         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
14593         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
14594         (mklibgcc, ldblspecs): Likewise.
14595
14596         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
14597         (posixpre.def): Use $(T).
14598         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
14599         (SHLIB_SRC, SHLIB_INSTALL): Delete.
14600         (SHLIB_LINK): Make dummy.
14601         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
14602
14603         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
14604
14605         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
14606         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
14607         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
14608         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
14609
14610         * configure.ac (all_outputs): Remove mklibgcc.
14611         * configure: Regenerated.
14612
14613 2007-01-03  Josh Conner  <jconner@apple.com>
14614
14615         PR middle-end/29683
14616         * calls.c (compute_argument_addresses): Set stack and stack_slot
14617         for partial args, too.
14618         (store_one_arg): Use locate.size.constant for the size when
14619         generating a save_area.
14620
14621 2007-01-03  Robert Kennedy <jimbob@google.com>
14622
14623         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
14624         whose definitions are deleted due to basic block merging.
14625
14626 2007-01-03  Paul Brook  <paul@codesourcery.com>
14627
14628         PR target/16634
14629         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
14630         functions.
14631         (use_return_insn): Return 0 for Thumb interrupt functions.
14632         (print_multi_reg): Add rfe argument for IRQ returns.
14633         (arm_output_epilogue): Pop interrupt return address directly into PC.
14634         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
14635
14636 2007-01-03  Paul Brook  <paul@codesourcery.com>
14637
14638         Merge from sourcerygxx-4_1.
14639         * config/arm/thumb2.md: New file.
14640         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
14641         Thumb-2.
14642         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
14643         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
14644         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
14645         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
14646         tables.
14647         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
14648         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
14649         comptibility.
14650         * config/arm/ieee754-sf.S: Ditto.
14651         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
14652         (thumb1_base_register_rtx_p): ... to this.
14653         (thumb_index_register_rtx_p): Rename...
14654         (thumb1_index_register_rtx_p): ... to this.
14655         (thumb_output_function_prologue): Rename...
14656         (thumb1_output_function_prologue): ... to this.
14657         (thumb_legitimate_address_p): Rename...
14658         (thumb1_legitimate_address_p): ... to this.
14659         (thumb_rtx_costs): Rename...
14660         (thumb1_rtx_costs): ... to this.
14661         (thumb_compute_save_reg_mask): Rename...
14662         (thumb1_compute_save_reg_mask): ... to this.
14663         (thumb_final_prescan_insn): Rename...
14664         (thumb1_final_prescan_insn): ... to this.
14665         (thumb_expand_epilogue): Rename...
14666         (thumb1_expand_epilogue): ... to this.
14667         (arm_unwind_emit_stm): Rename...
14668         (arm_unwind_emit_sequence): ... to this.
14669         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
14670         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
14671         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
14672         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
14673         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
14674         thumb2_output_casesi): New functions.
14675         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
14676         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
14677         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
14678         THUMB2_WORK_REGS): Define.
14679         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
14680         arm_condexec_mask, arm_condexec_masklen)): New variables.
14681         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
14682         (arm_override_options): Check new CPU capabilities.
14683         Set new architecture flag variables.
14684         (arm_isr_value): Handle v7m interrupt functions.
14685         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
14686         Thumb-2.
14687         (const_ok_for_arm): Handle Thumb-2 constants.
14688         (arm_gen_constant): Ditto.  Use movw when available.
14689         (arm_function_ok_for_sibcall): Return false for v7m interrupt
14690         functions.
14691         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
14692         (thumb_find_work_register, arm_load_pic_register,
14693         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
14694         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
14695         print_multi_reg, output_mov_long_double_fpa_from_arm,
14696         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
14697         output_mov_double_fpa_from_arm, output_move_double,
14698         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
14699         output_return_instruction, arm_output_function_prologue,
14700         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
14701         arm_output_mi_thunk, thumb_set_return_address): Ditto.
14702         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
14703         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
14704         (arithmetic_instr, shift_op): Use arm_shift_nmem.
14705         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
14706         '!' and 'L'.
14707         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
14708         (thumb_expand_prologue): Use thumb_set_frame_pointer.
14709         (arm_file_start): Output directive for unified syntax.
14710         (arm_unwind_emit_set): Handle stack alignment instruction.
14711         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
14712         Add v6t2, v7, v7a, v7r and v7m.
14713         (RETLDM): Add Thumb-2 code.
14714         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
14715         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
14716         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
14717         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
14718         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
14719         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
14720         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
14721         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
14722         ADJUST_INSN_LENGTH): Define.
14723         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
14724         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
14725         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
14726         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
14727         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
14728         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
14729         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
14730         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
14731         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
14732         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
14733         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
14734         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
14735         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
14736         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
14737         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
14738         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
14739         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
14740         cortex-m3.
14741         * config/arm/arm-tune.md: Regenerate.
14742         * config/arm/arm-protos.h: Update prototypes.
14743         * config/arm/vfp.md: Enable patterns for Thumb-2.
14744         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
14745         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
14746         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
14747         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
14748         * config/arm/libunwind.S: Add Thumb-2 code.
14749         * config/arm/constraints.md: Update include Thumb-2.
14750         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
14751         * config/arm/ieee754-df.S: Ditto.
14752         * config/arm/bpabi.S: Ditto.
14753         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
14754         * config/arm/predicates.md (low_register_operand,
14755         low_reg_or_int_operand, thumb_16bit_operator): New.
14756         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
14757         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
14758         * config/arm/t-arm-elf: Add armv7 multilib.
14759         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
14760         Include thumb2.md.
14761         (UNSPEC_STACK_ALIGN, ce_count): New.
14762         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
14763         arm_zero_extendsidi2, arm_zero_extendqidi2): New
14764         insns/expanders.
14765         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
14766         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
14767         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
14768         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
14769         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
14770         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
14771         insns.
14772         * doc/extend.texi: Document ARMv7-M interrupt functions.
14773         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
14774
14775 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
14776
14777         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
14778         (struct _Unwind_Context): Rename args_size to flags, remove
14779         signal_frame field, add a new args_size field and version field.
14780         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
14781         _Unwind_IsExtendedContext): New inline functions.
14782         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
14783         Assume by_value array is only present if _Unwind_IsExtendedContext.
14784         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
14785         _Unwind_IsSignalFrame.
14786         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
14787         (uw_update_context_1): Use _Unwind_SetSignalFrame.
14788         (uw_init_context_1): Initialize context->flags to
14789         EXTENDED_CONTEXT_BIT.
14790         * config/rs6000/linux-unwind.h (frob_update_context): Use
14791         _Unwind_SetSignalFrame.
14792
14793 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14794
14795         PR middle-end/30353
14796         * gimplify.c (gimplify_modify_expr_complex_part): Move below
14797         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
14798         the value.
14799
14800 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
14801
14802         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
14803         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
14804         RET, AT_SP): Remove.
14805         * config/i386/i386.md (*sse_prologue_save_insn): Use return
14806         instead of RET.
14807
14808         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
14809         * cfgbuild.c (find_basic_blocks): Likewise.
14810         * cfgrtl.c (rtl_create_basic_block): Likewise.
14811         * function.c (temp_slots_at_level): Likewise.
14812         * reg-stack.c (stack_regs_mentioned): Likewise.
14813         * regclass.c (allocate_reg_info): Likewise.
14814         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
14815         set_bb_for_stmt, move_block_to_fn): Likewise.
14816         * tree-complex.c (tree_lower_complex): Likewise.
14817         * vec.h (VEC_safe_grow_cleared): New.
14818
14819         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
14820
14821 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
14822
14823         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
14824         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
14825         to loop_version.
14826         * cfgloopmanip.c (scale_loop_frequencies): Export.
14827         (loopify): Scale the frequencies by prescribed coefficients.
14828         (set_zero_probability): New function.
14829         (duplicate_loop_to_header_edge): Improve updating of frequencies.
14830         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
14831         and frequencies according to arguments.
14832         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
14833         correctly.
14834         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
14835         * modulo-sched.c (sms_schedule): Set probabilities for entering
14836         versioned loop correctly.
14837         * tree-vect-transform.c (vect_transform_loop): Ditto.
14838         * cfgloop.h (loopify, loop_version): Declaration changed.
14839         (scale_loop_frequencies): Declared.
14840
14841 2007-01-02  Jan Hubicka  <jh@suse.cz>
14842
14843         * cgraph.c: Include tree-flow.h
14844         (cgraph_add_new-function): Handle IPA_SSA mode; execute
14845         early_local_passes.
14846         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
14847         * tree-pass.h (pass_all_early_optimizations): Declare.
14848         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
14849         early_local_passes.
14850         (cgraph_analyze_function): Do early_local_passes.
14851         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
14852         Do not add referenced vars.
14853         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
14854         SSA form.
14855         (gate_all_early_local_passes): New gate.
14856         (pass_early_local_passes): Use new gate.
14857         (execute_early_local_optimizations): New functions.
14858         (gate_all_early_optimizations): New gate.
14859         (pass_all_early_optimizations): New pass.
14860         (execute_free_datastructures): Free SSA only when initialized.
14861         (gate_init_datastructures): Init only when optimizing.
14862         (tree_lowering_passes): Do early local passes when called late.
14863         * tree-profile.c (do_tree_profiling): Don't profile functions added
14864         late.
14865         (do_early_tree_profiling, pass_early_tree_profile): Kill.
14866         * tree-cfg.c (update_modified_stmts): Do not update when operands are
14867         not active.
14868         * passes.c (init_optimizations_passes): Reorder so we go into SSA
14869         during early_local_passes.
14870         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
14871
14872
14873 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
14874
14875         * Makefile.in: Update copyright year.
14876
14877 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
14878
14879         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
14880         in $(lang_checks) and check-consistency targets.
14881
14882 2007-01-02  Jan Hubicka  <jh@suse.cz>
14883
14884         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
14885         Do not add referenced vars.
14886         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
14887         are not active.
14888         * passes.c (init_optimization_passes): Put mudflap_2 after
14889         free_datastructures.
14890
14891 2007-01-02  Jan Hubicka  <jh@suse.cz>
14892
14893         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
14894         Set NOTHROW flag on call statements proved to be nothrow.
14895         Update statement of local calls so new pure/const functions are
14896         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
14897         goto receivers.
14898         (tree_rest_of_compilation): Register hooks and initialize bitmap
14899         early. Do not set after_inlining flag.
14900
14901 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
14902
14903         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
14904         HOST_BITS_PER_LONGLONG
14905
14906 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
14907
14908         PR c/19977
14909         * c-typeck.c (store_init_value): Don't emit pedantic overflow
14910         warning for non-static initializers.
14911
14912 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
14913
14914         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
14915         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
14916         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
14917         Always use set_unique_reg_note to add REG_EQUAL notes.
14918
14919 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
14920
14921         Revert:
14922         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
14923
14924         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
14925         * cfgbuild.c (find_basic_blocks): Likewise.
14926         * cfgrtl.c (rtl_create_basic_block): Likewise.
14927         * function.c (temp_slots_at_level): Likewise.
14928         * reg-stack.c (stack_regs_mentioned): Likewise.
14929         * regclass.c (allocate_reg_info): Likewise.
14930         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
14931         set_bb_for_stmt, move_block_to_fn): Likewise.
14932         * tree-complex.c (tree_lower_complex): Likewise.
14933         * vec.h (VEC_safe_grow_cleared): New.
14934
14935 2007-01-02  Ian Lance Taylor  <iant@google.com>
14936
14937         * c-common.c (c_common_truthvalue_conversion): When warning about
14938         using an assignment as a truth value, set TREE_NO_WARNING.
14939
14940 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14941
14942         PR middle-end/7651
14943         * c.opt (Wold-style-declaration): New.
14944         * doc/invoke.texi (C-only Warning Options): New.
14945         (Wold-style-declaration): Document it.
14946         (Wextra): Enabled by -Wextra.
14947         * c-opts.c (c_common_post_options): Enabled by -Wextra.
14948         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
14949         -Wold-style-declaration.
14950
14951 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
14952
14953         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
14954         * cfgbuild.c (find_basic_blocks): Likewise.
14955         * cfgrtl.c (rtl_create_basic_block): Likewise.
14956         * function.c (temp_slots_at_level): Likewise.
14957         * reg-stack.c (stack_regs_mentioned): Likewise.
14958         * regclass.c (allocate_reg_info): Likewise.
14959         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
14960         set_bb_for_stmt, move_block_to_fn): Likewise.
14961         * tree-complex.c (tree_lower_complex): Likewise.
14962         * vec.h (VEC_safe_grow_cleared): New.
14963
14964 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
14965
14966         * c-common.c (c_common_nodes_and_builtins): Since variants of
14967         void_type_node get built before it is given a name, we need to
14968         give those variants the name, too.
14969         (complete_array_type): We need to work with the canonical main
14970         type of the array, from which we will build the qualified version.
14971         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
14972         * print-tree.c (print_node): Display canonical type information
14973         for each type.
14974         * stor-layout.c (layout_type): When we don't know the
14975         alignment of a type for which we're building an array, we end up
14976         guessing wrong, so make the type require structural equality.
14977         * tree.c (make_node_stat): When we build a new type, it is its
14978         own canonical type.
14979         (build_type_attribute_qual_variant): When building an attribute
14980         variant, its canonical type is the non-attribute variant. However,
14981         if the attributes are target-dependent and they differ, we need to
14982         use structural equality checks for this type.
14983         (build_qualified_type): A qualified type is not equivalent to its
14984         unqualified variant; set the canonical type appropriately.
14985         (build_distinct_type_copy): When building a distinct type from
14986         another type, the new type is its own canonical type.
14987         (build_variant_type_copy): When building a new type variant, we
14988         assume that it is equivalent to the original type.
14989         (build_pointer_type_for_mode): When building a pointer type, also
14990         build a canonical type pointer.
14991         (build_reference_type_for_mode): When building a reference type,
14992         also build a canonical type reference.
14993         (build_index_type): When we can't hash an index type (e.g.,
14994         because its maximum value is negative), the index type requires
14995         structural equality tests.
14996         (build_array_type): Build the canonical form of an array type.
14997         (build_function_type): Function types require structural equality,
14998         because they contain default arguments, attributes, etc.
14999         (build_method_type_directly): Ditto for method types.
15000         (build_offset_type): Build the canonical offset type.
15001         (build_complex_type): Build the canonical vector type.
15002         (make_vector_type): Build the canonical vector type.
15003         * tree.h (TYPE_CANONICAL): New.
15004         (TYPE_STRUCTURAL_EQUALITY_P): New.
15005         (SET_TYPE_STRUCTURAL_EQUALITY): New.
15006         (struct tree_type): Added "canonical" field.
15007         * params.h (VERIFY_CANONICAL_TYPES): New.
15008         * doc/c-tree.texi (TYPE_CANONICAL): Document.
15009         (TYPE_STRUCTURAL_EQUALITY_P): Document.
15010         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
15011         * doc/invoke.texi (verify-canonical-types): Document --param
15012         parameter for verifying canonical types.
15013
15014 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15015
15016         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
15017         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
15018         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
15019         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
15020         tm_file.
15021         * config/rs6000/e500.h: New.
15022         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
15023         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
15024         Remove.
15025         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
15026         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
15027         TARGET_E500_DOUBLE): Remove.
15028         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
15029         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
15030         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
15031         * config/rs6000/rs6000.c (rs6000_override_options): Use
15032         CHECK_E500_OPTIONS.
15033
15034 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15035
15036         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
15037         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
15038         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
15039         rs6000_emit_cmove): Don't check TARGET_E500.
15040         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
15041         sordered): Don't check TARGET_E500.
15042
15043 2007-01-01  Eric Christopher  <echristo@apple.com>
15044
15045         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
15046         HARD_REGISTER_NUM_P.
15047
15048 2007-01-01  Roger Sayle  <roger@eyesopen.com>
15049
15050         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
15051         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
15052         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
15053         eq/ne Y".
15054
15055 2007-01-01  Mike Stump  <mrs@apple.com>
15056
15057         * configure.ac: Remove support for building with Apple's gcc-3.1.
15058
15059 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15060
15061         PR middle-end/30311
15062         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
15063         REG is a hard register.  Do not modify REG before calling
15064         subreg_nregs.
15065         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
15066         multiple of the size of YMODE for certain lowpart cases.
15067
15068 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15069
15070         PR middle-end/30253
15071         * gimplify (voidify_wrapper_expr): Update for
15072         GIMPLE_MODIFY_STMT.
15073
15074 2007-01-01  Andreas Schwab  <schwab@suse.de>
15075
15076         PR target/29166
15077         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
15078         save of BR0 in extra_spill_size instead of spill_size.
15079         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
15080         area.
15081         (ia64_expand_epilogue): Restore BR0 from its new location.
15082
15083 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15084
15085         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
15086         Use a temporary variable if the left hand side is not a gimple
15087         register.
15088
15089 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15090
15091         * gimplify.c (gimplify_return_expr): Make the temporary variable
15092         for the return expression, a gimple register variable.
15093
15094 2007-01-01  Jan Hubicka  <jh@suse.cz>
15095
15096         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
15097         INSN_LIST.
15098
15099 2007-01-01  Mike Stump  <mrs@apple.com>
15100
15101         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
15102         .literal16.
15103         * config/darwin.c (machopic_select_rtx_section): Use
15104         HAVE_GAS_LITERAL16.
15105         (darwin_mergeable_constant_section): Likewise.
15106         * configure: Regenerate.
15107         * config.in: Regenerate.
15108
15109 2007-01-01  Jan Hubicka  <jh@suse.cz>
15110             Andrew Pinski  <pinskia@gmail.com>
15111
15112         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
15113         before starting IPA passes.