OSDN Git Service

cda7596032cbd265af2e30aa6205d1ea4c6c18ed
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2
3         PR middle-end/28071
4         * sched-int.h (struct deps): Split field 'pending_lists_length' into
5         'pending_read_list_length' and 'pending_write_list_length'.  Update
6         comment.
7         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
8         to handle two length counters instead of one.  Update all uses.
9         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
10         two length counters instead of one.
11         * sched-rgn.c (propagate_deps): Update to handle two length counters
12         instead of one.
13
14 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
15
16         PR target/31582
17         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
18         copy of source, pass it to ix86_expand_vector_set and return
19         it as target.
20
21 2007-04-16  David Ung  <davidu@mips.com>
22             Joseph Myers  <joseph@codesourcery.com>
23
24         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
25         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
26         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
27         Add 74K processor information.
28         * config/mips/mips.md: Include 74k.md.
29         (cpu): Add 74kc,74kf,74kx.
30         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
31         * config/mips/74k.md: New.
32         * doc/invoke.texi (MIPS Options): Document 74K support.
33
34 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
35
36         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
37         vectorizable_* functions.
38         * tree-vect-transform.c (vectorizable_call): Add check for
39         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
40         (vectorizable_store): likewise.
41         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
42         Add comments.
43         (vectorizable_operation, vectorizable_type_demotion): Likewise.
44         (vectorizable_type_promotion, vectorizable_load): Likewise.
45         (vectorizable_live_operation, vectorizable_condition): Likewise.
46         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
47         STMT_VINFO_LIVE_P.
48         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
49
50 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
51
52         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
53         register numbers more.
54         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
55         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
56         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
57         FUNCTION_VALUE_REGNO_P): Likewise.
58         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
59         STATIC_CHAIN_REGNUM): Likewise.
60         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
61         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
62         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
63         * config/m68k/m68k.md (FP_REG): New.
64
65 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
66
67         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
68         alignment on fido.
69
70 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
71
72         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
73         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
74         comment typos.
75
76 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
77
78         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
79         cold loops.
80
81 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
82
83         PR c/31520
84         * c-decl.c (finish_decl): Grab the type of the decl after the call
85         to store_init_value.
86
87 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
88
89         * common.opt (fforward-propagate): Fix "Optimization" annotation.
90
91 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
92
93         PR c++/25874
94         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
95         post dominators and cleanup cfg before returning.
96
97 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
98
99         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
100         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
101
102 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
103
104         * config.gcc: Recognize fido.
105         * config/m68k/m68k-devices.def (fidoa): New.
106         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
107         __mfido__.
108         (FL_FIDOA, TARGET_FIDOA): New.
109         * config/m68k/m68k.opt (mfidoa): New.
110
111 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
112
113         PR middle-end/31322
114         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
115         when a personality function is used.
116
117 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
118
119         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
120
121 2007-04-13  Mike Stump  <mrs@apple.com>
122
123         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
124         we can...
125         * config/darwin.opt (fapple-kext): Make C++ only.
126         * config/darwin.c (darwin_override_options): Remove code to ensure
127         -fapple-kext is given for C++ only.
128
129 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
130
131         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
132         * config/mips/mips.c (override_options): Call
133         SUBTARGET_OVERRIDE_OPTIONS, if defined.
134
135 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
136
137         * config/i386/i386.opt (msvr3-shlib): Removed.
138
139         * doc/invoke.texi: Remove -msvr3-shlib.
140
141 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
142
143         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
144         with "popcnt" instruction.
145
146 2007-04-13  Richard Guenther  <rguenther@suse.de>
147
148         PR tree-optimization/21258
149         * tree-vrp.c (compare_case_labels): New helper.
150         (find_switch_asserts): New function.
151         (find_assert_locations): Call it for SWITCH_EXPRs.
152
153 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
154
155         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
156         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
157         check is now implied in X87_FLOAT_MODE_P.
158         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
159         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
160         (fix_trunc<mode>_i386_fisttp): Ditto.
161         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
162         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
163         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
164         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
165         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
166         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
167         (unnamed_splitters): Ditto.
168         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
169         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
170         FIRST_SSE_REG for local functions when SSE math is enabled or
171         for functions with sseregparm attribute.
172         (standard_80387_constant_p): Return -1 if mode is not
173         X87_FLOAT_MODE_P.
174         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
175         (ix86_expand_compare): Ditto.
176         (ix86_expand_carry_flag_compare): Ditto.
177         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
178         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
179         DECIMAL_FLOAT_MODE_P.
180         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
181         of SCALAR_FLOAT_MODE_P.
182         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
183         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
184         checks before FLOAT_MODE_P.
185         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
186         before FLOAT_MODE_P.
187         [DIV]: Ditto.
188         [NEG]: Ditto.
189         [ABS]: Ditto.
190         [SQRT]: Ditto.
191         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
192
193 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
194             Charles Wilson  <libtool@cwilson.fastmail.fm>
195
196         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
197         (libgcc.mvars): Don't depend on them.
198         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
199         * exec-tool.in: New.
200
201 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
202
203         * doc/invoke.text (--help): Document --help=common.
204
205 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
206
207         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
208
209 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
210
211         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
212         * genemit.c (main): Emit #include "integrate.h".
213         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
214         (LOADGP_RTP): New mips_loadgp_style.
215         * config/mips/mips.h: Include config/vxworks-dummy.h.
216         (TARGET_RTP_PIC): New macro.
217         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
218         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
219         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
220         for TARGET_RTP_PIC.
221         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
222         -mvxworks-pic when using -mrtp and a PIC option.
223         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
224         for RTP PIC.
225         (mips_symbolic_constant_p, mips_symbolic_address_p)
226         (mips_symbol_insns): Handle SYMBOL_HALF.
227         (override_options): Warn about -G and -mrtp being used together.
228         Initialize mips_lo_relocs[SYMBOL_HALF].
229         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
230         (mips_emit_loadgp): Handle LOADGP_RTP.
231         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
232         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
233         (tablejump): Handle function-relative case table entries if
234         TARGET_RTP_PIC.
235         * config/mips/predicates.md (symbol_ref_operand): New predicate.
236
237 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
238
239         * config/mips/mips.md (load_call<mode>): Allow any general register.
240         destination.
241         (sibcall_value_internal, sibcall_value_multiple_internal)
242         (call_value_internal, call_value_split, call_value_multiple_internal)
243         (call_value_multiple_split): Remove constraints from operand 0.
244
245 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
246
247         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
248         rather than loadgp_noshared.
249         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
250         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
251         gen_loadgp.
252         * config/mips/mips.md (loadgp): Rename to...
253         (loadgp_newabi): ...this.
254         (loadgp_noshared): Rename to...
255         (loadgp_absolute): ...this.
256
257 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
258
259         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
260         false for locally-binding symbols.
261         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
262
263 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
264
265         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
266         (SYMBOL_GOT_PAGE_OFST): ...this.
267         (SYMBOL_GOT_GLOBAL): Rename to...
268         (SYMBOL_GOT_DISP): ...this.
269         (SYMBOL_GOTOFF_GLOBAL): Rename to...
270         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
271         * config/mips/mips.c (mips_global_symbol_p): New function.
272         (mips_symbol_binds_local_p): Likewise.
273         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
274         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
275         and mips_symbol_binds_local_p.
276         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
277         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
278         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
279         SYMBOL_GOTOFF_DISP.
280         (mips_ok_for_lazy_binding_p): New function.
281         (mips_load_call_address, mips_expand_call): Use it.
282         (mips_dangerous_for_la25_p): Likewise.
283         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
284         (*got_disp<mode>): Use got_disp_operand instead of
285         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
286         SYMBOL_GOTOFF_GLOBAL.
287         (*got_page<mode>): Use got_page_ofst_operand instead of
288         local_got_operand.
289         * config/mips/predicates.md (const_call_insn_operand): Use
290         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
291         (global_got_operand): Rename to...
292         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
293         SYMBOL_GOT_GLOBAL.
294         (local_got_operand): Rename to...
295         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
296         of SYMBOL_GOT_LOCAL.
297
298 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
299
300         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
301         TARGET_CALL_CLOBBERED_GP.
302         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
303         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
304         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
305         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
306         of TARGET_ABICALLS && !TARGET_NEWABI.
307         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
308         * config/mips/mips.c (mips_load_call_address): Check
309         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
310         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
311         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
312         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
313         TARGET_ABICALLS && TARGET_NEWABI.
314         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
315         TARGET_ABICALLS.
316         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
317         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
318         TARGET_ABICALLS && TARGET_NEWABI.
319         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
320         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
321         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
322         whether indirect calls must use $25.
323         (mips_extra_live_on_entry): Check TARGET_GOT instead of
324         TARGET_ABICALLS.
325         * config/mips/mips.md (jal_macro): Check flag_pic and
326         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
327         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
328         instead of TARGET_ABICALLS.
329         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
330         TARGET_ABICALLS && TARGET_OLDABI.
331         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
332         (sibcall): In the comment above the define_insn, mention
333         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
334         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
335         instead of TARGET_ABICALLS.
336
337 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
338
339         * doc/md.texi (Blackfin family constraints): Document PA and PB.
340         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
341         (MACFLAGS_MATCH_P): New macro.
342         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
343         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
344         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
345         the other MACFLAG constants.
346         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
347         (flag_machi): Tighten constraints.  Renumber some of the operands.
348         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
349         output template.
350         (flag_machi_parts_acconly): New pattern.
351         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
352         used.
353         (flag_macinit1hi): Tighten constraints.
354         (flag_mul_macv2hi_parts_acconly): New pattern.
355
356         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
357         Use a more efficient implementation.
358         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
359         inline sequences when not optimizing for size.
360
361         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
362         movhi_high2low): Delete, merge functionality into...
363         (packv2hi): ... this pattern.
364
365         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
366         * config/bfin/bfin.opt (msim): New option.
367         (mcpu=): New option.
368         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
369         (bfin_cpu_t): Typedef of enum bfin_cpu.
370         (bfin_cpu_type): New declaration.
371         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
372         -msim and -mcpu= options.
373         (LIB_SPEC): Likewise.
374         * config/bfin/bfin.c (bfin_cpu_type): Define.
375         (bfin_handle_option): Handle -mcpu= option.
376         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
377         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
378         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
379
380 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
381
382         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
383         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
384         (powerpc-wrs-vxworksae): Use ${tm_file}.
385         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
386         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
387         * config/i386/vx-common.h: New file.
388
389 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
390
391         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
392         of crt0.o%s.
393
394 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
395
396         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
397         ldxtr.
398
399 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
400
401         PR c++/31078
402         PR c++/31103
403         * c-common.c (c_build_qualified_type): Set canonical type
404         appropriately.  
405
406 2007-04-12  Richard Guenther  <rguenther@suse.de>
407
408         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
409         lower bound and element size if lower bound is not zero
410         or either of the ARRAY_REF operands is set.
411
412 2007-04-12  Richard Guenther  <rguenther@suse.de>
413
414         PR tree-optimization/24689
415         PR tree-optimization/31307
416         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
417         indices by value.
418         * gimplify.c (canonicalize_addr_expr): To be consistent with
419         gimplify_compound_lval only set operands two and three of
420         ARRAY_REFs if they are not gimple_min_invariant.  This makes
421         it never at this place.
422         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
423
424 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
425
426         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
427         null before emitting a .nsubspa directive.
428
429 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
430
431         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
432         need_to_partition_p if there are no memory statements in the
433         function.
434
435 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
436
437         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
438         (gcd_of_steps_may_divide_p): New function.
439         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
440
441 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
442
443         * reload.c (find_reloads_toplev, find_reloads_address,
444         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
445         not a pointer equality test, to decide if we need to call
446         push_reg_equiv_alt_mem.
447
448 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
449
450         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
451         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
452         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
453
454 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
455
456         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
457         vector to be positive.
458
459 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
460
461         PR 30735
462         PR 31090
463         * doc/invoke.texi: Document --params max-aliased-vops and
464         avg-aliased-vops.
465         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
466         debug_memory_partitions): Move to tree-flow.h
467         * params.h (AVG_ALIASED_VOPS): Define.
468         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
469         users.
470         (mp_info_t): Likewise.
471         (get_mem_sym_stats_for): New.
472         (set_memory_partition): Move from tree-flow-inline.h.
473         (mark_non_addressable): Only clear the set of symbols for the
474         partition if it exists.
475         (dump_memory_partitions): Move from tree-ssa-operands.c
476         (debug_memory_partitions): Likewise.
477         (need_to_partition_p): New.
478         (dump_mem_ref_stats): New.
479         (debug_mem_ref_stats): New.
480         (dump_mem_sym_stats): New.
481         (debug_mem_sym_stats): New.
482         (update_mem_sym_stats_from_stmt): New.
483         (compare_mp_info_entries): New.
484         (mp_info_cmp): Call it.
485         (sort_mp_info): Change argument to a list of mem_sym_stats_t
486         objects.
487         (get_mpt_for): Move from tree-ssa-operands.c.
488         (find_partition_for): New.
489         (create_partition_for): Remove.
490         (estimate_vop_reduction): New.
491         (update_reference_counts): New.
492         (build_mp_info): New.
493         (compute_memory_partitions): Refactor.
494         Document new heuristic.
495         Call build_mp_info, update_reference_counts,
496         find_partition_for and estimate_vop_reduction.
497         (compute_may_aliases): Populate virtual operands before
498         calling debugging dumps.
499         (delete_mem_sym_stats): New.
500         (delete_mem_ref_stats): New.
501         (init_mem_ref_stats): New.
502         (init_alias_info): Call it.
503         (maybe_create_global_var): Remove alias_info argument.
504         Get number of call sites and number of pure/const call sites
505         from gimple_mem_ref_stats().
506         (dump_alias_info): Call dump_memory_partitions first.
507         (dump_points_to_info_for): Show how many times a pointer has
508         been dereferenced.
509         * opts.c (decode_options): For -O2 set --param
510         max-aliased-vops to 500.
511         For -O3 set --param max-aliased-vops to 1000 and --param
512         avg-aliased-vops to 3.
513         * fortran/options.c (gfc_init_options): Remove assignment to
514         MAX_ALIASED_VOPS.
515         * tree-flow-inline.h (gimple_mem_ref_stats): New.
516         * tree-dfa.c (dump_variable): Dump memory reference
517         statistics.
518         Dump NO_ALIAS* settings.
519         (referenced_var_lookup): Tidy.
520         (mem_sym_stats): New.
521         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
522         and ORIG are different SSA names for a memory partition.
523         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
524         * tree-flow.h (struct mem_sym_stats_d): Define.
525         (mem_sym_stats_t): Define.
526         (struct mem_ref_stats_d): Define.
527         (struct gimple_df): Add field mem_ref_stats.
528         (enum noalias_state): Define.
529         (struct var_ann_d): Add bitfield noalias_state.
530         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
531         debug_mem_ref_stats, debug_memory_partitions,
532         debug_mem_sym_stats): Declare.
533         * tree-ssa-structalias.c (update_alias_info): Update call
534         sites, pure/const call sites and asm sites in structure
535         returned by gimple_mem_ref_stats.
536         Remove local variable IS_POTENTIAL_DEREF.
537         Increase NUM_DEREFS if the memory expression is a potential
538         dereference.
539         Call update_mem_sym_stats_from_stmt.
540         If the memory references memory, call
541         update_mem_sym_stats_from_stmt for all the direct memory
542         symbol references found.
543         (intra_create_variable_infos): Set noalias_state field for
544         pointer arguments according to the value of
545         flag_argument_noalias.
546         * tree-ssa-structalias.h (struct alias_info): Remove fields
547         num_calls_found and num_pure_const_calls_found.
548         (update_mem_sym_stats_from_stmt): Declare.
549         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
550         Set default value to 100.
551         (PARAM_AVG_ALIASED_VOPS): Define.
552
553 2007-04-11  Richard Guenther  <rguenther@suse.de>
554
555         PR middle-end/31530
556         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
557         a * -b + c as c - a * b if we honor sign dependent rounding.
558
559 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
560
561         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
562         bfin_expand_strmov.
563         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
564         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
565         variables.
566         (initialize_trampoline): Don't use old-style function definition.
567         (bfin_secondary_reload): Mark IN_P argument as unused.
568
569 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
570
571         PR tree-optimization/31343
572         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
573         (build_polynomial_chrec): Return a scalar when the evolution is zero.
574         * testsuite/gcc.dg/vect/pr31343.c: New.
575
576 2007-04-10  Eric Christopher  <echristo@apple.com>
577
578         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
579         * config/i386/i386.md (*cmpfp0): Use.
580         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
581         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
582         (fix_trunc<mode>_i386_fisttp): Ditto.
583         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
584         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
585         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
586         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
587         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
588         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
589         (unnamed_splitters): Ditto.
590         * config/i386/i386.c (output_fix_trunc): Assert that
591         we're not being passed a TFmode operand.
592
593 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
594
595         PR tree-optimization/31526
596         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
597         n_basic_blocks to find newly added blocks.
598
599 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
600
601         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
602         alternative.
603         (fix_trunc<mode>si_sse): Ditto.
604         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
605         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
606         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
607         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
608         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
609         expander using SSEMODEF mode macro.
610         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
611         expander using SSEMODEF mode macro.
612         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
613         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
614         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
615         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
616         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
617         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
618         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
619         Macroize insn using X87MODEF mode macro.
620
621 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
622
623         * config/i386/sse.md (sse2_pinsrw): Removed.
624         (sse2_pextrw): Renamed to ...
625         (*sse2_pextrw): This.
626
627 2007-04-09  Jan Hubicka  <jh@suse.cz>
628
629         PR target/27869
630         * config/i386/sse.md
631         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
632         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
633         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
634         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
635
636 2007-04-09  Jan Hubicka  <jh@suse.cz>
637
638         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
639         multiple fields of union.
640
641 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
642
643         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
644         (create_preheaders): Check that loops are available.
645         (fix_loop_structure): Clean up, improve comments.
646         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
647         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
648         state flags.
649         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
650         * predict.c (tree_estimate_probability): Do not call
651         calculate_dominance_info.  Call create_preheaders.
652         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
653         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
654         flags.
655         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
656         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
657         * tree-cfg.c (tree_split_edge): Make an assert more precise.
658         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
659         arguments.
660
661 2007-04-08  Jan Hubicka  <jh@suse.cz>
662
663         * tree.h (maybe_fold_offset_to_component_ref): Declare.
664         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
665         * fold-const.c (fold_unary): Use it.
666
667 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
668
669         * varasm.c (assemble_variable): Remove call to
670         lang_hooks.decls.prepare_assemble_variable.
671         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
672         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
673         * langhooks.h (lang_hooks_for_decls): Remove
674         prepare_assemble_variable.
675
676 2007-04-08  Mike Stump  <mrs@apple.com>
677
678         * config/i386/i386.c: Use inc/dec on Core2.
679
680 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
681
682         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
683         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
684         lhd_tree_inlining_end_inlining): Remove.
685         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
686         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
687         end_inlining hooks.
688         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
689         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
690         lhd_tree_inlining_end_inlining): Remove prototypes.
691         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
692         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
693         LANG_HOOKS_TREE_INLINING_START_INLINING,
694         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
695
696         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
697         not set it.
698
699 2007-04-08  Anatoly Sokolov <aesok@post.ru>
700
701         PR target/29932
702         * config/avr/predicates.md (io_address_operand): Delete predicate.
703         (low_io_address_operand): Don't use 'mode' argument.
704         (higth_io_address_operand): Rename ...
705         (high_io_address_operand): ... to this. Don't use 'mode' argument.
706         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
707         for above change.
708
709 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
710
711         Revert change removing staticp.
712
713 2007-04-07  Anatoly Sokolov <aesok@post.ru>
714
715         PR target/30289
716         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
717         earlyclobber.
718
719 2007-04-07  Bruce Korb  <bkorb@gnu.org>
720
721         * c.opt: Add -Wformat-contains-nul.
722         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
723           -Wformat setting.
724         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
725         the NUL byte warning.
726
727 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
728
729         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
730
731 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
732
733         * tree.c (staticp): No longer use staticp langhook.
734         * langhooks.c (lhd_staticp): Removed.
735         * langhooks.h (struct lang_hooks): Remove staticp.
736         * c-common.c (c_staticp): Remove.
737         * c-common.h (c_staticp): Ditto.
738         * langhooks-defs.h (lhd_staticp): Ditto.
739         (LHD_HOOKS_STATICP): Ditto
740         * tree.h (gcc_assert_lowered): New macro.
741
742 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
743
744         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
745         argument "reliable".
746         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
747         Add argument "reliable".  Propagate it through calls.
748         (infer_loop_bounds_from_undefined):  Derive number of iterations
749         estimates from references in blocks that do not dominate loop latch.
750         (gcov_type_to_double_int): New function.
751         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
752         and expected_loop_iterations_unbounded.
753         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
754         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
755         * tree-data-ref.c (estimated_loop_iterations): Export.
756         (get_references_in_stmt): Fix -- do not return addresses of local
757         objects.
758         * cfgloop.h (expected_loop_iterations_unbounded,
759         estimated_loop_iterations): Declare.
760
761 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
762
763         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
764
765 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
766
767         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
768         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
769         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
770         Use output_387_reg_move().
771         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
772         expander using X87MODEF12 mode macro.
773         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
774         choosing register preferences.  Use output_387_reg_move().
775         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
776         instead of "x".  Use output_387_reg_move().
777         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
778         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
779         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
780         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
781         Use output_387_reg_move().
782         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
783         mode macro.
784         (*truncxf?f_i387 splitter): Ditto.
785
786 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
787
788         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
789         LANG_HOOKS_SAFE_FROM_P.
790         * expr.c (safe_from_p): Remove langhook call.
791         * langhooks.h (lang_hooks): Remove safe_from_p.
792         (lhd_safe_from_p): Remove prototype.
793         * langhooks.c (lhd_safe_from_p): Remove.
794
795 2007-04-06  Jan Hubicka  <jh@suse.cz>
796
797         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
798         functions.
799
800 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
801
802         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
803         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
804         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
805         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
806         alternative.
807         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
808         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
809
810 2007-04-05  Richard Henderson  <rth@redhat.com>
811
812         * config/alpha/alpha.c (print_operand) [+]: Remove.
813         (alpha_end_function): Print nop if call at end of function.
814         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
815         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
816         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
817         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
818         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
819         the call pattern. Update peepholes to match.
820
821 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
822
823         * doc/extend.texi (Other Builtins): Add decimal float variants
824         of signbit.
825         * builtins.def: Ditto.
826         * builtins.c (expand_builtin): Ditto.
827
828 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
829             H.J. Lu  <hongjiu.lu@intel.com>
830
831         PR target/31478
832         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
833         of V8HImode when calling ix86_binary_operator_ok.
834         (sse2_pmaddwd): Call ix86_binary_operator_ok.
835         (sdot_prodv8hi): Operands 1 and 2 must be register.
836
837 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
838
839         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
840         initialize align to silence bogus warning.
841
842 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
843
844         PR middle-end/22156
845         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
846         all_no_warning.
847         (struct sra_walk_fns): Remove use_all parameter from use.
848         (sra_hash_tree): Handle BIT_FIELD_REFs.
849         (sra_elt_hash): Don't hash bitfld blocks.
850         (sra_elt_eq): Skip them in parent compares as well.  Handle
851         BIT_FIELD_REFs.
852         (sra_walk_expr): Don't maintain or pass down use_all_p.
853         (scan_use): Remove use_all parameter.
854         (scalarize_use): Likewise.  Re-expand assignment to
855         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
856         output, and re-scalarize after output.  Don't mark anything
857         for no warning.
858         (scalarize_ldst): Adjust.
859         (scalarize_walk_gimple_modify_statement): Likewise.
860         (build_element_name_1): Handle BIT_FIELD_REFs.
861         (instantiate_element): Don't warn for any element whose parent
862         is used as a whole.
863         (instantiate_missing_elements_1): Return the sra_elt.
864         (canon_type_for_field): New.
865         (try_instantiate_multiple_fields): New.
866         (instantiate_missing_elemnts): Use them.
867         (mark_no_warning): Removed.
868         (generate_one_element_ref): Handle BIT_FIELD_REFs.
869         (REPLDUP, sra_build_elt_assignment): New.
870         (generate_copy_inout): Use them.
871         (generate_element_copy): Likewise.  Handle bitfld differences.
872         (generate_element_zero): Don't recurse for blocks.  Use
873         sra_build_elt_assignment.
874         (generate_one_element_int): Take elt instead of var.  Use
875         sra_build_elt_assignment.
876         (generate_element_init_1): Adjust.
877         (scalarize_use, scalarize_copy): Use REPLDUP.
878         (scalarize_ldst): Move assert before dereference.
879         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
880
881 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
882
883         * regmove.c: Fix unused variable warnings due to previous commit.
884
885 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
886
887         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
888         (regmove_bb_head): Remove.
889         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
890         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
891         problems with fixup_match_1.
892         Don't initialize/free regmove_bb_head.
893
894         (reg_is_remote_constant_p): If an insn is in the same basic block
895         but not before INSN, consider it remote, too.
896
897 2007-04-05  Anatoly Sokolov <aesok@post.ru>
898
899         PR target/25448
900         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
901         DECL_ASSEMBLER_NAME, not the DECL_NAME.
902
903 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
904
905         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
906         (CONDITIONAL_REGISTER_USAGE): Likewise.
907
908 2007-04-04  Richard Henderson  <rth@redhat.com>
909
910         * config/alpha/lib1funcs.asm: Remove unused file.
911
912 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
913
914         PR other/31356
915         * opts.c (print_specific_help): Fix --help=<language>
916         header line.
917         (common_handle_option): Support --help=common.
918
919 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
920
921         PR other/31353
922         * gcc.c (main): Do not run the linker if
923         print_subprocess_help indicates that it shouldn't be
924         run.
925
926 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
927
928         PR doc/31355
929         * doc/invoke.texi (--help=): Document <languages> value, fix
930         formatting in tables of values.
931
932 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
933
934         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
935         dllimport attribute of virtual methods.
936
937 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
938
939         * config/score/crti.asm: Change _bss_start to __bss_start.
940         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
941         (OUTGOING_REG_PARM_STACK_SPACE) update.
942         * config/score/score.opt: add options to make backend support
943         score5, score5u, score7 and score7d.
944         * config/score/score.md: Likewise.
945         * config/score/misc.md: Likewise.
946         * config/score/mac.md: Likewise.
947         * doc/invoke.texi: Likewise.
948         * doc/md.texi: update constraints define.
949
950 2007-04-03  Richard Henderson  <rth@redhat.com>
951
952         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
953         an appropriate type, use the mode instead.
954
955 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
956
957         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
958         Set the default --with-arch setting to mips2.
959         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
960         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
961         (MULTILIB_OSDIRNAMES): Delete.
962         (MULTILIB_DIRNAMES): Define.
963         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
964         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
965         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
966         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
967         VXWORKS_OS_CPP_BUILTINS.
968         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
969         (MIPS_DEBUGGING_INFO): Undefine.
970         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
971
972 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
973
974         PR middle-end/30704
975         * fold-const.c (native_encode_real): Encode real.c provided longs
976         as a series of 32-bit native integers.
977         (native_interpret_real): Interpret buffer as a series of 32-bit
978         native integers.
979
980 2007-04-03  Richard Guenther  <rguenther@suse.de>
981
982         * genpreds.c (write_insn_constraint_len): Write function
983         optimized for CONSTRAINT_LEN implementation.
984         (write_tm_preds_h): Output insn_constraint_len inline and
985         use it for CONSTRAINT_LEN.
986         (write_insn_preds_c): Don't output insn_constraint_len.
987         * doc/md.texi (define_register_constraint): Document multi-letter
988         constraints shall have the same length if they start with the same
989         letter.
990
991 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
992
993         PR target/31175
994         * config/i386/i386.md (isinf<mode>2): Expand only when
995         TARGET_C99_FUNCTIONS is set.
996
997 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
998
999         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
1000         (x86_64-*-linux*): Ditto.
1001         * config/i386/i386.opt (mpc): New option.
1002         * config/i386/i386.c (overrride_options): Handle
1003         ix87_precision_string.
1004         * config/i386/crtprec.c: New file.
1005         * config/i386/t-crtpc: Ditto.
1006         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
1007         and -mpc80 options.
1008         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
1009         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
1010         crtprec32.o, crtprec64.o and crtprec80.o.
1011
1012         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
1013         and -mpc80 options.
1014         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
1015
1016 2007-04-02  Eric Christopher  <echristo@apple.com>
1017
1018         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
1019         limitations on darwin.
1020
1021 2007-04-02  Anatoly Sokolov <aesok@post.ru>
1022
1023         PR target/31137
1024         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
1025
1026 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1027
1028         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
1029
1030 2007-04-02  Dave Korn  <dave.korn@artimi.com>
1031
1032         * libgcc2.h (exception_descriptor): Don't forward-declare.
1033         (__get_eh_table_language, __get_eh_table_version): Delete
1034         prototypes of long-dead functions.
1035
1036 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
1037
1038         * ebitmap.h: New file
1039         * ebitmap.c: New file
1040         * Makefile.in (ebitmap.o): New target.
1041
1042 2007-04-01  Jan Hubicka  <jh@suse.cz>
1043
1044         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
1045         before very first instruction.
1046
1047 2007-04-01  Jan Hubicka  <jh@suse.cz>
1048
1049         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
1050         waring on 64bit hosts.
1051         * bitmap.h: Fix typo in bitmap_head_def.
1052
1053 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
1054
1055         PR rtl-optimization/31391
1056         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
1057         into a DELETED_LABEL note, and the label is in an empty basic
1058         block, update BB_END as well as BB_HEAD.
1059
1060 2007-04-01  Richard Henderson  <rth@redhat.com>
1061
1062         PR tree-optimization/31169
1063         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
1064         to varying if the range is outside [0,  prec-1].
1065
1066 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
1067
1068         PR target/31388
1069         * config/mips/mips.md (load_const_gp): New insn.
1070         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
1071         the MIPS16 GP pseudo register if no_new_pseudos.
1072         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
1073
1074 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1075
1076         PR target/31364
1077         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
1078         secureplt.
1079         (call_value): Likewise.
1080
1081 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
1082             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1083
1084         PR 14737
1085         * doc/invoke.texi: (optimization options): Reword description
1086         of -ffast-math. Document its primary purpose.
1087
1088 2007-03-31  Richard Guenther  <rguenther@suse.de>
1089
1090         * omp-low.c (splay-tree.h): Include.
1091         (lookup_decl): Replace splay-tree usage by pointer-map.
1092         (maybe_lookup_decl): Likewise.
1093         (new_omp_context): Likewise.
1094         (delete_omp_context): Likewise.
1095         * gimplify.c (splay-tree.h): Include.
1096         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
1097         pointer-map.
1098         (remap_ssa_name): Likewise.
1099         (remap_decl): Likewise.
1100         (remap_type_1): Likewise.
1101         (remap_type): Likewise.
1102         (copy_body_r): Likewise.
1103         (expand_call_inline): Likewise.
1104         (clone_body): Likewise.
1105         (copy_tree_r): Likewise.
1106         (remap_save_expr): Likewise.
1107         (unsave_r): Likewise.
1108         (unsave_expr_now): Likewise.
1109         (tree_function_versioning): Likewise.
1110         (build_duplicate_type): Likewise.
1111         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
1112         (struct copy_body_data): Replace splay-tree by pointer-map.
1113         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
1114         not $(SPLAY_TREE_H).
1115         (gimplify.o): Depend on $(SPLAY_TREE_H).
1116         (omp-low.p): Likewise.
1117
1118 2007-03-31  Anatoly Sokolov <aesok@post.ru>
1119
1120         * config/avr/predicates.md (even_register_operand,
1121         odd_register_operand): New predicates.
1122         * config/avr/avr.md (movw peephole2): New.
1123         (movw_r peephole2): New.
1124
1125 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1126
1127         * tree.h (get_signed_or_unsigned_type): New.
1128         * fold-const.c (operand_equal_for_comparison_p): Use
1129         get_signed_or_unsigned_type instead of
1130         lang_hooks.types.signed_or_unsigned_type.
1131         * expr.c (store_expr): Ditto.
1132         * langhooks.c (get_signed_or_unsigned_type): New.
1133         (lhd_signed_or_unsigned_type): New.
1134         * langhooks.h (lhd_signed_or_unsigned_type): New.
1135         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1136
1137 2007-03-30  Richard Henderson  <rth@redhat.com>
1138
1139         * tree-ssa-loop-ivopts.c: Include target.h.
1140         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1141         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1142         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1143         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1144
1145 2007-03-30  Richard Henderson  <rth@redhat.com>
1146             Kai Tietz  <kai.tietz@onevision.com>
1147
1148         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1149         default for 64-bit.
1150         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1151         (TARGET_64BIT_MS_ABI): New.
1152         (DBX_REGISTER_NUMBER): Handle 64-bit.
1153         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1154         (LONG_TYPE_SIZE): Force to 32.
1155         (REG_PARM_STACK_SPACE): New.
1156         (OUTGOING_REG_PARM_STACK_SPACE): New.
1157         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1158         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1159         (STACK_BOUNDARY): Use 128 for 64-bit.
1160         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1161         Add 64-bit implementation.
1162         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1163         argument unused.
1164         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1165         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1166         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1167         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1168         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1169         TARGET_64BIT_MS_ABI.
1170         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1171         (ix86_pass_by_reference): Likewise.
1172         (ix86_function_value_regno_p): Likewise.
1173         (ix86_build_builtin_va_list): Likewise.
1174         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1175         (function_arg_advance_ms_64): New.
1176         (function_arg_advance): Call it.
1177         (function_arg_ms_64): New.
1178         (function_arg): Call it.
1179         (function_value_ms_64): New.
1180         (ix86_function_value_1): Call it.
1181         (return_in_memory_ms_64): New.
1182         (ix86_return_in_memory): Call it.
1183         (setup_incoming_varargs_ms_64): New.
1184         (ix86_setup_incoming_varargs): Call it.
1185         (ix86_expand_prologue): Handle 64-bit stack probing.
1186         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1187         (output_pic_addr_const): Likewise.
1188         (x86_this_parameter): Likewise.
1189         (x86_output_mi_thunk): Likewise.
1190         (x86_function_profiler): Likewise.
1191         (TARGET_STRICT_ARGUMENT_NAMING): New.
1192         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1193         (TARGET_64BIT_MS_ABI): New.
1194         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1195         * config/i386/i386.md (allocate_stack_worker): Remove.
1196         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1197         describe the clobber of eax without a match_scratch.
1198         (allocate_stack_worker_postreload): Remove.
1199         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1200         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1201         (allocate_stack_worker_rex64_postreload): Remove.
1202         (allocate_stack): Handle 64-bit.
1203         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1204         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1205         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1206         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1207         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1208         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1209         * config.build (x86_64-*-mingw*): New host.
1210         * config.host (x86_64-*-mingw*): New host.
1211         * config.gcc (x86_64-*-mingw*): New target.
1212         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1213
1214 2007-03-30  Richard Henderson  <rth@redhat.com>
1215             Kai Tietz  <kai.tietz@onevision.com>
1216
1217         * c-pragma.c (struct def_pragma_macro_value): New.
1218         (struct def_pragma_macro): New.
1219         (pushed_macro_table): New.
1220         (dpm_hash, dpm_eq): New.
1221         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1222         (init_pragma): Install them.
1223         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1224
1225 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1226
1227         * config/avr/avr.c (avr_override_options): Clear
1228         'flag_delete_null_pointer_checks'.
1229
1230 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1231
1232         PR c++/26099
1233         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1234         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1235         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1236         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1237         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1238         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1239         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1240         C++ extensions.
1241         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1242
1243 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1244
1245         * regmove.c: Move all of pass_stack_adjustments from here...
1246         * combine-stack-adj.c: ...to this new file.
1247         * Makefile.in: Add rules for combine-stack-adj.o.
1248
1249 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1250
1251         PR tree-optimization/31383
1252         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1253         to have the same length.
1254
1255 2007-03-30  Jan Hubicka  <jh@suse.cz>
1256
1257         PR middle-end/30700
1258         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1259         availablility; add more sanity checking; ask varpool only about
1260         VAR_DECL.
1261
1262 2007-03-29  Richard Henderson  <rth@redhat.com>
1263
1264         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1265         to decide, but __SIZEOF_LONG_LONG__.
1266
1267 2007-03-29  Richard Henderson  <rth@redhat.com>
1268
1269         * emutls.c (struct __emutls_array): New.
1270         (emutls_destroy): Use it instead of casting element 0 from void*.
1271         (__emutls_get_address): Likewise.
1272
1273 2007-03-29  Richard Henderson  <rth@redhat.com>
1274
1275         * varasm.c (initializer_constant_valid_p): Don't deny
1276         DECL_DLLIMPORT_P on functions.
1277
1278         * config/i386/cygming.h: Remove function declarations.
1279         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1280         (ASM_OUTPUT_LABELREF): Remove.
1281         (COMMON_ASM_OP): Remove.
1282         (ASM_OUTPUT_COMMON): Remove.
1283         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1284         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1285         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1286         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1287         Rename from TARGET_ENCODE_SECTION_INFO.
1288         * config/i386/netware.h: Likewise.
1289         * config/i386/i386-protos.h: Update.
1290         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1291         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1292         (legitimate_constant_p): Reject dllimports.
1293         (dllimport_map, get_dllimport_decl): New.
1294         (legitimize_dllimport_symbol): New.
1295         (legitimize_address, ix86_expand_move): Use it.
1296         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1297         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1298         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1299         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1300         * config/i386/predicates.md (constant_call_address_operand): Only
1301         accept symbols; reject dllimport_p symbols.
1302         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1303         i386_pe_maybe_record_exported_symbol.
1304         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1305         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1306         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1307         trust the setting of DECL_DLLIMPORT_P.
1308         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1309         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1310         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1311         tidy the argument scanning loop.
1312         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1313         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1314         (i386_pe_strip_name_encoding): Remove.
1315         (i386_pe_binds_local_p): New.
1316         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1317         (i386_pe_output_labelref): Remove.
1318         (i386_pe_asm_output_aligned_decl_common): New.
1319         (i386_pe_maybe_record_exported_symbol): Rename from
1320         i386_pe_record_exported_symbol; check for dllexported symbols.
1321
1322 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1323
1324         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1325         add comment explaining why vsnprintf cannot be used.
1326
1327 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1328
1329         PR tree-optimization/30666
1330         * tree.c (build_complex_type): When creating type names for DWARF2
1331         debug info, create TYPE_DECLs for TYPE_NAME instead of
1332         IDENTIFIER_NODEs.
1333         (build_common_tree_nodes_2): Use build_complex_type when building
1334         predefined complex types, to preserve canonical types.
1335
1336 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1337
1338         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1339         (noce_get_alt_condition): Look at it to determine whether to
1340         reverse the condition or not.
1341         (noce_get_condition): Substitute the truth for lies.
1342         (noce_find_if_block): Set the then_else_reversed field.
1343
1344 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1345
1346         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1347         destination of this insn.
1348         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1349         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1350         'address + 4' rather than a stack based temporary which can be
1351         mis-optimized away.
1352
1353 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1354
1355         * config/s390/s390.c (s390_secondary_input_reload_class,
1356         s390_secondary_output_reload_class): Functions removed.
1357         (s390_secondary_reload): New function.
1358         (TARGET_SECONDARY_RELOAD): Target macro defined.
1359         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1360         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1361         * config/s390/s390.md ("reload_outti", "reload_outdi",
1362         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1363         "reload_out<mode>"): Expanders removed.
1364         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1365         "reload<mode>_nonoffmem_out"): Expanders added.
1366
1367 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1368
1369         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1370         SRC->DEST replacement failed anyway.
1371
1372 2007-03-28  Mike Stump  <mrs@apple.com>
1373
1374         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1375         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1376         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1377
1378 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1379
1380         * config.gcc: Accept barcelona as a variant of amdfam10.
1381         * config/i386/i386.c (override_options): Likewise.
1382         * doc/invoke.texi: Likewise.
1383
1384 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1385
1386         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1387         offsets for BIT_FIELD_REF and COMPONENT_REF.
1388
1389 2007-03-28  Richard Guenther  <rguenther@suse.de>
1390
1391         * tree.c (is_global_var): Move ...
1392         * tree-flow-inline.h (is_global_var): ... here.
1393         * tree.h (is_global_var): Remove declaration.
1394
1395 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1396
1397         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1398         option.
1399         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1400         * config/i386/i386.c (ix86_tune_features): Initialize new
1401         tuning option.
1402         * config/i386/predicates.md (promotable_binary_operator): Use
1403         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1404
1405 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1406
1407         PR target/31380
1408         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1409
1410 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1411
1412         * config/fr30/fr30.md (movsi_internal): Change destination
1413         constraint from m to V and add m to the end.
1414
1415 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1416
1417         * config/sh/sh.md (movsi_i): Fix type attribute.
1418
1419 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1420
1421         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1422         (movsf_ie): Likewise.
1423
1424 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1425
1426         * config.gcc: Add sh4-300 to multilib.
1427         * config/sh/t-mlib-sh4-300: New file.
1428
1429 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1430
1431         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1432         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1433         fix_trunc<mode>di2.
1434         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1435         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1436         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1437         "fixuns_trunctddi2"): Whitespace fix.
1438
1439 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1440
1441         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1442         the definition of struct sh_args.
1443         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1444         CALL_COOKIE_INT_REG_GET): Likewise.
1445
1446 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1447
1448         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1449         transformations are applied successfully.
1450
1451 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1452
1453         * tree.c (tree_contains_struct): Permit 512 tree codes.
1454         * tree.h (tree_contains_struct): Ditto.
1455         (MAX_TREE_CODES): Ditto.
1456         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1457         SPARE member to store remaining padding bits.
1458
1459 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1460
1461         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1462         architecture.
1463
1464 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1465
1466         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1467         * configure: Regenerate.
1468
1469         * configure: Regenerate using the correct version of autoconf.
1470
1471 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1472
1473         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1474         pointer regs.
1475         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1476         regs to "__SP_L__" and "__SP_H__".
1477
1478 2007-03-27  Richard Guenther  <rguenther@suse.de>
1479
1480         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1481         computations with it with a HOST_WIDE_INT variable.
1482
1483 2007-03-26  Mike Stump  <mrs@apple.com>
1484
1485         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1486         objective-c-header, objective-c++-header and objc++-cpp-output
1487         support.
1488         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1489
1490 2007-03-26  Richard Henderson  <rth@redhat.com>
1491
1492         PR target/31361
1493         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1494         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1495         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1496         IX86_BUILTIN_PSRLQ128): New.
1497         (ix86_init_mmx_sse_builtins): Add them.
1498         (ix86_expand_builtin): Expand them.
1499         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1500         operand 2 be TImode.
1501         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1502         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1503         _mm_srli_epi64): Mark __B const.
1504         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1505         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1506         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1507         new two-vector shift builtins.
1508
1509 2007-03-26  Ian Lance Taylor  <iant@google.com>
1510
1511         PR tree-optimization/31345
1512         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1513         [+INF, +INF(OVF)] into VARYING.
1514
1515 2007-03-26  Zack Weinberg  <zackw@panix.com>
1516
1517         * gengtype-parse.c: New file.
1518         * gengtype-yacc.y: Delete.
1519         * gengtype-lex.l: Don't include gengtype-yacc.h.
1520         Define YY_DECL and yyterminate appropriately for recursive
1521         descent parser.  yylval is now a string out-parameter to yylex.
1522         (HWS, EOID): New shorthand.
1523         (IWORD): Add a couple more types.
1524         (yylex): Add a setup stanza.  Remove the complex rules for
1525         detecting GTY'ed types and typedefs; replace with simple
1526         keyword detectors.  Adjust everything for the changed
1527         definition of yylval.  Ignore all pp-directives, not just #define.
1528         (yyerror): Delete.
1529         (parse_file): Rename yybegin; do not call yyparse.
1530         (yyend): New.
1531         * gengtype.c (xasprintf): Export again.
1532         (this_file): New.  Use everywhere __FILE__ was being used.
1533         (get_lang_bitmap): Special case types defined in gengtype.c.
1534         (do_typedef, new_structure): Suppress definition of certain types.
1535         (new_structure): Improve diagnostics of duplicate definitions.
1536         Make sure location_s is associated with input.h.
1537         (nreverse_pairs, define_location_structures): New functions.
1538         (main): Improve tagging of kludge types.  Remove old kludges
1539         for input.h types; use define_location_structures.
1540         * gengtype.h: Update prototypes.  Define token codes here.
1541         * Makefile.in: Remove all references to gengtype-yacc.
1542         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1543         and gengtype.
1544         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1545         add GTY((skip)) to the field that's only conditionally there.
1546         * doc/install.texi: Document that Bison is no longer required
1547         unless building treelang.
1548
1549         * gengtype.c: Don't include gtyp-gen.h.
1550         (srcdir): Declare here.
1551         (base_files, lang_dir_names): Allocate dynamically.
1552         (gt_files, num_gt_files, num_lang_dirs): New globals.
1553         (measure_input_list, read_input_line, read_input_list)
1554         (set_lang_bitmap): New functions.
1555         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1556         simplify, relying on read_input_list to set up the bitmaps.
1557         (main): Arguments are no longer unused.  Check for correct number
1558         of command line arguments, set srcdir and srcdir_len, then call
1559         read_input_list, before doing anything else.  No need to worry
1560         about duplicates in main loop.
1561         * configure.ac: Simplify the calculation of all_gtfiles.
1562         Put language tags in there.  Don't set or substitute
1563         all_gtfiles_files_langs or all_gtfiles_files_frags.
1564         * Makefile.in: Revamp the way gengtype is invoked, now that it
1565         takes a file on its command line with a much simpler format.
1566         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1567         (GTFILES): Remove duplicates and C source files.
1568         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1569         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1570         * configure: Regenerate.
1571
1572         * gengtype.h: Remove all type definitions to gengtype.c; leave
1573         only definitions of options_p, type_p, and pair_p as opaque
1574         pointers.  Update prototypes.
1575         * gengtype.c: Many type definitions moved here from gengtype.h.
1576         Consolidate type definitions at the top of the file.
1577         (xvasprintf): Delete.
1578         (xasprintf): Make static.
1579         (create_nested_pointer_option): Add 'next' parameter.
1580         (create_field_all, create_field_at): New functions.
1581         (create_field): Now a thin wrapper around create_field_all.
1582         (create_optional_field): Rename create_optional_field_ and add
1583         line argument.  Original name is now a macro which supplies
1584         __LINE__.
1585         (oprintf): Use vsnprintf directly.
1586         (close_output_files): Use fatal rather than perror/exit.
1587         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1588         (main): Set progname.  Don't use exit.
1589         * gengtype-yacc.y (struct_fields): Use create_field_at.
1590         (option, optionseqopt): Delete.
1591         (optionseq): Consolidate productions from option here so we
1592         can use the first argument to create_option.
1593
1594         * gengtype-lex.l: Distinguish unions from structures in the
1595         token type.  Don't call find_structure; return the tag as a string.
1596         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1597         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1598         Reorganize typedef_struct production accordingly.
1599         Use create_nested_ptr_option.
1600         * gengtype.c (create_nested_ptr_option): New function.
1601         * gengtype.h: Declare it.
1602
1603         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1604         (string_type): Don't declare.
1605         (do_scalar_typedef): Declare.
1606         (create_scalar_type): Update prototype.
1607         * gengtype.c (string_type): Make static.
1608         (scalar_nonchar, scalar_char): New.
1609         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1610         (resolve_typedef): Use scalar_nonchar for error recovery.
1611         (create_scalar_type): Remove name_len field.  Return scalar_char
1612         or scalar_nonchar as appropriate.
1613         (adjust_field_type): Look at scalar_is_char boolean to decide whether
1614         to use string_type.
1615         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
1616         whenever possible.
1617         (main): Initialize scalar_char and scalar_nonchar before calling
1618         gen_rtx_next.
1619         * gengtype-lex.l: Adjust for removal of second argument to
1620         create_scalar_type.  Use yylval.s instead of yylval.t when
1621         returning SCALAR.
1622         * gengtype-yacc.y: Type of SCALAR is string.  Call
1623         create_scalar_type from type:SCALAR rule.  Adjust for removal of
1624         second argument to create_scalar_type.
1625
1626         * vec.h: Remove all #if IN_GENGTYPE blocks.
1627         Add comment saying that changes may require adjustments to gengtype.
1628         * gengtype.c: Don't include coretypes.h or tm.h.
1629         Add comment to inclusion of errors.h.
1630         (note_def_vec, note_def_vec_alloc): New functions.
1631         * gengtype.h: Declare new functions.
1632         * gengtype-lex.l: Don't include coretypes.h.
1633         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
1634         Delete.
1635         (update_lineno): Remove unnecessary prototype.
1636         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
1637         (VEC rule): Just return VEC_TOKEN.
1638         * gengtype-yacc.y (VEC_TOKEN): New token type.
1639         (type): Add a production for VEC(a,b).
1640         * Makefile.in: Update dependencies.
1641
1642         * gengtype-lex.l: Remove rules for parsing pointer-to-function
1643         typedefs that use the old PARAMS macro.
1644
1645         * gengtype-lex.l: Remove all rules and states relating to yacc
1646         input files.
1647         * gengtype-yacc.y: Similarly.
1648         * gengtype.c (note_yacc_type): Delete function.
1649         * gengtype.h: Update prototypes.
1650
1651 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
1652
1653         * tree-pretty-print.c (dump_generic_node): Report precision of
1654         unnamed integer types.
1655
1656 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
1657
1658         * ifcvt.c (noce_try_store_flag_constants): Don't check
1659         no_new_pseudos here.
1660         (noce_try_store_flag_constants): Don't check no_new_pseudos.
1661         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
1662         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
1663         noce_try_sign_mask): Likewise.
1664         (if_convert): Check no_new_pseudos here.
1665
1666         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
1667         Remove prototypes.
1668         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
1669         (noce_get_condition): Handle new then_else_reversed argument.
1670         (noce_init_if_info): Remove, fold into noce_find_if_block.
1671         (noce_process_if_block): Take a struct noce_if_info as the
1672         argument.  Don't set up one based on ce_if_info.  Update pointer
1673         references accordingly.
1674         (cond_move_process_if_block): Likewise.
1675         (process_if_block): Removed.
1676         (find_if_block): Removed.  Move functionality two new functions,
1677         noce_find_if_block and cond_exec_find_if_block.
1678         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
1679         blocks and the symmetric IF-ELSE-JOIN case.
1680         (cond_exec_find_if_block): Also new function mostly based on old
1681         find_if_block and process_if_block.
1682         (find_if_header): Replace find_if_block call with separately
1683         guarded calls to noce_find_if_block and cond_exec_find_if_block.
1684         (find_cond_trap): Update noce_get_condition call.
1685         (dead_or_predicable): Likewise.
1686
1687 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
1688
1689         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
1690         Remove.
1691         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
1692         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
1693         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
1694         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
1695         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
1696         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
1697         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
1698         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
1699         __builtin_ia32_psrad128 builtins.
1700
1701 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
1702
1703         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
1704         * config/i386/constraints.md
1705         (define_constraint "I"): Use IN_RANGE macro.
1706         (define_constraint "J"): Ditto.
1707         (define_constraint "K"): Ditto.
1708         (define_constraint "M"): Ditto.
1709         (define_constraint "N"): Ditto.
1710         (define_constraint "O"): Ditto.
1711         * config/i386/predicates.md
1712         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
1713         (define_predicate "const_0_to_3_operand"): Ditto.
1714         (define_predicate "const_0_to_7_operand"): Ditto.
1715         (define_predicate "const_0_to_15_operand"): Ditto.
1716         (define_predicate "const_0_to_63_operand"): Ditto.
1717         (define_predicate "const_0_to_255_operand"): Ditto.
1718         (define_predicate "const_1_to_31_operand"): Ditto.
1719         (define_predicate "const_2_to_3_operand"): Ditto.
1720         (define_predicate "const_4_to_7_operand"): Ditto.
1721
1722 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1723
1724         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
1725         in SImode for save_world.
1726         * config/rs6000/altivec.md (save_world, restore_world): Convert to
1727         LR hard reg.
1728
1729 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
1730
1731         PR tree-optimization/30784
1732         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
1733         BIT_FIELD_REF.
1734
1735 2007-03-25  Revital Eres  <eres@il.ibm.com>
1736
1737         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
1738           Fold movement_possibility function into it.
1739
1740 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1741
1742         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
1743         (load_macho_picbase_{si,di}): Convert to LR hard reg.
1744         (call_indirect_nonlocal_darwin64): Same.
1745         (call_nonlocal_darwin64): Same.
1746         (call_value_indirect_nonlocal_darwin64): Same.
1747         (call_value_nonlocal_darwin64): Same.
1748         (sibcall_nonlocal_darwin64): Same.
1749         (sibcall_value_nonlocal_darwin64): Same.
1750         (sibcall_symbolic_64): Same.
1751         (sibcall_value_symbolic_64): Same.
1752         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
1753         LR pseudo.
1754         (rs6000_emit_load_toc_table): Same.
1755         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
1756         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
1757         (mull_call): Same.
1758         (divss_call): Same.
1759         (divus_call): Same.
1760         (quoss_call): Same.
1761         (quous_call): Same.
1762         (load_toc_v4_pic_si): Same
1763         (load_toc_v4_PIC_1): Same.
1764         (load_toc_v4_PIC_1b): Same.
1765         (call_indirect_aix{32,64}): Same.
1766         (call_value_indirect_aix{32,64}): Same.
1767         (call): Same.
1768         (call_value): Same.
1769         (call_local{32,64}): Same.
1770         (call_value_local{32,64}): Same.
1771         (call_indirect_nonlocal_aix{32,64}): Same.
1772         (call_nonlocal_aix{32,64}): Same.
1773         (call_value_indirect_nonlocal_aix{32,64}): Same.
1774         (call_value_nonlocal_aix{32,64}): Same.
1775         (call_indirect_nonlocal_sysv<mode>): Same.
1776         (call_nonlocal_sysv<mode>): Same.
1777         (call_value_indirect_nonlocal_sysv<mode>): Same.
1778         (call_value_nonlocal_sysv<mode>): Same.
1779         (sibcall): Same.
1780         (sibcall_local{32,64}): Same.
1781         (sibcall_value_local{32,64}): Same.
1782         (sibcall_nonlocal_aix{32,64}): Same.
1783         (sibcall_value_nonlocal_aix{32,64}): Same.
1784         (sibcall_nonlocal_sysv<mode>): Same.
1785         (sibcall_value): Same.
1786         (sibcall_value_nonlocal_sysv<mode>): Same.
1787
1788 2007-03-24  Paul Brook  <paul@codesourcery.com>
1789
1790         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
1791         * config/arm/linux-eabi.h: Remove legacy syscall hack.
1792
1793 2007-03-24  Richard Henderson  <rth@redhat.com>
1794
1795         * config/ia64/constraints.md: New file.
1796         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
1797         satisfies_constraint_?.
1798         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
1799         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
1800         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
1801         ia64_output_mi_thunk): Likewise.
1802         (ia64_const_ok_for_letter_p): Remove.
1803         (ia64_const_double_ok_for_letter_p): Remove.
1804         (ia64_extra_constraint): Remove.
1805         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
1806         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
1807         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
1808         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
1809         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
1810         EXTRA_MEMORY_CONSTRAINT): Remove.
1811         * config/ia64/ia64.md: Include constriants.md.  Replace
1812         CONST_OK_FOR_? with satisfies_constraint_?.
1813
1814 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
1815             H.J. Lu  <hongjiu.lu@intel.com>
1816
1817         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
1818         DPD or BID name.
1819         (name macros): Use DPD_BID_NAME to convert names properly.
1820
1821         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
1822         decimal floating point format.
1823         (init_floating_libfuncs): Change decimal functions so that they
1824         have a "bid_" prefix if the decimal system uses the BID format,
1825         and "dpd_" prefix if the decimal system uses the DPD format.
1826         (init_interclass_conv_libfuncs): Ditto.
1827         (init_intraclass_conv_libfuncs): Ditto.
1828
1829         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1830         using the BID format.
1831
1832         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1833         whether we are using the BID decimal format.
1834         * configure: Regenerate.
1835
1836         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1837         the compiler has decimal floating point enabled.  Define
1838         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1839         instead of DPD.
1840
1841         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1842         using the BID format.
1843
1844         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1845         whether we are using the BID decimal format.
1846         * configure: Regenerate.
1847
1848         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1849         the compiler has decimal floating point enabled.  Define
1850         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1851         instead of DPD.
1852
1853         * doc/install.texi (--enable-decimal-float): Document BID and DPD
1854         options, and that it is enabled for i386/x86_64 systems.
1855
1856         * Makefile.in (enable_decimal_float): New.
1857         (DECNUMFMT): New.
1858         (DECNUMINC): Add  -I$(DECNUMFMT).
1859         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
1860         to $(DECNUMFMT) from $(DECNUM).
1861
1862         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
1863         Substitute enable_decimal_float.
1864         * configure: Regenerated.
1865
1866         PR other/30529
1867         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
1868         unsigned long.
1869
1870         * configure.ac: Enable decimal float for x86_64-*-linux*.
1871         * configure: Regenerated.
1872
1873         PR other/30530
1874         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
1875         decimal128ClearSign to flip and clear the sign bit in decimal128.
1876         (decimal_real_maxval): Set decimal128SetSign to set the sign
1877         bit in decimal128.
1878
1879 2007-03-23  Ian Lance Taylor  <iant@google.com>
1880
1881         * fold-const.c (fold_binary): Correct warning for X - c >= X.
1882
1883 2007-03-23  Ian Lance Taylor  <iant@google.com>
1884
1885         * tree-dump.c (dump_files): Correct comment.
1886
1887 2007-03-23  Ian Lance Taylor  <iant@google.com>
1888
1889         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
1890
1891 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
1892
1893         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
1894         in cfglayout mode.  Don't go into and out of cfglayout mode.
1895         Link the blocks in the order of the constructed traces.
1896         (rest_of_handle_tracer): Adjust call to tracer.
1897         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
1898         Don't go into cfglayout mode.
1899         (rtl_loop_done): Don't go out of cfglayout mode.
1900         * cfglayout.c (relink_block_chain): New function, split out from...
1901         (fixup_reorder_chain): ...here.  Remove redundant checking.
1902         (cfg_layout_finalize): Don't clear the header, footer, and aux
1903         fields here, move the code to do so to relink_block_chain.  Likewise
1904         for free_original_copy_tables.
1905         * rtl.h (tracer): Update prototype.
1906         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
1907         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
1908         mode.  Use relink_block_chain to serialize the CFG according to the
1909         new basic block order.  Move targetm.cannot_modify_jumps_p check from
1910         here...
1911         (gate_handle_reorder_blocks): ...to here.
1912         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
1913         from here...
1914         (gate_duplicate_computed_gotos): ...to here.
1915         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
1916         something always changes when going into and out of cfglayout mode.
1917         Perform an expensive cfg cleanup while going into cfglayout mode.
1918         Always update liveness information on HAVE_conditional_execution
1919         targets.  Reserialize the basic blocks and go out of cfglayout mode.
1920         * reg-stack.c: Include cfglayout.h.
1921         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
1922         the call to reorder_basic_blocks.
1923         * basic-block.h (reorder_basic_blocks): Update prototype.
1924         (relink_block_chain): New prototype.
1925         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
1926
1927 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
1928
1929         * config/mips/mips.md (type, hazard, *movdi_32bit,
1930         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
1931         *movhi_internal, *movqi_internal, *movsf_hardfloat,
1932         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
1933         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
1934         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
1935         applicable.
1936         (movcc): Change first xfer to multi.
1937         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
1938         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
1939         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
1940         config/mips/generic.md: Change reservations using "xfer" to use
1941         "mfc,mtc".
1942         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
1943         using match_operand.
1944         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
1945         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
1946         examining mode.
1947         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
1948
1949 2007-03-22  Richard Henderson  <rth@redhat.com>
1950
1951         * config/i386/i386.c: Remove unnecessary function declarations.
1952         Move targetm definition, and all related macros, to the end of
1953         the file.  Resort some functions to put definitions before uses.
1954         (ix86_attribute_table): Make static.  Move to end of file.
1955         (ix86_gimplify_va_arg): Make static.
1956
1957 2007-03-22  Richard Henderson  <rth@redhat.com>
1958
1959         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
1960         don't increase local_regparm with force_align_arg_pointer check.
1961         (ix86_function_sseregparm): Assert 32-bit.
1962         (type_has_variadic_args_p): New.
1963         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
1964         type_has_variadic_args_p.
1965         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
1966         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
1967         use memset instead.  Do maybe_vaarg check first; skip attribute
1968         tests if true; skip attribute tests for 64-bit.
1969         (construct_container): Remove TARGET_DEBUG_ARG.
1970         (function_arg_advance_32, function_arg_advance_64): Split out ...
1971         (function_arg_advance): ... from here.
1972         (function_arg_32, function_arg_64): Split out ...
1973         (function_arg): ... from here.
1974         (ix86_pass_by_reference): Tidy.
1975         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
1976         (function_value_32): New, from parts of ix86_function_value
1977         and ix86_value_regno.
1978         (function_value_64): New, from parts of ix86_function_value
1979         and ix86_libcall_value.
1980         (ix86_function_value_1): New.
1981         (ix86_function_value, ix86_libcall_value): Use it.
1982         (return_in_memory_32, return_in_memory_64): Split out ...
1983         (ix86_return_in_memory): ... from here.
1984         (ix86_struct_value_rtx): Skip for 64-bit.
1985         (ix86_libcall_value, ix86_value_regno): Remove.
1986         (setup_incoming_varargs_64): Split out ...
1987         (ix86_setup_incoming_varargs): ... from here.
1988         (ix86_va_start): Remove TARGET_DEBUG_ARG.
1989         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
1990         * config/i386/i386-protos.h (ix86_function_value): Remove.
1991         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
1992
1993 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1994
1995         PR other/23572
1996         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
1997         infinities not supported, otherwise emit warning if -Woverflow. On
1998         underflow, emit warning if -Woverflow.
1999         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
2000         and 0 otherwise.
2001         * real.h (real_from_string): Update declaration
2002
2003 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
2004             Richard Henderson  <rth@redhat.com>
2005
2006         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
2007         * calls.c (compute_argument_block_size, expand_call,
2008         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
2009         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
2010         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
2011         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
2012         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
2013         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
2014         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
2015         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
2016         Set to 1.
2017
2018 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
2019
2020         * c-incpath.c (add_sysroot_to_chain): New.
2021         (merge_include_chains): Add sysroot argument.  Call
2022         add_sysroot_to_chain if sysrooted.
2023         (register_include_chains): Update call to merge_include_chains.
2024         * doc/cppopts.texi: Document use of '=' in include directory
2025         arguments.
2026
2027 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
2028
2029         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
2030         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
2031         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
2032         insn pattern using X87MODEF12 mode macro.
2033
2034 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
2035
2036         * regmove.c (regmove_optimize): Use reg_mentioned_p
2037         instead of reg_overlap_mentioned_p for DST.
2038
2039 2007-03-21  Mike Stump  <mrs@apple.com>
2040
2041         * c.opt: Fixup for Objective-C/C++.
2042
2043 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
2044
2045         * explow.c (convert_memory_address): Fold memory reference when
2046         POINTERS_EXTEND_UNSIGNED < 0
2047
2048 2007-03-21  Richard Henderson  <rth@redhat.com>
2049
2050         PR target/31245
2051         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
2052         * config/i386/mmintrin.h (__m64): Likewise.
2053         * config/i386/xmmintrin.h (__m128): Likewise.
2054
2055 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2056
2057         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
2058         (VXWORKS_OS_CPP_BUILTINS): Define.
2059         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
2060         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
2061
2062 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2063
2064         * rtl.h (constant_pool_reference_p): Delete.
2065         (find_constant_src): Declare.
2066         * rtlanal.c (find_constant_src): New function.
2067         * simplify-rtx.c (constant_pool_reference_p): Delete.
2068         * config/i386/i386.md: Use find_constant_src instead of
2069         constant_pool_reference_p/avoid_constant_pool_reference pairs.
2070
2071 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
2072
2073         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
2074         * c-cppbuiltin.c (c_cpp_builtins): Define them.
2075
2076 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
2077
2078         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
2079         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
2080         (arm_elf_asm_constructor): Use it.
2081         (arm_elf_asm_destructor): New function.
2082
2083 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
2084
2085         * jump.c (mark_jump_label): Treat SEQUENCE specially.
2086
2087 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
2088
2089         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
2090
2091 2007-03-19  Andrew Haley  <aph@redhat.com>
2092
2093         PR tree-optimization/31264
2094         * tree-vrp.c (register_edge_assert_for_1): Don't look though
2095         VIEW_CONVERT_EXPRs.
2096
2097 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
2098
2099         PR rtl-optimization/30907
2100         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
2101         (fwprop_init): Always call loop_optimizer_initialize.
2102         (fwprop_done): Always call loop_optimizer_finalize.
2103         (fwprop): We always have loop info now.
2104         (gate_fwprop_addr): Remove.
2105         (pass_fwprop_addr): Use gate_fwprop as gate.
2106
2107         PR rtl-optimization/30841
2108         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
2109         df_chain_alloc): Call df_reorganize_refs unconditionally.
2110         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
2111         refs_organized to refs_organized_size.
2112         (df_ref_create_structure): Use refs_organized_size instead of
2113         bitmap_size if refs had been organized, and keep refs_organized_size
2114         up-to-date.
2115         * df.h (struct df_ref_info): Change refs_organized to
2116         refs_organized_size.
2117         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
2118         bitmap_size.
2119
2120 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2121
2122         * except.c (output_function_exception_table): Do not reference the
2123         EH personality routine for functions that do not require an
2124         exception table.
2125
2126 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2127
2128         PR c/30762
2129         * c-typeck.c (convert_for_assignment): Call comptypes for
2130         RECORD_TYPE or UNION_TYPE.
2131
2132         PR inline-asm/30505
2133         * reload1.c (reload): Do invalid ASM checking after
2134         cleanup_subreg_operands.
2135
2136 2007-03-19  Jeff Law  <law@redhat.com>
2137
2138         * tree-cfg.c (find_taken_edge): Tighten conditions for
2139         optimizing computed gotos.
2140
2141 2007-03-19  Michael Matz  <matz@suse.de>
2142
2143         * builtins.c (expand_builtin_sync_operation,
2144         expand_builtin_compare_and_swap,
2145         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2146         correctly.
2147
2148         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2149         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2150         for operand 3.
2151
2152 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2153
2154         * doc/tm.texi: Add brackets around the return type of
2155         TARGET_SECONDARY_RELOAD.
2156
2157 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2158         Richard Guenther  <rguenther@suse.de>
2159
2160         PR tree-optimization/31254
2161         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2162         Use handled_component_p () where appropriate.  Continue
2163         propagating into the rhs if we propagated into an INDIRECT_REF
2164         on the lhs.
2165
2166 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2167
2168         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2169         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2170         (xde, xdee): Mode attributes adjusted to support DFP modes.
2171         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2172         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2173         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2174         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2175         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2176         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2177         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2178         numbers.
2179         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2180         "movsf"): Insn definitions removed.
2181         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2182         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2183         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2184         definitions added.
2185         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2186         "reload_in<mode>", "reload_out<mode>"): Expander added.
2187         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2188         Expander removed.
2189
2190 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2191
2192         * config/s390/s390.md: Only non-functional changes.  Renamed
2193         FPR mode macro to BFP all over the file.
2194
2195 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2196
2197         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2198         (op_type attribute): RRF instruction type added.
2199         (fT0): New mode attribute.
2200         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2201         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2202         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2203         no secondary memory is needed when moving DFmode values between GPRs
2204         and FPRs.
2205
2206 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2207
2208         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2209         inverted and documentation adjusted.
2210         ("mhard-dfp", "msoft-dfp"): New options.
2211         * config/s390/s390.c (s390_handle_arch_option): New architecture
2212         switch: z9-ec.
2213         (override_options): Sanity checks for the new options added.
2214         * config.gcc: New architecture switch: z9-ec.
2215         * config/s390/s390.h (processor_flags): PF_DFP added.
2216         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2217         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2218         when the bit is NOT set so remove it from the defaults.
2219
2220 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2221
2222         * genemit.c (main): Print include statement for dfp.h.
2223         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2224         is not available.
2225
2226 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2227
2228         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2229
2230 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2231
2232         PR target/31022
2233         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2234         instead of PATTERN.
2235
2236 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2237
2238         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2239         attr_length_call, output_call, output_indirect_call): Cleanup
2240         formatting of targetm calls.
2241
2242 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2243
2244         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2245
2246 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2247
2248         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2249         reservation, bypass and anti-bypass descriptions for these instructions.
2250         Update move patterns.
2251         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2252         TYPE_FPSTORE.
2253
2254 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2255
2256         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2257         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2258         (get_initial_def_for_reduction): Likewise.
2259
2260 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2261
2262         Fix PR tree-optimization/29922
2263         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2264         (get_representative): Removed.
2265         (value_dies_in_block_x): Update for rvuse removal.
2266         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2267         (compute_antic_aux): Handle when PHI nodes appear in
2268         non-single-successors.
2269         (dump_bitmap_of_names): Removed.
2270         (compute_antic_safe): Renamed and removed rvuse calculation.
2271         Calculate only antic safe.
2272         (insert_into_preds_of_block): Remove assert.
2273         (execute_pre): Update for renamed functions.
2274         (defer_or_phi_translate_block): New function.
2275
2276 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2277
2278         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2279         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2280         typos.
2281         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2282         Follow spelling conventions.
2283
2284         * tree-data-ref.h: Remove the prototype for analyze_array.
2285
2286 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2287
2288         PR tree-optimization/31041
2289         * tree-vect-transform.c (get_initial_def_for_induction): Call
2290         force_gimple_operand.
2291
2292 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2293
2294         * ipa-type-escape.c (look_for_casts) : Revert code to use
2295         handled_component_p due to ada test a-numaux.adb.
2296
2297 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2298
2299         * final.c (final_scan_insn): Alter the condition of a
2300         conditional trap if we have nonstandard CC.
2301
2302 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2303
2304         * configure.ac: Remove excess quoting from asm line 0 test.
2305         * configure: Rebuilt.
2306
2307 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2308
2309         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2310         * c-common.c (convert_and_check): Move warning logic to...
2311         (warnings_for_convert_and_check): ...here. Define.
2312         * c-common.h (warnings_for_convert_and_check): Declare.
2313
2314 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2315
2316         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2317         (output_call): Likewise.
2318
2319 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2320
2321         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2322
2323 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2324
2325         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2326
2327 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2328
2329         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2330         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2331
2332 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2333
2334         PR tree-optimization/31183
2335         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2336         Use double_int instead of unsigned int for representing access_strides.
2337         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2338
2339 2007-03-16  Richard Guenther  <rguenther@suse.de>
2340
2341         PR tree-optimization/31146
2342         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2343         to allow recursion of forward_propagate_addr_expr.
2344         (forward_propagate_addr_into_variable_array_index): Likewise.
2345         (forward_propagate_addr_expr): Likewise.
2346         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2347         (forward_propagate_addr_expr_1): Recurse on simple copies
2348         instead of propagating into them.  Do so for useless conversions
2349         as well.
2350         (forward_propagate_addr_expr): Clean up unused statements after
2351         recursion.
2352
2353 2007-03-16  Richard Guenther  <rguenther@suse.de>
2354
2355         * builtins.c (expand_builtin_cexpi): Use the right argument
2356         for the expansion via cexp.
2357
2358 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2359
2360         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2361         * configure: Rebuilt.
2362
2363 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2364
2365         PR debug/29906
2366         * dwarf2out.c (force_type_die): Adjust comment.
2367         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2368
2369 2007-03-15  DJ Delorie  <dj@redhat.com>
2370
2371         * config/frv/predicates.md (minmax_operator): Don't check operands
2372         here.
2373
2374 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2375
2376         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2377         Update constant estimates of number of iterations.
2378         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2379         argument renamed to "realistic".
2380         (compute_estimated_nb_iterations): Removed.
2381         (record_niter_bound): New function.
2382         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2383         call record_nonwrapping_iv with upper = false.
2384         (infer_loop_bounds_from_signedness): Pass upper argument to
2385         record_nonwrapping_iv.
2386         (estimate_numbers_of_iterations_loop): Do not call
2387         compute_estimated_nb_iterations.  Record estimate based on profile
2388         information.  Initialize the constant estimates of number of
2389         iterations.
2390         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2391         estimates.
2392         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2393         number of iterations is too small.
2394         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2395         (EST_NOT_AVAILABLE): Removed.
2396         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2397         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2398         fields.
2399
2400 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2401
2402         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2403         Handle NE_EXPR guards.
2404
2405 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2406
2407         PR c++/24924
2408         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2409         Set also -pedantic-errors by default for the  preprocessor unless
2410         -fpermissive is given.
2411
2412 2007-03-15  Richard Guenther  <rguenther@suse.de>
2413
2414         PR middle-end/29719
2415         PR middle-end/31161
2416         * builtins.c (expand_builtin_cexpi): As a fallback if we
2417         don't have builtins for sincos or cexp create a function
2418         declaration for cexp and expand to a call to that.
2419         (expand_builtin_int_roundingfn): Always fall
2420         back to floor/ceil and its variants even if they may be
2421         not available.
2422
2423 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2424
2425         PR middle-end/31159
2426         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2427         jump tables, move the call to delete_dead_jumptables from here...
2428         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2429         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2430         don't allow merging of blocks that try_redirect_by_replacing_jump
2431         also does not handle when not optimizing.
2432
2433 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2434             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2435
2436         * config/i386/i386.md (x86_sahf_1): Correctly handle
2437         HAVE_AS_IX86_SAHF.
2438
2439 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2440
2441         PR target/31167
2442         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2443         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2444         from operand constraints and use "e" constraint instead.
2445         (*subti3_1, *subti3_1 splitter): Ditto.
2446         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2447         operand[1] predicate.
2448
2449 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2450
2451         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2452         arrays, multiply the access strides by the size of the sub-array.
2453         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2454
2455 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2456
2457         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2458         the configured assembler supports the sahf mnemonic.
2459         * configure: Regenerate.
2460         * config.in: Regenerate.
2461
2462         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2463         emit "sahf" or ".byte\t0x9e" as asm template.
2464
2465 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2466
2467         PR 31018
2468         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2469         option to replace hard coded TARGET_xxx in md file.
2470         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2471         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2472         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2473         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2474         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2475         (X86_TUNE_NOT_VECTORMODE): Ditto.
2476         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2477         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2478         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2479         (TUNE_SLOW_IMUL_IMM8): Ditto.
2480         (TUNE_MOVE_M1_VIA_OR): Ditto.
2481         (TUNE_NOT_UNPAIRABLE): Ditto.
2482         (TUNE_NOT_VECTORMODE): Ditto.
2483
2484         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2485         options.
2486
2487         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2488         tuning options instead of hard coded TARGET_xxx.
2489         (fix ssemode peephole2's): Ditto.
2490         (imul peephole2's): Ditto.
2491         (movsi_or): Ditto.
2492         (movdi_or_rex64): Ditto.
2493         (move peephole2): Ditto.
2494         (not peephole2's): Ditto.
2495
2496 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2497
2498         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2499         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2500         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2501         of empty body.
2502         * c-parser.c (c_parser_do_statement): Warn about empty body in
2503         do/while statement.
2504         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2505         * doc/invoke.texi (-Wempty-body): Update documentation.
2506
2507 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2508
2509         PR c/21438
2510         * c-common.h (warn_for_div_by_zero): Declare.
2511         * c-common.c (warn_for_div_by_zero): Define.
2512         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2513         warning.
2514
2515 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2516
2517         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2518         to PREFIX and STANDARD_PREFIX.
2519
2520 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2521             Phil Edwards  <phil@codesourcery.com>
2522
2523         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2524         (__gthread_once_t): Remove busy field for RTPs.
2525         (__GTHREAD_ONCE_INIT): Update accordingly.
2526
2527 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2528
2529         * doc/invoke.texi: Document VxWorks options.
2530
2531 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2532
2533         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2534
2535 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2536
2537         PR tree-optimization/30590
2538         * tree-nrv.c (tree_nrv): Check for the partial update of the
2539         return value.
2540
2541 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2542
2543         * flags.h (flag_random_seed): Remove declaration, in favor of...
2544         * toplev.h (get_random_seed, set_random_seed): ... these.
2545         * tree.c (get_file_function_name): Use the former.
2546         * opts.c (common_handle_option): Use the latter.
2547         * toplev.c
2548
2549 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2550
2551         PR middle-end/31127
2552         * cse.c (cse_find_path): Do not bail out if a basic block that
2553         we already visited now becomes part of a path that starts at a
2554         different basic block.  Just disallow this, to make sure we
2555         visit each basic block at most once.
2556
2557 2007-03-13  Jan Hubicka  <jh@suse.cz>
2558
2559         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2560         when profile esitmate is present, calls with very low frequency are
2561         cold.
2562
2563 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2564
2565         PR tree-optimization/30730
2566         PR tree-optimization/26900
2567         * tree-ssa-loop-niter.c: Include gmp.h.
2568         (bounds): New type.
2569         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2570         split_to_var_and_offset, determine_value_range,
2571         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2572         bound_difference, bounds_add, bounds_negate,
2573         number_of_iterations_ne_max, dump_affine_iv): New functions.
2574         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2575         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2576         difference of initial and final value of control iv to validate
2577         results.
2578         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2579         on the difference of the extremes of the control iv.  Add dumps.
2580         (expand_simple_operations): Handle phi nodes.
2581         (simplify_using_initial_conditions): Do not record used conditions.
2582         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2583         Do not set additional_info.
2584         (implies_nonnegative_p, implies_ge_p): Removed.
2585         (derive_constant_upper_bound): Do not use parameter `additional'.
2586         (record_estimate): Parameter `additional' removed.  Parameter
2587         `i_bound' added.  Do not call derive_constant_upper_bound.
2588         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2589         bound the number of iterations estimate.
2590         (estimate_numbers_of_iterations_loop): Pass the estimate from
2591         the number of iterations analysis to record_estimate.
2592         * tree.h (multiple_of_p): Declare.
2593         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2594         (scev_const_prop): Do not check expression_expensive_p.
2595         * fold-const.c (multiple_of_p): Exported.
2596         * double-int.c (double_int_mask): Exported.
2597         * double-int.h (double_int_mask): Declare.
2598         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2599         field.  Added max field.
2600
2601 2007-03-13  David Taylor  <taylor@candd.org>
2602
2603         PR driver/12448:
2604         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2605         default -MQ.
2606
2607 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2608
2609         PR target/31123
2610         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2611         two unamed patterns.
2612
2613 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
2614
2615         * config/i386/i386.opt (mcx16, msahf): New options.
2616         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
2617         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
2618
2619         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
2620         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
2621         Output -mcx16 and -msahf options when corresponding bit is set.
2622
2623         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
2624         and -msahf options.
2625
2626 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2627
2628         * configure.ac: Test for assembler tolerance to # 0 "".
2629         * configure, config.in: Rebuilt.
2630         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
2631
2632 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
2633
2634         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
2635
2636         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
2637         (handle_syscall): Handle direct system calls.
2638         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
2639
2640 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2641
2642         * doc/invoke.texi: Fix cpp.info cross-reference.
2643         * doc/passes.texi: Fix gcc.info cross-reference.
2644
2645 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
2646
2647         PR tree-optimization/30835
2648         * lambda-code.c (can_convert_to_perfect_nest): Check whether
2649         bb_for_stmt is not NULL before accessing it.
2650
2651 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
2652
2653         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
2654         some multilibs.
2655
2656 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2657
2658         PR 30635
2659         * doc/install.texi: Document --enable-stage1-languages
2660
2661 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
2662
2663         * tree-pass.h (pass_into_cfg_layout_mode,
2664         pass_outof_cfg_layout_mode): Declare.
2665         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
2666         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
2667         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
2668         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2669
2670 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2671
2672         * c-decl.c (warn_variable_length_array): New function.
2673         Refactored from grokdeclarator to handle warn_vla
2674         and handle unnamed array case.
2675         (grokdeclarator): Refactored VLA warning case.
2676         * c.opt (Wvla): New flag.
2677         * doc/invoke.texi (Wvla): New warning.
2678
2679 2007-03-12  Richard Henderson  <rth@redhat.com>
2680
2681         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
2682         (TARGET_SECTION_TYPE_FLAGS): New.
2683
2684 2007-03-12  Richard Henderson  <rth@redhat.com>
2685
2686         * config/darwin.c (machopic_reloc_rw_mask): New.
2687         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
2688         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
2689
2690 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2691
2692         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
2693         * cppdefault.h (cpp_PREFIX): Document.
2694         (cpp_PREFIX_len): Likewise.
2695         (cpp_EXEC_PREFIX): New variable.
2696         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
2697         * c-incpath.c (add_standard_paths): Correct logic for relocating
2698         paths within prefix.
2699
2700 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
2701
2702         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
2703         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
2704         mode macro.
2705         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
2706         fix_truncdfdi_sse using SSEMODEF mode macro.
2707         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
2708         fix_truncdfsi_sse using SSEMODEF mode macro.
2709         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
2710         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
2711
2712 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
2713
2714         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
2715         elfos.h to tm_file.
2716
2717 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
2718
2719         * tree.h : Add multiple_of_p declaration.
2720         * fold-const.c (multiple_of_p): Make multiple_of_p public.
2721         * ipa-type-escape.c (results_of_malloc): Redundant.
2722         (visited_stmts): New. Visited stmt for walk_use_def_chains.
2723         (cast_type): Extended with new members.
2724         (check_cast): Returns cast_type.
2725         (cast): New structure for data of walk_use_def_chains.
2726         (is_malloc_result, is_cast_from_non_pointer_1,
2727         is_cast_from_non_pointer,
2728         is_array_access_through_pointer_and_index): New functions.
2729         (look_for_casts): Returns cast types.
2730         (check_call): Returns void.
2731         (okay_pointer_operation): Use support of pointer plus index,
2732         pointer plus constant and allow all multiplications.
2733
2734 2007-03-11  Richard Guenther  <rguenther@suse.de>
2735
2736         PR tree-optimization/31115
2737         * tree-vrp.c (extract_range_from_binary_expr): Make sure
2738         the shift count is positive and non-anti-range for RSHIFT_EXPR.
2739         A shift count of zero is not special as with *_DIV_EXPR.
2740         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
2741         direction.
2742
2743 2007-03-11  Ian Lance Taylor  <iant@google.com>
2744
2745         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
2746         the *_DIV_EXPR codes correctly with overflow infinities.
2747
2748 2007-03-11  Ira Rosen  <irar@il.ibm.com>
2749
2750         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
2751         indicate success/failure of the analysis. Add negation to subtrahend
2752         in case of subtraction. Fail if both operands contain constants.
2753         (create_data_ref): Fail if analyze_offset fails.
2754
2755 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
2756
2757         * config/i386/i386.md (frndintxf2): Rename to ...
2758         (rintxf2): ... this. Remove expander having same name.
2759         (rintsf2, rintdf2): Implement using SSEMODEF macro.
2760         (roundsf2, rounddf2): Ditto.
2761         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
2762         (lround<mode>di2, lround<mode>si2): Ditto.
2763
2764 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
2765
2766         * lower-subreg.c: Include except.h.
2767         (decompose_multiword_subregs): Verify that the only control flow
2768         insns we can split are loads to multi-words pseudos.
2769         Handle breaking such blocks after splitting, instead of calling
2770         find_many_sub_basic_blocks.
2771
2772         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
2773         on the new basic block.  Add a lengthy comment explaining why we
2774         thought this was necessary.
2775         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
2776
2777 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2778
2779         PR c++/30924
2780         * tree.c (walk_type_fields): Recurse into the element type of
2781         ARRAY_TYPEs if there is a pointer set.
2782
2783 2007-03-10  Dirk Mueller  <dmueller@suse.de>
2784
2785         * c-common.c (warn_logical_operator): Fix condition.
2786
2787 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
2788
2789         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
2790         quotation mark.
2791         * config/darwin.c (machopic_select_section): Remove superfluous
2792         argument in call to categorize_decl_for_section.  Remove unused
2793         variable shlib.
2794
2795 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
2796
2797         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
2798         defined.
2799         * configure: Regenerate.
2800
2801 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
2802
2803         PR target/31101
2804         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
2805         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
2806         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
2807         Add LABEL_NUSES to emitted label.
2808         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
2809         branch probability value to emitted jump insn.
2810         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
2811         Do not check life information and do not re-arrange input operands
2812         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
2813
2814 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2815
2816         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
2817         the change of decode_asm_operands.
2818
2819 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2820
2821         * mode-switching.c (create_pre_exit): Skip blockage insn.
2822
2823 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
2824
2825         * tree-pass.h (TODO_update_smt_usage): Remove.
2826         Update all users.
2827         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
2828         argument SOME.
2829         Update all users.
2830
2831 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2832
2833         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
2834         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
2835         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
2836         SOM target.
2837
2838 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
2839
2840         * gcc.c: Document %{, in big comment at top.
2841         (input_suffix_matches): Remove special handling for .s and
2842         .S.
2843         (input_spec_matches): New.
2844         (handle_braces): Handle %{,.
2845         (validate_switches): ',' indicates a value which is not a switch.
2846         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
2847         to detect assembler input.
2848         * config/i386/sol2.h (CPP_SPEC): Likewise.
2849         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
2850         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
2851         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
2852         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
2853         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
2854         -m64 causes deployment target to default to 10.5.
2855         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2856
2857 2007-03-09  Richard Henderson  <rth@redhat.com>
2858
2859         PR target/26090
2860         * target.h (targetm.asm.out.reloc_rw_mask): New.
2861         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
2862         (TARGET_ASM_OUT): Use it.
2863         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
2864         * varasm.c (categorize_decl_for_section): Remove shlib argument;
2865         use the new reloc_rw_mask target hook instead.
2866         (default_section_type_flags_1): Merge into...
2867         (default_section_type_flags): ... here.
2868         (decl_readonly_section_1): Merge into...
2869         (decl_readonly_section): ... here.
2870         (default_elf_select_section_1): Merge into...
2871         (default_elf_select_section): ... here.
2872         (default_unique_section_1): Merge into...
2873         (default_unique_section): ... here.
2874         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
2875         (default_select_rtx_section): Use it.
2876         (default_elf_select_rtx_section): Likewise.
2877         * output.h: Update to match.
2878         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
2879         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
2880         (TARGET_ASM_RELOC_RW_MASK): New.
2881         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
2882         to categorize_decl_for_section.
2883         (x86_64_elf_unique_section): Likewise.
2884         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
2885         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
2886         (TARGET_ASM_RELOC_RW_MASK): New.
2887         * config/ia64/ia64.c (ia64_rwreloc_select_section,
2888         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
2889         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
2890         (TARGET_RWRELOC): Remove.
2891         (ia64_section_type_flags): Adjust call to default_section_type_flags.
2892         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2893         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
2894         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
2895         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
2896         (rs6000_xcoff_select_section): Use decl_readonly_section.
2897         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
2898         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2899         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
2900         (TARGET_SECTION_TYPE_FLAGS): Remove.
2901         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
2902
2903 2007-03-09  Roger Sayle  <roger@eyesopen.com>
2904
2905         * fold-const.c (fold_comparison): Remove compile-time evaluation of
2906         complex constant equality/inequality comparisons for here.
2907         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
2908         known at compile-time or can be simplified to a scalar comparison.
2909         (fold_relational_const): Move compile-time evaluation of complex
2910         constant equality/inequality comparisons to here.
2911
2912 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2913
2914         PR rtl-optimization/30643
2915         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
2916         dest_addr_elt.
2917         (fold_rtx): Recurse, like before 2006-11-03.
2918
2919 2007-03-09  DJ Delorie  <dj@redhat.com>
2920
2921         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
2922         m32c-pragma.o.
2923
2924 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
2925
2926         PR tree-optimization/30375
2927         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
2928         LHS of statements is not the same.
2929         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
2930
2931 2007-03-09  Chao-ying Fu  <fu@mips.com>
2932
2933         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
2934         REV 2.
2935         * doc/invoke.texi (-mdspr2): Document new option.
2936         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
2937         New unspec for DSP REV 2.
2938         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
2939         these instructions are extended in DSP REV 2.
2940         (mips-dspr2.md): Include.
2941         * config/mips/mips.opt (mdspr2): New option.
2942         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
2943         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
2944         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
2945         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
2946         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
2947         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
2948         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
2949         and 2 builtins.
2950         (bdesc_map): Add one field of unsupported_target_flags.
2951         (bdesc_arrays):  Update entries to have extra fields.  Add
2952         dsp_32only_bdesc.
2953         (mips_init_builtins): Initialize new function types.
2954         Check unsupported_target_fileds to filter out builtins.
2955         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
2956         TARGET_DSPR2.
2957         (ASM_SPEC): Pass mdspr2 to the assembler.
2958         * config/mips/mips-dspr2.md: New file.
2959
2960 2007-03-09  Sa Liu  <saliu@de.ibm.com>
2961
2962         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
2963
2964 2007-03-09  Ian Lance Taylor  <iant@google.com>
2965
2966         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
2967         argument) like -Wstrict-overflow=2.
2968         * doc/invoke.texi (Warning Options): Update documentation.
2969
2970 2007-03-09  Dirk Mueller  <dmueller@suse.de>
2971
2972         PR c++/17946
2973         * doc/invoke.texi (-Wlogical-op): Document.
2974         * common.opt (-Wlogical-op): New.
2975         * c-common.h (warn_logical_operator): Declare.
2976         * c-common.c (warn_logical_operator): Define.
2977         * c-typeck.c (parser_build_binary_op): Call
2978         warn_logical_operator.
2979
2980 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2981
2982         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
2983         * final.c (final_scan_insn): Test for non-"" file name.
2984
2985 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
2986
2987         * doc/loop.texi: Document the Omega linear constraints solver.
2988         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
2989         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
2990         omega-hash-table-size, omega-max-keys, and
2991         omega-eliminate-redundant-constraints.
2992         * tree-pass.h (pass_check_data_deps): Declared.
2993         * omega.c: New.
2994         * omega.h: New.
2995         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
2996         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
2997         pass_check_data_deps): New.
2998         * tree-data-ref.c (init_data_ref): Remove declaration.
2999         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
3000         (analyze_array): Renamed init_array_ref, move up initializations.
3001         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
3002         Removed arguments that are set to NULL.
3003         (analyze_indirect_ref): Correct indentation, correct call to
3004         init_pointer_ref.
3005         (object_analysis): Call init_array_ref instead of analyze_array.
3006         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
3007         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
3008         of DR_ACCESS_FNS_ADDR.
3009         (init_omega_eq_with_af, omega_extract_distance_vectors,
3010         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
3011         ddr_consistent_p): New.
3012         (compute_affine_dependence): Check consistency of ddrs when
3013         flag_check_data_deps is passed.
3014         (analyze_all_data_dependences): Uncomment.
3015         (tree_check_data_deps): New.
3016         * tree-data-ref.h: Include omega.h.
3017         (DR_ACCESS_FNS_ADDR): Removed.
3018         (data_dependence_relation): Add inner_loop.
3019         (DDR_INNER_LOOP): New.
3020         * common.opt (fcheck-data-deps): New.
3021         * tree-flow.h (tree_check_data_deps): Declare.
3022         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
3023         (OBJS-common): Depend on omega.o.
3024         (omega.o): Define.
3025         * passes.c (pass_check_data_deps): Scheduled.
3026         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
3027         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
3028         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
3029         PARAM_VECT_MAX_VERSION_CHECKS,
3030         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
3031
3032 2007-03-09  Richard Guenther  <rguenther@suse.de>
3033
3034         PR tree-optimization/30904
3035         PR middle-end/31058
3036         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
3037         the same way as *_DIV_EXPR.
3038
3039 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3040
3041         * recog.c (decode_asm_operands): No mixed declarations and code.
3042
3043 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
3044
3045         * rtl.def (ASM_INPUT): Add location.
3046         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
3047         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
3048         (decode_asm_operands): Add loc operand.
3049         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
3050         * stmt.c (expand_asm): Rename to...
3051         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
3052         gen_rtx_ASM_INPUT_loc.
3053         (expand_asm_expr): Adjust.
3054         * recog.c (decode_asm_operands): Add loc operand.
3055         (check_asm_operands, extract_insn): Adjust.
3056         * reload1.c (maybe_fix_stack_asms): Likewise.
3057         * final.c (asm_insn_count): Likewise.
3058         (final_scan_insn): Output # line before and after asm.
3059
3060 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
3061
3062         * tree-ssa-structalias.c (variable_info): Remove
3063         finished_solution.
3064         (new_var_info): Ditto.
3065         (shared_bitmap_info_t): New structure.
3066         (shared_bitmap_table): New variable.
3067         (shared_bitmap_hash): New function.
3068         (shared_bitmap_eq): Ditto
3069         (shared_bitmap_lookup): Ditto.
3070         (shared_bitmap_add): Ditto.
3071         (merge_smts_into): Change to take bitmap directly.
3072         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
3073         (init_alias_vars): Init shared bitmap hashtable.
3074         (delete_points_to_sets): Delete shared bitmap hashtable.
3075         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
3076         is_aliased removal as a change that was still necessary was
3077         deleted.
3078
3079 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
3080
3081         * config/i386/i386.h (override_options): Conditionally disable
3082         x86_sahf for 64bit targets only.
3083
3084 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3085
3086         PR C/31072
3087         * c-decl.c (merge_decls): Don't call make_var_volatile.
3088         * varasm.c (make_var_volatile): Remove.
3089         * output.h (make_var_volatile): Remove.
3090
3091 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
3092
3093         PR tree-optimization/31085
3094         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
3095
3096 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3097
3098         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
3099         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
3100         ATTR_CONST_NOTHROW_LIST.
3101
3102         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
3103         FIX_TRUNC_EXPR.
3104
3105 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
3106
3107         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
3108
3109 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
3110
3111         PR 31013
3112         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
3113         is declared.
3114         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
3115         passed, use shared libgcc.
3116
3117 2007-03-08  Roger Sayle  <roger@eyesopen.com>
3118
3119         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3120         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3121         (honor_protect_cleanup_actions, lower_try_finally_switch):
3122         Likewise.
3123         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3124         ifc_temp_var): Likewise.
3125         * tree-inline.c (setup_one_parameter): Likewise.
3126         * tree-mudflap.c (mf_decl_cache_locals,
3127         mf_build_check_statement_for): Likewise.
3128         * tree-nested.c (init_tmp_var, save_tmp_var,
3129         finalize_nesting_tree_1): Likewise.
3130         * tree-outof-ssa.c (insert_copy_on_edge,
3131         insert_backedge_copies): Likewise.
3132         * tree-profile.c (tree_gen_edge_profiler,
3133         tree_gen_ic_profiler): Likewise.
3134         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3135         * tree-sra.c (sra_build_assignment): Likewise.
3136         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3137         * tree-ssa-math-opts.c (insert_reciprocals,
3138         execute_cse_sincos_1): Likewise.
3139         * tree-tailcall.c (adjust_accumulator_values,
3140         adjust_return_value): Likewise.
3141         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3142         * tree-vect-transform.c (vect_create_data_ref_ptr,
3143         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3144         vect_create_epilog_for_reduction, vectorizable_reduction,
3145         vectorizable_call, vectorizable_conversion,
3146         vectorizable_assignment, vectorizable_operation,
3147         vectorizable_type_demotion, vect_gen_widened_results_half,
3148         vect_permute_store_chain, vectorizable_store,
3149         vect_setup_realignment, vect_permute_load_chain,
3150         vectorizable_load, vectorizable_condition,
3151         vect_create_cond_for_align_checks): Likewise.
3152         * tree-vrp.c (build_assert_expr_for): Likewise.
3153
3154 2007-03-08  Ian Lance Taylor  <iant@google.com>
3155
3156         * tree-vrp.c: Include "intl.h".
3157         (usable_range_p): New static function.
3158         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3159         overflowed values, juts set *strict_overflow_p.
3160         (compare_values): Only return -2 if one of the operands is not a
3161         constant.
3162         (compare_ranges): Call usable_range_p.
3163         (compare_range_with_value): Likewise.
3164         (vrp_evaluate_conditional_warnv): Rename from
3165         vrp_evaluate_conditional.  Make static.  Change all callers.
3166         (vrp_evaluate_conditional): New function.
3167         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3168         on signed overflow.
3169         (simplify_abs_using_ranges): Likewise.
3170         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3171         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3172         within_stmt parameter.
3173         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3174         vrp_evaluate_conditional.
3175         * tree-ssa-threadedge.c
3176         (record_temporary_equivalences_from_stmts_at_dest): Change
3177         simplify parameter to take a second tree parameter.
3178         (simplify_control_stmt_condition): Likewise.
3179         (thread_across_edge): Likewise.
3180         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3181         (thread_across_edge): Likewise.
3182         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
3183
3184 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3185
3186         * config/i386/i386.h (TARGET_SAHF): New define.
3187         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3188         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3189         (x86_sahf): New global variable.
3190         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3191         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3192         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3193         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3194         for 64-bit.
3195         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3196         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3197         when expanding fcomi/sahf based tests.
3198         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3199         expanding sahf based alternative. Emit sahf based sequence when
3200         optimizing for code size.
3201         * config/i386/i386.md (x86_sahf_1): Do not disable for
3202         TARGET_64BIT, enable for TARGET_SAHF.
3203
3204 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3205
3206         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3207         spurious whitespace from error message.
3208
3209 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3210
3211         PR c++/30852
3212         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3213
3214 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3215
3216         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3217         bitfields.
3218         * tree-sra.c (instantiate_element): Propagate disabled warnings
3219         from the element itself to the created variable.
3220
3221 2007-03-07  Richard Henderson  <rth@redhat.com>
3222
3223         PR target/30848
3224         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3225         silently fix up the stack in the case of a missing register.
3226
3227 2007-03-07  Paul Brook  <paul@codesourcery.com>
3228
3229         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3230
3231 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3232
3233         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3234         New.
3235         (phase1_vrs): Use them.
3236         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3237         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3238         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3239         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3240         __gnu_Unwind_Restore_WMMXC if required.
3241         (_Unwind_VRS_Pop): Implement iWMMXt support.
3242         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3243         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3244         gnu_Unwind_Save_WMMXC): Define.
3245
3246 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3247
3248         * config/vxworks.h (vxworks_override_options): Declare.
3249         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3250         * config/vxworks.c: Include target.h and toplev.h.
3251         (vxworks_override_options): New function.
3252         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3253
3254 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3255
3256         * config/s390/s390.c (override_options): Don't emit an error when
3257         -mstack-size is used without providing -mstack-guard.
3258         (s390_emit_prologue): Choose stack_guard value automatically if not
3259         provided via command line.
3260         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3261
3262 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3263
3264         * config/i386/i386.c (output_set_got): Add a GOT initialization
3265         sequence for VxWorks PIC.
3266         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3267         around labels as well as symbols.  Use gotoff_operand instead
3268         of local_symbolic_operand.
3269         (legitimize_pic_address): Use gotoff_operand instead of
3270         local_symbolic_operand.  Use @GOT accesses for labels as
3271         well as symbols.
3272         (ix86_output_addr_diff_elt): Use PC-relative rather than
3273         GP-relative offsets for VxWorks PIC.
3274         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3275         no_new_pseudos.  Check whether the returned register is op0.
3276         * config/i386/i386.md (tablejump): Use PC-relative rather than
3277         GP-relative offsets for VxWorks PIC.
3278         * config/i386/predicates.md (gotoff_operand): New predicate.
3279
3280 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3281
3282         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3283         before defining.
3284         * config/vxworks-dummy.h: New file.
3285         * config/i386/i386.h: Include it.
3286
3287 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3288
3289         * dwarf2out.c (is_inlined_entry_point): New
3290         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3291         DW_AT_ranges if the first subblock is the entry point.
3292
3293 2007-03-06  David Daney  <ddaney@avtrex.com>
3294
3295         * doc/install.texi (mips-*-*): Change recommended binutils
3296         version.
3297
3298 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3299
3300         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3301         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3302         devices.
3303         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3304         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3305
3306 2007-03-06  Jan Hubicka  <jh@suse.cz>
3307
3308         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3309         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3310         are hot.
3311         (probably_cold_bb_p): Cold functions are cold.
3312         (probably_never_executed_bb_p): Cold functions are cold.
3313         (tree_bb_level_predictions): Predict calls to cold functions as not
3314         taken.
3315         (compute_function_frequency): Check hot/cold attributes.
3316         * function.h (function_frequency): Update comments.
3317         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3318         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3319         (c_common_att): Add cold and hot.
3320
3321         * doc/extend.texi (hot,cold attributes): Document.
3322
3323 2007-03-06  Andrew Haley  <aph@redhat.com>
3324
3325         * function.c (expand_function_end): Move blockage to just after we
3326         emit the label for the naked return from the function.
3327
3328 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3329
3330         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3331         before redefining.
3332
3333 2007-03-06  Jan Hubicka  <jh@suse.cz>
3334
3335         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3336         loaded for constant large models.  Non-large 64bit PIC can do.
3337         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3338         * cmodel.h: Add LARGE PIC.
3339         * i386.md (UNSPEC_PLTOFF): New.
3340         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3341         needed.
3342         (*call_1_rex64): Disable for large models.
3343         (*call_1_rex64_large): New.
3344         (*call_value_1_rex64): Disable for large models.
3345         (*call_value_1_rex64_large): New.
3346         (set_rip_rex4): New.
3347         (set_got_offset_rex64): New.
3348         * predicates.md (constant_call_address_operand): For large model
3349         constant calls are not possible.
3350         * i386-protos.h (construct_plt_address): Declare.
3351         * i386.c (override_options): Accept large models.
3352         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3353         (legitimate_constant_p): Add new UNSPECs.
3354         (legitimate_pic_operand_p): Likewise.
3355         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3356         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3357         non-large model.
3358         (output_pic_addr_const): Add PLTOFF.
3359         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3360         (ix86_expand_move): Legitimize pic address when in PIC mode.
3361         (construct_plt_address): New function.
3362         (ix86_expand_call): Offload the address to register and use GOT pointer
3363         for large model.
3364         * invoke.texi (mcmodel=large): Update documentation.
3365
3366 2007-03-06  Richard Henderson  <rth@redhat.com>
3367
3368         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3369         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3370         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3371         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3372         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3373         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3374         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3375         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3376         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3377         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3378         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3379         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3380         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3381         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3382         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3383         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3384         x86_schedule, x86_use_bt, x86_pad_returns,
3385         x86_use_xchgb): Merge into ...
3386         (ix86_tune_features): ... here.  New array.
3387         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3388         x86_bswap): Merge into ...
3389         (ix86_arch_features): ... here.  New array.
3390         (x86_3dnow_a): Remove.
3391         (x86_accumulate_outgoing_args): Make static.
3392         (x86_arch_always_fancy_math_387): Make static.
3393         (ix86_tune_mask, ix86_arch_mask): Move ...
3394         (override_options): ... to local variables here.  Apply the
3395         appropriate mask to each element of ix86_arch_features and
3396         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3397         as were done in the old macros.
3398         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3399         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3400         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3401         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3402         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3403         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3404         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3405         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3406         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3407         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3408         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3409         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3410         x86_accumulate_outgoing_args, x86_prologue_using_move,
3411         x86_epilogue_using_move, x86_decompose_lea,
3412         x86_arch_always_fancy_math_387, x86_shift1,
3413         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3414         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3415         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3416         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3417         x86_use_incdec, x86_pad_returns, x86_bswap,
3418         x86_partial_flag_reg_stall): Remove.
3419         (enum ix86_tune_indices): New.
3420         (ix86_tune_features): New.
3421         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3422         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3423         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3424         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3425         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3426         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3427         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3428         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3429         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3430         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3431         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3432         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3433         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3434         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3435         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3436         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3437         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3438         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3439         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3440         TARGET_EXT_80387_CONSTANTS): Use it.
3441         (enum ix86_arch_indices): New.
3442         (ix86_arch_features): New.
3443         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3444         TARGET_BSWAP): Use it.
3445         (ix86_tune_mask, ix86_arch_mask): Remove.
3446
3447 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3448
3449         PR bootstrap/31020
3450         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3451         Define using $${sysroot_headers_suffix}.
3452         * configure: Regenerate.
3453         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3454         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3455         defined.
3456         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3457         * gcc.c (print_sysroot_headers_suffix): New.
3458         (option_map): Include --print-sysroot-headers-suffix.
3459         (display_help): Mention -print-sysroot-headers-suffix.
3460         (process_command): Handle -print-sysroot-headers-suffix.
3461         (do_spec_1): Append multilib directory to include-fixed path if
3462         sysroot suffixes in use.
3463         (main): Handle -print-sysroot-headers-suffix.
3464         * Makefile.in (start.encap): Don't depend on xlimits.h
3465         (xlimits.h): Remove.
3466         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3467         limits.h for each multilib in fixinc_list.
3468         (fixinc_list, s-fixinc_list): New.
3469         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3470         generate them for each multilib in fixinc_list.
3471         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3472         multilib in fixinc_list.
3473         (mostlyclean): Don't remove xlimits.h.
3474         (clean): Remove include-fixed.
3475         (real-install-headers-tar, real-install-headers-cpio,
3476         real-install-headers-cp): Don't copy include, only include-fixed.
3477         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3478         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3479         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3480         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3481
3482 2007-03-06  Jan Hubicka  <jh@suse.cz>
3483
3484         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3485         NANs easilly.
3486
3487 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3488
3489         * configure.ac: Allow tm_file to contain build-directory files.
3490         * configure: Regenerate.
3491         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3492         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3493         * config/m68k/print-sysroot-suffix.sh: New file.
3494
3495 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3496
3497         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3498         of pic_offset_table_rtx if reload_completed.
3499         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3500         PIC_OFFSET_TABLE_REGNUM.
3501         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3502         return true.
3503         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3504         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3505
3506 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3507
3508         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3509         functions that call eh_return.
3510
3511 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3512
3513         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3514         functions that need a constant pool.
3515
3516 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3517
3518         PR target/28181
3519         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3520         (m68k_preferred_reload_class): Likewise.
3521         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3522         (SECONDARY_RELOAD_CLASS): Define.
3523         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3524         (LIMIT_RELOAD_CLASS): Delete.
3525         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3526         registers from storing bytes.
3527         (m68k_secondary_reload_class): New function.
3528         (m68k_preferred_reload_class): Likewise.
3529
3530 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3531
3532         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
3533         leaf functions.
3534         (m68k_expand_prologue): Likewise.
3535
3536 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3537
3538         * config/m68k/m68k-protos.h (output_sibcall): Declare.
3539         (mips_expand_epilogue): Add a bool parameter.
3540         (m68k_legitimize_sibcall_address): Declare.
3541         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3542         (m68k_expand_epilogue): Add a parameter to select between sibling
3543         and normal epilogues.  Only generate a return for the latter.
3544         (m68k_ok_for_sibcall_p): New function.
3545         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
3546         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
3547         (sibcall_value, *sibcall_value): Likewise.
3548         (*call, *call_value): Require !SIBLING_CALL_P.
3549         (epilogue): Update call to m68k_expand_epilogue.
3550         (sibcall_epilogue): New pattern.
3551         * config/m68k/predicates.md (const_call_operand): Say that this
3552         predicate applies to sibling calls too.
3553         (sibcall_operand): New predicate.
3554
3555 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3556
3557         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
3558         alternatives as movsi_cf.
3559         (movsf_cf_hard): Add commentary.
3560
3561 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
3562             Richard Sandiford  <richard@codesourcery.com>
3563
3564         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
3565         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
3566         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
3567         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
3568         as being live on exit from an interrupt function.
3569         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
3570         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
3571         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
3572         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
3573         (m68k_interrupt_function_p): Globalize.
3574         (m68k_compute_frame_layout): Remove reverse mask code.
3575         (m68k_emit_movem, m68k_set_frame_related): New functions.
3576         (m68k_output_function_prologue): Delete in favor of...
3577         (m68k_expand_prologue): ...this new function.
3578         (m68k_output_function_epilogue): Delete in favor of...
3579         (m68k_expand_epilogue): ...this new function.
3580         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
3581         functions.
3582         (print_operand): Handle %?.
3583         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
3584         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
3585         (prologue, epilogue): New patterns.
3586         (return): Turn into a define_expand.
3587         (*return): New pattern, derived from old "return" pattern.  Use rte
3588         rather than rts for interrupt functions.  Only use rtd if the pop
3589         count is nonzero.
3590         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
3591         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
3592         (link, *link, unlink, *unlink, load_got): Likewise.
3593
3594 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3595
3596         PR target/23482
3597         PR target/17114
3598         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
3599         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
3600         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
3601         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
3602         and m68k_matches_u_p.
3603         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
3604         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
3605         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
3606         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
3607         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
3608         (REG_STRICT_P): New macro.
3609         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
3610         PCREL_GENERAL_OPERAND_OK.
3611         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
3612         m68k_legitimate_base_reg_p.
3613         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
3614         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
3615         (PIC_CASE_VECTOR_ADDRESS): Update comment.
3616         * config/m68k/m68k.c (m68k_address): New structure.
3617         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
3618         (m68k_decompose_index, m68k_legitimate_constant_address_p)
3619         (m68k_jump_table_ref_p, m68k_decompose_address)
3620         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
3621         (m68k_matches_u_p): New functions.
3622         (print_operand_address): Rewrite to use m68k_decompose_index.
3623
3624 2007-03-05  David Taylor  <dtaylor@emc.com>
3625
3626         * gcc.c: Correct copyright date in --version output.
3627
3628 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3629
3630         * pa.md: In unamed move patterns, disparge copies between general
3631         and floating point registers using '?' modifier.  Don't include 'f'
3632         constraint for register preferences in DImode, SImode, HImode and
3633         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
3634         Remove constraints for copies between general and floating registers
3635         in soft-float DFmode pattern.
3636         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
3637         floating register.
3638         (movsf): Likewise.
3639
3640 2007-03-05  Mike Stump  <mrs@apple.com>
3641
3642         * c-common.c (targetcm): Add.
3643         * c-opts.c (c_common_handle_option): Handle language specific
3644         target options.
3645         * opts.c (handle_option): Verify language for target options, if
3646         any are given.
3647         * opth-gen.awk: Add CL_LANG_ALL.
3648         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
3649         (TARGETCM_INITIALIZER): Add.
3650         * target.h (struct gcc_targetcm): Add.
3651         (targetcm): Add.
3652         * targhooks.c (default_handle_c_option): Add.
3653         * targhooks.h (default_handle_c_option): Add.
3654         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
3655
3656         * config/darwin.opt (iframework): Add.
3657         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
3658         * config/darwin-c.c (handle_c_option): Add.
3659         (TARGET_HANDLE_C_OPTION): Add.
3660         (targetcm): Add.
3661         * doc/invoke.texi (Darwin Options): Add -iframework.
3662
3663 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3664
3665         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
3666         conversion.
3667
3668 2007-03-05  Ian Lance Taylor  <iant@google.com>
3669
3670         * c.opt (fgnu89-inline): New option.
3671         * c-opts.c (c_common_post_options): Set default value for
3672         flag_gnu89_inline.
3673         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
3674         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
3675         inline functions.
3676         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
3677         (grokdeclarator, start_function): Likewise.
3678         * c-cppbuiltin.c (c_cpp_builtins): Define either
3679         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
3680         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
3681         (C Dialect Options): Document -fgnu89-inline.
3682         * doc/extend.texi (Function Attributes): Explain what the
3683         gnu_inline attribute does.
3684         * doc/cpp.texi (Common Predefined Macros): Document
3685         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
3686
3687 2007-03-05  Ian Lance Taylor  <iant@google.com>
3688
3689         PR tree-optimization/31034
3690         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
3691         half-range if the other side is an overflow infinity.
3692
3693 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
3694
3695         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
3696         (bfin*-linux-uclibc*): New configuration.
3697         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
3698         defining.
3699         * config/bfin/linux.h: New file.
3700         * config/bfin/libgcc-bfin.ver: New file.
3701         * config/bfin/t-bfin-uclinux: New file.
3702         * config/bfin/t-bfin-linux: New file.
3703         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
3704         (TARGET_OS_CPP_BUILTINS): New macro.
3705
3706 2007-03-05  Richard Guenther  <rguenther@suse.de>
3707
3708         * fold-const.c (fold_binary): Remove duplicate folding
3709         of comparison of non-null ADDR_EXPR against null.
3710
3711 2007-03-05  Richard Guenther  <rguenther@suse.de>
3712             Dorit Nuzman  <dorit@il.ibm.com>
3713
3714         PR tree-optimization/26420
3715         * tree-vectorizer.c (vectorize_loops): Bail out early if there
3716         are no loops in the function.  Only print the number of
3717         vectorized loops if it is greater than zero or we are supposed
3718         to print information about unvectorized loops.
3719
3720 2007-03-05  Revital Eres  <eres@il.ibm.com>
3721
3722         * gcc.dg/var-expand1.c: New test.
3723         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
3724         when an accumulator is expanded.
3725
3726 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3727
3728         PR other/30465
3729         * c-common.c (convert_and_check): Don't give warnings for
3730         conversion if 'expr' already overflowed.
3731
3732 2007-03-04  Roger Sayle  <roger@eyesopen.com>
3733
3734         PR middle-end/30744
3735         * fold-const.c (fold_comparison): Enforce type consistency when
3736         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
3737
3738 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
3739
3740         * tree-ssa-address.c (create_mem_ref): Do not put an expression
3741         containing a cast to the base of TARGET_MEM_REF.
3742
3743 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
3744
3745         * tree.c (tree_contains_struct_check_failed): Remove spurious
3746         whitespace from error message.
3747
3748 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
3749
3750         PR target/30406
3751         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
3752         instead of precision.
3753
3754 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
3755             Nathan Sidwell  <nathan@codesourcery.com>
3756
3757         * emit-rtl.c (find_auto_inc): New.
3758         (try_split): recreate REG_INC notes,
3759         Use regular for loops rather than whiles.
3760
3761 2007-03-03  Andreas Schwab  <schwab@suse.de>
3762
3763         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
3764         * configure: Regenerate.
3765
3766 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3767
3768         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
3769         flag_rounding_math, not flag_unsafe_math_optimizations.
3770
3771         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
3772         fold_build2.
3773         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
3774         alpha_fold_vector_minmax): Likewise.
3775         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
3776         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
3777
3778 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3779
3780         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
3781         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
3782         if the lhs has side-effects.
3783         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
3784
3785 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3786
3787         * config/i386/i386.h (TUNEMASK): Remove define.
3788         (ARCHMASK): Remove define.
3789         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
3790          Use ix86_arch_mask variable instead of ARCHMASK.
3791         * config/i386/i386.c (override_options): Ditto.
3792         (standard_80387_constant_p): Ditto.
3793
3794 2007-03-02  Ian Lance Taylor  <iant@google.com>
3795
3796         Used signed infinities in VRP.
3797         * tree-vrp.c (uses_overflow_infinity): New static function.
3798         (supports_overflow_infinity): New static function.
3799         (make_overflow_infinity): New static function.
3800         (negative_overflow_infinity): New static function.
3801         (positive_overflow_infinity): New static function.
3802         (is_negative_overflow_infinity): New static function.
3803         (is_positive_overflow_infinity): New static function.
3804         (is_overflow_infinity): New static function.
3805         (overflow_infinity_range_p): New static function.
3806         (compare_values_warnv): New function split out of compare_values.
3807         (compare_value): Call it.
3808         (set_value_range_to_nonnegative): Add overflow_infinity
3809         parameter.  Change caller.
3810         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
3811         Change callers.
3812         (vrp_expr_computes_nonzero): Likewise.
3813         (compare_ranges, compare_range_with_value): Likewise.
3814         (compare_name_with_value, compare_names): Likewise.
3815         (vrp_evaluate_conditional): Likewise.
3816         (set_value_range): Handle infinity
3817         (vrp_operand_equal_p, operand_less_p): Likewise.
3818         (extract_range_from_assert): Likewise.
3819         (vrp_int_const_binop): Likewise.
3820         (extract_range_from_binary_expr): Likewise.
3821         (extract_range_from_unary_expr): Likewise.
3822         (extract_range_from_comparison): Likewise.
3823         (extract_range_from_expr): Likewise.
3824         (dump_value_range): Likewise.
3825         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
3826         (test_for_singularity): Likewise.
3827         (vrp_int_const_binop): Remove inline qualifier.
3828         (adjust_range_with_scev): Add comment.
3829         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3830
3831 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
3832
3833         * tree-ssa-structalias.c (could_have_pointers): Tidy.
3834         (get_constraint_for): Likewise.
3835         (do_structure_copy): Likewise.
3836         (find_func_aliases): Fix references to MODIFY_EXPR.
3837         (intra_create_variable_infos): Tidy.
3838         * tree-ssa-operands.c (add_virtual_operand): Add argument
3839         IS_CALL_SITE.
3840         When adding members of alias sets, if IS_CALL_SITE is true and
3841         the symbol is not call-clobbered, skip it.
3842         Adjust all callers.
3843
3844 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3845
3846         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
3847         entry by means of emit_insn_at_entry.
3848
3849 2007-03-02  Richard Henderson  <rth@redhat.com>
3850
3851         * expr.h (promoted_input_arg): Remove decl.
3852         * function.c (promoted_input_arg): Merge into ...
3853         * combine.c (setup_incoming_promotions): ... only caller.
3854         Rearrange to avoid double loop.
3855
3856 2007-03-02  Ben Elliston  <bje@au.ibm.com>
3857             Peter Bergner  <bergner@vnet.ibm.com>
3858             Janis Johnson  <janis187@us.ibm.com>
3859
3860         * config/rs6000/dfp.md: New file.
3861         * config/rs6000/rs6000.md: Include dfp.md.
3862         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
3863         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
3864         and TDmode decimal float modes in FP registers.
3865         (num_insns_constant): Likewise.
3866         (rs6000_legitimate_offset_address_p): Likewise.
3867         (rs6000_legitimize_address): Likewise.
3868         (rs6000_legitimize_reload_address): Likewise.
3869         (rs6000_legitimate_address): Likewise.
3870         (rs6000_emit_move): Likewise.
3871         (function_arg_boundary): Likewise.
3872         (function_arg_advance): Likewise.
3873         (rs6000_darwin64_record_arg_recurse): Likewise.
3874         (function_arg): Likewise.
3875         (rs6000_gimplify_va_arg): Likewise.
3876         (rs6000_split_multireg_move): Likewise.
3877         (rs6000_output_function_epilogue): Likewise.
3878         (rs6000_output_function_epilogue): Likewise.
3879         (rs6000_register_move_cost): Likewise.
3880         (rs6000_function_value): Likewise.
3881         (rs6000_libcall_value): Likewise.
3882
3883 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
3884
3885         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
3886
3887 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
3888
3889         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
3890         Use $MULTIDIR to choose between the kernel and RTP headers,
3891         and use $WIND_BASE and $WIND_USR to locate them.
3892
3893 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3894
3895         * config/i386/i386.c (override_options): Put initialization of
3896         ix86_tune_mask and ix86_arch_mask to the correct place.
3897
3898 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3899             Michael Meissner  <michael.meissner@amd.com>
3900
3901         PR target/31019
3902         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
3903         (ARCHMASK): Define.
3904         (TARGET_CMOVE): Use ARCHMASK.
3905         (TARGET_CMPXCHG): Ditto.
3906         (TARGET_CMPXCHG8B): Ditto.
3907         (TARGET_XADD): Ditto.
3908         (TARGET_BSWAP): Ditto.
3909         * config/i386/i386.c (ix86_tune_mask): New global variable.
3910         (ix86_arch_mask): Ditto.
3911         (override_options): Initialize ix86_tune_mask and
3912         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
3913         target_flags.
3914
3915 2007-03-02  Ben Elliston  <bje@au.ibm.com>
3916
3917         PR 30992
3918         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
3919
3920 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
3921
3922         * target.h (init_dwarf_reg_sizes_extra): New target hook.
3923         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
3924         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
3925         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
3926         hook.
3927         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
3928         rs6000_init_dwarf_reg_sizes_extra): New.
3929         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
3930         SPE register high parts.
3931
3932 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
3933
3934         * Makefile.in: Add install-pdf target as
3935         copied from automake v1.10 rules.
3936         * configure.ac: Add install-pdf to target list.
3937         * configure: Regenerate.
3938
3939 2007-03-01  Paul Brook  <paul@codesourcery.com>
3940
3941         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
3942         modes to LDRD for DImode.
3943         (output_move_double): Fixup out of range ldrd/strd.
3944         (vfp_secondary_reload_class): Rename...
3945         (coproc_secondary_reload_class): ... to this.  Add wb argument.
3946         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
3947         coproc_secondary_reload_class for CLASS_IWMMXT.
3948         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
3949         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
3950
3951 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
3952
3953         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
3954         factor by the estimated number of iterations.
3955         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
3956         prefetch latency.
3957
3958         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
3959         decode_caches_intel, detect_caches_intel): New functions.
3960         (host_detect_local_cpu): Use detect_caches_amd and
3961         detect_caches_intel.
3962
3963 2007-03-01  Richard Henderson  <rth@redhat.com>
3964
3965         * expr.c (emit_move_complex_push): Export.
3966         (emit_move_complex_parts): Split out from ...
3967         (emit_move_complex): ... here.
3968         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
3969         * config/i386/i386.md (movcdi): New.
3970
3971 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
3972
3973         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
3974         size of mode1 to check for tieable modes in MMX case.
3975
3976 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
3977
3978         * Makefile.in (rtlanal.o): Depend on tree.h.
3979         * rtl.h (offset_within_section_p, split_const): Declare.
3980         * rtlanal.c: Include tree.h.
3981         (offset_within_block_p): New function, taken from
3982         mips_offset_within_object_p.
3983         (split_const): New function, taken from mips_split_const.
3984         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
3985         Declare.
3986         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
3987         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
3988         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
3989         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
3990         (m68k_illegitimate_symbolic_constant_p): New function.
3991         * config/m68k/m68k.md (movsi): Remove misleading predicates.
3992         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
3993         symbolic constant that might be outside the symbol's section,
3994         move the symbol first and then add the offset.
3995         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
3996         Override.
3997         * config/mips/mips.c (mips_split_const): Delete.
3998         (mips_offset_within_object_p): Delete.
3999         (mips_symbolic_constant_p): Use offset_within_section_p and
4000         split_const instead of mips_offset_within_object_p and
4001         mips_split_const.
4002         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
4003         (mips_legitimize_const_move, print_operand_reloc)
4004         (mips_dangerous_for_la25_p): Use split_const instead of
4005         mips_split_const.
4006
4007 2007-02-28  Eric Christopher  <echristo@apple.com>
4008
4009         * Makefile.in (install-include-dir): Don't rm -rf include.
4010
4011 2007-02-28  Richard Guenther  <rguenther@suse.de>
4012
4013         PR middle-end/30364
4014         * fold-const.c (fold_binary): Do not associate expressions
4015         with more than one variable for integer types that do not wrap.
4016
4017 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
4018
4019         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
4020         Delete, and replace with...
4021         (fold_builtin_call_array): This.  Update callers to use it.
4022         * fold-const.c (fold_build_call_list): Delete, and replace with...
4023         (fold_build_call_array): This.
4024         (fold_build_call_list_initializer): Delete, and replace with...
4025         (fold_build_call_array_initializer): This.
4026         * tree.h: Update declarations to reflect above changes.
4027
4028         * c-typeck.c (build_function_call): Store converted arguments
4029         in a stack-allocated array instead of building a list.
4030         (convert_arguments): Store arguments in the array passed in as an
4031         argument, and return the actual number of arguments.
4032         * c-format.c: (check_function_format): Pass arguments in an
4033         array instead of a list.
4034         * c-common.c (check_function_nonnull): Likewise.
4035         (check_function_sentinel): Likewise.
4036         (check_function_arguments): Likewise.
4037         * c-common.h: Update declarations to reflect above changes.
4038
4039 2007-02-28  Jan Hubicka  <jh@suse.cz>
4040
4041         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
4042         PRED_NEGATIVE_RETURN): Update outcomes.
4043
4044 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
4045
4046         * calls.c (emit_library_call_value_1): Handle partial registers
4047         correctly when building up CALL_INSN_FUNCTION_USAGE.
4048
4049 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4050
4051         * pa/predicates.md (move_src_operand): Allow zero for mode.
4052         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
4053         move pattern.
4054
4055 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
4056
4057         PR target/30970
4058         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
4059         *movv2df_internal): Enable pattern only for valid operand
4060         combinations.
4061         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
4062         tie only 128bit modes. For MMX registers, tie only 64bit modes.
4063
4064 2007-02-27  Mike Stump  <mrs@apple.com>
4065
4066         * config/darwin-crt3.c: Avoid compilation when compiling for a
4067         kext multilib.
4068
4069 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
4070
4071         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
4072         FIXED_INCLUDE_DIR.
4073         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
4074         for fixed headers and limits.h.
4075         (install-include-dir, install-headers-tar, install-headers-cpio,
4076         install-headers-cp, real-install-headers-tar,
4077         real-install-headers-cpio, real-install-headers-cp): Handle
4078         include-fixed as well as include.
4079         (install-mkheaders): Don't install files that go only in include
4080         not include-fixed.
4081         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
4082         from GCC_INCLUDE_DIR.
4083         * gcc.c (process_command): Remove special -BstageN/ handling.
4084         (do_spec_1): Add include-fixed directories.
4085
4086 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4087
4088         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
4089         _smulsi3_highpart.
4090         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
4091         New functions.
4092         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
4093         patterns.
4094
4095 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
4096
4097         * c-common.c (get_priority): Add check for
4098         SUPPORTS_INIT_PRIORITY.
4099
4100 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4101
4102         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
4103
4104         * config/bfin/bfin.c: Include "cfglayout.h".
4105         (MAX_LSETUP_DISTANCE): New macro.
4106         (struct loop_info): New members incoming, incoming_src and
4107         incoming_dest.  Delete member predecessor.
4108         (length_for_loop): New function.
4109         (bfin_optimize_loop): Handle more different loop structures.
4110         (bfin_discover_loop): Rework detection of predecessor blocks by
4111         examining incoming edges.
4112         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
4113         bfin_reorg_loops.
4114         (bfin_reorder_loops): New function.
4115         (bfin_reorg_loops): Use these three new functions.
4116
4117         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
4118         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
4119         (CONSTRAINT_LEN): Add entry for 'q'.
4120         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
4121         Add 'q' constraints.
4122         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
4123         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
4124
4125         * config/bfin/bfin.md (add_with_carry): New pattern.
4126         (s_or_u, su_optab, su_modifier): New code macros/attrs.
4127         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
4128         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
4129         support unsigned multiplies too.  Removed incorrect commutativity from
4130         operand 1 constraint where appropriate.
4131         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
4132         patterns.
4133         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
4134         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
4135         New patterns.
4136         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
4137         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
4138         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
4139         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
4140         usmulhisi_hh_huh): New patterns.
4141
4142         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
4143         lshifthi3): Fix output template to use half reg for operand 2.
4144
4145         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
4146         instead of R2.
4147
4148         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
4149
4150 2007-02-27  Andreas Schwab  <schwab@suse.de>
4151
4152         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
4153
4154 2007-02-27  Jan Hubicka  <jh@suse.cz>
4155
4156         * predict.c (last_basic_block_p): Remove.
4157         (tree_estimate_probability): Update return heuristic for commonized
4158         return blocks.
4159
4160 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4161
4162         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
4163
4164 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4165
4166         * doc/include/gcc-common.texi (versionsubtitle): New macro.
4167         * doc/cpp.texi: Standardize title page.
4168         * doc/cppinternals.texi: Likewise.
4169         * doc/gcc.texi: Standardize title page, remove version number
4170         from copyright page.
4171         * doc/gccint.texi: Likewise.
4172         * doc/install.texi: Standardize title page, add table of
4173         contents.
4174
4175 2007-02-26  Jan Hubicka  <jh@suse.cz>
4176
4177         * predict.def: Set outcomes according to more recent results.
4178         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
4179         Remove dead predictors.
4180         * predict.c (return_prediction): Fix pasto.
4181
4182 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4183
4184         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
4185         change; avoid a memory leak when returning early.
4186
4187 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4188
4189         * c-decl.c (static_ctors): Move to c-common.c.
4190         (static_dtors): Likewise.
4191         (finish_function): Use c_record_cdtor_fn.
4192         (build_cdtor): Move to c-common.c.
4193         (c_write_global_declarations): Use c_build_cdtor_fns.
4194         * c-common.h (static_ctors): Declare.
4195         (static_dtors): Likewise.
4196         (c_record_cdtor_fn): Likewise.
4197         (c_build_cdtor_fns): Likewise.
4198         * c-common.c (static_ctors): New variable.
4199         (static_dtors): Likewise.
4200         (c_record_cdtor_fn): New function.
4201         (build_cdtor): Move from c-decl.c
4202         (c_build_cdtor_fns): New function.
4203
4204         * output.h (assemble_addr_to_section): Declare.
4205         (get_cdtor_priority_section): Likewise.
4206         * varasm.c (assemble_addr_to_section): New function.
4207         (get_cdtor_priority_section): Likewise.
4208         (default_named_section_asm_out_destructor): Use them.
4209         (destor_dtor_section_asm_out_destructor): Likewise.
4210         (default_named_section_asm_out_constructor): Likewise.
4211         (default_ctor_section_asm_out_constructor): Likewise.
4212         * config.gcc (*-*-vxworks*): Include vxworks.o.
4213         * config/t-vxworks (vxworks.o): New target.
4214         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
4215         (TARGET_ASM_CONSTRUCTOR): Define.
4216         (TARGET_ASM_DESTRUCTOR): Likewise.
4217         (vxworks_asm_out_constructor): Declare.
4218         (vxworks_asm_out_destructor): Likewise.
4219
4220         * c-common.c (get_priority): Check that we have not just an
4221         INTEGER_CST, but an integer constant with integeral type.
4222
4223 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
4224
4225         PR tree-optimization/30938
4226         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
4227         use &dt[nargs-1] instead of &dt[nargs] in the call to
4228         vect_is_simple_use().
4229
4230 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
4231
4232         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
4233         from register elimination as PRE_MODIFY / POST_MODIFY increments.
4234         Do not attempt to handle MEM inside auto-inc expressions.
4235         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
4236         of a register modified by an auto-inc expression.  However, do handle
4237         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
4238         (elimination_effects): Prohibit elimination of a register modified
4239         by an auto-inc expression.  Disable register elimination rules whose
4240         target register is modified by an auto-inc expression with variable
4241         increment.
4242
4243 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
4244
4245         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
4246         off-by-one error.
4247         (array_at_struct_end_p): New function.
4248         (idx_infer_loop_bounds): Use it.
4249         (estimate_numbers_of_iterations_loop): Export.
4250         * predict.c (predict_loops): Use estimated_loop_iterations_int.
4251         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
4252         (tree_estimate_probability): Call record_loop_exits.
4253         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
4254         (estimated_loop_iterations, estimated_loop_iterations_int,
4255         estimated_loop_iterations_tree): New functions.
4256         (analyze_siv_subscript_cst_affine,
4257         compute_overlap_steps_for_affine_1_2,
4258         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
4259         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
4260         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
4261         (PRED_LOOP_ITERATIONS_GUESSED): New.
4262         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
4263         * cfgloop.h (estimate_numbers_of_iterations_loop,
4264         estimated_loop_iterations_int): Declare.
4265
4266 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4267
4268         * doc/extend.texi: Document optional priority argument to
4269         constructors and destructors.
4270         * tree.c (init_priority_for_decl): Adjust GTY markers.
4271         (init_ttree): Use priority-info hash functions for
4272         init_priority_for_decl.
4273         (tree_map_eq): Rename to ...
4274         (tree_map_base_eq): ... this.
4275         (tree_map_marked_p): Rename to ...
4276         (tree_map_base_marked_p): ... this.
4277         (tree_map_base_hash): New function.
4278         (decl_init_priority_lookup): Rework.
4279         (decl_fini_priority_lookup): New function.
4280         (decl_priority_info): New function.
4281         (decl_init_priority_insert): Use it.
4282         (decl_fini_priority_insert): Likewise.
4283         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
4284         hierarchy.
4285         (decl_restrict_base_insert): Likewise.
4286         (decl_debug_expr_insert): Likewise.
4287         (decl_value_expr_lookup): Likewise.
4288         (decl_value_expr_insert): Likewise.
4289         * tree.h (priority_type): New type.
4290         (decl_init_priority_lookup): Use priority_type.
4291         (decl_fini_priority_lookup): New function.
4292         (decl_init_priority_insert): Use priority_type.
4293         (decl_fini_priority_insert): New function.
4294         (DECL_HAS_INIT_PRIORITY): Tweak comments.
4295         (DECL_INIT_PRIORITY): Likewise.
4296         (SET_DECL_INIT_PRIORITY): Add comment.
4297         (DECL_FINI_PRIORITY): New macro.
4298         (SET_DECL_FINI_PRIORITY): Likewise.
4299         (DEFAULT_INIT_PRIORITY): Document.
4300         (MAX_INIT_PRIORITY): Likewise.
4301         (MAX_RESERVED_INIT_PRIORITY): Likewise.
4302         (tree_map_base): New type.
4303         (tree_map_base_eq): New function.
4304         (tree_map_base_hash): Likewise.
4305         (tree_map_base_marked_p): Likewise.
4306         (tree_map): Inherit from tree_map_base.
4307         (tree_map_eq): Make it a macro.
4308         (tree_map_marked_p): Likewise.
4309         (tree_int_map): Inherit from tree_map_base.
4310         (tree_int_map_eq): Make it a macro.
4311         (tree_int_map_hash): Likewise.
4312         (tree_int_map_marked_p): Likewise.
4313         (tree_priority_map): New type.
4314         (tree_priority_map_eq): New macro.
4315         (tree_priority_map_hash): Likewise.
4316         (tree_priority_map_marked_p): Likewise.
4317         * varasm.c (emults_decl): Adjust for refactoring of tree_map
4318         hierarchy.
4319         (emutls_common_1): Likewise.
4320         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
4321         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
4322         of tree_map hierarchy.
4323         * tree-cfg.c (move_stmt_r): Likewise.
4324         (new_label_mapper): Likewise.
4325         * c-tree.h (c_expand_body): Move to ...
4326         * c-common.h (c_expand_body): ... here.
4327         * c-decl.c (c_expand_body): Move to ...
4328         * c-common.c (c_expand_body): ... here.
4329         (c_common_attribute_table): Allow 1 argument for the constructor
4330         and destructor attributes.
4331         (get_priority): New function.
4332         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
4333         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
4334
4335 2007-02-24  Jan Hubicka  <jh@suse.cz>
4336
4337         PR middle-end/30509
4338         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
4339
4340 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4341             Jan Hubicka  <jh@suse.cz>
4342
4343         PR target/30778
4344         * i386.c (counter_mode): New function.
4345         (expand_set_or_movmem_via_loop): Use it.
4346         (expand_movmem_epilogue): Likewise; fix pasto.
4347         (ix86_expand_movmem): Do emit guard even for constant counts.
4348         (ix86_expand_setmem): Likewise.
4349
4350 2007-02-25  Nick Clifton  <nickc@redhat.com>
4351
4352         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
4353         (JUMP_TABLES_IN_TEXT_SECTION): Define.
4354
4355 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4356
4357         PR target/30770
4358         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
4359         count argument with 0x10, not with 0x16.
4360         (expand_setmem_epilogue): Ditto.
4361
4362 2007-02-24  Mike Stump  <mrs@apple.com>
4363
4364         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
4365         symbols.
4366
4367 2007-02-24  Richard Guenther  <rguenther@suse.de>
4368
4369         PR middle-end/30951
4370         * fold-const.c (fold_binary): Fold x +- CST op x for
4371         EQ_EXPR and NE_EXPR.
4372
4373 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4374
4375         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
4376
4377 2007-02-24  Jan Hubicka  <jh@suse.cz>
4378
4379         * cgraphunit.c (decide_is_function_needed): Honor
4380         -fkeep-inline-functions.
4381
4382 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4383
4384         * builtins.c (fold_builtin_modf): New.
4385         (fold_builtin_2): Use it.
4386
4387 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
4388
4389         * loop-iv.c (implies_p): Detect additional cases where A implies B.
4390         (determine_max_iter): Take additional LOOP arg; all callers changed.
4391         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
4392         one using simplifications.
4393         (simplify_using_initial_values): Return if the expression becomes
4394         invalid due to altered regs.
4395
4396 2007-02-23  DJ Delorie  <dj@redhat.com>
4397
4398         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
4399
4400 2007-02-23  Mike Stump  <mrs@apple.com>
4401
4402         * tlink.c (scan_linker_output): Parse linker messages from
4403         darwin9's linker better.
4404
4405 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
4406
4407         PR debug/29614
4408         * varpool.c (varpool_assemble_pending_decls):  Set
4409         varpool_last_needed_node to null.
4410
4411 2007-02-23  DJ Delorie  <dj@redhat.com>
4412
4413         * config/i386/i386.c (ix86_data_alignment): Don't specify an
4414         alignment bigger than the object file can handle.
4415
4416 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
4417
4418         PR target/30825
4419         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
4420         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
4421         (*movsf_1): Penalize MMX moves.
4422
4423 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
4424
4425         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
4426         2^32-1 or more times unless flag_unsafe_loop_optimizations.
4427
4428         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
4429
4430 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4431
4432         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
4433         (fold_builtin_1): Use them.
4434         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
4435         BUILT_IN_SIGNIFICAND.
4436
4437 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
4438
4439         * config/i386/i386.c (bdesc_1arg): Initialize
4440         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
4441         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
4442         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
4443         and IX86_BUILTIN_MOVSLDUP.
4444
4445 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
4446
4447         PR rtl-optimization/30841
4448         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
4449
4450 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4451
4452         * builtins.c (fold_builtin_frexp): New.
4453         (fold_builtin_2): Use it.
4454
4455 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
4456
4457         * doc/invoke.texi (Spec Files): Document getenv spec function.
4458
4459         * gcc.c (getenv_spec_function): New function.
4460         (static_spec_functions): Add it.
4461         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
4462         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
4463         header files.
4464
4465 2007-02-22  Michael Matz  <matz@suse.de
4466
4467         PR c++/29433
4468         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
4469         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
4470
4471 2007-02-22  Ian Lance Taylor  <iant@google.com>
4472
4473         PR debug/30898
4474         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
4475         (mem_loc_descriptor): Call it.
4476
4477 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
4478             Ira Rosen  <irar@il.ibm.com>
4479
4480         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
4481
4482 2007-02-22  Ira Rosen  <irar@il.ibm.com>
4483
4484         PR tree-optimization/30843
4485         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
4486         stores only after all the group is vectorized.
4487
4488 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
4489
4490         PR tree-optimization/30858
4491         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
4492         in the reduction cycle have a single use in the loop.
4493         * tree-vectorizer.h (relevant): Add documentation.
4494
4495 2007-02-20  Mike Stump  <mrs@apple.com>
4496
4497         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
4498         * configure: Regenerate.
4499
4500 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4501
4502         Change the defaults of some parameters and options.
4503         * config/spu/spu-protos.h (spu_optimization_options): Declare.
4504         * config/spu/spu.c (spu_optimization_options): Add.
4505         (spu_override_options): Change params in spu_optimization_options.
4506         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
4507
4508         Register 127 is only 16 byte aligned when used as a frame pointer.
4509         * config/spu/spu-protos.h (spu_init_expanders): Declare.
4510         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
4511         HARD_FRAME_POINTER_REGNUM.
4512         (spu_legitimate_address):  Use regno_aligned_for_reload.
4513         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
4514         aligned when frame_pointer_needed is true.
4515         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
4516         to 8 bits.
4517         * config/spu/spu.h (INIT_EXPANDERS): Define.
4518
4519         Make sure shift and rotate instructions have valid immediate operands.
4520         * config/spu/predicates.md (spu_shift_operand): Remove.
4521         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
4522         * config/spu/constraints.md (W, O): Extend range.
4523         * config/spu/spu.md (umask, nmask): Define.
4524         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
4525         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
4526         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
4527         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
4528         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
4529         (lshr<mode>3_reg):  Fix rtl description.
4530
4531         Make sure mulhisi immediate operands are valid.
4532         * config/spu/predicates.md (imm_K_operand): Add.
4533         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
4534
4535         Generate constants using fsmbi and andi.
4536         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
4537         (print_operand, spu_split_immediate, classify_immediate,
4538         fsmbi_const_p): Handle IC_FSMBI2.
4539
4540         Correctly handle a CONST_VECTOR containing symbols.
4541         * config/spu/spu.c (print_operand): Handle HIGH correctly.
4542         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
4543         (immediate_load_p): Allow symbols that use 2 instructions to create.
4544         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
4545         with symbols when flag_pic is set.
4546         (const_vector_immediate_p): New.
4547         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
4548         accept a CONST_VECTOR with symbols.
4549         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
4550         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
4551         correctly.
4552         * config/spu/spu.md (high, low): Delete.
4553         (low_<mode>): Define.
4554
4555         Remove INTRmode and INTR_REGNUM, which didn't work.
4556         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
4557         of INTR_REGNUM.
4558         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
4559         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
4560         peephole2 pattern): Don't use INTR or 131.
4561         (movintrcc): Delete.
4562         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
4563         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
4564         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
4565         (UNSPEC_SET_INTR): Add.
4566         * config/spu/spu-modes.def (INTR): Remove.
4567
4568         More accurate warnings about run-time relocations.
4569         * config/spu/spu.c (reloc_diagnostic): Test in_section.
4570
4571         Correctly warn about immediate arguments to specific intrinsics.
4572         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
4573         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
4574         the instruction predicate.
4575
4576         Fix tree check errors with latest update.
4577         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
4578         CALL_EXPR_ARG.
4579         (spu_expand_builtin): Use CALL_EXPR_FN.
4580
4581         Add missing specific intrinsics.
4582         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
4583         si_bislede.
4584         * config/spu/spu_internals.h: Ditto.
4585
4586         Fix incorrect operand modifiers.
4587         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
4588         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
4589
4590         Optimize one case of zero_extend of a vec_select.
4591         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
4592
4593         Accept any immediate for hbr.
4594         * config/spu/spu.md (hbr):  Change s constraints to i.
4595
4596 2007-02-21  Paul Brook  <paul@codesourcery.com>
4597
4598         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
4599         condexec_count when skipping USE and CLOBBER.
4600
4601 2007-02-21  Nick Clifton  <nickc@redhat.com>
4602
4603         * common.opt (Warray-bounds): Add Warning attribute.
4604         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
4605         Likewise.
4606         (fsized-zeroes): Add Optimization attribute.
4607         (fsplit-wide-types, ftree-scev-cprop): Likewise.
4608         * c.opt (Wc++0x-compat): Add Warning attribute.
4609
4610 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
4611
4612         PR middle-end/30761
4613         * reload1.c (eliminate_regs_in_insn): In the single_set special
4614         case, attempt to re-recognize the insn before falling back to
4615         having reload fix it up.
4616
4617 2007-02-20  Eric Christopher  <echristo@gmail.com>
4618
4619         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
4620         Rewrite accordingly.
4621         (frv_read_iacc_argument): Ditto.
4622         (frv_expand_set_builtin): Take a call instead of arglist, update for
4623         above changes.
4624         (frv_expand_unop_builtin): Ditto.
4625         (frv_expand_binop_builtin): Ditto.
4626         (frv_expand_cut_builtin): Ditto.
4627         (frv_expand_binopimm_builtin): Ditto.
4628         (frv_expand_voidbinop_builtin): Ditto.
4629         (frv_expand_int_void2arg): Ditto.
4630         (frv_expand_prefetches): Ditto.
4631         (frv_expand_voidtriop_builtin): Ditto.
4632         (frv_expand_voidaccop_builtin): Ditto.
4633         (frv_expand_load_builtin): Ditto.
4634         (frv_expand_store_builtin): Ditto.
4635         (frv_expand_mdpackh_builtin): Ditto.
4636         (frv_expand_mclracc_builtin): Ditto.
4637         (frv_expand_mrdacc_builtin): Ditto.
4638         (frv_expand_mwtacc_builtin): Ditto.
4639         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
4640         calls for above.
4641
4642 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
4643
4644         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
4645         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
4646         cmpb instruction.
4647         (HAVE_GAS_DFP): Check for assembler support of decimal floating
4648         point instructions.
4649         * configure: Regenerate.
4650         * config.in: Regenerate.
4651         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
4652         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
4653         masks to power6 and power6x and to POWERPC_MASKS.
4654         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4655         _ARCH_PWR6.
4656         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
4657         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
4658         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
4659         Access PROTOTYPE as variable, not mask.
4660
4661 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4662
4663         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
4664         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
4665         * combine.c (adjust_for_new_dest): Use it.
4666         * postreload.c (reload_combine): Likewise.
4667
4668 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4669
4670         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
4671         notes on an insn with multiple sets, even if single_set returns
4672         non-NULL for that insn.
4673
4674 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4675
4676         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
4677         scalbn and scalbln.
4678
4679 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
4680
4681         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
4682         if user didn't pass it.
4683         * config/i386/darwin.h (CC1_SPEC): Likewise.
4684         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
4685         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
4686         -mmacosx-version-min.
4687
4688 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4689             Uros Bizjak  <ubizjak@gmail.com>
4690
4691         * optabs.h (enum optab_index): Add new OTI_scalb.
4692         (scalb_optab): Define corresponding macro.
4693         * optabs.c (init_optabs): Initialize scalb_optab.
4694         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
4695         patterns.
4696         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
4697         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
4698         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
4699         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
4700         flag_unsafe_math_optimizations is set.
4701
4702         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
4703         to implement scalbf, scalb and scalbl built-ins as inline x87
4704         intrinsics.
4705
4706 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4707             DJ Delorie <dj@redhat.com>
4708
4709         PR other/30824
4710         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
4711         (diagnostic_report_diagnostic): ... here, and turn them into real
4712         errors. If warnings are inhibited, no need to do anything.
4713
4714 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
4715
4716         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
4717         better code generation.
4718
4719 2007-02-20  Ben Elliston  <bje@au.ibm.com>
4720
4721         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
4722
4723 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
4724
4725         * config/alpha/alpha.c, config/alpha/alpha.md,
4726         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
4727         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
4728         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
4729         config/arm/lib1funcs.asm: Follow spelling conventions.
4730
4731         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
4732         config/fr30/fr30.md, config/i386/i386.h,
4733         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4734         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
4735         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
4736         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
4737         config/rs6000/altivec.md, config/rs6000/rs6000.c,
4738         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
4739         config/sparc/sparc.c, config/sparc/sparc.h,
4740         config/sparc/sparc.md, config/spu/constraints.md,
4741         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
4742         conventions.
4743
4744 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
4745
4746         PR target/29943
4747         * varasm.c (use_blocks_for_decl_p): Return false for decls with
4748         alias attribute.
4749
4750 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
4751
4752         * doc/invoke.texi (-ftree-lrs): Remove.
4753
4754 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
4755
4756         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
4757         NULL.
4758
4759 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
4760
4761         * config/ia64/ia64.c (ia64_expand_builtin): Use the
4762         new CALL_EXPR_FN macro for retrieving the function
4763         declaration of the input expression.
4764
4765 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4766
4767         * c.opt (Waddress): New.
4768         * common.opt (Walways-true): Delete.
4769         (Wstring-literal-comparison): Delete.
4770         * doc/invoke.texi (Warning Options): Delete -Walways-true and
4771         -Wstring-literal-comparison. Add -Waddress.
4772         (Waddress): New.
4773         (Walways-true): Delete.
4774         (Wstring-literal-comparison): Delete.
4775         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
4776         consistently instead of -Walways-true in example.
4777         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
4778         * c-typeck.c (parser_build_binary_op): Replace
4779         -Wstring-literal-comparison and -Walways-true with -Waddress.
4780         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
4781         with -Waddress.
4782
4783 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
4784
4785         * tree-cfg.c (dump_function_to_file): Be prepared for functions
4786         without DECL_STRUCT_FUNCTION initialized.
4787
4788 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
4789
4790         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
4791         due to calls to functions taking pointers as parameters.
4792
4793 2007-02-19  Richard Henderson  <rth@redhat.com>
4794
4795         PR debug/29558
4796         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
4797         in memory.
4798
4799 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4800
4801         * config/s390/s390.c (s390_call_saved_register_used,
4802         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
4803         accessed to the new scheme.
4804
4805 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
4806
4807         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
4808         (cris_print_index, cris_print_operand, cris_print_operand_address)
4809         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
4810         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
4811         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
4812         GET_CODE () == xxx.
4813         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
4814         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
4815         GO_IF_LEGITIMATE_ADDRESS): Ditto.
4816         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
4817         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
4818         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
4819         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
4820         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
4821         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
4822         (uminsi3, call, call_value): Ditto.
4823         (define_split: indir_to_reg_split, unnamed): Ditto.
4824
4825 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
4826
4827         PR tree-optimization/30975
4828         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
4829         wrong assert.
4830
4831 2007-02-18  Eric Christopher  <echristo@gmail.com>
4832
4833         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
4834         Remove use of arglist.
4835         (mips_expand_builtin): Remove use of arglist, pass in expr.
4836         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
4837         (mips_expand_builtin_movtf): Ditto.
4838         (mips_expand_builtin_compare): Ditto.
4839
4840 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
4841
4842         * tree-sra.c (sra_build_assignment): Replace assertion
4843         checking with a comment explaining why it can't be done.
4844
4845 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
4846
4847         PR middle-end/30833
4848         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
4849         during CALL_EXPR representation conversion.
4850         * tree-ssa-propagate.c (set_rhs): Likewise.
4851
4852 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
4853
4854         * tree-sra.c (sra_build_assignment): Disable assertion checking
4855         for now.
4856
4857 2007-02-18  Roger Sayle  <roger@eyesopen.com>
4858
4859         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
4860         instead of calling build2 with a GIMPLE_MODIFY_STMT.
4861         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
4862         Likewise.
4863         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
4864         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
4865         gimplify_init_ctor_eval_range, gimple_push_cleanup,
4866         gimplify_omp_for, gimplify_omp_atomic_pipeline,
4867         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
4868         force_gimple_operand): Likewise.
4869         * ipa-cp.c (constant_val_insert): Likewise.
4870         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
4871         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
4872         perfect_nestify): Likewise.
4873         * langhooks.c (lhd_omp_assignment): Likewise.
4874         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
4875         lower_copyprivate_clauses, lower_send_clauses,
4876         lower_send_shared_vars, expand_parallel_call,
4877         expand_omp_for_generic, expand_omp_for_static_nochunk,
4878         expand_omp_for_static_chunk, expand_omp_sections,
4879         lower_omp_single_copy, lower_omp_for_lastprivate,
4880         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
4881         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
4882         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
4883         Likewise.
4884
4885 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
4886
4887         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
4888         config/sh/sh.md: Follow spelling conventions.
4889
4890         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
4891         config/frv/predicates.md: Follow spelling conventions.
4892
4893         * config/m68k/linux-unwind.h: Fix a comment typo.
4894         * target.h: Follow spelling conventions.
4895
4896 2007-02-18  Roger Sayle  <roger@eyesopen.com>
4897
4898         PR rtl-optimization/28173
4899         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
4900         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
4901         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
4902         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
4903         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
4904
4905 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4906
4907         * builtins.c (fold_builtin_load_exponent): New.
4908         (fold_builtin_2): Use it.
4909
4910 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
4911
4912         PR rtl-optimization/30773
4913         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
4914         if we fail to attach a REG_EQUIV note.
4915
4916 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
4917             Roger Sayle  <roger@eyesopen.com>
4918
4919         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
4920
4921 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
4922
4923         * calls.c (initialize_argument_information): Pass original EXP
4924         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
4925         code to split complex arguments here, as part of initializing the
4926         ARGS array.
4927         (expand_call): Remove code that builds a list of arguments and
4928         inserts implicit arguments into it.  Instead, just count how many
4929         implicit arguments there will be so we can determine the size of
4930         the ARGS array, and let initialize_argument_information do the work.
4931         (split_complex_values): Delete unused function.
4932
4933 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
4934
4935         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
4936
4937 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
4938
4939         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
4940         for arg pointer based indexed addressing.
4941
4942 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4943
4944         * config/ia64/ia64.h, config/ia64/ia64.md,
4945         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
4946         spelling conventions.
4947
4948 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4949
4950         * config/m68k/m68k.c (split_di): New.
4951         * config/m68k/m68k-protos.h: Declare split_di.
4952         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
4953           Improve predicate handling and split constant shifts.
4954
4955 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4956
4957         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
4958         parameter for register bitfield operations, general predicates
4959         cleanup
4960
4961 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4962
4963         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
4964         * config/m68k/linux-unwind.h: New file.
4965
4966 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4967
4968         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
4969         config/i386/athlon.md, config/ia64/ia64.md,
4970         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
4971         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
4972         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
4973         tree-ssa-loop-niter.c, tree-vect-analyze.c,
4974         tree-vect-transform.c: Fix comment typos.
4975
4976 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
4977
4978         * sched-deps.c (find_insn_list): Remove.
4979         * sched-int.h: Remove the prototype for find_insn_list.
4980
4981 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
4982
4983         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
4984         to linker.
4985         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
4986         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
4987         darwin_rs6000_override_options.
4988         (C_COMMON_OVERRIDE_OPTIONS): Expect
4989         darwin_macosx_version_min to be non-NULL always.
4990         (TARGET_C99_FUNCTIONS): Likewise.
4991         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
4992         (DARWIN_MINVERSION_SPEC): New.
4993         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
4994         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
4995         to cc1*.
4996         (DARWIN_MINVERSION_SPEC): New.
4997         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
4998         value.
4999         * config/darwin-c.c (darwin_cpp_builtins): Expect
5000         darwin_macosx_version_min to be non-NULL always.
5001
5002         * config/rs6000/rs6000.c: Clean up trailing whitespace.
5003
5004 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
5005
5006         * config/i386/i386.h (x86_use_xchgb): New.
5007         (TARGET_USE_XCHGB): New macro.
5008         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
5009         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
5010         Split after reload into bswaphi for shifts of 8.
5011         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
5012         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
5013         or when optimizing for size.
5014
5015 2007-02-16  Richard Guenther  <rguenther@suse.de>
5016             Christian Bruel  <christian.bruel@st.com>
5017
5018         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
5019         DECLs but prefer SSA_NAMEs over DECLs.
5020
5021 2007-02-16  Richard Guenther  <rguenther@suse.de>
5022
5023         * tree-flow-inline.h (single_imm_use_p): Remove.
5024         (zero_imm_uses_p): Likewise.
5025         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
5026         instead of single_imm_use_p.
5027         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
5028         zero_imm_uses_p.
5029
5030 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5031
5032         PR other/27843
5033         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
5034         nested double- and backquotes.
5035
5036 2007-02-15  Roger Sayle  <roger@eyesopen.com>
5037
5038         PR middle-end/30391
5039         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
5040         should be unreachable.
5041         (build2_stat): Allow construction of MODIFY_EXPR at any time.
5042         For the time being redirect GIMPLE_MODIFY_STMT to the new
5043         (renamed) build_gimple_modify_stmt_stat.
5044         (build2_gimple_stat): Rename to...
5045         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
5046         Always build a GIMPLE_MODIFY_STMT node.
5047         * tree.h (build2_gimple, build2_gimple_stat): Delete.
5048         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
5049         declarations.
5050
5051         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
5052         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
5053         * tree-complex.c (set_component_ssa_name, expand_complex_move,
5054         expand_complex_div_wide): Likewise.
5055         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
5056         * tree-ssa-loop-im.c (schedule_sm): Likewise.
5057         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
5058         * tree-ssa-loop-manip.c (create_iv): Likewise.
5059         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
5060         abs_replacement): Likewise.
5061         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
5062         realify_fake_stores): Likewise.
5063
5064         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
5065         node rather than a GIMPLE_MODIFY_STMT node.
5066         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
5067         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
5068         Likewise.
5069         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
5070         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
5071         GIMPLE_MODIFY_STMT.
5072
5073 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5074
5075         PR middle-end/30433
5076         * fold-const.c (fold_comparison): Add back the
5077         folding of constant complex comparisions.
5078
5079 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5080
5081         PR middle-end/30729
5082         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
5083         effects unknown to this function, return early.
5084
5085 2007-02-15  Ian Lance Taylor  <iant@google.com>
5086
5087         * lower-subreg.c (move_eh_region_note): New static function.
5088         (resolve_simple_move): Call it.
5089         (decompose_multiword_subregs): Track blocks for which we resolve a
5090         simple move which is also a control flow insn.  Pass them to
5091         find_many_sub_basic_blocks.
5092         (pass_lower_subreg): Add TODO_verify_flow.
5093         (pass_lower_subreg2): Likewise.
5094
5095 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5096             Brooks Moses  <brooks.moses@codesourcery.com>
5097             Lee Millward  <lee.millward@codesourcery.com>
5098
5099         * tree.h (enum tree_code_class): Add tcc_vl_exp.
5100         (VL_EXP_CLASS_P): New.
5101         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
5102         TREE_CODE_LENGTH.
5103         (TREE_OPERAND_CHECK_CODE): Likewise.
5104         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
5105         (TREE_RTL_OPERAND_CHECK): Likewise.
5106         (tree_operand_check_failed): Make second parameter the whole tree
5107         instead of its code.  Fixed callers.
5108         (VL_EXP_CHECK): New.
5109         (TREE_OPERAND_LENGTH): New.
5110         (VL_EXP_OPERAND_LENGTH): New.
5111         (CALL_EXPR_FN): New.
5112         (CALL_EXPR_STATIC_CHAIN): New.
5113         (CALL_EXPR_ARGS): New.
5114         (CALL_EXPR_ARG): New.
5115         (call_expr_nargs): New.
5116         (CALL_EXPR_ARGP): New.
5117         (build_nt_call_list): Declare.
5118         (build_vl_exp_stat): Declare.
5119         (build_vl_exp): New.
5120         (build_call_list): Declare.
5121         (build_call_nary): Declare.
5122         (build_call_valist): Declare.
5123         (build_call_array): Declare.
5124         (call_expr_arg): Declare.
5125         (call_expr_argp): Declare.
5126         (call_expr_arglist): Declare.
5127         (fold_build_call_list): Declare.
5128         (fold_build_call_list_initializer): Declare.
5129         (fold_call_expr): Declare to replace fold_builtin.
5130         (fold_builtin_fputs): Update to agree with modified definition.
5131         (fold_builtin_strcpy): Likewise.
5132         (fold_builtin_strncpy): Likewise.
5133         (fold_builtin_memory_chk): Likewise.
5134         (fold_builtin_stxcpy_chk): Likewise.
5135         (fold_builtin_strncpy_chk): Likewise.
5136         (fold_builtin_next_arg): Likewise.
5137         (fold_build_call_expr): Declare.
5138         (fold_builtin_call_list): Declare.
5139         (fold_builtin_call_valist): Declare.
5140         (build_call_expr): Declare.
5141         (validate_arglist): Update to agree with modified definition.
5142         (tree_operand_length): New.
5143         (call_expr_arg_iterator): New.
5144         (init_call_expr_arg_iterator): New.
5145         (next_call_expr_arg): New.
5146         (first_call_expr_arg): New.
5147         (more_call_expr_args_p): New.
5148         (FOR_EACH_CALL_EXPR_ARG): New.
5149
5150         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
5151         and tcc_gimple_stmt.
5152         (tree_code_size): Update documentation.  Use sizeof (tree) rather
5153         than sizeof (char *).
5154         (tree_size): Likewise.  Add case for tcc_vl_exp.
5155         (tree_node_structure): Add case for tcc_vl_exp.
5156         (contains_placeholder_p): Likewise.
5157         (substitute_in_expr): Likewise.
5158         (substitute_placeholder_in_expr): Likewise.
5159         (stabilize_reference_1): Likewise.
5160         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
5161         to diagnose breakage of this interface for constructing CALL_EXPRs.
5162         (build_nt): Add similar assertion here.
5163         (build_nt_call_list): New.
5164         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
5165         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
5166         TREE_CODE_LENGTH.
5167         (get_callee_fndecl): Use new CALL_EXPR accessors.
5168         (tree_operand_check_failed): Change parameters to pass entire node
5169         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
5170         (process_call_operands): New.
5171         (build_vl_exp_stat): New.
5172         (build_call_list): New.
5173         (build_call_nary): New.
5174         (build_call_valist): New.
5175         (build_call_array): New.
5176         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5177         (call_expr_arglist): New.
5178
5179         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
5180         tcc_vl_exp instead of a fixed-size tcc_expression.
5181
5182         * doc/c-tree.texi (CALL_EXPR): Document new representation and
5183         accessors for CALL_EXPRs.
5184         (AGGR_INIT_EXPR): Likewise.
5185
5186 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5187             Brooks Moses  <brooks.moses@codesourcery.com>
5188             Lee Millward  <lee.millward@codesourcery.com>
5189
5190         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
5191         (expand_builtin_nonlocal_goto): Change parameter to be entire
5192         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
5193         (expand_builtin_prefetch): Likewise.
5194         (expand_builtin_classify_type): Likewise.
5195         (mathfn_built_in): Return NULL_TREE instead of 0.
5196         (expand_errno_check): Use new CALL_EXPR accessors.
5197         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
5198         Return NULL_RTX instead of 0.
5199         (expand_builtin_mathfn_2): Likewise.
5200         (expand_builtin_mathfn_3): Likewise.
5201         (expand_builtin_interclass_mathfn): Likewise.
5202         (expand_builtin_sincos): Likewise.
5203         (expand_builtin_cexpi): Likewise.
5204         (expand_builtin_int_roundingfn): Likewise.
5205         (expand_builtin_int_roundingfn_2): Likewise.
5206         (expand_builtin_pow): Likewise.
5207         (expand_builtin_powi): Likewise.
5208         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
5209         of arglist, fixing callers appropriately.  Use new CALL_EXPR
5210         accessors and constructors.  Return NULL_RTX instead of 0.
5211         (expand_builtin_strstr): Likewise.
5212         (expand_builtin_strchr): Likewise.
5213         (expand_builtin_strrchr): Likewise.
5214         (expand_builtin_strpbrk): Likewise.
5215         (expand_builtin_memcpy): Likewise.
5216         (expand_builtin_mempcpy): Likewise.
5217         (expand_builtin_mempcpy_args): New.
5218         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
5219         (expand_builtin_memmove_args): New.
5220         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
5221         (expand_movstr): Likewise.
5222         (expand_builtin_strcpy): Likewise.
5223         (expand_builtin_strcpy_args): New.
5224         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
5225         (expand_builtin_strncpy): Likewise.
5226         (expand_builtin_memset): Likewise.
5227         (expand_builtin_memset_args): New.
5228         (expand_builtin_bzero): Similarly to expand_builtin_memset.
5229         (expand_builtin_memcmp): Likewise.
5230         (expand_builtin_strcmp): Likewise.
5231         (expand_builtin_strncmp): Likewise.
5232         (expand_builtin_strcat): Likewise.
5233         (expand_builtin_strncat): Likewise.
5234         (expand_builtin_strspn): Likewise.
5235         (expand_builtin_strcspn): Likewise.
5236         (expand_builtin_args_info): Likewise.
5237         (expand_builtin_va_start): Likewise.
5238         (gimplify_va_arg_expr): Likewise.
5239         (expand_builtin_va_end): Likewise.
5240         (expand_builtin_va_copy): Likewise.
5241         (expand_builtin_frame_address): Likewise.
5242         (expand_builtin_alloca): Likewise.
5243         (expand_builtin_bswap): Likewise.
5244         (expand_builtin_unop): Likewise.
5245         (expand_builtin_fputs): Likewise.
5246         (expand_builtin_expect): Likewise.
5247         (expand_builtin_fabs): Likewise.
5248         (expand_builtin_copysign): Likewise.
5249         (expand_builtin_printf): Likewise.
5250         (expand_builtin_fprintf): Likewise.
5251         (expand_builtin_sprintf): Likewise.
5252         (expand_builtin_init_trampoline): Likewise.
5253         (expand_builtin_signbit): Likewise.
5254         (expand_builtin_fork_or_exec): Likewise.
5255         (expand_builtin_sync_operation): Likewise.
5256         (expand_builtin_compare_and_swap): Likewise.
5257         (expand_builtin_lock_test_and_set): Likewise.
5258         (expand_builtin_lock_release): Likewise.
5259         (expand_builtin): Likewise.
5260         (builtin_mathfn_code): Likewise.
5261
5262         (fold_builtin_constant_p): Pass call arguments individually instead
5263         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5264         accessors and constructors.  Return NULL_TREE instead of 0.
5265         (fold_builtin_expect): Likewise.
5266         (fold_builtin_classify_type): Likewise.
5267         (fold_builtin_strlen): Likewise.
5268         (fold_builtin_nan): Likewise.
5269         (integer_valued_real_p): Likewise.
5270         (fold_trunc_transparent_mathfn): Likewise.
5271         (fold_fixed_mathfn): Likewise.
5272         (fold_builtin_cabs): Likewise.
5273         (fold_builtin_sqrt): Likewise.
5274         (fold_builtin_cbrt): Likewise.
5275         (fold_builtin_cos): Likewise.
5276         (fold_builtin_cosh): Likewise.
5277         (fold_builtin_tan): Likewise.
5278         (fold_builtin_sincos): Likewise.
5279         (fold_builtin_cexp): Likewise.
5280         (fold_builtin_trunc): Likewise.
5281         (fold_builtin_floor): Likewise.
5282         (fold_builtin_ceil): Likewise.
5283         (fold_builtin_round): Likewise.
5284         (fold_builtin_int_roundingfn): Likewise.
5285         (fold_builtin_bitop): Likewise.
5286         (fold_builtin_bswap): Likewise.
5287         (fold_builtin_logarithm): Likewise.
5288         (fold_builtin_hypot): Likewise.
5289         (fold_builtin_pow): Likewise.
5290         (fold_builtin_powi): Likewise.
5291         (fold_builtin_exponent): Likewise.
5292         (fold_builtin_memset): Likewise.
5293         (fold_builtin_bzero): Likewise.
5294         (fold_builtin_memory_op): Likewise.
5295         (fold_builtin_bcopy): Deleted; call site changed to invoke
5296         fold_builtin_memory_op directly.
5297         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
5298         (fold_builtin_strncpy): Likewise.
5299         (fold_builtin_memcmp): Likewise.
5300         (fold_builtin_strcmp): Likewise.
5301         (fold_builtin_strncmp): Likewise.
5302         (fold_builtin_signbit): Likewise.
5303         (fold_builtin_copysign): Likewise.
5304         (fold_builtin_isascii): Likewise.
5305         (fold_builtin_toascii): Likewise.
5306         (fold_builtin_isdigit): Likewise.
5307         (fold_builtin_fabs): Likewise.
5308         (fold_builtin_abs): Likewise.
5309         (fold_builtin_fmin_fmax): Likewise.
5310         (fold_builtin_carg): Likewise.
5311         (fold_builtin_classify): Likewise.
5312         (fold_builtin_unordered_cmp): Likewise.
5313
5314         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
5315         New functions split out from fold_builtin_1.
5316         (fold_builtin_n): New.
5317         (fold_builtin_varargs): New.
5318         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
5319         instead.
5320         (fold_call_expr): New.
5321         (build_function_call_expr): Rewrite to use new helper function.
5322         (fold_builtin_call_list): New.
5323         (build_call_expr): New.
5324         (fold_builtin_call_valist): New.
5325         (rewrite_call_expr): New.
5326         (validate_arg): New.
5327         (validate_arglist): Change parameter to be entire CALL_EXPR instead
5328         of an arglist.  Change return type to bool.  Use new CALL_EXPR
5329         accessors.
5330
5331         (fold_builtin_strstr):  Pass call arguments individually instead
5332         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5333         accessors and constructors.  Return NULL_TREE instead of 0.
5334         (fold_builtin_strchr): Likewise.
5335         (fold_builtin_strrchr): Likewise.
5336         (fold_builtin_strpbrk): Likewise.
5337         (fold_builtin_strcat): Likewise.
5338         (fold_builtin_strncat): Likewise.
5339         (fold_builtin_strspn): Likewise.
5340         (fold_builtin_strcspn): Likewise.
5341         (fold_builtin_fputs): Likewise.
5342         (fold_builtin_next_arg): Likewise.
5343         (fold_builtin_sprintf): Likewise.
5344
5345         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
5346         NULL_RTX instead of 0.
5347         (expand_builtin_memory_chk): Likewise.
5348         (maybe_emit_chk_warning): Likewise.
5349         (maybe_emit_sprintf_chk_warning): Likewise.
5350
5351         (fold_builtin_object_size): Pass call arguments individually instead
5352         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5353         accessors and constructors.  Return NULL_TREE instead of 0.
5354         (fold_builtin_memory_chk): Likewise.
5355         (fold_builtin_stxcpy_chk): Likewise.
5356         (fold_builtin_strncpy_chk): Likewise.
5357         (fold_builtin_strcat_chk): Likewise.
5358         (fold_builtin_strcat_chk): Likewise.
5359         (fold_builtin_strncat_chk): Likewise.
5360         (fold_builtin_sprintf_chk): Likewise.
5361         (fold_builtin_snprintf_chk): Likewise.
5362         (fold_builtin_printf): Likewise.
5363         (fold_builtin_vprintf): Likewise.
5364
5365         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
5366         constructors.
5367         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
5368         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5369         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
5370         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
5371         (fold_unary): Likewise.
5372         (fold_binary): Likewise.
5373         (fold_ternary): Remove CALL_EXPR case, since they are no longer
5374         ternary expressions.
5375         (fold): Add logic for tcc_vl_exp.
5376         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
5377         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5378         (fold_build3_stat): Add assertion to flag broken interface for
5379         constructing CALL_EXPRs.
5380         (fold_build_call_list): New.
5381         (fold_build_call_list_initializer): New.
5382         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
5383         constructors.
5384         (fold_strip_sign_ops): Likewise.
5385
5386 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5387             Brooks Moses  <brooks.moses@codesourcery.com>
5388             Lee Millward  <lee.millward@codesourcery.com>
5389
5390         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
5391         accessors and dump arguments explicitly.
5392
5393         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
5394         TREE_CODE_LENGTH.
5395         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
5396         explicitly.
5397         (print_call_name): Use new CALL_EXPR accessors.
5398
5399         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
5400         CALL_EXPR arguments explicitly instead of as a list.  Use
5401         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5402
5403         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
5404         (vrp_visit_stmt): Likewise.
5405
5406         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
5407         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
5408         TREE_CODE_LENGTH.
5409         (force_move_till_expr): Likewise.
5410
5411         * targhooks.c (default_external_stack_protect_fail): Use
5412         build_call_expr instead of build_function_call_expr.
5413         (default_hidden_stack_protect_fail): Likewise.
5414
5415         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
5416         build the call.
5417
5418         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
5419         and walk arguments explicitly.
5420
5421         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
5422         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5423         (expand_simple_operations): Likewise.
5424         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
5425
5426         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
5427         of TREE_CODE_LENGTH.
5428         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
5429
5430         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
5431         instead of TREE_CODE_LENGTH.
5432
5433         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
5434         (tree_ic_transform): Likewise.
5435         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
5436         parameter instead of arglist.  Fix callers.
5437         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
5438         (tree_stringops_transform): Likewise.
5439         (tree_indirect_call_to_profile): Likewise.
5440         (tree_stringops_values_to_profile): Likewise.
5441
5442         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
5443         (eliminate_tail_call): Likewise.
5444
5445         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
5446
5447         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
5448         Use TREE_OPERAND_LENGTH and generalize to handle any number of
5449         operands.
5450         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
5451
5452         * omp-low.c (build_omp_barrier): Use build_call_expr.
5453         (lower_rec_input_clauses): Likewise.
5454         (lower_reduction_clauses): Likewise.
5455         (expand_parallel_call): Likewise.
5456         (maybe_catch_exception): Likewise.
5457         (expand_omp_for_generic): Likewise.
5458         (expand_omp_for_static_nochunk): Likewise.
5459         (expand_omp_sections): Likewise.
5460         (lower_omp_single_simple): Likewise.
5461         (lower_omp_single_copy): Likewise.
5462         (lower_omp_master): Likewise.
5463         (lower_omp_ordered): Likewise.
5464         (lower_omp_critical): Likewise.
5465
5466         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
5467         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
5468
5469         * tree-gimple.c (is_gimple_call_addr): Fix doc.
5470         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
5471         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
5472
5473         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
5474         and generalize to handle any number of operands.
5475         (chrec_contains_undetermined): Likewise.
5476         (tree_contains_chrecs): Likewise.
5477         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
5478
5479         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
5480
5481         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
5482         fold_call_expr instead of fold_builtin.
5483         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
5484         match declarations there.
5485         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
5486         updates.
5487
5488         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
5489         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5490
5491         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
5492         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
5493
5494         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
5495         accessors.
5496
5497         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
5498         (execute_cse_sincos): Use new CALL_EXPR accessors.
5499
5500         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
5501
5502         * gimple-low.c (lower_function_body): Use build_call_expr.
5503         (lower_builtin_setjmp): Likewise.
5504
5505         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
5506         (set_storage_via_libcall): Likewise.
5507         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
5508         instead of TREE_CODE_LENGTH.
5509         (expand_expr_real_1): Use new CALL_EXPR accessors.
5510
5511         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
5512         generalize to handle any number of operands.
5513         (TB_parent_eq): Likewise.
5514
5515         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
5516         (strip_builtin_expect): Likewise.
5517
5518         * function.c (gimplify_parameters): Use build_call_expr.
5519
5520         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
5521         instead of TREE_CODE_LENGTH.
5522
5523         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
5524         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
5525
5526         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
5527         iterators.
5528
5529         * gimplify.c (build_stack_save_restore): Use build_call_expr.
5530         (gimplify_decl_expr): Likewise.
5531         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
5532         Use new CALL_EXPR iterators.
5533         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
5534         (gimplify_modify_expr_to_memset): Likewise.
5535         (gimplify_variable_sized_compare): Likewise.
5536         (gimplify_omp_atomic_fetch_op): Likewise.
5537         (gimplify_omp_atomic_pipeline): Likewise.
5538         (gimplify_omp_atomic_mutex): Likewise.
5539         (gimplify_function_tree): Likewise.
5540
5541         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
5542         (call_expr_flags): Likewise.
5543         (expand_call): Likewise.
5544
5545         * except.c (expand_builtin_eh_return_data_regno): Pass entire
5546         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5547         accessors.
5548
5549         * coverage.c (create_coverage): Use build_call_expr.
5550
5551         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
5552         (temp_call_expr_obstack): New.
5553         (pool_copy_list): Delete.
5554         (temp_copy_call_expr): New.
5555         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
5556         CALL_EXPR accessors.  Get rid of special goo for copying argument
5557         lists and use temp_copy_call_expr instead.
5558         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
5559         CALL_EXPR accessors.
5560         (create_expression_by_pieces): Likewise.  Use build_call_array
5561         to construct the result instead of fold_build3.
5562         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
5563         dealing with argument lists.
5564         (init_pre): Remove references to expression_node_pool and
5565         list_node_pool.  Init temp_call_expr_obstack instead.
5566         (fini_pre): Remove references to expression_node_pool and
5567         list_node_pool.
5568
5569         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
5570         and walk arguments explicitly instead of as a list.
5571
5572         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
5573         (mx_register_decls): Likewise.
5574         (mudflap_register_call): Likewise.
5575         (mudflap_finish_file): Likewise.
5576
5577         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
5578         (ipa_callsite_compute_param): Likewise.
5579
5580         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
5581         accessors and constructor.
5582
5583         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
5584         accessors and constructor.
5585         (convert_tramp_reference): Likewise.
5586         (convert_call_expr): Likewise.
5587         (finalize_nesting_tree_1): Likewise.
5588
5589         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
5590         accessors.
5591
5592         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
5593
5594         * tree-inline.c (initialize_inlined_parameters): Pass entire
5595         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5596         accessors.
5597         (estimate_num_insns_1): Use new CALL_EXPR accessors.
5598         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
5599
5600         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
5601         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5602         (vectorizable_reduction): Likewise.
5603         (vectorizable_call): Use new CALL_EXPR iterators.
5604         (vectorizable_conversion): Use build_call_expr.
5605         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
5606         (vect_gen_widened_results_half): Use build_call_expr.
5607         (vect_setup_realignment): Likewise.
5608         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
5609
5610         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
5611         (pass_through_call): Likewise.
5612         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
5613         fold_builtin.
5614
5615         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
5616         (tree_gen_pow2_profiler): Likewise.
5617         (tree_gen_one_value_profiler): Likewise.
5618         (tree_gen_ic_func_profiler): Likewise.
5619         (tree_gen_average_profiler): Likewise.
5620         (tree_gen_ior_profiler): Likewise.
5621
5622         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
5623         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
5624         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5625
5626         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
5627         of TREE_CODE_LENGTH.
5628
5629         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
5630         of TREE_CODE_LENGTH.
5631
5632         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
5633         constructor.
5634         (convert_to_integer): Likewise.
5635
5636         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
5637         accessors.
5638
5639 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5640             Brooks Moses  <brooks.moses@codesourcery.com>
5641             Lee Millward  <lee.millward@codesourcery.com>
5642
5643         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
5644         accessors.
5645         * config/frv/frv.c (frv_expand_builtin): Likewise.
5646         * config/s390/s390.c (s390_expand_builtin): Likewise.
5647
5648         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
5649         (sparc_expand_builtin): Use new CALL_EXPR accessors.
5650
5651         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
5652         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
5653         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
5654         (ix86_expand_store_builtin): Likewise.
5655         (ix86_expand_unop_builtin): Likewise.
5656         (ix86_expand_unop1_builtin): Likewise.
5657         (ix86_expand_sse_compare): Likewise.
5658         (ix86_expand_sse_comi): Likewise.
5659         (ix86_expand_vec_init_builtin): Likewise.
5660         (ix86_expand_vec_ext_builtin): Likewise.
5661         (ix86_expand_vec_set_builtin): Likewise.
5662         (ix86_expand_builtin): Use new CALL_EXPR accessors.
5663
5664         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
5665         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
5666
5667         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
5668         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5669         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
5670
5671         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
5672         build_call_expr.
5673         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
5674         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
5675         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5676         (altivec_expand_abs_builtin): Likewise.
5677         (rs6000_expand_binop_builtin): Likewise.
5678         (altivec_expand_predicate_builtin): Likewise.
5679         (altivec_expand_lv_builtin): Likewise.
5680         (spe_expand_stv_builtin): Likewise.
5681         (altivec_expand_stv_builtin): Likewise.
5682         (rs6000_expand_ternop_builtin): Likewise.
5683         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
5684         (altivec_expand_st_builtin): Likewise.
5685         (altivec_expand_dst_builtin): Likewise.
5686         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
5687         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5688         (altivec_expand_vec_set_builtin): Likewise.
5689         (altivec_expand_vec_ext_builtin): Likewise.
5690         (altivec_expand_builtin): Use new CALL_EXPR accessors.
5691         (spe_expand_builtin): Likewise.
5692         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
5693         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5694         (spe_expand_evsel_builtin): Likewise.
5695         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
5696         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
5697
5698         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
5699         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5700         (arm_expand_unop_builtin): Likewise.
5701         (arm_expand_builtin): Use new CALL_EXPR accessors.
5702
5703         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
5704         accessors.
5705
5706         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
5707         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5708         (bfin_expand_unop_builtin): Likewise.
5709         (bfin_expand_builtin): Use new CALL_EXPR accessors.
5710
5711 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5712             Brooks Moses  <brooks.moses@codesourcery.com>
5713             Lee Millward  <lee.millward@codesourcery.com>
5714
5715         * c-semantics.c (build_stmt): Add internal diagnostic check.
5716
5717         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
5718         accessors.  Print arguments explicitly instead of as a list.
5719
5720         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
5721
5722         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
5723         (c_finish_omp_flish): Likewise.
5724
5725         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
5726         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
5727         instead of TREE_CODE_LENGTH.
5728         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
5729         (c_warn_unused_result): Likewise.
5730
5731 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5732
5733         PR c/26494
5734         * doc/invoke.texi (Warning Options): Remove
5735         -Werror-implicit-function-declaration.
5736         (Wimplicit-function-declaration): Update description.
5737         * opts.c (common_handle_option): Move handling of -Werror=* to...
5738         (enable_warning_as_error): ...here.
5739         * opts.h (enable_warning_as_error): Declare.
5740         * c-decl.c (implicit_decl_warning): Unless
5741         -Wno-implicit-function-declaration is given, emit a pedwarn if
5742         -std=c99 or emit a warning if -Wimplicit-function-declaration.
5743         * c.opt (Wimplicit-function-declaration): Replace
5744         mesg_implicit_function_declaration with
5745         warn_implicit_function_declaration.
5746         * c-opts.c (c_common_handle_option):
5747         -Werror-implicit-function-declaration is exactly equal as
5748         -Werror=implicit-function-declaration.
5749         (set_Wimplicit): Replace mesg_implicit_function_declaration with
5750         warn_implicit_function_declaration.
5751         (c_common_post_options): -Wimplict-function-declaration is enabled
5752         by default by -std=c99, otherwise is disabled by default.
5753         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
5754
5755 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5756
5757         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
5758         DECL on the rhs to a DECL on the lhs for debug info purposes if the
5759         former is ignored but not the latter.
5760
5761 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5762
5763         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
5764         is made and the reference doesn't use the alias set of its type,
5765         do not create the temporary using that type.
5766
5767 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
5768
5769         * jump.c: Remove prototypes for delete_computation and
5770         delete_prior_computation.
5771
5772 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
5773
5774         * jump.c (get_label_after): Delete.
5775         (get_label_before, delete_computation, delete_jump,
5776         delete_prior_computation, follow_jumps): Move...
5777         * reorg.c (delete_computation, delete_prior_computation): ... here...
5778         (get_label_before, delete_jump): ... making these static ...
5779         (follow_jumps): ... and simplifying this since it only runs after
5780         reload.
5781         * rtl.h (get_label_after, get_label_before, delete_jump,
5782         follow_jumps): Delete prototypes.
5783
5784 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
5785
5786         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
5787
5788 2007-02-15  Nick Clifton  <nickc@redhat.com>
5789
5790         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
5791         order to prevent it from being munged by the target.
5792
5793 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
5794
5795         * config/i386/i386.md: Remove misleading comment.
5796
5797 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5798
5799         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
5800         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
5801         invalid patterns.
5802
5803 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5804
5805         * tree-sra.c (instantiate_missing_elements): Canonicalize
5806         bit-field types.
5807         (sra_build_assignment): New.
5808         (generate_copy_inout, generate_element_copy,
5809         generate_element_zero, generate_one_element_init): Use it.
5810
5811 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5812
5813         * tree-sra.c (instantiate_missing_elements): Canonicalize
5814         bit-field types.
5815         (sra_build_assignment): New.
5816         (generate_copy_inout, generate_element_copy,
5817         generate_element_zero, generate_one_element_init): Use it.
5818
5819 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5820
5821         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
5822         limbo die nodes.
5823
5824 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
5825
5826         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
5827         types as aggregates not scalars.
5828         * function.c (assign_stack_temp_for_type): Likewise.
5829
5830 2007-02-14  Roger Sayle  <roger@eyesopen.com>
5831             Zdenek Dvorak  <dvorakz@suse.cz>
5832
5833         * tree-dump.c (dump_switch_p_1): Require exact match of the option
5834         name.
5835
5836 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
5837
5838         * passes.c (next_pass_1): Clear the next field of the copied
5839         pass structure.
5840
5841 2007-02-14  Richard Henderson  <rth@redhat.com>
5842
5843         * tree-sra.c (early_sra): New.
5844         (decl_can_be_decomposed_p): Deny va_list if early_sra.
5845         (tree_sra_early, pass_sra_early): New.
5846         * tree-pass.h (pass_sra_early): Declare.
5847         * passes.c (init_optimization_passes): Use it.
5848
5849 2007-02-14  Richard Guenther  <rguenther@suse.de>
5850
5851         * flags.h (issue_strict_overflow_warning): Convert to a macro.
5852
5853 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
5854
5855          PR tree-optimization/30771
5856         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
5857         also phi nodes.
5858         (vect_analyze_operations): Induction phis can now be marked as
5859         used_in_loop.
5860         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
5861         Update documentation accordingly.
5862
5863 2007-02-14  Nick Clifton  <nickc@redhat.com>
5864
5865         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
5866         most 3 arguments are supported.
5867         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
5868
5869 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
5870
5871         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
5872         Ensure dst->current is valid.
5873
5874 2007-02-13  Paul Brook  <paul@codesourcery.com>
5875
5876         * config.gcc: Add arm*-*-uclinux-*eabi.
5877         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
5878         (SUBTARGET_EXTRA_LINK_SPEC): Define.
5879         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
5880         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
5881         (LINK_SPEC): Define.
5882         (LIB_SPEC): Define.
5883         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
5884         register.
5885         * config/arm/uclinux-eabi.h: New file.
5886         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
5887         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
5888         based targets.
5889
5890 2007-02-13  Ian Lance Taylor  <iant@google.com>
5891
5892         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
5893         * flags.h (warn_strict_overflow): Declare.
5894         (enum warn_strict_overflow_code): Define.
5895         (issue_strict_overflow_warning): New static inline function.
5896         * opts.c (warn_strict_overflow): New variable.
5897         (common_handle_option): Handle OPT_Wstrict_overflow and
5898         OPT_Wstrict_overflow_.
5899         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
5900         OPT_Wall.
5901         * fold-const.c: Include intl.h.
5902         (fold_deferring_overflow_warnings): New static variable.
5903         (fold_deferred_overflow_warning): New static variable.
5904         (fold_deferred_overflow_code): New static variable.
5905         (fold_defer_overflow_warnings): New function.
5906         (fold_undefer_overflow_warnings): New function.
5907         (fold_undefer_and_ignore_overflow_warnings): New function.
5908         (fold_deferring_overflow_warnings_p): New function.
5909         (fold_overflow_warning): New static function.
5910         (make_range): Add strict_overflow_p parameter.  Change all
5911         callers.
5912         (extract_muldiv, extract_muldiv_1): Likewise.
5913         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
5914         tree_expr_nonnegative_p.
5915         (fold_negate_expr): Call fold_overflow_warning.
5916         (fold_range_test): Likewise.
5917         (fold_comparison): Likewise.
5918         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
5919         instead of tree_expr_nonnegative_p.
5920         (tree_expr_nonnegative_warnv_p): Rename from
5921         tree_expr_nonnegative_p, add strict_overflow_p parameter.
5922         (tree_expr_nonnegative_p): New function.
5923         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
5924         strict_overflow_p parameter.
5925         (tree_expr_nonzero_p): New function.
5926         * passes.c (verify_interpass_invariants): New static function.
5927         (execute_one_pass): Call it.
5928         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
5929         warnings.
5930         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
5931         (estimate_numbers_of_iterations): Likewise.
5932         (scev_probably_wraps_p): Likewise.
5933         * tree-ssa-ccp.c: Include "toplev.h".
5934         (evaluate_stmt): Defer fold overflow warnings until we know we are
5935         going to optimize.
5936         (struct fold_stmt_r_data): Add stmt field.
5937         (fold_stmt_r): Defer fold overflow warnings until we know we
5938         optimized.
5939         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
5940         (fold_stmt_inplace): Likewise.
5941         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
5942         (cleanup_control_expr_graph): Defer fold overflow warnings until
5943         we know we are going to optimize.
5944         * tree-cfg.c (fold_cond_expr_cond): Likewise.
5945         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
5946         Likewise.
5947         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
5948         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
5949         * tree-ssa-loop-manip.c (create_iv): Likewise.
5950         * c-typeck.c (build_conditional_expr): Likewise.
5951         (build_binary_op): Likewise.
5952         * tree-vrp.c (vrp_expr_computes_nonzero): Call
5953         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
5954         (extract_range_from_unary_expr): Likewise.
5955         * simplify-rtx.c (simplify_const_relational_operation): Warn when
5956         assuming that signed overflow does not occur.
5957         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
5958         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
5959         (fold_defer_overflow_warnings): Declare.
5960         (fold_undefer_overflow_warnings): Declare.
5961         (fold_undefer_and_ignore_overflow_warnings): Declare.
5962         (fold_deferring_overflow_warnings_p): Declare.
5963         (tree_expr_nonzero_warnv_p): Declare.
5964         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
5965         of warning options.
5966         (Warning Options): Document -Wstrict-overflow.
5967         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
5968         (tree-ssa-ccp.o): Likewise.
5969         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
5970         (fold-const.o): Depend on intl.h.
5971
5972 2007-02-13  Ian Lance Taylor  <iant@google.com>
5973
5974         PR middle-end/30751
5975         * lower-subreg.c (resolve_simple_move): Decompose subregs in
5976         addresses.
5977
5978 2007-02-13  Stuart Hastings  <stuart@apple.com>
5979
5980         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
5981
5982 2007-02-13  Richard Henderson  <rth@redhat.com>
5983
5984         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
5985         handled_component_p before looking for the indirect_ref.
5986
5987 2007-02-13  Richard Henderson  <rth@redhat.com>
5988
5989         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
5990         remove flags clobber.
5991         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
5992         (bswaphi_lowpart): New.
5993         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
5994         remove TARGET_BSWAP test.  Delete expander of the same name.
5995
5996         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
5997         (expand_unop): Use them.
5998
5999 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
6000
6001         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
6002         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
6003         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
6004         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
6005         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
6006         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
6007         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
6008         assembler dialect choice from asm templates.
6009
6010 2007-02-12  Richard Henderson  <rth@redhat.com>
6011
6012         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
6013         (fixuns_trunc<SSEMODEF>si2): Use it.
6014         * config/i386/sse.md (vec_setv4sf_0): Export.
6015         * config/i386/i386.c (ix86_build_const_vector): Export.
6016         (ix86_split_convert_uns_si_sse): Rename from
6017         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
6018         * config/i386/i386-protos.h: Update.
6019
6020 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6021
6022         PR c/29521
6023         * c-typeck.c (c_finish_return): Improve warning message.
6024
6025 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6026
6027         * alias.c (find_symbolic_term): Delete unused function.
6028
6029 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
6030
6031         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
6032         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
6033         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
6034
6035 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6036
6037         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
6038         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
6039         the function, temporarily point the debug interface to the null one.
6040
6041 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
6042
6043         * dwarf2out.c (round_up_to_align): New static function.
6044         (field_byte_offset): Use it to round the offset.
6045
6046 2007-02-12  Richard Henderson  <rth@redhat.com>
6047
6048         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
6049         (inswl_const): Export.
6050
6051 2007-02-12  Richard Henderson  <rth@redhat.com>
6052
6053         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
6054         result mode of the libcall, convert back to outmode.
6055
6056 2007-02-12  Roger Sayle  <roger@eyesopen.com>
6057
6058         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
6059         (bswapdi2): New define_expand to implement 32-bit implementation.
6060
6061 2007-02-12  Nick Clifton  <nickc@redhat.com>
6062
6063         * doc/invoke.texi (Overall Options): Document --help=.
6064         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
6065         (cc1_options): Pass --help= on to cc1.
6066         (display_help): Add description of --help=.
6067         (process_command): Add code to handle --help=.  Allow translated
6068         --help and --target-help switches to be passed on to compiler
6069         sub-process.
6070         (main): Remove unused if statement.
6071         * opts.c (columns): Remove.
6072         (LEFT_COLUMN): Define.
6073         (wrap_help): Add columns argument.
6074         (print_filtered_help): Change parameters to be an include bitmask,
6075         an exclude bitmask, an any bitmask and the column width.  Move the
6076         code to display the params list here.  Add code to display the
6077         status of options rather than their descriptions if the quiet flag
6078         is not active.
6079         (print_specific_help): Change parameters to be an include bitmask,
6080         an exclude bitmask and an any bitmask.  Move code to look up the
6081         column width here.  Decide upon the title for an options listing.
6082         (common_handle_options): Add code to handle --help=.  Adapt code
6083         for --help and --target-help to use the revised form of the
6084         print_specific_help function.
6085         (print_help): Delete.
6086         (print_param_help): Delete.
6087         (print_switch): Delete.
6088         * opts.h (cl_lang_count): Add prototype.
6089         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
6090         CL_MAX_OPTION_CLASS): New defines.
6091         * optc-gen.awk: Add construction of cl_lang_count.
6092         * c.opt: Add Warning attribute to warning options and Optimization
6093         attribute to optimization options.
6094         * common.opt: Likewise.
6095         Add --help=.
6096         Add -fhelp and -ftarget-help as aliases for the transformed --help
6097         and --target-help options.
6098         * opt-functions.awk: Add code to handle Warning and Optimization
6099         attributes.
6100
6101 2007-02-12  Richard Henderson  <rth@redhat.com>
6102
6103         * config/alpha/constraints.md: New file.
6104         * config/alpha/alpha.c: Include tm-constrs.h.
6105         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
6106         alpha_extra_constraint): Remove.
6107         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
6108         * config/alpha/alpha-protos.h: Update.
6109         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
6110         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
6111         (EXTRA_CONSTRAINT): Remove.
6112         * config/alpha/alpha.md: Include constraints.md.
6113         (adddi splitter): Use satisfies_constraint_*.
6114         * config/alpha/predicates.md (add_operand): Likewise.
6115         (sext_add_operand, addition_operation): Likewise.
6116
6117 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
6118
6119         PR tree-optimization/29145
6120         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
6121         in our handling of restrict qualified pointers.
6122
6123 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6124
6125         PR middle-end/7651
6126         * doc/invoke.texi (Wunused-value): Update description.
6127         (Wextra): Delete item.
6128         * opts.c (set_Wextra): Don't use the value of Wextra to set the
6129         value of Wunused-value.
6130         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
6131         (c_finish_stmt_expr): Don't check extra_warnings.
6132         (emit_side_effect_warnings): The caller is responsible to check
6133         warn_unused_value.
6134
6135 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6136             Matt Thomas  <matt@3am-software.com>
6137
6138         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
6139
6140 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6141
6142         * simplify-rtx.c (simplify_relational_operation_1): Optimize
6143         comparisons of POPCOUNT against zero.
6144         (simplify_const_relational_operation): Likewise.
6145
6146 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6147
6148         * doc/invoke.texi (Wextra): Delete outdated paragraph.
6149
6150 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6151
6152         * dwarf2out.c (root_type): Delete unused function.
6153
6154 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6155
6156         * genattrtab.c (contained_in_p): Delete unused function.
6157         (write_expr_attr_cache): Likewise.
6158
6159 2007-02-11  Jan Hubicka  <jh@suse.cz>
6160
6161         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
6162         previous patch.
6163
6164 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
6165
6166         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
6167         to add the REG_EQ* note.
6168         * see.c (see_merge_one_use_extension): Likewise.
6169         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
6170         turn REG_EQUAL notes into REG_EQUIV notes if the target
6171         register may have more than one set.
6172         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
6173         * gcse.c (try_replace_reg): Likewise.
6174         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
6175         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
6176         more than one REG_EQUIV note.
6177         * reload1.c (gen_reload): Use set_unique_reg_note.
6178
6179 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
6180
6181         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
6182         (ix86_builtin_conversion): New function.
6183
6184 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6185
6186         PR target/29487
6187         * tree.h (DECL_REPLACEABLE_P): New macro.
6188         * except.c (set_nothrow_function_flags): Likewise.
6189
6190 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
6191             Ira Rosen  <irar@il.ibm.com>
6192             Dorit Nuzman  <dorit@il.ibm.com>
6193
6194         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
6195         * targhooks.c (default_builtin_vectorized_conversion): New.
6196         * targhooks.h (default_builtin_vectorized_function): New declaration.
6197         * target.h (struct vectorize): Add builtin_conversion field.
6198         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
6199         stmt_vec_info_type value.
6200         (vectorizable_conversion): New declaration.
6201         * tree-vect-analyze.c (vect_analyze_operations): Add
6202         vectorizable_conversion call.
6203         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
6204         * tree-vect-transform.c (vectorizable_conversion): New function.
6205         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
6206         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
6207         mode.
6208         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
6209         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
6210         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
6211         or ALTIVEC_BUILTIN_VCFSX.
6212
6213 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6214
6215         PR target/30634
6216         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
6217         CONST_DOUBLE and operand 0 is a hard register.
6218         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
6219         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
6220         is a hard floating-point register.
6221
6222 2007-02-10  Richard Henderson  <rth@redhat.com>
6223             Jakub Jelinek  <jakub@redhat.com>
6224             Alexandre Oliva  <aoliva@redhat.com>
6225
6226         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
6227         * builtin-types.def (BT_WORD): Make unsigned.
6228         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
6229         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
6230         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
6231         * c-decl.c (grokdeclarator): Don't error if !have_tls.
6232         * c-parser.c (c_parser_omp_threadprivate): Likewise.
6233         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
6234         emulated tls.
6235         * expr.c (emutls_var_address): New.
6236         (expand_expr_real_1): Expand emulated tls.
6237         (expand_expr_addr_expr_1): Likewise.
6238         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
6239         * output.h (emutls_finish): Declare.
6240         * toplev.c (compile_file): Call it.
6241         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
6242         address before wrapping in CONST.
6243         * varasm.c (emutls_htab, emutls_object_type): New.
6244         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
6245         (get_emutls_object_name, get_emutls_object_type): New.
6246         (get_emutls_init_templ_addr, emutls_decl): New.
6247         (emutls_common_1, emutls_finish): New.
6248         (assemble_variable): When emulating tls, swap decls; generate
6249         constructor for the emutls objects.
6250         (do_assemble_alias): When emulating tls, swap decl and target name.
6251         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
6252         for emulated tls.
6253         * varpool.c (decide_is_variable_needed): Look at force_output.
6254         Recurse for emulated tls.
6255         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
6256         with decide_is_variable_needed.
6257         * emutls.c: New file.
6258         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
6259         tls_object for real tls.
6260
6261 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6262
6263         PR rtl-optimization/29599
6264         * reload1.c (eliminate_regs_in_insn): Take the destination
6265         mode into account when computing the offset.
6266
6267 2007-02-09  Stuart Hastings  <stuart@apple.com>
6268             Richard Henderson  <rth@redhat.com>
6269
6270         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6271         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6272         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
6273         fixuns_truncdfhi2): New.
6274         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
6275         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
6276         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
6277         (floatunssidf2): Allow nonimmediate source.
6278         * gcc/config/i386/sse.md (movdi_to_sse): New.
6279         (vec_concatv2di): Drop '*'.
6280         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
6281         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6282         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
6283         New.
6284         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
6285         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6286         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
6287         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
6288         (ix86_build_signbit_mask): Fix decl of v, refactor to call
6289         ix86_build_const_vector.
6290         (x86_emit_floatuns): Rewrite.
6291
6292 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6293
6294         * genautomata.c (longest_path_length): Delete unused function.
6295         (struct state): Delete unused longest_path_length.
6296         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
6297         (get_free_state): Delete unused.
6298
6299 2007-02-09  Jan Hubicka  <jh@suse.cz>
6300
6301         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
6302         * doc/invoke.texi (inline-unit-growth): Update default value.
6303
6304         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
6305         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
6306         (rebuild_cgraph_edges): Likewise.
6307         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
6308         (dump_cgraph_node): Dump frequencies.
6309         (cgraph_clone_edge): Add frequency scales.
6310         (cgraph_clone_node): Add freuqnecy.
6311         * cgraph.h (cgraph_edge): Add freuqnecy argument.
6312         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
6313         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
6314         * tree-pass.h (TODO_rebuild_frequencies): New constant.
6315         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
6316         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
6317         (save_inline_function_body): Likewise.
6318         * ipa-inline.c: inluce rtl.h
6319         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
6320         (cgraph_edge_badness): Use frequencies.
6321         (cgraph_decide_recursive_inlining): Update clonning.
6322         (cgraph_decide_inlining_of_small_function): Dump frequency.
6323         * predict.c (estimate_bb_frequencies): Export.
6324         * predict.h (estimate_bb_frequencies): Declare.
6325         * tree-inline.c (copy_bb): Watch overflows.
6326         (expand_call_inline): Update call of cgraph_create_edge.
6327         (optimize_inline_calls): Use TODO flags to update frequnecies.
6328         * passes.h: Include predict.h
6329         (init_optimization_passes): Move profile ahead.
6330         (execute_function_todo): Handle TODO_rebuild_frequencies.
6331
6332 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6333
6334         * config/alpha/alpha.c (emit_insxl): Force the first operand of
6335         the insbl or inswl pattern into a register.
6336
6337 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6338
6339         * config/ia64/ia64.md (bswapdi2): New define_insn.
6340
6341 2007-02-09  Richard Henderson  <rth@redhat.com>
6342
6343         * config/i386/constraints.md (Ym): New constraint.
6344         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
6345         (movdi_1_rex64): Split sse and xmm general register moves from
6346         memory move alternatives.  Use conditional register constraints.
6347         (movsf_1, movdf_integer): Likewise.
6348         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
6349         (movdf_integer_rex64): New.
6350         (pushsf_rex64): Fix output constraints.
6351         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
6352         (sse2_stored): Likewise.
6353         (sse2_storeq_rex64): New.
6354         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
6355         amd and not generic.
6356         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
6357         for optimize_size.  Remove SF/DFmode hack.
6358
6359 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6360
6361         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
6362         (bit_SSE4a): New.
6363
6364 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
6365             Richard Sandiford  <richard@codesourcery.com>
6366
6367         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
6368         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
6369         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
6370         m68k/t-mlib to tmake_file.
6371         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
6372         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
6373         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
6374         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
6375         variable is not empty, add t-$m68k_arch_family to tmake_file.
6376         Add t-mlibs to tmake_file.
6377         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
6378         * config/m68k/t-cf: New file.
6379         * config/m68k/t-m68k: Likewise.
6380         * config/m68k/t-mlibs: Likewise.
6381         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6382         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6383         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6384         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6385         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
6386         Delete.
6387         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
6388         (INSTALL_LIBGCC): Delete.
6389         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6390         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6391         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6392         (M68K_MLIB_CPU): Define.
6393         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6394         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6395         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
6396
6397 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
6398             Richard Guenther  <rguenther@suse.de>
6399
6400         PR middle-end/23361
6401         * fold-const.c (fold_comparison): Handle obfuscated comparisons
6402         against INT_MIN/INT_MAX.
6403         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
6404         file if a loop is removed.
6405
6406 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
6407
6408         * calls.c (store_one_arg): Pass correct alignment to
6409         emit_push_insn for non-BLKmode values.
6410         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
6411         unaligned stack slot via a suitably aligned slot.
6412
6413 2007-02-08  DJ Delorie  <dj@redhat.com>
6414
6415         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
6416         warnings.
6417         (legal_subregs): Use unsigned char, make const.
6418         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
6419
6420 2007-02-08  Paul Brook  <paul@codesourcery.com>
6421
6422         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
6423         special interworking needed.
6424
6425 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
6426
6427         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
6428         conditional to __SSE2__.
6429         (Entries below should have been added to first ChangeLog
6430         entry for amdfam10 dated 2007-02-05)
6431         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
6432         defined.
6433         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
6434         defined.
6435         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
6436         defined.
6437
6438 2007-02-08  DJ Delorie  <dj@redhat.com>
6439
6440         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
6441         * config/m32c/m32c.c (legal_subregs): New.
6442         (m32c_illegal_subreg_p): New.
6443         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
6444         unsupported subregs of hard regs.
6445
6446 2007-02-08  Jan Hubicka  <jh@suse.cz>
6447
6448         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
6449         the same one; always update histograms.
6450
6451 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6452
6453         * passes.c (init_optimization_passes): Tidy comment.
6454
6455 2007-02-08  Roger Sayle  <roger@eyesopen.com>
6456
6457         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
6458         strip zero_extend, bswap and rotates from POCOUNT's argument.
6459         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
6460         zero_extend and rotates from PARITY's argument.
6461         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
6462         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
6463         of an integer constant at compile-time.
6464
6465 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6466
6467         PR 30562
6468         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
6469         Update all users.
6470         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
6471         users.
6472         (init_alias_info):
6473         * tree-ssa-live.c (remove_unused_locals): Do not remove
6474         TREE_ADDRESSABLE variables.
6475         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
6476         * tree-ssa-operands.c (add_virtual_operand): Remove argument
6477         FOR_CLOBBER.  Update all users.
6478         If VAR has an associated alias set, add a virtual operand for
6479         it if no alias is found to conflict with the memory reference.
6480
6481 2007-02-07  Jan Hubicka  <jh@suse.cz>
6482             Robert Kidd <rkidd@crhc.uiuc.edu>
6483
6484         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
6485
6486 2007-02-07  Ian Lance Taylor  <iant@google.com>
6487
6488         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
6489
6490 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6491
6492         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
6493         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
6494         tablejumpdi, movsi_to_cr_one): Remove constraints from
6495         define_expand's match_operands.
6496
6497 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6498
6499         * global.c (compute_regsets): Move declatation of "i" inside of
6500         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
6501
6502 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
6503
6504         PR c++/30703
6505         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
6506         of INDIRECT_REF <RESULT_DECL>.
6507
6508         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
6509
6510 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
6511             Kaz Kojima  <kkojima@gcc.gnu.org>
6512
6513         PR target/29746
6514         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
6515         properly.
6516         (sh_initialize_trampoline): Add parentheses to avoid a warning.
6517
6518 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
6519
6520         * doc/loop.texi: Document possibility not to perform disambiguation
6521         of loops with multiple latches.
6522         * cfgloopmanip.c (alp_enum_p): Removed.
6523         (add_loop): Handle subloops.  Use get_loop_body_with_size.
6524         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
6525         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
6526         the new forwarder block.
6527         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
6528         Handle the case latch is NULL.
6529         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
6530         when marking loop exits.
6531         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
6532         be modified.
6533         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
6534         disambiguate_loops_with_multiple_latches.
6535         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
6536         before fix_loop_structure.
6537         * cfgloop.c: Include pointer-set.h and output.h.
6538         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
6539         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
6540         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
6541         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
6542         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
6543         disambiguate_multiple_latches, get_loop_body_with_size,
6544         disambiguate_loops_with_multiple_latches): New functions.
6545         (flow_loop_dump): Dump multiple latch edges.
6546         (flow_loop_nodes_find): Handle loops with multiple latches.
6547         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
6548         (glb_enum_p): Modified.
6549         (get_loop_body): Use get_loop_body_with_size.
6550         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
6551         (AVOID_CFG_MODIFICATIONS): New constant.
6552         (disambiguate_loops_with_multiple_latches, add_loop,
6553         get_loop_body_with_size): Declare.
6554         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
6555
6556 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
6557
6558         PR inline-asm/28686
6559         * global.c (compute_regsets): New function.
6560         (global_alloc): Refactored ELIMINABLE_REGSET
6561         and NO_GLOBAL_ALLOC_REGS computation out.
6562         (rest_of_handle_global_alloc): Call compute_regsets()
6563         for non-optimizing case.
6564
6565 2007-02-06  Richard Henderson  <rth@redhat.com>
6566
6567         * config/i386/constraints.md (Y2): Rename from Y.
6568         (Yi): New constraint.
6569         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
6570         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
6571         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
6572         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
6573         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
6574         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
6575         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
6576         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
6577         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
6578         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
6579         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
6580         vec_extractv2si_1): Change Y constraints to Y2.
6581         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
6582         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
6583         Change Y constraints to Y2.
6584         (sse2_loadld): Change Y constraints to x.
6585
6586 2007-02-06  Roger Sayle  <roger@eyesopen.com>
6587
6588         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
6589         (parity<mode>2): New define_expand using rs6000_emit_parity.
6590         * config/rs6000/rs6000.c (rs6000_emit_popcount,
6591         rs6000_emit_parity): New functions.
6592         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
6593         rs6000_emit_parity): Prototype here.
6594
6595 2007-02-06  Ian Lance Taylor  <iant@google.com>
6596
6597         * lower-subreg.c (simple_move_operand): Reject CONST.
6598         (resolve_clobber): Call validate_change rather than directly
6599         assigning to XEXP (pat, 0).
6600
6601 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6602
6603         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
6604         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
6605         (tree-cfg.o): Remove hashtab.h dependency.
6606
6607         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
6608         (struct ivopts_data): Change niters to pointer_map_t.
6609         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
6610         (niter_for_exit): Create pointer_map on demand.  Change for
6611         pointer_map API.
6612         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
6613         (free_loop_data): Destroy data->niters if created and reset field.
6614         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
6615         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
6616
6617         * tree-ssa-reassoc.c: Include pointer-set.h.
6618         (bb_rank): Change to long *.
6619         (operand_rank): Change to pointer_map_t.
6620         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
6621         (insert_operand_rank): Accept long.
6622         (operand_entry_hash, operand_entry_eq): Remove.
6623         (get_rank): Return long.  Adjust for changes above.
6624         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
6625         and operand_rank.
6626         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
6627
6628         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
6629         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
6630         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
6631         is not NULL.
6632         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
6633         directly since it cannot be NULL.
6634         (get_vi_for_tree): Rewrite for pointer_map API.
6635         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
6636         (init_alias_vars): Create vi_for_tree as pointer_map.
6637         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
6638
6639         * tree-cfg.c: Don't include hashtab.h.
6640         (edge_to_cases): Declare as pointer_map.
6641         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
6642         Delete.
6643         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
6644         (start_recording_case_labels): Create edge_to_cases as pointer_map.
6645         (end_recoding_case_labels): Cleanup edge_to_cases manually before
6646         destroying it.
6647         (record_switch_edge): Delete.
6648         (get_cases_for_edge): Adjust for pointer_map API, inline
6649         record_switch_edge (rewritten for new API), remove goto.
6650
6651 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6652
6653         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
6654         * tree-nested.c: Include pointer-set.h.
6655         (var_map_elt, var_map_eq, var_map_hash): Delete.
6656         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
6657         to pointer_map_t's.
6658         (nesting_info_bitmap_obstack): New.
6659         (lookup_field_for_decl): Adjust for pointer_map API.
6660         (lookup_tramp_for_decl): Adjust for pointer_map API.
6661         (get_nonlocal_debug_decl): Adjust for pointer_map API.
6662         (get_local_debug_decl): Adjust for pointer_map API.
6663         (convert_nl_goto_reference): Adjust for pointer_map API.
6664         (convert_nl_goto_receiver): Adjust for pointer_map API.
6665         (create_nesting_tree): Create outside GGC space.  Create bitmap on
6666         the new obstack.  Create field_map and var_map as pointer_maps.
6667         (free_nesting_tree): Adjust for changes to create_nesting_tree.
6668         (root): Delete.
6669         (lower_nested_functions): Move root here, no need to NULL it.
6670         Initialize and release the obstack.
6671
6672 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
6673
6674         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
6675         Remove prototypes and make them non-static.
6676         (struct tree_int_map): Remove.
6677         * tree.h (struct tree_int_map): Move here, turning TO into an
6678         unsigned int.
6679         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
6680
6681         * tree.h (TREE_COMPLEXITY): Remove.
6682         (struct tree_exp): Remove complexity field.
6683         * tree.c (build1_stat): Don't set it.
6684
6685 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
6686             Victor Kaplansky  <victork@il.ibm.com>
6687
6688         * tree-vectorizer.c (vect_is_simple_use): Support induction.
6689         (vect_is_simple_reduction): Support reduction with induction as
6690         one of the operands.
6691         (vect_is_simple_iv_evolution): Fix formatting.
6692         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
6693         formatting.  Don't mark induction phis for vectorization.
6694         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
6695         * tree-vect-transform.c (get_initial_def_for_induction): New function.
6696         (vect_get_vec_def_for_operand): Support induction.
6697         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
6698         induction case.
6699         (vectorizable_reduction): Support reduction with induction as one of
6700         the operands.
6701         (vectorizable_type_demotion): Use def-type of stmt argument rather
6702         than dummy def-type.
6703
6704         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
6705         flag_tree_scev_cprop.
6706         * common.opt (tree-scev-cprop): New flag.
6707
6708         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
6709         call to vect_get_new_vect_var.
6710
6711 2007-02-06  Ira Rosen  <irar@il.ibm.com>
6712
6713         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
6714         vectype is not NULL.
6715         (vect_pattern_recog_1): Likewise.
6716
6717 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6718
6719         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
6720         (fold_negate_expr): Likewise.
6721
6722 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
6723
6724         PR debug/30189
6725         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
6726         even if cv-qualification is the same.
6727
6728 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
6729
6730         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
6731         __enable_execute_stack on completion.
6732
6733 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6734
6735         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
6736         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
6737         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
6738         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
6739         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
6740         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
6741         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
6742         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
6743
6744 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6745
6746         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
6747         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
6748         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
6749         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
6750         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
6751         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
6752         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
6753         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
6754         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
6755         umuldi3_highpart_rex64, umulsi3_highpart_insn,
6756         umulsi3_highpart_zext, smuldi3_highpart_rex64,
6757         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
6758         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
6759         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
6760         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
6761         sqrtextenddfxf2_i387): Added amdfam10_decode.
6762
6763         * config/i386/athlon.md (athlon_idirect_amdfam10,
6764         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
6765         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
6766         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
6767         athlon_ivector_store_amdfam10): New define_insn_reservation.
6768         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
6769         amdfam10.
6770
6771 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6772
6773         * config/i386/athlon.md (athlon_call_amdfam10,
6774         athlon_pop_amdfam10, athlon_lea_amdfam10): New
6775         define_insn_reservation.
6776         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
6777         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
6778         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
6779
6780 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6781
6782         * config/i386/athlon.md (athlon_sseld_amdfam10,
6783         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
6784         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
6785
6786 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6787
6788         * config/i386/athlon.md (athlon_sseins_amdfam10): New
6789         define_insn_reservation.
6790         * config/i386/i386.md (sseins): Added sseins to define_attr type
6791         and define_attr unit.
6792         * config/i386/sse.md: Set type attribute to sseins for insertq
6793         and insertqi.
6794
6795 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6796
6797         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
6798         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
6799         ssecomi_load_amdfam10, ssecomi_amdfam10,
6800         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
6801         define_insn_reservation.
6802         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
6803
6804 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6805
6806         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
6807         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
6808         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
6809         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
6810         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
6811         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
6812         define_insn_reservation.
6813
6814         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
6815         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
6816         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
6817         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
6818         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
6819
6820 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6821
6822         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
6823         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
6824         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
6825         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
6826         athlon_ssemul_load_k8): Added amdfam10.
6827
6828 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6829
6830         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
6831         (x86_sse_unaligned_move_optimal): New variable.
6832
6833         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
6834         m_AMDFAM10.
6835         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
6836         for unaligned vector SSE double/single precision loads for AMDFAM10.
6837
6838 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6839
6840         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
6841         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
6842         Define TARGET_CPU_DEFAULT_amdfam10.
6843         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
6844         (processor_type): Add PROCESSOR_AMDFAM10.
6845
6846         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
6847         processor_type in config/i386/i386.h.
6848         Enable imul peepholes for TARGET_AMDFAM10.
6849
6850         * config.gcc: Add support for --with-cpu option for amdfam10.
6851
6852         * config/i386/i386.c (amdfam10_cost): New variable.
6853         (m_AMDFAM10): New macro.
6854         (m_ATHLON_K8_AMDFAM10): New macro.
6855         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
6856         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
6857         x86_promote_QImode, x86_integer_DFmode_moves,
6858         x86_partial_reg_dependency, x86_memory_mismatch_stall,
6859         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
6860         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
6861         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
6862         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
6863         Enable/disable for amdfam10.
6864         (override_options): Add amdfam10_cost to processor_target_table.
6865         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
6866         processor_alias_table.
6867         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
6868         (ix86_adjust_cost): Add code for amdfam10.
6869
6870 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6871
6872         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
6873         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
6874         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
6875         * config/i386/i386.h: Add builtin definition for SSE4A.
6876         * config/i386/i386.md: Add support for ABM instructions
6877         (popcnt and lzcnt).
6878         * config/i386/sse.md: Add support for SSE4A instructions
6879         (movntss, movntsd, extrq, insertq).
6880         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
6881         Add -march=amdfam10 flag.
6882         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
6883         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
6884         and amdfam10.
6885         * doc/extend.texi: Add documentation for SSE4A builtins.
6886
6887 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
6888
6889         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
6890
6891 2007-02-05  Richard Guenther  <rguenther@suse.de>
6892
6893         * tree-vectorizer.h (vectorizable_function): Add argument type
6894         argument, change return type.
6895         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
6896         * tree-vect-transform.c (vectorizable_function): Handle extra
6897         argument, return vectorized function decl.
6898         (build_vectorized_function_call): Remove.
6899         (vectorizable_call): Handle calls with result and argument types
6900         differing.  Handle loop vectorization factor correctly.
6901         * targhooks.c (default_builtin_vectorized_function): Adjust for
6902         extra argument.
6903         * targhooks.h (default_builtin_vectorized_function): Likewise.
6904         * target.h (builtin_vectorized_function): Add argument type
6905         argument.
6906         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
6907         extra argument, allow vectorizing of lrintf.
6908         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
6909         documentation of target hook.
6910
6911 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
6912
6913         PR target/30665
6914         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
6915         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
6916         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
6917
6918 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6919
6920         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
6921         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
6922         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
6923         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
6924         before canonicalizing sincos to cexpi.
6925         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
6926
6927 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6928
6929         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
6930         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
6931         (alpha_init_builtins): Use alpha_add_builtins to process tables.
6932
6933 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6934
6935         * mips-tfile.c (initialize_init_file): Correct endianness test.
6936
6937 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
6938
6939         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
6940         the 'y' constraint.
6941
6942 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
6943
6944         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
6945         saves in a PARALLEL before the register assignments.
6946
6947 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
6948
6949         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
6950         DWARF_FRAME_RETURN_COLUMN to be a general register.
6951         * dwarf2out.c (init_return_column_size): New function, split from...
6952         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
6953         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
6954         to be nongeneral registers.
6955         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
6956         integer registers.
6957         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
6958         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
6959
6960 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
6961
6962         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
6963
6964 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
6965
6966         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
6967         (remove_path): Use can_remove_branch_p and remove_branch instead
6968         of loop_delete_branch_edge.
6969         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
6970         (tree_transform_and_unroll_loop): Remove dead branches immediately.
6971         Update profile using scale_dominated_blocks_in_loop.
6972         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
6973         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
6974         (can_remove_branch_p, remove_branch): Declare.
6975         * tree-cfg.c (tree_can_remove_branch_p): New function.
6976         (tree_cfg_hooks): Add tree_can_remove_branch_p.
6977         * cfgrtl.c (rtl_can_remove_branch_p): New function.
6978         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
6979
6980 2007-02-05  Jan Hubicka  <jh@suse.cz>
6981
6982         PR middle-end/30696
6983         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
6984         nodes in cgraph, don't remove offline copy of the function.
6985
6986 2007-02-04  Jan Hubicka  <jh@suse.cz>
6987
6988         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
6989         vectors might cause maybe_lookup_element_for_expr to be called
6990         on non-sra-candidate.
6991
6992 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6993
6994         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
6995         config/bfin/bfin.md, config/bfin/predicates.md: Follow
6996         spelling conventions.
6997
6998 2007-02-04  Richard Guenther  <rguenther@suse.de>
6999
7000         PR middle-end/30636
7001         * fold-const.c (try_move_mult_to_index): Make sure to not
7002         overflow one dimension of a multi-dimensional array access.
7003
7004 2007-02-04  Jan Hubicka  <jh@suse.cz>
7005
7006         * passes.c (init_optimization_passes): Reindent.
7007
7008 2007-02-04  Jan Hubicka  <jh@suse.cz>
7009             Eric Botcazou  <ebotcazou@adacore.com>
7010
7011         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
7012         (execute_fixup_cfg): Break out the abnormal goto code.
7013         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
7014         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
7015         (optimize_inline_calls): Call make_nonlocal_label_edges.
7016
7017 2007-02-04  Jan Hubicka  <jh@suse.cz>
7018
7019         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
7020         true when something was changed.
7021         (rename_ssa_copies): When something was changed, do
7022         TODO_remove_unused_locals.
7023         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
7024         add TODO_remove_unused_locals when instruction was removed.
7025
7026 2007-02-04  Jan Hubicka  <jh@suse.cz>
7027
7028         * ipa-inline.c (try_inline): Improve debug output; work on already
7029         inline edges too.
7030         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
7031         call try_inline for already inlined edges too when flattening;
7032         inline also functions that make callee growth but overall unit size
7033         reduce.
7034
7035 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7036
7037         * config/m32c/bitops.md, config/m32c/jump.md,
7038         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
7039         config/m32r/m32r.h, config/m32r/m32r.md,
7040         config/m32r/predicates.md, config/m68hc11/larith.asm,
7041         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
7042         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
7043         config/mips/mips-protos.h, config/mips/mips.c,
7044         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
7045         config/mn10300/mn10300.h, config/mn10300/predicates.md,
7046         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
7047         spelling conventions.
7048
7049         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
7050         Follow spelling conventions.
7051
7052 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
7053
7054         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
7055         warn about C++0x compatibility.
7056
7057 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
7058
7059         * config/h8300/h8300.c, config/h8300/h8300.h,
7060         config/h8300/h8300.md: Follow spelling conventions.
7061
7062 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
7063
7064         PR middle-end/30667
7065         * combine.c (try_combine): Do not substitute source operand
7066         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
7067
7068 2007-02-03  Jan Hubicka  <jh@suse.cz>
7069
7070         PR gcov-profile/30650
7071         * value-prof.c (stringop_block_profile): Fix handling of size counter;
7072         do not divide by zero for never executed counters.
7073         (tree_find_values_to_profile): Fix counters.
7074         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
7075
7076 2007-02-03  Ian Lance Taylor  <iant@google.com>
7077
7078         * lower-subreg.c (simple_move_operand): New static function,
7079         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
7080         operands.
7081         (simple_move): Call simple_move_operand.
7082         (find_decomposable_subregs): Add special handling of MEMs.
7083         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
7084         meaning of return value.  If we see a hard register, test whether
7085         it can store a word_mode value.  Change all callers.
7086
7087 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7088
7089         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
7090         ftrapv insns and expanders.
7091         (subdi3): Change define_expand operand 1 to arith11_operand, and
7092         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
7093         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
7094         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
7095         respectively.
7096
7097         PR middle-end/30174
7098         * varasm.c (notice_global_symbol): Treat global objects as weak when
7099         flag_shlib is true.
7100
7101 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7102
7103         * emit-rtl.c (dconstpi): Delete.
7104         (dconstsqrt2): New.
7105         (init_emit_once): Delete dconstpi and init dconstsqrt2.
7106         * real.h (dconstpi): Delete.
7107         (dconstsqrt2): New.
7108         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
7109         (fold_builtin_hypot): Likewise.
7110
7111 2007-02-03  Tom Tromey  <tromey@redhat.com>
7112
7113         PR driver/30246
7114         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
7115         -gcoff3, -gxcoff3, -gvms3 implies -dD.
7116
7117 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
7118
7119         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
7120         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
7121         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
7122         config/rs6000/cell.md, config/rs6000/darwin.h,
7123         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
7124         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
7125         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
7126         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
7127         typos.  Follow spelling conventions.
7128         * doc/invoke.texi: Follow spelling conventions.
7129
7130 2007-02-03  Roger Sayle  <roger@eyesopen.com>
7131
7132         * simplify-rtx.c (simplify_relational_operation_1): Implement some
7133         canonicalization transformations that attempt to simplify integer
7134         constant comparisons to become comparisons against zero.
7135
7136 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7137
7138         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
7139         fabs(x)*sqrt(2).
7140         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
7141         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
7142
7143 2007-02-02  Mike Stump  <mrs@apple.com>
7144
7145         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
7146         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
7147         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
7148         generate a branch island.
7149
7150 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
7151
7152         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
7153         (xtensa_legitimate_address_p): New.
7154         (xtensa_legitimize_address): New.
7155         (xtensa_output_addr_const_extra): New.
7156         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
7157         (BASE_REG_P): New.
7158         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
7159         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
7160         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
7161         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
7162         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
7163         (xtensa_legitimize_address): New.
7164         (xtensa_output_addr_const_extra): New.
7165
7166 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
7167
7168         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
7169
7170 2007-02-02  Ian Lance Taylor  <iant@google.com>
7171
7172         * expmed.c (expand_divmod): Add comment.
7173
7174 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
7175
7176         * emit-rtl.c (renumber_insns): Remove.
7177         * flags.h: Remove the extern for flag_renumber_insns.
7178         * rtl.h: Remove the prototype for renumber_insns.
7179         * toplev.c (flag_renumber_insns): Remove.
7180
7181 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
7182
7183         Revert for x86 darwin:
7184         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
7185
7186         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
7187         code before the following patch under TARGET_MACHO.
7188         (ix86_function_value_regno_p): Likewise.
7189
7190 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7191
7192         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
7193         COMPLEX_EXPR.
7194
7195 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7196
7197         PR target/29682
7198         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
7199         general or fp registers.  Add comments.
7200         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
7201
7202 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
7203
7204         * pointer-set.c (insert_aux): Only return insertion slot.
7205         (pointer_set_insert): Adjust.
7206         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
7207         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
7208         pointer_map_traverse): New.
7209         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
7210         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
7211         pointer_map_contains, pointer_map_traverse): Declare.
7212
7213 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
7214
7215         PR middle-end/30473
7216         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
7217         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
7218
7219 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7220
7221         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
7222
7223         (struct _dep): New type.
7224         (dep_t): New typedef.
7225         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
7226         (DEP_STATUS): New access macro.  The macro with the same name was
7227         renamed to DEP_LINK_STATUS.
7228         (dep_init): Declare function
7229
7230         (struct _dep_link): New type.
7231         (dep_link_t): New typedef.
7232         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
7233         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
7234         (DEP_LINK_STATUS): New macro.
7235         (debug_dep_links): New debug function.
7236
7237         (struct _deps_list): New type.
7238         (deps_list_t): New typedef.
7239         (DEPS_LIST_FIRST): New access macro.
7240         (FOR_EACH_DEP_LINK): New cycle macro.
7241         (create_deps_list, free_deps_list, delete_deps_list): Declare
7242         functions.
7243         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7244         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7245         (copy_deps_list_change_con): Ditto.
7246
7247         (move_dep_link): Declare function.
7248
7249         (struct _dep_node): New type.
7250         (dep_node_t): New typedef.
7251         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
7252
7253         (struct haifa_insn_data.back_deps): New field to hold backward
7254         dependencies of the insn.
7255         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
7256         to deps_list_t.
7257         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
7258         Change its type to deps_list_t.
7259         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
7260         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
7261         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
7262
7263         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
7264
7265         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
7266
7267         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
7268         all callers.
7269         (dep_cost): Declare.
7270
7271         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
7272         (ds_to_dk, dk_to_ds): New functions.
7273
7274         (init_dep_1): New static function.
7275         (init_dep): New function.
7276         (copy_dep): New static function.
7277
7278         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
7279         functions.
7280         (detach_dep_link): New static function.
7281         (move_dep_link): New function.
7282
7283         (dep_links_consistent_p, dump_dep_links): New static functions.
7284         (debug_dep_links): New debugging function.
7285
7286         (deps_obstack, dl_obstack, dn_obstack): New static variables.
7287
7288         (alloc_deps_list, init_deps_list): New static functions.
7289         (create_deps_list): New function.
7290         (clear_deps_list): New static function.
7291         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
7292         (deps_list_consistent_p, dump_deps_list): New static functions.
7293         (debug_deps_list): New function.
7294         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
7295         functions.
7296         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
7297
7298         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
7299         use new scheduler dependencies lists.
7300         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
7301         (sched_analyze): Ditto.  Initialize dependencies lists.
7302         (add_forw_dep, compute_forward_dependences): Update to use new
7303         scheduler dependencies lists.
7304
7305         (init_dependency_caches): Init deps_obstack.
7306         (free_dependency_caches): Free deps_obstack.
7307
7308         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
7309         new scheduler dependencies lists.
7310         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
7311         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7312
7313         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
7314         Update to use new scheduler dependencies lists.
7315         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
7316         (debug_dependencies): Ditto.
7317         (schedule_region): Update comments.
7318
7319         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
7320         scheduler dependencies lists.
7321         (schedule_ebb): Update comments.
7322
7323         * rtl.def (DEPS_LIST): Remove.
7324
7325         * lists.c (unused_deps_list): Remove.
7326         (free_list): Update assertions.
7327
7328         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
7329         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7330
7331         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
7332         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7333
7334         * haifa-sched.c (comments): Update.
7335         (insn_cost1): Remove.  Inline the code into insn_cost ().
7336         (insn_cost): Update to use new scheduler dependencies lists.  Move
7337         processing of the dependency cost to dep_cost ().
7338         (dep_cost): New function.  Use it instead of insn_cost () when
7339         evaluating cost of the dependency.  Use compatible interface to
7340         interact with the target.
7341         (priority): Update to use new scheduler dependencies lists.
7342         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
7343         with greater number of insns that depend on the insn.
7344         (schedule_insn): Update to use new scheduler dependencies lists.  Add
7345         code to free backward dependencies lists.  Inline and optimize code
7346         from resolve_dep () - see PR28071.
7347         (ok_for_early_queue_removal): Update to use new scheduler dependencies
7348         lists.  Update call to targetm.sched.is_costly_dependence hook.
7349
7350         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7351         scheduler dependencies lists.
7352
7353         (resolve_dep): Remove.  Move the logic to schedule_insn ().
7354         (init_h_i_d): Initialize dependencies lists.
7355
7356         (process_insn_depend_be_in_spec): Rename to
7357         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
7358         dependencies lists.
7359         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
7360         Update to use new scheduler dependencies lists.
7361         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
7362
7363         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
7364         new scheduler dependencies lists.
7365         (build_intra_loop_deps): Ditto.
7366
7367         * target.h (struct _dep): Declare to use in
7368         gcc_target.sched.is_costly_dependence.
7369         (struct gcc_target.sched.adjust_cost): Fix typo.
7370         (struct gcc_target.sched.is_costly_dependence): Change signature to use
7371         single dep_t parameter instead of an equivalent triad.
7372         (struct gcc_target.sched.adjust_cost_2): Remove.
7373
7374         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
7375
7376         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
7377
7378         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
7379         documentation.
7380         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
7381
7382         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
7383         (REG_DEP_TRUE): Document.
7384
7385         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
7386         Change signature to correspond to the targetm.sched.adjust_cost hook.
7387         Update use in TARGET_SCHED_ADJUST_COST_2.
7388         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
7389         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
7390         new scheduler dependencies lists.
7391         (ia64_gen_check): Ditto.
7392
7393         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
7394         dependencies lists.
7395
7396         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
7397         signature to correspond to the targetm.sched.is_costly_dependence hook.
7398         (is_costly_group): Update to use new scheduler dependencies lists.
7399
7400         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
7401         instead of INSN_COST () macro.
7402
7403 2007-02-01  Ian Lance Taylor  <iant@google.com>
7404
7405         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
7406
7407 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
7408
7409         * pa.md (tp_load): Correct mfctl instruction syntax.
7410
7411 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
7412
7413         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
7414         altivec_padding_size calculation on AIX.  Improve comment, add
7415         assert to verify that it's right.
7416
7417         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
7418         64-bit.
7419
7420 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
7421
7422         PR inline-asm/28686
7423         * global.c (global_alloc): Add mising initialization of
7424         ELIMINABLE_REGSET.
7425
7426 2007-02-01  Roger Sayle  <roger@eyesopen.com>
7427
7428         * alias.c (init_alias_analysis): Correct whitespace.
7429         * bb-reorder.c (fix_edges_for_rarely_executed_code,
7430         partition_hot_cold_basic_blocks): Likewise.
7431         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
7432         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
7433         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
7434         fold_builtin_snprintf_chk, fold_builtin_printf,
7435         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
7436         do_mpfr_arg3, do_mpfr_sincos): Likewise.
7437         * cfgcleanup.c (cleanup_cfg): Likewise.
7438         * cfgexpand.c (tree_expand_cfg): Likewise.
7439         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
7440         * function.c (get_next_funcdef_no): Likewise.
7441         * gengtype.c (main): Likewise.
7442         * genmodes.c (main): Likewise.
7443         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
7444         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
7445         * ifcvt.c (noce_emit_move_insn): Likewise.
7446         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
7447         Likewise.
7448         * stor-layout.c (get_best_mode): Likewise.
7449         * tree-ssa-loop-niter.c (get_val_for): Likewise.
7450         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
7451         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
7452         perform_var_substitution, solve_graph): Likewise.
7453         * tree-vrp.c (vrp_finalize): Likewise.
7454
7455 2007-02-01  Ian Lance Taylor  <iant@google.com>
7456
7457         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
7458         high part of a paradoxical subreg, return a constant zero.
7459
7460 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
7461
7462         * toplev.c (lang_dependent_init): Call init_set_costs.
7463         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
7464
7465 2007-02-01  Richard Guenther  <rguenther@suse.de>
7466
7467         PR middle-end/30656
7468         * fold-const.c (fold_negate_expr): Allow negating a
7469         constant if overflow does not change.
7470
7471 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7472
7473         * doc/c-tree.texi (Expression trees): Improve markup.
7474         * doc/tm.texi (Register Classes, Addressing Modes)
7475         (Floating Point): Fix spacing after abbreviations.  Fix some
7476         typos.
7477
7478 2007-02-01  Ben Elliston  <bje@au.ibm.com>
7479
7480         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
7481         * doc/contrib.texi: Likewise.
7482         * doc/install.texi: Likewise.
7483
7484 2007-01-31  Richard Henderson  <rth@redhat.com>
7485             Ian Lance Taylor  <iant@google.com>
7486
7487         * lower-subreg.c: New file.
7488         * rtl.def (CONCATN): Define.
7489         * passes.c (init_optimization_passes): Add pass_lower_subreg and
7490         pass_lower_subreg2.
7491         * emit-rtl.c (update_reg_offset): New static function, broken out
7492         of gen_rtx_REG_offset.
7493         (gen_rtx_REG_offset): Call update_reg_offset.
7494         (gen_reg_rtx_offset): New function.
7495         * regclass.c: Revert patch of 2006-03-05, restoring
7496         reg_scan_update.
7497         (clear_reg_info_regno): New function.
7498         * dwarf2out.c (concatn_loc_descriptor): New static function.
7499         (loc_descriptor): Handle CONCATN.
7500         * common.opt (fsplit_wide_types): New option.
7501         * opts.c (decode_options): Set flag_split_wide_types when
7502         optimizing.
7503         * timevar.def (TV_LOWER_SUBREG): Define.
7504         * rtl.h (gen_reg_rtx_offset): Declare.
7505         (reg_scan_update): Declare.
7506         * regs.h (clear_reg_info_regno): Declare.
7507         * tree-pass.h (pass_lower_subreg): Declare.
7508         (pass_lower_subreg2): Declare.
7509         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
7510         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
7511         -fsplit-wide-types.
7512         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
7513         * Makefile.in (OBJS-common): Add lower-subreg.o.
7514         (lower-subreg.o): New target.
7515
7516 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7517
7518         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
7519
7520 2007-01-31  Anatoly Sokolov <aesok@post.ru>
7521
7522         PR target/19087
7523         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
7524
7525 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7526
7527         PR middle-end/29335
7528         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
7529
7530 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
7531
7532         * cfgloop.h: Include vec-prim.h.
7533         (enum li_flags): Remove LI_ONLY_OLD.
7534         (loop_iterator): Changed.
7535         (fel_next, fel_init): Iterate over loop tree.
7536         (FOR_EACH_LOOP_BREAK): New macro.
7537         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
7538         FOR_EACH_LOOP.
7539         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
7540         * modulo-sched.c (sms_schedule): Ditto.
7541         * tree-vectorizer.c (vectorize_loops): Ditto.
7542         * doc/loop.texi: Update information on loop numbering and behavior of
7543         FOR_EACH_LOOP wrto new loops.
7544         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
7545         add_to_evolution_1): Test nestedness of loops instead of comparing
7546         their numbers.
7547         * tree-chrec.c (chrec_fold_plus_poly_poly,
7548         chrec_fold_multiply_poly_poly, chrec_evaluate,
7549         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
7550         reset_evolution_in_loop): Ditto.
7551         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
7552
7553 2007-01-31  Dirk Mueller  <dmueller@suse.de>
7554
7555         * c-common.c (warn_about_parentheses): Separate warning about
7556         un-parenthized sequence of comparison operators from the one
7557         which is supposed to warn about x <= y <= z.
7558
7559 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
7560
7561         * optabs.h (enum optab_index): Add new OTI_isinf.
7562         (isinf_optab): Define corresponding macro.
7563         * optabs.c (init_optabs): Initialize isinf_optab.
7564         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
7565         patterns.
7566         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
7567         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
7568         using isinf_optab.
7569         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
7570         expand_builtin_interclass_mathfn.
7571         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
7572         * config/i386/i386.md (UNSPEC_FXAM): New constant.
7573         (fxam<mode>2_i387): New insn pattern.
7574         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
7575         built-in functions as x87 inline asm.
7576
7577 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7578
7579         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
7580
7581 2007-01-30  Eric Christopher  <echristo@apple.com>
7582
7583         * config.gcc: Add geode.
7584
7585 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7586
7587         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
7588         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
7589         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
7590         value-prof.c: Fix comment typos.
7591
7592 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7593
7594         PR c++/24745
7595         * doc/invoke.texi (Wpointer-arith): Document warning.
7596
7597 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
7598
7599         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
7600         the list of discrepancies from the draft TR.
7601
7602 2007-01-30  Dirk Mueller  <dmueller@suse.de>
7603
7604         PR c++/30601
7605         * doc/invoke.texi (-Wreturn-type): Update description to
7606         match new behavior.
7607
7608 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
7609
7610         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
7611
7612 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
7613
7614         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
7615         to handle optabs that operate on floating point input argument and
7616         output to integer output.
7617         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
7618         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
7619         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
7620         expand_builtin_interclass_mathfn ().
7621         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
7622         (ilogbsi2): Remove.
7623         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
7624         ilogbl built-in functions as x87 intrinsics.
7625
7626 2007-01-30  Richard Guenther  <rguenther@suse.de>
7627
7628         PR middle-end/27657
7629         * dwarf2out.c (reference_to_unused): Query varpool if the
7630         variable was output.
7631
7632 2007-01-30  Richard Guenther  <rguenther@suse.de>
7633
7634         PR middle-end/30313
7635         * passes.c (execute_one_pass): Reset in_gimple_form to not
7636         confuse non-unit-at-a-time mode.
7637
7638 2007-01-29  Roger Sayle  <roger@eyesopen.com>
7639             Richard Guenther  <rguenther@suse.de>
7640
7641         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
7642         avoid undefined behaviour on overflow.  Use force_fit_type_double
7643         to construct the constant with the specified TREE_OVERFLOW.
7644
7645 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7646
7647         * config/dfp-bit.c: Add parameterized support for fp exceptions.
7648         * config/dfp-bit.h: Ditto.
7649
7650 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7651
7652         * c-decl.c (pop_scope): Replace warnings with call to
7653         warn_for_unused_label.
7654         * c-common.h (warn_for_unused_label): Declare.
7655         * c-common.c (warn_for_unused_label): Define.
7656
7657 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7658
7659         * tree-optimize.c (update_inlined_to_pointers): Delete unused
7660         function.
7661
7662 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7663
7664         * Makefile.in (USER_H): Remove decfloat.h.
7665         * ginclude/decfloat.h: Delete, moving contents to ...
7666         * ginclude/float.h: Add support for decimal floating point,
7667         guarded by __STDC_WANT_DEC_FP__.
7668
7669 2007-01-29  Mike Stump  <mrs@apple.com>
7670
7671         * doc/gccint.texi (Top): Rename Loop Representation to Loop
7672         Analysis and Representation to resolve case insensitive conflict.
7673         * doc/loop.texi (Loop Analysis and Representation): Likewise.
7674
7675 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
7676
7677         * tree.h (struct tree_memory_tag): Add aliases member.
7678         (MTAG_ALIASES): New macro.
7679         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
7680         (add_may_alias): Remove pointer-set. Update for may_aliases being
7681         a bitmap.
7682         (mark_aliases_call_clobbered): Update for may_aliases being a
7683         bitmap.
7684         (compute_tag_properties): Ditto.
7685         (create_partition_for): Ditto.
7686         (compute_memory_partitions): Ditto.
7687         (dump_may_aliases_for): Ditto.
7688         (is_aliased_with): Ditto.
7689         (add_may_alias_for_new_tag): Ditto.
7690         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
7691         (compute_is_aliased): New function.
7692         (compute_may_aliases): Call compute_is_aliased).
7693         (init_alias_info): Initialize alias_bitmap_obstack.
7694         (union_alias_set_into): New function.
7695         (compute_flow_sensitive_aliasing): Use union_aliases_into.
7696         (have_common_aliases_p): Rewrite to take two bitmaps and use
7697         intersection.
7698         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
7699         Update for bitmaps.
7700         (finalize_ref_all_pointers): Update for add_may_alias changes.
7701         (new_type_alias): Ditto.
7702         * tree-flow-inline.h (may_aliases): Return a bitmap.
7703         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
7704         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
7705         may_aliases being a bitmap.
7706         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
7707         may_aliases now returns a bitmap.
7708         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
7709         being a bitmap.
7710         * tree-ssa-operands.c (add_virtual_operand): Update for
7711         may_aliases being a bitmap.
7712
7713 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
7714
7715         PR tree-optimization/30630
7716         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
7717         variable as changed.
7718
7719 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
7720
7721         PR c++/28266
7722         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
7723         expanded only once even if an error occurs.
7724
7725 2007-01-29  Ben Elliston  <bje@au.ibm.com>
7726
7727         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
7728         (__gcov_average_profiler): Likewise.
7729         (__gcov_ior_profiler): Likewise.
7730         (__gcov_merge_ior): Likewise.
7731
7732 2007-01-28  Jan Hubicka  <jh@suse.cz>
7733
7734         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
7735         * value-prof.c (stringop_block_profile): Likewise.
7736
7737 2007-01-28  Jan Hubicka  <jh@suse.cz>
7738
7739         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
7740         variant handling histograms; add wrapper.
7741         (clear_storage_via_libcall): Export.
7742         (emit_block_move_hints): Break out from ...; add histograms.
7743         (emit_block_move): ... this one.
7744         (clear_storage_hints): Break out from ...; add histograms.
7745         (clear_storage): ... this one.
7746         (set_storage_via_memset): Handle histogram.
7747         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
7748         (clear_storage_hints, clear_storage_via_libcall): Declare.
7749         (set_storage_via_setmem): Update prototype.
7750         * doc/md.texi (movmem, setmem): Document new arguments.
7751
7752         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
7753         new histograms.
7754         (stringop_block_profile): New global function.
7755         (tree_stringops_values_to_profile): Profile block size and alignment.
7756         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
7757         HIST_TYPE_IOR.
7758         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
7759         (stringop_block_profile): Declare.
7760         * builtins.c: Include value-prof.h.
7761         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
7762         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
7763         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
7764         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
7765         * profile.c (instrument_values): Add new counters.
7766         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
7767         calls.
7768         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
7769         (tree_init_edge_profiler): Build new profilers.
7770         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
7771         (pass_tree_profile): Add dump.
7772         (tree_profile_hooks): Update.
7773         * Makefile.in (LIBGCOV): Add new constants.
7774         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
7775         __gcov_ior_profiler): New.
7776         * i386.md (movmem/setmem expanders): Add new optional arguments.
7777
7778 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
7779
7780         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
7781
7782 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
7783
7784         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
7785         (tree_unswitch_single_loop): Pass eni_size_weights to
7786         tree_num_loop_insns.
7787         * tree-ssa-loop-manip.c: Include tree-inline.h.
7788         (can_unroll_loop_p): Pass eni_size_weights to
7789         tree_num_loop_insns.
7790         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
7791         Pass eni_size_weights to estimate_num_insns.
7792         * tree.h (init_inline_once): Export.
7793         * toplev.c (backend_init): Call init_inline_once.
7794         * cgraphunit.c (cgraph_process_new_functions,
7795         cgraph_analyze_function): Pass eni_inlining_weights to
7796         estimate_num_insns.
7797         * ipa-inline.c (compute_inline_parameters): Ditto.
7798         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
7799         to estimate_num_insns.
7800         (try_unroll_loop_completely): Pass eni_size_weights to
7801         tree_num_loop_insns.
7802         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
7803         ot estimate_num_insns.
7804         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
7805         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
7806         * tree-inline.c (eni_inlining_weights, eni_size_weights,
7807         eni_time_weights): New variables.
7808         (init_inline_once): Initialize them.
7809         (struct eni_data): Mew.
7810         (estimate_num_insns_1, estimate_num_insns): Use weights.
7811         * tree-inline.h (struct eni_weights_d): New.
7812         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
7813         (estimate_num_insns): Declaration changed.
7814         * cfgloop.h (tree_num_loop_insns): Declaration changed.
7815         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
7816         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
7817
7818 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
7819
7820         * tree-data-ref.c (conflict_fn): Assert that the number of affine
7821         relations in the conflict function is valid.
7822
7823 2007-01-27  Ian Lance Taylor  <iant@google.com>
7824
7825         * common.opt: Add fstrict-overflow.
7826         * opts.c (decode_options): Set flag_strict_overflow if -O2.
7827         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
7828         (TYPE_OVERFLOW_UNDEFINED): Define.
7829         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
7830         Replace all uses.
7831         * tree.h (TYPE_TRAP_SIGNED): Don't define.
7832         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
7833         (fold_negate_expr): Likewise.
7834         (make_range): Likewise.
7835         (extract_muldiv_1): Likewise.
7836         (maybe_canonicalize_comparison): Likewise.
7837         (fold_comparison): Likewise.
7838         (fold_binary): Likewise.
7839         (tree_expr_nonnegative_p): Likewise.
7840         (tree_expr_nonzero_p): Likewise.
7841         * tree-vrp.c (compare_values): Likewise.
7842         (extract_range_from_binary_expr): Likewise.
7843         (extract_range_from_unary_expr): Likewise.
7844         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
7845         Likewise.
7846         (nowrap_type_p): Likewise.
7847         * tree-scalar-evolution.c (simple_iv): Likewise.
7848         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
7849         (build_range_check): Likewise.
7850         (extract_muldiv_1): Likewise.
7851         (fold_comparison): Likewise.
7852         * tree-vrp.c (vrp_int_const_binop): Likewise.
7853         (extract_range_from_unary_expr): Likewise.
7854         * convert.c (convert_to_integer): Likewise.
7855         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
7856         (fold_comparison): Likewise.
7857         (fold_binary): Likewise.
7858         * optabs.c (optab_for_tree_code): Likewise.
7859         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
7860         * simplify-rtx.c (simplify_const_relational_operation): Check
7861         flag_strict_overflow and flag_trapv.
7862         (simplify_const_relational_operation): Likewise.
7863         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
7864         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
7865         -fstrict-overflow.
7866
7867 2007-01-27  Roger Sayle  <roger@eyesopen.com>
7868
7869         * tree.c (tree_fold_gcd): Delete.
7870         * tree.h (tree_fold_gcd): Remove prototype.
7871         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
7872         test whether one constant integer is a multiple of another.  Instead
7873         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
7874         * fold-const.c (multiple_of_p):  We've determined both TOP and
7875         BOTTOM are integer constants so we can call int_const_binop directly
7876         instead of the more generic const_binop.
7877
7878 2007-01-27  Roger Sayle  <roger@eyesopen.com>
7879
7880         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
7881         1*X check that the constant hasn't overflowed, to preserve the
7882         TREE_OVERFLOW bit.
7883         (round_up): Provide an efficient implementation when rouding-up an
7884         INTEGER_CST to a power-of-two.
7885
7886 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7887
7888         * doc/sourcebuild.texi: Add comma for clarity.
7889         * doc/extend.texi: Fix some typos.
7890         * doc/passes.texi: Likewise.
7891         * doc/cppinternals.texi: Likewise.
7892         * doc/c-tree.texi: Likewise.
7893         * doc/tree-ssa.texi: Likewise.
7894         * doc/install.texi: Likewise.
7895
7896 2007-01-27  Jan Hubicka  <jh@suse.cz>
7897
7898         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
7899         (pass_sra): Do not require alias information.
7900         * passes.c (init_optimization_passes): Add SRA
7901
7902 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
7903
7904         * tracer.c (rest_of_handle_tracer): We already cleaned
7905         up the CFG in tracer() so don't do it here again.
7906         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
7907         cleanup_cfg here, either.  And don't call renumber_insns.
7908
7909         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
7910         and BB_HEAD are in the insn stream here.  Instead make sure
7911         that BB_INSN is valid on all insns.  Also, do check here that
7912         there are no pending branch predictions...
7913         (rtl_verify_flow_info): ...instead of doing it here.  Checks
7914         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
7915         here.
7916
7917 2007-01-26  Roger Sayle  <roger@eyesopen.com>
7918
7919         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
7920         function to simplify/factorize operand order canonicalization.
7921         (ix86_fixup_binary_operands): Reorganize using the above function.
7922         (ix86_binary_operator_ok): Likewise.
7923
7924 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
7925
7926         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
7927         file scope from optimize_attrs.
7928         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
7929         up search.
7930         (optimize_attrs): Clear insn_code_values after freeing it.
7931
7932 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
7933
7934         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
7935         a parts.base assignment.
7936
7937 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
7938
7939         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
7940         (compute_subscript_distance, initialize_data_dependence_relation,
7941         finalize_ddr_dependent, analyze_ziv_subscript,
7942         analyze_siv_subscript_cst_affine,
7943         compute_overlap_steps_for_affine_univar,
7944         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7945         analyze_siv_subscript, analyze_miv_subscript,
7946         analyze_overlapping_iterations, subscript_dependence_tester_1,
7947         compute_self_dependence, free_dependence_relation): Work
7948         with affine_fn instead of chrecs.
7949         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
7950         common_affine_function, affine_function_base,
7951         affine_function_constant_p, affine_fn_op, affine_fn_plus,
7952         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
7953         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
7954         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
7955         (all_chrecs_equal_p): Removed.
7956         * tree-data-ref.h (affine_fn, conflict_function): New types.
7957         (struct subscript): Change type of conflicting_iterations_in_a
7958         and conflicting_iterations_in_b.
7959
7960 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
7961
7962         PR other/30182
7963         * config/pa/pa.h (TARGET_HPUX_11): New.
7964         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
7965         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
7966
7967 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
7968         Richard Guenther  <rguenther@suse.de>
7969
7970         * tree-ssa-structalias.c (solve_graph): Handle case
7971         we merged the variable to another.
7972
7973 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7974
7975         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
7976         functions.
7977
7978         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
7979         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
7980
7981 2007-01-25  DJ Delorie  <dj@redhat.com>
7982
7983         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
7984         allow changes to modes which don't fit in those registers.
7985
7986         * reload1.c (choose_reload_regs): Check for invalid subregs before
7987         computing their locations, not after.
7988
7989 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
7990
7991         PR 25127
7992         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
7993         save Altivec registers in an eh_return function.
7994         (compute_vrsave_mask): Likewise.
7995         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
7996         for saving Altivec registers.
7997         (rs6000_emit_prologue): Don't allocate stack twice in
7998         eh_return function.  Correct expected value of altivec_save_offset
7999         when using save_world.  Describe save of R0 to stack when using
8000         save_world.  Describe stack pointer adjustment when using
8001         save_world.  Remove duplicated eh_return parameter register saving.
8002         Update sp_offset variable after save_world.
8003         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
8004         darwin-world.asm.
8005         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
8006         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
8007         implies Altivec.
8008
8009 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8010
8011         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
8012
8013 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
8014
8015         PR other/30182
8016         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
8017         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
8018
8019 2007-01-25  Richard Guenther  <rguenther@suse.de>
8020
8021         * doc/invoke.texi (-Wcoverage-mismatch): Document.
8022         * common.opt (-Wcoverage-mismatch): New warning option.
8023         * coverage.c (get_coverage_counts): Ignore coverage mismatch
8024         if -Wcoverage-mismatch is given.
8025
8026 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
8027
8028         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
8029         (ipcp_driver): Change to static definition.
8030         Add dumping of the ifunctions.
8031         (constant_val_insert): Remove unused parameter. Support for SSA.
8032         (ipcp_propagate_const): Support for SSA.
8033         (ipcp_profile_bb_print): Print only analyzed nodes.
8034         (ipcp_replace_map_create): Remove support for Fortran constant
8035         for now.
8036         * ipa-prop.c (ipa_method_modify_stmt,
8037         ipa_callsite_compute_param): Support for SSA.
8038         * ipa-prop.h (ipcp_driver): Remove declaration.
8039         (IS_VALID_TREE_MAP_INDEX): Add define.
8040
8041 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
8042
8043         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
8044
8045 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8046
8047         PR middle-end/30447
8048         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
8049         constant argument to cabs and do it without checking for
8050         -funsafe-math-optimizations.
8051
8052 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
8053
8054         * c-common.h (RID_FIRST_CXX0X): New.
8055         (RID_LAST_CXX0X): New.
8056         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
8057         by -Wall.
8058         * c.opt (Wc++0x-compat): New.
8059         * doc/invoke.texi (-Wc++0x-compat): Document.
8060
8061 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8062
8063         * builtins.c (fold_builtin_carg): New.
8064         (fold_builtin_1): Use it.
8065
8066 2007-01-24  Jan Hubicka  <jh@suse.cz>
8067
8068         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
8069
8070         * ipa-inline.c (initial_insns, max_insns): Delete.
8071         (compute_max_insns): New function.
8072         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
8073         of insns as base for code growth.
8074         (cgraph_decide_inlining): Make initial_insns local; do not compute
8075         max_insns.
8076         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
8077         * doc/invoke.texi (inline-unit-growth): Update docs.
8078
8079 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
8080
8081         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
8082         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
8083         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
8084         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
8085         for CPUs that have PTA_CX16 set.
8086
8087         PR middle-end/27416
8088         * gimplify.c (omp_check_private): New function.
8089         (gimplify_scan_omp_clauses): Use it for
8090         firstprivate/lastprivate/reduction.
8091
8092         PR middle-end/30494
8093         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
8094         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
8095
8096         PR middle-end/30421
8097         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
8098         If lower_lastprivate_clauses emits some statements, append them
8099         to dlist rather than body_p and to body_p append an initializer.
8100         (lower_omp_for): Adjust caller.
8101
8102 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
8103
8104         * target.h (globalize_decl_name): New.
8105         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8106         * output.h (default_globalize_decl_name): New.
8107         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
8108         globalize_label.
8109         (globalize_decl): Ditto.
8110         (default_globalize_decl_name): New.
8111         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
8112         (ia64_handle_version_id_attribute): New.
8113         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
8114         (ia64_asm_output_external): Use globalize_decl_name instead
8115         of globalize_label.
8116         * doc/extend.texi (version_id): New pragma.
8117         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
8118
8119 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8120
8121         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
8122         _uleb128_t and _Unwind_SWord with _sleb128_t.
8123         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
8124         uw_frame_state_for, uw_update_context_1): Likewise.
8125         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
8126         * unwind-pe.h (read_uleb128, read_sleb128,
8127         read_encoded_value_with_base): Likewise.
8128         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
8129
8130 2007-01-24  Richard Guenther  <rguenther@suse.de>
8131
8132         * builtins.c (expand_builtin_cexpi): Get the fndecl
8133         for cexp in the correct way.
8134
8135 2007-01-24  Jan Hubicka  <jh@suse.cz>
8136
8137         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
8138
8139 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8140
8141         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
8142         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
8143         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
8144         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
8145         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
8146         __SIZEOF_PTRDIFF_T__.
8147         * doc/cpp.texi: Documentation for the new builtin macros added.
8148
8149 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
8150
8151         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
8152         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
8153         instead of operands[2] to avoid access past the end of array.
8154
8155 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
8156
8157         * reload1.c (emit_reload_insns): Pass the reload register
8158         for a non-spill output reload through forget_old_reloads_1.
8159
8160 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
8161
8162         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8163         _SOFT_DOUBLE if doubles use software floating-point.
8164         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
8165         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8166         * config/rs6000/darwin-ldouble.c: Also compile functions for
8167         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
8168         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8169         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
8170         commented-out long double override.
8171         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
8172         * config/rs6000/eabispe.h: Likewise.
8173         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
8174         long double for non-SPE.
8175         (rs6000_handle_option): Likewise.
8176         (invalid_e500_subreg): Disallow more subregs involding DImode,
8177         DFmode, TImode or TFmode.
8178         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
8179         E500 double.
8180         (legitimate_lo_sum_address_p): Also check for TFmode for E500
8181         double.
8182         (rs6000_legitimize_address): Also handle TFmode for E500 double.
8183         (rs6000_legitimize_reload_address): Also handle TFmode for E500
8184         double.
8185         (rs6000_legitimate_address): Also check for TFmode for E500
8186         double.
8187         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
8188         (spe_build_register_parallel): Handle TFmode and TCmode.
8189         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
8190         double.
8191         (function_arg): Handle TFmode and TCmode for E500 double.
8192         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
8193         in general.
8194         (print_operand): Handle TFmode and TImode for %y.
8195         (rs6000_generate_compare): Handle TFmode comparisons for E500
8196         double.
8197         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
8198         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
8199         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
8200         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
8201         TFmode for E500 double.
8202         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
8203         (floatsidf2): Enable for E500 double.
8204         (movtf_softfloat): Use rs6000_nonimmediate_operand.
8205         (extenddftf2): Change to extenddftf2_fprs.
8206         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
8207         depending on TARGET_E500_DOUBLE.
8208         (extendsftf2): Enable for E500 double.
8209         (trunctfdf2): Enable for E500 double.
8210         (trunctfsf2): Change to trunctfsf2_fprs.
8211         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
8212         depending on TARGET_E500_DOUBLE.
8213         (floatsitf2): Enable for E500 double.
8214         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
8215         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
8216         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
8217         (negtf2): Change to negtf2_internal.
8218         (negtf2): New expander.
8219         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
8220         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
8221         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
8222         (movdi_internal32): Use rs6000_nonimmediate_operand.
8223         (unnamed splitter): Likewise.
8224         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
8225         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
8226         (SPE64TF, DITI): New mode macros.
8227         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
8228         modes.
8229         (frob_tf_ti): New.
8230         (frob_<mode>_di_2): New.
8231         (frob_tf_di_8_2): New.
8232         (frob_di_df): Change to frob_di_<mode>; allow more modes.
8233         (frob_ti_tf): New.
8234         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
8235         more modes.
8236         (frob_ti_<mode>_8_2): New.
8237         (frob_ti_tf_2): New.
8238         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
8239         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
8240         TFmode.
8241         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
8242         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
8243         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
8244         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
8245         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
8246         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
8247         tsttflt_gp): New.
8248
8249 2007-01-23  Ian Lance Taylor  <iant@google.com>
8250
8251         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
8252         insn-*.o first.
8253         (OBJS-archive): Reformat, alphabetize.
8254         (OBJS): Change out_object_file to OBJS-md.
8255
8256 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
8257
8258         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
8259         JUMP_P and CALL_P predicates where applicable.
8260         * config/i386/i386.c: Ditto.
8261         * config/i386/i386.md: Ditto.
8262         * config/i386/mmx.md: Ditto.
8263         * config/i386/predicates.md: Ditto.
8264
8265 2007-01-22  Andreas Schwab  <schwab@suse.de>
8266
8267         * config/m68k/m68k.h: Fix comment.
8268
8269 2007-01-22  Jan Hubicka  <jh@suse.cz>
8270
8271         * passes.c (init_optimization_passes): Do not rerun
8272         pass_early_warn_uninitialized.
8273
8274 2007-01-22  Richard Guenther  <rguenther@suse.de>
8275
8276         PR tree-optimization/30038
8277         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
8278         function.
8279         (execute_cse_sincos_1): Likewise.
8280         (execute_cse_sincos): Likewise.
8281         (gate_cse_sincos): Likewise.
8282         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
8283         the cexpi() canonicalization of sincos().
8284         * tree-pass.h (pass_cse_sincos): Declare.
8285         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
8286
8287 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
8288
8289         PR rtl-optimization/29329
8290         * combine.c (replaced_rhs_insn): Rename to i2mod.
8291         (replaced_rhs_value): Rename to i2mod_new_rhs.
8292         (i2mod_old_rhs): New global variable.
8293         (combine_instructions): Adjust for above change.  Save a copy of
8294         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
8295         note are substituted in the second instruction.
8296         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
8297         ditch the note if it pertains to the second eliminated register
8298         and this register is mentioned in i2mod_old_rhs.
8299
8300         Revert:
8301         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
8302
8303         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
8304         the insn to which the note was originally attached.
8305
8306 2007-01-21  Jan Hubicka  <jh@suse.cz>
8307
8308         * ipa-inline.c (inlining_mode): Comment, move up.
8309         (cgraph_decide_inlining_incrementally): Do not perform inlining
8310         itself; fix handling of flattening of self recursive functions.
8311         (cgraph_find_cycles): Remove.
8312         (cgraph_flatten_node): Remove.
8313         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
8314         (try_inline): New function.
8315         (cgraph_early_inlining): Update call of
8316         cgraph_decide_inlining_incrementally.  Apply inlining here.
8317         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
8318
8319 2007-01-21  Dirk Mueller  <dmueller@suse.de>
8320
8321         PR bootstrap/30511
8322         * tree-vrp.c (check_array_bounds): do not warn
8323         about ADDR_EXPR's of ARRAY_REF's which are immediately
8324         used in binary expressions.
8325
8326 2007-01-21  Ira Rosen  <irar@il.ibm.com>
8327
8328         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
8329         read_write_dep and macros for its access.
8330         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
8331         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
8332         argument, call vect_check_interleaving for every independent pair of
8333         data-refs. Mark loads that access the same memory location as a store
8334         in the loop.
8335         (vect_check_dependences): Remove.
8336         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
8337         call, fix the call to vect_analyze_data_ref_dependence.
8338         (vect_analyze_data_ref_access): For statements that access the same
8339         data-ref, check that they are not stores; for loads, check that there
8340         is no store that access the same location.
8341
8342 2007-01-20  Roger Sayle  <roger@eyesopen.com>
8343             Joseph Myers  <joseph@codesourcery.com>
8344
8345         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
8346         (-fdump-rtl-stack): Likewise.
8347         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
8348         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
8349         (-mpt-fixed): Use @minus{} for minus sign.
8350         (Using Precompiled Headers): Fix under/overfull hbox.
8351
8352 2007-01-20  Jan Hubicka  <jh@suse.cz>
8353
8354         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
8355         place within annotation.
8356
8357 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8358
8359         * pa.c (output_move_double): Change array size of xoperands to 4.
8360
8361 2007-01-20  Jan Hubicka  <jh@suse.cz>
8362
8363         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
8364         as temporary.
8365
8366 2007-01-19  Ian Lance Taylor  <iant@google.com>
8367
8368         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
8369         constant to unsigned HOST_WIDE_INT before negating.
8370
8371 2007-01-19  Ian Lance Taylor  <iant@google.com>
8372
8373         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
8374         to unsigned.
8375         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
8376         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8377         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
8378         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
8379         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8380         (realloc_vdef, realloc_vuse): Change second parameter to
8381         unsigned.
8382         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
8383         fields to unsigned.
8384         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
8385         unsigned. Change x and lim locals to unsigned.
8386         (realloc_vdef, realloc_vuse): Change num_elem parameter to
8387         unsigned.
8388         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
8389         (copy_virtual_operands): Change i and n locals to unsigned.
8390
8391 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8392
8393         PR middle-end/29335
8394         * builtins.c (fold_builtin_1): Handle builtin fdim.
8395
8396 2007-01-20  Jan Hubicka  <jh@suse.cz>
8397
8398         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
8399         * tree-ssa-structalias.c (compute_points_to_sets): Do call
8400         init_alias_heapvars.
8401         (init_alias_heapvars): Initialize only when not already initialized.
8402         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
8403
8404 2007-01-19  Roger Sayle  <roger@eyesopen.com>
8405
8406         * common.opt (fsigned-zeros): New command line option.
8407         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
8408         of flag_unsafe_math_optimizations.
8409         * opts.c (set_fast_math_flags): The -ffast-math command line option
8410         implies -fno-signed-zeros.
8411         (fast_math_flags_set_p): Likewise.
8412
8413         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
8414         the documentation of -ffast-math appropriately.  Wrap long lines.
8415
8416 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
8417
8418         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
8419         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
8420
8421 2007-01-19  Tomas Bily  <tbily@suse.cz>
8422
8423         * cgraphunit.c (cgraph_finalize_function): Updating of pid
8424         * tree-profile.c:
8425         (tree_init_ic_make_global_vars): New function
8426         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
8427         (tree_gen_ic_profiler): New function
8428         (tree_gen_ic_func_profiler): New function
8429         (tree_profiling): Added calling of tree_gen_ic_func_profiler
8430         (tree_profile_hooks): Added hook for indirec/virtual calls
8431         * value-prof.c (tree_find_values_to_profile): New case for
8432         indirect calls
8433         (tree_values_to_profile): Call for determining indirect/virtual
8434         counters
8435         (tree_indirect_call_to_profile): New function
8436         (tree_ic_transform): New function
8437         (tree_ic): New function
8438         (find_func_by_pid): New function
8439         (init_pid_map): New function
8440         (tree_value_profile_transformations): Added check for
8441         indirect/virtual call transformation
8442         * value-prof.h (enum hist_type): New counter type for
8443         indirect/virtual calls
8444         (profile_hooks): Added new hook for profiling indirect/virtual
8445         calls
8446         * profile.c (instrument_values): New case for indirect/virtual
8447         call added
8448         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
8449         (GCOV_COUNTER_V_INDIR): New counter type
8450         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
8451         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
8452         call added
8453         * cgraph.c: Definition of cgraph_max_pid
8454         (cgraph_create_node): Default init of pid attribute
8455         * cgraph.h: Declaration of cgraph_max_pid
8456         (struct cgraph_node): Added pid attribute
8457         * libgcov.c (__gcov_indirect_call_profiler): New function
8458         (__gcov_one_value_profiler_body): New function
8459         (__gcov_one_value_profiler): Body was moved to
8460         __gcov_one_value_profiler_body and calls it
8461
8462 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
8463
8464         * doc/gty.texi (Options): Document the mark_hook option to GTY.
8465         * gengtype.c (write_types_data, write_func_for_structure,
8466         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
8467         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
8468         (walk_type, write_func_for_structure): Generate the mark_hook if
8469         needed.
8470
8471 2007-01-19  Jan Hubicka  <jh@suse.cz>
8472
8473         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
8474         'early' argument take inlining mode argument specifying whether to
8475         inline for size/speeed or all functions; add support for flattening;
8476         improve dumpting.
8477         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
8478
8479 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8480
8481         PR c++/17947
8482         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
8483         the name of the declared identifier.
8484
8485 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8486
8487         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
8488         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
8489         duplicate evaluation.
8490
8491 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8492
8493         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
8494         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
8495         to XFMode, use acosxf2 and truncate result to requested mode.
8496         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
8497         (asin<mode>2): Similarly, with asin expanders.
8498         (*fscalexf4_i387): Rename from *fscalexf4.
8499         (expNcorexf3): New expander.
8500         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
8501         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
8502         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
8503         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
8504         patterns for SSE math.
8505         (exp10<mode>2): Similarly, with exp10 expanders.
8506         (exp2<mode>2): Similarly, with exp2 expanders.
8507         (expm1<mode>2): Similarly, with expm1 expanders.
8508         (ldexp<mode>3): Similarly, with ldexp expanders.
8509         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
8510         Use gen_truncxf<mode>2_i387_noop to truncate result.
8511
8512 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8513
8514         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
8515         for ColdFire targets.
8516
8517 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
8518             Richard Sandiford  <richard@codesourcery.com>
8519
8520         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
8521         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
8522         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
8523         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
8524         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8525         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8526
8527 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8528
8529         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
8530         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
8531         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
8532         (*adddi_dilshr32_cf): New pattern.
8533         (adddi3, subdi3): Remove first alternatives.
8534
8535 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8536
8537         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
8538         implemented using move.l, do not use its cc result for floating-point
8539         comparisons.
8540
8541 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8542
8543         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
8544         from accepting 's' constraints if flag_pic.
8545
8546 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8547
8548         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
8549         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
8550         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
8551         condition from TARGET_68881 to TARGET_HARD_FLOAT.
8552
8553 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
8554
8555         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
8556         ColdFire alternatives.
8557         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
8558         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
8559         architectures that support ff1 instruction.
8560
8561 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8562             Julian Brown  <julian@codesourcery.com>
8563
8564         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
8565         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
8566         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
8567         Add commentary.
8568
8569 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8570
8571         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
8572         and return a bool.
8573         (output_move_const_into_data_reg, output_move_simode_const): Delete.
8574         * config/m68k/m68k.c (const_method, const_int_cost): Take a
8575         HOST_WIDE_INT instead of an rtx.
8576         (m68k_rtx_costs): Update call accordingly.
8577         (output_move_const_into_data_reg): Likewise.  Fix formatting.
8578         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
8579         Return a bool.
8580         (output_move_simode_const): Update calls after above changes.
8581         Rework to use automatic variables and predicates like MEM_P.
8582         * config/m68k/m68k.md (pushexthisi_const): Update call to
8583         valid_mov3q_const.
8584
8585 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8586
8587         * tree-ssa-alias.c (perform_var_substitution): Fix typo
8588         in dump_flags test.
8589
8590 2007-01-19  Richard Guenther  <rguenther@suse.de>
8591
8592         * builtins.c (expand_builtin_cexpi): Fall back to expanding
8593         via cexp in case sincos is not available.
8594
8595 2007-01-19  Richard Guenther  <rguenther@suse.de>
8596
8597         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
8598         * defaults.h (TARGET_HAS_SINCOS): Default to off.
8599         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
8600         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
8601         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
8602         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
8603         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
8604         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
8605
8606 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8607
8608         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
8609         New insn patterns.
8610         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
8611         (atan2xf3): Directly generate RTL pattern.
8612         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
8613         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8614         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8615         disable patterns for SSE math.
8616         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
8617         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8618         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8619         disable patterns for SSE math.
8620
8621 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
8622
8623         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
8624
8625 2007-01-18  Roger Sayle  <roger@eyesopen.com>
8626
8627         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
8628         VIEW_CONVERT_EXPR to the same type as it's operand.
8629
8630 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
8631
8632         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
8633         configured for long double 128.
8634
8635 2007-01-18  Mike Stump  <mrs@apple.com>
8636
8637         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
8638         error.
8639
8640 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
8641
8642         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
8643         type correct.
8644
8645 2007-01-18  Jan Hubicka  <jh@suse.cz>
8646
8647         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
8648         greater than NUM_VOP_FREE_BUCKETS.
8649
8650 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
8651
8652         * tree-ssa-structalias.c: Update comments.
8653         (ptabitmap_obstack): Removed.
8654         (pta_obstack): New.
8655         (oldpta_obstack): Ditto.
8656         (stats): Add a few members.
8657         (struct variable_info): Remove node, complex, address_taken, and
8658         indirect_target members. Add oldsolution member.
8659         (new_var_info): Do not initialize removed members.
8660         (constraint_expr_type): Remove INCLUDES.
8661         (constraint_graph): Add size, implicit_preds, rep,
8662         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
8663         (FIRST_REF_NODE): New macro.
8664         (LAST_REF_NODE): Ditto.
8665         (FIRST_ADDR_NODE): Ditto.
8666         (find): New function.
8667         (unite): Ditto.
8668         (dump_constraint): Do not handle INCLUDES.
8669         (insert_into_complex): Do not insert duplicate constraints.
8670         (condense_varmap_nodes): Renamed and rewritten into ...
8671         (merge_node_constraints): This. Also fix bug in handling of
8672         offseted copy constraints.
8673         (clear_edges_for_node): No longer need to deal with preds at all,
8674         or removing associated preds/succs.
8675         (merge_graph_nodes): Deal with indirect_cycles.
8676         Don't deal with predecessors.
8677         (add_implicit_graph_edge): New function.
8678         (add_pred_graph_edge): Ditto.
8679         (add_graph_edge): Don't deal with predecessors.
8680         (build_constraint_graph): Removed.
8681         (build_pred_graph): New function.
8682         (build_succ_graph): Ditto.
8683         (struct scc_info): Removed in_component. Added roots, dfs, and
8684         node_mapping. Remove visited_index, unification_queue.
8685         (scc_visit): Deal with union-find we do now.
8686         Deal with cycles with REF nodes.
8687         (collapse_nodes): Renamed and rewritten to ...
8688         (unify_nodes): This.
8689         (process_unification_queue): Removed.
8690         (topo_visit): Cleanup
8691         (do_da_constraint): Use find.
8692         (do_sd_constraint): Ditto.
8693         (do_ds_constraint): Ditto.
8694         (do_complex_constraint): Ditto.
8695         (init_scc_info): Update for removed and added members.
8696         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
8697         (find_indirect_cycles): This.
8698         (equivalence_class): New variable.
8699         (label_visit): New function.
8700         (perform_variable_substitution): Rewritten.
8701         (free_var_substitution_info): New function.
8702         (find_equivalent_node): Ditto.
8703         (move_complex_constraints): Ditto.
8704         (eliminate_indirect_cycles): Ditto.
8705         (solve_graph): Only propagate changed bits.
8706         Use indirect cycle elimination.
8707         Use find.
8708         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
8709         (tree_id_eq): Renamed to ...
8710         (tree_vi_eq): This. Update for member change
8711         (insert_id_for_tree): Renamed and rewritten to ...
8712         (insert_vi_for_tree): This.
8713         (lookup_id_for_tree): Renamed and rewritten to ...
8714         (lookup_vi_for_tree): This.
8715         (get_id_for_tree): Renamed and rewritten to ...
8716         (get_vi_for_tree): Ditto.
8717         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
8718         (process_constraint): Don't handle INCLUDES.
8719         Remove special ADDRESSOF case.
8720         (find_func_aliases): Rewrite to use vi functions instead of id
8721         ones.
8722         (create_function_info_for): Ditto.
8723         (create_variable_info_for): Ditto.
8724         (intra_create_variable_infos): Ditto.
8725         (merge_smts_into): Ditto.
8726         (find_what_p_points_to): Ditto.
8727         (init_base_vars): Ditto.
8728         (init_alias_vars): Ditto.
8729         (remove_preds_and_fake_succs): New function.
8730         (dump_sa_points_to_info): Dump new stats.
8731         (dump_solution_for_var): Use find.
8732         (set_used_smts): Fix formatting.
8733         (compute_points_to_sets): Updated for new functions.
8734         (ipa_pta_execute): Ditto.
8735
8736 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8737             Richard Sandiford  <richard@codesourcery.com>
8738
8739         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
8740         parallels.
8741         * calls.c (expand_call): If the return value is a PARALLEL,
8742         extract its first member.
8743         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
8744         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
8745         use FUNCTION_EXTRA_EPILOGUE.
8746         (m68k_function_value): Return a PARALLEL if the return value
8747         is of a pointer type.
8748         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
8749         (FUNCTION_EXTRA_EPILOGUE): Remove.
8750         * config/m68k/m68k.md (D0_REG): New constant.
8751
8752 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8753
8754         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
8755         output a NOP for empty epilogues.
8756
8757 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8758
8759         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
8760         before function.  Extend register save check to include all
8761         registers, not just integer ones.
8762
8763 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8764
8765         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
8766         (m68k_use_return_insn): ...this.
8767         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
8768         * config/m68k/m68k.c (use_return_insn): Rename to...
8769         (m68k_use_return_insn): ...this.
8770         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
8771         of USE_RETURN_INSN.
8772
8773 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8774
8775         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
8776         nearest even, fix denormal rounding overflow.
8777
8778 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8779
8780         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
8781         f%$smove and f%$move.
8782         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
8783         (extendsfdf2_cf): Use fdmove instead of f%&move.
8784         (truncdfsf2_cf): Use fsmove instead of f%$smove.
8785         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
8786
8787 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8788
8789         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
8790         GPR<-GPR moves.
8791
8792 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8793
8794         * real.h (real_format): Add a canonical_nan_lsbs_set field.
8795         (coldfire_single_format): Declare.
8796         (coldfire_double_format): Likewise.
8797         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
8798         of qnan_msb_set to determine the lower bits of a canonical
8799         NaN significand.
8800         (encode_ieee_double): Likewise.
8801         (encode_ieee_quad): Likewise.
8802         (ieee_single_format): Initialize canonical_nan_lsbs_set.
8803         (mips_single_format): Likewise.
8804         (ieee_double_format): Likewise.
8805         (mips_double_format): Likewise.
8806         (ieee_extended_motorola_format): Likewise.
8807         (ieee_extended_intel_96_format): Likewise.
8808         (ieee_extended_intel_128_format): Likewise.
8809         (ieee_extended_intel_96_round_53_format): Likewise.
8810         (ibm_extended_format): Likewise.
8811         (mips_extended_format): Likewise.
8812         (ieee_quad_format): Likewise.
8813         (mips_quad_format): Likewise.
8814         (vax_f_format): Likewise.
8815         (vax_d_format): Likewise.
8816         (vax_g_format): Likewise.
8817         (i370_single_format): Likewise.
8818         (i370_double_format): Likewise.
8819         (decimal_single_format): Likewise.
8820         (decimal_double_format): Likewise.
8821         (decimal_quad_format): Likewise.
8822         (c4x_single_format): Likewise.
8823         (c4x_extended_format): Likewise.
8824         (real_internal_format): Likewise.
8825         (coldfire_single_format): New real_format.
8826         (coldfire_double_format): Likewise.
8827         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
8828         canonical_nan_lsbs_set.
8829         (pdp11_d_format): Likewise.
8830         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
8831         if TARGET_COLDFIRE_CPU.
8832
8833 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8834
8835         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
8836         (output_call, m68k_legitimize_call_address): Declare.
8837         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
8838         parenthesees.  Add support for a 'W' constraint.
8839         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
8840         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
8841         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
8842         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
8843         variables.
8844         (override_options): Initialize them.  Do not set flag_no_function_cse
8845         for TARGET_ID_SHARED_LIBRARY.
8846         (m68k_output_pic_call): Delete.
8847         (m68k_legitimize_call_address): New function.
8848         (print_operand): Remove the %o prefix.  Handle the %p prefix.
8849         (output_call): New function.
8850         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
8851         target address from the GOT if symbolic jumps are not allowed.
8852         * config/m68k/m68k.md (call, general_operand): Do not set
8853         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
8854         Merge separate flag_pic and !flag_pic define_insns into...
8855         (*call, *call_value): ...these new patterns.  Match the address
8856         rather than the containing MEM and require it to be a call_operand.
8857         Use output_call to generate the asm template.
8858         * config/m68k/predicates.md (const_call_operand): New predicate.
8859         (call_operand): Likewise.
8860
8861 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8862
8863         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
8864         (STACK_GROWS_DOWNWARD): Define to 1.
8865         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
8866         comments, emphasizing that these values are only defaults.
8867         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
8868         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
8869
8870 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8871
8872         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
8873
8874 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8875             Richard Sandiford  <richard@codesourcery.com>
8876
8877         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
8878         (FP_REGNO_P): New macros.
8879         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
8880         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
8881         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
8882         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
8883
8884 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8885
8886         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8887         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
8888         to $tmake_file.
8889         * config/m68k/t-floatlib: New file, extracting common code from...
8890         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
8891         * config/m68k/t-uclinux: Here.
8892         * config/m68k/fpgnulib.c: Do not compile extendeed precision
8893         routines on ColdFire targets.
8894
8895 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8896
8897         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8898         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
8899         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
8900         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
8901         explicitly set MOTOROLA to 1.
8902         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
8903
8904 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8905             Nathan Sidwell  <nathan@codesourcery.com>
8906
8907         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
8908         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
8909         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
8910         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
8911         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
8912         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
8913         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
8914         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
8915         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
8916         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
8917         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
8918         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
8919         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
8920         (DBX_REGISTER_NUMBER): Delete.
8921         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
8922         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
8923         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
8924
8925 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8926
8927         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
8928         * config/flat.h: New file.
8929         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
8930         OBJECT_FORMAT_FLAT.
8931         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
8932         indirect references for -msep-data or -mid-shared-library.
8933         Do not use PC-relative code addresses either.
8934         * config/m68k/m68k.c (override_options): Restrict -fPIC error
8935         to -mpcrel.
8936         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
8937         for shared libraries and crt1.o for executables.  Use crti.o and
8938         crtbegin.o.
8939         (ENDFILE_SPEC): Use crtend.o and crtn.o.
8940         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
8941         Do not add -elf2flt or -shared-lib-id options here.
8942         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
8943         Pass -shared-lib-id if -mid-shared-library, taking the library
8944         identifier from -mshared-library-id if given, otherwise
8945         defaulting to 0.
8946         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
8947         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
8948         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
8949         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
8950         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
8951         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
8952         and crtend.o.
8953         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
8954         jump sequence for ISA A and ISA A+.
8955         (PICJUMP): Likewise.
8956
8957 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8958
8959         * config.gcc (m68k-*-uclinux*): Base the port on the common
8960         and m68k GNU/Linux files rather than on the generic ELF ones.
8961         * config/m68k/uclinux.h (TARGET_VERSION): Override.
8962         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
8963
8964 2007-01-18  Julian Brown  <julian@codesourcery.com>
8965             Richard Sandiford  <richard@codesourcery.com>
8966
8967         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
8968         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8969         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
8970         before redefining.
8971         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
8972         80 unconditionally.
8973         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8974
8975 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8976
8977         * doc/install.texi: Document m68k-uclinuxoldabi.
8978         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
8979         * config/m68k/uclinux-oldabi.h: New file, copied from
8980         config/m68k/uclinux.h.
8981
8982 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
8983
8984         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
8985         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
8986         (m32r_compute_frame_size): Use unsigned for regno.
8987         (m32r_reload_lr): Use gen_frame_mem.
8988         (pop): New.
8989         (m32r_output_function_epilogue): Don't output the function epilogue
8990         textually here.
8991         (m32r_expand_epilogue): New.
8992         (direct_return): Return false if the function has the interrupt
8993         attribute.
8994         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
8995         * config/m32r/m32r.md (epilogue): New expander.
8996         (return_lr, return_rte): New insns.
8997         (return): Make it expander.
8998         (return_normal): New expander.
8999
9000 2007-01-18  Josh Conner  <jconner@apple.com>
9001
9002         PR target/30485
9003         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
9004         support for UNLE, UNLT, UNGE, and UNGT.
9005
9006 2007-01-18  Jan Hubicka  <jh@suse.cz>
9007
9008         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
9009         * tree-tailcall (add_virtual_phis): Likewise.
9010         (optimize_tail_call): Return TODOs.
9011         (execute_tail_calls): Return TODOs.
9012         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
9013         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
9014         changed.
9015         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
9016         Cleanup cfg using TODO.
9017         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
9018         * passes.c (execute_function_todo): When cleanup did something, remove
9019         unused locals.
9020         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
9021         (make_edges): Don't cleanup_cfg.
9022
9023 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
9024
9025         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
9026         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
9027         operate on the top of stack.
9028         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
9029         register handling of instructions that output to the second
9030         stack slot.
9031         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
9032         (move_for_stack_reg): Special-case check for dead destination
9033         stack slot for constant load of 1.0 inside UNSPEC_TAN.
9034
9035         * config/i386/i386.md (UNSPEC_TAN): New constant.
9036         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
9037         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
9038         to correctly model move of constant 1.0 to top stack slot.
9039         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
9040         (unnamed peephole2 pattern): Remove corresponding peephole2
9041         pattern that optimizes tan insn and loading of constant 1.0.
9042         (tanxf2): Use fptanxf4_i387.
9043         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
9044         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
9045         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
9046         disable patterns for SSE math.
9047         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
9048         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
9049
9050 2007-01-18  Dirk Mueller  <dmueller@suse.de>
9051             Richard Guenther <rguenther@suse.de>
9052
9053         PR diagnostic/8268
9054         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
9055         * common.opt (Warray-bounds): Add new warning option.
9056         * c-opts.c (c_common_handle_option): Define -Warray-bounds
9057         if -Wall is given.
9058         * Makefile.in: make tree-vrp.o depend on toplev.h
9059         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
9060         is enabled.
9061         (check_array_refs, check_array_bounds, check_array_ref): New.
9062
9063 2007-01-18  Jan Hubicka  <jh@suse.cz>
9064
9065         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
9066         (execute_ssa_ccp): Return flags conditionally.
9067         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
9068         changed.
9069         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
9070
9071 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
9072
9073         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
9074         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
9075
9076         * Makefile.c (GTFILES): Add cfglayout.h.
9077         * gengtype.c (open_base_files): Likewise.
9078         * cfglayout.c (cfg_layout_function_footer,
9079         cfg_layout_function_header) Reindent to make gengtype happy.
9080         * cfglayout.h (cfg_layout_function_footer,
9081         cfg_layout_function_header): Add GTY(()) marker.
9082
9083         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
9084
9085 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9086
9087         * genautomata.c (write_automata): Include xstrerror output in the
9088         error message if writing the DFA description file fails.
9089
9090 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
9091
9092         * config/mips/mips-protos.h (mips_output_external): Make it
9093         return void.
9094         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
9095         * config/mips/mips.c (irix_output_external_libcall): Likewise.
9096         (extern_list): Likewise.
9097         (extern_head): Likewise.
9098         (TARGET_ASM_FILE_END): Likewise.
9099         (mips_file_end): Likewise.
9100         (mips_output_external): Rewritten.
9101
9102 2007-01-18  Ben Elliston  <bje@au.ibm.com>
9103
9104         * genpreds.c (write_insn_preds_c): Only write out the function
9105         body for regclass_for_constraint if we have register constraints.
9106
9107 2007-01-17  Tom Tromey  <tromey@redhat.com>
9108
9109         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
9110         * doc/install.texi (Testing): Use sourceware.org.
9111         (Binaries): Likewise.
9112         (Specific): Likewise.
9113         * doc/contrib.texi (Contributors): Use sourceware.org.
9114
9115 2007-01-17  Anatoly Sokolov <aesok@post.ru>
9116
9117         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
9118         (AVR_ENHANCED): Rename to ...
9119         (AVR_HAVE_MUL): ... new.
9120         (avr_enhanced_p): Rename to ...
9121         (avr_have_mul_p): ... new.
9122         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
9123         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
9124         * config/avr/avr.c (avr_enhanced_p): Rename to ...
9125         (avr_have_mul_p): ... new.
9126         (base_arch_s): Rename 'enhanced' to 'have_mul'.
9127         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
9128         'avr_enhanced_p' and 'enhanced'.
9129         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
9130         AVR_HAVE_MUL instead of AVR_ENHANCED.
9131         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9132         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
9133         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
9134         instead of AVR_ENHANCED.
9135         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
9136         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
9137         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
9138
9139 2007-01-17  Ian Lance Taylor  <iant@google.com>
9140
9141         * vec.h (VEC_reserve_exact): Define.
9142         (vec_gc_p_reserve_exact): Declare.
9143         (vec_gc_o_reserve_exact): Declare.
9144         (vec_heap_p_reserve_exact): Declare.
9145         (vec_heap_o_reserve_exact): Declare.
9146         (VEC_OP (T,A,reserve_exact)): New static inline function, three
9147         versions.
9148         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
9149         negative parameter.
9150         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
9151         (VEC_OP (T,A,copy)) [all versions]: Likewise.
9152         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
9153         * vec.c (calculate_allocation): Add exact parameter.  Change all
9154         callers.
9155         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
9156         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
9157         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
9158         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
9159         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
9160         (vec_heap_p_reserve_exact): New function.
9161         (vec_heap_o_reserve_exact): New function.
9162
9163 2007-01-17  Jan Hubicka  <jh@suse.cz>
9164
9165         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
9166
9167 2007-01-17  Eric Christopher  <echristo@apple.com>
9168
9169         * config.gcc: Support core2 processor.
9170
9171 2007-01-16  Jan Hubicka  <jh@suse.cz>
9172
9173         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
9174         the names, just unlink the chain so we don't crash on dangling pointers
9175         to dead SSA names.
9176
9177 2007-01-16  Jan Hubicka  <jh@suse.cz>
9178
9179         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
9180         * tree-pass.h: Reorder to make IPA passes appear toegher.
9181         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
9182         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
9183         parameters, do not call early inliner.
9184         * ipa-inline.c: Update comments.  Include tree-flow.h
9185         (cgraph_decide_inlining): Do not compute inlining parameters.
9186         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
9187         be called with function context set up.
9188         (pass_ipa_inline): Remove unreachable functions before pass.
9189         (cgraph_early_inlining): Simplify assuming to be called from the
9190         PM as local pass.
9191         (pass_early_inline): New pass.
9192         (cgraph_gate_ipa_early_inlining): New gate.
9193         (pass_ipa_early_inline): Turn into simple wrapper.
9194         (compute_inline_parameters): New function.
9195         (gate_inline_passes): New gate.
9196         (pass_inline_parameters): New pass.
9197         (apply_inline): Move here from tree-optimize.c
9198         (pass_apply_inline): New pass.
9199         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
9200         transforming.
9201         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
9202         doing them by hand.
9203         (tree_function_versioning): Do not allocate dummy struct function.
9204         * tree-inline.h (optimize_inline_calls): Update prototype.
9205         * tree-optimize.c (execute_fixup_cfg): Export.
9206         (pass_fixup_cfg): Remove
9207         (tree_rest_of_compilation): Do not apply inlines.
9208         * tree-flow.h (execute_fixup_cfg): Declare.
9209         * Makefile.in (gt-passes.c): New.
9210         * passes.c: Include gt-passes.h
9211         (init_optimization_passes): New passes.
9212         (nnodes, order): New static vars.
9213         (do_per_function_toporder): New function.
9214         (execute_one_pass): Dump current pass here.
9215         (execute_ipa_pass_list): Don't dump current pass here.
9216
9217 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
9218
9219         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
9220         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
9221
9222 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
9223
9224         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
9225         (strong_alias): Define.
9226         (__gcc_qmul): Provide non-FMA for soft-float.
9227         (__gcc_qdiv): Same.
9228         (__gcc_qneg): New.
9229         (__gcc_qeq): New.
9230         (__gcc_qle): New.
9231         (__gcc_qge): New.
9232         (__gcc_qunord): New.
9233         (__gcc_stoq): New.
9234         (__gcc_dtoq): New.
9235         (__gcc_qtos): New.
9236         (__gcc_qtod): New.
9237         (__gcc_qtoi): New.
9238         (__gcc_qtou): New.
9239         (__gcc_itoq): New.
9240         (__gcc_utoq): New.
9241         (fmsub): New.
9242         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
9243         soft-float functions.
9244         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
9245         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
9246         about long double soft float.
9247
9248 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
9249             Tehila Meyzels  <tehila@il.ibm.com>
9250
9251         * tree-vectorizer.h (is_pattern_stmt_p): New.
9252         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
9253         formatting (tabs instead of spaces). Cleanup and clarify setting
9254         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
9255         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
9256         (vectorizable_type_demotion): Check that types are integral.
9257         (vectorizable_type_promotion): Likewise.
9258         (vectorizable_store): Fix typo.  Eliminate new-line at end of
9259         comments.
9260
9261 2007-01-16  Jan Hubicka  <jh@suse.cz>
9262
9263         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
9264         cgraph edges too.
9265
9266 2007-01-15  Eric Christopher  <echristo@apple.com>
9267
9268         * ifcvt.c: Include vec.h, vecprim.h.
9269         (check_cond_move_block): New argument regs.
9270         Reorganize. Add registers used to regs.
9271         (cond_move_process_if_block): Use regs set above as
9272         loop bounds.
9273
9274 2007-01-15  Eric Christopher  <echristo@apple.com>
9275
9276         * config/darwin.h: Update copyright.
9277         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
9278         (LINK_COMMAND_SPEC): Add -u.
9279         (LINK_SPEC): Fix umbrella for above.
9280
9281 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
9282
9283         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
9284         glibc CVS.
9285
9286 2007-01-15  Tom Tromey  <tromey@redhat.com>
9287
9288         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
9289         * doc/install.texi (Testing): Don't mention jacks.
9290         (Configuration): Document --enable-java-maintainer-mode.  Move
9291         --with-java-home to libgcj-specific section.  Document
9292         --with-ecj-jar.
9293         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
9294
9295 2007-01-15  Jan Hubicka  <jh@suse.cz>
9296
9297         * tree-ssa-dce.c (DCE_TODOs): New.
9298         (propagate_necessity): Return if something changed.
9299         (eliminate_unnecessary_stmts): Likewise.
9300         (perform_tree_ssa_dce): Return TODO flags when needed.
9301         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
9302
9303 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
9304
9305         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
9306         (fyl2x_extend<mode>xf3_i387): New insn pattern.
9307         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
9308         patterns using X87MODEF12 mode macro.  Extend operand 1
9309         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9310         (log10<mode>2): Ditto.
9311         (log2<mode>2): Ditto.
9312         (log1p<mode>2): Ditto.
9313         (logb<mode>2): Ditto.
9314         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
9315         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
9316         (*fxtractxf3_i387): Rename from *fxtractxf3.
9317         (fxtract_extend<mode>xf3_i387): New insn pattern.
9318         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
9319         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
9320         and gen_fyl2xxf3_i387().
9321
9322 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
9323
9324         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
9325         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
9326         get_loop_exit_edges.  Changed return type to bool.
9327         * cfgloop.h (fix_loop_placement): Declaration removed.
9328
9329 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
9330
9331         * param.h (MIN_VECT_LOOP_BOUND): New.
9332         * params.def (MIN_VECT_LOOP_BOUND): New.
9333         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
9334         argument - minimum threshold for number of iterations.
9335         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
9336         argument to declaration.
9337         * tree-vect-analyze.c (vect_analyze_operations): Check value of
9338         MIN_VECT_LOOP_BOUND.
9339         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
9340         slpeel_tree_peel_loop_to_edge with additional argument.
9341         (vect_do_peeling_for_alignment): Likewise.
9342         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
9343
9344 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
9345
9346         PR target/30413
9347         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
9348         operands of size 1.
9349
9350 2007-01-14  Jan Hubicka  <jh@suse.cz>
9351
9352         * tree-dfa.c (remove_referenced_var): New function.
9353         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
9354         prune referenced vars list too.
9355         * tree-flow.h (remove_referenced_var): Declare.
9356
9357 2007-01-14  Jan Hubicka  <jh@suse.cz>
9358
9359         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
9360         separately.
9361         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
9362         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
9363         * except.h (verify_eh_throw_table_statements): Kill prototype.
9364         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
9365         into call exrepssions.
9366         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
9367         eh trhow verifier.
9368         * tree-cfg.c: Include pointer-set.h.
9369         (verify_node_sharing): Work on pointer set.
9370         (verify_eh_throw_stmt_node): New.
9371         (verify_stmts): Use pointers sets, verify throw_stmt.
9372
9373 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
9374
9375         * ipa-reference.c (analyze_function): Consider also addresses taken
9376         in phi nodes.
9377
9378 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9379
9380         * c-typeck.c (null_pointer_constant_p): Replace use of
9381         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9382         (build_c_cast): Likewise.
9383
9384 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9385
9386         * tree.h (force_fit_type_double): Remove unused final argument.
9387         * c-common.c (constant_expression_warning): Replace use of
9388         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9389         (convert_and_check): Likewise.
9390         (shorten_compare): Update call to force_fit_type_double.
9391         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
9392         * convert.c (convert_to_pointer): Update call to
9393         force_fit_type_double.
9394         * fold-const.c (force_fit_type_double): Remove overflowed_const
9395         argument.
9396         (int_const_binop, fold_convert_const_int_from_int,
9397         fold_convert_const_int_from_real, fold_div_compare,
9398         fold_sign_changed_comparison, fold_unary, fold_negate_const,
9399         fold_abs_const, fold_not_const): Remove the final argument from
9400         calls to force_fit_type_double.
9401
9402 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9403
9404         * configure.ac: Set insn to "nop" for spu-*-* also.
9405         * configure: Regenerate.
9406
9407 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
9408
9409         * builtins.def : Add BUILT_IN_FREE.
9410
9411 2007-01-12  Jan Hubicka  <jh@suse.cz>
9412
9413         PR tree-optimization/30443
9414         * tree-inline.c (tree_function_versioning): Do not optimize when
9415         cloning for inlining.
9416
9417 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
9418
9419         * doc/loop.texi: Document recording of loop exits.
9420         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
9421         (update_single_exits_after_duplication,
9422         update_single_exit_for_duplicated_loop,
9423         update_single_exit_for_duplicated_loops): Removed.
9424         (duplicate_loop_to_header_edge): Do not call
9425         update_single_exits_after_duplication and
9426         update_single_exit_for_duplicated_loops.
9427         (loop_version): Do not update single_exit information.
9428         (fix_loop_structure): Use record_loop_exits instead of
9429         mark_single_exit_loops.
9430         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
9431         the lists of loop exits.
9432         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
9433         split_edge, merge_blocks): Update the lists of loop exits.
9434         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
9435         loop_optimizer_init.
9436         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
9437         of mark_single_exit_loops.
9438         (loop_optimizer_finalize): Call release_recorded_exits.
9439         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
9440         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
9441         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
9442         update single exit information.
9443         * lambda-code.c (perfect_nestify): Ditto.
9444         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
9445         (mark_single_exit_loops): Removed.
9446         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
9447         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
9448         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
9449         functions.
9450         (get_loop_exit_edges, single_exit): Use recorded exit lists.
9451         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
9452         (verify_loop_structure): Verify consistency of the exit lists.
9453         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
9454         (set_single_exit): Removed.
9455         * cfgloop.h (struct loop_exit): New function.
9456         (struct loop): single_exit_ field replaced by exits field.
9457         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
9458         (struct loops): Added exits hash.
9459         (mark_single_exit_loops, set_single_exit): Declaration removed.
9460         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
9461
9462 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9463
9464         * doc/invoke.texi: Avoid use of @headitem.
9465
9466 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9467
9468         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
9469
9470 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9471
9472         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
9473         list of targets.
9474
9475 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9476             Richard Sandiford  <richard@codesourcery.com>
9477
9478         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
9479         * config/m68k/m68k.opt: Resort options.
9480         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
9481
9482 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9483             Richard Sandiford  <richard@codesourcery.com>
9484
9485         * doc/invoke.texi: Document the macros that are defined by
9486         m68k's -mtune and -mhard-float options.
9487         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
9488         (m68k_cpp_cpu_family): Likewise.
9489         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
9490         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
9491         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
9492         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
9493         (m68k_cpp_cpu_family): Likewise.
9494
9495 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9496
9497         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
9498         macros besides mc68000 as tuning macros.  Use a switch statement
9499         to set them and mcpu32.
9500
9501 2007-01-12  Julian Brown  <julian@codesourcery.com>
9502
9503         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
9504         (TARGET_68040_ONLY): Rename to...
9505         (TARGET_68040): ...this.
9506         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
9507         * config/m68k/m68k.md: Likewise.
9508
9509 2007-01-12  Julian Brown  <julian@codesourcery.com>
9510             Nathan Sidwell  <nathan@codesourcery.com>
9511             Richard Sandiford  <richard@codesourcery.com>
9512
9513         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
9514         the -mcpu= argument associated with the --with-cpu setting.
9515         Define M68K_DEFAULT_TUNE to the default -mtune= option,
9516         if different from the one implied by the -mcpu setting.
9517         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
9518         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
9519         * doc/invoke.texi: Mention ColdFire in the introduction to the
9520         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
9521         -mno-div and -mhard-float options.  Make -m68881 a synonym for
9522         -mhard-float.  Document the previously-undocumented -m5206e,
9523         -m528x, -m5307 and -m5407 options.  Tweak the existing option
9524         documentation for consistency.
9525         * doc/install.texi: Mention new --with-cpu arguments.
9526         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
9527         default CPU if neither -mcpu nor -march are specified.
9528         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
9529         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
9530         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
9531         using m68k_tune to decide between families that implement the
9532         same ISA.  Use m68k_tune to set __mcfv4e__.
9533         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
9534         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
9535         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
9536         (FL_ISA_C, FL_ISA_MMU): New macros.
9537         (MASK_COLDFIRE): Delete.
9538         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
9539         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
9540         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
9541         (TARGET_HARD_FLOAT): Do not define here.
9542         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
9543         (TUNE_68000): New macro.
9544         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
9545         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
9546         (TUNE_CFV2): Redefine in terms of m68k_tune.
9547         (uarch_type, target_device, fpu_type): New enums.
9548         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
9549         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
9550         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
9551         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
9552         (FL_FOR_isa_c): New macros.
9553         (m68k_isa): New enum.
9554         (m68k_target_selection): New structure.
9555         (all_devices, all_isas, all_microarchs): New tables.
9556         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
9557         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
9558         (MASK_ALL_CPU_BITS): Delete.
9559         (m68k_find_selection): New function.
9560         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
9561         Map the legacy target options to a combination of the new ones.
9562         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
9563         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
9564         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
9565         settings.
9566         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
9567         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
9568         properties.
9569         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
9570         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
9571         * config/m68k/m68k-devices.def: New file.
9572
9573 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9574             Nathan Sidwell  <nathan@codesourcery.com>
9575
9576         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
9577         (SUBTARGET_EXTRA_SPECS): New macros.
9578         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
9579         use %(asm_cpu_spec) instead.
9580         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
9581         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
9582         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
9583         (EXTRA_SPECS): Rename to...
9584         (SUBTARGET_EXTRA_SPECS): ...this.
9585
9586 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9587             Richard Sandiford  <richard@codesourcery.com>
9588             Julian Brown  <julian@codesourcery.com>
9589
9590         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9591         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
9592         to the configuration's default CPU.
9593         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
9594         Remove default masks.
9595         (m680[012]0-*-*): Set the default with_cpu to the first part of
9596         the target name.
9597         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
9598         (m68k*-*-linux): Extend the --with-cpu handling to...
9599         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
9600         and m68010.  Don't set target_cpu_default2.
9601         * doc/install.texi: Document --with-cpu for m68k.
9602         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
9603         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
9604         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
9605         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
9606         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
9607         (ASM_SPEC): Remove use of %(asm_cpu_default).
9608         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
9609         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
9610         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
9611         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
9612         __HAVE_FPU__ if TARGET_HARD_FLOAT.
9613         (TARGET_DEFAULT): Delete.
9614         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
9615         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
9616         (CPP_CPU_SPEC): Delete.
9617         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
9618         the appropriate string.
9619         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
9620         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
9621         (ASM_SPEC): Don't use %(asm_default_spec).
9622         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
9623         TARGET_DEFAULT and add MASK_68881.
9624         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
9625
9626 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9627
9628         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
9629         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
9630         MASK_68010 alongside MASK_68020.
9631         * doc/invoke.texi: Document -m68010.
9632         * config/m68k/m68k.opt (m68010): New.
9633         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
9634         if TUNE_68010.
9635         (TUNE_68010): New macro.
9636         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
9637         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
9638         (M68K_CPU_m68332): Add MASK_68010.
9639         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
9640         fallback definition.
9641         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
9642         defines.
9643         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
9644         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
9645         to all entries that use MASK_68020.
9646         (output_move_simode_const, output_move_himode, output_move_qimode)
9647         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
9648         instead of TARGET_68020 to select clr behavior.  Remove comment
9649         about there being no TARGET_68010.
9650         * config/m68k/m68k.md: Likewise throughout.
9651
9652 2007-01-12  Julian Brown  <julian@codesourcery.com>
9653
9654         * config/m68k/m68k.h (TARGET_ISAB): New macro.
9655         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
9656         * config/m68k/m68k.md: Likewise.
9657
9658 2007-01-12  Julian Brown  <julian@codesourcery.com>
9659
9660         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
9661         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
9662
9663 2007-01-12  Julian Brown  <julian@codesourcery.com>
9664
9665         * config/m68k/m68k.h (TUNE_68040_60): New macro.
9666         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
9667         * config/m68k/m68k.md: Likewise.
9668
9669 2007-01-12  Julian Brown  <julian@codesourcery.com>
9670             Richard Sandiford  <richard@codesourcery.com>
9671
9672         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
9673         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
9674         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
9675         TARGET_CPU32.
9676         (TARGET_CPU32): Rename to...
9677         (TUNE_CPU32): ...this.
9678         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
9679         (TUNE_CFV2): New macros.
9680         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
9681         remove conditions that are implied by TARGET_68020.
9682         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
9683         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
9684         (m68k_output_function_epilogue): Likewise.
9685         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
9686         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
9687         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
9688         non-68000 timings.  Refactor multiplication and division costs.
9689         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
9690         TUNE_CPU32 instead of TARGET_CPU32.
9691         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
9692         and TUNE_68060 instead of TARGET_68060.
9693         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
9694         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
9695         TARGET_CPU32.
9696         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
9697         && !TARGET_COLDFIRE" to choose between moveq and clr.
9698         Likewise in the unnamed movsf pattern.
9699         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
9700         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
9701         ashiftrt pattern.
9702
9703 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9704
9705         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
9706         of tabbing before backslashes.
9707
9708 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9709
9710         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
9711         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
9712         (ASM_OUTPUT_INTERNAL_LABEL): Define.
9713
9714 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9715
9716         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
9717         find_interesting_uses_cond.
9718         (find_interesting_uses_cond): Use extract_cond_operands.
9719         (rewrite_use_compare): Use extract_cond_operands and
9720         force_gimple_operand_bsi.  Do not call update_stmt.
9721         (determine_use_iv_cost_condition): Use extract_cond_operands.
9722         Return cheaper of using original bound and changing the exit bound.
9723
9724 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9725
9726         PR tree-optimization/29516
9727         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
9728         most_expensive_mult_to_index, addr_to_parts,
9729         create_mem_ref, maybe_fold_tmr): Make the type of
9730         fields of TARGET_MEM_REF sizetype.
9731         (move_fixed_address_to_symbol, move_pointer_to_base):
9732         New functions.
9733         * tree.def (TARGET_MEM_REF): Add comment on types of
9734         the operands.
9735
9736 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
9737
9738         * c-common.c (vector_types_convertible_p): Treat opaque types as
9739         always convertible if they have the same size, but not otherwise.
9740
9741 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
9742
9743         * ifcvt.c (struct noce_if_info): Add comments to the fields.
9744         Remove the b_unconditional field.
9745         (noce_try_sign_mask): Do not look at b_unconditional.
9746         (noce_process_if_block): Do not use merge_if_blocks.  Update
9747         the CFG here.  Do not set b_unconditional.
9748         (cond_move_process_if_block): Likewise.
9749         (find_cond_trap): Likewise.
9750         (check_cond_move_block): Require simple jump insns at the end
9751         of the basic block.
9752
9753 2007-01-11  Jan Hubicka  <jh@suse.cz>
9754
9755         PR tree-optimization/1046
9756         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
9757         when alias info is not ready.
9758         (pass_tail_recursion): Do not require aliasing.
9759         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
9760         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
9761         * tree-ssa-copy.c (pass_copy_prop): Likewise.
9762         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
9763         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
9764         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
9765         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
9766         before inlining.
9767         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
9768         When aliasing is not build, mark statement as volatile.
9769
9770 2007-01-11  Tom Tromey  <tromey@redhat.com>
9771
9772         PR preprocessor/15185, PR preprocessor/20989:
9773         * doc/cppopts.texi <-MT>: Update description of algorithm for
9774         computing default target.
9775         <-M, -MD>: Reword "basename" text.
9776
9777 2007-01-11  Roger Sayle  <roger@eyesopen.com>
9778
9779         * builtins.c (expand_builtin_pow, expand_builtin_powi,
9780         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
9781         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
9782         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
9783         fold_builtin_bswap, real_constp, fold_builtin_pow,
9784         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
9785         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
9786         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9787         * convert.c (convert_to_pointer): Likewise.
9788         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
9789         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
9790         const_binop, fold_convert_const_int_from_int,
9791         fold_convert_const_int_from_real,
9792         fold_convert_const_real_from_real, sign_bit_p,
9793         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
9794         fold_sign_changed_comparison, fold_unary, fold_comparison,
9795         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
9796         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
9797         * print-tree.c (print_node_brief, print_node): Likewise.
9798         * stor-layout.c (place_field, layout_type): Likewise.
9799         * tree-chrec.c (keep_cast): Likewise.
9800         * tree.c (build_vector, build_real, build_real_from_int_cst,
9801         build_complex): Likewise.
9802
9803 2007-01-11  Roger Sayle  <roger@eyesopen.com>
9804
9805         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
9806         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
9807
9808 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
9809
9810         * configure.ac (strict1_warn): Rename to strict_warn.
9811         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
9812         cc_set_by_configure, quoted_cc_set_by_configure,
9813         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
9814         all_boot_languages, all_stagestuff): Remove.
9815         (target_list): Remove bootstrap targets.
9816         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
9817         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
9818         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
9819         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
9820         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
9821         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
9822         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
9823         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
9824         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
9825         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
9826         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
9827         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
9828         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
9829         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
9830         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
9831         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
9832         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
9833         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
9834         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
9835         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
9836         (mostlyclean): Adjust.
9837         (clean, distclean): Don't mention bootstrap stuff.
9838         * configure: Regenerate.
9839         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
9840         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
9841         treelang/config-lang.in (stagestuff): Remove.
9842         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
9843         stageprofile, stagefeedback, stagestuff): Remove mention.
9844
9845 2007-01-11  Nick Clifton  <nickc@redhat.com>
9846
9847         * config/mcore/predicates.md (mcore_general_movesrc_operand):
9848         Accept CONSTs.
9849         (mcore_general_movdst_operand): Do not accept CONST_INTs.
9850         (mcore_arith_K_S_operand): Run the test for the S constraint not
9851         the test for the M constraint.
9852         (mcore_addsub_operand): Do not accept integer values that are
9853         larger than 32 bits.
9854         * config/mcore/mcore.md: Remove unused constraints from split.
9855         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
9856         (addsi3): Likewise.
9857         (allocate_stack): Likewise.
9858         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
9859         operands to 32 bits.
9860         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
9861         INTVAL.
9862         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
9863         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
9864         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
9865         mcore_output_bclri, mcore_output_andn, output_inline_const,
9866         mcore_output_move, mcore_output_movedouble): Likewise.
9867         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
9868         (output_inline_const): Likewise.
9869         (output_inline_const): Fix format strings used in sprintf
9870         statements.
9871         * config/mcore/mcore-protos.h: Update prototypes for changed
9872         functions in mcore.c.
9873         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
9874         HOST_WIDE_INT and not int.
9875         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
9876         CONST_OK_FOR_N): Likewise.
9877         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
9878         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
9879         an INTVAL.
9880
9881 2007-01-10  Jan Hubicka  <jh@suse.cz>
9882
9883         * tree-vrp.c (remove_range_assertions): Release defs.
9884         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
9885         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
9886
9887 2007-01-10  Paul Brook  <paul@codesourcery.com>
9888
9889         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
9890         * config/arm/arm.md (mulsi3subsi): New insn.
9891
9892 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
9893
9894         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
9895         (tree_transform_and_unroll_loop): New.
9896         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
9897         Declare.
9898
9899 2007-01-10  Robert Kennedy <jimbob@google.com>
9900
9901         * fold-const.c (fold_comparison): Fold comparisons like (x *
9902         1000 < 0) to (x < 0).
9903
9904 2007-01-10  Ian Lance Taylor  <iant@google.com>
9905
9906         * tree-pretty-print.c (dump_generic_node): Print parentheses when
9907         operands have the same priority.
9908
9909 2007-01-10  Tom Tromey  <tromey@redhat.com>
9910
9911         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
9912         (fold_binary): Likewise.
9913         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
9914         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
9915         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
9916         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
9917         * langhooks.h (struct lang_hooks): Removed field
9918         'can_use_bit_fields_p'.
9919
9920 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
9921
9922         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
9923
9924 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
9925
9926         * function.c (get_last_funcdef_no): New function.
9927         * function.h (get_last_funcdef_no): Declare.
9928         * tree-inline.c (initialize_cfun): Add initialization.
9929         (tree_function_versioning): Cleanup.
9930
9931 2007-01-10  Jan Hubicka  <jh@suse.cz>
9932
9933         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
9934         PHIs.
9935
9936 2007-01-10  Sa Liu  <saliu@de.ibm.com>
9937             Ben Elliston  <bje@au.ibm.com>
9938
9939         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
9940         for SAVE_NONLOCAL and Pmode for any other save level.
9941         * spu-protos.h (spu_restore_stack_block): Declare.
9942         * spu.md (save_stack_block): Remove.
9943         (restore_stack_block): Call spu_restore_stack_block.
9944         * spu.c (spu_restore_stack_block): New function.
9945         (spu_expand_epilogue): Remove old comment.
9946
9947 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
9948
9949         PR tree-optimization/30322
9950         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
9951         (cand_value_at): Return the value as aff_tree.
9952         (may_eliminate_iv): Convert the bound from aff_tree to tree.
9953         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
9954         aff_combination_mult): New functions.
9955         (aff_combination_add): Use aff_combination_add_cst.
9956         (aff_combination_convert): Allow conversions to a wider type.
9957         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
9958         * tree-affine.h (aff_combination_mult): Declare.
9959
9960 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
9961
9962         * doc/tm.texi: Update documentation to reflect reality of exec
9963         and start file search behaviours. Update copyright year.
9964         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
9965         header file directories.
9966
9967 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
9968
9969         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
9970         (*cosxf2): Rename to cosxf2_i387.
9971         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
9972         using X87MODEF12 mode macro. Rename patterns to
9973         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
9974         for SSE math.
9975         (*cosdf2, *cossf2): Ditto.
9976         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
9977         to match extended input operands.
9978         (sincos<mode>3): New expander.
9979         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
9980         insn patterns and corresponding splitters.
9981
9982 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
9983
9984         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
9985         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
9986
9987 2007-01-09  Nicolas Pitre  <nico@cam.org>
9988
9989         PR target/30173
9990         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
9991
9992 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
9993
9994         * target.h (struct gcc_target): New field library_rtti_comdat.
9995         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
9996         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
9997         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
9998         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
9999
10000 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
10001
10002         * doc/invoke.texi (Optimize Options): Correct description of -O0.
10003
10004 2007-01-08  Richard Guenther  <rguenther@suse.de>
10005
10006         * tree.h (force_fit_type_double): Export.
10007         (force_fit_type): Remove.
10008         * fold-const.c (force_fit_type_double): New function.
10009         (force_fit_type): Remove.
10010         (int_const_binop): Use it.
10011         (fold_convert_const_int_from_int): Likewise.
10012         (fold_convert_const_int_from_real): Likewise.
10013         (fold_div_compare): Likewise.
10014         (fold_sign_changed_comparison): Likewise.
10015         (fold_unary): Likewise.
10016         (fold_negate_const): Likewise.
10017         (fold_abs_const): Likewise.
10018         (fold_not_const): Likewise.
10019         * c-common.c (shorten_compare): Use force_fit_type_double.
10020         * convert.c (convert_to_pointer): Likewise.
10021
10022 2007-01-08  Richard Guenther  <rguenther@suse.de>
10023
10024         * tree.h (build_int_cst_wide_type): Export.
10025         * tree.c (build_int_cst_wide_type): New function.
10026         (build_int_cst_wide): Fix comment.
10027         * builtins.c (fold_builtin_object_size): Use build_int_cst
10028         to build -1 or 0 of the correct type.  Use fit_double_type
10029         to check for overflow.
10030         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
10031         to build the mask.
10032         (decode_field_reference): Likewise.
10033         (all_ones_mask_p): Likewise.
10034         (native_interpret_int): Use build_int_cst_wide_type.
10035         (fold_binary): Use build_int_cst_type to build an all-ones
10036         value.
10037         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
10038
10039 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
10040
10041         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
10042
10043 2007-01-09  Ben Elliston  <bje@au.ibm.com>
10044
10045         * genautomata.c (STATS_OPTION): New option.
10046         (stats_flag): New flag.
10047         (gen_automata_option): Handle it.
10048         (initiate_automaton_gen): Ditto.
10049         (write_automata): Output statistics only if stats_flag is
10050         set. Likewise, output time statistics only if time_flag is set.
10051         * doc/md.texi (Processor pipeline description): Document new flag.
10052
10053 2007-01-08  Richard Guenther  <rguenther@suse.de>
10054
10055         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
10056         * tree.c (build_int_cst_type): Likewise.
10057         (size_in_bytes): Don't call force_fit_type on the result.
10058         (int_fits_type_p): Use fit_double_type.
10059         * fold-const.c (fit_double_type): New function.
10060         (force_fit_type): Use it.
10061         * tree.h (fit_double_type): Export.
10062
10063 2007-01-08  Jan Hubicka  <jh@suse.cz>
10064
10065         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
10066         * ipa.c (function_and_variable_visibility): Fix return type.
10067
10068 2007-01-08  Richard Guenther  <rguenther@suse.de>
10069
10070         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
10071         of offset to build the index.
10072         * tree-pretty-print.c (dump_generic_node): Don't build negated
10073         const just for printing.
10074         * c-pretty-print.c (pp_c_integer_constant): Likewise.
10075         * builtins.c (fold_builtin_int_roundingfn): Check if result
10076         fits the type by using force_fit_type and comparing the result.
10077         * predict.c (predict_loops): Use compare_tree_int for comparison.
10078         * tree.c (build_int_cst): Fall back to integer_type_node for
10079         NULL_TREE type.
10080         (build_int_cst_wide): Assert type is non-null.
10081
10082 2007-01-08  Roberto Costa  <roberto.costa@st.com>
10083
10084         * tree-vrp.c (extract_range_from_cond_expr): New.
10085         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
10086         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
10087         as expressions.
10088         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
10089         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
10090         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
10091         used as expressions.
10092         * tree-object-size.c (cond_expr_object_size): New.
10093         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
10094
10095 2007-01-08  Jan Hubicka  <jh@suse.cz>
10096
10097         * tree-ssa-forwprop.c (forward_propagate_into_cond,
10098         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
10099         statement.
10100
10101 2007-01-08  Richard Guenther  <rguenther@suse.de>
10102
10103         PR tree-optimization/23603
10104         * tree-vrp.c (set_value_range_to_truthvalue): New function.
10105         (extract_range_from_binary): Fall back to truthvalue instead of
10106         varying for TRUTH_*_EXPR.
10107         (extract_range_from_comparison): Fall back to truthvalue instead of
10108         varying.
10109         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
10110         if all visited PHI values were constant.
10111
10112 2007-01-08  Jan Hubicka  <jh@suse.cz>
10113
10114         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
10115         (cgraph_analyze_function): break out from ...
10116         (cgraph_finalize_compilation_unit): ... here.
10117         (cgraph_expand_function): Remove forgoten commented out line.
10118         (cgraph_optimize): Analyze functions.
10119
10120 2007-01-08  Jan Hubicka  <jh@suse.cz>
10121
10122         * tree-pas.h (TODO_remove_function): New flag.
10123         (TODO_update*): Renumber.
10124         (pass_ipa_increase_alignment,
10125         pass_ipa_function_and_variable_visibility): New passes.
10126         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
10127         (cgraph_function_and_variable_visibility): Move to ipa.c
10128         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
10129         cgraph_increase_alignment.
10130         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
10131         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
10132         calling tree-inline.
10133         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
10134         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
10135         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
10136         (gate_increase_alignment): New function.
10137         (pass_ipa_increase_alignment): New pass.
10138         * ipa.c: Inline tree-pass.h and timevar.h
10139         (function_and_variable_visibility): Move here from cgraphunit.c
10140         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
10141         * passes.c (init_optimization_passes): Add the two new passes.
10142         (execute_todo): Handle cgraph_remove_functions.
10143
10144 2007-01-08  Nick Clifton  <nickc@redhat.com>
10145
10146         * config/frv/predicates.md (reg_or_0_operand): Accept
10147         CONST_DOUBLEs.
10148
10149 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
10150
10151         * config/bfin/rtems.h, config/bfin/t-rtems: New.
10152         * config.gcc: Add bfin*-rtems*.
10153
10154 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10155
10156         * c.opt: Add -flax-vector-conversions.
10157         * c-typeck.c (convert_for_assignment): Pass flag to
10158         vector_types_convertible_p to allow emission of note.
10159         (digest_init): Likewise.
10160         * c-opts.c: Handle -flax-vector-conversions.
10161         * c-common.c (flag_lax_vector_conversions): New.
10162         (vector_types_convertible_p): Unless -flax-vector conversions
10163         has been passed, disallow conversions between vectors with
10164         differing numbers of subparts and/or element types.  If such
10165         a conversion is disallowed, possibly emit a note on the first
10166         occasion only to inform the user of -flax-vector-conversions.
10167         The new last argument specifies this.
10168         * c-common.h (flag_lax_vector_conversions): New.
10169         (vector_types_convertible_p): Add extra argument.
10170         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
10171         char_type_node for V*QI type vectors.
10172         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
10173         Update to satisfy new typechecking rules.
10174         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
10175         C and C++ variants.
10176         * doc/invoke.texi (C Dialect Options): Document
10177         -flax-vector-conversions.
10178
10179 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10180
10181         PR tree-optimization/29877
10182         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
10183         a register variable on the RHS to not be replaceable.
10184
10185 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
10186         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
10187         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
10188         const_simm15, const_pow2, const_npow2): Added.
10189         * config/score/misc.md (insv, extv, extzv, movmemsi,
10190         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
10191         * config/score/score.c (score_address_cost, score_select_cc_mode):
10192         Added.
10193         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
10194         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
10195         Update score_print_operand.
10196         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
10197         Adjust register allocate order and update some macro define.
10198         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
10199         mdx_block_move_straight, mdx_block_move_loop_head,
10200         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
10201         mdx_block_move): Added.
10202         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
10203         mdp_limm): Updated and fix some bug and typo.
10204         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
10205         (movsf, movdf, doloop_end): Added.
10206
10207 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
10208
10209         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
10210         config/arm/thumb2.md: Fix comment typos.
10211         * doc/extend.texi: Fix a typo.
10212
10213 2007-01-07  Eric Christopher  <echristo@apple.com>
10214
10215         * configure.ac: Check for __stack_chk_fail for darwin.
10216         * configure: Regenerate.
10217
10218 2007-01-07  Richard Guenther  <rguenther@suse.de>
10219
10220         * tree-vrp.c (extract_range_from_assert): CSE calls to
10221         compare_values where possible.
10222         (extract_range_from_unary_expr): Likewise.
10223
10224 2007-01-07  Anatoly Sokolov <aesok@post.ru>
10225
10226         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
10227         * config/avr/avr.c (call_insn_operand): Delete function.
10228         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
10229         instead of register number. Use predicates.
10230         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
10231         call_insn_operand): Add.
10232
10233 2007-01-06  Jan Hubicka  <jh@suse.cz>
10234
10235         * tree-pass.h (pass_build_cgraph_edges): Declare.
10236         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
10237         (visited_nodes): Remove.
10238         (cgraph_create_edges): Move to cgraphbuild.c; rename to
10239         build_cgrpah_edges; make visited_nodes local.
10240         (cgraph_process_new_functions): DO not call initialize_inline_failed.
10241         (record_references_in_initializer): Move to cgraphbuild.c
10242         (initialize_inline_failed, rebuild_cgraph_edges,
10243         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
10244         (verify_cgraph_node): Make visited_nodes local.
10245         (cgraph_analyze_function): Do not call cgraph_create_edges and
10246         initialize_inline_failed.
10247         (cgraph_expand_function): Do not call cgraph_lower_function;
10248         assert that function is already lowered.
10249         * Makefile.in (cgraphbuild.o): New.
10250         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
10251         at the end of lowering passes.
10252
10253 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
10254
10255         * ifcvt.c (cond_move_convert_if_block): New function, code
10256         factored out from...
10257         (cond_move_process_if_block): ...here.  Call the new function
10258         on the THEN and ELSE blocks.
10259         (merge_if_block): Do not copy global_live_at_end, merge_blocks
10260         already takes care of this.
10261
10262 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10263
10264         PR c/19978
10265         * tree.h (TREE_OVERFLOW_P): New.
10266         * c-typeck.c (parser_build_unary_op): Warn only if result
10267         overflowed and operands did not.
10268         (parser_build_binary_op): Likewise.
10269         (convert_for_assignment): Remove redundant overflow_warning.
10270         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
10271
10272 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10273
10274         * c-typeck.c (store_init_value): Split over two lines to follow
10275         the GNU coding style.
10276
10277 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
10278
10279         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
10280         __GXX_EXPERIMENTAL_CXX0X__.
10281         * doc/cpp.texi: Same.
10282
10283 2007-01-05  Richard Guenther  <rguenther@suse.de>
10284
10285         PR middle-end/27826
10286         * tree.c (get_narrower): Do not construct COMPONENT_REFs
10287         with mismatched types.  Instead explicitly build a
10288         conversion NOP_EXPR.
10289
10290 2007-01-05  Ian Lance Taylor  <iant@google.com>
10291
10292         * c-common.c (decl_with_nonnull_addr_p): New function.
10293         (c_common_truthvalue_conversion): Call it.
10294         * c-typeck.c (build_binary_op): Likewise.
10295         * c-common.h (decl_with_nonnull_addr_p): Declare.
10296
10297 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
10298
10299         PR c/30360
10300         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
10301         denom against 0.0.
10302
10303 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
10304
10305         * doc/install.texi (Final install): Document the fact that
10306         the GNAT runtime should not be stripped.
10307
10308 2007-01-04  Jan Hubicka  <jh@suse.cz>
10309
10310         * tree-inline.c (fold_marked_statements): Update operand caches
10311         and EH after folding
10312
10313 2007-01-04  Ian Lance Taylor  <iant@google.com>
10314
10315         * c-common.c (check_function_nonnull): Whitespace fix.
10316
10317 2007-01-04  Jan Hubicka  <jh@suse.cz>
10318
10319         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
10320         comitted older version of patch.
10321         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
10322         function, celanup cfg and collect garbage.
10323
10324 2007-01-04  Mike Stump  <mrs@apple.com>
10325
10326         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
10327         (clean): Likewise.
10328
10329 2007-01-04  Eric Christopher  <echristo@apple.com>
10330
10331         * libgcc2.c (__bswapsi2): Use SItype.
10332         (__bswapdi2): Use DItype.
10333         * libgcc2.h: Update for above.
10334
10335 2007-01-04  Paul Brook  <paul@codesourcery.com>
10336
10337         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
10338         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
10339         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
10340         umulsidi3, umulsidi3adddi, smulsi3_highpart,
10341         umulsi3_highpart): Make conditional on !arm_arch6.
10342         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
10343         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
10344         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
10345         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
10346         umulsi3_highpart_v6): New insns.
10347
10348 2007-01-04  Roger Sayle  <roger@eyesopen.com>
10349
10350         * fold-const.c (fold_convert): When casting an expression to void,
10351         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
10352         have a type.  Instead of attempting to build a NOP_EXPR, return
10353         these "special" trees directly.
10354
10355 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
10356
10357         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
10358         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
10359         rs6000_cost->fp not 0 as adjustment for outer NEG.
10360
10361 2007-01-04  Jan Hubicka  <jh@suse.cz>
10362
10363         * cgraph.c (cgraph_release_function_body): New function.
10364         (cgraph_remove_node): Use it.
10365         * cgraph.h (cgraph_release_function_body): Declare.
10366         * cgraphunit.c (cgraph_expand_function): Use it.
10367         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
10368         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
10369         is initialized and while compilation of other function is running.
10370         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
10371         statement CFG annotations from here to ...
10372         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
10373
10374 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
10375
10376         * cfgloop.h (enum li_flags): Make the constants powers of two.
10377
10378 2007-01-04  Jan Hubicka  <jh@suse.cz>
10379
10380         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
10381         set.
10382         (fold_marked_statements): New function.
10383         (optimize_inline_calls, tree_function_versioning): Fold new statements.
10384         * tree-inline.h (copy_body_data): Add statements_to_fold.
10385
10386 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
10387
10388         * config.gcc: Mention libgcc/config.host.
10389         * Makefile.in: Update comments mentioning libgcc.
10390         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
10391         (all.cross, start.encap, rest.encap, rest.cross): Update
10392         dependencies for libgcc move.
10393         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
10394         (clean-target, clean-target-libgcc): Delete.
10395         (srcdirify, GCC_EXTRA_PARTS): New macros.
10396         (libgcc-support, libgcc.mvars): New rules.
10397         (distclean): Remove mention of mklibgcc.
10398         (install): Don't reference INSTALL_LIBGCC.
10399         (install-common): Don't reference EXTRA_PARTS.
10400         (install-libgcc, install-multilib): Delete rules.
10401         * mklibgcc.in: Delete file.
10402         * doc/configfiles.texi: Don't mention mklibgcc.
10403
10404         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
10405         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
10406         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
10407         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
10408         (mklibgcc, ldblspecs): Likewise.
10409
10410         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
10411         (posixpre.def): Use $(T).
10412         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
10413         (SHLIB_SRC, SHLIB_INSTALL): Delete.
10414         (SHLIB_LINK): Make dummy.
10415         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
10416
10417         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
10418
10419         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
10420         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
10421         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
10422         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
10423
10424         * configure.ac (all_outputs): Remove mklibgcc.
10425         * configure: Regenerated.
10426
10427 2007-01-03  Josh Conner  <jconner@apple.com>
10428
10429         PR middle-end/29683
10430         * calls.c (compute_argument_addresses): Set stack and stack_slot
10431         for partial args, too.
10432         (store_one_arg): Use locate.size.constant for the size when
10433         generating a save_area.
10434
10435 2007-01-03  Robert Kennedy <jimbob@google.com>
10436
10437         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
10438         whose definitions are deleted due to basic block merging.
10439
10440 2007-01-03  Paul Brook  <paul@codesourcery.com>
10441
10442         PR target/16634
10443         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
10444         functions.
10445         (use_return_insn): Return 0 for Thumb interrupt functions.
10446         (print_multi_reg): Add rfe argument for IRQ returns.
10447         (arm_output_epilogue): Pop interrupt return address directly into PC.
10448         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
10449
10450 2007-01-03  Paul Brook  <paul@codesourcery.com>
10451
10452         Merge from sourcerygxx-4_1.
10453         * config/arm/thumb2.md: New file.
10454         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
10455         Thumb-2.
10456         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
10457         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10458         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
10459         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
10460         tables.
10461         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10462         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
10463         comptibility.
10464         * config/arm/ieee754-sf.S: Ditto.
10465         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
10466         (thumb1_base_register_rtx_p): ... to this.
10467         (thumb_index_register_rtx_p): Rename...
10468         (thumb1_index_register_rtx_p): ... to this.
10469         (thumb_output_function_prologue): Rename...
10470         (thumb1_output_function_prologue): ... to this.
10471         (thumb_legitimate_address_p): Rename...
10472         (thumb1_legitimate_address_p): ... to this.
10473         (thumb_rtx_costs): Rename...
10474         (thumb1_rtx_costs): ... to this.
10475         (thumb_compute_save_reg_mask): Rename...
10476         (thumb1_compute_save_reg_mask): ... to this.
10477         (thumb_final_prescan_insn): Rename...
10478         (thumb1_final_prescan_insn): ... to this.
10479         (thumb_expand_epilogue): Rename...
10480         (thumb1_expand_epilogue): ... to this.
10481         (arm_unwind_emit_stm): Rename...
10482         (arm_unwind_emit_sequence): ... to this.
10483         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
10484         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
10485         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
10486         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
10487         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
10488         thumb2_output_casesi): New functions.
10489         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
10490         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
10491         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
10492         THUMB2_WORK_REGS): Define.
10493         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
10494         arm_condexec_mask, arm_condexec_masklen)): New variables.
10495         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
10496         (arm_override_options): Check new CPU capabilities.
10497         Set new architecture flag variables.
10498         (arm_isr_value): Handle v7m interrupt functions.
10499         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
10500         Thumb-2.
10501         (const_ok_for_arm): Handle Thumb-2 constants.
10502         (arm_gen_constant): Ditto.  Use movw when available.
10503         (arm_function_ok_for_sibcall): Return false for v7m interrupt
10504         functions.
10505         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
10506         (thumb_find_work_register, arm_load_pic_register,
10507         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
10508         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
10509         print_multi_reg, output_mov_long_double_fpa_from_arm,
10510         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
10511         output_mov_double_fpa_from_arm, output_move_double,
10512         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
10513         output_return_instruction, arm_output_function_prologue,
10514         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
10515         arm_output_mi_thunk, thumb_set_return_address): Ditto.
10516         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
10517         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
10518         (arithmetic_instr, shift_op): Use arm_shift_nmem.
10519         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
10520         '!' and 'L'.
10521         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
10522         (thumb_expand_prologue): Use thumb_set_frame_pointer.
10523         (arm_file_start): Output directive for unified syntax.
10524         (arm_unwind_emit_set): Handle stack alignment instruction.
10525         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
10526         Add v6t2, v7, v7a, v7r and v7m.
10527         (RETLDM): Add Thumb-2 code.
10528         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
10529         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
10530         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
10531         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
10532         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
10533         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
10534         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
10535         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
10536         ADJUST_INSN_LENGTH): Define.
10537         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
10538         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
10539         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
10540         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
10541         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
10542         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
10543         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
10544         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
10545         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
10546         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
10547         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
10548         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
10549         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
10550         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
10551         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
10552         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
10553         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
10554         cortex-m3.
10555         * config/arm/arm-tune.md: Regenerate.
10556         * config/arm/arm-protos.h: Update prototypes.
10557         * config/arm/vfp.md: Enable patterns for Thumb-2.
10558         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
10559         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
10560         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
10561         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
10562         * config/arm/libunwind.S: Add Thumb-2 code.
10563         * config/arm/constraints.md: Update include Thumb-2.
10564         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
10565         * config/arm/ieee754-df.S: Ditto.
10566         * config/arm/bpabi.S: Ditto.
10567         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
10568         * config/arm/predicates.md (low_register_operand,
10569         low_reg_or_int_operand, thumb_16bit_operator): New.
10570         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
10571         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
10572         * config/arm/t-arm-elf: Add armv7 multilib.
10573         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
10574         Include thumb2.md.
10575         (UNSPEC_STACK_ALIGN, ce_count): New.
10576         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
10577         arm_zero_extendsidi2, arm_zero_extendqidi2): New
10578         insns/expanders.
10579         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
10580         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
10581         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
10582         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
10583         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
10584         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
10585         insns.
10586         * doc/extend.texi: Document ARMv7-M interrupt functions.
10587         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
10588
10589 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
10590
10591         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
10592         (struct _Unwind_Context): Rename args_size to flags, remove
10593         signal_frame field, add a new args_size field and version field.
10594         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
10595         _Unwind_IsExtendedContext): New inline functions.
10596         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
10597         Assume by_value array is only present if _Unwind_IsExtendedContext.
10598         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
10599         _Unwind_IsSignalFrame.
10600         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
10601         (uw_update_context_1): Use _Unwind_SetSignalFrame.
10602         (uw_init_context_1): Initialize context->flags to
10603         EXTENDED_CONTEXT_BIT.
10604         * config/rs6000/linux-unwind.h (frob_update_context): Use
10605         _Unwind_SetSignalFrame.
10606
10607 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10608
10609         PR middle-end/30353
10610         * gimplify.c (gimplify_modify_expr_complex_part): Move below
10611         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
10612         the value.
10613
10614 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
10615
10616         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
10617         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
10618         RET, AT_SP): Remove.
10619         * config/i386/i386.md (*sse_prologue_save_insn): Use return
10620         instead of RET.
10621
10622         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10623         * cfgbuild.c (find_basic_blocks): Likewise.
10624         * cfgrtl.c (rtl_create_basic_block): Likewise.
10625         * function.c (temp_slots_at_level): Likewise.
10626         * reg-stack.c (stack_regs_mentioned): Likewise.
10627         * regclass.c (allocate_reg_info): Likewise.
10628         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10629         set_bb_for_stmt, move_block_to_fn): Likewise.
10630         * tree-complex.c (tree_lower_complex): Likewise.
10631         * vec.h (VEC_safe_grow_cleared): New.
10632
10633         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
10634
10635 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
10636
10637         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
10638         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
10639         to loop_version.
10640         * cfgloopmanip.c (scale_loop_frequencies): Export.
10641         (loopify): Scale the frequencies by prescribed coefficients.
10642         (set_zero_probability): New function.
10643         (duplicate_loop_to_header_edge): Improve updating of frequencies.
10644         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
10645         and frequencies according to arguments.
10646         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
10647         correctly.
10648         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
10649         * modulo-sched.c (sms_schedule): Set probabilities for entering
10650         versioned loop correctly.
10651         * tree-vect-transform.c (vect_transform_loop): Ditto.
10652         * cfgloop.h (loopify, loop_version): Declaration changed.
10653         (scale_loop_frequencies): Declared.
10654
10655 2007-01-02  Jan Hubicka  <jh@suse.cz>
10656
10657         * cgraph.c: Include tree-flow.h
10658         (cgraph_add_new-function): Handle IPA_SSA mode; execute
10659         early_local_passes.
10660         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
10661         * tree-pass.h (pass_all_early_optimizations): Declare.
10662         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
10663         early_local_passes.
10664         (cgraph_analyze_function): Do early_local_passes.
10665         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10666         Do not add referenced vars.
10667         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
10668         SSA form.
10669         (gate_all_early_local_passes): New gate.
10670         (pass_early_local_passes): Use new gate.
10671         (execute_early_local_optimizations): New functions.
10672         (gate_all_early_optimizations): New gate.
10673         (pass_all_early_optimizations): New pass.
10674         (execute_free_datastructures): Free SSA only when initialized.
10675         (gate_init_datastructures): Init only when optimizing.
10676         (tree_lowering_passes): Do early local passes when called late.
10677         * tree-profile.c (do_tree_profiling): Don't profile functions added
10678         late.
10679         (do_early_tree_profiling, pass_early_tree_profile): Kill.
10680         * tree-cfg.c (update_modified_stmts): Do not update when operands are
10681         not active.
10682         * passes.c (init_optimizations_passes): Reorder so we go into SSA
10683         during early_local_passes.
10684         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
10685
10686
10687 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10688
10689         * Makefile.in: Update copyright year.
10690
10691 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10692
10693         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
10694         in $(lang_checks) and check-consistency targets.
10695
10696 2007-01-02  Jan Hubicka  <jh@suse.cz>
10697
10698         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10699         Do not add referenced vars.
10700         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
10701         are not active.
10702         * passes.c (init_optimization_passes): Put mudflap_2 after
10703         free_datastructures.
10704
10705 2007-01-02  Jan Hubicka  <jh@suse.cz>
10706
10707         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
10708         Set NOTHROW flag on call statements proved to be nothrow.
10709         Update statement of local calls so new pure/const functions are
10710         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
10711         goto receivers.
10712         (tree_rest_of_compilation): Register hooks and initialize bitmap
10713         early. Do not set after_inlining flag.
10714
10715 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
10716
10717         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
10718         HOST_BITS_PER_LONGLONG
10719
10720 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10721
10722         PR c/19977
10723         * c-typeck.c (store_init_value): Don't emit pedantic overflow
10724         warning for non-static initializers.
10725
10726 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
10727
10728         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
10729         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
10730         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
10731         Always use set_unique_reg_note to add REG_EQUAL notes.
10732
10733 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10734
10735         Revert:
10736         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10737
10738         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10739         * cfgbuild.c (find_basic_blocks): Likewise.
10740         * cfgrtl.c (rtl_create_basic_block): Likewise.
10741         * function.c (temp_slots_at_level): Likewise.
10742         * reg-stack.c (stack_regs_mentioned): Likewise.
10743         * regclass.c (allocate_reg_info): Likewise.
10744         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10745         set_bb_for_stmt, move_block_to_fn): Likewise.
10746         * tree-complex.c (tree_lower_complex): Likewise.
10747         * vec.h (VEC_safe_grow_cleared): New.
10748
10749 2007-01-02  Ian Lance Taylor  <iant@google.com>
10750
10751         * c-common.c (c_common_truthvalue_conversion): When warning about
10752         using an assignment as a truth value, set TREE_NO_WARNING.
10753
10754 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10755
10756         PR middle-end/7651
10757         * c.opt (Wold-style-declaration): New.
10758         * doc/invoke.texi (C-only Warning Options): New.
10759         (Wold-style-declaration): Document it.
10760         (Wextra): Enabled by -Wextra.
10761         * c-opts.c (c_common_post_options): Enabled by -Wextra.
10762         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
10763         -Wold-style-declaration.
10764
10765 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10766
10767         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10768         * cfgbuild.c (find_basic_blocks): Likewise.
10769         * cfgrtl.c (rtl_create_basic_block): Likewise.
10770         * function.c (temp_slots_at_level): Likewise.
10771         * reg-stack.c (stack_regs_mentioned): Likewise.
10772         * regclass.c (allocate_reg_info): Likewise.
10773         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10774         set_bb_for_stmt, move_block_to_fn): Likewise.
10775         * tree-complex.c (tree_lower_complex): Likewise.
10776         * vec.h (VEC_safe_grow_cleared): New.
10777
10778 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
10779
10780         * c-common.c (c_common_nodes_and_builtins): Since variants of
10781         void_type_node get built before it is given a name, we need to
10782         give those variants the name, too.
10783         (complete_array_type): We need to work with the canonical main
10784         type of the array, from which we will build the qualified version.
10785         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
10786         * print-tree.c (print_node): Display canonical type information
10787         for each type.
10788         * stor-layout.c (layout_type): When we don't know the
10789         alignment of a type for which we're building an array, we end up
10790         guessing wrong, so make the type require structural equality.
10791         * tree.c (make_node_stat): When we build a new type, it is its
10792         own canonical type.
10793         (build_type_attribute_qual_variant): When building an attribute
10794         variant, its canonical type is the non-attribute variant. However,
10795         if the attributes are target-dependent and they differ, we need to
10796         use structural equality checks for this type.
10797         (build_qualified_type): A qualified type is not equivalent to its
10798         unqualified variant; set the canonical type appropriately.
10799         (build_distinct_type_copy): When building a distinct type from
10800         another type, the new type is its own canonical type.
10801         (build_variant_type_copy): When building a new type variant, we
10802         assume that it is equivalent to the original type.
10803         (build_pointer_type_for_mode): When building a pointer type, also
10804         build a canonical type pointer.
10805         (build_reference_type_for_mode): When building a reference type,
10806         also build a canonical type reference.
10807         (build_index_type): When we can't hash an index type (e.g.,
10808         because its maximum value is negative), the index type requires
10809         structural equality tests.
10810         (build_array_type): Build the canonical form of an array type.
10811         (build_function_type): Function types require structural equality,
10812         because they contain default arguments, attributes, etc.
10813         (build_method_type_directly): Ditto for method types.
10814         (build_offset_type): Build the canonical offset type.
10815         (build_complex_type): Build the canonical vector type.
10816         (make_vector_type): Build the canonical vector type.
10817         * tree.h (TYPE_CANONICAL): New.
10818         (TYPE_STRUCTURAL_EQUALITY_P): New.
10819         (SET_TYPE_STRUCTURAL_EQUALITY): New.
10820         (struct tree_type): Added "canonical" field.
10821         * params.h (VERIFY_CANONICAL_TYPES): New.
10822         * doc/c-tree.texi (TYPE_CANONICAL): Document.
10823         (TYPE_STRUCTURAL_EQUALITY_P): Document.
10824         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
10825         * doc/invoke.texi (verify-canonical-types): Document --param
10826         parameter for verifying canonical types.
10827
10828 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10829
10830         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
10831         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
10832         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
10833         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
10834         tm_file.
10835         * config/rs6000/e500.h: New.
10836         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
10837         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
10838         Remove.
10839         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
10840         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
10841         TARGET_E500_DOUBLE): Remove.
10842         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
10843         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
10844         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
10845         * config/rs6000/rs6000.c (rs6000_override_options): Use
10846         CHECK_E500_OPTIONS.
10847
10848 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10849
10850         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
10851         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
10852         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
10853         rs6000_emit_cmove): Don't check TARGET_E500.
10854         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
10855         sordered): Don't check TARGET_E500.
10856
10857 2007-01-01  Eric Christopher  <echristo@apple.com>
10858
10859         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
10860         HARD_REGISTER_NUM_P.
10861
10862 2007-01-01  Roger Sayle  <roger@eyesopen.com>
10863
10864         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
10865         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
10866         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
10867         eq/ne Y".
10868
10869 2007-01-01  Mike Stump  <mrs@apple.com>
10870
10871         * configure.ac: Remove support for building with Apple's gcc-3.1.
10872
10873 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10874
10875         PR middle-end/30311
10876         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
10877         REG is a hard register.  Do not modify REG before calling
10878         subreg_nregs.
10879         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
10880         multiple of the size of YMODE for certain lowpart cases.
10881
10882 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10883
10884         PR middle-end/30253
10885         * gimplify (voidify_wrapper_expr): Update for
10886         GIMPLE_MODIFY_STMT.
10887
10888 2007-01-01  Andreas Schwab  <schwab@suse.de>
10889
10890         PR target/29166
10891         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
10892         save of BR0 in extra_spill_size instead of spill_size.
10893         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
10894         area.
10895         (ia64_expand_epilogue): Restore BR0 from its new location.
10896
10897 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10898
10899         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
10900         Use a temporary variable if the left hand side is not a gimple
10901         register.
10902
10903 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10904
10905         * gimplify.c (gimplify_return_expr): Make the temporary variable
10906         for the return expression, a gimple register variable.
10907
10908 2007-01-01  Jan Hubicka  <jh@suse.cz>
10909
10910         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
10911         INSN_LIST.
10912
10913 2007-01-01  Mike Stump  <mrs@apple.com>
10914
10915         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
10916         .literal16.
10917         * config/darwin.c (machopic_select_rtx_section): Use
10918         HAVE_GAS_LITERAL16.
10919         (darwin_mergeable_constant_section): Likewise.
10920         * configure: Regenerate.
10921         * config.in: Regenerate.
10922
10923 2007-01-01  Jan Hubicka  <jh@suse.cz>
10924             Andrew Pinski  <pinskia@gmail.com>
10925
10926         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
10927         before starting IPA passes.