OSDN Git Service

4029fbdc9fde0d59094cdd3bbe3d80633e346d8d
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
2
3         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
4         with "popcnt" instruction.
5
6 2007-04-13  Richard Guenther  <rguenther@suse.de>
7
8         PR tree-optimization/21258
9         * tree-vrp.c (compare_case_labels): New helper.
10         (find_switch_asserts): New function.
11         (find_assert_locations): Call it for SWITCH_EXPRs.
12
13 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
14
15         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
16         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
17         check is now implied in X87_FLOAT_MODE_P.
18         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
19         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
20         (fix_trunc<mode>_i386_fisttp): Ditto.
21         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
22         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
23         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
24         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
25         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
26         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
27         (unnamed_splitters): Ditto.
28         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
29         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
30         FIRST_SSE_REG for local functions when SSE math is enabled or
31         for functions with sseregparm attribute.
32         (standard_80387_constant_p): Return -1 if mode is not
33         X87_FLOAT_MODE_P.
34         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
35         (ix86_expand_compare): Ditto.
36         (ix86_expand_carry_flag_compare): Ditto.
37         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
38         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
39         DECIMAL_FLOAT_MODE_P.
40         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
41         of SCALAR_FLOAT_MODE_P.
42         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
43         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
44         checks before FLOAT_MODE_P.
45         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
46         before FLOAT_MODE_P.
47         [DIV]: Ditto.
48         [NEG]: Ditto.
49         [ABS]: Ditto.
50         [SQRT]: Ditto.
51         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
52
53 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
54             Charles Wilson  <libtool@cwilson.fastmail.fm>
55
56         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
57         (libgcc.mvars): Don't depend on them.
58         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
59         * exec-tool.in: New.
60
61 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
62
63         * doc/invoke.text (--help): Document --help=common.
64
65 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
66
67         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
68
69 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
70
71         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
72         * genemit.c (main): Emit #include "integrate.h".
73         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
74         (LOADGP_RTP): New mips_loadgp_style.
75         * config/mips/mips.h: Include config/vxworks-dummy.h.
76         (TARGET_RTP_PIC): New macro.
77         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
78         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
79         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
80         for TARGET_RTP_PIC.
81         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
82         -mvxworks-pic when using -mrtp and a PIC option.
83         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
84         for RTP PIC.
85         (mips_symbolic_constant_p, mips_symbolic_address_p)
86         (mips_symbol_insns): Handle SYMBOL_HALF.
87         (override_options): Warn about -G and -mrtp being used together.
88         Initialize mips_lo_relocs[SYMBOL_HALF].
89         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
90         (mips_emit_loadgp): Handle LOADGP_RTP.
91         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
92         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
93         (tablejump): Handle function-relative case table entries if
94         TARGET_RTP_PIC.
95         * config/mips/predicates.md (symbol_ref_operand): New predicate.
96
97 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
98
99         * config/mips/mips.md (load_call<mode>): Allow any general register.
100         destination.
101         (sibcall_value_internal, sibcall_value_multiple_internal)
102         (call_value_internal, call_value_split, call_value_multiple_internal)
103         (call_value_multiple_split): Remove constraints from operand 0.
104
105 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
106
107         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
108         rather than loadgp_noshared.
109         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
110         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
111         gen_loadgp.
112         * config/mips/mips.md (loadgp): Rename to...
113         (loadgp_newabi): ...this.
114         (loadgp_noshared): Rename to...
115         (loadgp_absolute): ...this.
116
117 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
118
119         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
120         false for locally-binding symbols.
121         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
122
123 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
124
125         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
126         (SYMBOL_GOT_PAGE_OFST): ...this.
127         (SYMBOL_GOT_GLOBAL): Rename to...
128         (SYMBOL_GOT_DISP): ...this.
129         (SYMBOL_GOTOFF_GLOBAL): Rename to...
130         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
131         * config/mips/mips.c (mips_global_symbol_p): New function.
132         (mips_symbol_binds_local_p): Likewise.
133         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
134         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
135         and mips_symbol_binds_local_p.
136         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
137         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
138         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
139         SYMBOL_GOTOFF_DISP.
140         (mips_ok_for_lazy_binding_p): New function.
141         (mips_load_call_address, mips_expand_call): Use it.
142         (mips_dangerous_for_la25_p): Likewise.
143         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
144         (*got_disp<mode>): Use got_disp_operand instead of
145         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
146         SYMBOL_GOTOFF_GLOBAL.
147         (*got_page<mode>): Use got_page_ofst_operand instead of
148         local_got_operand.
149         * config/mips/predicates.md (const_call_insn_operand): Use
150         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
151         (global_got_operand): Rename to...
152         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
153         SYMBOL_GOT_GLOBAL.
154         (local_got_operand): Rename to...
155         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
156         of SYMBOL_GOT_LOCAL.
157
158 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
159
160         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
161         TARGET_CALL_CLOBBERED_GP.
162         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
163         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
164         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
165         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
166         of TARGET_ABICALLS && !TARGET_NEWABI.
167         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
168         * config/mips/mips.c (mips_load_call_address): Check
169         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
170         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
171         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
172         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
173         TARGET_ABICALLS && TARGET_NEWABI.
174         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
175         TARGET_ABICALLS.
176         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
177         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
178         TARGET_ABICALLS && TARGET_NEWABI.
179         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
180         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
181         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
182         whether indirect calls must use $25.
183         (mips_extra_live_on_entry): Check TARGET_GOT instead of
184         TARGET_ABICALLS.
185         * config/mips/mips.md (jal_macro): Check flag_pic and
186         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
187         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
188         instead of TARGET_ABICALLS.
189         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
190         TARGET_ABICALLS && TARGET_OLDABI.
191         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
192         (sibcall): In the comment above the define_insn, mention
193         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
194         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
195         instead of TARGET_ABICALLS.
196
197 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
198
199         * doc/md.texi (Blackfin family constraints): Document PA and PB.
200         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
201         (MACFLAGS_MATCH_P): New macro.
202         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
203         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
204         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
205         the other MACFLAG constants.
206         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
207         (flag_machi): Tighten constraints.  Renumber some of the operands.
208         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
209         output template.
210         (flag_machi_parts_acconly): New pattern.
211         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
212         used.
213         (flag_macinit1hi): Tighten constraints.
214         (flag_mul_macv2hi_parts_acconly): New pattern.
215
216         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
217         Use a more efficient implementation.
218         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
219         inline sequences when not optimizing for size.
220
221         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
222         movhi_high2low): Delete, merge functionality into...
223         (packv2hi): ... this pattern.
224
225         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
226         * config/bfin/bfin.opt (msim): New option.
227         (mcpu=): New option.
228         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
229         (bfin_cpu_t): Typedef of enum bfin_cpu.
230         (bfin_cpu_type): New declaration.
231         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
232         -msim and -mcpu= options.
233         (LIB_SPEC): Likewise.
234         * config/bfin/bfin.c (bfin_cpu_type): Define.
235         (bfin_handle_option): Handle -mcpu= option.
236         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
237         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
238         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
239
240 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
241
242         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
243         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
244         (powerpc-wrs-vxworksae): Use ${tm_file}.
245         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
246         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
247         * config/i386/vx-common.h: New file.
248
249 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
250
251         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
252         of crt0.o%s.
253
254 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
255
256         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
257         ldxtr.
258
259 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
260
261         PR c++/31078
262         PR c++/31103
263         * c-common.c (c_build_qualified_type): Set canonical type
264         appropriately.  
265
266 2007-04-12  Richard Guenther  <rguenther@suse.de>
267
268         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
269         lower bound and element size if lower bound is not zero
270         or either of the ARRAY_REF operands is set.
271
272 2007-04-12  Richard Guenther  <rguenther@suse.de>
273
274         PR tree-optimization/24689
275         PR tree-optimization/31307
276         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
277         indices by value.
278         * gimplify.c (canonicalize_addr_expr): To be consistent with
279         gimplify_compound_lval only set operands two and three of
280         ARRAY_REFs if they are not gimple_min_invariant.  This makes
281         it never at this place.
282         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
283
284 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
285
286         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
287         null before emitting a .nsubspa directive.
288
289 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
290
291         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
292         need_to_partition_p if there are no memory statements in the
293         function.
294
295 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
296
297         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
298         (gcd_of_steps_may_divide_p): New function.
299         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
300
301 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
302
303         * reload.c (find_reloads_toplev, find_reloads_address,
304         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
305         not a pointer equality test, to decide if we need to call
306         push_reg_equiv_alt_mem.
307
308 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
309
310         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
311         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
312         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
313
314 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
315
316         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
317         vector to be positive.
318
319 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
320
321         PR 30735
322         PR 31090
323         * doc/invoke.texi: Document --params max-aliased-vops and
324         avg-aliased-vops.
325         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
326         debug_memory_partitions): Move to tree-flow.h
327         * params.h (AVG_ALIASED_VOPS): Define.
328         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
329         users.
330         (mp_info_t): Likewise.
331         (get_mem_sym_stats_for): New.
332         (set_memory_partition): Move from tree-flow-inline.h.
333         (mark_non_addressable): Only clear the set of symbols for the
334         partition if it exists.
335         (dump_memory_partitions): Move from tree-ssa-operands.c
336         (debug_memory_partitions): Likewise.
337         (need_to_partition_p): New.
338         (dump_mem_ref_stats): New.
339         (debug_mem_ref_stats): New.
340         (dump_mem_sym_stats): New.
341         (debug_mem_sym_stats): New.
342         (update_mem_sym_stats_from_stmt): New.
343         (compare_mp_info_entries): New.
344         (mp_info_cmp): Call it.
345         (sort_mp_info): Change argument to a list of mem_sym_stats_t
346         objects.
347         (get_mpt_for): Move from tree-ssa-operands.c.
348         (find_partition_for): New.
349         (create_partition_for): Remove.
350         (estimate_vop_reduction): New.
351         (update_reference_counts): New.
352         (build_mp_info): New.
353         (compute_memory_partitions): Refactor.
354         Document new heuristic.
355         Call build_mp_info, update_reference_counts,
356         find_partition_for and estimate_vop_reduction.
357         (compute_may_aliases): Populate virtual operands before
358         calling debugging dumps.
359         (delete_mem_sym_stats): New.
360         (delete_mem_ref_stats): New.
361         (init_mem_ref_stats): New.
362         (init_alias_info): Call it.
363         (maybe_create_global_var): Remove alias_info argument.
364         Get number of call sites and number of pure/const call sites
365         from gimple_mem_ref_stats().
366         (dump_alias_info): Call dump_memory_partitions first.
367         (dump_points_to_info_for): Show how many times a pointer has
368         been dereferenced.
369         * opts.c (decode_options): For -O2 set --param
370         max-aliased-vops to 500.
371         For -O3 set --param max-aliased-vops to 1000 and --param
372         avg-aliased-vops to 3.
373         * fortran/options.c (gfc_init_options): Remove assignment to
374         MAX_ALIASED_VOPS.
375         * tree-flow-inline.h (gimple_mem_ref_stats): New.
376         * tree-dfa.c (dump_variable): Dump memory reference
377         statistics.
378         Dump NO_ALIAS* settings.
379         (referenced_var_lookup): Tidy.
380         (mem_sym_stats): New.
381         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
382         and ORIG are different SSA names for a memory partition.
383         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
384         * tree-flow.h (struct mem_sym_stats_d): Define.
385         (mem_sym_stats_t): Define.
386         (struct mem_ref_stats_d): Define.
387         (struct gimple_df): Add field mem_ref_stats.
388         (enum noalias_state): Define.
389         (struct var_ann_d): Add bitfield noalias_state.
390         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
391         debug_mem_ref_stats, debug_memory_partitions,
392         debug_mem_sym_stats): Declare.
393         * tree-ssa-structalias.c (update_alias_info): Update call
394         sites, pure/const call sites and asm sites in structure
395         returned by gimple_mem_ref_stats.
396         Remove local variable IS_POTENTIAL_DEREF.
397         Increase NUM_DEREFS if the memory expression is a potential
398         dereference.
399         Call update_mem_sym_stats_from_stmt.
400         If the memory references memory, call
401         update_mem_sym_stats_from_stmt for all the direct memory
402         symbol references found.
403         (intra_create_variable_infos): Set noalias_state field for
404         pointer arguments according to the value of
405         flag_argument_noalias.
406         * tree-ssa-structalias.h (struct alias_info): Remove fields
407         num_calls_found and num_pure_const_calls_found.
408         (update_mem_sym_stats_from_stmt): Declare.
409         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
410         Set default value to 100.
411         (PARAM_AVG_ALIASED_VOPS): Define.
412
413 2007-04-11  Richard Guenther  <rguenther@suse.de>
414
415         PR middle-end/31530
416         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
417         a * -b + c as c - a * b if we honor sign dependent rounding.
418
419 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
420
421         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
422         bfin_expand_strmov.
423         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
424         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
425         variables.
426         (initialize_trampoline): Don't use old-style function definition.
427         (bfin_secondary_reload): Mark IN_P argument as unused.
428
429 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
430
431         PR tree-optimization/31343
432         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
433         (build_polynomial_chrec): Return a scalar when the evolution is zero.
434         * testsuite/gcc.dg/vect/pr31343.c: New.
435
436 2007-04-10  Eric Christopher  <echristo@apple.com>
437
438         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
439         * config/i386/i386.md (*cmpfp0): Use.
440         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
441         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
442         (fix_trunc<mode>_i386_fisttp): Ditto.
443         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
444         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
445         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
446         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
447         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
448         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
449         (unnamed_splitters): Ditto.
450         * config/i386/i386.c (output_fix_trunc): Assert that
451         we're not being passed a TFmode operand.
452
453 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
454
455         PR tree-optimization/31526
456         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
457         n_basic_blocks to find newly added blocks.
458
459 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
460
461         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
462         alternative.
463         (fix_trunc<mode>si_sse): Ditto.
464         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
465         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
466         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
467         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
468         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
469         expander using SSEMODEF mode macro.
470         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
471         expander using SSEMODEF mode macro.
472         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
473         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
474         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
475         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
476         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
477         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
478         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
479         Macroize insn using X87MODEF mode macro.
480
481 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
482
483         * config/i386/sse.md (sse2_pinsrw): Removed.
484         (sse2_pextrw): Renamed to ...
485         (*sse2_pextrw): This.
486
487 2007-04-09  Jan Hubicka  <jh@suse.cz>
488
489         PR target/27869
490         * config/i386/sse.md
491         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
492         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
493         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
494         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
495
496 2007-04-09  Jan Hubicka  <jh@suse.cz>
497
498         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
499         multiple fields of union.
500
501 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
502
503         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
504         (create_preheaders): Check that loops are available.
505         (fix_loop_structure): Clean up, improve comments.
506         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
507         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
508         state flags.
509         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
510         * predict.c (tree_estimate_probability): Do not call
511         calculate_dominance_info.  Call create_preheaders.
512         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
513         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
514         flags.
515         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
516         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
517         * tree-cfg.c (tree_split_edge): Make an assert more precise.
518         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
519         arguments.
520
521 2007-04-08  Jan Hubicka  <jh@suse.cz>
522
523         * tree.h (maybe_fold_offset_to_component_ref): Declare.
524         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
525         * fold-const.c (fold_unary): Use it.
526
527 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
528
529         * varasm.c (assemble_variable): Remove call to
530         lang_hooks.decls.prepare_assemble_variable.
531         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
532         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
533         * langhooks.h (lang_hooks_for_decls): Remove
534         prepare_assemble_variable.
535
536 2007-04-08  Mike Stump  <mrs@apple.com>
537
538         * config/i386/i386.c: Use inc/dec on Core2.
539
540 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
541
542         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
543         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
544         lhd_tree_inlining_end_inlining): Remove.
545         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
546         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
547         end_inlining hooks.
548         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
549         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
550         lhd_tree_inlining_end_inlining): Remove prototypes.
551         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
552         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
553         LANG_HOOKS_TREE_INLINING_START_INLINING,
554         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
555
556         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
557         not set it.
558
559 2007-04-08  Anatoly Sokolov <aesok@post.ru>
560
561         PR target/29932
562         * config/avr/predicates.md (io_address_operand): Delete predicate.
563         (low_io_address_operand): Don't use 'mode' argument.
564         (higth_io_address_operand): Rename ...
565         (high_io_address_operand): ... to this. Don't use 'mode' argument.
566         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
567         for above change.
568
569 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
570
571         Revert change removing staticp.
572
573 2007-04-07  Anatoly Sokolov <aesok@post.ru>
574
575         PR target/30289
576         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
577         earlyclobber.
578
579 2007-04-07  Bruce Korb  <bkorb@gnu.org>
580
581         * c.opt: Add -Wformat-contains-nul.
582         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
583           -Wformat setting.
584         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
585         the NUL byte warning.
586
587 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
588
589         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
590
591 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
592
593         * tree.c (staticp): No longer use staticp langhook.
594         * langhooks.c (lhd_staticp): Removed.
595         * langhooks.h (struct lang_hooks): Remove staticp.
596         * c-common.c (c_staticp): Remove.
597         * c-common.h (c_staticp): Ditto.
598         * langhooks-defs.h (lhd_staticp): Ditto.
599         (LHD_HOOKS_STATICP): Ditto
600         * tree.h (gcc_assert_lowered): New macro.
601
602 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
603
604         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
605         argument "reliable".
606         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
607         Add argument "reliable".  Propagate it through calls.
608         (infer_loop_bounds_from_undefined):  Derive number of iterations
609         estimates from references in blocks that do not dominate loop latch.
610         (gcov_type_to_double_int): New function.
611         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
612         and expected_loop_iterations_unbounded.
613         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
614         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
615         * tree-data-ref.c (estimated_loop_iterations): Export.
616         (get_references_in_stmt): Fix -- do not return addresses of local
617         objects.
618         * cfgloop.h (expected_loop_iterations_unbounded,
619         estimated_loop_iterations): Declare.
620
621 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
622
623         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
624
625 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
626
627         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
628         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
629         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
630         Use output_387_reg_move().
631         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
632         expander using X87MODEF12 mode macro.
633         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
634         choosing register preferences.  Use output_387_reg_move().
635         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
636         instead of "x".  Use output_387_reg_move().
637         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
638         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
639         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
640         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
641         Use output_387_reg_move().
642         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
643         mode macro.
644         (*truncxf?f_i387 splitter): Ditto.
645
646 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
647
648         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
649         LANG_HOOKS_SAFE_FROM_P.
650         * expr.c (safe_from_p): Remove langhook call.
651         * langhooks.h (lang_hooks): Remove safe_from_p.
652         (lhd_safe_from_p): Remove prototype.
653         * langhooks.c (lhd_safe_from_p): Remove.
654
655 2007-04-06  Jan Hubicka  <jh@suse.cz>
656
657         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
658         functions.
659
660 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
661
662         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
663         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
664         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
665         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
666         alternative.
667         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
668         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
669
670 2007-04-05  Richard Henderson  <rth@redhat.com>
671
672         * config/alpha/alpha.c (print_operand) [+]: Remove.
673         (alpha_end_function): Print nop if call at end of function.
674         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
675         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
676         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
677         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
678         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
679         the call pattern. Update peepholes to match.
680
681 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
682
683         * doc/extend.texi (Other Builtins): Add decimal float variants
684         of signbit.
685         * builtins.def: Ditto.
686         * builtins.c (expand_builtin): Ditto.
687
688 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
689             H.J. Lu  <hongjiu.lu@intel.com>
690
691         PR target/31478
692         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
693         of V8HImode when calling ix86_binary_operator_ok.
694         (sse2_pmaddwd): Call ix86_binary_operator_ok.
695         (sdot_prodv8hi): Operands 1 and 2 must be register.
696
697 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
698
699         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
700         initialize align to silence bogus warning.
701
702 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
703
704         PR middle-end/22156
705         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
706         all_no_warning.
707         (struct sra_walk_fns): Remove use_all parameter from use.
708         (sra_hash_tree): Handle BIT_FIELD_REFs.
709         (sra_elt_hash): Don't hash bitfld blocks.
710         (sra_elt_eq): Skip them in parent compares as well.  Handle
711         BIT_FIELD_REFs.
712         (sra_walk_expr): Don't maintain or pass down use_all_p.
713         (scan_use): Remove use_all parameter.
714         (scalarize_use): Likewise.  Re-expand assignment to
715         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
716         output, and re-scalarize after output.  Don't mark anything
717         for no warning.
718         (scalarize_ldst): Adjust.
719         (scalarize_walk_gimple_modify_statement): Likewise.
720         (build_element_name_1): Handle BIT_FIELD_REFs.
721         (instantiate_element): Don't warn for any element whose parent
722         is used as a whole.
723         (instantiate_missing_elements_1): Return the sra_elt.
724         (canon_type_for_field): New.
725         (try_instantiate_multiple_fields): New.
726         (instantiate_missing_elemnts): Use them.
727         (mark_no_warning): Removed.
728         (generate_one_element_ref): Handle BIT_FIELD_REFs.
729         (REPLDUP, sra_build_elt_assignment): New.
730         (generate_copy_inout): Use them.
731         (generate_element_copy): Likewise.  Handle bitfld differences.
732         (generate_element_zero): Don't recurse for blocks.  Use
733         sra_build_elt_assignment.
734         (generate_one_element_int): Take elt instead of var.  Use
735         sra_build_elt_assignment.
736         (generate_element_init_1): Adjust.
737         (scalarize_use, scalarize_copy): Use REPLDUP.
738         (scalarize_ldst): Move assert before dereference.
739         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
740
741 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
742
743         * regmove.c: Fix unused variable warnings due to previous commit.
744
745 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
746
747         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
748         (regmove_bb_head): Remove.
749         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
750         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
751         problems with fixup_match_1.
752         Don't initialize/free regmove_bb_head.
753
754         (reg_is_remote_constant_p): If an insn is in the same basic block
755         but not before INSN, consider it remote, too.
756
757 2007-04-05  Anatoly Sokolov <aesok@post.ru>
758
759         PR target/25448
760         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
761         DECL_ASSEMBLER_NAME, not the DECL_NAME.
762
763 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
764
765         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
766         (CONDITIONAL_REGISTER_USAGE): Likewise.
767
768 2007-04-04  Richard Henderson  <rth@redhat.com>
769
770         * config/alpha/lib1funcs.asm: Remove unused file.
771
772 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
773
774         PR other/31356
775         * opts.c (print_specific_help): Fix --help=<language>
776         header line.
777         (common_handle_option): Support --help=common.
778
779 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
780
781         PR other/31353
782         * gcc.c (main): Do not run the linker if
783         print_subprocess_help indicates that it shouldn't be
784         run.
785
786 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
787
788         PR doc/31355
789         * doc/invoke.texi (--help=): Document <languages> value, fix
790         formatting in tables of values.
791
792 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
793
794         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
795         dllimport attribute of virtual methods.
796
797 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
798
799         * config/score/crti.asm: Change _bss_start to __bss_start.
800         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
801         (OUTGOING_REG_PARM_STACK_SPACE) update.
802         * config/score/score.opt: add options to make backend support
803         score5, score5u, score7 and score7d.
804         * config/score/score.md: Likewise.
805         * config/score/misc.md: Likewise.
806         * config/score/mac.md: Likewise.
807         * doc/invoke.texi: Likewise.
808         * doc/md.texi: update constraints define.
809
810 2007-04-03  Richard Henderson  <rth@redhat.com>
811
812         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
813         an appropriate type, use the mode instead.
814
815 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
816
817         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
818         Set the default --with-arch setting to mips2.
819         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
820         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
821         (MULTILIB_OSDIRNAMES): Delete.
822         (MULTILIB_DIRNAMES): Define.
823         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
824         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
825         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
826         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
827         VXWORKS_OS_CPP_BUILTINS.
828         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
829         (MIPS_DEBUGGING_INFO): Undefine.
830         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
831
832 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
833
834         PR middle-end/30704
835         * fold-const.c (native_encode_real): Encode real.c provided longs
836         as a series of 32-bit native integers.
837         (native_interpret_real): Interpret buffer as a series of 32-bit
838         native integers.
839
840 2007-04-03  Richard Guenther  <rguenther@suse.de>
841
842         * genpreds.c (write_insn_constraint_len): Write function
843         optimized for CONSTRAINT_LEN implementation.
844         (write_tm_preds_h): Output insn_constraint_len inline and
845         use it for CONSTRAINT_LEN.
846         (write_insn_preds_c): Don't output insn_constraint_len.
847         * doc/md.texi (define_register_constraint): Document multi-letter
848         constraints shall have the same length if they start with the same
849         letter.
850
851 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
852
853         PR target/31175
854         * config/i386/i386.md (isinf<mode>2): Expand only when
855         TARGET_C99_FUNCTIONS is set.
856
857 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
858
859         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
860         (x86_64-*-linux*): Ditto.
861         * config/i386/i386.opt (mpc): New option.
862         * config/i386/i386.c (overrride_options): Handle
863         ix87_precision_string.
864         * config/i386/crtprec.c: New file.
865         * config/i386/t-crtpc: Ditto.
866         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
867         and -mpc80 options.
868         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
869         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
870         crtprec32.o, crtprec64.o and crtprec80.o.
871
872         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
873         and -mpc80 options.
874         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
875
876 2007-04-02  Eric Christopher  <echristo@apple.com>
877
878         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
879         limitations on darwin.
880
881 2007-04-02  Anatoly Sokolov <aesok@post.ru>
882
883         PR target/31137
884         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
885
886 2007-04-02  Dave Korn  <dave.korn@artimi.com>
887
888         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
889
890 2007-04-02  Dave Korn  <dave.korn@artimi.com>
891
892         * libgcc2.h (exception_descriptor): Don't forward-declare.
893         (__get_eh_table_language, __get_eh_table_version): Delete
894         prototypes of long-dead functions.
895
896 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
897
898         * ebitmap.h: New file
899         * ebitmap.c: New file
900         * Makefile.in (ebitmap.o): New target.
901
902 2007-04-01  Jan Hubicka  <jh@suse.cz>
903
904         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
905         before very first instruction.
906
907 2007-04-01  Jan Hubicka  <jh@suse.cz>
908
909         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
910         waring on 64bit hosts.
911         * bitmap.h: Fix typo in bitmap_head_def.
912
913 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
914
915         PR rtl-optimization/31391
916         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
917         into a DELETED_LABEL note, and the label is in an empty basic
918         block, update BB_END as well as BB_HEAD.
919
920 2007-04-01  Richard Henderson  <rth@redhat.com>
921
922         PR tree-optimization/31169
923         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
924         to varying if the range is outside [0,  prec-1].
925
926 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
927
928         PR target/31388
929         * config/mips/mips.md (load_const_gp): New insn.
930         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
931         the MIPS16 GP pseudo register if no_new_pseudos.
932         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
933
934 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
935
936         PR target/31364
937         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
938         secureplt.
939         (call_value): Likewise.
940
941 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
942             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
943
944         PR 14737
945         * doc/invoke.texi: (optimization options): Reword description
946         of -ffast-math. Document its primary purpose.
947
948 2007-03-31  Richard Guenther  <rguenther@suse.de>
949
950         * omp-low.c (splay-tree.h): Include.
951         (lookup_decl): Replace splay-tree usage by pointer-map.
952         (maybe_lookup_decl): Likewise.
953         (new_omp_context): Likewise.
954         (delete_omp_context): Likewise.
955         * gimplify.c (splay-tree.h): Include.
956         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
957         pointer-map.
958         (remap_ssa_name): Likewise.
959         (remap_decl): Likewise.
960         (remap_type_1): Likewise.
961         (remap_type): Likewise.
962         (copy_body_r): Likewise.
963         (expand_call_inline): Likewise.
964         (clone_body): Likewise.
965         (copy_tree_r): Likewise.
966         (remap_save_expr): Likewise.
967         (unsave_r): Likewise.
968         (unsave_expr_now): Likewise.
969         (tree_function_versioning): Likewise.
970         (build_duplicate_type): Likewise.
971         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
972         (struct copy_body_data): Replace splay-tree by pointer-map.
973         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
974         not $(SPLAY_TREE_H).
975         (gimplify.o): Depend on $(SPLAY_TREE_H).
976         (omp-low.p): Likewise.
977
978 2007-03-31  Anatoly Sokolov <aesok@post.ru>
979
980         * config/avr/predicates.md (even_register_operand,
981         odd_register_operand): New predicates.
982         * config/avr/avr.md (movw peephole2): New.
983         (movw_r peephole2): New.
984
985 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
986
987         * tree.h (get_signed_or_unsigned_type): New.
988         * fold-const.c (operand_equal_for_comparison_p): Use
989         get_signed_or_unsigned_type instead of
990         lang_hooks.types.signed_or_unsigned_type.
991         * expr.c (store_expr): Ditto.
992         * langhooks.c (get_signed_or_unsigned_type): New.
993         (lhd_signed_or_unsigned_type): New.
994         * langhooks.h (lhd_signed_or_unsigned_type): New.
995         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
996
997 2007-03-30  Richard Henderson  <rth@redhat.com>
998
999         * tree-ssa-loop-ivopts.c: Include target.h.
1000         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1001         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1002         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1003         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1004
1005 2007-03-30  Richard Henderson  <rth@redhat.com>
1006             Kai Tietz  <kai.tietz@onevision.com>
1007
1008         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1009         default for 64-bit.
1010         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1011         (TARGET_64BIT_MS_ABI): New.
1012         (DBX_REGISTER_NUMBER): Handle 64-bit.
1013         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1014         (LONG_TYPE_SIZE): Force to 32.
1015         (REG_PARM_STACK_SPACE): New.
1016         (OUTGOING_REG_PARM_STACK_SPACE): New.
1017         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1018         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1019         (STACK_BOUNDARY): Use 128 for 64-bit.
1020         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1021         Add 64-bit implementation.
1022         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1023         argument unused.
1024         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1025         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1026         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1027         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1028         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1029         TARGET_64BIT_MS_ABI.
1030         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1031         (ix86_pass_by_reference): Likewise.
1032         (ix86_function_value_regno_p): Likewise.
1033         (ix86_build_builtin_va_list): Likewise.
1034         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1035         (function_arg_advance_ms_64): New.
1036         (function_arg_advance): Call it.
1037         (function_arg_ms_64): New.
1038         (function_arg): Call it.
1039         (function_value_ms_64): New.
1040         (ix86_function_value_1): Call it.
1041         (return_in_memory_ms_64): New.
1042         (ix86_return_in_memory): Call it.
1043         (setup_incoming_varargs_ms_64): New.
1044         (ix86_setup_incoming_varargs): Call it.
1045         (ix86_expand_prologue): Handle 64-bit stack probing.
1046         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1047         (output_pic_addr_const): Likewise.
1048         (x86_this_parameter): Likewise.
1049         (x86_output_mi_thunk): Likewise.
1050         (x86_function_profiler): Likewise.
1051         (TARGET_STRICT_ARGUMENT_NAMING): New.
1052         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1053         (TARGET_64BIT_MS_ABI): New.
1054         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1055         * config/i386/i386.md (allocate_stack_worker): Remove.
1056         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1057         describe the clobber of eax without a match_scratch.
1058         (allocate_stack_worker_postreload): Remove.
1059         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1060         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1061         (allocate_stack_worker_rex64_postreload): Remove.
1062         (allocate_stack): Handle 64-bit.
1063         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1064         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1065         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1066         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1067         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1068         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1069         * config.build (x86_64-*-mingw*): New host.
1070         * config.host (x86_64-*-mingw*): New host.
1071         * config.gcc (x86_64-*-mingw*): New target.
1072         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1073
1074 2007-03-30  Richard Henderson  <rth@redhat.com>
1075             Kai Tietz  <kai.tietz@onevision.com>
1076
1077         * c-pragma.c (struct def_pragma_macro_value): New.
1078         (struct def_pragma_macro): New.
1079         (pushed_macro_table): New.
1080         (dpm_hash, dpm_eq): New.
1081         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1082         (init_pragma): Install them.
1083         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1084
1085 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1086
1087         * config/avr/avr.c (avr_override_options): Clear
1088         'flag_delete_null_pointer_checks'.
1089
1090 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1091
1092         PR c++/26099
1093         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1094         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1095         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1096         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1097         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1098         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1099         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1100         C++ extensions.
1101         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1102
1103 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1104
1105         * regmove.c: Move all of pass_stack_adjustments from here...
1106         * combine-stack-adj.c: ...to this new file.
1107         * Makefile.in: Add rules for combine-stack-adj.o.
1108
1109 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1110
1111         PR tree-optimization/31383
1112         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1113         to have the same length.
1114
1115 2007-03-30  Jan Hubicka  <jh@suse.cz>
1116
1117         PR middle-end/30700
1118         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1119         availablility; add more sanity checking; ask varpool only about
1120         VAR_DECL.
1121
1122 2007-03-29  Richard Henderson  <rth@redhat.com>
1123
1124         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1125         to decide, but __SIZEOF_LONG_LONG__.
1126
1127 2007-03-29  Richard Henderson  <rth@redhat.com>
1128
1129         * emutls.c (struct __emutls_array): New.
1130         (emutls_destroy): Use it instead of casting element 0 from void*.
1131         (__emutls_get_address): Likewise.
1132
1133 2007-03-29  Richard Henderson  <rth@redhat.com>
1134
1135         * varasm.c (initializer_constant_valid_p): Don't deny
1136         DECL_DLLIMPORT_P on functions.
1137
1138         * config/i386/cygming.h: Remove function declarations.
1139         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1140         (ASM_OUTPUT_LABELREF): Remove.
1141         (COMMON_ASM_OP): Remove.
1142         (ASM_OUTPUT_COMMON): Remove.
1143         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1144         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1145         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1146         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1147         Rename from TARGET_ENCODE_SECTION_INFO.
1148         * config/i386/netware.h: Likewise.
1149         * config/i386/i386-protos.h: Update.
1150         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1151         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1152         (legitimate_constant_p): Reject dllimports.
1153         (dllimport_map, get_dllimport_decl): New.
1154         (legitimize_dllimport_symbol): New.
1155         (legitimize_address, ix86_expand_move): Use it.
1156         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1157         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1158         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1159         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1160         * config/i386/predicates.md (constant_call_address_operand): Only
1161         accept symbols; reject dllimport_p symbols.
1162         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1163         i386_pe_maybe_record_exported_symbol.
1164         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1165         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1166         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1167         trust the setting of DECL_DLLIMPORT_P.
1168         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1169         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1170         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1171         tidy the argument scanning loop.
1172         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1173         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1174         (i386_pe_strip_name_encoding): Remove.
1175         (i386_pe_binds_local_p): New.
1176         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1177         (i386_pe_output_labelref): Remove.
1178         (i386_pe_asm_output_aligned_decl_common): New.
1179         (i386_pe_maybe_record_exported_symbol): Rename from
1180         i386_pe_record_exported_symbol; check for dllexported symbols.
1181
1182 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1183
1184         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1185         add comment explaining why vsnprintf cannot be used.
1186
1187 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1188
1189         PR tree-optimization/30666
1190         * tree.c (build_complex_type): When creating type names for DWARF2
1191         debug info, create TYPE_DECLs for TYPE_NAME instead of
1192         IDENTIFIER_NODEs.
1193         (build_common_tree_nodes_2): Use build_complex_type when building
1194         predefined complex types, to preserve canonical types.
1195
1196 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1197
1198         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1199         (noce_get_alt_condition): Look at it to determine whether to
1200         reverse the condition or not.
1201         (noce_get_condition): Substitute the truth for lies.
1202         (noce_find_if_block): Set the then_else_reversed field.
1203
1204 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1205
1206         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1207         destination of this insn.
1208         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1209         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1210         'address + 4' rather than a stack based temporary which can be
1211         mis-optimized away.
1212
1213 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1214
1215         * config/s390/s390.c (s390_secondary_input_reload_class,
1216         s390_secondary_output_reload_class): Functions removed.
1217         (s390_secondary_reload): New function.
1218         (TARGET_SECONDARY_RELOAD): Target macro defined.
1219         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1220         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1221         * config/s390/s390.md ("reload_outti", "reload_outdi",
1222         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1223         "reload_out<mode>"): Expanders removed.
1224         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1225         "reload<mode>_nonoffmem_out"): Expanders added.
1226
1227 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1228
1229         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1230         SRC->DEST replacement failed anyway.
1231
1232 2007-03-28  Mike Stump  <mrs@apple.com>
1233
1234         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1235         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1236         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1237
1238 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1239
1240         * config.gcc: Accept barcelona as a variant of amdfam10.
1241         * config/i386/i386.c (override_options): Likewise.
1242         * doc/invoke.texi: Likewise.
1243
1244 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1245
1246         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1247         offsets for BIT_FIELD_REF and COMPONENT_REF.
1248
1249 2007-03-28  Richard Guenther  <rguenther@suse.de>
1250
1251         * tree.c (is_global_var): Move ...
1252         * tree-flow-inline.h (is_global_var): ... here.
1253         * tree.h (is_global_var): Remove declaration.
1254
1255 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1256
1257         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1258         option.
1259         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1260         * config/i386/i386.c (ix86_tune_features): Initialize new
1261         tuning option.
1262         * config/i386/predicates.md (promotable_binary_operator): Use
1263         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1264
1265 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1266
1267         PR target/31380
1268         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1269
1270 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1271
1272         * config/fr30/fr30.md (movsi_internal): Change destination
1273         constraint from m to V and add m to the end.
1274
1275 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1276
1277         * config/sh/sh.md (movsi_i): Fix type attribute.
1278
1279 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1280
1281         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1282         (movsf_ie): Likewise.
1283
1284 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1285
1286         * config.gcc: Add sh4-300 to multilib.
1287         * config/sh/t-mlib-sh4-300: New file.
1288
1289 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1290
1291         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1292         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1293         fix_trunc<mode>di2.
1294         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1295         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1296         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1297         "fixuns_trunctddi2"): Whitespace fix.
1298
1299 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1300
1301         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1302         the definition of struct sh_args.
1303         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1304         CALL_COOKIE_INT_REG_GET): Likewise.
1305
1306 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1307
1308         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1309         transformations are applied successfully.
1310
1311 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1312
1313         * tree.c (tree_contains_struct): Permit 512 tree codes.
1314         * tree.h (tree_contains_struct): Ditto.
1315         (MAX_TREE_CODES): Ditto.
1316         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1317         SPARE member to store remaining padding bits.
1318
1319 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1320
1321         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1322         architecture.
1323
1324 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1325
1326         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1327         * configure: Regenerate.
1328
1329         * configure: Regenerate using the correct version of autoconf.
1330
1331 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1332
1333         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1334         pointer regs.
1335         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1336         regs to "__SP_L__" and "__SP_H__".
1337
1338 2007-03-27  Richard Guenther  <rguenther@suse.de>
1339
1340         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1341         computations with it with a HOST_WIDE_INT variable.
1342
1343 2007-03-26  Mike Stump  <mrs@apple.com>
1344
1345         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1346         objective-c-header, objective-c++-header and objc++-cpp-output
1347         support.
1348         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1349
1350 2007-03-26  Richard Henderson  <rth@redhat.com>
1351
1352         PR target/31361
1353         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1354         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1355         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1356         IX86_BUILTIN_PSRLQ128): New.
1357         (ix86_init_mmx_sse_builtins): Add them.
1358         (ix86_expand_builtin): Expand them.
1359         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1360         operand 2 be TImode.
1361         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1362         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1363         _mm_srli_epi64): Mark __B const.
1364         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1365         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1366         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1367         new two-vector shift builtins.
1368
1369 2007-03-26  Ian Lance Taylor  <iant@google.com>
1370
1371         PR tree-optimization/31345
1372         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1373         [+INF, +INF(OVF)] into VARYING.
1374
1375 2007-03-26  Zack Weinberg  <zackw@panix.com>
1376
1377         * gengtype-parse.c: New file.
1378         * gengtype-yacc.y: Delete.
1379         * gengtype-lex.l: Don't include gengtype-yacc.h.
1380         Define YY_DECL and yyterminate appropriately for recursive
1381         descent parser.  yylval is now a string out-parameter to yylex.
1382         (HWS, EOID): New shorthand.
1383         (IWORD): Add a couple more types.
1384         (yylex): Add a setup stanza.  Remove the complex rules for
1385         detecting GTY'ed types and typedefs; replace with simple
1386         keyword detectors.  Adjust everything for the changed
1387         definition of yylval.  Ignore all pp-directives, not just #define.
1388         (yyerror): Delete.
1389         (parse_file): Rename yybegin; do not call yyparse.
1390         (yyend): New.
1391         * gengtype.c (xasprintf): Export again.
1392         (this_file): New.  Use everywhere __FILE__ was being used.
1393         (get_lang_bitmap): Special case types defined in gengtype.c.
1394         (do_typedef, new_structure): Suppress definition of certain types.
1395         (new_structure): Improve diagnostics of duplicate definitions.
1396         Make sure location_s is associated with input.h.
1397         (nreverse_pairs, define_location_structures): New functions.
1398         (main): Improve tagging of kludge types.  Remove old kludges
1399         for input.h types; use define_location_structures.
1400         * gengtype.h: Update prototypes.  Define token codes here.
1401         * Makefile.in: Remove all references to gengtype-yacc.
1402         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1403         and gengtype.
1404         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1405         add GTY((skip)) to the field that's only conditionally there.
1406         * doc/install.texi: Document that Bison is no longer required
1407         unless building treelang.
1408
1409         * gengtype.c: Don't include gtyp-gen.h.
1410         (srcdir): Declare here.
1411         (base_files, lang_dir_names): Allocate dynamically.
1412         (gt_files, num_gt_files, num_lang_dirs): New globals.
1413         (measure_input_list, read_input_line, read_input_list)
1414         (set_lang_bitmap): New functions.
1415         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1416         simplify, relying on read_input_list to set up the bitmaps.
1417         (main): Arguments are no longer unused.  Check for correct number
1418         of command line arguments, set srcdir and srcdir_len, then call
1419         read_input_list, before doing anything else.  No need to worry
1420         about duplicates in main loop.
1421         * configure.ac: Simplify the calculation of all_gtfiles.
1422         Put language tags in there.  Don't set or substitute
1423         all_gtfiles_files_langs or all_gtfiles_files_frags.
1424         * Makefile.in: Revamp the way gengtype is invoked, now that it
1425         takes a file on its command line with a much simpler format.
1426         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1427         (GTFILES): Remove duplicates and C source files.
1428         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1429         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1430         * configure: Regenerate.
1431
1432         * gengtype.h: Remove all type definitions to gengtype.c; leave
1433         only definitions of options_p, type_p, and pair_p as opaque
1434         pointers.  Update prototypes.
1435         * gengtype.c: Many type definitions moved here from gengtype.h.
1436         Consolidate type definitions at the top of the file.
1437         (xvasprintf): Delete.
1438         (xasprintf): Make static.
1439         (create_nested_pointer_option): Add 'next' parameter.
1440         (create_field_all, create_field_at): New functions.
1441         (create_field): Now a thin wrapper around create_field_all.
1442         (create_optional_field): Rename create_optional_field_ and add
1443         line argument.  Original name is now a macro which supplies
1444         __LINE__.
1445         (oprintf): Use vsnprintf directly.
1446         (close_output_files): Use fatal rather than perror/exit.
1447         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1448         (main): Set progname.  Don't use exit.
1449         * gengtype-yacc.y (struct_fields): Use create_field_at.
1450         (option, optionseqopt): Delete.
1451         (optionseq): Consolidate productions from option here so we
1452         can use the first argument to create_option.
1453
1454         * gengtype-lex.l: Distinguish unions from structures in the
1455         token type.  Don't call find_structure; return the tag as a string.
1456         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1457         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1458         Reorganize typedef_struct production accordingly.
1459         Use create_nested_ptr_option.
1460         * gengtype.c (create_nested_ptr_option): New function.
1461         * gengtype.h: Declare it.
1462
1463         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1464         (string_type): Don't declare.
1465         (do_scalar_typedef): Declare.
1466         (create_scalar_type): Update prototype.
1467         * gengtype.c (string_type): Make static.
1468         (scalar_nonchar, scalar_char): New.
1469         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1470         (resolve_typedef): Use scalar_nonchar for error recovery.
1471         (create_scalar_type): Remove name_len field.  Return scalar_char
1472         or scalar_nonchar as appropriate.
1473         (adjust_field_type): Look at scalar_is_char boolean to decide whether
1474         to use string_type.
1475         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
1476         whenever possible.
1477         (main): Initialize scalar_char and scalar_nonchar before calling
1478         gen_rtx_next.
1479         * gengtype-lex.l: Adjust for removal of second argument to
1480         create_scalar_type.  Use yylval.s instead of yylval.t when
1481         returning SCALAR.
1482         * gengtype-yacc.y: Type of SCALAR is string.  Call
1483         create_scalar_type from type:SCALAR rule.  Adjust for removal of
1484         second argument to create_scalar_type.
1485
1486         * vec.h: Remove all #if IN_GENGTYPE blocks.
1487         Add comment saying that changes may require adjustments to gengtype.
1488         * gengtype.c: Don't include coretypes.h or tm.h.
1489         Add comment to inclusion of errors.h.
1490         (note_def_vec, note_def_vec_alloc): New functions.
1491         * gengtype.h: Declare new functions.
1492         * gengtype-lex.l: Don't include coretypes.h.
1493         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
1494         Delete.
1495         (update_lineno): Remove unnecessary prototype.
1496         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
1497         (VEC rule): Just return VEC_TOKEN.
1498         * gengtype-yacc.y (VEC_TOKEN): New token type.
1499         (type): Add a production for VEC(a,b).
1500         * Makefile.in: Update dependencies.
1501
1502         * gengtype-lex.l: Remove rules for parsing pointer-to-function
1503         typedefs that use the old PARAMS macro.
1504
1505         * gengtype-lex.l: Remove all rules and states relating to yacc
1506         input files.
1507         * gengtype-yacc.y: Similarly.
1508         * gengtype.c (note_yacc_type): Delete function.
1509         * gengtype.h: Update prototypes.
1510
1511 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
1512
1513         * tree-pretty-print.c (dump_generic_node): Report precision of
1514         unnamed integer types.
1515
1516 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
1517
1518         * ifcvt.c (noce_try_store_flag_constants): Don't check
1519         no_new_pseudos here.
1520         (noce_try_store_flag_constants): Don't check no_new_pseudos.
1521         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
1522         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
1523         noce_try_sign_mask): Likewise.
1524         (if_convert): Check no_new_pseudos here.
1525
1526         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
1527         Remove prototypes.
1528         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
1529         (noce_get_condition): Handle new then_else_reversed argument.
1530         (noce_init_if_info): Remove, fold into noce_find_if_block.
1531         (noce_process_if_block): Take a struct noce_if_info as the
1532         argument.  Don't set up one based on ce_if_info.  Update pointer
1533         references accordingly.
1534         (cond_move_process_if_block): Likewise.
1535         (process_if_block): Removed.
1536         (find_if_block): Removed.  Move functionality two new functions,
1537         noce_find_if_block and cond_exec_find_if_block.
1538         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
1539         blocks and the symmetric IF-ELSE-JOIN case.
1540         (cond_exec_find_if_block): Also new function mostly based on old
1541         find_if_block and process_if_block.
1542         (find_if_header): Replace find_if_block call with separately
1543         guarded calls to noce_find_if_block and cond_exec_find_if_block.
1544         (find_cond_trap): Update noce_get_condition call.
1545         (dead_or_predicable): Likewise.
1546
1547 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
1548
1549         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
1550         Remove.
1551         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
1552         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
1553         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
1554         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
1555         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
1556         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
1557         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
1558         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
1559         __builtin_ia32_psrad128 builtins.
1560
1561 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
1562
1563         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
1564         * config/i386/constraints.md
1565         (define_constraint "I"): Use IN_RANGE macro.
1566         (define_constraint "J"): Ditto.
1567         (define_constraint "K"): Ditto.
1568         (define_constraint "M"): Ditto.
1569         (define_constraint "N"): Ditto.
1570         (define_constraint "O"): Ditto.
1571         * config/i386/predicates.md
1572         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
1573         (define_predicate "const_0_to_3_operand"): Ditto.
1574         (define_predicate "const_0_to_7_operand"): Ditto.
1575         (define_predicate "const_0_to_15_operand"): Ditto.
1576         (define_predicate "const_0_to_63_operand"): Ditto.
1577         (define_predicate "const_0_to_255_operand"): Ditto.
1578         (define_predicate "const_1_to_31_operand"): Ditto.
1579         (define_predicate "const_2_to_3_operand"): Ditto.
1580         (define_predicate "const_4_to_7_operand"): Ditto.
1581
1582 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1583
1584         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
1585         in SImode for save_world.
1586         * config/rs6000/altivec.md (save_world, restore_world): Convert to
1587         LR hard reg.
1588
1589 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
1590
1591         PR tree-optimization/30784
1592         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
1593         BIT_FIELD_REF.
1594
1595 2007-03-25  Revital Eres  <eres@il.ibm.com>
1596
1597         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
1598           Fold movement_possibility function into it.
1599
1600 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1601
1602         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
1603         (load_macho_picbase_{si,di}): Convert to LR hard reg.
1604         (call_indirect_nonlocal_darwin64): Same.
1605         (call_nonlocal_darwin64): Same.
1606         (call_value_indirect_nonlocal_darwin64): Same.
1607         (call_value_nonlocal_darwin64): Same.
1608         (sibcall_nonlocal_darwin64): Same.
1609         (sibcall_value_nonlocal_darwin64): Same.
1610         (sibcall_symbolic_64): Same.
1611         (sibcall_value_symbolic_64): Same.
1612         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
1613         LR pseudo.
1614         (rs6000_emit_load_toc_table): Same.
1615         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
1616         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
1617         (mull_call): Same.
1618         (divss_call): Same.
1619         (divus_call): Same.
1620         (quoss_call): Same.
1621         (quous_call): Same.
1622         (load_toc_v4_pic_si): Same
1623         (load_toc_v4_PIC_1): Same.
1624         (load_toc_v4_PIC_1b): Same.
1625         (call_indirect_aix{32,64}): Same.
1626         (call_value_indirect_aix{32,64}): Same.
1627         (call): Same.
1628         (call_value): Same.
1629         (call_local{32,64}): Same.
1630         (call_value_local{32,64}): Same.
1631         (call_indirect_nonlocal_aix{32,64}): Same.
1632         (call_nonlocal_aix{32,64}): Same.
1633         (call_value_indirect_nonlocal_aix{32,64}): Same.
1634         (call_value_nonlocal_aix{32,64}): Same.
1635         (call_indirect_nonlocal_sysv<mode>): Same.
1636         (call_nonlocal_sysv<mode>): Same.
1637         (call_value_indirect_nonlocal_sysv<mode>): Same.
1638         (call_value_nonlocal_sysv<mode>): Same.
1639         (sibcall): Same.
1640         (sibcall_local{32,64}): Same.
1641         (sibcall_value_local{32,64}): Same.
1642         (sibcall_nonlocal_aix{32,64}): Same.
1643         (sibcall_value_nonlocal_aix{32,64}): Same.
1644         (sibcall_nonlocal_sysv<mode>): Same.
1645         (sibcall_value): Same.
1646         (sibcall_value_nonlocal_sysv<mode>): Same.
1647
1648 2007-03-24  Paul Brook  <paul@codesourcery.com>
1649
1650         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
1651         * config/arm/linux-eabi.h: Remove legacy syscall hack.
1652
1653 2007-03-24  Richard Henderson  <rth@redhat.com>
1654
1655         * config/ia64/constraints.md: New file.
1656         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
1657         satisfies_constraint_?.
1658         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
1659         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
1660         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
1661         ia64_output_mi_thunk): Likewise.
1662         (ia64_const_ok_for_letter_p): Remove.
1663         (ia64_const_double_ok_for_letter_p): Remove.
1664         (ia64_extra_constraint): Remove.
1665         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
1666         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
1667         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
1668         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
1669         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
1670         EXTRA_MEMORY_CONSTRAINT): Remove.
1671         * config/ia64/ia64.md: Include constriants.md.  Replace
1672         CONST_OK_FOR_? with satisfies_constraint_?.
1673
1674 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
1675             H.J. Lu  <hongjiu.lu@intel.com>
1676
1677         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
1678         DPD or BID name.
1679         (name macros): Use DPD_BID_NAME to convert names properly.
1680
1681         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
1682         decimal floating point format.
1683         (init_floating_libfuncs): Change decimal functions so that they
1684         have a "bid_" prefix if the decimal system uses the BID format,
1685         and "dpd_" prefix if the decimal system uses the DPD format.
1686         (init_interclass_conv_libfuncs): Ditto.
1687         (init_intraclass_conv_libfuncs): Ditto.
1688
1689         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1690         using the BID format.
1691
1692         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1693         whether we are using the BID decimal format.
1694         * configure: Regenerate.
1695
1696         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1697         the compiler has decimal floating point enabled.  Define
1698         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1699         instead of DPD.
1700
1701         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1702         using the BID format.
1703
1704         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1705         whether we are using the BID decimal format.
1706         * configure: Regenerate.
1707
1708         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1709         the compiler has decimal floating point enabled.  Define
1710         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1711         instead of DPD.
1712
1713         * doc/install.texi (--enable-decimal-float): Document BID and DPD
1714         options, and that it is enabled for i386/x86_64 systems.
1715
1716         * Makefile.in (enable_decimal_float): New.
1717         (DECNUMFMT): New.
1718         (DECNUMINC): Add  -I$(DECNUMFMT).
1719         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
1720         to $(DECNUMFMT) from $(DECNUM).
1721
1722         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
1723         Substitute enable_decimal_float.
1724         * configure: Regenerated.
1725
1726         PR other/30529
1727         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
1728         unsigned long.
1729
1730         * configure.ac: Enable decimal float for x86_64-*-linux*.
1731         * configure: Regenerated.
1732
1733         PR other/30530
1734         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
1735         decimal128ClearSign to flip and clear the sign bit in decimal128.
1736         (decimal_real_maxval): Set decimal128SetSign to set the sign
1737         bit in decimal128.
1738
1739 2007-03-23  Ian Lance Taylor  <iant@google.com>
1740
1741         * fold-const.c (fold_binary): Correct warning for X - c >= X.
1742
1743 2007-03-23  Ian Lance Taylor  <iant@google.com>
1744
1745         * tree-dump.c (dump_files): Correct comment.
1746
1747 2007-03-23  Ian Lance Taylor  <iant@google.com>
1748
1749         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
1750
1751 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
1752
1753         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
1754         in cfglayout mode.  Don't go into and out of cfglayout mode.
1755         Link the blocks in the order of the constructed traces.
1756         (rest_of_handle_tracer): Adjust call to tracer.
1757         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
1758         Don't go into cfglayout mode.
1759         (rtl_loop_done): Don't go out of cfglayout mode.
1760         * cfglayout.c (relink_block_chain): New function, split out from...
1761         (fixup_reorder_chain): ...here.  Remove redundant checking.
1762         (cfg_layout_finalize): Don't clear the header, footer, and aux
1763         fields here, move the code to do so to relink_block_chain.  Likewise
1764         for free_original_copy_tables.
1765         * rtl.h (tracer): Update prototype.
1766         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
1767         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
1768         mode.  Use relink_block_chain to serialize the CFG according to the
1769         new basic block order.  Move targetm.cannot_modify_jumps_p check from
1770         here...
1771         (gate_handle_reorder_blocks): ...to here.
1772         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
1773         from here...
1774         (gate_duplicate_computed_gotos): ...to here.
1775         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
1776         something always changes when going into and out of cfglayout mode.
1777         Perform an expensive cfg cleanup while going into cfglayout mode.
1778         Always update liveness information on HAVE_conditional_execution
1779         targets.  Reserialize the basic blocks and go out of cfglayout mode.
1780         * reg-stack.c: Include cfglayout.h.
1781         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
1782         the call to reorder_basic_blocks.
1783         * basic-block.h (reorder_basic_blocks): Update prototype.
1784         (relink_block_chain): New prototype.
1785         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
1786
1787 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
1788
1789         * config/mips/mips.md (type, hazard, *movdi_32bit,
1790         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
1791         *movhi_internal, *movqi_internal, *movsf_hardfloat,
1792         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
1793         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
1794         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
1795         applicable.
1796         (movcc): Change first xfer to multi.
1797         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
1798         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
1799         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
1800         config/mips/generic.md: Change reservations using "xfer" to use
1801         "mfc,mtc".
1802         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
1803         using match_operand.
1804         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
1805         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
1806         examining mode.
1807         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
1808
1809 2007-03-22  Richard Henderson  <rth@redhat.com>
1810
1811         * config/i386/i386.c: Remove unnecessary function declarations.
1812         Move targetm definition, and all related macros, to the end of
1813         the file.  Resort some functions to put definitions before uses.
1814         (ix86_attribute_table): Make static.  Move to end of file.
1815         (ix86_gimplify_va_arg): Make static.
1816
1817 2007-03-22  Richard Henderson  <rth@redhat.com>
1818
1819         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
1820         don't increase local_regparm with force_align_arg_pointer check.
1821         (ix86_function_sseregparm): Assert 32-bit.
1822         (type_has_variadic_args_p): New.
1823         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
1824         type_has_variadic_args_p.
1825         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
1826         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
1827         use memset instead.  Do maybe_vaarg check first; skip attribute
1828         tests if true; skip attribute tests for 64-bit.
1829         (construct_container): Remove TARGET_DEBUG_ARG.
1830         (function_arg_advance_32, function_arg_advance_64): Split out ...
1831         (function_arg_advance): ... from here.
1832         (function_arg_32, function_arg_64): Split out ...
1833         (function_arg): ... from here.
1834         (ix86_pass_by_reference): Tidy.
1835         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
1836         (function_value_32): New, from parts of ix86_function_value
1837         and ix86_value_regno.
1838         (function_value_64): New, from parts of ix86_function_value
1839         and ix86_libcall_value.
1840         (ix86_function_value_1): New.
1841         (ix86_function_value, ix86_libcall_value): Use it.
1842         (return_in_memory_32, return_in_memory_64): Split out ...
1843         (ix86_return_in_memory): ... from here.
1844         (ix86_struct_value_rtx): Skip for 64-bit.
1845         (ix86_libcall_value, ix86_value_regno): Remove.
1846         (setup_incoming_varargs_64): Split out ...
1847         (ix86_setup_incoming_varargs): ... from here.
1848         (ix86_va_start): Remove TARGET_DEBUG_ARG.
1849         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
1850         * config/i386/i386-protos.h (ix86_function_value): Remove.
1851         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
1852
1853 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1854
1855         PR other/23572
1856         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
1857         infinities not supported, otherwise emit warning if -Woverflow. On
1858         underflow, emit warning if -Woverflow.
1859         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
1860         and 0 otherwise.
1861         * real.h (real_from_string): Update declaration
1862
1863 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
1864             Richard Henderson  <rth@redhat.com>
1865
1866         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
1867         * calls.c (compute_argument_block_size, expand_call,
1868         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
1869         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
1870         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
1871         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
1872         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
1873         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
1874         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
1875         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
1876         Set to 1.
1877
1878 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
1879
1880         * c-incpath.c (add_sysroot_to_chain): New.
1881         (merge_include_chains): Add sysroot argument.  Call
1882         add_sysroot_to_chain if sysrooted.
1883         (register_include_chains): Update call to merge_include_chains.
1884         * doc/cppopts.texi: Document use of '=' in include directory
1885         arguments.
1886
1887 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
1888
1889         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
1890         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
1891         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
1892         insn pattern using X87MODEF12 mode macro.
1893
1894 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
1895
1896         * regmove.c (regmove_optimize): Use reg_mentioned_p
1897         instead of reg_overlap_mentioned_p for DST.
1898
1899 2007-03-21  Mike Stump  <mrs@apple.com>
1900
1901         * c.opt: Fixup for Objective-C/C++.
1902
1903 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
1904
1905         * explow.c (convert_memory_address): Fold memory reference when
1906         POINTERS_EXTEND_UNSIGNED < 0
1907
1908 2007-03-21  Richard Henderson  <rth@redhat.com>
1909
1910         PR target/31245
1911         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
1912         * config/i386/mmintrin.h (__m64): Likewise.
1913         * config/i386/xmmintrin.h (__m128): Likewise.
1914
1915 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1916
1917         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
1918         (VXWORKS_OS_CPP_BUILTINS): Define.
1919         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
1920         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
1921
1922 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1923
1924         * rtl.h (constant_pool_reference_p): Delete.
1925         (find_constant_src): Declare.
1926         * rtlanal.c (find_constant_src): New function.
1927         * simplify-rtx.c (constant_pool_reference_p): Delete.
1928         * config/i386/i386.md: Use find_constant_src instead of
1929         constant_pool_reference_p/avoid_constant_pool_reference pairs.
1930
1931 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1932
1933         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
1934         * c-cppbuiltin.c (c_cpp_builtins): Define them.
1935
1936 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
1937
1938         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
1939         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
1940         (arm_elf_asm_constructor): Use it.
1941         (arm_elf_asm_destructor): New function.
1942
1943 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
1944
1945         * jump.c (mark_jump_label): Treat SEQUENCE specially.
1946
1947 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
1948
1949         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
1950
1951 2007-03-19  Andrew Haley  <aph@redhat.com>
1952
1953         PR tree-optimization/31264
1954         * tree-vrp.c (register_edge_assert_for_1): Don't look though
1955         VIEW_CONVERT_EXPRs.
1956
1957 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
1958
1959         PR rtl-optimization/30907
1960         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
1961         (fwprop_init): Always call loop_optimizer_initialize.
1962         (fwprop_done): Always call loop_optimizer_finalize.
1963         (fwprop): We always have loop info now.
1964         (gate_fwprop_addr): Remove.
1965         (pass_fwprop_addr): Use gate_fwprop as gate.
1966
1967         PR rtl-optimization/30841
1968         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
1969         df_chain_alloc): Call df_reorganize_refs unconditionally.
1970         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
1971         refs_organized to refs_organized_size.
1972         (df_ref_create_structure): Use refs_organized_size instead of
1973         bitmap_size if refs had been organized, and keep refs_organized_size
1974         up-to-date.
1975         * df.h (struct df_ref_info): Change refs_organized to
1976         refs_organized_size.
1977         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
1978         bitmap_size.
1979
1980 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
1981
1982         * except.c (output_function_exception_table): Do not reference the
1983         EH personality routine for functions that do not require an
1984         exception table.
1985
1986 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
1987
1988         PR c/30762
1989         * c-typeck.c (convert_for_assignment): Call comptypes for
1990         RECORD_TYPE or UNION_TYPE.
1991
1992         PR inline-asm/30505
1993         * reload1.c (reload): Do invalid ASM checking after
1994         cleanup_subreg_operands.
1995
1996 2007-03-19  Jeff Law  <law@redhat.com>
1997
1998         * tree-cfg.c (find_taken_edge): Tighten conditions for
1999         optimizing computed gotos.
2000
2001 2007-03-19  Michael Matz  <matz@suse.de>
2002
2003         * builtins.c (expand_builtin_sync_operation,
2004         expand_builtin_compare_and_swap,
2005         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2006         correctly.
2007
2008         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2009         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2010         for operand 3.
2011
2012 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2013
2014         * doc/tm.texi: Add brackets around the return type of
2015         TARGET_SECONDARY_RELOAD.
2016
2017 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2018         Richard Guenther  <rguenther@suse.de>
2019
2020         PR tree-optimization/31254
2021         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2022         Use handled_component_p () where appropriate.  Continue
2023         propagating into the rhs if we propagated into an INDIRECT_REF
2024         on the lhs.
2025
2026 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2027
2028         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2029         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2030         (xde, xdee): Mode attributes adjusted to support DFP modes.
2031         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2032         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2033         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2034         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2035         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2036         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2037         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2038         numbers.
2039         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2040         "movsf"): Insn definitions removed.
2041         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2042         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2043         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2044         definitions added.
2045         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2046         "reload_in<mode>", "reload_out<mode>"): Expander added.
2047         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2048         Expander removed.
2049
2050 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2051
2052         * config/s390/s390.md: Only non-functional changes.  Renamed
2053         FPR mode macro to BFP all over the file.
2054
2055 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2056
2057         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2058         (op_type attribute): RRF instruction type added.
2059         (fT0): New mode attribute.
2060         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2061         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2062         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2063         no secondary memory is needed when moving DFmode values between GPRs
2064         and FPRs.
2065
2066 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2067
2068         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2069         inverted and documentation adjusted.
2070         ("mhard-dfp", "msoft-dfp"): New options.
2071         * config/s390/s390.c (s390_handle_arch_option): New architecture
2072         switch: z9-ec.
2073         (override_options): Sanity checks for the new options added.
2074         * config.gcc: New architecture switch: z9-ec.
2075         * config/s390/s390.h (processor_flags): PF_DFP added.
2076         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2077         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2078         when the bit is NOT set so remove it from the defaults.
2079
2080 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2081
2082         * genemit.c (main): Print include statement for dfp.h.
2083         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2084         is not available.
2085
2086 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2087
2088         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2089
2090 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2091
2092         PR target/31022
2093         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2094         instead of PATTERN.
2095
2096 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2097
2098         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2099         attr_length_call, output_call, output_indirect_call): Cleanup
2100         formatting of targetm calls.
2101
2102 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2103
2104         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2105
2106 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2107
2108         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2109         reservation, bypass and anti-bypass descriptions for these instructions.
2110         Update move patterns.
2111         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2112         TYPE_FPSTORE.
2113
2114 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2115
2116         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2117         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2118         (get_initial_def_for_reduction): Likewise.
2119
2120 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2121
2122         Fix PR tree-optimization/29922
2123         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2124         (get_representative): Removed.
2125         (value_dies_in_block_x): Update for rvuse removal.
2126         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2127         (compute_antic_aux): Handle when PHI nodes appear in
2128         non-single-successors.
2129         (dump_bitmap_of_names): Removed.
2130         (compute_antic_safe): Renamed and removed rvuse calculation.
2131         Calculate only antic safe.
2132         (insert_into_preds_of_block): Remove assert.
2133         (execute_pre): Update for renamed functions.
2134         (defer_or_phi_translate_block): New function.
2135
2136 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2137
2138         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2139         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2140         typos.
2141         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2142         Follow spelling conventions.
2143
2144         * tree-data-ref.h: Remove the prototype for analyze_array.
2145
2146 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2147
2148         PR tree-optimization/31041
2149         * tree-vect-transform.c (get_initial_def_for_induction): Call
2150         force_gimple_operand.
2151
2152 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2153
2154         * ipa-type-escape.c (look_for_casts) : Revert code to use
2155         handled_component_p due to ada test a-numaux.adb.
2156
2157 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2158
2159         * final.c (final_scan_insn): Alter the condition of a
2160         conditional trap if we have nonstandard CC.
2161
2162 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2163
2164         * configure.ac: Remove excess quoting from asm line 0 test.
2165         * configure: Rebuilt.
2166
2167 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2168
2169         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2170         * c-common.c (convert_and_check): Move warning logic to...
2171         (warnings_for_convert_and_check): ...here. Define.
2172         * c-common.h (warnings_for_convert_and_check): Declare.
2173
2174 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2175
2176         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2177         (output_call): Likewise.
2178
2179 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2180
2181         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2182
2183 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2184
2185         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2186
2187 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2188
2189         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2190         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2191
2192 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2193
2194         PR tree-optimization/31183
2195         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2196         Use double_int instead of unsigned int for representing access_strides.
2197         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2198
2199 2007-03-16  Richard Guenther  <rguenther@suse.de>
2200
2201         PR tree-optimization/31146
2202         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2203         to allow recursion of forward_propagate_addr_expr.
2204         (forward_propagate_addr_into_variable_array_index): Likewise.
2205         (forward_propagate_addr_expr): Likewise.
2206         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2207         (forward_propagate_addr_expr_1): Recurse on simple copies
2208         instead of propagating into them.  Do so for useless conversions
2209         as well.
2210         (forward_propagate_addr_expr): Clean up unused statements after
2211         recursion.
2212
2213 2007-03-16  Richard Guenther  <rguenther@suse.de>
2214
2215         * builtins.c (expand_builtin_cexpi): Use the right argument
2216         for the expansion via cexp.
2217
2218 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2219
2220         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2221         * configure: Rebuilt.
2222
2223 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2224
2225         PR debug/29906
2226         * dwarf2out.c (force_type_die): Adjust comment.
2227         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2228
2229 2007-03-15  DJ Delorie  <dj@redhat.com>
2230
2231         * config/frv/predicates.md (minmax_operator): Don't check operands
2232         here.
2233
2234 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2235
2236         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2237         Update constant estimates of number of iterations.
2238         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2239         argument renamed to "realistic".
2240         (compute_estimated_nb_iterations): Removed.
2241         (record_niter_bound): New function.
2242         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2243         call record_nonwrapping_iv with upper = false.
2244         (infer_loop_bounds_from_signedness): Pass upper argument to
2245         record_nonwrapping_iv.
2246         (estimate_numbers_of_iterations_loop): Do not call
2247         compute_estimated_nb_iterations.  Record estimate based on profile
2248         information.  Initialize the constant estimates of number of
2249         iterations.
2250         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2251         estimates.
2252         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2253         number of iterations is too small.
2254         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2255         (EST_NOT_AVAILABLE): Removed.
2256         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2257         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2258         fields.
2259
2260 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2261
2262         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2263         Handle NE_EXPR guards.
2264
2265 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2266
2267         PR c++/24924
2268         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2269         Set also -pedantic-errors by default for the  preprocessor unless
2270         -fpermissive is given.
2271
2272 2007-03-15  Richard Guenther  <rguenther@suse.de>
2273
2274         PR middle-end/29719
2275         PR middle-end/31161
2276         * builtins.c (expand_builtin_cexpi): As a fallback if we
2277         don't have builtins for sincos or cexp create a function
2278         declaration for cexp and expand to a call to that.
2279         (expand_builtin_int_roundingfn): Always fall
2280         back to floor/ceil and its variants even if they may be
2281         not available.
2282
2283 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2284
2285         PR middle-end/31159
2286         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2287         jump tables, move the call to delete_dead_jumptables from here...
2288         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2289         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2290         don't allow merging of blocks that try_redirect_by_replacing_jump
2291         also does not handle when not optimizing.
2292
2293 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2294             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2295
2296         * config/i386/i386.md (x86_sahf_1): Correctly handle
2297         HAVE_AS_IX86_SAHF.
2298
2299 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2300
2301         PR target/31167
2302         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2303         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2304         from operand constraints and use "e" constraint instead.
2305         (*subti3_1, *subti3_1 splitter): Ditto.
2306         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2307         operand[1] predicate.
2308
2309 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2310
2311         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2312         arrays, multiply the access strides by the size of the sub-array.
2313         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2314
2315 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2316
2317         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2318         the configured assembler supports the sahf mnemonic.
2319         * configure: Regenerate.
2320         * config.in: Regenerate.
2321
2322         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2323         emit "sahf" or ".byte\t0x9e" as asm template.
2324
2325 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2326
2327         PR 31018
2328         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2329         option to replace hard coded TARGET_xxx in md file.
2330         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2331         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2332         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2333         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2334         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2335         (X86_TUNE_NOT_VECTORMODE): Ditto.
2336         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2337         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2338         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2339         (TUNE_SLOW_IMUL_IMM8): Ditto.
2340         (TUNE_MOVE_M1_VIA_OR): Ditto.
2341         (TUNE_NOT_UNPAIRABLE): Ditto.
2342         (TUNE_NOT_VECTORMODE): Ditto.
2343
2344         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2345         options.
2346
2347         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2348         tuning options instead of hard coded TARGET_xxx.
2349         (fix ssemode peephole2's): Ditto.
2350         (imul peephole2's): Ditto.
2351         (movsi_or): Ditto.
2352         (movdi_or_rex64): Ditto.
2353         (move peephole2): Ditto.
2354         (not peephole2's): Ditto.
2355
2356 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2357
2358         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2359         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2360         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2361         of empty body.
2362         * c-parser.c (c_parser_do_statement): Warn about empty body in
2363         do/while statement.
2364         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2365         * doc/invoke.texi (-Wempty-body): Update documentation.
2366
2367 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2368
2369         PR c/21438
2370         * c-common.h (warn_for_div_by_zero): Declare.
2371         * c-common.c (warn_for_div_by_zero): Define.
2372         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2373         warning.
2374
2375 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2376
2377         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2378         to PREFIX and STANDARD_PREFIX.
2379
2380 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2381             Phil Edwards  <phil@codesourcery.com>
2382
2383         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2384         (__gthread_once_t): Remove busy field for RTPs.
2385         (__GTHREAD_ONCE_INIT): Update accordingly.
2386
2387 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2388
2389         * doc/invoke.texi: Document VxWorks options.
2390
2391 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2392
2393         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2394
2395 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2396
2397         PR tree-optimization/30590
2398         * tree-nrv.c (tree_nrv): Check for the partial update of the
2399         return value.
2400
2401 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2402
2403         * flags.h (flag_random_seed): Remove declaration, in favor of...
2404         * toplev.h (get_random_seed, set_random_seed): ... these.
2405         * tree.c (get_file_function_name): Use the former.
2406         * opts.c (common_handle_option): Use the latter.
2407         * toplev.c
2408
2409 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2410
2411         PR middle-end/31127
2412         * cse.c (cse_find_path): Do not bail out if a basic block that
2413         we already visited now becomes part of a path that starts at a
2414         different basic block.  Just disallow this, to make sure we
2415         visit each basic block at most once.
2416
2417 2007-03-13  Jan Hubicka  <jh@suse.cz>
2418
2419         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2420         when profile esitmate is present, calls with very low frequency are
2421         cold.
2422
2423 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2424
2425         PR tree-optimization/30730
2426         PR tree-optimization/26900
2427         * tree-ssa-loop-niter.c: Include gmp.h.
2428         (bounds): New type.
2429         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2430         split_to_var_and_offset, determine_value_range,
2431         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2432         bound_difference, bounds_add, bounds_negate,
2433         number_of_iterations_ne_max, dump_affine_iv): New functions.
2434         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2435         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2436         difference of initial and final value of control iv to validate
2437         results.
2438         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2439         on the difference of the extremes of the control iv.  Add dumps.
2440         (expand_simple_operations): Handle phi nodes.
2441         (simplify_using_initial_conditions): Do not record used conditions.
2442         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2443         Do not set additional_info.
2444         (implies_nonnegative_p, implies_ge_p): Removed.
2445         (derive_constant_upper_bound): Do not use parameter `additional'.
2446         (record_estimate): Parameter `additional' removed.  Parameter
2447         `i_bound' added.  Do not call derive_constant_upper_bound.
2448         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2449         bound the number of iterations estimate.
2450         (estimate_numbers_of_iterations_loop): Pass the estimate from
2451         the number of iterations analysis to record_estimate.
2452         * tree.h (multiple_of_p): Declare.
2453         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2454         (scev_const_prop): Do not check expression_expensive_p.
2455         * fold-const.c (multiple_of_p): Exported.
2456         * double-int.c (double_int_mask): Exported.
2457         * double-int.h (double_int_mask): Declare.
2458         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2459         field.  Added max field.
2460
2461 2007-03-13  David Taylor  <taylor@candd.org>
2462
2463         PR driver/12448:
2464         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2465         default -MQ.
2466
2467 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2468
2469         PR target/31123
2470         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2471         two unamed patterns.
2472
2473 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
2474
2475         * config/i386/i386.opt (mcx16, msahf): New options.
2476         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
2477         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
2478
2479         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
2480         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
2481         Output -mcx16 and -msahf options when corresponding bit is set.
2482
2483         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
2484         and -msahf options.
2485
2486 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2487
2488         * configure.ac: Test for assembler tolerance to # 0 "".
2489         * configure, config.in: Rebuilt.
2490         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
2491
2492 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
2493
2494         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
2495
2496         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
2497         (handle_syscall): Handle direct system calls.
2498         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
2499
2500 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2501
2502         * doc/invoke.texi: Fix cpp.info cross-reference.
2503         * doc/passes.texi: Fix gcc.info cross-reference.
2504
2505 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
2506
2507         PR tree-optimization/30835
2508         * lambda-code.c (can_convert_to_perfect_nest): Check whether
2509         bb_for_stmt is not NULL before accessing it.
2510
2511 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
2512
2513         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
2514         some multilibs.
2515
2516 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2517
2518         PR 30635
2519         * doc/install.texi: Document --enable-stage1-languages
2520
2521 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
2522
2523         * tree-pass.h (pass_into_cfg_layout_mode,
2524         pass_outof_cfg_layout_mode): Declare.
2525         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
2526         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
2527         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
2528         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2529
2530 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2531
2532         * c-decl.c (warn_variable_length_array): New function.
2533         Refactored from grokdeclarator to handle warn_vla
2534         and handle unnamed array case.
2535         (grokdeclarator): Refactored VLA warning case.
2536         * c.opt (Wvla): New flag.
2537         * doc/invoke.texi (Wvla): New warning.
2538
2539 2007-03-12  Richard Henderson  <rth@redhat.com>
2540
2541         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
2542         (TARGET_SECTION_TYPE_FLAGS): New.
2543
2544 2007-03-12  Richard Henderson  <rth@redhat.com>
2545
2546         * config/darwin.c (machopic_reloc_rw_mask): New.
2547         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
2548         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
2549
2550 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2551
2552         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
2553         * cppdefault.h (cpp_PREFIX): Document.
2554         (cpp_PREFIX_len): Likewise.
2555         (cpp_EXEC_PREFIX): New variable.
2556         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
2557         * c-incpath.c (add_standard_paths): Correct logic for relocating
2558         paths within prefix.
2559
2560 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
2561
2562         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
2563         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
2564         mode macro.
2565         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
2566         fix_truncdfdi_sse using SSEMODEF mode macro.
2567         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
2568         fix_truncdfsi_sse using SSEMODEF mode macro.
2569         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
2570         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
2571
2572 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
2573
2574         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
2575         elfos.h to tm_file.
2576
2577 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
2578
2579         * tree.h : Add multiple_of_p declaration.
2580         * fold-const.c (multiple_of_p): Make multiple_of_p public.
2581         * ipa-type-escape.c (results_of_malloc): Redundant.
2582         (visited_stmts): New. Visited stmt for walk_use_def_chains.
2583         (cast_type): Extended with new members.
2584         (check_cast): Returns cast_type.
2585         (cast): New structure for data of walk_use_def_chains.
2586         (is_malloc_result, is_cast_from_non_pointer_1,
2587         is_cast_from_non_pointer,
2588         is_array_access_through_pointer_and_index): New functions.
2589         (look_for_casts): Returns cast types.
2590         (check_call): Returns void.
2591         (okay_pointer_operation): Use support of pointer plus index,
2592         pointer plus constant and allow all multiplications.
2593
2594 2007-03-11  Richard Guenther  <rguenther@suse.de>
2595
2596         PR tree-optimization/31115
2597         * tree-vrp.c (extract_range_from_binary_expr): Make sure
2598         the shift count is positive and non-anti-range for RSHIFT_EXPR.
2599         A shift count of zero is not special as with *_DIV_EXPR.
2600         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
2601         direction.
2602
2603 2007-03-11  Ian Lance Taylor  <iant@google.com>
2604
2605         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
2606         the *_DIV_EXPR codes correctly with overflow infinities.
2607
2608 2007-03-11  Ira Rosen  <irar@il.ibm.com>
2609
2610         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
2611         indicate success/failure of the analysis. Add negation to subtrahend
2612         in case of subtraction. Fail if both operands contain constants.
2613         (create_data_ref): Fail if analyze_offset fails.
2614
2615 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
2616
2617         * config/i386/i386.md (frndintxf2): Rename to ...
2618         (rintxf2): ... this. Remove expander having same name.
2619         (rintsf2, rintdf2): Implement using SSEMODEF macro.
2620         (roundsf2, rounddf2): Ditto.
2621         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
2622         (lround<mode>di2, lround<mode>si2): Ditto.
2623
2624 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
2625
2626         * lower-subreg.c: Include except.h.
2627         (decompose_multiword_subregs): Verify that the only control flow
2628         insns we can split are loads to multi-words pseudos.
2629         Handle breaking such blocks after splitting, instead of calling
2630         find_many_sub_basic_blocks.
2631
2632         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
2633         on the new basic block.  Add a lengthy comment explaining why we
2634         thought this was necessary.
2635         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
2636
2637 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2638
2639         PR c++/30924
2640         * tree.c (walk_type_fields): Recurse into the element type of
2641         ARRAY_TYPEs if there is a pointer set.
2642
2643 2007-03-10  Dirk Mueller  <dmueller@suse.de>
2644
2645         * c-common.c (warn_logical_operator): Fix condition.
2646
2647 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
2648
2649         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
2650         quotation mark.
2651         * config/darwin.c (machopic_select_section): Remove superfluous
2652         argument in call to categorize_decl_for_section.  Remove unused
2653         variable shlib.
2654
2655 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
2656
2657         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
2658         defined.
2659         * configure: Regenerate.
2660
2661 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
2662
2663         PR target/31101
2664         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
2665         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
2666         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
2667         Add LABEL_NUSES to emitted label.
2668         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
2669         branch probability value to emitted jump insn.
2670         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
2671         Do not check life information and do not re-arrange input operands
2672         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
2673
2674 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2675
2676         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
2677         the change of decode_asm_operands.
2678
2679 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2680
2681         * mode-switching.c (create_pre_exit): Skip blockage insn.
2682
2683 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
2684
2685         * tree-pass.h (TODO_update_smt_usage): Remove.
2686         Update all users.
2687         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
2688         argument SOME.
2689         Update all users.
2690
2691 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2692
2693         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
2694         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
2695         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
2696         SOM target.
2697
2698 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
2699
2700         * gcc.c: Document %{, in big comment at top.
2701         (input_suffix_matches): Remove special handling for .s and
2702         .S.
2703         (input_spec_matches): New.
2704         (handle_braces): Handle %{,.
2705         (validate_switches): ',' indicates a value which is not a switch.
2706         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
2707         to detect assembler input.
2708         * config/i386/sol2.h (CPP_SPEC): Likewise.
2709         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
2710         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
2711         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
2712         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
2713         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
2714         -m64 causes deployment target to default to 10.5.
2715         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2716
2717 2007-03-09  Richard Henderson  <rth@redhat.com>
2718
2719         PR target/26090
2720         * target.h (targetm.asm.out.reloc_rw_mask): New.
2721         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
2722         (TARGET_ASM_OUT): Use it.
2723         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
2724         * varasm.c (categorize_decl_for_section): Remove shlib argument;
2725         use the new reloc_rw_mask target hook instead.
2726         (default_section_type_flags_1): Merge into...
2727         (default_section_type_flags): ... here.
2728         (decl_readonly_section_1): Merge into...
2729         (decl_readonly_section): ... here.
2730         (default_elf_select_section_1): Merge into...
2731         (default_elf_select_section): ... here.
2732         (default_unique_section_1): Merge into...
2733         (default_unique_section): ... here.
2734         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
2735         (default_select_rtx_section): Use it.
2736         (default_elf_select_rtx_section): Likewise.
2737         * output.h: Update to match.
2738         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
2739         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
2740         (TARGET_ASM_RELOC_RW_MASK): New.
2741         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
2742         to categorize_decl_for_section.
2743         (x86_64_elf_unique_section): Likewise.
2744         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
2745         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
2746         (TARGET_ASM_RELOC_RW_MASK): New.
2747         * config/ia64/ia64.c (ia64_rwreloc_select_section,
2748         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
2749         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
2750         (TARGET_RWRELOC): Remove.
2751         (ia64_section_type_flags): Adjust call to default_section_type_flags.
2752         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2753         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
2754         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
2755         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
2756         (rs6000_xcoff_select_section): Use decl_readonly_section.
2757         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
2758         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2759         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
2760         (TARGET_SECTION_TYPE_FLAGS): Remove.
2761         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
2762
2763 2007-03-09  Roger Sayle  <roger@eyesopen.com>
2764
2765         * fold-const.c (fold_comparison): Remove compile-time evaluation of
2766         complex constant equality/inequality comparisons for here.
2767         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
2768         known at compile-time or can be simplified to a scalar comparison.
2769         (fold_relational_const): Move compile-time evaluation of complex
2770         constant equality/inequality comparisons to here.
2771
2772 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2773
2774         PR rtl-optimization/30643
2775         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
2776         dest_addr_elt.
2777         (fold_rtx): Recurse, like before 2006-11-03.
2778
2779 2007-03-09  DJ Delorie  <dj@redhat.com>
2780
2781         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
2782         m32c-pragma.o.
2783
2784 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
2785
2786         PR tree-optimization/30375
2787         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
2788         LHS of statements is not the same.
2789         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
2790
2791 2007-03-09  Chao-ying Fu  <fu@mips.com>
2792
2793         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
2794         REV 2.
2795         * doc/invoke.texi (-mdspr2): Document new option.
2796         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
2797         New unspec for DSP REV 2.
2798         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
2799         these instructions are extended in DSP REV 2.
2800         (mips-dspr2.md): Include.
2801         * config/mips/mips.opt (mdspr2): New option.
2802         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
2803         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
2804         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
2805         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
2806         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
2807         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
2808         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
2809         and 2 builtins.
2810         (bdesc_map): Add one field of unsupported_target_flags.
2811         (bdesc_arrays):  Update entries to have extra fields.  Add
2812         dsp_32only_bdesc.
2813         (mips_init_builtins): Initialize new function types.
2814         Check unsupported_target_fileds to filter out builtins.
2815         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
2816         TARGET_DSPR2.
2817         (ASM_SPEC): Pass mdspr2 to the assembler.
2818         * config/mips/mips-dspr2.md: New file.
2819
2820 2007-03-09  Sa Liu  <saliu@de.ibm.com>
2821
2822         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
2823
2824 2007-03-09  Ian Lance Taylor  <iant@google.com>
2825
2826         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
2827         argument) like -Wstrict-overflow=2.
2828         * doc/invoke.texi (Warning Options): Update documentation.
2829
2830 2007-03-09  Dirk Mueller  <dmueller@suse.de>
2831
2832         PR c++/17946
2833         * doc/invoke.texi (-Wlogical-op): Document.
2834         * common.opt (-Wlogical-op): New.
2835         * c-common.h (warn_logical_operator): Declare.
2836         * c-common.c (warn_logical_operator): Define.
2837         * c-typeck.c (parser_build_binary_op): Call
2838         warn_logical_operator.
2839
2840 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2841
2842         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
2843         * final.c (final_scan_insn): Test for non-"" file name.
2844
2845 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
2846
2847         * doc/loop.texi: Document the Omega linear constraints solver.
2848         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
2849         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
2850         omega-hash-table-size, omega-max-keys, and
2851         omega-eliminate-redundant-constraints.
2852         * tree-pass.h (pass_check_data_deps): Declared.
2853         * omega.c: New.
2854         * omega.h: New.
2855         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
2856         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
2857         pass_check_data_deps): New.
2858         * tree-data-ref.c (init_data_ref): Remove declaration.
2859         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
2860         (analyze_array): Renamed init_array_ref, move up initializations.
2861         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
2862         Removed arguments that are set to NULL.
2863         (analyze_indirect_ref): Correct indentation, correct call to
2864         init_pointer_ref.
2865         (object_analysis): Call init_array_ref instead of analyze_array.
2866         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
2867         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
2868         of DR_ACCESS_FNS_ADDR.
2869         (init_omega_eq_with_af, omega_extract_distance_vectors,
2870         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
2871         ddr_consistent_p): New.
2872         (compute_affine_dependence): Check consistency of ddrs when
2873         flag_check_data_deps is passed.
2874         (analyze_all_data_dependences): Uncomment.
2875         (tree_check_data_deps): New.
2876         * tree-data-ref.h: Include omega.h.
2877         (DR_ACCESS_FNS_ADDR): Removed.
2878         (data_dependence_relation): Add inner_loop.
2879         (DDR_INNER_LOOP): New.
2880         * common.opt (fcheck-data-deps): New.
2881         * tree-flow.h (tree_check_data_deps): Declare.
2882         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
2883         (OBJS-common): Depend on omega.o.
2884         (omega.o): Define.
2885         * passes.c (pass_check_data_deps): Scheduled.
2886         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
2887         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
2888         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
2889         PARAM_VECT_MAX_VERSION_CHECKS,
2890         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
2891
2892 2007-03-09  Richard Guenther  <rguenther@suse.de>
2893
2894         PR tree-optimization/30904
2895         PR middle-end/31058
2896         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
2897         the same way as *_DIV_EXPR.
2898
2899 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2900
2901         * recog.c (decode_asm_operands): No mixed declarations and code.
2902
2903 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2904
2905         * rtl.def (ASM_INPUT): Add location.
2906         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
2907         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
2908         (decode_asm_operands): Add loc operand.
2909         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
2910         * stmt.c (expand_asm): Rename to...
2911         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
2912         gen_rtx_ASM_INPUT_loc.
2913         (expand_asm_expr): Adjust.
2914         * recog.c (decode_asm_operands): Add loc operand.
2915         (check_asm_operands, extract_insn): Adjust.
2916         * reload1.c (maybe_fix_stack_asms): Likewise.
2917         * final.c (asm_insn_count): Likewise.
2918         (final_scan_insn): Output # line before and after asm.
2919
2920 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
2921
2922         * tree-ssa-structalias.c (variable_info): Remove
2923         finished_solution.
2924         (new_var_info): Ditto.
2925         (shared_bitmap_info_t): New structure.
2926         (shared_bitmap_table): New variable.
2927         (shared_bitmap_hash): New function.
2928         (shared_bitmap_eq): Ditto
2929         (shared_bitmap_lookup): Ditto.
2930         (shared_bitmap_add): Ditto.
2931         (merge_smts_into): Change to take bitmap directly.
2932         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
2933         (init_alias_vars): Init shared bitmap hashtable.
2934         (delete_points_to_sets): Delete shared bitmap hashtable.
2935         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
2936         is_aliased removal as a change that was still necessary was
2937         deleted.
2938
2939 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
2940
2941         * config/i386/i386.h (override_options): Conditionally disable
2942         x86_sahf for 64bit targets only.
2943
2944 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2945
2946         PR C/31072
2947         * c-decl.c (merge_decls): Don't call make_var_volatile.
2948         * varasm.c (make_var_volatile): Remove.
2949         * output.h (make_var_volatile): Remove.
2950
2951 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
2952
2953         PR tree-optimization/31085
2954         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
2955
2956 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2957
2958         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
2959         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
2960         ATTR_CONST_NOTHROW_LIST.
2961
2962         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2963         FIX_TRUNC_EXPR.
2964
2965 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
2966
2967         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
2968
2969 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
2970
2971         PR 31013
2972         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
2973         is declared.
2974         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
2975         passed, use shared libgcc.
2976
2977 2007-03-08  Roger Sayle  <roger@eyesopen.com>
2978
2979         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
2980         instead of calling build2 with a GIMPLE_MODIFY_STMT.
2981         (honor_protect_cleanup_actions, lower_try_finally_switch):
2982         Likewise.
2983         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
2984         ifc_temp_var): Likewise.
2985         * tree-inline.c (setup_one_parameter): Likewise.
2986         * tree-mudflap.c (mf_decl_cache_locals,
2987         mf_build_check_statement_for): Likewise.
2988         * tree-nested.c (init_tmp_var, save_tmp_var,
2989         finalize_nesting_tree_1): Likewise.
2990         * tree-outof-ssa.c (insert_copy_on_edge,
2991         insert_backedge_copies): Likewise.
2992         * tree-profile.c (tree_gen_edge_profiler,
2993         tree_gen_ic_profiler): Likewise.
2994         * tree-scalar-evolution.c (scev_const_prop): Likewise.
2995         * tree-sra.c (sra_build_assignment): Likewise.
2996         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
2997         * tree-ssa-math-opts.c (insert_reciprocals,
2998         execute_cse_sincos_1): Likewise.
2999         * tree-tailcall.c (adjust_accumulator_values,
3000         adjust_return_value): Likewise.
3001         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3002         * tree-vect-transform.c (vect_create_data_ref_ptr,
3003         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3004         vect_create_epilog_for_reduction, vectorizable_reduction,
3005         vectorizable_call, vectorizable_conversion,
3006         vectorizable_assignment, vectorizable_operation,
3007         vectorizable_type_demotion, vect_gen_widened_results_half,
3008         vect_permute_store_chain, vectorizable_store,
3009         vect_setup_realignment, vect_permute_load_chain,
3010         vectorizable_load, vectorizable_condition,
3011         vect_create_cond_for_align_checks): Likewise.
3012         * tree-vrp.c (build_assert_expr_for): Likewise.
3013
3014 2007-03-08  Ian Lance Taylor  <iant@google.com>
3015
3016         * tree-vrp.c: Include "intl.h".
3017         (usable_range_p): New static function.
3018         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3019         overflowed values, juts set *strict_overflow_p.
3020         (compare_values): Only return -2 if one of the operands is not a
3021         constant.
3022         (compare_ranges): Call usable_range_p.
3023         (compare_range_with_value): Likewise.
3024         (vrp_evaluate_conditional_warnv): Rename from
3025         vrp_evaluate_conditional.  Make static.  Change all callers.
3026         (vrp_evaluate_conditional): New function.
3027         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3028         on signed overflow.
3029         (simplify_abs_using_ranges): Likewise.
3030         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3031         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3032         within_stmt parameter.
3033         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3034         vrp_evaluate_conditional.
3035         * tree-ssa-threadedge.c
3036         (record_temporary_equivalences_from_stmts_at_dest): Change
3037         simplify parameter to take a second tree parameter.
3038         (simplify_control_stmt_condition): Likewise.
3039         (thread_across_edge): Likewise.
3040         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3041         (thread_across_edge): Likewise.
3042         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
3043
3044 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3045
3046         * config/i386/i386.h (TARGET_SAHF): New define.
3047         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3048         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3049         (x86_sahf): New global variable.
3050         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3051         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3052         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3053         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3054         for 64-bit.
3055         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3056         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3057         when expanding fcomi/sahf based tests.
3058         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3059         expanding sahf based alternative. Emit sahf based sequence when
3060         optimizing for code size.
3061         * config/i386/i386.md (x86_sahf_1): Do not disable for
3062         TARGET_64BIT, enable for TARGET_SAHF.
3063
3064 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3065
3066         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3067         spurious whitespace from error message.
3068
3069 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3070
3071         PR c++/30852
3072         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3073
3074 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3075
3076         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3077         bitfields.
3078         * tree-sra.c (instantiate_element): Propagate disabled warnings
3079         from the element itself to the created variable.
3080
3081 2007-03-07  Richard Henderson  <rth@redhat.com>
3082
3083         PR target/30848
3084         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3085         silently fix up the stack in the case of a missing register.
3086
3087 2007-03-07  Paul Brook  <paul@codesourcery.com>
3088
3089         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3090
3091 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3092
3093         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3094         New.
3095         (phase1_vrs): Use them.
3096         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3097         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3098         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3099         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3100         __gnu_Unwind_Restore_WMMXC if required.
3101         (_Unwind_VRS_Pop): Implement iWMMXt support.
3102         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3103         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3104         gnu_Unwind_Save_WMMXC): Define.
3105
3106 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3107
3108         * config/vxworks.h (vxworks_override_options): Declare.
3109         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3110         * config/vxworks.c: Include target.h and toplev.h.
3111         (vxworks_override_options): New function.
3112         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3113
3114 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3115
3116         * config/s390/s390.c (override_options): Don't emit an error when
3117         -mstack-size is used without providing -mstack-guard.
3118         (s390_emit_prologue): Choose stack_guard value automatically if not
3119         provided via command line.
3120         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3121
3122 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3123
3124         * config/i386/i386.c (output_set_got): Add a GOT initialization
3125         sequence for VxWorks PIC.
3126         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3127         around labels as well as symbols.  Use gotoff_operand instead
3128         of local_symbolic_operand.
3129         (legitimize_pic_address): Use gotoff_operand instead of
3130         local_symbolic_operand.  Use @GOT accesses for labels as
3131         well as symbols.
3132         (ix86_output_addr_diff_elt): Use PC-relative rather than
3133         GP-relative offsets for VxWorks PIC.
3134         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3135         no_new_pseudos.  Check whether the returned register is op0.
3136         * config/i386/i386.md (tablejump): Use PC-relative rather than
3137         GP-relative offsets for VxWorks PIC.
3138         * config/i386/predicates.md (gotoff_operand): New predicate.
3139
3140 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3141
3142         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3143         before defining.
3144         * config/vxworks-dummy.h: New file.
3145         * config/i386/i386.h: Include it.
3146
3147 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3148
3149         * dwarf2out.c (is_inlined_entry_point): New
3150         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3151         DW_AT_ranges if the first subblock is the entry point.
3152
3153 2007-03-06  David Daney  <ddaney@avtrex.com>
3154
3155         * doc/install.texi (mips-*-*): Change recommended binutils
3156         version.
3157
3158 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3159
3160         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3161         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3162         devices.
3163         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3164         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3165
3166 2007-03-06  Jan Hubicka  <jh@suse.cz>
3167
3168         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3169         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3170         are hot.
3171         (probably_cold_bb_p): Cold functions are cold.
3172         (probably_never_executed_bb_p): Cold functions are cold.
3173         (tree_bb_level_predictions): Predict calls to cold functions as not
3174         taken.
3175         (compute_function_frequency): Check hot/cold attributes.
3176         * function.h (function_frequency): Update comments.
3177         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3178         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3179         (c_common_att): Add cold and hot.
3180
3181         * doc/extend.texi (hot,cold attributes): Document.
3182
3183 2007-03-06  Andrew Haley  <aph@redhat.com>
3184
3185         * function.c (expand_function_end): Move blockage to just after we
3186         emit the label for the naked return from the function.
3187
3188 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3189
3190         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3191         before redefining.
3192
3193 2007-03-06  Jan Hubicka  <jh@suse.cz>
3194
3195         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3196         loaded for constant large models.  Non-large 64bit PIC can do.
3197         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3198         * cmodel.h: Add LARGE PIC.
3199         * i386.md (UNSPEC_PLTOFF): New.
3200         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3201         needed.
3202         (*call_1_rex64): Disable for large models.
3203         (*call_1_rex64_large): New.
3204         (*call_value_1_rex64): Disable for large models.
3205         (*call_value_1_rex64_large): New.
3206         (set_rip_rex4): New.
3207         (set_got_offset_rex64): New.
3208         * predicates.md (constant_call_address_operand): For large model
3209         constant calls are not possible.
3210         * i386-protos.h (construct_plt_address): Declare.
3211         * i386.c (override_options): Accept large models.
3212         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3213         (legitimate_constant_p): Add new UNSPECs.
3214         (legitimate_pic_operand_p): Likewise.
3215         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3216         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3217         non-large model.
3218         (output_pic_addr_const): Add PLTOFF.
3219         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3220         (ix86_expand_move): Legitimize pic address when in PIC mode.
3221         (construct_plt_address): New function.
3222         (ix86_expand_call): Offload the address to register and use GOT pointer
3223         for large model.
3224         * invoke.texi (mcmodel=large): Update documentation.
3225
3226 2007-03-06  Richard Henderson  <rth@redhat.com>
3227
3228         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3229         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3230         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3231         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3232         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3233         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3234         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3235         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3236         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3237         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3238         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3239         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3240         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3241         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3242         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3243         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3244         x86_schedule, x86_use_bt, x86_pad_returns,
3245         x86_use_xchgb): Merge into ...
3246         (ix86_tune_features): ... here.  New array.
3247         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3248         x86_bswap): Merge into ...
3249         (ix86_arch_features): ... here.  New array.
3250         (x86_3dnow_a): Remove.
3251         (x86_accumulate_outgoing_args): Make static.
3252         (x86_arch_always_fancy_math_387): Make static.
3253         (ix86_tune_mask, ix86_arch_mask): Move ...
3254         (override_options): ... to local variables here.  Apply the
3255         appropriate mask to each element of ix86_arch_features and
3256         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3257         as were done in the old macros.
3258         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3259         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3260         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3261         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3262         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3263         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3264         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3265         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3266         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3267         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3268         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3269         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3270         x86_accumulate_outgoing_args, x86_prologue_using_move,
3271         x86_epilogue_using_move, x86_decompose_lea,
3272         x86_arch_always_fancy_math_387, x86_shift1,
3273         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3274         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3275         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3276         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3277         x86_use_incdec, x86_pad_returns, x86_bswap,
3278         x86_partial_flag_reg_stall): Remove.
3279         (enum ix86_tune_indices): New.
3280         (ix86_tune_features): New.
3281         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3282         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3283         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3284         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3285         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3286         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3287         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3288         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3289         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3290         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3291         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3292         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3293         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3294         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3295         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3296         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3297         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3298         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3299         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3300         TARGET_EXT_80387_CONSTANTS): Use it.
3301         (enum ix86_arch_indices): New.
3302         (ix86_arch_features): New.
3303         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3304         TARGET_BSWAP): Use it.
3305         (ix86_tune_mask, ix86_arch_mask): Remove.
3306
3307 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3308
3309         PR bootstrap/31020
3310         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3311         Define using $${sysroot_headers_suffix}.
3312         * configure: Regenerate.
3313         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3314         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3315         defined.
3316         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3317         * gcc.c (print_sysroot_headers_suffix): New.
3318         (option_map): Include --print-sysroot-headers-suffix.
3319         (display_help): Mention -print-sysroot-headers-suffix.
3320         (process_command): Handle -print-sysroot-headers-suffix.
3321         (do_spec_1): Append multilib directory to include-fixed path if
3322         sysroot suffixes in use.
3323         (main): Handle -print-sysroot-headers-suffix.
3324         * Makefile.in (start.encap): Don't depend on xlimits.h
3325         (xlimits.h): Remove.
3326         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3327         limits.h for each multilib in fixinc_list.
3328         (fixinc_list, s-fixinc_list): New.
3329         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3330         generate them for each multilib in fixinc_list.
3331         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3332         multilib in fixinc_list.
3333         (mostlyclean): Don't remove xlimits.h.
3334         (clean): Remove include-fixed.
3335         (real-install-headers-tar, real-install-headers-cpio,
3336         real-install-headers-cp): Don't copy include, only include-fixed.
3337         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3338         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3339         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3340         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3341
3342 2007-03-06  Jan Hubicka  <jh@suse.cz>
3343
3344         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3345         NANs easilly.
3346
3347 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3348
3349         * configure.ac: Allow tm_file to contain build-directory files.
3350         * configure: Regenerate.
3351         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3352         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3353         * config/m68k/print-sysroot-suffix.sh: New file.
3354
3355 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3356
3357         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3358         of pic_offset_table_rtx if reload_completed.
3359         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3360         PIC_OFFSET_TABLE_REGNUM.
3361         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3362         return true.
3363         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3364         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3365
3366 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3367
3368         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3369         functions that call eh_return.
3370
3371 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3372
3373         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3374         functions that need a constant pool.
3375
3376 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3377
3378         PR target/28181
3379         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3380         (m68k_preferred_reload_class): Likewise.
3381         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3382         (SECONDARY_RELOAD_CLASS): Define.
3383         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3384         (LIMIT_RELOAD_CLASS): Delete.
3385         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3386         registers from storing bytes.
3387         (m68k_secondary_reload_class): New function.
3388         (m68k_preferred_reload_class): Likewise.
3389
3390 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3391
3392         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
3393         leaf functions.
3394         (m68k_expand_prologue): Likewise.
3395
3396 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3397
3398         * config/m68k/m68k-protos.h (output_sibcall): Declare.
3399         (mips_expand_epilogue): Add a bool parameter.
3400         (m68k_legitimize_sibcall_address): Declare.
3401         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
3402         (m68k_expand_epilogue): Add a parameter to select between sibling
3403         and normal epilogues.  Only generate a return for the latter.
3404         (m68k_ok_for_sibcall_p): New function.
3405         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
3406         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
3407         (sibcall_value, *sibcall_value): Likewise.
3408         (*call, *call_value): Require !SIBLING_CALL_P.
3409         (epilogue): Update call to m68k_expand_epilogue.
3410         (sibcall_epilogue): New pattern.
3411         * config/m68k/predicates.md (const_call_operand): Say that this
3412         predicate applies to sibling calls too.
3413         (sibcall_operand): New predicate.
3414
3415 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3416
3417         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
3418         alternatives as movsi_cf.
3419         (movsf_cf_hard): Add commentary.
3420
3421 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
3422             Richard Sandiford  <richard@codesourcery.com>
3423
3424         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
3425         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
3426         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
3427         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
3428         as being live on exit from an interrupt function.
3429         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
3430         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
3431         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
3432         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
3433         (m68k_interrupt_function_p): Globalize.
3434         (m68k_compute_frame_layout): Remove reverse mask code.
3435         (m68k_emit_movem, m68k_set_frame_related): New functions.
3436         (m68k_output_function_prologue): Delete in favor of...
3437         (m68k_expand_prologue): ...this new function.
3438         (m68k_output_function_epilogue): Delete in favor of...
3439         (m68k_expand_epilogue): ...this new function.
3440         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
3441         functions.
3442         (print_operand): Handle %?.
3443         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
3444         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
3445         (prologue, epilogue): New patterns.
3446         (return): Turn into a define_expand.
3447         (*return): New pattern, derived from old "return" pattern.  Use rte
3448         rather than rts for interrupt functions.  Only use rtd if the pop
3449         count is nonzero.
3450         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
3451         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
3452         (link, *link, unlink, *unlink, load_got): Likewise.
3453
3454 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3455
3456         PR target/23482
3457         PR target/17114
3458         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
3459         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
3460         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
3461         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
3462         and m68k_matches_u_p.
3463         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
3464         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
3465         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
3466         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
3467         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
3468         (REG_STRICT_P): New macro.
3469         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
3470         PCREL_GENERAL_OPERAND_OK.
3471         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
3472         m68k_legitimate_base_reg_p.
3473         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
3474         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
3475         (PIC_CASE_VECTOR_ADDRESS): Update comment.
3476         * config/m68k/m68k.c (m68k_address): New structure.
3477         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
3478         (m68k_decompose_index, m68k_legitimate_constant_address_p)
3479         (m68k_jump_table_ref_p, m68k_decompose_address)
3480         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
3481         (m68k_matches_u_p): New functions.
3482         (print_operand_address): Rewrite to use m68k_decompose_index.
3483
3484 2007-03-05  David Taylor  <dtaylor@emc.com>
3485
3486         * gcc.c: Correct copyright date in --version output.
3487
3488 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3489
3490         * pa.md: In unamed move patterns, disparge copies between general
3491         and floating point registers using '?' modifier.  Don't include 'f'
3492         constraint for register preferences in DImode, SImode, HImode and
3493         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
3494         Remove constraints for copies between general and floating registers
3495         in soft-float DFmode pattern.
3496         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
3497         floating register.
3498         (movsf): Likewise.
3499
3500 2007-03-05  Mike Stump  <mrs@apple.com>
3501
3502         * c-common.c (targetcm): Add.
3503         * c-opts.c (c_common_handle_option): Handle language specific
3504         target options.
3505         * opts.c (handle_option): Verify language for target options, if
3506         any are given.
3507         * opth-gen.awk: Add CL_LANG_ALL.
3508         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
3509         (TARGETCM_INITIALIZER): Add.
3510         * target.h (struct gcc_targetcm): Add.
3511         (targetcm): Add.
3512         * targhooks.c (default_handle_c_option): Add.
3513         * targhooks.h (default_handle_c_option): Add.
3514         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
3515
3516         * config/darwin.opt (iframework): Add.
3517         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
3518         * config/darwin-c.c (handle_c_option): Add.
3519         (TARGET_HANDLE_C_OPTION): Add.
3520         (targetcm): Add.
3521         * doc/invoke.texi (Darwin Options): Add -iframework.
3522
3523 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3524
3525         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
3526         conversion.
3527
3528 2007-03-05  Ian Lance Taylor  <iant@google.com>
3529
3530         * c.opt (fgnu89-inline): New option.
3531         * c-opts.c (c_common_post_options): Set default value for
3532         flag_gnu89_inline.
3533         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
3534         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
3535         inline functions.
3536         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
3537         (grokdeclarator, start_function): Likewise.
3538         * c-cppbuiltin.c (c_cpp_builtins): Define either
3539         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
3540         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
3541         (C Dialect Options): Document -fgnu89-inline.
3542         * doc/extend.texi (Function Attributes): Explain what the
3543         gnu_inline attribute does.
3544         * doc/cpp.texi (Common Predefined Macros): Document
3545         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
3546
3547 2007-03-05  Ian Lance Taylor  <iant@google.com>
3548
3549         PR tree-optimization/31034
3550         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
3551         half-range if the other side is an overflow infinity.
3552
3553 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
3554
3555         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
3556         (bfin*-linux-uclibc*): New configuration.
3557         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
3558         defining.
3559         * config/bfin/linux.h: New file.
3560         * config/bfin/libgcc-bfin.ver: New file.
3561         * config/bfin/t-bfin-uclinux: New file.
3562         * config/bfin/t-bfin-linux: New file.
3563         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
3564         (TARGET_OS_CPP_BUILTINS): New macro.
3565
3566 2007-03-05  Richard Guenther  <rguenther@suse.de>
3567
3568         * fold-const.c (fold_binary): Remove duplicate folding
3569         of comparison of non-null ADDR_EXPR against null.
3570
3571 2007-03-05  Richard Guenther  <rguenther@suse.de>
3572             Dorit Nuzman  <dorit@il.ibm.com>
3573
3574         PR tree-optimization/26420
3575         * tree-vectorizer.c (vectorize_loops): Bail out early if there
3576         are no loops in the function.  Only print the number of
3577         vectorized loops if it is greater than zero or we are supposed
3578         to print information about unvectorized loops.
3579
3580 2007-03-05  Revital Eres  <eres@il.ibm.com>
3581
3582         * gcc.dg/var-expand1.c: New test.
3583         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
3584         when an accumulator is expanded.
3585
3586 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3587
3588         PR other/30465
3589         * c-common.c (convert_and_check): Don't give warnings for
3590         conversion if 'expr' already overflowed.
3591
3592 2007-03-04  Roger Sayle  <roger@eyesopen.com>
3593
3594         PR middle-end/30744
3595         * fold-const.c (fold_comparison): Enforce type consistency when
3596         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
3597
3598 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
3599
3600         * tree-ssa-address.c (create_mem_ref): Do not put an expression
3601         containing a cast to the base of TARGET_MEM_REF.
3602
3603 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
3604
3605         * tree.c (tree_contains_struct_check_failed): Remove spurious
3606         whitespace from error message.
3607
3608 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
3609
3610         PR target/30406
3611         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
3612         instead of precision.
3613
3614 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
3615             Nathan Sidwell  <nathan@codesourcery.com>
3616
3617         * emit-rtl.c (find_auto_inc): New.
3618         (try_split): recreate REG_INC notes,
3619         Use regular for loops rather than whiles.
3620
3621 2007-03-03  Andreas Schwab  <schwab@suse.de>
3622
3623         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
3624         * configure: Regenerate.
3625
3626 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3627
3628         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
3629         flag_rounding_math, not flag_unsafe_math_optimizations.
3630
3631         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
3632         fold_build2.
3633         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
3634         alpha_fold_vector_minmax): Likewise.
3635         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
3636         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
3637
3638 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3639
3640         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
3641         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
3642         if the lhs has side-effects.
3643         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
3644
3645 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3646
3647         * config/i386/i386.h (TUNEMASK): Remove define.
3648         (ARCHMASK): Remove define.
3649         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
3650          Use ix86_arch_mask variable instead of ARCHMASK.
3651         * config/i386/i386.c (override_options): Ditto.
3652         (standard_80387_constant_p): Ditto.
3653
3654 2007-03-02  Ian Lance Taylor  <iant@google.com>
3655
3656         Used signed infinities in VRP.
3657         * tree-vrp.c (uses_overflow_infinity): New static function.
3658         (supports_overflow_infinity): New static function.
3659         (make_overflow_infinity): New static function.
3660         (negative_overflow_infinity): New static function.
3661         (positive_overflow_infinity): New static function.
3662         (is_negative_overflow_infinity): New static function.
3663         (is_positive_overflow_infinity): New static function.
3664         (is_overflow_infinity): New static function.
3665         (overflow_infinity_range_p): New static function.
3666         (compare_values_warnv): New function split out of compare_values.
3667         (compare_value): Call it.
3668         (set_value_range_to_nonnegative): Add overflow_infinity
3669         parameter.  Change caller.
3670         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
3671         Change callers.
3672         (vrp_expr_computes_nonzero): Likewise.
3673         (compare_ranges, compare_range_with_value): Likewise.
3674         (compare_name_with_value, compare_names): Likewise.
3675         (vrp_evaluate_conditional): Likewise.
3676         (set_value_range): Handle infinity
3677         (vrp_operand_equal_p, operand_less_p): Likewise.
3678         (extract_range_from_assert): Likewise.
3679         (vrp_int_const_binop): Likewise.
3680         (extract_range_from_binary_expr): Likewise.
3681         (extract_range_from_unary_expr): Likewise.
3682         (extract_range_from_comparison): Likewise.
3683         (extract_range_from_expr): Likewise.
3684         (dump_value_range): Likewise.
3685         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
3686         (test_for_singularity): Likewise.
3687         (vrp_int_const_binop): Remove inline qualifier.
3688         (adjust_range_with_scev): Add comment.
3689         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3690
3691 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
3692
3693         * tree-ssa-structalias.c (could_have_pointers): Tidy.
3694         (get_constraint_for): Likewise.
3695         (do_structure_copy): Likewise.
3696         (find_func_aliases): Fix references to MODIFY_EXPR.
3697         (intra_create_variable_infos): Tidy.
3698         * tree-ssa-operands.c (add_virtual_operand): Add argument
3699         IS_CALL_SITE.
3700         When adding members of alias sets, if IS_CALL_SITE is true and
3701         the symbol is not call-clobbered, skip it.
3702         Adjust all callers.
3703
3704 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
3705
3706         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
3707         entry by means of emit_insn_at_entry.
3708
3709 2007-03-02  Richard Henderson  <rth@redhat.com>
3710
3711         * expr.h (promoted_input_arg): Remove decl.
3712         * function.c (promoted_input_arg): Merge into ...
3713         * combine.c (setup_incoming_promotions): ... only caller.
3714         Rearrange to avoid double loop.
3715
3716 2007-03-02  Ben Elliston  <bje@au.ibm.com>
3717             Peter Bergner  <bergner@vnet.ibm.com>
3718             Janis Johnson  <janis187@us.ibm.com>
3719
3720         * config/rs6000/dfp.md: New file.
3721         * config/rs6000/rs6000.md: Include dfp.md.
3722         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
3723         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
3724         and TDmode decimal float modes in FP registers.
3725         (num_insns_constant): Likewise.
3726         (rs6000_legitimate_offset_address_p): Likewise.
3727         (rs6000_legitimize_address): Likewise.
3728         (rs6000_legitimize_reload_address): Likewise.
3729         (rs6000_legitimate_address): Likewise.
3730         (rs6000_emit_move): Likewise.
3731         (function_arg_boundary): Likewise.
3732         (function_arg_advance): Likewise.
3733         (rs6000_darwin64_record_arg_recurse): Likewise.
3734         (function_arg): Likewise.
3735         (rs6000_gimplify_va_arg): Likewise.
3736         (rs6000_split_multireg_move): Likewise.
3737         (rs6000_output_function_epilogue): Likewise.
3738         (rs6000_output_function_epilogue): Likewise.
3739         (rs6000_register_move_cost): Likewise.
3740         (rs6000_function_value): Likewise.
3741         (rs6000_libcall_value): Likewise.
3742
3743 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
3744
3745         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
3746
3747 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
3748
3749         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
3750         Use $MULTIDIR to choose between the kernel and RTP headers,
3751         and use $WIND_BASE and $WIND_USR to locate them.
3752
3753 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3754
3755         * config/i386/i386.c (override_options): Put initialization of
3756         ix86_tune_mask and ix86_arch_mask to the correct place.
3757
3758 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
3759             Michael Meissner  <michael.meissner@amd.com>
3760
3761         PR target/31019
3762         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
3763         (ARCHMASK): Define.
3764         (TARGET_CMOVE): Use ARCHMASK.
3765         (TARGET_CMPXCHG): Ditto.
3766         (TARGET_CMPXCHG8B): Ditto.
3767         (TARGET_XADD): Ditto.
3768         (TARGET_BSWAP): Ditto.
3769         * config/i386/i386.c (ix86_tune_mask): New global variable.
3770         (ix86_arch_mask): Ditto.
3771         (override_options): Initialize ix86_tune_mask and
3772         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
3773         target_flags.
3774
3775 2007-03-02  Ben Elliston  <bje@au.ibm.com>
3776
3777         PR 30992
3778         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
3779
3780 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
3781
3782         * target.h (init_dwarf_reg_sizes_extra): New target hook.
3783         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
3784         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
3785         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
3786         hook.
3787         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
3788         rs6000_init_dwarf_reg_sizes_extra): New.
3789         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
3790         SPE register high parts.
3791
3792 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
3793
3794         * Makefile.in: Add install-pdf target as
3795         copied from automake v1.10 rules.
3796         * configure.ac: Add install-pdf to target list.
3797         * configure: Regenerate.
3798
3799 2007-03-01  Paul Brook  <paul@codesourcery.com>
3800
3801         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
3802         modes to LDRD for DImode.
3803         (output_move_double): Fixup out of range ldrd/strd.
3804         (vfp_secondary_reload_class): Rename...
3805         (coproc_secondary_reload_class): ... to this.  Add wb argument.
3806         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
3807         coproc_secondary_reload_class for CLASS_IWMMXT.
3808         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
3809         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
3810
3811 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
3812
3813         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
3814         factor by the estimated number of iterations.
3815         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
3816         prefetch latency.
3817
3818         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
3819         decode_caches_intel, detect_caches_intel): New functions.
3820         (host_detect_local_cpu): Use detect_caches_amd and
3821         detect_caches_intel.
3822
3823 2007-03-01  Richard Henderson  <rth@redhat.com>
3824
3825         * expr.c (emit_move_complex_push): Export.
3826         (emit_move_complex_parts): Split out from ...
3827         (emit_move_complex): ... here.
3828         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
3829         * config/i386/i386.md (movcdi): New.
3830
3831 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
3832
3833         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
3834         size of mode1 to check for tieable modes in MMX case.
3835
3836 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
3837
3838         * Makefile.in (rtlanal.o): Depend on tree.h.
3839         * rtl.h (offset_within_section_p, split_const): Declare.
3840         * rtlanal.c: Include tree.h.
3841         (offset_within_block_p): New function, taken from
3842         mips_offset_within_object_p.
3843         (split_const): New function, taken from mips_split_const.
3844         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
3845         Declare.
3846         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
3847         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
3848         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
3849         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
3850         (m68k_illegitimate_symbolic_constant_p): New function.
3851         * config/m68k/m68k.md (movsi): Remove misleading predicates.
3852         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
3853         symbolic constant that might be outside the symbol's section,
3854         move the symbol first and then add the offset.
3855         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
3856         Override.
3857         * config/mips/mips.c (mips_split_const): Delete.
3858         (mips_offset_within_object_p): Delete.
3859         (mips_symbolic_constant_p): Use offset_within_section_p and
3860         split_const instead of mips_offset_within_object_p and
3861         mips_split_const.
3862         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
3863         (mips_legitimize_const_move, print_operand_reloc)
3864         (mips_dangerous_for_la25_p): Use split_const instead of
3865         mips_split_const.
3866
3867 2007-02-28  Eric Christopher  <echristo@apple.com>
3868
3869         * Makefile.in (install-include-dir): Don't rm -rf include.
3870
3871 2007-02-28  Richard Guenther  <rguenther@suse.de>
3872
3873         PR middle-end/30364
3874         * fold-const.c (fold_binary): Do not associate expressions
3875         with more than one variable for integer types that do not wrap.
3876
3877 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
3878
3879         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
3880         Delete, and replace with...
3881         (fold_builtin_call_array): This.  Update callers to use it.
3882         * fold-const.c (fold_build_call_list): Delete, and replace with...
3883         (fold_build_call_array): This.
3884         (fold_build_call_list_initializer): Delete, and replace with...
3885         (fold_build_call_array_initializer): This.
3886         * tree.h: Update declarations to reflect above changes.
3887
3888         * c-typeck.c (build_function_call): Store converted arguments
3889         in a stack-allocated array instead of building a list.
3890         (convert_arguments): Store arguments in the array passed in as an
3891         argument, and return the actual number of arguments.
3892         * c-format.c: (check_function_format): Pass arguments in an
3893         array instead of a list.
3894         * c-common.c (check_function_nonnull): Likewise.
3895         (check_function_sentinel): Likewise.
3896         (check_function_arguments): Likewise.
3897         * c-common.h: Update declarations to reflect above changes.
3898
3899 2007-02-28  Jan Hubicka  <jh@suse.cz>
3900
3901         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
3902         PRED_NEGATIVE_RETURN): Update outcomes.
3903
3904 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
3905
3906         * calls.c (emit_library_call_value_1): Handle partial registers
3907         correctly when building up CALL_INSN_FUNCTION_USAGE.
3908
3909 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3910
3911         * pa/predicates.md (move_src_operand): Allow zero for mode.
3912         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
3913         move pattern.
3914
3915 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
3916
3917         PR target/30970
3918         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
3919         *movv2df_internal): Enable pattern only for valid operand
3920         combinations.
3921         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
3922         tie only 128bit modes. For MMX registers, tie only 64bit modes.
3923
3924 2007-02-27  Mike Stump  <mrs@apple.com>
3925
3926         * config/darwin-crt3.c: Avoid compilation when compiling for a
3927         kext multilib.
3928
3929 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
3930
3931         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
3932         FIXED_INCLUDE_DIR.
3933         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
3934         for fixed headers and limits.h.
3935         (install-include-dir, install-headers-tar, install-headers-cpio,
3936         install-headers-cp, real-install-headers-tar,
3937         real-install-headers-cpio, real-install-headers-cp): Handle
3938         include-fixed as well as include.
3939         (install-mkheaders): Don't install files that go only in include
3940         not include-fixed.
3941         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
3942         from GCC_INCLUDE_DIR.
3943         * gcc.c (process_command): Remove special -BstageN/ handling.
3944         (do_spec_1): Add include-fixed directories.
3945
3946 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3947
3948         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
3949         _smulsi3_highpart.
3950         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
3951         New functions.
3952         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
3953         patterns.
3954
3955 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
3956
3957         * c-common.c (get_priority): Add check for
3958         SUPPORTS_INIT_PRIORITY.
3959
3960 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
3961
3962         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
3963
3964         * config/bfin/bfin.c: Include "cfglayout.h".
3965         (MAX_LSETUP_DISTANCE): New macro.
3966         (struct loop_info): New members incoming, incoming_src and
3967         incoming_dest.  Delete member predecessor.
3968         (length_for_loop): New function.
3969         (bfin_optimize_loop): Handle more different loop structures.
3970         (bfin_discover_loop): Rework detection of predecessor blocks by
3971         examining incoming edges.
3972         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
3973         bfin_reorg_loops.
3974         (bfin_reorder_loops): New function.
3975         (bfin_reorg_loops): Use these three new functions.
3976
3977         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
3978         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
3979         (CONSTRAINT_LEN): Add entry for 'q'.
3980         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
3981         Add 'q' constraints.
3982         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
3983         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
3984
3985         * config/bfin/bfin.md (add_with_carry): New pattern.
3986         (s_or_u, su_optab, su_modifier): New code macros/attrs.
3987         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
3988         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
3989         support unsigned multiplies too.  Removed incorrect commutativity from
3990         operand 1 constraint where appropriate.
3991         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
3992         patterns.
3993         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
3994         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
3995         New patterns.
3996         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
3997         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
3998         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
3999         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
4000         usmulhisi_hh_huh): New patterns.
4001
4002         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
4003         lshifthi3): Fix output template to use half reg for operand 2.
4004
4005         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
4006         instead of R2.
4007
4008         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
4009
4010 2007-02-27  Andreas Schwab  <schwab@suse.de>
4011
4012         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
4013
4014 2007-02-27  Jan Hubicka  <jh@suse.cz>
4015
4016         * predict.c (last_basic_block_p): Remove.
4017         (tree_estimate_probability): Update return heuristic for commonized
4018         return blocks.
4019
4020 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4021
4022         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
4023
4024 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
4025
4026         * doc/include/gcc-common.texi (versionsubtitle): New macro.
4027         * doc/cpp.texi: Standardize title page.
4028         * doc/cppinternals.texi: Likewise.
4029         * doc/gcc.texi: Standardize title page, remove version number
4030         from copyright page.
4031         * doc/gccint.texi: Likewise.
4032         * doc/install.texi: Standardize title page, add table of
4033         contents.
4034
4035 2007-02-26  Jan Hubicka  <jh@suse.cz>
4036
4037         * predict.def: Set outcomes according to more recent results.
4038         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
4039         Remove dead predictors.
4040         * predict.c (return_prediction): Fix pasto.
4041
4042 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
4043
4044         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
4045         change; avoid a memory leak when returning early.
4046
4047 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
4048
4049         * c-decl.c (static_ctors): Move to c-common.c.
4050         (static_dtors): Likewise.
4051         (finish_function): Use c_record_cdtor_fn.
4052         (build_cdtor): Move to c-common.c.
4053         (c_write_global_declarations): Use c_build_cdtor_fns.
4054         * c-common.h (static_ctors): Declare.
4055         (static_dtors): Likewise.
4056         (c_record_cdtor_fn): Likewise.
4057         (c_build_cdtor_fns): Likewise.
4058         * c-common.c (static_ctors): New variable.
4059         (static_dtors): Likewise.
4060         (c_record_cdtor_fn): New function.
4061         (build_cdtor): Move from c-decl.c
4062         (c_build_cdtor_fns): New function.
4063
4064         * output.h (assemble_addr_to_section): Declare.
4065         (get_cdtor_priority_section): Likewise.
4066         * varasm.c (assemble_addr_to_section): New function.
4067         (get_cdtor_priority_section): Likewise.
4068         (default_named_section_asm_out_destructor): Use them.
4069         (destor_dtor_section_asm_out_destructor): Likewise.
4070         (default_named_section_asm_out_constructor): Likewise.
4071         (default_ctor_section_asm_out_constructor): Likewise.
4072         * config.gcc (*-*-vxworks*): Include vxworks.o.
4073         * config/t-vxworks (vxworks.o): New target.
4074         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
4075         (TARGET_ASM_CONSTRUCTOR): Define.
4076         (TARGET_ASM_DESTRUCTOR): Likewise.
4077         (vxworks_asm_out_constructor): Declare.
4078         (vxworks_asm_out_destructor): Likewise.
4079
4080         * c-common.c (get_priority): Check that we have not just an
4081         INTEGER_CST, but an integer constant with integeral type.
4082
4083 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
4084
4085         PR tree-optimization/30938
4086         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
4087         use &dt[nargs-1] instead of &dt[nargs] in the call to
4088         vect_is_simple_use().
4089
4090 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
4091
4092         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
4093         from register elimination as PRE_MODIFY / POST_MODIFY increments.
4094         Do not attempt to handle MEM inside auto-inc expressions.
4095         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
4096         of a register modified by an auto-inc expression.  However, do handle
4097         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
4098         (elimination_effects): Prohibit elimination of a register modified
4099         by an auto-inc expression.  Disable register elimination rules whose
4100         target register is modified by an auto-inc expression with variable
4101         increment.
4102
4103 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
4104
4105         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
4106         off-by-one error.
4107         (array_at_struct_end_p): New function.
4108         (idx_infer_loop_bounds): Use it.
4109         (estimate_numbers_of_iterations_loop): Export.
4110         * predict.c (predict_loops): Use estimated_loop_iterations_int.
4111         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
4112         (tree_estimate_probability): Call record_loop_exits.
4113         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
4114         (estimated_loop_iterations, estimated_loop_iterations_int,
4115         estimated_loop_iterations_tree): New functions.
4116         (analyze_siv_subscript_cst_affine,
4117         compute_overlap_steps_for_affine_1_2,
4118         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
4119         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
4120         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
4121         (PRED_LOOP_ITERATIONS_GUESSED): New.
4122         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
4123         * cfgloop.h (estimate_numbers_of_iterations_loop,
4124         estimated_loop_iterations_int): Declare.
4125
4126 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
4127
4128         * doc/extend.texi: Document optional priority argument to
4129         constructors and destructors.
4130         * tree.c (init_priority_for_decl): Adjust GTY markers.
4131         (init_ttree): Use priority-info hash functions for
4132         init_priority_for_decl.
4133         (tree_map_eq): Rename to ...
4134         (tree_map_base_eq): ... this.
4135         (tree_map_marked_p): Rename to ...
4136         (tree_map_base_marked_p): ... this.
4137         (tree_map_base_hash): New function.
4138         (decl_init_priority_lookup): Rework.
4139         (decl_fini_priority_lookup): New function.
4140         (decl_priority_info): New function.
4141         (decl_init_priority_insert): Use it.
4142         (decl_fini_priority_insert): Likewise.
4143         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
4144         hierarchy.
4145         (decl_restrict_base_insert): Likewise.
4146         (decl_debug_expr_insert): Likewise.
4147         (decl_value_expr_lookup): Likewise.
4148         (decl_value_expr_insert): Likewise.
4149         * tree.h (priority_type): New type.
4150         (decl_init_priority_lookup): Use priority_type.
4151         (decl_fini_priority_lookup): New function.
4152         (decl_init_priority_insert): Use priority_type.
4153         (decl_fini_priority_insert): New function.
4154         (DECL_HAS_INIT_PRIORITY): Tweak comments.
4155         (DECL_INIT_PRIORITY): Likewise.
4156         (SET_DECL_INIT_PRIORITY): Add comment.
4157         (DECL_FINI_PRIORITY): New macro.
4158         (SET_DECL_FINI_PRIORITY): Likewise.
4159         (DEFAULT_INIT_PRIORITY): Document.
4160         (MAX_INIT_PRIORITY): Likewise.
4161         (MAX_RESERVED_INIT_PRIORITY): Likewise.
4162         (tree_map_base): New type.
4163         (tree_map_base_eq): New function.
4164         (tree_map_base_hash): Likewise.
4165         (tree_map_base_marked_p): Likewise.
4166         (tree_map): Inherit from tree_map_base.
4167         (tree_map_eq): Make it a macro.
4168         (tree_map_marked_p): Likewise.
4169         (tree_int_map): Inherit from tree_map_base.
4170         (tree_int_map_eq): Make it a macro.
4171         (tree_int_map_hash): Likewise.
4172         (tree_int_map_marked_p): Likewise.
4173         (tree_priority_map): New type.
4174         (tree_priority_map_eq): New macro.
4175         (tree_priority_map_hash): Likewise.
4176         (tree_priority_map_marked_p): Likewise.
4177         * varasm.c (emults_decl): Adjust for refactoring of tree_map
4178         hierarchy.
4179         (emutls_common_1): Likewise.
4180         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
4181         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
4182         of tree_map hierarchy.
4183         * tree-cfg.c (move_stmt_r): Likewise.
4184         (new_label_mapper): Likewise.
4185         * c-tree.h (c_expand_body): Move to ...
4186         * c-common.h (c_expand_body): ... here.
4187         * c-decl.c (c_expand_body): Move to ...
4188         * c-common.c (c_expand_body): ... here.
4189         (c_common_attribute_table): Allow 1 argument for the constructor
4190         and destructor attributes.
4191         (get_priority): New function.
4192         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
4193         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
4194
4195 2007-02-24  Jan Hubicka  <jh@suse.cz>
4196
4197         PR middle-end/30509
4198         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
4199
4200 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4201             Jan Hubicka  <jh@suse.cz>
4202
4203         PR target/30778
4204         * i386.c (counter_mode): New function.
4205         (expand_set_or_movmem_via_loop): Use it.
4206         (expand_movmem_epilogue): Likewise; fix pasto.
4207         (ix86_expand_movmem): Do emit guard even for constant counts.
4208         (ix86_expand_setmem): Likewise.
4209
4210 2007-02-25  Nick Clifton  <nickc@redhat.com>
4211
4212         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
4213         (JUMP_TABLES_IN_TEXT_SECTION): Define.
4214
4215 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
4216
4217         PR target/30770
4218         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
4219         count argument with 0x10, not with 0x16.
4220         (expand_setmem_epilogue): Ditto.
4221
4222 2007-02-24  Mike Stump  <mrs@apple.com>
4223
4224         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
4225         symbols.
4226
4227 2007-02-24  Richard Guenther  <rguenther@suse.de>
4228
4229         PR middle-end/30951
4230         * fold-const.c (fold_binary): Fold x +- CST op x for
4231         EQ_EXPR and NE_EXPR.
4232
4233 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4234
4235         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
4236
4237 2007-02-24  Jan Hubicka  <jh@suse.cz>
4238
4239         * cgraphunit.c (decide_is_function_needed): Honor
4240         -fkeep-inline-functions.
4241
4242 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4243
4244         * builtins.c (fold_builtin_modf): New.
4245         (fold_builtin_2): Use it.
4246
4247 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
4248
4249         * loop-iv.c (implies_p): Detect additional cases where A implies B.
4250         (determine_max_iter): Take additional LOOP arg; all callers changed.
4251         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
4252         one using simplifications.
4253         (simplify_using_initial_values): Return if the expression becomes
4254         invalid due to altered regs.
4255
4256 2007-02-23  DJ Delorie  <dj@redhat.com>
4257
4258         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
4259
4260 2007-02-23  Mike Stump  <mrs@apple.com>
4261
4262         * tlink.c (scan_linker_output): Parse linker messages from
4263         darwin9's linker better.
4264
4265 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
4266
4267         PR debug/29614
4268         * varpool.c (varpool_assemble_pending_decls):  Set
4269         varpool_last_needed_node to null.
4270
4271 2007-02-23  DJ Delorie  <dj@redhat.com>
4272
4273         * config/i386/i386.c (ix86_data_alignment): Don't specify an
4274         alignment bigger than the object file can handle.
4275
4276 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
4277
4278         PR target/30825
4279         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
4280         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
4281         (*movsf_1): Penalize MMX moves.
4282
4283 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
4284
4285         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
4286         2^32-1 or more times unless flag_unsafe_loop_optimizations.
4287
4288         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
4289
4290 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4291
4292         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
4293         (fold_builtin_1): Use them.
4294         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
4295         BUILT_IN_SIGNIFICAND.
4296
4297 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
4298
4299         * config/i386/i386.c (bdesc_1arg): Initialize
4300         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
4301         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
4302         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
4303         and IX86_BUILTIN_MOVSLDUP.
4304
4305 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
4306
4307         PR rtl-optimization/30841
4308         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
4309
4310 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4311
4312         * builtins.c (fold_builtin_frexp): New.
4313         (fold_builtin_2): Use it.
4314
4315 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
4316
4317         * doc/invoke.texi (Spec Files): Document getenv spec function.
4318
4319         * gcc.c (getenv_spec_function): New function.
4320         (static_spec_functions): Add it.
4321         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
4322         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
4323         header files.
4324
4325 2007-02-22  Michael Matz  <matz@suse.de
4326
4327         PR c++/29433
4328         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
4329         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
4330
4331 2007-02-22  Ian Lance Taylor  <iant@google.com>
4332
4333         PR debug/30898
4334         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
4335         (mem_loc_descriptor): Call it.
4336
4337 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
4338             Ira Rosen  <irar@il.ibm.com>
4339
4340         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
4341
4342 2007-02-22  Ira Rosen  <irar@il.ibm.com>
4343
4344         PR tree-optimization/30843
4345         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
4346         stores only after all the group is vectorized.
4347
4348 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
4349
4350         PR tree-optimization/30858
4351         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
4352         in the reduction cycle have a single use in the loop.
4353         * tree-vectorizer.h (relevant): Add documentation.
4354
4355 2007-02-20  Mike Stump  <mrs@apple.com>
4356
4357         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
4358         * configure: Regenerate.
4359
4360 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
4361
4362         Change the defaults of some parameters and options.
4363         * config/spu/spu-protos.h (spu_optimization_options): Declare.
4364         * config/spu/spu.c (spu_optimization_options): Add.
4365         (spu_override_options): Change params in spu_optimization_options.
4366         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
4367
4368         Register 127 is only 16 byte aligned when used as a frame pointer.
4369         * config/spu/spu-protos.h (spu_init_expanders): Declare.
4370         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
4371         HARD_FRAME_POINTER_REGNUM.
4372         (spu_legitimate_address):  Use regno_aligned_for_reload.
4373         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
4374         aligned when frame_pointer_needed is true.
4375         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
4376         to 8 bits.
4377         * config/spu/spu.h (INIT_EXPANDERS): Define.
4378
4379         Make sure shift and rotate instructions have valid immediate operands.
4380         * config/spu/predicates.md (spu_shift_operand): Remove.
4381         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
4382         * config/spu/constraints.md (W, O): Extend range.
4383         * config/spu/spu.md (umask, nmask): Define.
4384         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
4385         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
4386         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
4387         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
4388         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
4389         (lshr<mode>3_reg):  Fix rtl description.
4390
4391         Make sure mulhisi immediate operands are valid.
4392         * config/spu/predicates.md (imm_K_operand): Add.
4393         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
4394
4395         Generate constants using fsmbi and andi.
4396         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
4397         (print_operand, spu_split_immediate, classify_immediate,
4398         fsmbi_const_p): Handle IC_FSMBI2.
4399
4400         Correctly handle a CONST_VECTOR containing symbols.
4401         * config/spu/spu.c (print_operand): Handle HIGH correctly.
4402         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
4403         (immediate_load_p): Allow symbols that use 2 instructions to create.
4404         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
4405         with symbols when flag_pic is set.
4406         (const_vector_immediate_p): New.
4407         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
4408         accept a CONST_VECTOR with symbols.
4409         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
4410         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
4411         correctly.
4412         * config/spu/spu.md (high, low): Delete.
4413         (low_<mode>): Define.
4414
4415         Remove INTRmode and INTR_REGNUM, which didn't work.
4416         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
4417         of INTR_REGNUM.
4418         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
4419         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
4420         peephole2 pattern): Don't use INTR or 131.
4421         (movintrcc): Delete.
4422         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
4423         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
4424         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
4425         (UNSPEC_SET_INTR): Add.
4426         * config/spu/spu-modes.def (INTR): Remove.
4427
4428         More accurate warnings about run-time relocations.
4429         * config/spu/spu.c (reloc_diagnostic): Test in_section.
4430
4431         Correctly warn about immediate arguments to specific intrinsics.
4432         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
4433         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
4434         the instruction predicate.
4435
4436         Fix tree check errors with latest update.
4437         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
4438         CALL_EXPR_ARG.
4439         (spu_expand_builtin): Use CALL_EXPR_FN.
4440
4441         Add missing specific intrinsics.
4442         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
4443         si_bislede.
4444         * config/spu/spu_internals.h: Ditto.
4445
4446         Fix incorrect operand modifiers.
4447         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
4448         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
4449
4450         Optimize one case of zero_extend of a vec_select.
4451         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
4452
4453         Accept any immediate for hbr.
4454         * config/spu/spu.md (hbr):  Change s constraints to i.
4455
4456 2007-02-21  Paul Brook  <paul@codesourcery.com>
4457
4458         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
4459         condexec_count when skipping USE and CLOBBER.
4460
4461 2007-02-21  Nick Clifton  <nickc@redhat.com>
4462
4463         * common.opt (Warray-bounds): Add Warning attribute.
4464         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
4465         Likewise.
4466         (fsized-zeroes): Add Optimization attribute.
4467         (fsplit-wide-types, ftree-scev-cprop): Likewise.
4468         * c.opt (Wc++0x-compat): Add Warning attribute.
4469
4470 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
4471
4472         PR middle-end/30761
4473         * reload1.c (eliminate_regs_in_insn): In the single_set special
4474         case, attempt to re-recognize the insn before falling back to
4475         having reload fix it up.
4476
4477 2007-02-20  Eric Christopher  <echristo@gmail.com>
4478
4479         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
4480         Rewrite accordingly.
4481         (frv_read_iacc_argument): Ditto.
4482         (frv_expand_set_builtin): Take a call instead of arglist, update for
4483         above changes.
4484         (frv_expand_unop_builtin): Ditto.
4485         (frv_expand_binop_builtin): Ditto.
4486         (frv_expand_cut_builtin): Ditto.
4487         (frv_expand_binopimm_builtin): Ditto.
4488         (frv_expand_voidbinop_builtin): Ditto.
4489         (frv_expand_int_void2arg): Ditto.
4490         (frv_expand_prefetches): Ditto.
4491         (frv_expand_voidtriop_builtin): Ditto.
4492         (frv_expand_voidaccop_builtin): Ditto.
4493         (frv_expand_load_builtin): Ditto.
4494         (frv_expand_store_builtin): Ditto.
4495         (frv_expand_mdpackh_builtin): Ditto.
4496         (frv_expand_mclracc_builtin): Ditto.
4497         (frv_expand_mrdacc_builtin): Ditto.
4498         (frv_expand_mwtacc_builtin): Ditto.
4499         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
4500         calls for above.
4501
4502 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
4503
4504         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
4505         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
4506         cmpb instruction.
4507         (HAVE_GAS_DFP): Check for assembler support of decimal floating
4508         point instructions.
4509         * configure: Regenerate.
4510         * config.in: Regenerate.
4511         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
4512         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
4513         masks to power6 and power6x and to POWERPC_MASKS.
4514         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
4515         _ARCH_PWR6.
4516         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
4517         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
4518         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
4519         Access PROTOTYPE as variable, not mask.
4520
4521 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4522
4523         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
4524         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
4525         * combine.c (adjust_for_new_dest): Use it.
4526         * postreload.c (reload_combine): Likewise.
4527
4528 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
4529
4530         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
4531         notes on an insn with multiple sets, even if single_set returns
4532         non-NULL for that insn.
4533
4534 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4535
4536         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
4537         scalbn and scalbln.
4538
4539 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
4540
4541         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
4542         if user didn't pass it.
4543         * config/i386/darwin.h (CC1_SPEC): Likewise.
4544         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
4545         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
4546         -mmacosx-version-min.
4547
4548 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4549             Uros Bizjak  <ubizjak@gmail.com>
4550
4551         * optabs.h (enum optab_index): Add new OTI_scalb.
4552         (scalb_optab): Define corresponding macro.
4553         * optabs.c (init_optabs): Initialize scalb_optab.
4554         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
4555         patterns.
4556         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
4557         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
4558         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
4559         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
4560         flag_unsafe_math_optimizations is set.
4561
4562         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
4563         to implement scalbf, scalb and scalbl built-ins as inline x87
4564         intrinsics.
4565
4566 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4567             DJ Delorie <dj@redhat.com>
4568
4569         PR other/30824
4570         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
4571         (diagnostic_report_diagnostic): ... here, and turn them into real
4572         errors. If warnings are inhibited, no need to do anything.
4573
4574 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
4575
4576         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
4577         better code generation.
4578
4579 2007-02-20  Ben Elliston  <bje@au.ibm.com>
4580
4581         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
4582
4583 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
4584
4585         * config/alpha/alpha.c, config/alpha/alpha.md,
4586         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
4587         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
4588         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
4589         config/arm/lib1funcs.asm: Follow spelling conventions.
4590
4591         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
4592         config/fr30/fr30.md, config/i386/i386.h,
4593         config/iq2000/iq2000.h, config/iq2000/predicates.md,
4594         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
4595         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
4596         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
4597         config/rs6000/altivec.md, config/rs6000/rs6000.c,
4598         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
4599         config/sparc/sparc.c, config/sparc/sparc.h,
4600         config/sparc/sparc.md, config/spu/constraints.md,
4601         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
4602         conventions.
4603
4604 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
4605
4606         PR target/29943
4607         * varasm.c (use_blocks_for_decl_p): Return false for decls with
4608         alias attribute.
4609
4610 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
4611
4612         * doc/invoke.texi (-ftree-lrs): Remove.
4613
4614 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
4615
4616         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
4617         NULL.
4618
4619 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
4620
4621         * config/ia64/ia64.c (ia64_expand_builtin): Use the
4622         new CALL_EXPR_FN macro for retrieving the function
4623         declaration of the input expression.
4624
4625 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4626
4627         * c.opt (Waddress): New.
4628         * common.opt (Walways-true): Delete.
4629         (Wstring-literal-comparison): Delete.
4630         * doc/invoke.texi (Warning Options): Delete -Walways-true and
4631         -Wstring-literal-comparison. Add -Waddress.
4632         (Waddress): New.
4633         (Walways-true): Delete.
4634         (Wstring-literal-comparison): Delete.
4635         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
4636         consistently instead of -Walways-true in example.
4637         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
4638         * c-typeck.c (parser_build_binary_op): Replace
4639         -Wstring-literal-comparison and -Walways-true with -Waddress.
4640         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
4641         with -Waddress.
4642
4643 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
4644
4645         * tree-cfg.c (dump_function_to_file): Be prepared for functions
4646         without DECL_STRUCT_FUNCTION initialized.
4647
4648 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
4649
4650         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
4651         due to calls to functions taking pointers as parameters.
4652
4653 2007-02-19  Richard Henderson  <rth@redhat.com>
4654
4655         PR debug/29558
4656         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
4657         in memory.
4658
4659 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
4660
4661         * config/s390/s390.c (s390_call_saved_register_used,
4662         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
4663         accessed to the new scheme.
4664
4665 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
4666
4667         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
4668         (cris_print_index, cris_print_operand, cris_print_operand_address)
4669         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
4670         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
4671         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
4672         GET_CODE () == xxx.
4673         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
4674         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
4675         GO_IF_LEGITIMATE_ADDRESS): Ditto.
4676         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
4677         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
4678         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
4679         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
4680         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
4681         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
4682         (uminsi3, call, call_value): Ditto.
4683         (define_split: indir_to_reg_split, unnamed): Ditto.
4684
4685 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
4686
4687         PR tree-optimization/30975
4688         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
4689         wrong assert.
4690
4691 2007-02-18  Eric Christopher  <echristo@gmail.com>
4692
4693         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
4694         Remove use of arglist.
4695         (mips_expand_builtin): Remove use of arglist, pass in expr.
4696         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
4697         (mips_expand_builtin_movtf): Ditto.
4698         (mips_expand_builtin_compare): Ditto.
4699
4700 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
4701
4702         * tree-sra.c (sra_build_assignment): Replace assertion
4703         checking with a comment explaining why it can't be done.
4704
4705 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
4706
4707         PR middle-end/30833
4708         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
4709         during CALL_EXPR representation conversion.
4710         * tree-ssa-propagate.c (set_rhs): Likewise.
4711
4712 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
4713
4714         * tree-sra.c (sra_build_assignment): Disable assertion checking
4715         for now.
4716
4717 2007-02-18  Roger Sayle  <roger@eyesopen.com>
4718
4719         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
4720         instead of calling build2 with a GIMPLE_MODIFY_STMT.
4721         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
4722         Likewise.
4723         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
4724         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
4725         gimplify_init_ctor_eval_range, gimple_push_cleanup,
4726         gimplify_omp_for, gimplify_omp_atomic_pipeline,
4727         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
4728         force_gimple_operand): Likewise.
4729         * ipa-cp.c (constant_val_insert): Likewise.
4730         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
4731         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
4732         perfect_nestify): Likewise.
4733         * langhooks.c (lhd_omp_assignment): Likewise.
4734         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
4735         lower_copyprivate_clauses, lower_send_clauses,
4736         lower_send_shared_vars, expand_parallel_call,
4737         expand_omp_for_generic, expand_omp_for_static_nochunk,
4738         expand_omp_for_static_chunk, expand_omp_sections,
4739         lower_omp_single_copy, lower_omp_for_lastprivate,
4740         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
4741         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
4742         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
4743         Likewise.
4744
4745 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
4746
4747         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
4748         config/sh/sh.md: Follow spelling conventions.
4749
4750         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
4751         config/frv/predicates.md: Follow spelling conventions.
4752
4753         * config/m68k/linux-unwind.h: Fix a comment typo.
4754         * target.h: Follow spelling conventions.
4755
4756 2007-02-18  Roger Sayle  <roger@eyesopen.com>
4757
4758         PR rtl-optimization/28173
4759         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
4760         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
4761         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
4762         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
4763         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
4764
4765 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4766
4767         * builtins.c (fold_builtin_load_exponent): New.
4768         (fold_builtin_2): Use it.
4769
4770 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
4771
4772         PR rtl-optimization/30773
4773         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
4774         if we fail to attach a REG_EQUIV note.
4775
4776 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
4777             Roger Sayle  <roger@eyesopen.com>
4778
4779         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
4780
4781 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
4782
4783         * calls.c (initialize_argument_information): Pass original EXP
4784         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
4785         code to split complex arguments here, as part of initializing the
4786         ARGS array.
4787         (expand_call): Remove code that builds a list of arguments and
4788         inserts implicit arguments into it.  Instead, just count how many
4789         implicit arguments there will be so we can determine the size of
4790         the ARGS array, and let initialize_argument_information do the work.
4791         (split_complex_values): Delete unused function.
4792
4793 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
4794
4795         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
4796
4797 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
4798
4799         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
4800         for arg pointer based indexed addressing.
4801
4802 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4803
4804         * config/ia64/ia64.h, config/ia64/ia64.md,
4805         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
4806         spelling conventions.
4807
4808 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4809
4810         * config/m68k/m68k.c (split_di): New.
4811         * config/m68k/m68k-protos.h: Declare split_di.
4812         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
4813           Improve predicate handling and split constant shifts.
4814
4815 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4816
4817         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
4818         parameter for register bitfield operations, general predicates
4819         cleanup
4820
4821 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
4822
4823         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
4824         * config/m68k/linux-unwind.h: New file.
4825
4826 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
4827
4828         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
4829         config/i386/athlon.md, config/ia64/ia64.md,
4830         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
4831         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
4832         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
4833         tree-ssa-loop-niter.c, tree-vect-analyze.c,
4834         tree-vect-transform.c: Fix comment typos.
4835
4836 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
4837
4838         * sched-deps.c (find_insn_list): Remove.
4839         * sched-int.h: Remove the prototype for find_insn_list.
4840
4841 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
4842
4843         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
4844         to linker.
4845         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
4846         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
4847         darwin_rs6000_override_options.
4848         (C_COMMON_OVERRIDE_OPTIONS): Expect
4849         darwin_macosx_version_min to be non-NULL always.
4850         (TARGET_C99_FUNCTIONS): Likewise.
4851         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
4852         (DARWIN_MINVERSION_SPEC): New.
4853         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
4854         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
4855         to cc1*.
4856         (DARWIN_MINVERSION_SPEC): New.
4857         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
4858         value.
4859         * config/darwin-c.c (darwin_cpp_builtins): Expect
4860         darwin_macosx_version_min to be non-NULL always.
4861
4862         * config/rs6000/rs6000.c: Clean up trailing whitespace.
4863
4864 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
4865
4866         * config/i386/i386.h (x86_use_xchgb): New.
4867         (TARGET_USE_XCHGB): New macro.
4868         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
4869         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
4870         Split after reload into bswaphi for shifts of 8.
4871         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
4872         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
4873         or when optimizing for size.
4874
4875 2007-02-16  Richard Guenther  <rguenther@suse.de>
4876             Christian Bruel  <christian.bruel@st.com>
4877
4878         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
4879         DECLs but prefer SSA_NAMEs over DECLs.
4880
4881 2007-02-16  Richard Guenther  <rguenther@suse.de>
4882
4883         * tree-flow-inline.h (single_imm_use_p): Remove.
4884         (zero_imm_uses_p): Likewise.
4885         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
4886         instead of single_imm_use_p.
4887         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
4888         zero_imm_uses_p.
4889
4890 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
4891
4892         PR other/27843
4893         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
4894         nested double- and backquotes.
4895
4896 2007-02-15  Roger Sayle  <roger@eyesopen.com>
4897
4898         PR middle-end/30391
4899         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
4900         should be unreachable.
4901         (build2_stat): Allow construction of MODIFY_EXPR at any time.
4902         For the time being redirect GIMPLE_MODIFY_STMT to the new
4903         (renamed) build_gimple_modify_stmt_stat.
4904         (build2_gimple_stat): Rename to...
4905         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
4906         Always build a GIMPLE_MODIFY_STMT node.
4907         * tree.h (build2_gimple, build2_gimple_stat): Delete.
4908         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
4909         declarations.
4910
4911         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
4912         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
4913         * tree-complex.c (set_component_ssa_name, expand_complex_move,
4914         expand_complex_div_wide): Likewise.
4915         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
4916         * tree-ssa-loop-im.c (schedule_sm): Likewise.
4917         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
4918         * tree-ssa-loop-manip.c (create_iv): Likewise.
4919         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
4920         abs_replacement): Likewise.
4921         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
4922         realify_fake_stores): Likewise.
4923
4924         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
4925         node rather than a GIMPLE_MODIFY_STMT node.
4926         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
4927         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
4928         Likewise.
4929         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
4930         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
4931         GIMPLE_MODIFY_STMT.
4932
4933 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4934
4935         PR middle-end/30433
4936         * fold-const.c (fold_comparison): Add back the
4937         folding of constant complex comparisions.
4938
4939 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4940
4941         PR middle-end/30729
4942         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
4943         effects unknown to this function, return early.
4944
4945 2007-02-15  Ian Lance Taylor  <iant@google.com>
4946
4947         * lower-subreg.c (move_eh_region_note): New static function.
4948         (resolve_simple_move): Call it.
4949         (decompose_multiword_subregs): Track blocks for which we resolve a
4950         simple move which is also a control flow insn.  Pass them to
4951         find_many_sub_basic_blocks.
4952         (pass_lower_subreg): Add TODO_verify_flow.
4953         (pass_lower_subreg2): Likewise.
4954
4955 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
4956             Brooks Moses  <brooks.moses@codesourcery.com>
4957             Lee Millward  <lee.millward@codesourcery.com>
4958
4959         * tree.h (enum tree_code_class): Add tcc_vl_exp.
4960         (VL_EXP_CLASS_P): New.
4961         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
4962         TREE_CODE_LENGTH.
4963         (TREE_OPERAND_CHECK_CODE): Likewise.
4964         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
4965         (TREE_RTL_OPERAND_CHECK): Likewise.
4966         (tree_operand_check_failed): Make second parameter the whole tree
4967         instead of its code.  Fixed callers.
4968         (VL_EXP_CHECK): New.
4969         (TREE_OPERAND_LENGTH): New.
4970         (VL_EXP_OPERAND_LENGTH): New.
4971         (CALL_EXPR_FN): New.
4972         (CALL_EXPR_STATIC_CHAIN): New.
4973         (CALL_EXPR_ARGS): New.
4974         (CALL_EXPR_ARG): New.
4975         (call_expr_nargs): New.
4976         (CALL_EXPR_ARGP): New.
4977         (build_nt_call_list): Declare.
4978         (build_vl_exp_stat): Declare.
4979         (build_vl_exp): New.
4980         (build_call_list): Declare.
4981         (build_call_nary): Declare.
4982         (build_call_valist): Declare.
4983         (build_call_array): Declare.
4984         (call_expr_arg): Declare.
4985         (call_expr_argp): Declare.
4986         (call_expr_arglist): Declare.
4987         (fold_build_call_list): Declare.
4988         (fold_build_call_list_initializer): Declare.
4989         (fold_call_expr): Declare to replace fold_builtin.
4990         (fold_builtin_fputs): Update to agree with modified definition.
4991         (fold_builtin_strcpy): Likewise.
4992         (fold_builtin_strncpy): Likewise.
4993         (fold_builtin_memory_chk): Likewise.
4994         (fold_builtin_stxcpy_chk): Likewise.
4995         (fold_builtin_strncpy_chk): Likewise.
4996         (fold_builtin_next_arg): Likewise.
4997         (fold_build_call_expr): Declare.
4998         (fold_builtin_call_list): Declare.
4999         (fold_builtin_call_valist): Declare.
5000         (build_call_expr): Declare.
5001         (validate_arglist): Update to agree with modified definition.
5002         (tree_operand_length): New.
5003         (call_expr_arg_iterator): New.
5004         (init_call_expr_arg_iterator): New.
5005         (next_call_expr_arg): New.
5006         (first_call_expr_arg): New.
5007         (more_call_expr_args_p): New.
5008         (FOR_EACH_CALL_EXPR_ARG): New.
5009
5010         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
5011         and tcc_gimple_stmt.
5012         (tree_code_size): Update documentation.  Use sizeof (tree) rather
5013         than sizeof (char *).
5014         (tree_size): Likewise.  Add case for tcc_vl_exp.
5015         (tree_node_structure): Add case for tcc_vl_exp.
5016         (contains_placeholder_p): Likewise.
5017         (substitute_in_expr): Likewise.
5018         (substitute_placeholder_in_expr): Likewise.
5019         (stabilize_reference_1): Likewise.
5020         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
5021         to diagnose breakage of this interface for constructing CALL_EXPRs.
5022         (build_nt): Add similar assertion here.
5023         (build_nt_call_list): New.
5024         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
5025         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
5026         TREE_CODE_LENGTH.
5027         (get_callee_fndecl): Use new CALL_EXPR accessors.
5028         (tree_operand_check_failed): Change parameters to pass entire node
5029         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
5030         (process_call_operands): New.
5031         (build_vl_exp_stat): New.
5032         (build_call_list): New.
5033         (build_call_nary): New.
5034         (build_call_valist): New.
5035         (build_call_array): New.
5036         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5037         (call_expr_arglist): New.
5038
5039         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
5040         tcc_vl_exp instead of a fixed-size tcc_expression.
5041
5042         * doc/c-tree.texi (CALL_EXPR): Document new representation and
5043         accessors for CALL_EXPRs.
5044         (AGGR_INIT_EXPR): Likewise.
5045
5046 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5047             Brooks Moses  <brooks.moses@codesourcery.com>
5048             Lee Millward  <lee.millward@codesourcery.com>
5049
5050         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
5051         (expand_builtin_nonlocal_goto): Change parameter to be entire
5052         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
5053         (expand_builtin_prefetch): Likewise.
5054         (expand_builtin_classify_type): Likewise.
5055         (mathfn_built_in): Return NULL_TREE instead of 0.
5056         (expand_errno_check): Use new CALL_EXPR accessors.
5057         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
5058         Return NULL_RTX instead of 0.
5059         (expand_builtin_mathfn_2): Likewise.
5060         (expand_builtin_mathfn_3): Likewise.
5061         (expand_builtin_interclass_mathfn): Likewise.
5062         (expand_builtin_sincos): Likewise.
5063         (expand_builtin_cexpi): Likewise.
5064         (expand_builtin_int_roundingfn): Likewise.
5065         (expand_builtin_int_roundingfn_2): Likewise.
5066         (expand_builtin_pow): Likewise.
5067         (expand_builtin_powi): Likewise.
5068         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
5069         of arglist, fixing callers appropriately.  Use new CALL_EXPR
5070         accessors and constructors.  Return NULL_RTX instead of 0.
5071         (expand_builtin_strstr): Likewise.
5072         (expand_builtin_strchr): Likewise.
5073         (expand_builtin_strrchr): Likewise.
5074         (expand_builtin_strpbrk): Likewise.
5075         (expand_builtin_memcpy): Likewise.
5076         (expand_builtin_mempcpy): Likewise.
5077         (expand_builtin_mempcpy_args): New.
5078         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
5079         (expand_builtin_memmove_args): New.
5080         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
5081         (expand_movstr): Likewise.
5082         (expand_builtin_strcpy): Likewise.
5083         (expand_builtin_strcpy_args): New.
5084         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
5085         (expand_builtin_strncpy): Likewise.
5086         (expand_builtin_memset): Likewise.
5087         (expand_builtin_memset_args): New.
5088         (expand_builtin_bzero): Similarly to expand_builtin_memset.
5089         (expand_builtin_memcmp): Likewise.
5090         (expand_builtin_strcmp): Likewise.
5091         (expand_builtin_strncmp): Likewise.
5092         (expand_builtin_strcat): Likewise.
5093         (expand_builtin_strncat): Likewise.
5094         (expand_builtin_strspn): Likewise.
5095         (expand_builtin_strcspn): Likewise.
5096         (expand_builtin_args_info): Likewise.
5097         (expand_builtin_va_start): Likewise.
5098         (gimplify_va_arg_expr): Likewise.
5099         (expand_builtin_va_end): Likewise.
5100         (expand_builtin_va_copy): Likewise.
5101         (expand_builtin_frame_address): Likewise.
5102         (expand_builtin_alloca): Likewise.
5103         (expand_builtin_bswap): Likewise.
5104         (expand_builtin_unop): Likewise.
5105         (expand_builtin_fputs): Likewise.
5106         (expand_builtin_expect): Likewise.
5107         (expand_builtin_fabs): Likewise.
5108         (expand_builtin_copysign): Likewise.
5109         (expand_builtin_printf): Likewise.
5110         (expand_builtin_fprintf): Likewise.
5111         (expand_builtin_sprintf): Likewise.
5112         (expand_builtin_init_trampoline): Likewise.
5113         (expand_builtin_signbit): Likewise.
5114         (expand_builtin_fork_or_exec): Likewise.
5115         (expand_builtin_sync_operation): Likewise.
5116         (expand_builtin_compare_and_swap): Likewise.
5117         (expand_builtin_lock_test_and_set): Likewise.
5118         (expand_builtin_lock_release): Likewise.
5119         (expand_builtin): Likewise.
5120         (builtin_mathfn_code): Likewise.
5121
5122         (fold_builtin_constant_p): Pass call arguments individually instead
5123         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5124         accessors and constructors.  Return NULL_TREE instead of 0.
5125         (fold_builtin_expect): Likewise.
5126         (fold_builtin_classify_type): Likewise.
5127         (fold_builtin_strlen): Likewise.
5128         (fold_builtin_nan): Likewise.
5129         (integer_valued_real_p): Likewise.
5130         (fold_trunc_transparent_mathfn): Likewise.
5131         (fold_fixed_mathfn): Likewise.
5132         (fold_builtin_cabs): Likewise.
5133         (fold_builtin_sqrt): Likewise.
5134         (fold_builtin_cbrt): Likewise.
5135         (fold_builtin_cos): Likewise.
5136         (fold_builtin_cosh): Likewise.
5137         (fold_builtin_tan): Likewise.
5138         (fold_builtin_sincos): Likewise.
5139         (fold_builtin_cexp): Likewise.
5140         (fold_builtin_trunc): Likewise.
5141         (fold_builtin_floor): Likewise.
5142         (fold_builtin_ceil): Likewise.
5143         (fold_builtin_round): Likewise.
5144         (fold_builtin_int_roundingfn): Likewise.
5145         (fold_builtin_bitop): Likewise.
5146         (fold_builtin_bswap): Likewise.
5147         (fold_builtin_logarithm): Likewise.
5148         (fold_builtin_hypot): Likewise.
5149         (fold_builtin_pow): Likewise.
5150         (fold_builtin_powi): Likewise.
5151         (fold_builtin_exponent): Likewise.
5152         (fold_builtin_memset): Likewise.
5153         (fold_builtin_bzero): Likewise.
5154         (fold_builtin_memory_op): Likewise.
5155         (fold_builtin_bcopy): Deleted; call site changed to invoke
5156         fold_builtin_memory_op directly.
5157         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
5158         (fold_builtin_strncpy): Likewise.
5159         (fold_builtin_memcmp): Likewise.
5160         (fold_builtin_strcmp): Likewise.
5161         (fold_builtin_strncmp): Likewise.
5162         (fold_builtin_signbit): Likewise.
5163         (fold_builtin_copysign): Likewise.
5164         (fold_builtin_isascii): Likewise.
5165         (fold_builtin_toascii): Likewise.
5166         (fold_builtin_isdigit): Likewise.
5167         (fold_builtin_fabs): Likewise.
5168         (fold_builtin_abs): Likewise.
5169         (fold_builtin_fmin_fmax): Likewise.
5170         (fold_builtin_carg): Likewise.
5171         (fold_builtin_classify): Likewise.
5172         (fold_builtin_unordered_cmp): Likewise.
5173
5174         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
5175         New functions split out from fold_builtin_1.
5176         (fold_builtin_n): New.
5177         (fold_builtin_varargs): New.
5178         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
5179         instead.
5180         (fold_call_expr): New.
5181         (build_function_call_expr): Rewrite to use new helper function.
5182         (fold_builtin_call_list): New.
5183         (build_call_expr): New.
5184         (fold_builtin_call_valist): New.
5185         (rewrite_call_expr): New.
5186         (validate_arg): New.
5187         (validate_arglist): Change parameter to be entire CALL_EXPR instead
5188         of an arglist.  Change return type to bool.  Use new CALL_EXPR
5189         accessors.
5190
5191         (fold_builtin_strstr):  Pass call arguments individually instead
5192         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5193         accessors and constructors.  Return NULL_TREE instead of 0.
5194         (fold_builtin_strchr): Likewise.
5195         (fold_builtin_strrchr): Likewise.
5196         (fold_builtin_strpbrk): Likewise.
5197         (fold_builtin_strcat): Likewise.
5198         (fold_builtin_strncat): Likewise.
5199         (fold_builtin_strspn): Likewise.
5200         (fold_builtin_strcspn): Likewise.
5201         (fold_builtin_fputs): Likewise.
5202         (fold_builtin_next_arg): Likewise.
5203         (fold_builtin_sprintf): Likewise.
5204
5205         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
5206         NULL_RTX instead of 0.
5207         (expand_builtin_memory_chk): Likewise.
5208         (maybe_emit_chk_warning): Likewise.
5209         (maybe_emit_sprintf_chk_warning): Likewise.
5210
5211         (fold_builtin_object_size): Pass call arguments individually instead
5212         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
5213         accessors and constructors.  Return NULL_TREE instead of 0.
5214         (fold_builtin_memory_chk): Likewise.
5215         (fold_builtin_stxcpy_chk): Likewise.
5216         (fold_builtin_strncpy_chk): Likewise.
5217         (fold_builtin_strcat_chk): Likewise.
5218         (fold_builtin_strcat_chk): Likewise.
5219         (fold_builtin_strncat_chk): Likewise.
5220         (fold_builtin_sprintf_chk): Likewise.
5221         (fold_builtin_snprintf_chk): Likewise.
5222         (fold_builtin_printf): Likewise.
5223         (fold_builtin_vprintf): Likewise.
5224
5225         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
5226         constructors.
5227         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
5228         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5229         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
5230         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
5231         (fold_unary): Likewise.
5232         (fold_binary): Likewise.
5233         (fold_ternary): Remove CALL_EXPR case, since they are no longer
5234         ternary expressions.
5235         (fold): Add logic for tcc_vl_exp.
5236         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
5237         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5238         (fold_build3_stat): Add assertion to flag broken interface for
5239         constructing CALL_EXPRs.
5240         (fold_build_call_list): New.
5241         (fold_build_call_list_initializer): New.
5242         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
5243         constructors.
5244         (fold_strip_sign_ops): Likewise.
5245
5246 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5247             Brooks Moses  <brooks.moses@codesourcery.com>
5248             Lee Millward  <lee.millward@codesourcery.com>
5249
5250         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
5251         accessors and dump arguments explicitly.
5252
5253         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
5254         TREE_CODE_LENGTH.
5255         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
5256         explicitly.
5257         (print_call_name): Use new CALL_EXPR accessors.
5258
5259         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
5260         CALL_EXPR arguments explicitly instead of as a list.  Use
5261         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5262
5263         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
5264         (vrp_visit_stmt): Likewise.
5265
5266         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
5267         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
5268         TREE_CODE_LENGTH.
5269         (force_move_till_expr): Likewise.
5270
5271         * targhooks.c (default_external_stack_protect_fail): Use
5272         build_call_expr instead of build_function_call_expr.
5273         (default_hidden_stack_protect_fail): Likewise.
5274
5275         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
5276         build the call.
5277
5278         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
5279         and walk arguments explicitly.
5280
5281         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
5282         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5283         (expand_simple_operations): Likewise.
5284         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
5285
5286         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
5287         of TREE_CODE_LENGTH.
5288         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
5289
5290         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
5291         instead of TREE_CODE_LENGTH.
5292
5293         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
5294         (tree_ic_transform): Likewise.
5295         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
5296         parameter instead of arglist.  Fix callers.
5297         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
5298         (tree_stringops_transform): Likewise.
5299         (tree_indirect_call_to_profile): Likewise.
5300         (tree_stringops_values_to_profile): Likewise.
5301
5302         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
5303         (eliminate_tail_call): Likewise.
5304
5305         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
5306
5307         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
5308         Use TREE_OPERAND_LENGTH and generalize to handle any number of
5309         operands.
5310         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
5311
5312         * omp-low.c (build_omp_barrier): Use build_call_expr.
5313         (lower_rec_input_clauses): Likewise.
5314         (lower_reduction_clauses): Likewise.
5315         (expand_parallel_call): Likewise.
5316         (maybe_catch_exception): Likewise.
5317         (expand_omp_for_generic): Likewise.
5318         (expand_omp_for_static_nochunk): Likewise.
5319         (expand_omp_sections): Likewise.
5320         (lower_omp_single_simple): Likewise.
5321         (lower_omp_single_copy): Likewise.
5322         (lower_omp_master): Likewise.
5323         (lower_omp_ordered): Likewise.
5324         (lower_omp_critical): Likewise.
5325
5326         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
5327         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
5328
5329         * tree-gimple.c (is_gimple_call_addr): Fix doc.
5330         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
5331         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
5332
5333         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
5334         and generalize to handle any number of operands.
5335         (chrec_contains_undetermined): Likewise.
5336         (tree_contains_chrecs): Likewise.
5337         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
5338
5339         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
5340
5341         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
5342         fold_call_expr instead of fold_builtin.
5343         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
5344         match declarations there.
5345         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
5346         updates.
5347
5348         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
5349         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5350
5351         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
5352         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
5353
5354         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
5355         accessors.
5356
5357         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
5358         (execute_cse_sincos): Use new CALL_EXPR accessors.
5359
5360         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
5361
5362         * gimple-low.c (lower_function_body): Use build_call_expr.
5363         (lower_builtin_setjmp): Likewise.
5364
5365         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
5366         (set_storage_via_libcall): Likewise.
5367         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
5368         instead of TREE_CODE_LENGTH.
5369         (expand_expr_real_1): Use new CALL_EXPR accessors.
5370
5371         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
5372         generalize to handle any number of operands.
5373         (TB_parent_eq): Likewise.
5374
5375         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
5376         (strip_builtin_expect): Likewise.
5377
5378         * function.c (gimplify_parameters): Use build_call_expr.
5379
5380         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
5381         instead of TREE_CODE_LENGTH.
5382
5383         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
5384         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
5385
5386         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
5387         iterators.
5388
5389         * gimplify.c (build_stack_save_restore): Use build_call_expr.
5390         (gimplify_decl_expr): Likewise.
5391         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
5392         Use new CALL_EXPR iterators.
5393         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
5394         (gimplify_modify_expr_to_memset): Likewise.
5395         (gimplify_variable_sized_compare): Likewise.
5396         (gimplify_omp_atomic_fetch_op): Likewise.
5397         (gimplify_omp_atomic_pipeline): Likewise.
5398         (gimplify_omp_atomic_mutex): Likewise.
5399         (gimplify_function_tree): Likewise.
5400
5401         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
5402         (call_expr_flags): Likewise.
5403         (expand_call): Likewise.
5404
5405         * except.c (expand_builtin_eh_return_data_regno): Pass entire
5406         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5407         accessors.
5408
5409         * coverage.c (create_coverage): Use build_call_expr.
5410
5411         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
5412         (temp_call_expr_obstack): New.
5413         (pool_copy_list): Delete.
5414         (temp_copy_call_expr): New.
5415         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
5416         CALL_EXPR accessors.  Get rid of special goo for copying argument
5417         lists and use temp_copy_call_expr instead.
5418         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
5419         CALL_EXPR accessors.
5420         (create_expression_by_pieces): Likewise.  Use build_call_array
5421         to construct the result instead of fold_build3.
5422         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
5423         dealing with argument lists.
5424         (init_pre): Remove references to expression_node_pool and
5425         list_node_pool.  Init temp_call_expr_obstack instead.
5426         (fini_pre): Remove references to expression_node_pool and
5427         list_node_pool.
5428
5429         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
5430         and walk arguments explicitly instead of as a list.
5431
5432         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
5433         (mx_register_decls): Likewise.
5434         (mudflap_register_call): Likewise.
5435         (mudflap_finish_file): Likewise.
5436
5437         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
5438         (ipa_callsite_compute_param): Likewise.
5439
5440         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
5441         accessors and constructor.
5442
5443         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
5444         accessors and constructor.
5445         (convert_tramp_reference): Likewise.
5446         (convert_call_expr): Likewise.
5447         (finalize_nesting_tree_1): Likewise.
5448
5449         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
5450         accessors.
5451
5452         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
5453
5454         * tree-inline.c (initialize_inlined_parameters): Pass entire
5455         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
5456         accessors.
5457         (estimate_num_insns_1): Use new CALL_EXPR accessors.
5458         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
5459
5460         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
5461         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5462         (vectorizable_reduction): Likewise.
5463         (vectorizable_call): Use new CALL_EXPR iterators.
5464         (vectorizable_conversion): Use build_call_expr.
5465         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
5466         (vect_gen_widened_results_half): Use build_call_expr.
5467         (vect_setup_realignment): Likewise.
5468         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
5469
5470         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
5471         (pass_through_call): Likewise.
5472         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
5473         fold_builtin.
5474
5475         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
5476         (tree_gen_pow2_profiler): Likewise.
5477         (tree_gen_one_value_profiler): Likewise.
5478         (tree_gen_ic_func_profiler): Likewise.
5479         (tree_gen_average_profiler): Likewise.
5480         (tree_gen_ior_profiler): Likewise.
5481
5482         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
5483         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
5484         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
5485
5486         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
5487         of TREE_CODE_LENGTH.
5488
5489         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
5490         of TREE_CODE_LENGTH.
5491
5492         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
5493         constructor.
5494         (convert_to_integer): Likewise.
5495
5496         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
5497         accessors.
5498
5499 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5500             Brooks Moses  <brooks.moses@codesourcery.com>
5501             Lee Millward  <lee.millward@codesourcery.com>
5502
5503         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
5504         accessors.
5505         * config/frv/frv.c (frv_expand_builtin): Likewise.
5506         * config/s390/s390.c (s390_expand_builtin): Likewise.
5507
5508         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
5509         (sparc_expand_builtin): Use new CALL_EXPR accessors.
5510
5511         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
5512         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
5513         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
5514         (ix86_expand_store_builtin): Likewise.
5515         (ix86_expand_unop_builtin): Likewise.
5516         (ix86_expand_unop1_builtin): Likewise.
5517         (ix86_expand_sse_compare): Likewise.
5518         (ix86_expand_sse_comi): Likewise.
5519         (ix86_expand_vec_init_builtin): Likewise.
5520         (ix86_expand_vec_ext_builtin): Likewise.
5521         (ix86_expand_vec_set_builtin): Likewise.
5522         (ix86_expand_builtin): Use new CALL_EXPR accessors.
5523
5524         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
5525         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
5526
5527         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
5528         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5529         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
5530
5531         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
5532         build_call_expr.
5533         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
5534         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
5535         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5536         (altivec_expand_abs_builtin): Likewise.
5537         (rs6000_expand_binop_builtin): Likewise.
5538         (altivec_expand_predicate_builtin): Likewise.
5539         (altivec_expand_lv_builtin): Likewise.
5540         (spe_expand_stv_builtin): Likewise.
5541         (altivec_expand_stv_builtin): Likewise.
5542         (rs6000_expand_ternop_builtin): Likewise.
5543         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
5544         (altivec_expand_st_builtin): Likewise.
5545         (altivec_expand_dst_builtin): Likewise.
5546         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
5547         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5548         (altivec_expand_vec_set_builtin): Likewise.
5549         (altivec_expand_vec_ext_builtin): Likewise.
5550         (altivec_expand_builtin): Use new CALL_EXPR accessors.
5551         (spe_expand_builtin): Likewise.
5552         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
5553         arglist.  Use new CALL_EXPR accessors.  Fix callers.
5554         (spe_expand_evsel_builtin): Likewise.
5555         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
5556         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
5557
5558         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
5559         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5560         (arm_expand_unop_builtin): Likewise.
5561         (arm_expand_builtin): Use new CALL_EXPR accessors.
5562
5563         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
5564         accessors.
5565
5566         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
5567         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
5568         (bfin_expand_unop_builtin): Likewise.
5569         (bfin_expand_builtin): Use new CALL_EXPR accessors.
5570
5571 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
5572             Brooks Moses  <brooks.moses@codesourcery.com>
5573             Lee Millward  <lee.millward@codesourcery.com>
5574
5575         * c-semantics.c (build_stmt): Add internal diagnostic check.
5576
5577         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
5578         accessors.  Print arguments explicitly instead of as a list.
5579
5580         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
5581
5582         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
5583         (c_finish_omp_flish): Likewise.
5584
5585         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
5586         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
5587         instead of TREE_CODE_LENGTH.
5588         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
5589         (c_warn_unused_result): Likewise.
5590
5591 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5592
5593         PR c/26494
5594         * doc/invoke.texi (Warning Options): Remove
5595         -Werror-implicit-function-declaration.
5596         (Wimplicit-function-declaration): Update description.
5597         * opts.c (common_handle_option): Move handling of -Werror=* to...
5598         (enable_warning_as_error): ...here.
5599         * opts.h (enable_warning_as_error): Declare.
5600         * c-decl.c (implicit_decl_warning): Unless
5601         -Wno-implicit-function-declaration is given, emit a pedwarn if
5602         -std=c99 or emit a warning if -Wimplicit-function-declaration.
5603         * c.opt (Wimplicit-function-declaration): Replace
5604         mesg_implicit_function_declaration with
5605         warn_implicit_function_declaration.
5606         * c-opts.c (c_common_handle_option):
5607         -Werror-implicit-function-declaration is exactly equal as
5608         -Werror=implicit-function-declaration.
5609         (set_Wimplicit): Replace mesg_implicit_function_declaration with
5610         warn_implicit_function_declaration.
5611         (c_common_post_options): -Wimplict-function-declaration is enabled
5612         by default by -std=c99, otherwise is disabled by default.
5613         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
5614
5615 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5616
5617         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
5618         DECL on the rhs to a DECL on the lhs for debug info purposes if the
5619         former is ignored but not the latter.
5620
5621 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
5622
5623         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
5624         is made and the reference doesn't use the alias set of its type,
5625         do not create the temporary using that type.
5626
5627 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
5628
5629         * jump.c: Remove prototypes for delete_computation and
5630         delete_prior_computation.
5631
5632 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
5633
5634         * jump.c (get_label_after): Delete.
5635         (get_label_before, delete_computation, delete_jump,
5636         delete_prior_computation, follow_jumps): Move...
5637         * reorg.c (delete_computation, delete_prior_computation): ... here...
5638         (get_label_before, delete_jump): ... making these static ...
5639         (follow_jumps): ... and simplifying this since it only runs after
5640         reload.
5641         * rtl.h (get_label_after, get_label_before, delete_jump,
5642         follow_jumps): Delete prototypes.
5643
5644 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
5645
5646         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
5647
5648 2007-02-15  Nick Clifton  <nickc@redhat.com>
5649
5650         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
5651         order to prevent it from being munged by the target.
5652
5653 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
5654
5655         * config/i386/i386.md: Remove misleading comment.
5656
5657 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5658
5659         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
5660         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
5661         invalid patterns.
5662
5663 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5664
5665         * tree-sra.c (instantiate_missing_elements): Canonicalize
5666         bit-field types.
5667         (sra_build_assignment): New.
5668         (generate_copy_inout, generate_element_copy,
5669         generate_element_zero, generate_one_element_init): Use it.
5670
5671 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5672
5673         * tree-sra.c (instantiate_missing_elements): Canonicalize
5674         bit-field types.
5675         (sra_build_assignment): New.
5676         (generate_copy_inout, generate_element_copy,
5677         generate_element_zero, generate_one_element_init): Use it.
5678
5679 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
5680
5681         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
5682         limbo die nodes.
5683
5684 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
5685
5686         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
5687         types as aggregates not scalars.
5688         * function.c (assign_stack_temp_for_type): Likewise.
5689
5690 2007-02-14  Roger Sayle  <roger@eyesopen.com>
5691             Zdenek Dvorak  <dvorakz@suse.cz>
5692
5693         * tree-dump.c (dump_switch_p_1): Require exact match of the option
5694         name.
5695
5696 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
5697
5698         * passes.c (next_pass_1): Clear the next field of the copied
5699         pass structure.
5700
5701 2007-02-14  Richard Henderson  <rth@redhat.com>
5702
5703         * tree-sra.c (early_sra): New.
5704         (decl_can_be_decomposed_p): Deny va_list if early_sra.
5705         (tree_sra_early, pass_sra_early): New.
5706         * tree-pass.h (pass_sra_early): Declare.
5707         * passes.c (init_optimization_passes): Use it.
5708
5709 2007-02-14  Richard Guenther  <rguenther@suse.de>
5710
5711         * flags.h (issue_strict_overflow_warning): Convert to a macro.
5712
5713 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
5714
5715          PR tree-optimization/30771
5716         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
5717         also phi nodes.
5718         (vect_analyze_operations): Induction phis can now be marked as
5719         used_in_loop.
5720         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
5721         Update documentation accordingly.
5722
5723 2007-02-14  Nick Clifton  <nickc@redhat.com>
5724
5725         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
5726         most 3 arguments are supported.
5727         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
5728
5729 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
5730
5731         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
5732         Ensure dst->current is valid.
5733
5734 2007-02-13  Paul Brook  <paul@codesourcery.com>
5735
5736         * config.gcc: Add arm*-*-uclinux-*eabi.
5737         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
5738         (SUBTARGET_EXTRA_LINK_SPEC): Define.
5739         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
5740         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
5741         (LINK_SPEC): Define.
5742         (LIB_SPEC): Define.
5743         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
5744         register.
5745         * config/arm/uclinux-eabi.h: New file.
5746         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
5747         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
5748         based targets.
5749
5750 2007-02-13  Ian Lance Taylor  <iant@google.com>
5751
5752         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
5753         * flags.h (warn_strict_overflow): Declare.
5754         (enum warn_strict_overflow_code): Define.
5755         (issue_strict_overflow_warning): New static inline function.
5756         * opts.c (warn_strict_overflow): New variable.
5757         (common_handle_option): Handle OPT_Wstrict_overflow and
5758         OPT_Wstrict_overflow_.
5759         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
5760         OPT_Wall.
5761         * fold-const.c: Include intl.h.
5762         (fold_deferring_overflow_warnings): New static variable.
5763         (fold_deferred_overflow_warning): New static variable.
5764         (fold_deferred_overflow_code): New static variable.
5765         (fold_defer_overflow_warnings): New function.
5766         (fold_undefer_overflow_warnings): New function.
5767         (fold_undefer_and_ignore_overflow_warnings): New function.
5768         (fold_deferring_overflow_warnings_p): New function.
5769         (fold_overflow_warning): New static function.
5770         (make_range): Add strict_overflow_p parameter.  Change all
5771         callers.
5772         (extract_muldiv, extract_muldiv_1): Likewise.
5773         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
5774         tree_expr_nonnegative_p.
5775         (fold_negate_expr): Call fold_overflow_warning.
5776         (fold_range_test): Likewise.
5777         (fold_comparison): Likewise.
5778         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
5779         instead of tree_expr_nonnegative_p.
5780         (tree_expr_nonnegative_warnv_p): Rename from
5781         tree_expr_nonnegative_p, add strict_overflow_p parameter.
5782         (tree_expr_nonnegative_p): New function.
5783         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
5784         strict_overflow_p parameter.
5785         (tree_expr_nonzero_p): New function.
5786         * passes.c (verify_interpass_invariants): New static function.
5787         (execute_one_pass): Call it.
5788         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
5789         warnings.
5790         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
5791         (estimate_numbers_of_iterations): Likewise.
5792         (scev_probably_wraps_p): Likewise.
5793         * tree-ssa-ccp.c: Include "toplev.h".
5794         (evaluate_stmt): Defer fold overflow warnings until we know we are
5795         going to optimize.
5796         (struct fold_stmt_r_data): Add stmt field.
5797         (fold_stmt_r): Defer fold overflow warnings until we know we
5798         optimized.
5799         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
5800         (fold_stmt_inplace): Likewise.
5801         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
5802         (cleanup_control_expr_graph): Defer fold overflow warnings until
5803         we know we are going to optimize.
5804         * tree-cfg.c (fold_cond_expr_cond): Likewise.
5805         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
5806         Likewise.
5807         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
5808         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
5809         * tree-ssa-loop-manip.c (create_iv): Likewise.
5810         * c-typeck.c (build_conditional_expr): Likewise.
5811         (build_binary_op): Likewise.
5812         * tree-vrp.c (vrp_expr_computes_nonzero): Call
5813         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
5814         (extract_range_from_unary_expr): Likewise.
5815         * simplify-rtx.c (simplify_const_relational_operation): Warn when
5816         assuming that signed overflow does not occur.
5817         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
5818         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
5819         (fold_defer_overflow_warnings): Declare.
5820         (fold_undefer_overflow_warnings): Declare.
5821         (fold_undefer_and_ignore_overflow_warnings): Declare.
5822         (fold_deferring_overflow_warnings_p): Declare.
5823         (tree_expr_nonzero_warnv_p): Declare.
5824         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
5825         of warning options.
5826         (Warning Options): Document -Wstrict-overflow.
5827         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
5828         (tree-ssa-ccp.o): Likewise.
5829         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
5830         (fold-const.o): Depend on intl.h.
5831
5832 2007-02-13  Ian Lance Taylor  <iant@google.com>
5833
5834         PR middle-end/30751
5835         * lower-subreg.c (resolve_simple_move): Decompose subregs in
5836         addresses.
5837
5838 2007-02-13  Stuart Hastings  <stuart@apple.com>
5839
5840         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
5841
5842 2007-02-13  Richard Henderson  <rth@redhat.com>
5843
5844         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
5845         handled_component_p before looking for the indirect_ref.
5846
5847 2007-02-13  Richard Henderson  <rth@redhat.com>
5848
5849         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
5850         remove flags clobber.
5851         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
5852         (bswaphi_lowpart): New.
5853         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
5854         remove TARGET_BSWAP test.  Delete expander of the same name.
5855
5856         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
5857         (expand_unop): Use them.
5858
5859 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
5860
5861         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
5862         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
5863         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
5864         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
5865         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
5866         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
5867         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
5868         assembler dialect choice from asm templates.
5869
5870 2007-02-12  Richard Henderson  <rth@redhat.com>
5871
5872         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
5873         (fixuns_trunc<SSEMODEF>si2): Use it.
5874         * config/i386/sse.md (vec_setv4sf_0): Export.
5875         * config/i386/i386.c (ix86_build_const_vector): Export.
5876         (ix86_split_convert_uns_si_sse): Rename from
5877         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
5878         * config/i386/i386-protos.h: Update.
5879
5880 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5881
5882         PR c/29521
5883         * c-typeck.c (c_finish_return): Improve warning message.
5884
5885 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5886
5887         * alias.c (find_symbolic_term): Delete unused function.
5888
5889 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
5890
5891         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
5892         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
5893         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
5894
5895 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
5896
5897         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
5898         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
5899         the function, temporarily point the debug interface to the null one.
5900
5901 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
5902
5903         * dwarf2out.c (round_up_to_align): New static function.
5904         (field_byte_offset): Use it to round the offset.
5905
5906 2007-02-12  Richard Henderson  <rth@redhat.com>
5907
5908         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
5909         (inswl_const): Export.
5910
5911 2007-02-12  Richard Henderson  <rth@redhat.com>
5912
5913         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
5914         result mode of the libcall, convert back to outmode.
5915
5916 2007-02-12  Roger Sayle  <roger@eyesopen.com>
5917
5918         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
5919         (bswapdi2): New define_expand to implement 32-bit implementation.
5920
5921 2007-02-12  Nick Clifton  <nickc@redhat.com>
5922
5923         * doc/invoke.texi (Overall Options): Document --help=.
5924         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
5925         (cc1_options): Pass --help= on to cc1.
5926         (display_help): Add description of --help=.
5927         (process_command): Add code to handle --help=.  Allow translated
5928         --help and --target-help switches to be passed on to compiler
5929         sub-process.
5930         (main): Remove unused if statement.
5931         * opts.c (columns): Remove.
5932         (LEFT_COLUMN): Define.
5933         (wrap_help): Add columns argument.
5934         (print_filtered_help): Change parameters to be an include bitmask,
5935         an exclude bitmask, an any bitmask and the column width.  Move the
5936         code to display the params list here.  Add code to display the
5937         status of options rather than their descriptions if the quiet flag
5938         is not active.
5939         (print_specific_help): Change parameters to be an include bitmask,
5940         an exclude bitmask and an any bitmask.  Move code to look up the
5941         column width here.  Decide upon the title for an options listing.
5942         (common_handle_options): Add code to handle --help=.  Adapt code
5943         for --help and --target-help to use the revised form of the
5944         print_specific_help function.
5945         (print_help): Delete.
5946         (print_param_help): Delete.
5947         (print_switch): Delete.
5948         * opts.h (cl_lang_count): Add prototype.
5949         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
5950         CL_MAX_OPTION_CLASS): New defines.
5951         * optc-gen.awk: Add construction of cl_lang_count.
5952         * c.opt: Add Warning attribute to warning options and Optimization
5953         attribute to optimization options.
5954         * common.opt: Likewise.
5955         Add --help=.
5956         Add -fhelp and -ftarget-help as aliases for the transformed --help
5957         and --target-help options.
5958         * opt-functions.awk: Add code to handle Warning and Optimization
5959         attributes.
5960
5961 2007-02-12  Richard Henderson  <rth@redhat.com>
5962
5963         * config/alpha/constraints.md: New file.
5964         * config/alpha/alpha.c: Include tm-constrs.h.
5965         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
5966         alpha_extra_constraint): Remove.
5967         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
5968         * config/alpha/alpha-protos.h: Update.
5969         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
5970         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
5971         (EXTRA_CONSTRAINT): Remove.
5972         * config/alpha/alpha.md: Include constraints.md.
5973         (adddi splitter): Use satisfies_constraint_*.
5974         * config/alpha/predicates.md (add_operand): Likewise.
5975         (sext_add_operand, addition_operation): Likewise.
5976
5977 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
5978
5979         PR tree-optimization/29145
5980         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
5981         in our handling of restrict qualified pointers.
5982
5983 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5984
5985         PR middle-end/7651
5986         * doc/invoke.texi (Wunused-value): Update description.
5987         (Wextra): Delete item.
5988         * opts.c (set_Wextra): Don't use the value of Wextra to set the
5989         value of Wunused-value.
5990         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
5991         (c_finish_stmt_expr): Don't check extra_warnings.
5992         (emit_side_effect_warnings): The caller is responsible to check
5993         warn_unused_value.
5994
5995 2007-02-11  Roger Sayle  <roger@eyesopen.com>
5996             Matt Thomas  <matt@3am-software.com>
5997
5998         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
5999
6000 2007-02-11  Roger Sayle  <roger@eyesopen.com>
6001
6002         * simplify-rtx.c (simplify_relational_operation_1): Optimize
6003         comparisons of POPCOUNT against zero.
6004         (simplify_const_relational_operation): Likewise.
6005
6006 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6007
6008         * doc/invoke.texi (Wextra): Delete outdated paragraph.
6009
6010 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6011
6012         * dwarf2out.c (root_type): Delete unused function.
6013
6014 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6015
6016         * genattrtab.c (contained_in_p): Delete unused function.
6017         (write_expr_attr_cache): Likewise.
6018
6019 2007-02-11  Jan Hubicka  <jh@suse.cz>
6020
6021         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
6022         previous patch.
6023
6024 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
6025
6026         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
6027         to add the REG_EQ* note.
6028         * see.c (see_merge_one_use_extension): Likewise.
6029         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
6030         turn REG_EQUAL notes into REG_EQUIV notes if the target
6031         register may have more than one set.
6032         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
6033         * gcse.c (try_replace_reg): Likewise.
6034         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
6035         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
6036         more than one REG_EQUIV note.
6037         * reload1.c (gen_reload): Use set_unique_reg_note.
6038
6039 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
6040
6041         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
6042         (ix86_builtin_conversion): New function.
6043
6044 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
6045
6046         PR target/29487
6047         * tree.h (DECL_REPLACEABLE_P): New macro.
6048         * except.c (set_nothrow_function_flags): Likewise.
6049
6050 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
6051             Ira Rosen  <irar@il.ibm.com>
6052             Dorit Nuzman  <dorit@il.ibm.com>
6053
6054         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
6055         * targhooks.c (default_builtin_vectorized_conversion): New.
6056         * targhooks.h (default_builtin_vectorized_function): New declaration.
6057         * target.h (struct vectorize): Add builtin_conversion field.
6058         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
6059         stmt_vec_info_type value.
6060         (vectorizable_conversion): New declaration.
6061         * tree-vect-analyze.c (vect_analyze_operations): Add
6062         vectorizable_conversion call.
6063         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
6064         * tree-vect-transform.c (vectorizable_conversion): New function.
6065         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
6066         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
6067         mode.
6068         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
6069         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
6070         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
6071         or ALTIVEC_BUILTIN_VCFSX.
6072
6073 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6074
6075         PR target/30634
6076         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
6077         CONST_DOUBLE and operand 0 is a hard register.
6078         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
6079         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
6080         is a hard floating-point register.
6081
6082 2007-02-10  Richard Henderson  <rth@redhat.com>
6083             Jakub Jelinek  <jakub@redhat.com>
6084             Alexandre Oliva  <aoliva@redhat.com>
6085
6086         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
6087         * builtin-types.def (BT_WORD): Make unsigned.
6088         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
6089         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
6090         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
6091         * c-decl.c (grokdeclarator): Don't error if !have_tls.
6092         * c-parser.c (c_parser_omp_threadprivate): Likewise.
6093         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
6094         emulated tls.
6095         * expr.c (emutls_var_address): New.
6096         (expand_expr_real_1): Expand emulated tls.
6097         (expand_expr_addr_expr_1): Likewise.
6098         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
6099         * output.h (emutls_finish): Declare.
6100         * toplev.c (compile_file): Call it.
6101         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
6102         address before wrapping in CONST.
6103         * varasm.c (emutls_htab, emutls_object_type): New.
6104         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
6105         (get_emutls_object_name, get_emutls_object_type): New.
6106         (get_emutls_init_templ_addr, emutls_decl): New.
6107         (emutls_common_1, emutls_finish): New.
6108         (assemble_variable): When emulating tls, swap decls; generate
6109         constructor for the emutls objects.
6110         (do_assemble_alias): When emulating tls, swap decl and target name.
6111         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
6112         for emulated tls.
6113         * varpool.c (decide_is_variable_needed): Look at force_output.
6114         Recurse for emulated tls.
6115         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
6116         with decide_is_variable_needed.
6117         * emutls.c: New file.
6118         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
6119         tls_object for real tls.
6120
6121 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
6122
6123         PR rtl-optimization/29599
6124         * reload1.c (eliminate_regs_in_insn): Take the destination
6125         mode into account when computing the offset.
6126
6127 2007-02-09  Stuart Hastings  <stuart@apple.com>
6128             Richard Henderson  <rth@redhat.com>
6129
6130         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6131         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
6132         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
6133         fixuns_truncdfhi2): New.
6134         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
6135         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
6136         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
6137         (floatunssidf2): Allow nonimmediate source.
6138         * gcc/config/i386/sse.md (movdi_to_sse): New.
6139         (vec_concatv2di): Drop '*'.
6140         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
6141         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6142         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
6143         New.
6144         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
6145         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
6146         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
6147         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
6148         (ix86_build_signbit_mask): Fix decl of v, refactor to call
6149         ix86_build_const_vector.
6150         (x86_emit_floatuns): Rewrite.
6151
6152 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6153
6154         * genautomata.c (longest_path_length): Delete unused function.
6155         (struct state): Delete unused longest_path_length.
6156         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
6157         (get_free_state): Delete unused.
6158
6159 2007-02-09  Jan Hubicka  <jh@suse.cz>
6160
6161         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
6162         * doc/invoke.texi (inline-unit-growth): Update default value.
6163
6164         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
6165         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
6166         (rebuild_cgraph_edges): Likewise.
6167         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
6168         (dump_cgraph_node): Dump frequencies.
6169         (cgraph_clone_edge): Add frequency scales.
6170         (cgraph_clone_node): Add freuqnecy.
6171         * cgraph.h (cgraph_edge): Add freuqnecy argument.
6172         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
6173         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
6174         * tree-pass.h (TODO_rebuild_frequencies): New constant.
6175         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
6176         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
6177         (save_inline_function_body): Likewise.
6178         * ipa-inline.c: inluce rtl.h
6179         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
6180         (cgraph_edge_badness): Use frequencies.
6181         (cgraph_decide_recursive_inlining): Update clonning.
6182         (cgraph_decide_inlining_of_small_function): Dump frequency.
6183         * predict.c (estimate_bb_frequencies): Export.
6184         * predict.h (estimate_bb_frequencies): Declare.
6185         * tree-inline.c (copy_bb): Watch overflows.
6186         (expand_call_inline): Update call of cgraph_create_edge.
6187         (optimize_inline_calls): Use TODO flags to update frequnecies.
6188         * passes.h: Include predict.h
6189         (init_optimization_passes): Move profile ahead.
6190         (execute_function_todo): Handle TODO_rebuild_frequencies.
6191
6192 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6193
6194         * config/alpha/alpha.c (emit_insxl): Force the first operand of
6195         the insbl or inswl pattern into a register.
6196
6197 2007-02-09  Roger Sayle  <roger@eyesopen.com>
6198
6199         * config/ia64/ia64.md (bswapdi2): New define_insn.
6200
6201 2007-02-09  Richard Henderson  <rth@redhat.com>
6202
6203         * config/i386/constraints.md (Ym): New constraint.
6204         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
6205         (movdi_1_rex64): Split sse and xmm general register moves from
6206         memory move alternatives.  Use conditional register constraints.
6207         (movsf_1, movdf_integer): Likewise.
6208         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
6209         (movdf_integer_rex64): New.
6210         (pushsf_rex64): Fix output constraints.
6211         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
6212         (sse2_stored): Likewise.
6213         (sse2_storeq_rex64): New.
6214         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
6215         amd and not generic.
6216         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
6217         for optimize_size.  Remove SF/DFmode hack.
6218
6219 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
6220
6221         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
6222         (bit_SSE4a): New.
6223
6224 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
6225             Richard Sandiford  <richard@codesourcery.com>
6226
6227         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
6228         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
6229         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
6230         m68k/t-mlib to tmake_file.
6231         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
6232         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
6233         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
6234         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
6235         variable is not empty, add t-$m68k_arch_family to tmake_file.
6236         Add t-mlibs to tmake_file.
6237         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
6238         * config/m68k/t-cf: New file.
6239         * config/m68k/t-m68k: Likewise.
6240         * config/m68k/t-mlibs: Likewise.
6241         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6242         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6243         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6244         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6245         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
6246         Delete.
6247         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
6248         (INSTALL_LIBGCC): Delete.
6249         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
6250         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6251         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6252         (M68K_MLIB_CPU): Define.
6253         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
6254         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
6255         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
6256
6257 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
6258             Richard Guenther  <rguenther@suse.de>
6259
6260         PR middle-end/23361
6261         * fold-const.c (fold_comparison): Handle obfuscated comparisons
6262         against INT_MIN/INT_MAX.
6263         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
6264         file if a loop is removed.
6265
6266 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
6267
6268         * calls.c (store_one_arg): Pass correct alignment to
6269         emit_push_insn for non-BLKmode values.
6270         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
6271         unaligned stack slot via a suitably aligned slot.
6272
6273 2007-02-08  DJ Delorie  <dj@redhat.com>
6274
6275         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
6276         warnings.
6277         (legal_subregs): Use unsigned char, make const.
6278         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
6279
6280 2007-02-08  Paul Brook  <paul@codesourcery.com>
6281
6282         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
6283         special interworking needed.
6284
6285 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
6286
6287         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
6288         conditional to __SSE2__.
6289         (Entries below should have been added to first ChangeLog
6290         entry for amdfam10 dated 2007-02-05)
6291         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
6292         defined.
6293         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
6294         defined.
6295         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
6296         defined.
6297
6298 2007-02-08  DJ Delorie  <dj@redhat.com>
6299
6300         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
6301         * config/m32c/m32c.c (legal_subregs): New.
6302         (m32c_illegal_subreg_p): New.
6303         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
6304         unsupported subregs of hard regs.
6305
6306 2007-02-08  Jan Hubicka  <jh@suse.cz>
6307
6308         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
6309         the same one; always update histograms.
6310
6311 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6312
6313         * passes.c (init_optimization_passes): Tidy comment.
6314
6315 2007-02-08  Roger Sayle  <roger@eyesopen.com>
6316
6317         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
6318         strip zero_extend, bswap and rotates from POCOUNT's argument.
6319         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
6320         zero_extend and rotates from PARITY's argument.
6321         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
6322         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
6323         of an integer constant at compile-time.
6324
6325 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
6326
6327         PR 30562
6328         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
6329         Update all users.
6330         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
6331         users.
6332         (init_alias_info):
6333         * tree-ssa-live.c (remove_unused_locals): Do not remove
6334         TREE_ADDRESSABLE variables.
6335         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
6336         * tree-ssa-operands.c (add_virtual_operand): Remove argument
6337         FOR_CLOBBER.  Update all users.
6338         If VAR has an associated alias set, add a virtual operand for
6339         it if no alias is found to conflict with the memory reference.
6340
6341 2007-02-07  Jan Hubicka  <jh@suse.cz>
6342             Robert Kidd <rkidd@crhc.uiuc.edu>
6343
6344         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
6345
6346 2007-02-07  Ian Lance Taylor  <iant@google.com>
6347
6348         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
6349
6350 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6351
6352         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
6353         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
6354         tablejumpdi, movsi_to_cr_one): Remove constraints from
6355         define_expand's match_operands.
6356
6357 2007-02-07  Roger Sayle  <roger@eyesopen.com>
6358
6359         * global.c (compute_regsets): Move declatation of "i" inside of
6360         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
6361
6362 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
6363
6364         PR c++/30703
6365         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
6366         of INDIRECT_REF <RESULT_DECL>.
6367
6368         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
6369
6370 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
6371             Kaz Kojima  <kkojima@gcc.gnu.org>
6372
6373         PR target/29746
6374         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
6375         properly.
6376         (sh_initialize_trampoline): Add parentheses to avoid a warning.
6377
6378 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
6379
6380         * doc/loop.texi: Document possibility not to perform disambiguation
6381         of loops with multiple latches.
6382         * cfgloopmanip.c (alp_enum_p): Removed.
6383         (add_loop): Handle subloops.  Use get_loop_body_with_size.
6384         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
6385         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
6386         the new forwarder block.
6387         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
6388         Handle the case latch is NULL.
6389         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
6390         when marking loop exits.
6391         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
6392         be modified.
6393         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
6394         disambiguate_loops_with_multiple_latches.
6395         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
6396         before fix_loop_structure.
6397         * cfgloop.c: Include pointer-set.h and output.h.
6398         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
6399         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
6400         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
6401         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
6402         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
6403         disambiguate_multiple_latches, get_loop_body_with_size,
6404         disambiguate_loops_with_multiple_latches): New functions.
6405         (flow_loop_dump): Dump multiple latch edges.
6406         (flow_loop_nodes_find): Handle loops with multiple latches.
6407         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
6408         (glb_enum_p): Modified.
6409         (get_loop_body): Use get_loop_body_with_size.
6410         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
6411         (AVOID_CFG_MODIFICATIONS): New constant.
6412         (disambiguate_loops_with_multiple_latches, add_loop,
6413         get_loop_body_with_size): Declare.
6414         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
6415
6416 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
6417
6418         PR inline-asm/28686
6419         * global.c (compute_regsets): New function.
6420         (global_alloc): Refactored ELIMINABLE_REGSET
6421         and NO_GLOBAL_ALLOC_REGS computation out.
6422         (rest_of_handle_global_alloc): Call compute_regsets()
6423         for non-optimizing case.
6424
6425 2007-02-06  Richard Henderson  <rth@redhat.com>
6426
6427         * config/i386/constraints.md (Y2): Rename from Y.
6428         (Yi): New constraint.
6429         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
6430         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
6431         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
6432         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
6433         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
6434         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
6435         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
6436         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
6437         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
6438         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
6439         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
6440         vec_extractv2si_1): Change Y constraints to Y2.
6441         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
6442         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
6443         Change Y constraints to Y2.
6444         (sse2_loadld): Change Y constraints to x.
6445
6446 2007-02-06  Roger Sayle  <roger@eyesopen.com>
6447
6448         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
6449         (parity<mode>2): New define_expand using rs6000_emit_parity.
6450         * config/rs6000/rs6000.c (rs6000_emit_popcount,
6451         rs6000_emit_parity): New functions.
6452         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
6453         rs6000_emit_parity): Prototype here.
6454
6455 2007-02-06  Ian Lance Taylor  <iant@google.com>
6456
6457         * lower-subreg.c (simple_move_operand): Reject CONST.
6458         (resolve_clobber): Call validate_change rather than directly
6459         assigning to XEXP (pat, 0).
6460
6461 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6462
6463         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
6464         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
6465         (tree-cfg.o): Remove hashtab.h dependency.
6466
6467         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
6468         (struct ivopts_data): Change niters to pointer_map_t.
6469         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
6470         (niter_for_exit): Create pointer_map on demand.  Change for
6471         pointer_map API.
6472         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
6473         (free_loop_data): Destroy data->niters if created and reset field.
6474         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
6475         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
6476
6477         * tree-ssa-reassoc.c: Include pointer-set.h.
6478         (bb_rank): Change to long *.
6479         (operand_rank): Change to pointer_map_t.
6480         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
6481         (insert_operand_rank): Accept long.
6482         (operand_entry_hash, operand_entry_eq): Remove.
6483         (get_rank): Return long.  Adjust for changes above.
6484         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
6485         and operand_rank.
6486         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
6487
6488         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
6489         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
6490         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
6491         is not NULL.
6492         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
6493         directly since it cannot be NULL.
6494         (get_vi_for_tree): Rewrite for pointer_map API.
6495         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
6496         (init_alias_vars): Create vi_for_tree as pointer_map.
6497         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
6498
6499         * tree-cfg.c: Don't include hashtab.h.
6500         (edge_to_cases): Declare as pointer_map.
6501         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
6502         Delete.
6503         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
6504         (start_recording_case_labels): Create edge_to_cases as pointer_map.
6505         (end_recoding_case_labels): Cleanup edge_to_cases manually before
6506         destroying it.
6507         (record_switch_edge): Delete.
6508         (get_cases_for_edge): Adjust for pointer_map API, inline
6509         record_switch_edge (rewritten for new API), remove goto.
6510
6511 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
6512
6513         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
6514         * tree-nested.c: Include pointer-set.h.
6515         (var_map_elt, var_map_eq, var_map_hash): Delete.
6516         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
6517         to pointer_map_t's.
6518         (nesting_info_bitmap_obstack): New.
6519         (lookup_field_for_decl): Adjust for pointer_map API.
6520         (lookup_tramp_for_decl): Adjust for pointer_map API.
6521         (get_nonlocal_debug_decl): Adjust for pointer_map API.
6522         (get_local_debug_decl): Adjust for pointer_map API.
6523         (convert_nl_goto_reference): Adjust for pointer_map API.
6524         (convert_nl_goto_receiver): Adjust for pointer_map API.
6525         (create_nesting_tree): Create outside GGC space.  Create bitmap on
6526         the new obstack.  Create field_map and var_map as pointer_maps.
6527         (free_nesting_tree): Adjust for changes to create_nesting_tree.
6528         (root): Delete.
6529         (lower_nested_functions): Move root here, no need to NULL it.
6530         Initialize and release the obstack.
6531
6532 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
6533
6534         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
6535         Remove prototypes and make them non-static.
6536         (struct tree_int_map): Remove.
6537         * tree.h (struct tree_int_map): Move here, turning TO into an
6538         unsigned int.
6539         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
6540
6541         * tree.h (TREE_COMPLEXITY): Remove.
6542         (struct tree_exp): Remove complexity field.
6543         * tree.c (build1_stat): Don't set it.
6544
6545 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
6546             Victor Kaplansky  <victork@il.ibm.com>
6547
6548         * tree-vectorizer.c (vect_is_simple_use): Support induction.
6549         (vect_is_simple_reduction): Support reduction with induction as
6550         one of the operands.
6551         (vect_is_simple_iv_evolution): Fix formatting.
6552         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
6553         formatting.  Don't mark induction phis for vectorization.
6554         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
6555         * tree-vect-transform.c (get_initial_def_for_induction): New function.
6556         (vect_get_vec_def_for_operand): Support induction.
6557         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
6558         induction case.
6559         (vectorizable_reduction): Support reduction with induction as one of
6560         the operands.
6561         (vectorizable_type_demotion): Use def-type of stmt argument rather
6562         than dummy def-type.
6563
6564         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
6565         flag_tree_scev_cprop.
6566         * common.opt (tree-scev-cprop): New flag.
6567
6568         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
6569         call to vect_get_new_vect_var.
6570
6571 2007-02-06  Ira Rosen  <irar@il.ibm.com>
6572
6573         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
6574         vectype is not NULL.
6575         (vect_pattern_recog_1): Likewise.
6576
6577 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6578
6579         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
6580         (fold_negate_expr): Likewise.
6581
6582 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
6583
6584         PR debug/30189
6585         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
6586         even if cv-qualification is the same.
6587
6588 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
6589
6590         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
6591         __enable_execute_stack on completion.
6592
6593 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6594
6595         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
6596         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
6597         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
6598         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
6599         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
6600         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
6601         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
6602         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
6603
6604 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6605
6606         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
6607         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
6608         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
6609         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
6610         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
6611         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
6612         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
6613         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
6614         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
6615         umuldi3_highpart_rex64, umulsi3_highpart_insn,
6616         umulsi3_highpart_zext, smuldi3_highpart_rex64,
6617         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
6618         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
6619         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
6620         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
6621         sqrtextenddfxf2_i387): Added amdfam10_decode.
6622
6623         * config/i386/athlon.md (athlon_idirect_amdfam10,
6624         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
6625         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
6626         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
6627         athlon_ivector_store_amdfam10): New define_insn_reservation.
6628         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
6629         amdfam10.
6630
6631 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6632
6633         * config/i386/athlon.md (athlon_call_amdfam10,
6634         athlon_pop_amdfam10, athlon_lea_amdfam10): New
6635         define_insn_reservation.
6636         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
6637         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
6638         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
6639
6640 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6641
6642         * config/i386/athlon.md (athlon_sseld_amdfam10,
6643         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
6644         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
6645
6646 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6647
6648         * config/i386/athlon.md (athlon_sseins_amdfam10): New
6649         define_insn_reservation.
6650         * config/i386/i386.md (sseins): Added sseins to define_attr type
6651         and define_attr unit.
6652         * config/i386/sse.md: Set type attribute to sseins for insertq
6653         and insertqi.
6654
6655 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6656
6657         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
6658         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
6659         ssecomi_load_amdfam10, ssecomi_amdfam10,
6660         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
6661         define_insn_reservation.
6662         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
6663
6664 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6665
6666         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
6667         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
6668         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
6669         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
6670         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
6671         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
6672         define_insn_reservation.
6673
6674         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
6675         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
6676         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
6677         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
6678         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
6679
6680 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6681
6682         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
6683         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
6684         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
6685         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
6686         athlon_ssemul_load_k8): Added amdfam10.
6687
6688 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6689
6690         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
6691         (x86_sse_unaligned_move_optimal): New variable.
6692
6693         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
6694         m_AMDFAM10.
6695         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
6696         for unaligned vector SSE double/single precision loads for AMDFAM10.
6697
6698 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6699
6700         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
6701         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
6702         Define TARGET_CPU_DEFAULT_amdfam10.
6703         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
6704         (processor_type): Add PROCESSOR_AMDFAM10.
6705
6706         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
6707         processor_type in config/i386/i386.h.
6708         Enable imul peepholes for TARGET_AMDFAM10.
6709
6710         * config.gcc: Add support for --with-cpu option for amdfam10.
6711
6712         * config/i386/i386.c (amdfam10_cost): New variable.
6713         (m_AMDFAM10): New macro.
6714         (m_ATHLON_K8_AMDFAM10): New macro.
6715         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
6716         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
6717         x86_promote_QImode, x86_integer_DFmode_moves,
6718         x86_partial_reg_dependency, x86_memory_mismatch_stall,
6719         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
6720         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
6721         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
6722         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
6723         Enable/disable for amdfam10.
6724         (override_options): Add amdfam10_cost to processor_target_table.
6725         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
6726         processor_alias_table.
6727         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
6728         (ix86_adjust_cost): Add code for amdfam10.
6729
6730 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
6731
6732         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
6733         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
6734         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
6735         * config/i386/i386.h: Add builtin definition for SSE4A.
6736         * config/i386/i386.md: Add support for ABM instructions
6737         (popcnt and lzcnt).
6738         * config/i386/sse.md: Add support for SSE4A instructions
6739         (movntss, movntsd, extrq, insertq).
6740         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
6741         Add -march=amdfam10 flag.
6742         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
6743         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
6744         and amdfam10.
6745         * doc/extend.texi: Add documentation for SSE4A builtins.
6746
6747 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
6748
6749         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
6750
6751 2007-02-05  Richard Guenther  <rguenther@suse.de>
6752
6753         * tree-vectorizer.h (vectorizable_function): Add argument type
6754         argument, change return type.
6755         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
6756         * tree-vect-transform.c (vectorizable_function): Handle extra
6757         argument, return vectorized function decl.
6758         (build_vectorized_function_call): Remove.
6759         (vectorizable_call): Handle calls with result and argument types
6760         differing.  Handle loop vectorization factor correctly.
6761         * targhooks.c (default_builtin_vectorized_function): Adjust for
6762         extra argument.
6763         * targhooks.h (default_builtin_vectorized_function): Likewise.
6764         * target.h (builtin_vectorized_function): Add argument type
6765         argument.
6766         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
6767         extra argument, allow vectorizing of lrintf.
6768         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
6769         documentation of target hook.
6770
6771 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
6772
6773         PR target/30665
6774         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
6775         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
6776         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
6777
6778 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6779
6780         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
6781         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
6782         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
6783         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
6784         before canonicalizing sincos to cexpi.
6785         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
6786
6787 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6788
6789         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
6790         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
6791         (alpha_init_builtins): Use alpha_add_builtins to process tables.
6792
6793 2007-02-05  Roger Sayle  <roger@eyesopen.com>
6794
6795         * mips-tfile.c (initialize_init_file): Correct endianness test.
6796
6797 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
6798
6799         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
6800         the 'y' constraint.
6801
6802 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
6803
6804         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
6805         saves in a PARALLEL before the register assignments.
6806
6807 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
6808
6809         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
6810         DWARF_FRAME_RETURN_COLUMN to be a general register.
6811         * dwarf2out.c (init_return_column_size): New function, split from...
6812         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
6813         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
6814         to be nongeneral registers.
6815         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
6816         integer registers.
6817         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
6818         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
6819
6820 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
6821
6822         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
6823
6824 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
6825
6826         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
6827         (remove_path): Use can_remove_branch_p and remove_branch instead
6828         of loop_delete_branch_edge.
6829         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
6830         (tree_transform_and_unroll_loop): Remove dead branches immediately.
6831         Update profile using scale_dominated_blocks_in_loop.
6832         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
6833         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
6834         (can_remove_branch_p, remove_branch): Declare.
6835         * tree-cfg.c (tree_can_remove_branch_p): New function.
6836         (tree_cfg_hooks): Add tree_can_remove_branch_p.
6837         * cfgrtl.c (rtl_can_remove_branch_p): New function.
6838         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
6839
6840 2007-02-05  Jan Hubicka  <jh@suse.cz>
6841
6842         PR middle-end/30696
6843         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
6844         nodes in cgraph, don't remove offline copy of the function.
6845
6846 2007-02-04  Jan Hubicka  <jh@suse.cz>
6847
6848         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
6849         vectors might cause maybe_lookup_element_for_expr to be called
6850         on non-sra-candidate.
6851
6852 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6853
6854         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
6855         config/bfin/bfin.md, config/bfin/predicates.md: Follow
6856         spelling conventions.
6857
6858 2007-02-04  Richard Guenther  <rguenther@suse.de>
6859
6860         PR middle-end/30636
6861         * fold-const.c (try_move_mult_to_index): Make sure to not
6862         overflow one dimension of a multi-dimensional array access.
6863
6864 2007-02-04  Jan Hubicka  <jh@suse.cz>
6865
6866         * passes.c (init_optimization_passes): Reindent.
6867
6868 2007-02-04  Jan Hubicka  <jh@suse.cz>
6869             Eric Botcazou  <ebotcazou@adacore.com>
6870
6871         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
6872         (execute_fixup_cfg): Break out the abnormal goto code.
6873         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
6874         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
6875         (optimize_inline_calls): Call make_nonlocal_label_edges.
6876
6877 2007-02-04  Jan Hubicka  <jh@suse.cz>
6878
6879         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
6880         true when something was changed.
6881         (rename_ssa_copies): When something was changed, do
6882         TODO_remove_unused_locals.
6883         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
6884         add TODO_remove_unused_locals when instruction was removed.
6885
6886 2007-02-04  Jan Hubicka  <jh@suse.cz>
6887
6888         * ipa-inline.c (try_inline): Improve debug output; work on already
6889         inline edges too.
6890         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
6891         call try_inline for already inlined edges too when flattening;
6892         inline also functions that make callee growth but overall unit size
6893         reduce.
6894
6895 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6896
6897         * config/m32c/bitops.md, config/m32c/jump.md,
6898         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
6899         config/m32r/m32r.h, config/m32r/m32r.md,
6900         config/m32r/predicates.md, config/m68hc11/larith.asm,
6901         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
6902         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
6903         config/mips/mips-protos.h, config/mips/mips.c,
6904         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
6905         config/mn10300/mn10300.h, config/mn10300/predicates.md,
6906         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
6907         spelling conventions.
6908
6909         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
6910         Follow spelling conventions.
6911
6912 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
6913
6914         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
6915         warn about C++0x compatibility.
6916
6917 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
6918
6919         * config/h8300/h8300.c, config/h8300/h8300.h,
6920         config/h8300/h8300.md: Follow spelling conventions.
6921
6922 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
6923
6924         PR middle-end/30667
6925         * combine.c (try_combine): Do not substitute source operand
6926         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
6927
6928 2007-02-03  Jan Hubicka  <jh@suse.cz>
6929
6930         PR gcov-profile/30650
6931         * value-prof.c (stringop_block_profile): Fix handling of size counter;
6932         do not divide by zero for never executed counters.
6933         (tree_find_values_to_profile): Fix counters.
6934         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
6935
6936 2007-02-03  Ian Lance Taylor  <iant@google.com>
6937
6938         * lower-subreg.c (simple_move_operand): New static function,
6939         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
6940         operands.
6941         (simple_move): Call simple_move_operand.
6942         (find_decomposable_subregs): Add special handling of MEMs.
6943         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
6944         meaning of return value.  If we see a hard register, test whether
6945         it can store a word_mode value.  Change all callers.
6946
6947 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6948
6949         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
6950         ftrapv insns and expanders.
6951         (subdi3): Change define_expand operand 1 to arith11_operand, and
6952         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
6953         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
6954         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
6955         respectively.
6956
6957         PR middle-end/30174
6958         * varasm.c (notice_global_symbol): Treat global objects as weak when
6959         flag_shlib is true.
6960
6961 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6962
6963         * emit-rtl.c (dconstpi): Delete.
6964         (dconstsqrt2): New.
6965         (init_emit_once): Delete dconstpi and init dconstsqrt2.
6966         * real.h (dconstpi): Delete.
6967         (dconstsqrt2): New.
6968         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
6969         (fold_builtin_hypot): Likewise.
6970
6971 2007-02-03  Tom Tromey  <tromey@redhat.com>
6972
6973         PR driver/30246
6974         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
6975         -gcoff3, -gxcoff3, -gvms3 implies -dD.
6976
6977 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
6978
6979         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
6980         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
6981         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
6982         config/rs6000/cell.md, config/rs6000/darwin.h,
6983         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
6984         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
6985         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
6986         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
6987         typos.  Follow spelling conventions.
6988         * doc/invoke.texi: Follow spelling conventions.
6989
6990 2007-02-03  Roger Sayle  <roger@eyesopen.com>
6991
6992         * simplify-rtx.c (simplify_relational_operation_1): Implement some
6993         canonicalization transformations that attempt to simplify integer
6994         constant comparisons to become comparisons against zero.
6995
6996 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6997
6998         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
6999         fabs(x)*sqrt(2).
7000         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
7001         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
7002
7003 2007-02-02  Mike Stump  <mrs@apple.com>
7004
7005         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
7006         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
7007         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
7008         generate a branch island.
7009
7010 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
7011
7012         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
7013         (xtensa_legitimate_address_p): New.
7014         (xtensa_legitimize_address): New.
7015         (xtensa_output_addr_const_extra): New.
7016         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
7017         (BASE_REG_P): New.
7018         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
7019         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
7020         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
7021         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
7022         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
7023         (xtensa_legitimize_address): New.
7024         (xtensa_output_addr_const_extra): New.
7025
7026 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
7027
7028         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
7029
7030 2007-02-02  Ian Lance Taylor  <iant@google.com>
7031
7032         * expmed.c (expand_divmod): Add comment.
7033
7034 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
7035
7036         * emit-rtl.c (renumber_insns): Remove.
7037         * flags.h: Remove the extern for flag_renumber_insns.
7038         * rtl.h: Remove the prototype for renumber_insns.
7039         * toplev.c (flag_renumber_insns): Remove.
7040
7041 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
7042
7043         Revert for x86 darwin:
7044         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
7045
7046         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
7047         code before the following patch under TARGET_MACHO.
7048         (ix86_function_value_regno_p): Likewise.
7049
7050 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7051
7052         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
7053         COMPLEX_EXPR.
7054
7055 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7056
7057         PR target/29682
7058         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
7059         general or fp registers.  Add comments.
7060         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
7061
7062 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
7063
7064         * pointer-set.c (insert_aux): Only return insertion slot.
7065         (pointer_set_insert): Adjust.
7066         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
7067         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
7068         pointer_map_traverse): New.
7069         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
7070         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
7071         pointer_map_contains, pointer_map_traverse): Declare.
7072
7073 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
7074
7075         PR middle-end/30473
7076         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
7077         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
7078
7079 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
7080
7081         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
7082
7083         (struct _dep): New type.
7084         (dep_t): New typedef.
7085         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
7086         (DEP_STATUS): New access macro.  The macro with the same name was
7087         renamed to DEP_LINK_STATUS.
7088         (dep_init): Declare function
7089
7090         (struct _dep_link): New type.
7091         (dep_link_t): New typedef.
7092         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
7093         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
7094         (DEP_LINK_STATUS): New macro.
7095         (debug_dep_links): New debug function.
7096
7097         (struct _deps_list): New type.
7098         (deps_list_t): New typedef.
7099         (DEPS_LIST_FIRST): New access macro.
7100         (FOR_EACH_DEP_LINK): New cycle macro.
7101         (create_deps_list, free_deps_list, delete_deps_list): Declare
7102         functions.
7103         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
7104         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
7105         (copy_deps_list_change_con): Ditto.
7106
7107         (move_dep_link): Declare function.
7108
7109         (struct _dep_node): New type.
7110         (dep_node_t): New typedef.
7111         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
7112
7113         (struct haifa_insn_data.back_deps): New field to hold backward
7114         dependencies of the insn.
7115         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
7116         to deps_list_t.
7117         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
7118         Change its type to deps_list_t.
7119         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
7120         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
7121         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
7122
7123         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
7124
7125         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
7126
7127         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
7128         all callers.
7129         (dep_cost): Declare.
7130
7131         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
7132         (ds_to_dk, dk_to_ds): New functions.
7133
7134         (init_dep_1): New static function.
7135         (init_dep): New function.
7136         (copy_dep): New static function.
7137
7138         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
7139         functions.
7140         (detach_dep_link): New static function.
7141         (move_dep_link): New function.
7142
7143         (dep_links_consistent_p, dump_dep_links): New static functions.
7144         (debug_dep_links): New debugging function.
7145
7146         (deps_obstack, dl_obstack, dn_obstack): New static variables.
7147
7148         (alloc_deps_list, init_deps_list): New static functions.
7149         (create_deps_list): New function.
7150         (clear_deps_list): New static function.
7151         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
7152         (deps_list_consistent_p, dump_deps_list): New static functions.
7153         (debug_deps_list): New function.
7154         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
7155         functions.
7156         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
7157
7158         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
7159         use new scheduler dependencies lists.
7160         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
7161         (sched_analyze): Ditto.  Initialize dependencies lists.
7162         (add_forw_dep, compute_forward_dependences): Update to use new
7163         scheduler dependencies lists.
7164
7165         (init_dependency_caches): Init deps_obstack.
7166         (free_dependency_caches): Free deps_obstack.
7167
7168         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
7169         new scheduler dependencies lists.
7170         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
7171         (add_back_forw_dep, delete_back_forw_dep): Ditto.
7172
7173         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
7174         Update to use new scheduler dependencies lists.
7175         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
7176         (debug_dependencies): Ditto.
7177         (schedule_region): Update comments.
7178
7179         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
7180         scheduler dependencies lists.
7181         (schedule_ebb): Update comments.
7182
7183         * rtl.def (DEPS_LIST): Remove.
7184
7185         * lists.c (unused_deps_list): Remove.
7186         (free_list): Update assertions.
7187
7188         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
7189         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7190
7191         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
7192         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
7193
7194         * haifa-sched.c (comments): Update.
7195         (insn_cost1): Remove.  Inline the code into insn_cost ().
7196         (insn_cost): Update to use new scheduler dependencies lists.  Move
7197         processing of the dependency cost to dep_cost ().
7198         (dep_cost): New function.  Use it instead of insn_cost () when
7199         evaluating cost of the dependency.  Use compatible interface to
7200         interact with the target.
7201         (priority): Update to use new scheduler dependencies lists.
7202         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
7203         with greater number of insns that depend on the insn.
7204         (schedule_insn): Update to use new scheduler dependencies lists.  Add
7205         code to free backward dependencies lists.  Inline and optimize code
7206         from resolve_dep () - see PR28071.
7207         (ok_for_early_queue_removal): Update to use new scheduler dependencies
7208         lists.  Update call to targetm.sched.is_costly_dependence hook.
7209
7210         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
7211         scheduler dependencies lists.
7212
7213         (resolve_dep): Remove.  Move the logic to schedule_insn ().
7214         (init_h_i_d): Initialize dependencies lists.
7215
7216         (process_insn_depend_be_in_spec): Rename to
7217         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
7218         dependencies lists.
7219         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
7220         Update to use new scheduler dependencies lists.
7221         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
7222
7223         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
7224         new scheduler dependencies lists.
7225         (build_intra_loop_deps): Ditto.
7226
7227         * target.h (struct _dep): Declare to use in
7228         gcc_target.sched.is_costly_dependence.
7229         (struct gcc_target.sched.adjust_cost): Fix typo.
7230         (struct gcc_target.sched.is_costly_dependence): Change signature to use
7231         single dep_t parameter instead of an equivalent triad.
7232         (struct gcc_target.sched.adjust_cost_2): Remove.
7233
7234         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
7235
7236         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
7237
7238         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
7239         documentation.
7240         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
7241
7242         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
7243         (REG_DEP_TRUE): Document.
7244
7245         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
7246         Change signature to correspond to the targetm.sched.adjust_cost hook.
7247         Update use in TARGET_SCHED_ADJUST_COST_2.
7248         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
7249         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
7250         new scheduler dependencies lists.
7251         (ia64_gen_check): Ditto.
7252
7253         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
7254         dependencies lists.
7255
7256         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
7257         signature to correspond to the targetm.sched.is_costly_dependence hook.
7258         (is_costly_group): Update to use new scheduler dependencies lists.
7259
7260         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
7261         instead of INSN_COST () macro.
7262
7263 2007-02-01  Ian Lance Taylor  <iant@google.com>
7264
7265         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
7266
7267 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
7268
7269         * pa.md (tp_load): Correct mfctl instruction syntax.
7270
7271 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
7272
7273         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
7274         altivec_padding_size calculation on AIX.  Improve comment, add
7275         assert to verify that it's right.
7276
7277         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
7278         64-bit.
7279
7280 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
7281
7282         PR inline-asm/28686
7283         * global.c (global_alloc): Add mising initialization of
7284         ELIMINABLE_REGSET.
7285
7286 2007-02-01  Roger Sayle  <roger@eyesopen.com>
7287
7288         * alias.c (init_alias_analysis): Correct whitespace.
7289         * bb-reorder.c (fix_edges_for_rarely_executed_code,
7290         partition_hot_cold_basic_blocks): Likewise.
7291         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
7292         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
7293         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
7294         fold_builtin_snprintf_chk, fold_builtin_printf,
7295         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
7296         do_mpfr_arg3, do_mpfr_sincos): Likewise.
7297         * cfgcleanup.c (cleanup_cfg): Likewise.
7298         * cfgexpand.c (tree_expand_cfg): Likewise.
7299         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
7300         * function.c (get_next_funcdef_no): Likewise.
7301         * gengtype.c (main): Likewise.
7302         * genmodes.c (main): Likewise.
7303         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
7304         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
7305         * ifcvt.c (noce_emit_move_insn): Likewise.
7306         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
7307         Likewise.
7308         * stor-layout.c (get_best_mode): Likewise.
7309         * tree-ssa-loop-niter.c (get_val_for): Likewise.
7310         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
7311         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
7312         perform_var_substitution, solve_graph): Likewise.
7313         * tree-vrp.c (vrp_finalize): Likewise.
7314
7315 2007-02-01  Ian Lance Taylor  <iant@google.com>
7316
7317         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
7318         high part of a paradoxical subreg, return a constant zero.
7319
7320 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
7321
7322         * toplev.c (lang_dependent_init): Call init_set_costs.
7323         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
7324
7325 2007-02-01  Richard Guenther  <rguenther@suse.de>
7326
7327         PR middle-end/30656
7328         * fold-const.c (fold_negate_expr): Allow negating a
7329         constant if overflow does not change.
7330
7331 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7332
7333         * doc/c-tree.texi (Expression trees): Improve markup.
7334         * doc/tm.texi (Register Classes, Addressing Modes)
7335         (Floating Point): Fix spacing after abbreviations.  Fix some
7336         typos.
7337
7338 2007-02-01  Ben Elliston  <bje@au.ibm.com>
7339
7340         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
7341         * doc/contrib.texi: Likewise.
7342         * doc/install.texi: Likewise.
7343
7344 2007-01-31  Richard Henderson  <rth@redhat.com>
7345             Ian Lance Taylor  <iant@google.com>
7346
7347         * lower-subreg.c: New file.
7348         * rtl.def (CONCATN): Define.
7349         * passes.c (init_optimization_passes): Add pass_lower_subreg and
7350         pass_lower_subreg2.
7351         * emit-rtl.c (update_reg_offset): New static function, broken out
7352         of gen_rtx_REG_offset.
7353         (gen_rtx_REG_offset): Call update_reg_offset.
7354         (gen_reg_rtx_offset): New function.
7355         * regclass.c: Revert patch of 2006-03-05, restoring
7356         reg_scan_update.
7357         (clear_reg_info_regno): New function.
7358         * dwarf2out.c (concatn_loc_descriptor): New static function.
7359         (loc_descriptor): Handle CONCATN.
7360         * common.opt (fsplit_wide_types): New option.
7361         * opts.c (decode_options): Set flag_split_wide_types when
7362         optimizing.
7363         * timevar.def (TV_LOWER_SUBREG): Define.
7364         * rtl.h (gen_reg_rtx_offset): Declare.
7365         (reg_scan_update): Declare.
7366         * regs.h (clear_reg_info_regno): Declare.
7367         * tree-pass.h (pass_lower_subreg): Declare.
7368         (pass_lower_subreg2): Declare.
7369         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
7370         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
7371         -fsplit-wide-types.
7372         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
7373         * Makefile.in (OBJS-common): Add lower-subreg.o.
7374         (lower-subreg.o): New target.
7375
7376 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7377
7378         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
7379
7380 2007-01-31  Anatoly Sokolov <aesok@post.ru>
7381
7382         PR target/19087
7383         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
7384
7385 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7386
7387         PR middle-end/29335
7388         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
7389
7390 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
7391
7392         * cfgloop.h: Include vec-prim.h.
7393         (enum li_flags): Remove LI_ONLY_OLD.
7394         (loop_iterator): Changed.
7395         (fel_next, fel_init): Iterate over loop tree.
7396         (FOR_EACH_LOOP_BREAK): New macro.
7397         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
7398         FOR_EACH_LOOP.
7399         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
7400         * modulo-sched.c (sms_schedule): Ditto.
7401         * tree-vectorizer.c (vectorize_loops): Ditto.
7402         * doc/loop.texi: Update information on loop numbering and behavior of
7403         FOR_EACH_LOOP wrto new loops.
7404         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
7405         add_to_evolution_1): Test nestedness of loops instead of comparing
7406         their numbers.
7407         * tree-chrec.c (chrec_fold_plus_poly_poly,
7408         chrec_fold_multiply_poly_poly, chrec_evaluate,
7409         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
7410         reset_evolution_in_loop): Ditto.
7411         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
7412
7413 2007-01-31  Dirk Mueller  <dmueller@suse.de>
7414
7415         * c-common.c (warn_about_parentheses): Separate warning about
7416         un-parenthized sequence of comparison operators from the one
7417         which is supposed to warn about x <= y <= z.
7418
7419 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
7420
7421         * optabs.h (enum optab_index): Add new OTI_isinf.
7422         (isinf_optab): Define corresponding macro.
7423         * optabs.c (init_optabs): Initialize isinf_optab.
7424         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
7425         patterns.
7426         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
7427         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
7428         using isinf_optab.
7429         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
7430         expand_builtin_interclass_mathfn.
7431         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
7432         * config/i386/i386.md (UNSPEC_FXAM): New constant.
7433         (fxam<mode>2_i387): New insn pattern.
7434         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
7435         built-in functions as x87 inline asm.
7436
7437 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7438
7439         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
7440
7441 2007-01-30  Eric Christopher  <echristo@apple.com>
7442
7443         * config.gcc: Add geode.
7444
7445 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
7446
7447         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
7448         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
7449         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
7450         value-prof.c: Fix comment typos.
7451
7452 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7453
7454         PR c++/24745
7455         * doc/invoke.texi (Wpointer-arith): Document warning.
7456
7457 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
7458
7459         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
7460         the list of discrepancies from the draft TR.
7461
7462 2007-01-30  Dirk Mueller  <dmueller@suse.de>
7463
7464         PR c++/30601
7465         * doc/invoke.texi (-Wreturn-type): Update description to
7466         match new behavior.
7467
7468 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
7469
7470         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
7471
7472 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
7473
7474         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
7475         to handle optabs that operate on floating point input argument and
7476         output to integer output.
7477         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
7478         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
7479         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
7480         expand_builtin_interclass_mathfn ().
7481         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
7482         (ilogbsi2): Remove.
7483         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
7484         ilogbl built-in functions as x87 intrinsics.
7485
7486 2007-01-30  Richard Guenther  <rguenther@suse.de>
7487
7488         PR middle-end/27657
7489         * dwarf2out.c (reference_to_unused): Query varpool if the
7490         variable was output.
7491
7492 2007-01-30  Richard Guenther  <rguenther@suse.de>
7493
7494         PR middle-end/30313
7495         * passes.c (execute_one_pass): Reset in_gimple_form to not
7496         confuse non-unit-at-a-time mode.
7497
7498 2007-01-29  Roger Sayle  <roger@eyesopen.com>
7499             Richard Guenther  <rguenther@suse.de>
7500
7501         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
7502         avoid undefined behaviour on overflow.  Use force_fit_type_double
7503         to construct the constant with the specified TREE_OVERFLOW.
7504
7505 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7506
7507         * config/dfp-bit.c: Add parameterized support for fp exceptions.
7508         * config/dfp-bit.h: Ditto.
7509
7510 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7511
7512         * c-decl.c (pop_scope): Replace warnings with call to
7513         warn_for_unused_label.
7514         * c-common.h (warn_for_unused_label): Declare.
7515         * c-common.c (warn_for_unused_label): Define.
7516
7517 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7518
7519         * tree-optimize.c (update_inlined_to_pointers): Delete unused
7520         function.
7521
7522 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
7523
7524         * Makefile.in (USER_H): Remove decfloat.h.
7525         * ginclude/decfloat.h: Delete, moving contents to ...
7526         * ginclude/float.h: Add support for decimal floating point,
7527         guarded by __STDC_WANT_DEC_FP__.
7528
7529 2007-01-29  Mike Stump  <mrs@apple.com>
7530
7531         * doc/gccint.texi (Top): Rename Loop Representation to Loop
7532         Analysis and Representation to resolve case insensitive conflict.
7533         * doc/loop.texi (Loop Analysis and Representation): Likewise.
7534
7535 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
7536
7537         * tree.h (struct tree_memory_tag): Add aliases member.
7538         (MTAG_ALIASES): New macro.
7539         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
7540         (add_may_alias): Remove pointer-set. Update for may_aliases being
7541         a bitmap.
7542         (mark_aliases_call_clobbered): Update for may_aliases being a
7543         bitmap.
7544         (compute_tag_properties): Ditto.
7545         (create_partition_for): Ditto.
7546         (compute_memory_partitions): Ditto.
7547         (dump_may_aliases_for): Ditto.
7548         (is_aliased_with): Ditto.
7549         (add_may_alias_for_new_tag): Ditto.
7550         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
7551         (compute_is_aliased): New function.
7552         (compute_may_aliases): Call compute_is_aliased).
7553         (init_alias_info): Initialize alias_bitmap_obstack.
7554         (union_alias_set_into): New function.
7555         (compute_flow_sensitive_aliasing): Use union_aliases_into.
7556         (have_common_aliases_p): Rewrite to take two bitmaps and use
7557         intersection.
7558         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
7559         Update for bitmaps.
7560         (finalize_ref_all_pointers): Update for add_may_alias changes.
7561         (new_type_alias): Ditto.
7562         * tree-flow-inline.h (may_aliases): Return a bitmap.
7563         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
7564         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
7565         may_aliases being a bitmap.
7566         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
7567         may_aliases now returns a bitmap.
7568         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
7569         being a bitmap.
7570         * tree-ssa-operands.c (add_virtual_operand): Update for
7571         may_aliases being a bitmap.
7572
7573 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
7574
7575         PR tree-optimization/30630
7576         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
7577         variable as changed.
7578
7579 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
7580
7581         PR c++/28266
7582         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
7583         expanded only once even if an error occurs.
7584
7585 2007-01-29  Ben Elliston  <bje@au.ibm.com>
7586
7587         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
7588         (__gcov_average_profiler): Likewise.
7589         (__gcov_ior_profiler): Likewise.
7590         (__gcov_merge_ior): Likewise.
7591
7592 2007-01-28  Jan Hubicka  <jh@suse.cz>
7593
7594         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
7595         * value-prof.c (stringop_block_profile): Likewise.
7596
7597 2007-01-28  Jan Hubicka  <jh@suse.cz>
7598
7599         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
7600         variant handling histograms; add wrapper.
7601         (clear_storage_via_libcall): Export.
7602         (emit_block_move_hints): Break out from ...; add histograms.
7603         (emit_block_move): ... this one.
7604         (clear_storage_hints): Break out from ...; add histograms.
7605         (clear_storage): ... this one.
7606         (set_storage_via_memset): Handle histogram.
7607         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
7608         (clear_storage_hints, clear_storage_via_libcall): Declare.
7609         (set_storage_via_setmem): Update prototype.
7610         * doc/md.texi (movmem, setmem): Document new arguments.
7611
7612         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
7613         new histograms.
7614         (stringop_block_profile): New global function.
7615         (tree_stringops_values_to_profile): Profile block size and alignment.
7616         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
7617         HIST_TYPE_IOR.
7618         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
7619         (stringop_block_profile): Declare.
7620         * builtins.c: Include value-prof.h.
7621         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
7622         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
7623         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
7624         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
7625         * profile.c (instrument_values): Add new counters.
7626         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
7627         calls.
7628         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
7629         (tree_init_edge_profiler): Build new profilers.
7630         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
7631         (pass_tree_profile): Add dump.
7632         (tree_profile_hooks): Update.
7633         * Makefile.in (LIBGCOV): Add new constants.
7634         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
7635         __gcov_ior_profiler): New.
7636         * i386.md (movmem/setmem expanders): Add new optional arguments.
7637
7638 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
7639
7640         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
7641
7642 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
7643
7644         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
7645         (tree_unswitch_single_loop): Pass eni_size_weights to
7646         tree_num_loop_insns.
7647         * tree-ssa-loop-manip.c: Include tree-inline.h.
7648         (can_unroll_loop_p): Pass eni_size_weights to
7649         tree_num_loop_insns.
7650         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
7651         Pass eni_size_weights to estimate_num_insns.
7652         * tree.h (init_inline_once): Export.
7653         * toplev.c (backend_init): Call init_inline_once.
7654         * cgraphunit.c (cgraph_process_new_functions,
7655         cgraph_analyze_function): Pass eni_inlining_weights to
7656         estimate_num_insns.
7657         * ipa-inline.c (compute_inline_parameters): Ditto.
7658         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
7659         to estimate_num_insns.
7660         (try_unroll_loop_completely): Pass eni_size_weights to
7661         tree_num_loop_insns.
7662         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
7663         ot estimate_num_insns.
7664         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
7665         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
7666         * tree-inline.c (eni_inlining_weights, eni_size_weights,
7667         eni_time_weights): New variables.
7668         (init_inline_once): Initialize them.
7669         (struct eni_data): Mew.
7670         (estimate_num_insns_1, estimate_num_insns): Use weights.
7671         * tree-inline.h (struct eni_weights_d): New.
7672         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
7673         (estimate_num_insns): Declaration changed.
7674         * cfgloop.h (tree_num_loop_insns): Declaration changed.
7675         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
7676         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
7677
7678 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
7679
7680         * tree-data-ref.c (conflict_fn): Assert that the number of affine
7681         relations in the conflict function is valid.
7682
7683 2007-01-27  Ian Lance Taylor  <iant@google.com>
7684
7685         * common.opt: Add fstrict-overflow.
7686         * opts.c (decode_options): Set flag_strict_overflow if -O2.
7687         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
7688         (TYPE_OVERFLOW_UNDEFINED): Define.
7689         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
7690         Replace all uses.
7691         * tree.h (TYPE_TRAP_SIGNED): Don't define.
7692         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
7693         (fold_negate_expr): Likewise.
7694         (make_range): Likewise.
7695         (extract_muldiv_1): Likewise.
7696         (maybe_canonicalize_comparison): Likewise.
7697         (fold_comparison): Likewise.
7698         (fold_binary): Likewise.
7699         (tree_expr_nonnegative_p): Likewise.
7700         (tree_expr_nonzero_p): Likewise.
7701         * tree-vrp.c (compare_values): Likewise.
7702         (extract_range_from_binary_expr): Likewise.
7703         (extract_range_from_unary_expr): Likewise.
7704         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
7705         Likewise.
7706         (nowrap_type_p): Likewise.
7707         * tree-scalar-evolution.c (simple_iv): Likewise.
7708         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
7709         (build_range_check): Likewise.
7710         (extract_muldiv_1): Likewise.
7711         (fold_comparison): Likewise.
7712         * tree-vrp.c (vrp_int_const_binop): Likewise.
7713         (extract_range_from_unary_expr): Likewise.
7714         * convert.c (convert_to_integer): Likewise.
7715         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
7716         (fold_comparison): Likewise.
7717         (fold_binary): Likewise.
7718         * optabs.c (optab_for_tree_code): Likewise.
7719         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
7720         * simplify-rtx.c (simplify_const_relational_operation): Check
7721         flag_strict_overflow and flag_trapv.
7722         (simplify_const_relational_operation): Likewise.
7723         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
7724         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
7725         -fstrict-overflow.
7726
7727 2007-01-27  Roger Sayle  <roger@eyesopen.com>
7728
7729         * tree.c (tree_fold_gcd): Delete.
7730         * tree.h (tree_fold_gcd): Remove prototype.
7731         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
7732         test whether one constant integer is a multiple of another.  Instead
7733         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
7734         * fold-const.c (multiple_of_p):  We've determined both TOP and
7735         BOTTOM are integer constants so we can call int_const_binop directly
7736         instead of the more generic const_binop.
7737
7738 2007-01-27  Roger Sayle  <roger@eyesopen.com>
7739
7740         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
7741         1*X check that the constant hasn't overflowed, to preserve the
7742         TREE_OVERFLOW bit.
7743         (round_up): Provide an efficient implementation when rouding-up an
7744         INTEGER_CST to a power-of-two.
7745
7746 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
7747
7748         * doc/sourcebuild.texi: Add comma for clarity.
7749         * doc/extend.texi: Fix some typos.
7750         * doc/passes.texi: Likewise.
7751         * doc/cppinternals.texi: Likewise.
7752         * doc/c-tree.texi: Likewise.
7753         * doc/tree-ssa.texi: Likewise.
7754         * doc/install.texi: Likewise.
7755
7756 2007-01-27  Jan Hubicka  <jh@suse.cz>
7757
7758         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
7759         (pass_sra): Do not require alias information.
7760         * passes.c (init_optimization_passes): Add SRA
7761
7762 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
7763
7764         * tracer.c (rest_of_handle_tracer): We already cleaned
7765         up the CFG in tracer() so don't do it here again.
7766         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
7767         cleanup_cfg here, either.  And don't call renumber_insns.
7768
7769         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
7770         and BB_HEAD are in the insn stream here.  Instead make sure
7771         that BB_INSN is valid on all insns.  Also, do check here that
7772         there are no pending branch predictions...
7773         (rtl_verify_flow_info): ...instead of doing it here.  Checks
7774         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
7775         here.
7776
7777 2007-01-26  Roger Sayle  <roger@eyesopen.com>
7778
7779         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
7780         function to simplify/factorize operand order canonicalization.
7781         (ix86_fixup_binary_operands): Reorganize using the above function.
7782         (ix86_binary_operator_ok): Likewise.
7783
7784 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
7785
7786         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
7787         file scope from optimize_attrs.
7788         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
7789         up search.
7790         (optimize_attrs): Clear insn_code_values after freeing it.
7791
7792 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
7793
7794         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
7795         a parts.base assignment.
7796
7797 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
7798
7799         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
7800         (compute_subscript_distance, initialize_data_dependence_relation,
7801         finalize_ddr_dependent, analyze_ziv_subscript,
7802         analyze_siv_subscript_cst_affine,
7803         compute_overlap_steps_for_affine_univar,
7804         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
7805         analyze_siv_subscript, analyze_miv_subscript,
7806         analyze_overlapping_iterations, subscript_dependence_tester_1,
7807         compute_self_dependence, free_dependence_relation): Work
7808         with affine_fn instead of chrecs.
7809         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
7810         common_affine_function, affine_function_base,
7811         affine_function_constant_p, affine_fn_op, affine_fn_plus,
7812         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
7813         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
7814         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
7815         (all_chrecs_equal_p): Removed.
7816         * tree-data-ref.h (affine_fn, conflict_function): New types.
7817         (struct subscript): Change type of conflicting_iterations_in_a
7818         and conflicting_iterations_in_b.
7819
7820 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
7821
7822         PR other/30182
7823         * config/pa/pa.h (TARGET_HPUX_11): New.
7824         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
7825         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
7826
7827 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
7828         Richard Guenther  <rguenther@suse.de>
7829
7830         * tree-ssa-structalias.c (solve_graph): Handle case
7831         we merged the variable to another.
7832
7833 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7834
7835         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
7836         functions.
7837
7838         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
7839         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
7840
7841 2007-01-25  DJ Delorie  <dj@redhat.com>
7842
7843         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
7844         allow changes to modes which don't fit in those registers.
7845
7846         * reload1.c (choose_reload_regs): Check for invalid subregs before
7847         computing their locations, not after.
7848
7849 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
7850
7851         PR 25127
7852         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
7853         save Altivec registers in an eh_return function.
7854         (compute_vrsave_mask): Likewise.
7855         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
7856         for saving Altivec registers.
7857         (rs6000_emit_prologue): Don't allocate stack twice in
7858         eh_return function.  Correct expected value of altivec_save_offset
7859         when using save_world.  Describe save of R0 to stack when using
7860         save_world.  Describe stack pointer adjustment when using
7861         save_world.  Remove duplicated eh_return parameter register saving.
7862         Update sp_offset variable after save_world.
7863         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
7864         darwin-world.asm.
7865         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
7866         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
7867         implies Altivec.
7868
7869 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
7870
7871         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
7872
7873 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
7874
7875         PR other/30182
7876         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
7877         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
7878
7879 2007-01-25  Richard Guenther  <rguenther@suse.de>
7880
7881         * doc/invoke.texi (-Wcoverage-mismatch): Document.
7882         * common.opt (-Wcoverage-mismatch): New warning option.
7883         * coverage.c (get_coverage_counts): Ignore coverage mismatch
7884         if -Wcoverage-mismatch is given.
7885
7886 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
7887
7888         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
7889         (ipcp_driver): Change to static definition.
7890         Add dumping of the ifunctions.
7891         (constant_val_insert): Remove unused parameter. Support for SSA.
7892         (ipcp_propagate_const): Support for SSA.
7893         (ipcp_profile_bb_print): Print only analyzed nodes.
7894         (ipcp_replace_map_create): Remove support for Fortran constant
7895         for now.
7896         * ipa-prop.c (ipa_method_modify_stmt,
7897         ipa_callsite_compute_param): Support for SSA.
7898         * ipa-prop.h (ipcp_driver): Remove declaration.
7899         (IS_VALID_TREE_MAP_INDEX): Add define.
7900
7901 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
7902
7903         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
7904
7905 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7906
7907         PR middle-end/30447
7908         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
7909         constant argument to cabs and do it without checking for
7910         -funsafe-math-optimizations.
7911
7912 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
7913
7914         * c-common.h (RID_FIRST_CXX0X): New.
7915         (RID_LAST_CXX0X): New.
7916         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
7917         by -Wall.
7918         * c.opt (Wc++0x-compat): New.
7919         * doc/invoke.texi (-Wc++0x-compat): Document.
7920
7921 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7922
7923         * builtins.c (fold_builtin_carg): New.
7924         (fold_builtin_1): Use it.
7925
7926 2007-01-24  Jan Hubicka  <jh@suse.cz>
7927
7928         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
7929
7930         * ipa-inline.c (initial_insns, max_insns): Delete.
7931         (compute_max_insns): New function.
7932         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
7933         of insns as base for code growth.
7934         (cgraph_decide_inlining): Make initial_insns local; do not compute
7935         max_insns.
7936         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
7937         * doc/invoke.texi (inline-unit-growth): Update docs.
7938
7939 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
7940
7941         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
7942         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
7943         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
7944         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
7945         for CPUs that have PTA_CX16 set.
7946
7947         PR middle-end/27416
7948         * gimplify.c (omp_check_private): New function.
7949         (gimplify_scan_omp_clauses): Use it for
7950         firstprivate/lastprivate/reduction.
7951
7952         PR middle-end/30494
7953         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
7954         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
7955
7956         PR middle-end/30421
7957         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
7958         If lower_lastprivate_clauses emits some statements, append them
7959         to dlist rather than body_p and to body_p append an initializer.
7960         (lower_omp_for): Adjust caller.
7961
7962 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
7963
7964         * target.h (globalize_decl_name): New.
7965         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
7966         * output.h (default_globalize_decl_name): New.
7967         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
7968         globalize_label.
7969         (globalize_decl): Ditto.
7970         (default_globalize_decl_name): New.
7971         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
7972         (ia64_handle_version_id_attribute): New.
7973         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
7974         (ia64_asm_output_external): Use globalize_decl_name instead
7975         of globalize_label.
7976         * doc/extend.texi (version_id): New pragma.
7977         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
7978
7979 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
7980
7981         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
7982         _uleb128_t and _Unwind_SWord with _sleb128_t.
7983         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
7984         uw_frame_state_for, uw_update_context_1): Likewise.
7985         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
7986         * unwind-pe.h (read_uleb128, read_sleb128,
7987         read_encoded_value_with_base): Likewise.
7988         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
7989
7990 2007-01-24  Richard Guenther  <rguenther@suse.de>
7991
7992         * builtins.c (expand_builtin_cexpi): Get the fndecl
7993         for cexp in the correct way.
7994
7995 2007-01-24  Jan Hubicka  <jh@suse.cz>
7996
7997         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
7998
7999 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
8000
8001         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
8002         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
8003         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
8004         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
8005         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
8006         __SIZEOF_PTRDIFF_T__.
8007         * doc/cpp.texi: Documentation for the new builtin macros added.
8008
8009 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
8010
8011         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
8012         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
8013         instead of operands[2] to avoid access past the end of array.
8014
8015 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
8016
8017         * reload1.c (emit_reload_insns): Pass the reload register
8018         for a non-spill output reload through forget_old_reloads_1.
8019
8020 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
8021
8022         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
8023         _SOFT_DOUBLE if doubles use software floating-point.
8024         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
8025         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8026         * config/rs6000/darwin-ldouble.c: Also compile functions for
8027         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
8028         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
8029         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
8030         commented-out long double override.
8031         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
8032         * config/rs6000/eabispe.h: Likewise.
8033         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
8034         long double for non-SPE.
8035         (rs6000_handle_option): Likewise.
8036         (invalid_e500_subreg): Disallow more subregs involding DImode,
8037         DFmode, TImode or TFmode.
8038         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
8039         E500 double.
8040         (legitimate_lo_sum_address_p): Also check for TFmode for E500
8041         double.
8042         (rs6000_legitimize_address): Also handle TFmode for E500 double.
8043         (rs6000_legitimize_reload_address): Also handle TFmode for E500
8044         double.
8045         (rs6000_legitimate_address): Also check for TFmode for E500
8046         double.
8047         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
8048         (spe_build_register_parallel): Handle TFmode and TCmode.
8049         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
8050         double.
8051         (function_arg): Handle TFmode and TCmode for E500 double.
8052         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
8053         in general.
8054         (print_operand): Handle TFmode and TImode for %y.
8055         (rs6000_generate_compare): Handle TFmode comparisons for E500
8056         double.
8057         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
8058         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
8059         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
8060         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
8061         TFmode for E500 double.
8062         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
8063         (floatsidf2): Enable for E500 double.
8064         (movtf_softfloat): Use rs6000_nonimmediate_operand.
8065         (extenddftf2): Change to extenddftf2_fprs.
8066         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
8067         depending on TARGET_E500_DOUBLE.
8068         (extendsftf2): Enable for E500 double.
8069         (trunctfdf2): Enable for E500 double.
8070         (trunctfsf2): Change to trunctfsf2_fprs.
8071         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
8072         depending on TARGET_E500_DOUBLE.
8073         (floatsitf2): Enable for E500 double.
8074         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
8075         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
8076         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
8077         (negtf2): Change to negtf2_internal.
8078         (negtf2): New expander.
8079         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
8080         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
8081         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
8082         (movdi_internal32): Use rs6000_nonimmediate_operand.
8083         (unnamed splitter): Likewise.
8084         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
8085         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
8086         (SPE64TF, DITI): New mode macros.
8087         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
8088         modes.
8089         (frob_tf_ti): New.
8090         (frob_<mode>_di_2): New.
8091         (frob_tf_di_8_2): New.
8092         (frob_di_df): Change to frob_di_<mode>; allow more modes.
8093         (frob_ti_tf): New.
8094         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
8095         more modes.
8096         (frob_ti_<mode>_8_2): New.
8097         (frob_ti_tf_2): New.
8098         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
8099         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
8100         TFmode.
8101         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
8102         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
8103         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
8104         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
8105         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
8106         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
8107         tsttflt_gp): New.
8108
8109 2007-01-23  Ian Lance Taylor  <iant@google.com>
8110
8111         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
8112         insn-*.o first.
8113         (OBJS-archive): Reformat, alphabetize.
8114         (OBJS): Change out_object_file to OBJS-md.
8115
8116 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
8117
8118         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
8119         JUMP_P and CALL_P predicates where applicable.
8120         * config/i386/i386.c: Ditto.
8121         * config/i386/i386.md: Ditto.
8122         * config/i386/mmx.md: Ditto.
8123         * config/i386/predicates.md: Ditto.
8124
8125 2007-01-22  Andreas Schwab  <schwab@suse.de>
8126
8127         * config/m68k/m68k.h: Fix comment.
8128
8129 2007-01-22  Jan Hubicka  <jh@suse.cz>
8130
8131         * passes.c (init_optimization_passes): Do not rerun
8132         pass_early_warn_uninitialized.
8133
8134 2007-01-22  Richard Guenther  <rguenther@suse.de>
8135
8136         PR tree-optimization/30038
8137         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
8138         function.
8139         (execute_cse_sincos_1): Likewise.
8140         (execute_cse_sincos): Likewise.
8141         (gate_cse_sincos): Likewise.
8142         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
8143         the cexpi() canonicalization of sincos().
8144         * tree-pass.h (pass_cse_sincos): Declare.
8145         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
8146
8147 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
8148
8149         PR rtl-optimization/29329
8150         * combine.c (replaced_rhs_insn): Rename to i2mod.
8151         (replaced_rhs_value): Rename to i2mod_new_rhs.
8152         (i2mod_old_rhs): New global variable.
8153         (combine_instructions): Adjust for above change.  Save a copy of
8154         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
8155         note are substituted in the second instruction.
8156         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
8157         ditch the note if it pertains to the second eliminated register
8158         and this register is mentioned in i2mod_old_rhs.
8159
8160         Revert:
8161         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
8162
8163         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
8164         the insn to which the note was originally attached.
8165
8166 2007-01-21  Jan Hubicka  <jh@suse.cz>
8167
8168         * ipa-inline.c (inlining_mode): Comment, move up.
8169         (cgraph_decide_inlining_incrementally): Do not perform inlining
8170         itself; fix handling of flattening of self recursive functions.
8171         (cgraph_find_cycles): Remove.
8172         (cgraph_flatten_node): Remove.
8173         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
8174         (try_inline): New function.
8175         (cgraph_early_inlining): Update call of
8176         cgraph_decide_inlining_incrementally.  Apply inlining here.
8177         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
8178
8179 2007-01-21  Dirk Mueller  <dmueller@suse.de>
8180
8181         PR bootstrap/30511
8182         * tree-vrp.c (check_array_bounds): do not warn
8183         about ADDR_EXPR's of ARRAY_REF's which are immediately
8184         used in binary expressions.
8185
8186 2007-01-21  Ira Rosen  <irar@il.ibm.com>
8187
8188         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
8189         read_write_dep and macros for its access.
8190         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
8191         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
8192         argument, call vect_check_interleaving for every independent pair of
8193         data-refs. Mark loads that access the same memory location as a store
8194         in the loop.
8195         (vect_check_dependences): Remove.
8196         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
8197         call, fix the call to vect_analyze_data_ref_dependence.
8198         (vect_analyze_data_ref_access): For statements that access the same
8199         data-ref, check that they are not stores; for loads, check that there
8200         is no store that access the same location.
8201
8202 2007-01-20  Roger Sayle  <roger@eyesopen.com>
8203             Joseph Myers  <joseph@codesourcery.com>
8204
8205         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
8206         (-fdump-rtl-stack): Likewise.
8207         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
8208         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
8209         (-mpt-fixed): Use @minus{} for minus sign.
8210         (Using Precompiled Headers): Fix under/overfull hbox.
8211
8212 2007-01-20  Jan Hubicka  <jh@suse.cz>
8213
8214         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
8215         place within annotation.
8216
8217 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8218
8219         * pa.c (output_move_double): Change array size of xoperands to 4.
8220
8221 2007-01-20  Jan Hubicka  <jh@suse.cz>
8222
8223         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
8224         as temporary.
8225
8226 2007-01-19  Ian Lance Taylor  <iant@google.com>
8227
8228         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
8229         constant to unsigned HOST_WIDE_INT before negating.
8230
8231 2007-01-19  Ian Lance Taylor  <iant@google.com>
8232
8233         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
8234         to unsigned.
8235         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
8236         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8237         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
8238         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
8239         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
8240         (realloc_vdef, realloc_vuse): Change second parameter to
8241         unsigned.
8242         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
8243         fields to unsigned.
8244         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
8245         unsigned. Change x and lim locals to unsigned.
8246         (realloc_vdef, realloc_vuse): Change num_elem parameter to
8247         unsigned.
8248         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
8249         (copy_virtual_operands): Change i and n locals to unsigned.
8250
8251 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8252
8253         PR middle-end/29335
8254         * builtins.c (fold_builtin_1): Handle builtin fdim.
8255
8256 2007-01-20  Jan Hubicka  <jh@suse.cz>
8257
8258         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
8259         * tree-ssa-structalias.c (compute_points_to_sets): Do call
8260         init_alias_heapvars.
8261         (init_alias_heapvars): Initialize only when not already initialized.
8262         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
8263
8264 2007-01-19  Roger Sayle  <roger@eyesopen.com>
8265
8266         * common.opt (fsigned-zeros): New command line option.
8267         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
8268         of flag_unsafe_math_optimizations.
8269         * opts.c (set_fast_math_flags): The -ffast-math command line option
8270         implies -fno-signed-zeros.
8271         (fast_math_flags_set_p): Likewise.
8272
8273         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
8274         the documentation of -ffast-math appropriately.  Wrap long lines.
8275
8276 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
8277
8278         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
8279         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
8280
8281 2007-01-19  Tomas Bily  <tbily@suse.cz>
8282
8283         * cgraphunit.c (cgraph_finalize_function): Updating of pid
8284         * tree-profile.c:
8285         (tree_init_ic_make_global_vars): New function
8286         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
8287         (tree_gen_ic_profiler): New function
8288         (tree_gen_ic_func_profiler): New function
8289         (tree_profiling): Added calling of tree_gen_ic_func_profiler
8290         (tree_profile_hooks): Added hook for indirec/virtual calls
8291         * value-prof.c (tree_find_values_to_profile): New case for
8292         indirect calls
8293         (tree_values_to_profile): Call for determining indirect/virtual
8294         counters
8295         (tree_indirect_call_to_profile): New function
8296         (tree_ic_transform): New function
8297         (tree_ic): New function
8298         (find_func_by_pid): New function
8299         (init_pid_map): New function
8300         (tree_value_profile_transformations): Added check for
8301         indirect/virtual call transformation
8302         * value-prof.h (enum hist_type): New counter type for
8303         indirect/virtual calls
8304         (profile_hooks): Added new hook for profiling indirect/virtual
8305         calls
8306         * profile.c (instrument_values): New case for indirect/virtual
8307         call added
8308         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
8309         (GCOV_COUNTER_V_INDIR): New counter type
8310         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
8311         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
8312         call added
8313         * cgraph.c: Definition of cgraph_max_pid
8314         (cgraph_create_node): Default init of pid attribute
8315         * cgraph.h: Declaration of cgraph_max_pid
8316         (struct cgraph_node): Added pid attribute
8317         * libgcov.c (__gcov_indirect_call_profiler): New function
8318         (__gcov_one_value_profiler_body): New function
8319         (__gcov_one_value_profiler): Body was moved to
8320         __gcov_one_value_profiler_body and calls it
8321
8322 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
8323
8324         * doc/gty.texi (Options): Document the mark_hook option to GTY.
8325         * gengtype.c (write_types_data, write_func_for_structure,
8326         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
8327         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
8328         (walk_type, write_func_for_structure): Generate the mark_hook if
8329         needed.
8330
8331 2007-01-19  Jan Hubicka  <jh@suse.cz>
8332
8333         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
8334         'early' argument take inlining mode argument specifying whether to
8335         inline for size/speeed or all functions; add support for flattening;
8336         improve dumpting.
8337         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
8338
8339 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8340
8341         PR c++/17947
8342         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
8343         the name of the declared identifier.
8344
8345 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8346
8347         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
8348         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
8349         duplicate evaluation.
8350
8351 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8352
8353         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
8354         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
8355         to XFMode, use acosxf2 and truncate result to requested mode.
8356         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
8357         (asin<mode>2): Similarly, with asin expanders.
8358         (*fscalexf4_i387): Rename from *fscalexf4.
8359         (expNcorexf3): New expander.
8360         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
8361         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
8362         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
8363         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
8364         patterns for SSE math.
8365         (exp10<mode>2): Similarly, with exp10 expanders.
8366         (exp2<mode>2): Similarly, with exp2 expanders.
8367         (expm1<mode>2): Similarly, with expm1 expanders.
8368         (ldexp<mode>3): Similarly, with ldexp expanders.
8369         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
8370         Use gen_truncxf<mode>2_i387_noop to truncate result.
8371
8372 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8373
8374         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
8375         for ColdFire targets.
8376
8377 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
8378             Richard Sandiford  <richard@codesourcery.com>
8379
8380         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
8381         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
8382         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
8383         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
8384         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8385         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
8386
8387 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8388
8389         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
8390         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
8391         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
8392         (*adddi_dilshr32_cf): New pattern.
8393         (adddi3, subdi3): Remove first alternatives.
8394
8395 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8396
8397         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
8398         implemented using move.l, do not use its cc result for floating-point
8399         comparisons.
8400
8401 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8402
8403         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
8404         from accepting 's' constraints if flag_pic.
8405
8406 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8407
8408         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
8409         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
8410         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
8411         condition from TARGET_68881 to TARGET_HARD_FLOAT.
8412
8413 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
8414
8415         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
8416         ColdFire alternatives.
8417         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
8418         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
8419         architectures that support ff1 instruction.
8420
8421 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8422             Julian Brown  <julian@codesourcery.com>
8423
8424         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
8425         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
8426         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
8427         Add commentary.
8428
8429 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
8430
8431         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
8432         and return a bool.
8433         (output_move_const_into_data_reg, output_move_simode_const): Delete.
8434         * config/m68k/m68k.c (const_method, const_int_cost): Take a
8435         HOST_WIDE_INT instead of an rtx.
8436         (m68k_rtx_costs): Update call accordingly.
8437         (output_move_const_into_data_reg): Likewise.  Fix formatting.
8438         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
8439         Return a bool.
8440         (output_move_simode_const): Update calls after above changes.
8441         Rework to use automatic variables and predicates like MEM_P.
8442         * config/m68k/m68k.md (pushexthisi_const): Update call to
8443         valid_mov3q_const.
8444
8445 2007-01-19  Dirk Mueller  <dmueller@suse.de>
8446
8447         * tree-ssa-alias.c (perform_var_substitution): Fix typo
8448         in dump_flags test.
8449
8450 2007-01-19  Richard Guenther  <rguenther@suse.de>
8451
8452         * builtins.c (expand_builtin_cexpi): Fall back to expanding
8453         via cexp in case sincos is not available.
8454
8455 2007-01-19  Richard Guenther  <rguenther@suse.de>
8456
8457         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
8458         * defaults.h (TARGET_HAS_SINCOS): Default to off.
8459         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
8460         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
8461         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
8462         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
8463         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
8464         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
8465
8466 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
8467
8468         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
8469         New insn patterns.
8470         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
8471         (atan2xf3): Directly generate RTL pattern.
8472         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
8473         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8474         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8475         disable patterns for SSE math.
8476         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
8477         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
8478         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8479         disable patterns for SSE math.
8480
8481 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
8482
8483         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
8484
8485 2007-01-18  Roger Sayle  <roger@eyesopen.com>
8486
8487         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
8488         VIEW_CONVERT_EXPR to the same type as it's operand.
8489
8490 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
8491
8492         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
8493         configured for long double 128.
8494
8495 2007-01-18  Mike Stump  <mrs@apple.com>
8496
8497         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
8498         error.
8499
8500 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
8501
8502         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
8503         type correct.
8504
8505 2007-01-18  Jan Hubicka  <jh@suse.cz>
8506
8507         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
8508         greater than NUM_VOP_FREE_BUCKETS.
8509
8510 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
8511
8512         * tree-ssa-structalias.c: Update comments.
8513         (ptabitmap_obstack): Removed.
8514         (pta_obstack): New.
8515         (oldpta_obstack): Ditto.
8516         (stats): Add a few members.
8517         (struct variable_info): Remove node, complex, address_taken, and
8518         indirect_target members. Add oldsolution member.
8519         (new_var_info): Do not initialize removed members.
8520         (constraint_expr_type): Remove INCLUDES.
8521         (constraint_graph): Add size, implicit_preds, rep,
8522         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
8523         (FIRST_REF_NODE): New macro.
8524         (LAST_REF_NODE): Ditto.
8525         (FIRST_ADDR_NODE): Ditto.
8526         (find): New function.
8527         (unite): Ditto.
8528         (dump_constraint): Do not handle INCLUDES.
8529         (insert_into_complex): Do not insert duplicate constraints.
8530         (condense_varmap_nodes): Renamed and rewritten into ...
8531         (merge_node_constraints): This. Also fix bug in handling of
8532         offseted copy constraints.
8533         (clear_edges_for_node): No longer need to deal with preds at all,
8534         or removing associated preds/succs.
8535         (merge_graph_nodes): Deal with indirect_cycles.
8536         Don't deal with predecessors.
8537         (add_implicit_graph_edge): New function.
8538         (add_pred_graph_edge): Ditto.
8539         (add_graph_edge): Don't deal with predecessors.
8540         (build_constraint_graph): Removed.
8541         (build_pred_graph): New function.
8542         (build_succ_graph): Ditto.
8543         (struct scc_info): Removed in_component. Added roots, dfs, and
8544         node_mapping. Remove visited_index, unification_queue.
8545         (scc_visit): Deal with union-find we do now.
8546         Deal with cycles with REF nodes.
8547         (collapse_nodes): Renamed and rewritten to ...
8548         (unify_nodes): This.
8549         (process_unification_queue): Removed.
8550         (topo_visit): Cleanup
8551         (do_da_constraint): Use find.
8552         (do_sd_constraint): Ditto.
8553         (do_ds_constraint): Ditto.
8554         (do_complex_constraint): Ditto.
8555         (init_scc_info): Update for removed and added members.
8556         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
8557         (find_indirect_cycles): This.
8558         (equivalence_class): New variable.
8559         (label_visit): New function.
8560         (perform_variable_substitution): Rewritten.
8561         (free_var_substitution_info): New function.
8562         (find_equivalent_node): Ditto.
8563         (move_complex_constraints): Ditto.
8564         (eliminate_indirect_cycles): Ditto.
8565         (solve_graph): Only propagate changed bits.
8566         Use indirect cycle elimination.
8567         Use find.
8568         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
8569         (tree_id_eq): Renamed to ...
8570         (tree_vi_eq): This. Update for member change
8571         (insert_id_for_tree): Renamed and rewritten to ...
8572         (insert_vi_for_tree): This.
8573         (lookup_id_for_tree): Renamed and rewritten to ...
8574         (lookup_vi_for_tree): This.
8575         (get_id_for_tree): Renamed and rewritten to ...
8576         (get_vi_for_tree): Ditto.
8577         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
8578         (process_constraint): Don't handle INCLUDES.
8579         Remove special ADDRESSOF case.
8580         (find_func_aliases): Rewrite to use vi functions instead of id
8581         ones.
8582         (create_function_info_for): Ditto.
8583         (create_variable_info_for): Ditto.
8584         (intra_create_variable_infos): Ditto.
8585         (merge_smts_into): Ditto.
8586         (find_what_p_points_to): Ditto.
8587         (init_base_vars): Ditto.
8588         (init_alias_vars): Ditto.
8589         (remove_preds_and_fake_succs): New function.
8590         (dump_sa_points_to_info): Dump new stats.
8591         (dump_solution_for_var): Use find.
8592         (set_used_smts): Fix formatting.
8593         (compute_points_to_sets): Updated for new functions.
8594         (ipa_pta_execute): Ditto.
8595
8596 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8597             Richard Sandiford  <richard@codesourcery.com>
8598
8599         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
8600         parallels.
8601         * calls.c (expand_call): If the return value is a PARALLEL,
8602         extract its first member.
8603         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
8604         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
8605         use FUNCTION_EXTRA_EPILOGUE.
8606         (m68k_function_value): Return a PARALLEL if the return value
8607         is of a pointer type.
8608         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
8609         (FUNCTION_EXTRA_EPILOGUE): Remove.
8610         * config/m68k/m68k.md (D0_REG): New constant.
8611
8612 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8613
8614         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
8615         output a NOP for empty epilogues.
8616
8617 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8618
8619         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
8620         before function.  Extend register save check to include all
8621         registers, not just integer ones.
8622
8623 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8624
8625         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
8626         (m68k_use_return_insn): ...this.
8627         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
8628         * config/m68k/m68k.c (use_return_insn): Rename to...
8629         (m68k_use_return_insn): ...this.
8630         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
8631         of USE_RETURN_INSN.
8632
8633 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8634
8635         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
8636         nearest even, fix denormal rounding overflow.
8637
8638 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8639
8640         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
8641         f%$smove and f%$move.
8642         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
8643         (extendsfdf2_cf): Use fdmove instead of f%&move.
8644         (truncdfsf2_cf): Use fsmove instead of f%$smove.
8645         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
8646
8647 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8648
8649         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
8650         GPR<-GPR moves.
8651
8652 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8653
8654         * real.h (real_format): Add a canonical_nan_lsbs_set field.
8655         (coldfire_single_format): Declare.
8656         (coldfire_double_format): Likewise.
8657         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
8658         of qnan_msb_set to determine the lower bits of a canonical
8659         NaN significand.
8660         (encode_ieee_double): Likewise.
8661         (encode_ieee_quad): Likewise.
8662         (ieee_single_format): Initialize canonical_nan_lsbs_set.
8663         (mips_single_format): Likewise.
8664         (ieee_double_format): Likewise.
8665         (mips_double_format): Likewise.
8666         (ieee_extended_motorola_format): Likewise.
8667         (ieee_extended_intel_96_format): Likewise.
8668         (ieee_extended_intel_128_format): Likewise.
8669         (ieee_extended_intel_96_round_53_format): Likewise.
8670         (ibm_extended_format): Likewise.
8671         (mips_extended_format): Likewise.
8672         (ieee_quad_format): Likewise.
8673         (mips_quad_format): Likewise.
8674         (vax_f_format): Likewise.
8675         (vax_d_format): Likewise.
8676         (vax_g_format): Likewise.
8677         (i370_single_format): Likewise.
8678         (i370_double_format): Likewise.
8679         (decimal_single_format): Likewise.
8680         (decimal_double_format): Likewise.
8681         (decimal_quad_format): Likewise.
8682         (c4x_single_format): Likewise.
8683         (c4x_extended_format): Likewise.
8684         (real_internal_format): Likewise.
8685         (coldfire_single_format): New real_format.
8686         (coldfire_double_format): Likewise.
8687         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
8688         canonical_nan_lsbs_set.
8689         (pdp11_d_format): Likewise.
8690         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
8691         if TARGET_COLDFIRE_CPU.
8692
8693 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8694
8695         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
8696         (output_call, m68k_legitimize_call_address): Declare.
8697         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
8698         parenthesees.  Add support for a 'W' constraint.
8699         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
8700         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
8701         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
8702         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
8703         variables.
8704         (override_options): Initialize them.  Do not set flag_no_function_cse
8705         for TARGET_ID_SHARED_LIBRARY.
8706         (m68k_output_pic_call): Delete.
8707         (m68k_legitimize_call_address): New function.
8708         (print_operand): Remove the %o prefix.  Handle the %p prefix.
8709         (output_call): New function.
8710         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
8711         target address from the GOT if symbolic jumps are not allowed.
8712         * config/m68k/m68k.md (call, general_operand): Do not set
8713         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
8714         Merge separate flag_pic and !flag_pic define_insns into...
8715         (*call, *call_value): ...these new patterns.  Match the address
8716         rather than the containing MEM and require it to be a call_operand.
8717         Use output_call to generate the asm template.
8718         * config/m68k/predicates.md (const_call_operand): New predicate.
8719         (call_operand): Likewise.
8720
8721 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8722
8723         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
8724         (STACK_GROWS_DOWNWARD): Define to 1.
8725         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
8726         comments, emphasizing that these values are only defaults.
8727         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
8728         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
8729
8730 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8731
8732         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
8733
8734 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
8735             Richard Sandiford  <richard@codesourcery.com>
8736
8737         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
8738         (FP_REGNO_P): New macros.
8739         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
8740         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
8741         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
8742         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
8743
8744 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8745
8746         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8747         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
8748         to $tmake_file.
8749         * config/m68k/t-floatlib: New file, extracting common code from...
8750         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
8751         * config/m68k/t-uclinux: Here.
8752         * config/m68k/fpgnulib.c: Do not compile extendeed precision
8753         routines on ColdFire targets.
8754
8755 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
8756
8757         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
8758         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
8759         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
8760         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
8761         explicitly set MOTOROLA to 1.
8762         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
8763
8764 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8765             Nathan Sidwell  <nathan@codesourcery.com>
8766
8767         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
8768         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
8769         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
8770         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
8771         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
8772         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
8773         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
8774         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
8775         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
8776         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
8777         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
8778         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
8779         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
8780         (DBX_REGISTER_NUMBER): Delete.
8781         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
8782         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
8783         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
8784
8785 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8786
8787         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
8788         * config/flat.h: New file.
8789         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
8790         OBJECT_FORMAT_FLAT.
8791         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
8792         indirect references for -msep-data or -mid-shared-library.
8793         Do not use PC-relative code addresses either.
8794         * config/m68k/m68k.c (override_options): Restrict -fPIC error
8795         to -mpcrel.
8796         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
8797         for shared libraries and crt1.o for executables.  Use crti.o and
8798         crtbegin.o.
8799         (ENDFILE_SPEC): Use crtend.o and crtn.o.
8800         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
8801         Do not add -elf2flt or -shared-lib-id options here.
8802         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
8803         Pass -shared-lib-id if -mid-shared-library, taking the library
8804         identifier from -mshared-library-id if given, otherwise
8805         defaulting to 0.
8806         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
8807         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
8808         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
8809         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
8810         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
8811         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
8812         and crtend.o.
8813         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
8814         jump sequence for ISA A and ISA A+.
8815         (PICJUMP): Likewise.
8816
8817 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8818
8819         * config.gcc (m68k-*-uclinux*): Base the port on the common
8820         and m68k GNU/Linux files rather than on the generic ELF ones.
8821         * config/m68k/uclinux.h (TARGET_VERSION): Override.
8822         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
8823
8824 2007-01-18  Julian Brown  <julian@codesourcery.com>
8825             Richard Sandiford  <richard@codesourcery.com>
8826
8827         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
8828         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8829         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
8830         before redefining.
8831         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
8832         80 unconditionally.
8833         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
8834
8835 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
8836
8837         * doc/install.texi: Document m68k-uclinuxoldabi.
8838         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
8839         * config/m68k/uclinux-oldabi.h: New file, copied from
8840         config/m68k/uclinux.h.
8841
8842 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
8843
8844         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
8845         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
8846         (m32r_compute_frame_size): Use unsigned for regno.
8847         (m32r_reload_lr): Use gen_frame_mem.
8848         (pop): New.
8849         (m32r_output_function_epilogue): Don't output the function epilogue
8850         textually here.
8851         (m32r_expand_epilogue): New.
8852         (direct_return): Return false if the function has the interrupt
8853         attribute.
8854         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
8855         * config/m32r/m32r.md (epilogue): New expander.
8856         (return_lr, return_rte): New insns.
8857         (return): Make it expander.
8858         (return_normal): New expander.
8859
8860 2007-01-18  Josh Conner  <jconner@apple.com>
8861
8862         PR target/30485
8863         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
8864         support for UNLE, UNLT, UNGE, and UNGT.
8865
8866 2007-01-18  Jan Hubicka  <jh@suse.cz>
8867
8868         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
8869         * tree-tailcall (add_virtual_phis): Likewise.
8870         (optimize_tail_call): Return TODOs.
8871         (execute_tail_calls): Return TODOs.
8872         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
8873         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
8874         changed.
8875         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
8876         Cleanup cfg using TODO.
8877         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
8878         * passes.c (execute_function_todo): When cleanup did something, remove
8879         unused locals.
8880         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
8881         (make_edges): Don't cleanup_cfg.
8882
8883 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
8884
8885         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
8886         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
8887         operate on the top of stack.
8888         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
8889         register handling of instructions that output to the second
8890         stack slot.
8891         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
8892         (move_for_stack_reg): Special-case check for dead destination
8893         stack slot for constant load of 1.0 inside UNSPEC_TAN.
8894
8895         * config/i386/i386.md (UNSPEC_TAN): New constant.
8896         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
8897         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
8898         to correctly model move of constant 1.0 to top stack slot.
8899         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
8900         (unnamed peephole2 pattern): Remove corresponding peephole2
8901         pattern that optimizes tan insn and loading of constant 1.0.
8902         (tanxf2): Use fptanxf4_i387.
8903         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
8904         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
8905         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
8906         disable patterns for SSE math.
8907         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
8908         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
8909
8910 2007-01-18  Dirk Mueller  <dmueller@suse.de>
8911             Richard Guenther <rguenther@suse.de>
8912
8913         PR diagnostic/8268
8914         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
8915         * common.opt (Warray-bounds): Add new warning option.
8916         * c-opts.c (c_common_handle_option): Define -Warray-bounds
8917         if -Wall is given.
8918         * Makefile.in: make tree-vrp.o depend on toplev.h
8919         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
8920         is enabled.
8921         (check_array_refs, check_array_bounds, check_array_ref): New.
8922
8923 2007-01-18  Jan Hubicka  <jh@suse.cz>
8924
8925         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
8926         (execute_ssa_ccp): Return flags conditionally.
8927         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
8928         changed.
8929         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
8930
8931 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
8932
8933         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
8934         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
8935
8936         * Makefile.c (GTFILES): Add cfglayout.h.
8937         * gengtype.c (open_base_files): Likewise.
8938         * cfglayout.c (cfg_layout_function_footer,
8939         cfg_layout_function_header) Reindent to make gengtype happy.
8940         * cfglayout.h (cfg_layout_function_footer,
8941         cfg_layout_function_header): Add GTY(()) marker.
8942
8943         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
8944
8945 2007-01-18  Ben Elliston  <bje@au.ibm.com>
8946
8947         * genautomata.c (write_automata): Include xstrerror output in the
8948         error message if writing the DFA description file fails.
8949
8950 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
8951
8952         * config/mips/mips-protos.h (mips_output_external): Make it
8953         return void.
8954         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
8955         * config/mips/mips.c (irix_output_external_libcall): Likewise.
8956         (extern_list): Likewise.
8957         (extern_head): Likewise.
8958         (TARGET_ASM_FILE_END): Likewise.
8959         (mips_file_end): Likewise.
8960         (mips_output_external): Rewritten.
8961
8962 2007-01-18  Ben Elliston  <bje@au.ibm.com>
8963
8964         * genpreds.c (write_insn_preds_c): Only write out the function
8965         body for regclass_for_constraint if we have register constraints.
8966
8967 2007-01-17  Tom Tromey  <tromey@redhat.com>
8968
8969         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
8970         * doc/install.texi (Testing): Use sourceware.org.
8971         (Binaries): Likewise.
8972         (Specific): Likewise.
8973         * doc/contrib.texi (Contributors): Use sourceware.org.
8974
8975 2007-01-17  Anatoly Sokolov <aesok@post.ru>
8976
8977         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
8978         (AVR_ENHANCED): Rename to ...
8979         (AVR_HAVE_MUL): ... new.
8980         (avr_enhanced_p): Rename to ...
8981         (avr_have_mul_p): ... new.
8982         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
8983         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
8984         * config/avr/avr.c (avr_enhanced_p): Rename to ...
8985         (avr_have_mul_p): ... new.
8986         (base_arch_s): Rename 'enhanced' to 'have_mul'.
8987         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
8988         'avr_enhanced_p' and 'enhanced'.
8989         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
8990         AVR_HAVE_MUL instead of AVR_ENHANCED.
8991         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
8992         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
8993         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
8994         instead of AVR_ENHANCED.
8995         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
8996         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
8997         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
8998
8999 2007-01-17  Ian Lance Taylor  <iant@google.com>
9000
9001         * vec.h (VEC_reserve_exact): Define.
9002         (vec_gc_p_reserve_exact): Declare.
9003         (vec_gc_o_reserve_exact): Declare.
9004         (vec_heap_p_reserve_exact): Declare.
9005         (vec_heap_o_reserve_exact): Declare.
9006         (VEC_OP (T,A,reserve_exact)): New static inline function, three
9007         versions.
9008         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
9009         negative parameter.
9010         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
9011         (VEC_OP (T,A,copy)) [all versions]: Likewise.
9012         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
9013         * vec.c (calculate_allocation): Add exact parameter.  Change all
9014         callers.
9015         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
9016         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
9017         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
9018         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
9019         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
9020         (vec_heap_p_reserve_exact): New function.
9021         (vec_heap_o_reserve_exact): New function.
9022
9023 2007-01-17  Jan Hubicka  <jh@suse.cz>
9024
9025         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
9026
9027 2007-01-17  Eric Christopher  <echristo@apple.com>
9028
9029         * config.gcc: Support core2 processor.
9030
9031 2007-01-16  Jan Hubicka  <jh@suse.cz>
9032
9033         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
9034         the names, just unlink the chain so we don't crash on dangling pointers
9035         to dead SSA names.
9036
9037 2007-01-16  Jan Hubicka  <jh@suse.cz>
9038
9039         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
9040         * tree-pass.h: Reorder to make IPA passes appear toegher.
9041         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
9042         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
9043         parameters, do not call early inliner.
9044         * ipa-inline.c: Update comments.  Include tree-flow.h
9045         (cgraph_decide_inlining): Do not compute inlining parameters.
9046         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
9047         be called with function context set up.
9048         (pass_ipa_inline): Remove unreachable functions before pass.
9049         (cgraph_early_inlining): Simplify assuming to be called from the
9050         PM as local pass.
9051         (pass_early_inline): New pass.
9052         (cgraph_gate_ipa_early_inlining): New gate.
9053         (pass_ipa_early_inline): Turn into simple wrapper.
9054         (compute_inline_parameters): New function.
9055         (gate_inline_passes): New gate.
9056         (pass_inline_parameters): New pass.
9057         (apply_inline): Move here from tree-optimize.c
9058         (pass_apply_inline): New pass.
9059         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
9060         transforming.
9061         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
9062         doing them by hand.
9063         (tree_function_versioning): Do not allocate dummy struct function.
9064         * tree-inline.h (optimize_inline_calls): Update prototype.
9065         * tree-optimize.c (execute_fixup_cfg): Export.
9066         (pass_fixup_cfg): Remove
9067         (tree_rest_of_compilation): Do not apply inlines.
9068         * tree-flow.h (execute_fixup_cfg): Declare.
9069         * Makefile.in (gt-passes.c): New.
9070         * passes.c: Include gt-passes.h
9071         (init_optimization_passes): New passes.
9072         (nnodes, order): New static vars.
9073         (do_per_function_toporder): New function.
9074         (execute_one_pass): Dump current pass here.
9075         (execute_ipa_pass_list): Don't dump current pass here.
9076
9077 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
9078
9079         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
9080         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
9081
9082 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
9083
9084         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
9085         (strong_alias): Define.
9086         (__gcc_qmul): Provide non-FMA for soft-float.
9087         (__gcc_qdiv): Same.
9088         (__gcc_qneg): New.
9089         (__gcc_qeq): New.
9090         (__gcc_qle): New.
9091         (__gcc_qge): New.
9092         (__gcc_qunord): New.
9093         (__gcc_stoq): New.
9094         (__gcc_dtoq): New.
9095         (__gcc_qtos): New.
9096         (__gcc_qtod): New.
9097         (__gcc_qtoi): New.
9098         (__gcc_qtou): New.
9099         (__gcc_itoq): New.
9100         (__gcc_utoq): New.
9101         (fmsub): New.
9102         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
9103         soft-float functions.
9104         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
9105         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
9106         about long double soft float.
9107
9108 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
9109             Tehila Meyzels  <tehila@il.ibm.com>
9110
9111         * tree-vectorizer.h (is_pattern_stmt_p): New.
9112         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
9113         formatting (tabs instead of spaces). Cleanup and clarify setting
9114         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
9115         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
9116         (vectorizable_type_demotion): Check that types are integral.
9117         (vectorizable_type_promotion): Likewise.
9118         (vectorizable_store): Fix typo.  Eliminate new-line at end of
9119         comments.
9120
9121 2007-01-16  Jan Hubicka  <jh@suse.cz>
9122
9123         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
9124         cgraph edges too.
9125
9126 2007-01-15  Eric Christopher  <echristo@apple.com>
9127
9128         * ifcvt.c: Include vec.h, vecprim.h.
9129         (check_cond_move_block): New argument regs.
9130         Reorganize. Add registers used to regs.
9131         (cond_move_process_if_block): Use regs set above as
9132         loop bounds.
9133
9134 2007-01-15  Eric Christopher  <echristo@apple.com>
9135
9136         * config/darwin.h: Update copyright.
9137         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
9138         (LINK_COMMAND_SPEC): Add -u.
9139         (LINK_SPEC): Fix umbrella for above.
9140
9141 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
9142
9143         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
9144         glibc CVS.
9145
9146 2007-01-15  Tom Tromey  <tromey@redhat.com>
9147
9148         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
9149         * doc/install.texi (Testing): Don't mention jacks.
9150         (Configuration): Document --enable-java-maintainer-mode.  Move
9151         --with-java-home to libgcj-specific section.  Document
9152         --with-ecj-jar.
9153         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
9154
9155 2007-01-15  Jan Hubicka  <jh@suse.cz>
9156
9157         * tree-ssa-dce.c (DCE_TODOs): New.
9158         (propagate_necessity): Return if something changed.
9159         (eliminate_unnecessary_stmts): Likewise.
9160         (perform_tree_ssa_dce): Return TODO flags when needed.
9161         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
9162
9163 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
9164
9165         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
9166         (fyl2x_extend<mode>xf3_i387): New insn pattern.
9167         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
9168         patterns using X87MODEF12 mode macro.  Extend operand 1
9169         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
9170         (log10<mode>2): Ditto.
9171         (log2<mode>2): Ditto.
9172         (log1p<mode>2): Ditto.
9173         (logb<mode>2): Ditto.
9174         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
9175         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
9176         (*fxtractxf3_i387): Rename from *fxtractxf3.
9177         (fxtract_extend<mode>xf3_i387): New insn pattern.
9178         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
9179         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
9180         and gen_fyl2xxf3_i387().
9181
9182 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
9183
9184         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
9185         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
9186         get_loop_exit_edges.  Changed return type to bool.
9187         * cfgloop.h (fix_loop_placement): Declaration removed.
9188
9189 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
9190
9191         * param.h (MIN_VECT_LOOP_BOUND): New.
9192         * params.def (MIN_VECT_LOOP_BOUND): New.
9193         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
9194         argument - minimum threshold for number of iterations.
9195         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
9196         argument to declaration.
9197         * tree-vect-analyze.c (vect_analyze_operations): Check value of
9198         MIN_VECT_LOOP_BOUND.
9199         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
9200         slpeel_tree_peel_loop_to_edge with additional argument.
9201         (vect_do_peeling_for_alignment): Likewise.
9202         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
9203
9204 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
9205
9206         PR target/30413
9207         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
9208         operands of size 1.
9209
9210 2007-01-14  Jan Hubicka  <jh@suse.cz>
9211
9212         * tree-dfa.c (remove_referenced_var): New function.
9213         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
9214         prune referenced vars list too.
9215         * tree-flow.h (remove_referenced_var): Declare.
9216
9217 2007-01-14  Jan Hubicka  <jh@suse.cz>
9218
9219         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
9220         separately.
9221         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
9222         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
9223         * except.h (verify_eh_throw_table_statements): Kill prototype.
9224         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
9225         into call exrepssions.
9226         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
9227         eh trhow verifier.
9228         * tree-cfg.c: Include pointer-set.h.
9229         (verify_node_sharing): Work on pointer set.
9230         (verify_eh_throw_stmt_node): New.
9231         (verify_stmts): Use pointers sets, verify throw_stmt.
9232
9233 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
9234
9235         * ipa-reference.c (analyze_function): Consider also addresses taken
9236         in phi nodes.
9237
9238 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9239
9240         * c-typeck.c (null_pointer_constant_p): Replace use of
9241         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9242         (build_c_cast): Likewise.
9243
9244 2007-01-12  Roger Sayle  <roger@eyesopen.com>
9245
9246         * tree.h (force_fit_type_double): Remove unused final argument.
9247         * c-common.c (constant_expression_warning): Replace use of
9248         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9249         (convert_and_check): Likewise.
9250         (shorten_compare): Update call to force_fit_type_double.
9251         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
9252         * convert.c (convert_to_pointer): Update call to
9253         force_fit_type_double.
9254         * fold-const.c (force_fit_type_double): Remove overflowed_const
9255         argument.
9256         (int_const_binop, fold_convert_const_int_from_int,
9257         fold_convert_const_int_from_real, fold_div_compare,
9258         fold_sign_changed_comparison, fold_unary, fold_negate_const,
9259         fold_abs_const, fold_not_const): Remove the final argument from
9260         calls to force_fit_type_double.
9261
9262 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9263
9264         * configure.ac: Set insn to "nop" for spu-*-* also.
9265         * configure: Regenerate.
9266
9267 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
9268
9269         * builtins.def : Add BUILT_IN_FREE.
9270
9271 2007-01-12  Jan Hubicka  <jh@suse.cz>
9272
9273         PR tree-optimization/30443
9274         * tree-inline.c (tree_function_versioning): Do not optimize when
9275         cloning for inlining.
9276
9277 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
9278
9279         * doc/loop.texi: Document recording of loop exits.
9280         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
9281         (update_single_exits_after_duplication,
9282         update_single_exit_for_duplicated_loop,
9283         update_single_exit_for_duplicated_loops): Removed.
9284         (duplicate_loop_to_header_edge): Do not call
9285         update_single_exits_after_duplication and
9286         update_single_exit_for_duplicated_loops.
9287         (loop_version): Do not update single_exit information.
9288         (fix_loop_structure): Use record_loop_exits instead of
9289         mark_single_exit_loops.
9290         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
9291         the lists of loop exits.
9292         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
9293         split_edge, merge_blocks): Update the lists of loop exits.
9294         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
9295         loop_optimizer_init.
9296         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
9297         of mark_single_exit_loops.
9298         (loop_optimizer_finalize): Call release_recorded_exits.
9299         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
9300         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
9301         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
9302         update single exit information.
9303         * lambda-code.c (perfect_nestify): Ditto.
9304         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
9305         (mark_single_exit_loops): Removed.
9306         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
9307         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
9308         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
9309         functions.
9310         (get_loop_exit_edges, single_exit): Use recorded exit lists.
9311         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
9312         (verify_loop_structure): Verify consistency of the exit lists.
9313         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
9314         (set_single_exit): Removed.
9315         * cfgloop.h (struct loop_exit): New function.
9316         (struct loop): single_exit_ field replaced by exits field.
9317         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
9318         (struct loops): Added exits hash.
9319         (mark_single_exit_loops, set_single_exit): Declaration removed.
9320         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
9321
9322 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9323
9324         * doc/invoke.texi: Avoid use of @headitem.
9325
9326 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9327
9328         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
9329
9330 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9331
9332         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
9333         list of targets.
9334
9335 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9336             Richard Sandiford  <richard@codesourcery.com>
9337
9338         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
9339         * config/m68k/m68k.opt: Resort options.
9340         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
9341
9342 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9343             Richard Sandiford  <richard@codesourcery.com>
9344
9345         * doc/invoke.texi: Document the macros that are defined by
9346         m68k's -mtune and -mhard-float options.
9347         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
9348         (m68k_cpp_cpu_family): Likewise.
9349         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
9350         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
9351         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
9352         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
9353         (m68k_cpp_cpu_family): Likewise.
9354
9355 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9356
9357         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
9358         macros besides mc68000 as tuning macros.  Use a switch statement
9359         to set them and mcpu32.
9360
9361 2007-01-12  Julian Brown  <julian@codesourcery.com>
9362
9363         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
9364         (TARGET_68040_ONLY): Rename to...
9365         (TARGET_68040): ...this.
9366         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
9367         * config/m68k/m68k.md: Likewise.
9368
9369 2007-01-12  Julian Brown  <julian@codesourcery.com>
9370             Nathan Sidwell  <nathan@codesourcery.com>
9371             Richard Sandiford  <richard@codesourcery.com>
9372
9373         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
9374         the -mcpu= argument associated with the --with-cpu setting.
9375         Define M68K_DEFAULT_TUNE to the default -mtune= option,
9376         if different from the one implied by the -mcpu setting.
9377         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
9378         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
9379         * doc/invoke.texi: Mention ColdFire in the introduction to the
9380         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
9381         -mno-div and -mhard-float options.  Make -m68881 a synonym for
9382         -mhard-float.  Document the previously-undocumented -m5206e,
9383         -m528x, -m5307 and -m5407 options.  Tweak the existing option
9384         documentation for consistency.
9385         * doc/install.texi: Mention new --with-cpu arguments.
9386         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
9387         default CPU if neither -mcpu nor -march are specified.
9388         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
9389         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
9390         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
9391         using m68k_tune to decide between families that implement the
9392         same ISA.  Use m68k_tune to set __mcfv4e__.
9393         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
9394         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
9395         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
9396         (FL_ISA_C, FL_ISA_MMU): New macros.
9397         (MASK_COLDFIRE): Delete.
9398         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
9399         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
9400         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
9401         (TARGET_HARD_FLOAT): Do not define here.
9402         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
9403         (TUNE_68000): New macro.
9404         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
9405         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
9406         (TUNE_CFV2): Redefine in terms of m68k_tune.
9407         (uarch_type, target_device, fpu_type): New enums.
9408         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
9409         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
9410         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
9411         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
9412         (FL_FOR_isa_c): New macros.
9413         (m68k_isa): New enum.
9414         (m68k_target_selection): New structure.
9415         (all_devices, all_isas, all_microarchs): New tables.
9416         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
9417         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
9418         (MASK_ALL_CPU_BITS): Delete.
9419         (m68k_find_selection): New function.
9420         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
9421         Map the legacy target options to a combination of the new ones.
9422         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
9423         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
9424         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
9425         settings.
9426         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
9427         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
9428         properties.
9429         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
9430         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
9431         * config/m68k/m68k-devices.def: New file.
9432
9433 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9434             Nathan Sidwell  <nathan@codesourcery.com>
9435
9436         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
9437         (SUBTARGET_EXTRA_SPECS): New macros.
9438         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
9439         use %(asm_cpu_spec) instead.
9440         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
9441         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
9442         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
9443         (EXTRA_SPECS): Rename to...
9444         (SUBTARGET_EXTRA_SPECS): ...this.
9445
9446 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
9447             Richard Sandiford  <richard@codesourcery.com>
9448             Julian Brown  <julian@codesourcery.com>
9449
9450         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
9451         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
9452         to the configuration's default CPU.
9453         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
9454         Remove default masks.
9455         (m680[012]0-*-*): Set the default with_cpu to the first part of
9456         the target name.
9457         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
9458         (m68k*-*-linux): Extend the --with-cpu handling to...
9459         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
9460         and m68010.  Don't set target_cpu_default2.
9461         * doc/install.texi: Document --with-cpu for m68k.
9462         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
9463         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
9464         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
9465         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
9466         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
9467         (ASM_SPEC): Remove use of %(asm_cpu_default).
9468         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
9469         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
9470         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
9471         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
9472         __HAVE_FPU__ if TARGET_HARD_FLOAT.
9473         (TARGET_DEFAULT): Delete.
9474         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
9475         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
9476         (CPP_CPU_SPEC): Delete.
9477         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
9478         the appropriate string.
9479         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
9480         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
9481         (ASM_SPEC): Don't use %(asm_default_spec).
9482         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
9483         TARGET_DEFAULT and add MASK_68881.
9484         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
9485
9486 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9487
9488         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
9489         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
9490         MASK_68010 alongside MASK_68020.
9491         * doc/invoke.texi: Document -m68010.
9492         * config/m68k/m68k.opt (m68010): New.
9493         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
9494         if TUNE_68010.
9495         (TUNE_68010): New macro.
9496         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
9497         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
9498         (M68K_CPU_m68332): Add MASK_68010.
9499         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
9500         fallback definition.
9501         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
9502         defines.
9503         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
9504         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
9505         to all entries that use MASK_68020.
9506         (output_move_simode_const, output_move_himode, output_move_qimode)
9507         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
9508         instead of TARGET_68020 to select clr behavior.  Remove comment
9509         about there being no TARGET_68010.
9510         * config/m68k/m68k.md: Likewise throughout.
9511
9512 2007-01-12  Julian Brown  <julian@codesourcery.com>
9513
9514         * config/m68k/m68k.h (TARGET_ISAB): New macro.
9515         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
9516         * config/m68k/m68k.md: Likewise.
9517
9518 2007-01-12  Julian Brown  <julian@codesourcery.com>
9519
9520         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
9521         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
9522
9523 2007-01-12  Julian Brown  <julian@codesourcery.com>
9524
9525         * config/m68k/m68k.h (TUNE_68040_60): New macro.
9526         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
9527         * config/m68k/m68k.md: Likewise.
9528
9529 2007-01-12  Julian Brown  <julian@codesourcery.com>
9530             Richard Sandiford  <richard@codesourcery.com>
9531
9532         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
9533         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
9534         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
9535         TARGET_CPU32.
9536         (TARGET_CPU32): Rename to...
9537         (TUNE_CPU32): ...this.
9538         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
9539         (TUNE_CFV2): New macros.
9540         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
9541         remove conditions that are implied by TARGET_68020.
9542         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
9543         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
9544         (m68k_output_function_epilogue): Likewise.
9545         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
9546         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
9547         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
9548         non-68000 timings.  Refactor multiplication and division costs.
9549         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
9550         TUNE_CPU32 instead of TARGET_CPU32.
9551         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
9552         and TUNE_68060 instead of TARGET_68060.
9553         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
9554         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
9555         TARGET_CPU32.
9556         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
9557         && !TARGET_COLDFIRE" to choose between moveq and clr.
9558         Likewise in the unnamed movsf pattern.
9559         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
9560         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
9561         ashiftrt pattern.
9562
9563 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
9564
9565         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
9566         of tabbing before backslashes.
9567
9568 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
9569
9570         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
9571         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
9572         (ASM_OUTPUT_INTERNAL_LABEL): Define.
9573
9574 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9575
9576         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
9577         find_interesting_uses_cond.
9578         (find_interesting_uses_cond): Use extract_cond_operands.
9579         (rewrite_use_compare): Use extract_cond_operands and
9580         force_gimple_operand_bsi.  Do not call update_stmt.
9581         (determine_use_iv_cost_condition): Use extract_cond_operands.
9582         Return cheaper of using original bound and changing the exit bound.
9583
9584 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
9585
9586         PR tree-optimization/29516
9587         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
9588         most_expensive_mult_to_index, addr_to_parts,
9589         create_mem_ref, maybe_fold_tmr): Make the type of
9590         fields of TARGET_MEM_REF sizetype.
9591         (move_fixed_address_to_symbol, move_pointer_to_base):
9592         New functions.
9593         * tree.def (TARGET_MEM_REF): Add comment on types of
9594         the operands.
9595
9596 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
9597
9598         * c-common.c (vector_types_convertible_p): Treat opaque types as
9599         always convertible if they have the same size, but not otherwise.
9600
9601 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
9602
9603         * ifcvt.c (struct noce_if_info): Add comments to the fields.
9604         Remove the b_unconditional field.
9605         (noce_try_sign_mask): Do not look at b_unconditional.
9606         (noce_process_if_block): Do not use merge_if_blocks.  Update
9607         the CFG here.  Do not set b_unconditional.
9608         (cond_move_process_if_block): Likewise.
9609         (find_cond_trap): Likewise.
9610         (check_cond_move_block): Require simple jump insns at the end
9611         of the basic block.
9612
9613 2007-01-11  Jan Hubicka  <jh@suse.cz>
9614
9615         PR tree-optimization/1046
9616         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
9617         when alias info is not ready.
9618         (pass_tail_recursion): Do not require aliasing.
9619         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
9620         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
9621         * tree-ssa-copy.c (pass_copy_prop): Likewise.
9622         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
9623         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
9624         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
9625         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
9626         before inlining.
9627         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
9628         When aliasing is not build, mark statement as volatile.
9629
9630 2007-01-11  Tom Tromey  <tromey@redhat.com>
9631
9632         PR preprocessor/15185, PR preprocessor/20989:
9633         * doc/cppopts.texi <-MT>: Update description of algorithm for
9634         computing default target.
9635         <-M, -MD>: Reword "basename" text.
9636
9637 2007-01-11  Roger Sayle  <roger@eyesopen.com>
9638
9639         * builtins.c (expand_builtin_pow, expand_builtin_powi,
9640         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
9641         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
9642         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
9643         fold_builtin_bswap, real_constp, fold_builtin_pow,
9644         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
9645         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
9646         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
9647         * convert.c (convert_to_pointer): Likewise.
9648         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
9649         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
9650         const_binop, fold_convert_const_int_from_int,
9651         fold_convert_const_int_from_real,
9652         fold_convert_const_real_from_real, sign_bit_p,
9653         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
9654         fold_sign_changed_comparison, fold_unary, fold_comparison,
9655         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
9656         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
9657         * print-tree.c (print_node_brief, print_node): Likewise.
9658         * stor-layout.c (place_field, layout_type): Likewise.
9659         * tree-chrec.c (keep_cast): Likewise.
9660         * tree.c (build_vector, build_real, build_real_from_int_cst,
9661         build_complex): Likewise.
9662
9663 2007-01-11  Roger Sayle  <roger@eyesopen.com>
9664
9665         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
9666         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
9667
9668 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
9669
9670         * configure.ac (strict1_warn): Rename to strict_warn.
9671         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
9672         cc_set_by_configure, quoted_cc_set_by_configure,
9673         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
9674         all_boot_languages, all_stagestuff): Remove.
9675         (target_list): Remove bootstrap targets.
9676         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
9677         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
9678         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
9679         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
9680         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
9681         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
9682         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
9683         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
9684         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
9685         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
9686         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
9687         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
9688         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
9689         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
9690         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
9691         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
9692         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
9693         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
9694         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
9695         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
9696         (mostlyclean): Adjust.
9697         (clean, distclean): Don't mention bootstrap stuff.
9698         * configure: Regenerate.
9699         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
9700         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
9701         treelang/config-lang.in (stagestuff): Remove.
9702         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
9703         stageprofile, stagefeedback, stagestuff): Remove mention.
9704
9705 2007-01-11  Nick Clifton  <nickc@redhat.com>
9706
9707         * config/mcore/predicates.md (mcore_general_movesrc_operand):
9708         Accept CONSTs.
9709         (mcore_general_movdst_operand): Do not accept CONST_INTs.
9710         (mcore_arith_K_S_operand): Run the test for the S constraint not
9711         the test for the M constraint.
9712         (mcore_addsub_operand): Do not accept integer values that are
9713         larger than 32 bits.
9714         * config/mcore/mcore.md: Remove unused constraints from split.
9715         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
9716         (addsi3): Likewise.
9717         (allocate_stack): Likewise.
9718         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
9719         operands to 32 bits.
9720         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
9721         INTVAL.
9722         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
9723         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
9724         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
9725         mcore_output_bclri, mcore_output_andn, output_inline_const,
9726         mcore_output_move, mcore_output_movedouble): Likewise.
9727         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
9728         (output_inline_const): Likewise.
9729         (output_inline_const): Fix format strings used in sprintf
9730         statements.
9731         * config/mcore/mcore-protos.h: Update prototypes for changed
9732         functions in mcore.c.
9733         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
9734         HOST_WIDE_INT and not int.
9735         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
9736         CONST_OK_FOR_N): Likewise.
9737         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
9738         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
9739         an INTVAL.
9740
9741 2007-01-10  Jan Hubicka  <jh@suse.cz>
9742
9743         * tree-vrp.c (remove_range_assertions): Release defs.
9744         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
9745         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
9746
9747 2007-01-10  Paul Brook  <paul@codesourcery.com>
9748
9749         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
9750         * config/arm/arm.md (mulsi3subsi): New insn.
9751
9752 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
9753
9754         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
9755         (tree_transform_and_unroll_loop): New.
9756         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
9757         Declare.
9758
9759 2007-01-10  Robert Kennedy <jimbob@google.com>
9760
9761         * fold-const.c (fold_comparison): Fold comparisons like (x *
9762         1000 < 0) to (x < 0).
9763
9764 2007-01-10  Ian Lance Taylor  <iant@google.com>
9765
9766         * tree-pretty-print.c (dump_generic_node): Print parentheses when
9767         operands have the same priority.
9768
9769 2007-01-10  Tom Tromey  <tromey@redhat.com>
9770
9771         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
9772         (fold_binary): Likewise.
9773         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
9774         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
9775         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
9776         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
9777         * langhooks.h (struct lang_hooks): Removed field
9778         'can_use_bit_fields_p'.
9779
9780 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
9781
9782         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
9783
9784 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
9785
9786         * function.c (get_last_funcdef_no): New function.
9787         * function.h (get_last_funcdef_no): Declare.
9788         * tree-inline.c (initialize_cfun): Add initialization.
9789         (tree_function_versioning): Cleanup.
9790
9791 2007-01-10  Jan Hubicka  <jh@suse.cz>
9792
9793         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
9794         PHIs.
9795
9796 2007-01-10  Sa Liu  <saliu@de.ibm.com>
9797             Ben Elliston  <bje@au.ibm.com>
9798
9799         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
9800         for SAVE_NONLOCAL and Pmode for any other save level.
9801         * spu-protos.h (spu_restore_stack_block): Declare.
9802         * spu.md (save_stack_block): Remove.
9803         (restore_stack_block): Call spu_restore_stack_block.
9804         * spu.c (spu_restore_stack_block): New function.
9805         (spu_expand_epilogue): Remove old comment.
9806
9807 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
9808
9809         PR tree-optimization/30322
9810         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
9811         (cand_value_at): Return the value as aff_tree.
9812         (may_eliminate_iv): Convert the bound from aff_tree to tree.
9813         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
9814         aff_combination_mult): New functions.
9815         (aff_combination_add): Use aff_combination_add_cst.
9816         (aff_combination_convert): Allow conversions to a wider type.
9817         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
9818         * tree-affine.h (aff_combination_mult): Declare.
9819
9820 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
9821
9822         * doc/tm.texi: Update documentation to reflect reality of exec
9823         and start file search behaviours. Update copyright year.
9824         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
9825         header file directories.
9826
9827 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
9828
9829         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
9830         (*cosxf2): Rename to cosxf2_i387.
9831         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
9832         using X87MODEF12 mode macro. Rename patterns to
9833         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
9834         for SSE math.
9835         (*cosdf2, *cossf2): Ditto.
9836         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
9837         to match extended input operands.
9838         (sincos<mode>3): New expander.
9839         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
9840         insn patterns and corresponding splitters.
9841
9842 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
9843
9844         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
9845         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
9846
9847 2007-01-09  Nicolas Pitre  <nico@cam.org>
9848
9849         PR target/30173
9850         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
9851
9852 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
9853
9854         * target.h (struct gcc_target): New field library_rtti_comdat.
9855         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
9856         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
9857         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
9858         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
9859
9860 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
9861
9862         * doc/invoke.texi (Optimize Options): Correct description of -O0.
9863
9864 2007-01-08  Richard Guenther  <rguenther@suse.de>
9865
9866         * tree.h (force_fit_type_double): Export.
9867         (force_fit_type): Remove.
9868         * fold-const.c (force_fit_type_double): New function.
9869         (force_fit_type): Remove.
9870         (int_const_binop): Use it.
9871         (fold_convert_const_int_from_int): Likewise.
9872         (fold_convert_const_int_from_real): Likewise.
9873         (fold_div_compare): Likewise.
9874         (fold_sign_changed_comparison): Likewise.
9875         (fold_unary): Likewise.
9876         (fold_negate_const): Likewise.
9877         (fold_abs_const): Likewise.
9878         (fold_not_const): Likewise.
9879         * c-common.c (shorten_compare): Use force_fit_type_double.
9880         * convert.c (convert_to_pointer): Likewise.
9881
9882 2007-01-08  Richard Guenther  <rguenther@suse.de>
9883
9884         * tree.h (build_int_cst_wide_type): Export.
9885         * tree.c (build_int_cst_wide_type): New function.
9886         (build_int_cst_wide): Fix comment.
9887         * builtins.c (fold_builtin_object_size): Use build_int_cst
9888         to build -1 or 0 of the correct type.  Use fit_double_type
9889         to check for overflow.
9890         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
9891         to build the mask.
9892         (decode_field_reference): Likewise.
9893         (all_ones_mask_p): Likewise.
9894         (native_interpret_int): Use build_int_cst_wide_type.
9895         (fold_binary): Use build_int_cst_type to build an all-ones
9896         value.
9897         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
9898
9899 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
9900
9901         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
9902
9903 2007-01-09  Ben Elliston  <bje@au.ibm.com>
9904
9905         * genautomata.c (STATS_OPTION): New option.
9906         (stats_flag): New flag.
9907         (gen_automata_option): Handle it.
9908         (initiate_automaton_gen): Ditto.
9909         (write_automata): Output statistics only if stats_flag is
9910         set. Likewise, output time statistics only if time_flag is set.
9911         * doc/md.texi (Processor pipeline description): Document new flag.
9912
9913 2007-01-08  Richard Guenther  <rguenther@suse.de>
9914
9915         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
9916         * tree.c (build_int_cst_type): Likewise.
9917         (size_in_bytes): Don't call force_fit_type on the result.
9918         (int_fits_type_p): Use fit_double_type.
9919         * fold-const.c (fit_double_type): New function.
9920         (force_fit_type): Use it.
9921         * tree.h (fit_double_type): Export.
9922
9923 2007-01-08  Jan Hubicka  <jh@suse.cz>
9924
9925         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
9926         * ipa.c (function_and_variable_visibility): Fix return type.
9927
9928 2007-01-08  Richard Guenther  <rguenther@suse.de>
9929
9930         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
9931         of offset to build the index.
9932         * tree-pretty-print.c (dump_generic_node): Don't build negated
9933         const just for printing.
9934         * c-pretty-print.c (pp_c_integer_constant): Likewise.
9935         * builtins.c (fold_builtin_int_roundingfn): Check if result
9936         fits the type by using force_fit_type and comparing the result.
9937         * predict.c (predict_loops): Use compare_tree_int for comparison.
9938         * tree.c (build_int_cst): Fall back to integer_type_node for
9939         NULL_TREE type.
9940         (build_int_cst_wide): Assert type is non-null.
9941
9942 2007-01-08  Roberto Costa  <roberto.costa@st.com>
9943
9944         * tree-vrp.c (extract_range_from_cond_expr): New.
9945         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
9946         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
9947         as expressions.
9948         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
9949         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
9950         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
9951         used as expressions.
9952         * tree-object-size.c (cond_expr_object_size): New.
9953         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
9954
9955 2007-01-08  Jan Hubicka  <jh@suse.cz>
9956
9957         * tree-ssa-forwprop.c (forward_propagate_into_cond,
9958         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
9959         statement.
9960
9961 2007-01-08  Richard Guenther  <rguenther@suse.de>
9962
9963         PR tree-optimization/23603
9964         * tree-vrp.c (set_value_range_to_truthvalue): New function.
9965         (extract_range_from_binary): Fall back to truthvalue instead of
9966         varying for TRUTH_*_EXPR.
9967         (extract_range_from_comparison): Fall back to truthvalue instead of
9968         varying.
9969         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
9970         if all visited PHI values were constant.
9971
9972 2007-01-08  Jan Hubicka  <jh@suse.cz>
9973
9974         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
9975         (cgraph_analyze_function): break out from ...
9976         (cgraph_finalize_compilation_unit): ... here.
9977         (cgraph_expand_function): Remove forgoten commented out line.
9978         (cgraph_optimize): Analyze functions.
9979
9980 2007-01-08  Jan Hubicka  <jh@suse.cz>
9981
9982         * tree-pas.h (TODO_remove_function): New flag.
9983         (TODO_update*): Renumber.
9984         (pass_ipa_increase_alignment,
9985         pass_ipa_function_and_variable_visibility): New passes.
9986         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
9987         (cgraph_function_and_variable_visibility): Move to ipa.c
9988         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
9989         cgraph_increase_alignment.
9990         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
9991         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
9992         calling tree-inline.
9993         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
9994         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
9995         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
9996         (gate_increase_alignment): New function.
9997         (pass_ipa_increase_alignment): New pass.
9998         * ipa.c: Inline tree-pass.h and timevar.h
9999         (function_and_variable_visibility): Move here from cgraphunit.c
10000         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
10001         * passes.c (init_optimization_passes): Add the two new passes.
10002         (execute_todo): Handle cgraph_remove_functions.
10003
10004 2007-01-08  Nick Clifton  <nickc@redhat.com>
10005
10006         * config/frv/predicates.md (reg_or_0_operand): Accept
10007         CONST_DOUBLEs.
10008
10009 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
10010
10011         * config/bfin/rtems.h, config/bfin/t-rtems: New.
10012         * config.gcc: Add bfin*-rtems*.
10013
10014 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10015
10016         * c.opt: Add -flax-vector-conversions.
10017         * c-typeck.c (convert_for_assignment): Pass flag to
10018         vector_types_convertible_p to allow emission of note.
10019         (digest_init): Likewise.
10020         * c-opts.c: Handle -flax-vector-conversions.
10021         * c-common.c (flag_lax_vector_conversions): New.
10022         (vector_types_convertible_p): Unless -flax-vector conversions
10023         has been passed, disallow conversions between vectors with
10024         differing numbers of subparts and/or element types.  If such
10025         a conversion is disallowed, possibly emit a note on the first
10026         occasion only to inform the user of -flax-vector-conversions.
10027         The new last argument specifies this.
10028         * c-common.h (flag_lax_vector_conversions): New.
10029         (vector_types_convertible_p): Add extra argument.
10030         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
10031         char_type_node for V*QI type vectors.
10032         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
10033         Update to satisfy new typechecking rules.
10034         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
10035         C and C++ variants.
10036         * doc/invoke.texi (C Dialect Options): Document
10037         -flax-vector-conversions.
10038
10039 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
10040
10041         PR tree-optimization/29877
10042         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
10043         a register variable on the RHS to not be replaceable.
10044
10045 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
10046         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
10047         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
10048         const_simm15, const_pow2, const_npow2): Added.
10049         * config/score/misc.md (insv, extv, extzv, movmemsi,
10050         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
10051         * config/score/score.c (score_address_cost, score_select_cc_mode):
10052         Added.
10053         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
10054         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
10055         Update score_print_operand.
10056         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
10057         Adjust register allocate order and update some macro define.
10058         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
10059         mdx_block_move_straight, mdx_block_move_loop_head,
10060         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
10061         mdx_block_move): Added.
10062         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
10063         mdp_limm): Updated and fix some bug and typo.
10064         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
10065         (movsf, movdf, doloop_end): Added.
10066
10067 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
10068
10069         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
10070         config/arm/thumb2.md: Fix comment typos.
10071         * doc/extend.texi: Fix a typo.
10072
10073 2007-01-07  Eric Christopher  <echristo@apple.com>
10074
10075         * configure.ac: Check for __stack_chk_fail for darwin.
10076         * configure: Regenerate.
10077
10078 2007-01-07  Richard Guenther  <rguenther@suse.de>
10079
10080         * tree-vrp.c (extract_range_from_assert): CSE calls to
10081         compare_values where possible.
10082         (extract_range_from_unary_expr): Likewise.
10083
10084 2007-01-07  Anatoly Sokolov <aesok@post.ru>
10085
10086         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
10087         * config/avr/avr.c (call_insn_operand): Delete function.
10088         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
10089         instead of register number. Use predicates.
10090         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
10091         call_insn_operand): Add.
10092
10093 2007-01-06  Jan Hubicka  <jh@suse.cz>
10094
10095         * tree-pass.h (pass_build_cgraph_edges): Declare.
10096         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
10097         (visited_nodes): Remove.
10098         (cgraph_create_edges): Move to cgraphbuild.c; rename to
10099         build_cgrpah_edges; make visited_nodes local.
10100         (cgraph_process_new_functions): DO not call initialize_inline_failed.
10101         (record_references_in_initializer): Move to cgraphbuild.c
10102         (initialize_inline_failed, rebuild_cgraph_edges,
10103         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
10104         (verify_cgraph_node): Make visited_nodes local.
10105         (cgraph_analyze_function): Do not call cgraph_create_edges and
10106         initialize_inline_failed.
10107         (cgraph_expand_function): Do not call cgraph_lower_function;
10108         assert that function is already lowered.
10109         * Makefile.in (cgraphbuild.o): New.
10110         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
10111         at the end of lowering passes.
10112
10113 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
10114
10115         * ifcvt.c (cond_move_convert_if_block): New function, code
10116         factored out from...
10117         (cond_move_process_if_block): ...here.  Call the new function
10118         on the THEN and ELSE blocks.
10119         (merge_if_block): Do not copy global_live_at_end, merge_blocks
10120         already takes care of this.
10121
10122 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10123
10124         PR c/19978
10125         * tree.h (TREE_OVERFLOW_P): New.
10126         * c-typeck.c (parser_build_unary_op): Warn only if result
10127         overflowed and operands did not.
10128         (parser_build_binary_op): Likewise.
10129         (convert_for_assignment): Remove redundant overflow_warning.
10130         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
10131
10132 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10133
10134         * c-typeck.c (store_init_value): Split over two lines to follow
10135         the GNU coding style.
10136
10137 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
10138
10139         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
10140         __GXX_EXPERIMENTAL_CXX0X__.
10141         * doc/cpp.texi: Same.
10142
10143 2007-01-05  Richard Guenther  <rguenther@suse.de>
10144
10145         PR middle-end/27826
10146         * tree.c (get_narrower): Do not construct COMPONENT_REFs
10147         with mismatched types.  Instead explicitly build a
10148         conversion NOP_EXPR.
10149
10150 2007-01-05  Ian Lance Taylor  <iant@google.com>
10151
10152         * c-common.c (decl_with_nonnull_addr_p): New function.
10153         (c_common_truthvalue_conversion): Call it.
10154         * c-typeck.c (build_binary_op): Likewise.
10155         * c-common.h (decl_with_nonnull_addr_p): Declare.
10156
10157 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
10158
10159         PR c/30360
10160         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
10161         denom against 0.0.
10162
10163 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
10164
10165         * doc/install.texi (Final install): Document the fact that
10166         the GNAT runtime should not be stripped.
10167
10168 2007-01-04  Jan Hubicka  <jh@suse.cz>
10169
10170         * tree-inline.c (fold_marked_statements): Update operand caches
10171         and EH after folding
10172
10173 2007-01-04  Ian Lance Taylor  <iant@google.com>
10174
10175         * c-common.c (check_function_nonnull): Whitespace fix.
10176
10177 2007-01-04  Jan Hubicka  <jh@suse.cz>
10178
10179         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
10180         comitted older version of patch.
10181         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
10182         function, celanup cfg and collect garbage.
10183
10184 2007-01-04  Mike Stump  <mrs@apple.com>
10185
10186         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
10187         (clean): Likewise.
10188
10189 2007-01-04  Eric Christopher  <echristo@apple.com>
10190
10191         * libgcc2.c (__bswapsi2): Use SItype.
10192         (__bswapdi2): Use DItype.
10193         * libgcc2.h: Update for above.
10194
10195 2007-01-04  Paul Brook  <paul@codesourcery.com>
10196
10197         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
10198         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
10199         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
10200         umulsidi3, umulsidi3adddi, smulsi3_highpart,
10201         umulsi3_highpart): Make conditional on !arm_arch6.
10202         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
10203         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
10204         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
10205         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
10206         umulsi3_highpart_v6): New insns.
10207
10208 2007-01-04  Roger Sayle  <roger@eyesopen.com>
10209
10210         * fold-const.c (fold_convert): When casting an expression to void,
10211         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
10212         have a type.  Instead of attempting to build a NOP_EXPR, return
10213         these "special" trees directly.
10214
10215 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
10216
10217         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
10218         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
10219         rs6000_cost->fp not 0 as adjustment for outer NEG.
10220
10221 2007-01-04  Jan Hubicka  <jh@suse.cz>
10222
10223         * cgraph.c (cgraph_release_function_body): New function.
10224         (cgraph_remove_node): Use it.
10225         * cgraph.h (cgraph_release_function_body): Declare.
10226         * cgraphunit.c (cgraph_expand_function): Use it.
10227         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
10228         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
10229         is initialized and while compilation of other function is running.
10230         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
10231         statement CFG annotations from here to ...
10232         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
10233
10234 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
10235
10236         * cfgloop.h (enum li_flags): Make the constants powers of two.
10237
10238 2007-01-04  Jan Hubicka  <jh@suse.cz>
10239
10240         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
10241         set.
10242         (fold_marked_statements): New function.
10243         (optimize_inline_calls, tree_function_versioning): Fold new statements.
10244         * tree-inline.h (copy_body_data): Add statements_to_fold.
10245
10246 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
10247
10248         * config.gcc: Mention libgcc/config.host.
10249         * Makefile.in: Update comments mentioning libgcc.
10250         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
10251         (all.cross, start.encap, rest.encap, rest.cross): Update
10252         dependencies for libgcc move.
10253         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
10254         (clean-target, clean-target-libgcc): Delete.
10255         (srcdirify, GCC_EXTRA_PARTS): New macros.
10256         (libgcc-support, libgcc.mvars): New rules.
10257         (distclean): Remove mention of mklibgcc.
10258         (install): Don't reference INSTALL_LIBGCC.
10259         (install-common): Don't reference EXTRA_PARTS.
10260         (install-libgcc, install-multilib): Delete rules.
10261         * mklibgcc.in: Delete file.
10262         * doc/configfiles.texi: Don't mention mklibgcc.
10263
10264         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
10265         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
10266         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
10267         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
10268         (mklibgcc, ldblspecs): Likewise.
10269
10270         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
10271         (posixpre.def): Use $(T).
10272         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
10273         (SHLIB_SRC, SHLIB_INSTALL): Delete.
10274         (SHLIB_LINK): Make dummy.
10275         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
10276
10277         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
10278
10279         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
10280         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
10281         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
10282         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
10283
10284         * configure.ac (all_outputs): Remove mklibgcc.
10285         * configure: Regenerated.
10286
10287 2007-01-03  Josh Conner  <jconner@apple.com>
10288
10289         PR middle-end/29683
10290         * calls.c (compute_argument_addresses): Set stack and stack_slot
10291         for partial args, too.
10292         (store_one_arg): Use locate.size.constant for the size when
10293         generating a save_area.
10294
10295 2007-01-03  Robert Kennedy <jimbob@google.com>
10296
10297         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
10298         whose definitions are deleted due to basic block merging.
10299
10300 2007-01-03  Paul Brook  <paul@codesourcery.com>
10301
10302         PR target/16634
10303         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
10304         functions.
10305         (use_return_insn): Return 0 for Thumb interrupt functions.
10306         (print_multi_reg): Add rfe argument for IRQ returns.
10307         (arm_output_epilogue): Pop interrupt return address directly into PC.
10308         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
10309
10310 2007-01-03  Paul Brook  <paul@codesourcery.com>
10311
10312         Merge from sourcerygxx-4_1.
10313         * config/arm/thumb2.md: New file.
10314         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
10315         Thumb-2.
10316         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
10317         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10318         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
10319         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
10320         tables.
10321         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
10322         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
10323         comptibility.
10324         * config/arm/ieee754-sf.S: Ditto.
10325         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
10326         (thumb1_base_register_rtx_p): ... to this.
10327         (thumb_index_register_rtx_p): Rename...
10328         (thumb1_index_register_rtx_p): ... to this.
10329         (thumb_output_function_prologue): Rename...
10330         (thumb1_output_function_prologue): ... to this.
10331         (thumb_legitimate_address_p): Rename...
10332         (thumb1_legitimate_address_p): ... to this.
10333         (thumb_rtx_costs): Rename...
10334         (thumb1_rtx_costs): ... to this.
10335         (thumb_compute_save_reg_mask): Rename...
10336         (thumb1_compute_save_reg_mask): ... to this.
10337         (thumb_final_prescan_insn): Rename...
10338         (thumb1_final_prescan_insn): ... to this.
10339         (thumb_expand_epilogue): Rename...
10340         (thumb1_expand_epilogue): ... to this.
10341         (arm_unwind_emit_stm): Rename...
10342         (arm_unwind_emit_sequence): ... to this.
10343         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
10344         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
10345         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
10346         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
10347         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
10348         thumb2_output_casesi): New functions.
10349         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
10350         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
10351         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
10352         THUMB2_WORK_REGS): Define.
10353         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
10354         arm_condexec_mask, arm_condexec_masklen)): New variables.
10355         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
10356         (arm_override_options): Check new CPU capabilities.
10357         Set new architecture flag variables.
10358         (arm_isr_value): Handle v7m interrupt functions.
10359         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
10360         Thumb-2.
10361         (const_ok_for_arm): Handle Thumb-2 constants.
10362         (arm_gen_constant): Ditto.  Use movw when available.
10363         (arm_function_ok_for_sibcall): Return false for v7m interrupt
10364         functions.
10365         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
10366         (thumb_find_work_register, arm_load_pic_register,
10367         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
10368         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
10369         print_multi_reg, output_mov_long_double_fpa_from_arm,
10370         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
10371         output_mov_double_fpa_from_arm, output_move_double,
10372         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
10373         output_return_instruction, arm_output_function_prologue,
10374         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
10375         arm_output_mi_thunk, thumb_set_return_address): Ditto.
10376         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
10377         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
10378         (arithmetic_instr, shift_op): Use arm_shift_nmem.
10379         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
10380         '!' and 'L'.
10381         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
10382         (thumb_expand_prologue): Use thumb_set_frame_pointer.
10383         (arm_file_start): Output directive for unified syntax.
10384         (arm_unwind_emit_set): Handle stack alignment instruction.
10385         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
10386         Add v6t2, v7, v7a, v7r and v7m.
10387         (RETLDM): Add Thumb-2 code.
10388         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
10389         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
10390         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
10391         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
10392         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
10393         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
10394         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
10395         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
10396         ADJUST_INSN_LENGTH): Define.
10397         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
10398         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
10399         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
10400         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
10401         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
10402         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
10403         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
10404         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
10405         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
10406         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
10407         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
10408         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
10409         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
10410         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
10411         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
10412         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
10413         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
10414         cortex-m3.
10415         * config/arm/arm-tune.md: Regenerate.
10416         * config/arm/arm-protos.h: Update prototypes.
10417         * config/arm/vfp.md: Enable patterns for Thumb-2.
10418         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
10419         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
10420         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
10421         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
10422         * config/arm/libunwind.S: Add Thumb-2 code.
10423         * config/arm/constraints.md: Update include Thumb-2.
10424         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
10425         * config/arm/ieee754-df.S: Ditto.
10426         * config/arm/bpabi.S: Ditto.
10427         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
10428         * config/arm/predicates.md (low_register_operand,
10429         low_reg_or_int_operand, thumb_16bit_operator): New.
10430         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
10431         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
10432         * config/arm/t-arm-elf: Add armv7 multilib.
10433         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
10434         Include thumb2.md.
10435         (UNSPEC_STACK_ALIGN, ce_count): New.
10436         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
10437         arm_zero_extendsidi2, arm_zero_extendqidi2): New
10438         insns/expanders.
10439         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
10440         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
10441         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
10442         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
10443         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
10444         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
10445         insns.
10446         * doc/extend.texi: Document ARMv7-M interrupt functions.
10447         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
10448
10449 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
10450
10451         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
10452         (struct _Unwind_Context): Rename args_size to flags, remove
10453         signal_frame field, add a new args_size field and version field.
10454         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
10455         _Unwind_IsExtendedContext): New inline functions.
10456         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
10457         Assume by_value array is only present if _Unwind_IsExtendedContext.
10458         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
10459         _Unwind_IsSignalFrame.
10460         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
10461         (uw_update_context_1): Use _Unwind_SetSignalFrame.
10462         (uw_init_context_1): Initialize context->flags to
10463         EXTENDED_CONTEXT_BIT.
10464         * config/rs6000/linux-unwind.h (frob_update_context): Use
10465         _Unwind_SetSignalFrame.
10466
10467 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
10468
10469         PR middle-end/30353
10470         * gimplify.c (gimplify_modify_expr_complex_part): Move below
10471         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
10472         the value.
10473
10474 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
10475
10476         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
10477         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
10478         RET, AT_SP): Remove.
10479         * config/i386/i386.md (*sse_prologue_save_insn): Use return
10480         instead of RET.
10481
10482         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10483         * cfgbuild.c (find_basic_blocks): Likewise.
10484         * cfgrtl.c (rtl_create_basic_block): Likewise.
10485         * function.c (temp_slots_at_level): Likewise.
10486         * reg-stack.c (stack_regs_mentioned): Likewise.
10487         * regclass.c (allocate_reg_info): Likewise.
10488         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10489         set_bb_for_stmt, move_block_to_fn): Likewise.
10490         * tree-complex.c (tree_lower_complex): Likewise.
10491         * vec.h (VEC_safe_grow_cleared): New.
10492
10493         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
10494
10495 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
10496
10497         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
10498         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
10499         to loop_version.
10500         * cfgloopmanip.c (scale_loop_frequencies): Export.
10501         (loopify): Scale the frequencies by prescribed coefficients.
10502         (set_zero_probability): New function.
10503         (duplicate_loop_to_header_edge): Improve updating of frequencies.
10504         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
10505         and frequencies according to arguments.
10506         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
10507         correctly.
10508         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
10509         * modulo-sched.c (sms_schedule): Set probabilities for entering
10510         versioned loop correctly.
10511         * tree-vect-transform.c (vect_transform_loop): Ditto.
10512         * cfgloop.h (loopify, loop_version): Declaration changed.
10513         (scale_loop_frequencies): Declared.
10514
10515 2007-01-02  Jan Hubicka  <jh@suse.cz>
10516
10517         * cgraph.c: Include tree-flow.h
10518         (cgraph_add_new-function): Handle IPA_SSA mode; execute
10519         early_local_passes.
10520         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
10521         * tree-pass.h (pass_all_early_optimizations): Declare.
10522         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
10523         early_local_passes.
10524         (cgraph_analyze_function): Do early_local_passes.
10525         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10526         Do not add referenced vars.
10527         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
10528         SSA form.
10529         (gate_all_early_local_passes): New gate.
10530         (pass_early_local_passes): Use new gate.
10531         (execute_early_local_optimizations): New functions.
10532         (gate_all_early_optimizations): New gate.
10533         (pass_all_early_optimizations): New pass.
10534         (execute_free_datastructures): Free SSA only when initialized.
10535         (gate_init_datastructures): Init only when optimizing.
10536         (tree_lowering_passes): Do early local passes when called late.
10537         * tree-profile.c (do_tree_profiling): Don't profile functions added
10538         late.
10539         (do_early_tree_profiling, pass_early_tree_profile): Kill.
10540         * tree-cfg.c (update_modified_stmts): Do not update when operands are
10541         not active.
10542         * passes.c (init_optimizations_passes): Reorder so we go into SSA
10543         during early_local_passes.
10544         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
10545
10546
10547 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10548
10549         * Makefile.in: Update copyright year.
10550
10551 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
10552
10553         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
10554         in $(lang_checks) and check-consistency targets.
10555
10556 2007-01-02  Jan Hubicka  <jh@suse.cz>
10557
10558         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
10559         Do not add referenced vars.
10560         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
10561         are not active.
10562         * passes.c (init_optimization_passes): Put mudflap_2 after
10563         free_datastructures.
10564
10565 2007-01-02  Jan Hubicka  <jh@suse.cz>
10566
10567         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
10568         Set NOTHROW flag on call statements proved to be nothrow.
10569         Update statement of local calls so new pure/const functions are
10570         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
10571         goto receivers.
10572         (tree_rest_of_compilation): Register hooks and initialize bitmap
10573         early. Do not set after_inlining flag.
10574
10575 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
10576
10577         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
10578         HOST_BITS_PER_LONGLONG
10579
10580 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
10581
10582         PR c/19977
10583         * c-typeck.c (store_init_value): Don't emit pedantic overflow
10584         warning for non-static initializers.
10585
10586 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
10587
10588         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
10589         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
10590         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
10591         Always use set_unique_reg_note to add REG_EQUAL notes.
10592
10593 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10594
10595         Revert:
10596         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10597
10598         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10599         * cfgbuild.c (find_basic_blocks): Likewise.
10600         * cfgrtl.c (rtl_create_basic_block): Likewise.
10601         * function.c (temp_slots_at_level): Likewise.
10602         * reg-stack.c (stack_regs_mentioned): Likewise.
10603         * regclass.c (allocate_reg_info): Likewise.
10604         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10605         set_bb_for_stmt, move_block_to_fn): Likewise.
10606         * tree-complex.c (tree_lower_complex): Likewise.
10607         * vec.h (VEC_safe_grow_cleared): New.
10608
10609 2007-01-02  Ian Lance Taylor  <iant@google.com>
10610
10611         * c-common.c (c_common_truthvalue_conversion): When warning about
10612         using an assignment as a truth value, set TREE_NO_WARNING.
10613
10614 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10615
10616         PR middle-end/7651
10617         * c.opt (Wold-style-declaration): New.
10618         * doc/invoke.texi (C-only Warning Options): New.
10619         (Wold-style-declaration): Document it.
10620         (Wextra): Enabled by -Wextra.
10621         * c-opts.c (c_common_post_options): Enabled by -Wextra.
10622         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
10623         -Wold-style-declaration.
10624
10625 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
10626
10627         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
10628         * cfgbuild.c (find_basic_blocks): Likewise.
10629         * cfgrtl.c (rtl_create_basic_block): Likewise.
10630         * function.c (temp_slots_at_level): Likewise.
10631         * reg-stack.c (stack_regs_mentioned): Likewise.
10632         * regclass.c (allocate_reg_info): Likewise.
10633         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
10634         set_bb_for_stmt, move_block_to_fn): Likewise.
10635         * tree-complex.c (tree_lower_complex): Likewise.
10636         * vec.h (VEC_safe_grow_cleared): New.
10637
10638 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
10639
10640         * c-common.c (c_common_nodes_and_builtins): Since variants of
10641         void_type_node get built before it is given a name, we need to
10642         give those variants the name, too.
10643         (complete_array_type): We need to work with the canonical main
10644         type of the array, from which we will build the qualified version.
10645         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
10646         * print-tree.c (print_node): Display canonical type information
10647         for each type.
10648         * stor-layout.c (layout_type): When we don't know the
10649         alignment of a type for which we're building an array, we end up
10650         guessing wrong, so make the type require structural equality.
10651         * tree.c (make_node_stat): When we build a new type, it is its
10652         own canonical type.
10653         (build_type_attribute_qual_variant): When building an attribute
10654         variant, its canonical type is the non-attribute variant. However,
10655         if the attributes are target-dependent and they differ, we need to
10656         use structural equality checks for this type.
10657         (build_qualified_type): A qualified type is not equivalent to its
10658         unqualified variant; set the canonical type appropriately.
10659         (build_distinct_type_copy): When building a distinct type from
10660         another type, the new type is its own canonical type.
10661         (build_variant_type_copy): When building a new type variant, we
10662         assume that it is equivalent to the original type.
10663         (build_pointer_type_for_mode): When building a pointer type, also
10664         build a canonical type pointer.
10665         (build_reference_type_for_mode): When building a reference type,
10666         also build a canonical type reference.
10667         (build_index_type): When we can't hash an index type (e.g.,
10668         because its maximum value is negative), the index type requires
10669         structural equality tests.
10670         (build_array_type): Build the canonical form of an array type.
10671         (build_function_type): Function types require structural equality,
10672         because they contain default arguments, attributes, etc.
10673         (build_method_type_directly): Ditto for method types.
10674         (build_offset_type): Build the canonical offset type.
10675         (build_complex_type): Build the canonical vector type.
10676         (make_vector_type): Build the canonical vector type.
10677         * tree.h (TYPE_CANONICAL): New.
10678         (TYPE_STRUCTURAL_EQUALITY_P): New.
10679         (SET_TYPE_STRUCTURAL_EQUALITY): New.
10680         (struct tree_type): Added "canonical" field.
10681         * params.h (VERIFY_CANONICAL_TYPES): New.
10682         * doc/c-tree.texi (TYPE_CANONICAL): Document.
10683         (TYPE_STRUCTURAL_EQUALITY_P): Document.
10684         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
10685         * doc/invoke.texi (verify-canonical-types): Document --param
10686         parameter for verifying canonical types.
10687
10688 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10689
10690         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
10691         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
10692         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
10693         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
10694         tm_file.
10695         * config/rs6000/e500.h: New.
10696         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
10697         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
10698         Remove.
10699         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
10700         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
10701         TARGET_E500_DOUBLE): Remove.
10702         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
10703         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
10704         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
10705         * config/rs6000/rs6000.c (rs6000_override_options): Use
10706         CHECK_E500_OPTIONS.
10707
10708 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10709
10710         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
10711         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
10712         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
10713         rs6000_emit_cmove): Don't check TARGET_E500.
10714         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
10715         sordered): Don't check TARGET_E500.
10716
10717 2007-01-01  Eric Christopher  <echristo@apple.com>
10718
10719         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
10720         HARD_REGISTER_NUM_P.
10721
10722 2007-01-01  Roger Sayle  <roger@eyesopen.com>
10723
10724         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
10725         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
10726         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
10727         eq/ne Y".
10728
10729 2007-01-01  Mike Stump  <mrs@apple.com>
10730
10731         * configure.ac: Remove support for building with Apple's gcc-3.1.
10732
10733 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
10734
10735         PR middle-end/30311
10736         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
10737         REG is a hard register.  Do not modify REG before calling
10738         subreg_nregs.
10739         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
10740         multiple of the size of YMODE for certain lowpart cases.
10741
10742 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10743
10744         PR middle-end/30253
10745         * gimplify (voidify_wrapper_expr): Update for
10746         GIMPLE_MODIFY_STMT.
10747
10748 2007-01-01  Andreas Schwab  <schwab@suse.de>
10749
10750         PR target/29166
10751         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
10752         save of BR0 in extra_spill_size instead of spill_size.
10753         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
10754         area.
10755         (ia64_expand_epilogue): Restore BR0 from its new location.
10756
10757 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10758
10759         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
10760         Use a temporary variable if the left hand side is not a gimple
10761         register.
10762
10763 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
10764
10765         * gimplify.c (gimplify_return_expr): Make the temporary variable
10766         for the return expression, a gimple register variable.
10767
10768 2007-01-01  Jan Hubicka  <jh@suse.cz>
10769
10770         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
10771         INSN_LIST.
10772
10773 2007-01-01  Mike Stump  <mrs@apple.com>
10774
10775         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
10776         .literal16.
10777         * config/darwin.c (machopic_select_rtx_section): Use
10778         HAVE_GAS_LITERAL16.
10779         (darwin_mergeable_constant_section): Likewise.
10780         * configure: Regenerate.
10781         * config.in: Regenerate.
10782
10783 2007-01-01  Jan Hubicka  <jh@suse.cz>
10784             Andrew Pinski  <pinskia@gmail.com>
10785
10786         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
10787         before starting IPA passes.