OSDN Git Service

1c32a95fbb361e980783a23db5239c74b3049689
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-13  Mike Stump  <mrs@apple.com>
2
3         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
4         we can...
5         * config/darwin.opt (fapple-kext): Make C++ only.
6         * config/darwin.c (darwin_override_options): Remove code to ensure
7         -fapple-kext is given for C++ only.
8
9 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
10
11         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
12         * config/mips/mips.c (override_options): Call
13         SUBTARGET_OVERRIDE_OPTIONS, if defined.
14
15 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
16
17         * config/i386/i386.opt (msvr3-shlib): Removed.
18
19         * doc/invoke.texi: Remove -msvr3-shlib.
20
21 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
22
23         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
24         with "popcnt" instruction.
25
26 2007-04-13  Richard Guenther  <rguenther@suse.de>
27
28         PR tree-optimization/21258
29         * tree-vrp.c (compare_case_labels): New helper.
30         (find_switch_asserts): New function.
31         (find_assert_locations): Call it for SWITCH_EXPRs.
32
33 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
34
35         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
36         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
37         check is now implied in X87_FLOAT_MODE_P.
38         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
39         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
40         (fix_trunc<mode>_i386_fisttp): Ditto.
41         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
42         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
43         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
44         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
45         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
46         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
47         (unnamed_splitters): Ditto.
48         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
49         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
50         FIRST_SSE_REG for local functions when SSE math is enabled or
51         for functions with sseregparm attribute.
52         (standard_80387_constant_p): Return -1 if mode is not
53         X87_FLOAT_MODE_P.
54         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
55         (ix86_expand_compare): Ditto.
56         (ix86_expand_carry_flag_compare): Ditto.
57         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
58         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
59         DECIMAL_FLOAT_MODE_P.
60         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
61         of SCALAR_FLOAT_MODE_P.
62         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
63         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
64         checks before FLOAT_MODE_P.
65         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
66         before FLOAT_MODE_P.
67         [DIV]: Ditto.
68         [NEG]: Ditto.
69         [ABS]: Ditto.
70         [SQRT]: Ditto.
71         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
72
73 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
74             Charles Wilson  <libtool@cwilson.fastmail.fm>
75
76         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
77         (libgcc.mvars): Don't depend on them.
78         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
79         * exec-tool.in: New.
80
81 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
82
83         * doc/invoke.text (--help): Document --help=common.
84
85 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
86
87         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
88
89 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
90
91         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
92         * genemit.c (main): Emit #include "integrate.h".
93         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
94         (LOADGP_RTP): New mips_loadgp_style.
95         * config/mips/mips.h: Include config/vxworks-dummy.h.
96         (TARGET_RTP_PIC): New macro.
97         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
98         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
99         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
100         for TARGET_RTP_PIC.
101         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
102         -mvxworks-pic when using -mrtp and a PIC option.
103         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
104         for RTP PIC.
105         (mips_symbolic_constant_p, mips_symbolic_address_p)
106         (mips_symbol_insns): Handle SYMBOL_HALF.
107         (override_options): Warn about -G and -mrtp being used together.
108         Initialize mips_lo_relocs[SYMBOL_HALF].
109         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
110         (mips_emit_loadgp): Handle LOADGP_RTP.
111         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
112         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
113         (tablejump): Handle function-relative case table entries if
114         TARGET_RTP_PIC.
115         * config/mips/predicates.md (symbol_ref_operand): New predicate.
116
117 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
118
119         * config/mips/mips.md (load_call<mode>): Allow any general register.
120         destination.
121         (sibcall_value_internal, sibcall_value_multiple_internal)
122         (call_value_internal, call_value_split, call_value_multiple_internal)
123         (call_value_multiple_split): Remove constraints from operand 0.
124
125 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
126
127         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
128         rather than loadgp_noshared.
129         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
130         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
131         gen_loadgp.
132         * config/mips/mips.md (loadgp): Rename to...
133         (loadgp_newabi): ...this.
134         (loadgp_noshared): Rename to...
135         (loadgp_absolute): ...this.
136
137 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
138
139         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
140         false for locally-binding symbols.
141         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
142
143 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
144
145         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
146         (SYMBOL_GOT_PAGE_OFST): ...this.
147         (SYMBOL_GOT_GLOBAL): Rename to...
148         (SYMBOL_GOT_DISP): ...this.
149         (SYMBOL_GOTOFF_GLOBAL): Rename to...
150         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
151         * config/mips/mips.c (mips_global_symbol_p): New function.
152         (mips_symbol_binds_local_p): Likewise.
153         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
154         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
155         and mips_symbol_binds_local_p.
156         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
157         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
158         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
159         SYMBOL_GOTOFF_DISP.
160         (mips_ok_for_lazy_binding_p): New function.
161         (mips_load_call_address, mips_expand_call): Use it.
162         (mips_dangerous_for_la25_p): Likewise.
163         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
164         (*got_disp<mode>): Use got_disp_operand instead of
165         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
166         SYMBOL_GOTOFF_GLOBAL.
167         (*got_page<mode>): Use got_page_ofst_operand instead of
168         local_got_operand.
169         * config/mips/predicates.md (const_call_insn_operand): Use
170         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
171         (global_got_operand): Rename to...
172         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
173         SYMBOL_GOT_GLOBAL.
174         (local_got_operand): Rename to...
175         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
176         of SYMBOL_GOT_LOCAL.
177
178 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
179
180         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
181         TARGET_CALL_CLOBBERED_GP.
182         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
183         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
184         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
185         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
186         of TARGET_ABICALLS && !TARGET_NEWABI.
187         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
188         * config/mips/mips.c (mips_load_call_address): Check
189         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
190         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
191         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
192         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
193         TARGET_ABICALLS && TARGET_NEWABI.
194         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
195         TARGET_ABICALLS.
196         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
197         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
198         TARGET_ABICALLS && TARGET_NEWABI.
199         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
200         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
201         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
202         whether indirect calls must use $25.
203         (mips_extra_live_on_entry): Check TARGET_GOT instead of
204         TARGET_ABICALLS.
205         * config/mips/mips.md (jal_macro): Check flag_pic and
206         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
207         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
208         instead of TARGET_ABICALLS.
209         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
210         TARGET_ABICALLS && TARGET_OLDABI.
211         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
212         (sibcall): In the comment above the define_insn, mention
213         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
214         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
215         instead of TARGET_ABICALLS.
216
217 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
218
219         * doc/md.texi (Blackfin family constraints): Document PA and PB.
220         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
221         (MACFLAGS_MATCH_P): New macro.
222         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
223         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
224         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
225         the other MACFLAG constants.
226         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
227         (flag_machi): Tighten constraints.  Renumber some of the operands.
228         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
229         output template.
230         (flag_machi_parts_acconly): New pattern.
231         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
232         used.
233         (flag_macinit1hi): Tighten constraints.
234         (flag_mul_macv2hi_parts_acconly): New pattern.
235
236         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
237         Use a more efficient implementation.
238         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
239         inline sequences when not optimizing for size.
240
241         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
242         movhi_high2low): Delete, merge functionality into...
243         (packv2hi): ... this pattern.
244
245         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
246         * config/bfin/bfin.opt (msim): New option.
247         (mcpu=): New option.
248         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
249         (bfin_cpu_t): Typedef of enum bfin_cpu.
250         (bfin_cpu_type): New declaration.
251         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
252         -msim and -mcpu= options.
253         (LIB_SPEC): Likewise.
254         * config/bfin/bfin.c (bfin_cpu_type): Define.
255         (bfin_handle_option): Handle -mcpu= option.
256         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
257         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
258         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
259
260 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
261
262         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
263         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
264         (powerpc-wrs-vxworksae): Use ${tm_file}.
265         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
266         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
267         * config/i386/vx-common.h: New file.
268
269 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
270
271         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
272         of crt0.o%s.
273
274 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
275
276         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
277         ldxtr.
278
279 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
280
281         PR c++/31078
282         PR c++/31103
283         * c-common.c (c_build_qualified_type): Set canonical type
284         appropriately.  
285
286 2007-04-12  Richard Guenther  <rguenther@suse.de>
287
288         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
289         lower bound and element size if lower bound is not zero
290         or either of the ARRAY_REF operands is set.
291
292 2007-04-12  Richard Guenther  <rguenther@suse.de>
293
294         PR tree-optimization/24689
295         PR tree-optimization/31307
296         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
297         indices by value.
298         * gimplify.c (canonicalize_addr_expr): To be consistent with
299         gimplify_compound_lval only set operands two and three of
300         ARRAY_REFs if they are not gimple_min_invariant.  This makes
301         it never at this place.
302         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
303
304 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
305
306         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
307         null before emitting a .nsubspa directive.
308
309 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
310
311         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
312         need_to_partition_p if there are no memory statements in the
313         function.
314
315 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
316
317         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
318         (gcd_of_steps_may_divide_p): New function.
319         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
320
321 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
322
323         * reload.c (find_reloads_toplev, find_reloads_address,
324         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
325         not a pointer equality test, to decide if we need to call
326         push_reg_equiv_alt_mem.
327
328 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
329
330         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
331         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
332         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
333
334 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
335
336         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
337         vector to be positive.
338
339 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
340
341         PR 30735
342         PR 31090
343         * doc/invoke.texi: Document --params max-aliased-vops and
344         avg-aliased-vops.
345         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
346         debug_memory_partitions): Move to tree-flow.h
347         * params.h (AVG_ALIASED_VOPS): Define.
348         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
349         users.
350         (mp_info_t): Likewise.
351         (get_mem_sym_stats_for): New.
352         (set_memory_partition): Move from tree-flow-inline.h.
353         (mark_non_addressable): Only clear the set of symbols for the
354         partition if it exists.
355         (dump_memory_partitions): Move from tree-ssa-operands.c
356         (debug_memory_partitions): Likewise.
357         (need_to_partition_p): New.
358         (dump_mem_ref_stats): New.
359         (debug_mem_ref_stats): New.
360         (dump_mem_sym_stats): New.
361         (debug_mem_sym_stats): New.
362         (update_mem_sym_stats_from_stmt): New.
363         (compare_mp_info_entries): New.
364         (mp_info_cmp): Call it.
365         (sort_mp_info): Change argument to a list of mem_sym_stats_t
366         objects.
367         (get_mpt_for): Move from tree-ssa-operands.c.
368         (find_partition_for): New.
369         (create_partition_for): Remove.
370         (estimate_vop_reduction): New.
371         (update_reference_counts): New.
372         (build_mp_info): New.
373         (compute_memory_partitions): Refactor.
374         Document new heuristic.
375         Call build_mp_info, update_reference_counts,
376         find_partition_for and estimate_vop_reduction.
377         (compute_may_aliases): Populate virtual operands before
378         calling debugging dumps.
379         (delete_mem_sym_stats): New.
380         (delete_mem_ref_stats): New.
381         (init_mem_ref_stats): New.
382         (init_alias_info): Call it.
383         (maybe_create_global_var): Remove alias_info argument.
384         Get number of call sites and number of pure/const call sites
385         from gimple_mem_ref_stats().
386         (dump_alias_info): Call dump_memory_partitions first.
387         (dump_points_to_info_for): Show how many times a pointer has
388         been dereferenced.
389         * opts.c (decode_options): For -O2 set --param
390         max-aliased-vops to 500.
391         For -O3 set --param max-aliased-vops to 1000 and --param
392         avg-aliased-vops to 3.
393         * fortran/options.c (gfc_init_options): Remove assignment to
394         MAX_ALIASED_VOPS.
395         * tree-flow-inline.h (gimple_mem_ref_stats): New.
396         * tree-dfa.c (dump_variable): Dump memory reference
397         statistics.
398         Dump NO_ALIAS* settings.
399         (referenced_var_lookup): Tidy.
400         (mem_sym_stats): New.
401         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
402         and ORIG are different SSA names for a memory partition.
403         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
404         * tree-flow.h (struct mem_sym_stats_d): Define.
405         (mem_sym_stats_t): Define.
406         (struct mem_ref_stats_d): Define.
407         (struct gimple_df): Add field mem_ref_stats.
408         (enum noalias_state): Define.
409         (struct var_ann_d): Add bitfield noalias_state.
410         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
411         debug_mem_ref_stats, debug_memory_partitions,
412         debug_mem_sym_stats): Declare.
413         * tree-ssa-structalias.c (update_alias_info): Update call
414         sites, pure/const call sites and asm sites in structure
415         returned by gimple_mem_ref_stats.
416         Remove local variable IS_POTENTIAL_DEREF.
417         Increase NUM_DEREFS if the memory expression is a potential
418         dereference.
419         Call update_mem_sym_stats_from_stmt.
420         If the memory references memory, call
421         update_mem_sym_stats_from_stmt for all the direct memory
422         symbol references found.
423         (intra_create_variable_infos): Set noalias_state field for
424         pointer arguments according to the value of
425         flag_argument_noalias.
426         * tree-ssa-structalias.h (struct alias_info): Remove fields
427         num_calls_found and num_pure_const_calls_found.
428         (update_mem_sym_stats_from_stmt): Declare.
429         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
430         Set default value to 100.
431         (PARAM_AVG_ALIASED_VOPS): Define.
432
433 2007-04-11  Richard Guenther  <rguenther@suse.de>
434
435         PR middle-end/31530
436         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
437         a * -b + c as c - a * b if we honor sign dependent rounding.
438
439 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
440
441         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
442         bfin_expand_strmov.
443         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
444         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
445         variables.
446         (initialize_trampoline): Don't use old-style function definition.
447         (bfin_secondary_reload): Mark IN_P argument as unused.
448
449 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
450
451         PR tree-optimization/31343
452         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
453         (build_polynomial_chrec): Return a scalar when the evolution is zero.
454         * testsuite/gcc.dg/vect/pr31343.c: New.
455
456 2007-04-10  Eric Christopher  <echristo@apple.com>
457
458         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
459         * config/i386/i386.md (*cmpfp0): Use.
460         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
461         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
462         (fix_trunc<mode>_i386_fisttp): Ditto.
463         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
464         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
465         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
466         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
467         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
468         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
469         (unnamed_splitters): Ditto.
470         * config/i386/i386.c (output_fix_trunc): Assert that
471         we're not being passed a TFmode operand.
472
473 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
474
475         PR tree-optimization/31526
476         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
477         n_basic_blocks to find newly added blocks.
478
479 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
480
481         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
482         alternative.
483         (fix_trunc<mode>si_sse): Ditto.
484         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
485         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
486         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
487         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
488         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
489         expander using SSEMODEF mode macro.
490         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
491         expander using SSEMODEF mode macro.
492         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
493         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
494         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
495         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
496         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
497         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
498         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
499         Macroize insn using X87MODEF mode macro.
500
501 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
502
503         * config/i386/sse.md (sse2_pinsrw): Removed.
504         (sse2_pextrw): Renamed to ...
505         (*sse2_pextrw): This.
506
507 2007-04-09  Jan Hubicka  <jh@suse.cz>
508
509         PR target/27869
510         * config/i386/sse.md
511         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
512         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
513         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
514         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
515
516 2007-04-09  Jan Hubicka  <jh@suse.cz>
517
518         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
519         multiple fields of union.
520
521 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
522
523         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
524         (create_preheaders): Check that loops are available.
525         (fix_loop_structure): Clean up, improve comments.
526         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
527         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
528         state flags.
529         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
530         * predict.c (tree_estimate_probability): Do not call
531         calculate_dominance_info.  Call create_preheaders.
532         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
533         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
534         flags.
535         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
536         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
537         * tree-cfg.c (tree_split_edge): Make an assert more precise.
538         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
539         arguments.
540
541 2007-04-08  Jan Hubicka  <jh@suse.cz>
542
543         * tree.h (maybe_fold_offset_to_component_ref): Declare.
544         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
545         * fold-const.c (fold_unary): Use it.
546
547 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
548
549         * varasm.c (assemble_variable): Remove call to
550         lang_hooks.decls.prepare_assemble_variable.
551         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
552         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
553         * langhooks.h (lang_hooks_for_decls): Remove
554         prepare_assemble_variable.
555
556 2007-04-08  Mike Stump  <mrs@apple.com>
557
558         * config/i386/i386.c: Use inc/dec on Core2.
559
560 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
561
562         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
563         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
564         lhd_tree_inlining_end_inlining): Remove.
565         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
566         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
567         end_inlining hooks.
568         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
569         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
570         lhd_tree_inlining_end_inlining): Remove prototypes.
571         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
572         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
573         LANG_HOOKS_TREE_INLINING_START_INLINING,
574         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
575
576         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
577         not set it.
578
579 2007-04-08  Anatoly Sokolov <aesok@post.ru>
580
581         PR target/29932
582         * config/avr/predicates.md (io_address_operand): Delete predicate.
583         (low_io_address_operand): Don't use 'mode' argument.
584         (higth_io_address_operand): Rename ...
585         (high_io_address_operand): ... to this. Don't use 'mode' argument.
586         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
587         for above change.
588
589 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
590
591         Revert change removing staticp.
592
593 2007-04-07  Anatoly Sokolov <aesok@post.ru>
594
595         PR target/30289
596         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
597         earlyclobber.
598
599 2007-04-07  Bruce Korb  <bkorb@gnu.org>
600
601         * c.opt: Add -Wformat-contains-nul.
602         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
603           -Wformat setting.
604         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
605         the NUL byte warning.
606
607 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
608
609         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
610
611 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
612
613         * tree.c (staticp): No longer use staticp langhook.
614         * langhooks.c (lhd_staticp): Removed.
615         * langhooks.h (struct lang_hooks): Remove staticp.
616         * c-common.c (c_staticp): Remove.
617         * c-common.h (c_staticp): Ditto.
618         * langhooks-defs.h (lhd_staticp): Ditto.
619         (LHD_HOOKS_STATICP): Ditto
620         * tree.h (gcc_assert_lowered): New macro.
621
622 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
623
624         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
625         argument "reliable".
626         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
627         Add argument "reliable".  Propagate it through calls.
628         (infer_loop_bounds_from_undefined):  Derive number of iterations
629         estimates from references in blocks that do not dominate loop latch.
630         (gcov_type_to_double_int): New function.
631         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
632         and expected_loop_iterations_unbounded.
633         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
634         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
635         * tree-data-ref.c (estimated_loop_iterations): Export.
636         (get_references_in_stmt): Fix -- do not return addresses of local
637         objects.
638         * cfgloop.h (expected_loop_iterations_unbounded,
639         estimated_loop_iterations): Declare.
640
641 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
642
643         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
644
645 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
646
647         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
648         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
649         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
650         Use output_387_reg_move().
651         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
652         expander using X87MODEF12 mode macro.
653         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
654         choosing register preferences.  Use output_387_reg_move().
655         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
656         instead of "x".  Use output_387_reg_move().
657         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
658         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
659         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
660         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
661         Use output_387_reg_move().
662         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
663         mode macro.
664         (*truncxf?f_i387 splitter): Ditto.
665
666 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
667
668         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
669         LANG_HOOKS_SAFE_FROM_P.
670         * expr.c (safe_from_p): Remove langhook call.
671         * langhooks.h (lang_hooks): Remove safe_from_p.
672         (lhd_safe_from_p): Remove prototype.
673         * langhooks.c (lhd_safe_from_p): Remove.
674
675 2007-04-06  Jan Hubicka  <jh@suse.cz>
676
677         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
678         functions.
679
680 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
681
682         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
683         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
684         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
685         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
686         alternative.
687         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
688         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
689
690 2007-04-05  Richard Henderson  <rth@redhat.com>
691
692         * config/alpha/alpha.c (print_operand) [+]: Remove.
693         (alpha_end_function): Print nop if call at end of function.
694         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
695         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
696         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
697         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
698         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
699         the call pattern. Update peepholes to match.
700
701 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
702
703         * doc/extend.texi (Other Builtins): Add decimal float variants
704         of signbit.
705         * builtins.def: Ditto.
706         * builtins.c (expand_builtin): Ditto.
707
708 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
709             H.J. Lu  <hongjiu.lu@intel.com>
710
711         PR target/31478
712         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
713         of V8HImode when calling ix86_binary_operator_ok.
714         (sse2_pmaddwd): Call ix86_binary_operator_ok.
715         (sdot_prodv8hi): Operands 1 and 2 must be register.
716
717 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
718
719         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
720         initialize align to silence bogus warning.
721
722 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
723
724         PR middle-end/22156
725         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
726         all_no_warning.
727         (struct sra_walk_fns): Remove use_all parameter from use.
728         (sra_hash_tree): Handle BIT_FIELD_REFs.
729         (sra_elt_hash): Don't hash bitfld blocks.
730         (sra_elt_eq): Skip them in parent compares as well.  Handle
731         BIT_FIELD_REFs.
732         (sra_walk_expr): Don't maintain or pass down use_all_p.
733         (scan_use): Remove use_all parameter.
734         (scalarize_use): Likewise.  Re-expand assignment to
735         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
736         output, and re-scalarize after output.  Don't mark anything
737         for no warning.
738         (scalarize_ldst): Adjust.
739         (scalarize_walk_gimple_modify_statement): Likewise.
740         (build_element_name_1): Handle BIT_FIELD_REFs.
741         (instantiate_element): Don't warn for any element whose parent
742         is used as a whole.
743         (instantiate_missing_elements_1): Return the sra_elt.
744         (canon_type_for_field): New.
745         (try_instantiate_multiple_fields): New.
746         (instantiate_missing_elemnts): Use them.
747         (mark_no_warning): Removed.
748         (generate_one_element_ref): Handle BIT_FIELD_REFs.
749         (REPLDUP, sra_build_elt_assignment): New.
750         (generate_copy_inout): Use them.
751         (generate_element_copy): Likewise.  Handle bitfld differences.
752         (generate_element_zero): Don't recurse for blocks.  Use
753         sra_build_elt_assignment.
754         (generate_one_element_int): Take elt instead of var.  Use
755         sra_build_elt_assignment.
756         (generate_element_init_1): Adjust.
757         (scalarize_use, scalarize_copy): Use REPLDUP.
758         (scalarize_ldst): Move assert before dereference.
759         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
760
761 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
762
763         * regmove.c: Fix unused variable warnings due to previous commit.
764
765 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
766
767         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
768         (regmove_bb_head): Remove.
769         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
770         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
771         problems with fixup_match_1.
772         Don't initialize/free regmove_bb_head.
773
774         (reg_is_remote_constant_p): If an insn is in the same basic block
775         but not before INSN, consider it remote, too.
776
777 2007-04-05  Anatoly Sokolov <aesok@post.ru>
778
779         PR target/25448
780         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
781         DECL_ASSEMBLER_NAME, not the DECL_NAME.
782
783 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
784
785         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
786         (CONDITIONAL_REGISTER_USAGE): Likewise.
787
788 2007-04-04  Richard Henderson  <rth@redhat.com>
789
790         * config/alpha/lib1funcs.asm: Remove unused file.
791
792 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
793
794         PR other/31356
795         * opts.c (print_specific_help): Fix --help=<language>
796         header line.
797         (common_handle_option): Support --help=common.
798
799 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
800
801         PR other/31353
802         * gcc.c (main): Do not run the linker if
803         print_subprocess_help indicates that it shouldn't be
804         run.
805
806 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
807
808         PR doc/31355
809         * doc/invoke.texi (--help=): Document <languages> value, fix
810         formatting in tables of values.
811
812 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
813
814         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
815         dllimport attribute of virtual methods.
816
817 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
818
819         * config/score/crti.asm: Change _bss_start to __bss_start.
820         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
821         (OUTGOING_REG_PARM_STACK_SPACE) update.
822         * config/score/score.opt: add options to make backend support
823         score5, score5u, score7 and score7d.
824         * config/score/score.md: Likewise.
825         * config/score/misc.md: Likewise.
826         * config/score/mac.md: Likewise.
827         * doc/invoke.texi: Likewise.
828         * doc/md.texi: update constraints define.
829
830 2007-04-03  Richard Henderson  <rth@redhat.com>
831
832         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
833         an appropriate type, use the mode instead.
834
835 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
836
837         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
838         Set the default --with-arch setting to mips2.
839         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
840         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
841         (MULTILIB_OSDIRNAMES): Delete.
842         (MULTILIB_DIRNAMES): Define.
843         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
844         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
845         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
846         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
847         VXWORKS_OS_CPP_BUILTINS.
848         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
849         (MIPS_DEBUGGING_INFO): Undefine.
850         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
851
852 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
853
854         PR middle-end/30704
855         * fold-const.c (native_encode_real): Encode real.c provided longs
856         as a series of 32-bit native integers.
857         (native_interpret_real): Interpret buffer as a series of 32-bit
858         native integers.
859
860 2007-04-03  Richard Guenther  <rguenther@suse.de>
861
862         * genpreds.c (write_insn_constraint_len): Write function
863         optimized for CONSTRAINT_LEN implementation.
864         (write_tm_preds_h): Output insn_constraint_len inline and
865         use it for CONSTRAINT_LEN.
866         (write_insn_preds_c): Don't output insn_constraint_len.
867         * doc/md.texi (define_register_constraint): Document multi-letter
868         constraints shall have the same length if they start with the same
869         letter.
870
871 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
872
873         PR target/31175
874         * config/i386/i386.md (isinf<mode>2): Expand only when
875         TARGET_C99_FUNCTIONS is set.
876
877 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
878
879         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
880         (x86_64-*-linux*): Ditto.
881         * config/i386/i386.opt (mpc): New option.
882         * config/i386/i386.c (overrride_options): Handle
883         ix87_precision_string.
884         * config/i386/crtprec.c: New file.
885         * config/i386/t-crtpc: Ditto.
886         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
887         and -mpc80 options.
888         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
889         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
890         crtprec32.o, crtprec64.o and crtprec80.o.
891
892         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
893         and -mpc80 options.
894         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
895
896 2007-04-02  Eric Christopher  <echristo@apple.com>
897
898         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
899         limitations on darwin.
900
901 2007-04-02  Anatoly Sokolov <aesok@post.ru>
902
903         PR target/31137
904         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
905
906 2007-04-02  Dave Korn  <dave.korn@artimi.com>
907
908         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
909
910 2007-04-02  Dave Korn  <dave.korn@artimi.com>
911
912         * libgcc2.h (exception_descriptor): Don't forward-declare.
913         (__get_eh_table_language, __get_eh_table_version): Delete
914         prototypes of long-dead functions.
915
916 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
917
918         * ebitmap.h: New file
919         * ebitmap.c: New file
920         * Makefile.in (ebitmap.o): New target.
921
922 2007-04-01  Jan Hubicka  <jh@suse.cz>
923
924         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
925         before very first instruction.
926
927 2007-04-01  Jan Hubicka  <jh@suse.cz>
928
929         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
930         waring on 64bit hosts.
931         * bitmap.h: Fix typo in bitmap_head_def.
932
933 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
934
935         PR rtl-optimization/31391
936         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
937         into a DELETED_LABEL note, and the label is in an empty basic
938         block, update BB_END as well as BB_HEAD.
939
940 2007-04-01  Richard Henderson  <rth@redhat.com>
941
942         PR tree-optimization/31169
943         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
944         to varying if the range is outside [0,  prec-1].
945
946 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
947
948         PR target/31388
949         * config/mips/mips.md (load_const_gp): New insn.
950         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
951         the MIPS16 GP pseudo register if no_new_pseudos.
952         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
953
954 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
955
956         PR target/31364
957         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
958         secureplt.
959         (call_value): Likewise.
960
961 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
962             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
963
964         PR 14737
965         * doc/invoke.texi: (optimization options): Reword description
966         of -ffast-math. Document its primary purpose.
967
968 2007-03-31  Richard Guenther  <rguenther@suse.de>
969
970         * omp-low.c (splay-tree.h): Include.
971         (lookup_decl): Replace splay-tree usage by pointer-map.
972         (maybe_lookup_decl): Likewise.
973         (new_omp_context): Likewise.
974         (delete_omp_context): Likewise.
975         * gimplify.c (splay-tree.h): Include.
976         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
977         pointer-map.
978         (remap_ssa_name): Likewise.
979         (remap_decl): Likewise.
980         (remap_type_1): Likewise.
981         (remap_type): Likewise.
982         (copy_body_r): Likewise.
983         (expand_call_inline): Likewise.
984         (clone_body): Likewise.
985         (copy_tree_r): Likewise.
986         (remap_save_expr): Likewise.
987         (unsave_r): Likewise.
988         (unsave_expr_now): Likewise.
989         (tree_function_versioning): Likewise.
990         (build_duplicate_type): Likewise.
991         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
992         (struct copy_body_data): Replace splay-tree by pointer-map.
993         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
994         not $(SPLAY_TREE_H).
995         (gimplify.o): Depend on $(SPLAY_TREE_H).
996         (omp-low.p): Likewise.
997
998 2007-03-31  Anatoly Sokolov <aesok@post.ru>
999
1000         * config/avr/predicates.md (even_register_operand,
1001         odd_register_operand): New predicates.
1002         * config/avr/avr.md (movw peephole2): New.
1003         (movw_r peephole2): New.
1004
1005 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
1006
1007         * tree.h (get_signed_or_unsigned_type): New.
1008         * fold-const.c (operand_equal_for_comparison_p): Use
1009         get_signed_or_unsigned_type instead of
1010         lang_hooks.types.signed_or_unsigned_type.
1011         * expr.c (store_expr): Ditto.
1012         * langhooks.c (get_signed_or_unsigned_type): New.
1013         (lhd_signed_or_unsigned_type): New.
1014         * langhooks.h (lhd_signed_or_unsigned_type): New.
1015         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
1016
1017 2007-03-30  Richard Henderson  <rth@redhat.com>
1018
1019         * tree-ssa-loop-ivopts.c: Include target.h.
1020         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
1021         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
1022         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
1023         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
1024
1025 2007-03-30  Richard Henderson  <rth@redhat.com>
1026             Kai Tietz  <kai.tietz@onevision.com>
1027
1028         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
1029         default for 64-bit.
1030         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
1031         (TARGET_64BIT_MS_ABI): New.
1032         (DBX_REGISTER_NUMBER): Handle 64-bit.
1033         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
1034         (LONG_TYPE_SIZE): Force to 32.
1035         (REG_PARM_STACK_SPACE): New.
1036         (OUTGOING_REG_PARM_STACK_SPACE): New.
1037         (REGPARM_MAX, SSE_REGPARM_MAX): New.
1038         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1039         (STACK_BOUNDARY): Use 128 for 64-bit.
1040         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
1041         Add 64-bit implementation.
1042         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
1043         argument unused.
1044         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
1045         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
1046         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
1047         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
1048         (ix86_handle_cconv_attribute): Don't warn when ignoring if
1049         TARGET_64BIT_MS_ABI.
1050         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
1051         (ix86_pass_by_reference): Likewise.
1052         (ix86_function_value_regno_p): Likewise.
1053         (ix86_build_builtin_va_list): Likewise.
1054         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
1055         (function_arg_advance_ms_64): New.
1056         (function_arg_advance): Call it.
1057         (function_arg_ms_64): New.
1058         (function_arg): Call it.
1059         (function_value_ms_64): New.
1060         (ix86_function_value_1): Call it.
1061         (return_in_memory_ms_64): New.
1062         (ix86_return_in_memory): Call it.
1063         (setup_incoming_varargs_ms_64): New.
1064         (ix86_setup_incoming_varargs): Call it.
1065         (ix86_expand_prologue): Handle 64-bit stack probing.
1066         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
1067         (output_pic_addr_const): Likewise.
1068         (x86_this_parameter): Likewise.
1069         (x86_output_mi_thunk): Likewise.
1070         (x86_function_profiler): Likewise.
1071         (TARGET_STRICT_ARGUMENT_NAMING): New.
1072         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
1073         (TARGET_64BIT_MS_ABI): New.
1074         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
1075         * config/i386/i386.md (allocate_stack_worker): Remove.
1076         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
1077         describe the clobber of eax without a match_scratch.
1078         (allocate_stack_worker_postreload): Remove.
1079         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
1080         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
1081         (allocate_stack_worker_rex64_postreload): Remove.
1082         (allocate_stack): Handle 64-bit.
1083         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
1084         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
1085         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
1086         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
1087         (STANDARD_STARTFILE_PREFIX_1): Likewise.
1088         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
1089         * config.build (x86_64-*-mingw*): New host.
1090         * config.host (x86_64-*-mingw*): New host.
1091         * config.gcc (x86_64-*-mingw*): New target.
1092         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
1093
1094 2007-03-30  Richard Henderson  <rth@redhat.com>
1095             Kai Tietz  <kai.tietz@onevision.com>
1096
1097         * c-pragma.c (struct def_pragma_macro_value): New.
1098         (struct def_pragma_macro): New.
1099         (pushed_macro_table): New.
1100         (dpm_hash, dpm_eq): New.
1101         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
1102         (init_pragma): Install them.
1103         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
1104
1105 2007-03-30  Anatoly Sokolov <aesok@post.ru>
1106
1107         * config/avr/avr.c (avr_override_options): Clear
1108         'flag_delete_null_pointer_checks'.
1109
1110 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
1111
1112         PR c++/26099
1113         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
1114         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
1115         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
1116         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
1117         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
1118         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
1119         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
1120         C++ extensions.
1121         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
1122
1123 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
1124
1125         * regmove.c: Move all of pass_stack_adjustments from here...
1126         * combine-stack-adj.c: ...to this new file.
1127         * Makefile.in: Add rules for combine-stack-adj.o.
1128
1129 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
1130
1131         PR tree-optimization/31383
1132         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
1133         to have the same length.
1134
1135 2007-03-30  Jan Hubicka  <jh@suse.cz>
1136
1137         PR middle-end/30700
1138         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
1139         availablility; add more sanity checking; ask varpool only about
1140         VAR_DECL.
1141
1142 2007-03-29  Richard Henderson  <rth@redhat.com>
1143
1144         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
1145         to decide, but __SIZEOF_LONG_LONG__.
1146
1147 2007-03-29  Richard Henderson  <rth@redhat.com>
1148
1149         * emutls.c (struct __emutls_array): New.
1150         (emutls_destroy): Use it instead of casting element 0 from void*.
1151         (__emutls_get_address): Likewise.
1152
1153 2007-03-29  Richard Henderson  <rth@redhat.com>
1154
1155         * varasm.c (initializer_constant_valid_p): Don't deny
1156         DECL_DLLIMPORT_P on functions.
1157
1158         * config/i386/cygming.h: Remove function declarations.
1159         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
1160         (ASM_OUTPUT_LABELREF): Remove.
1161         (COMMON_ASM_OP): Remove.
1162         (ASM_OUTPUT_COMMON): Remove.
1163         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
1164         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
1165         (ASM_DECLARE_FUNCTION_NAME): Likewise.
1166         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
1167         Rename from TARGET_ENCODE_SECTION_INFO.
1168         * config/i386/netware.h: Likewise.
1169         * config/i386/i386-protos.h: Update.
1170         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
1171         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
1172         (legitimate_constant_p): Reject dllimports.
1173         (dllimport_map, get_dllimport_decl): New.
1174         (legitimize_dllimport_symbol): New.
1175         (legitimize_address, ix86_expand_move): Use it.
1176         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
1177         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
1178         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
1179         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
1180         * config/i386/predicates.md (constant_call_address_operand): Only
1181         accept symbols; reject dllimport_p symbols.
1182         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
1183         i386_pe_maybe_record_exported_symbol.
1184         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
1185         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
1186         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
1187         trust the setting of DECL_DLLIMPORT_P.
1188         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
1189         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
1190         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
1191         tidy the argument scanning loop.
1192         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
1193         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
1194         (i386_pe_strip_name_encoding): Remove.
1195         (i386_pe_binds_local_p): New.
1196         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
1197         (i386_pe_output_labelref): Remove.
1198         (i386_pe_asm_output_aligned_decl_common): New.
1199         (i386_pe_maybe_record_exported_symbol): Rename from
1200         i386_pe_record_exported_symbol; check for dllexported symbols.
1201
1202 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
1203
1204         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
1205         add comment explaining why vsnprintf cannot be used.
1206
1207 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
1208
1209         PR tree-optimization/30666
1210         * tree.c (build_complex_type): When creating type names for DWARF2
1211         debug info, create TYPE_DECLs for TYPE_NAME instead of
1212         IDENTIFIER_NODEs.
1213         (build_common_tree_nodes_2): Use build_complex_type when building
1214         predefined complex types, to preserve canonical types.
1215
1216 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
1217
1218         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
1219         (noce_get_alt_condition): Look at it to determine whether to
1220         reverse the condition or not.
1221         (noce_get_condition): Substitute the truth for lies.
1222         (noce_find_if_block): Set the then_else_reversed field.
1223
1224 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
1225
1226         * config/fr30/fr30.md (movdi): Do not accept immediates as the
1227         destination of this insn.
1228         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
1229         than calling gen_rtx_SET directly.  Use r0 to hold the value of
1230         'address + 4' rather than a stack based temporary which can be
1231         mis-optimized away.
1232
1233 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1234
1235         * config/s390/s390.c (s390_secondary_input_reload_class,
1236         s390_secondary_output_reload_class): Functions removed.
1237         (s390_secondary_reload): New function.
1238         (TARGET_SECONDARY_RELOAD): Target macro defined.
1239         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
1240         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
1241         * config/s390/s390.md ("reload_outti", "reload_outdi",
1242         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
1243         "reload_out<mode>"): Expanders removed.
1244         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
1245         "reload<mode>_nonoffmem_out"): Expanders added.
1246
1247 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
1248
1249         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
1250         SRC->DEST replacement failed anyway.
1251
1252 2007-03-28  Mike Stump  <mrs@apple.com>
1253
1254         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
1255         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
1256         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
1257
1258 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
1259
1260         * config.gcc: Accept barcelona as a variant of amdfam10.
1261         * config/i386/i386.c (override_options): Likewise.
1262         * doc/invoke.texi: Likewise.
1263
1264 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
1265
1266         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
1267         offsets for BIT_FIELD_REF and COMPONENT_REF.
1268
1269 2007-03-28  Richard Guenther  <rguenther@suse.de>
1270
1271         * tree.c (is_global_var): Move ...
1272         * tree-flow-inline.h (is_global_var): ... here.
1273         * tree.h (is_global_var): Remove declaration.
1274
1275 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
1276
1277         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
1278         option.
1279         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
1280         * config/i386/i386.c (ix86_tune_features): Initialize new
1281         tuning option.
1282         * config/i386/predicates.md (promotable_binary_operator): Use
1283         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
1284
1285 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
1286
1287         PR target/31380
1288         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
1289
1290 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
1291
1292         * config/fr30/fr30.md (movsi_internal): Change destination
1293         constraint from m to V and add m to the end.
1294
1295 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1296
1297         * config/sh/sh.md (movsi_i): Fix type attribute.
1298
1299 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1300
1301         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
1302         (movsf_ie): Likewise.
1303
1304 2007-03-28  Christian Bruel  <christian.bruel@st.com>
1305
1306         * config.gcc: Add sh4-300 to multilib.
1307         * config/sh/t-mlib-sh4-300: New file.
1308
1309 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
1310
1311         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
1312         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
1313         fix_trunc<mode>di2.
1314         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
1315         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
1316         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
1317         "fixuns_trunctddi2"): Whitespace fix.
1318
1319 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
1320
1321         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
1322         the definition of struct sh_args.
1323         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
1324         CALL_COOKIE_INT_REG_GET): Likewise.
1325
1326 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
1327
1328         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
1329         transformations are applied successfully.
1330
1331 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
1332
1333         * tree.c (tree_contains_struct): Permit 512 tree codes.
1334         * tree.h (tree_contains_struct): Ditto.
1335         (MAX_TREE_CODES): Ditto.
1336         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
1337         SPARE member to store remaining padding bits.
1338
1339 2007-03-27  Anatoly Sokolov <aesok@post.ru>
1340
1341         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
1342         architecture.
1343
1344 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
1345
1346         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
1347         * configure: Regenerate.
1348
1349         * configure: Regenerate using the correct version of autoconf.
1350
1351 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
1352
1353         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
1354         pointer regs.
1355         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
1356         regs to "__SP_L__" and "__SP_H__".
1357
1358 2007-03-27  Richard Guenther  <rguenther@suse.de>
1359
1360         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
1361         computations with it with a HOST_WIDE_INT variable.
1362
1363 2007-03-26  Mike Stump  <mrs@apple.com>
1364
1365         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
1366         objective-c-header, objective-c++-header and objc++-cpp-output
1367         support.
1368         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1369
1370 2007-03-26  Richard Henderson  <rth@redhat.com>
1371
1372         PR target/31361
1373         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
1374         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
1375         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
1376         IX86_BUILTIN_PSRLQ128): New.
1377         (ix86_init_mmx_sse_builtins): Add them.
1378         (ix86_expand_builtin): Expand them.
1379         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
1380         operand 2 be TImode.
1381         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
1382         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
1383         _mm_srli_epi64): Mark __B const.
1384         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
1385         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
1386         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
1387         new two-vector shift builtins.
1388
1389 2007-03-26  Ian Lance Taylor  <iant@google.com>
1390
1391         PR tree-optimization/31345
1392         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
1393         [+INF, +INF(OVF)] into VARYING.
1394
1395 2007-03-26  Zack Weinberg  <zackw@panix.com>
1396
1397         * gengtype-parse.c: New file.
1398         * gengtype-yacc.y: Delete.
1399         * gengtype-lex.l: Don't include gengtype-yacc.h.
1400         Define YY_DECL and yyterminate appropriately for recursive
1401         descent parser.  yylval is now a string out-parameter to yylex.
1402         (HWS, EOID): New shorthand.
1403         (IWORD): Add a couple more types.
1404         (yylex): Add a setup stanza.  Remove the complex rules for
1405         detecting GTY'ed types and typedefs; replace with simple
1406         keyword detectors.  Adjust everything for the changed
1407         definition of yylval.  Ignore all pp-directives, not just #define.
1408         (yyerror): Delete.
1409         (parse_file): Rename yybegin; do not call yyparse.
1410         (yyend): New.
1411         * gengtype.c (xasprintf): Export again.
1412         (this_file): New.  Use everywhere __FILE__ was being used.
1413         (get_lang_bitmap): Special case types defined in gengtype.c.
1414         (do_typedef, new_structure): Suppress definition of certain types.
1415         (new_structure): Improve diagnostics of duplicate definitions.
1416         Make sure location_s is associated with input.h.
1417         (nreverse_pairs, define_location_structures): New functions.
1418         (main): Improve tagging of kludge types.  Remove old kludges
1419         for input.h types; use define_location_structures.
1420         * gengtype.h: Update prototypes.  Define token codes here.
1421         * Makefile.in: Remove all references to gengtype-yacc.
1422         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
1423         and gengtype.
1424         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
1425         add GTY((skip)) to the field that's only conditionally there.
1426         * doc/install.texi: Document that Bison is no longer required
1427         unless building treelang.
1428
1429         * gengtype.c: Don't include gtyp-gen.h.
1430         (srcdir): Declare here.
1431         (base_files, lang_dir_names): Allocate dynamically.
1432         (gt_files, num_gt_files, num_lang_dirs): New globals.
1433         (measure_input_list, read_input_line, read_input_list)
1434         (set_lang_bitmap): New functions.
1435         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
1436         simplify, relying on read_input_list to set up the bitmaps.
1437         (main): Arguments are no longer unused.  Check for correct number
1438         of command line arguments, set srcdir and srcdir_len, then call
1439         read_input_list, before doing anything else.  No need to worry
1440         about duplicates in main loop.
1441         * configure.ac: Simplify the calculation of all_gtfiles.
1442         Put language tags in there.  Don't set or substitute
1443         all_gtfiles_files_langs or all_gtfiles_files_frags.
1444         * Makefile.in: Revamp the way gengtype is invoked, now that it
1445         takes a file on its command line with a much simpler format.
1446         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
1447         (GTFILES): Remove duplicates and C source files.
1448         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
1449         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
1450         * configure: Regenerate.
1451
1452         * gengtype.h: Remove all type definitions to gengtype.c; leave
1453         only definitions of options_p, type_p, and pair_p as opaque
1454         pointers.  Update prototypes.
1455         * gengtype.c: Many type definitions moved here from gengtype.h.
1456         Consolidate type definitions at the top of the file.
1457         (xvasprintf): Delete.
1458         (xasprintf): Make static.
1459         (create_nested_pointer_option): Add 'next' parameter.
1460         (create_field_all, create_field_at): New functions.
1461         (create_field): Now a thin wrapper around create_field_all.
1462         (create_optional_field): Rename create_optional_field_ and add
1463         line argument.  Original name is now a macro which supplies
1464         __LINE__.
1465         (oprintf): Use vsnprintf directly.
1466         (close_output_files): Use fatal rather than perror/exit.
1467         (note_def_vec, note_def_vec_alloc): Use create_field_at.
1468         (main): Set progname.  Don't use exit.
1469         * gengtype-yacc.y (struct_fields): Use create_field_at.
1470         (option, optionseqopt): Delete.
1471         (optionseq): Consolidate productions from option here so we
1472         can use the first argument to create_option.
1473
1474         * gengtype-lex.l: Distinguish unions from structures in the
1475         token type.  Don't call find_structure; return the tag as a string.
1476         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
1477         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
1478         Reorganize typedef_struct production accordingly.
1479         Use create_nested_ptr_option.
1480         * gengtype.c (create_nested_ptr_option): New function.
1481         * gengtype.h: Declare it.
1482
1483         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
1484         (string_type): Don't declare.
1485         (do_scalar_typedef): Declare.
1486         (create_scalar_type): Update prototype.
1487         * gengtype.c (string_type): Make static.
1488         (scalar_nonchar, scalar_char): New.
1489         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
1490         (resolve_typedef): Use scalar_nonchar for error recovery.
1491         (create_scalar_type): Remove name_len field.  Return scalar_char
1492         or scalar_nonchar as appropriate.
1493         (adjust_field_type): Look at scalar_is_char boolean to decide whether
1494         to use string_type.
1495         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
1496         whenever possible.
1497         (main): Initialize scalar_char and scalar_nonchar before calling
1498         gen_rtx_next.
1499         * gengtype-lex.l: Adjust for removal of second argument to
1500         create_scalar_type.  Use yylval.s instead of yylval.t when
1501         returning SCALAR.
1502         * gengtype-yacc.y: Type of SCALAR is string.  Call
1503         create_scalar_type from type:SCALAR rule.  Adjust for removal of
1504         second argument to create_scalar_type.
1505
1506         * vec.h: Remove all #if IN_GENGTYPE blocks.
1507         Add comment saying that changes may require adjustments to gengtype.
1508         * gengtype.c: Don't include coretypes.h or tm.h.
1509         Add comment to inclusion of errors.h.
1510         (note_def_vec, note_def_vec_alloc): New functions.
1511         * gengtype.h: Declare new functions.
1512         * gengtype-lex.l: Don't include coretypes.h.
1513         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
1514         Delete.
1515         (update_lineno): Remove unnecessary prototype.
1516         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
1517         (VEC rule): Just return VEC_TOKEN.
1518         * gengtype-yacc.y (VEC_TOKEN): New token type.
1519         (type): Add a production for VEC(a,b).
1520         * Makefile.in: Update dependencies.
1521
1522         * gengtype-lex.l: Remove rules for parsing pointer-to-function
1523         typedefs that use the old PARAMS macro.
1524
1525         * gengtype-lex.l: Remove all rules and states relating to yacc
1526         input files.
1527         * gengtype-yacc.y: Similarly.
1528         * gengtype.c (note_yacc_type): Delete function.
1529         * gengtype.h: Update prototypes.
1530
1531 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
1532
1533         * tree-pretty-print.c (dump_generic_node): Report precision of
1534         unnamed integer types.
1535
1536 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
1537
1538         * ifcvt.c (noce_try_store_flag_constants): Don't check
1539         no_new_pseudos here.
1540         (noce_try_store_flag_constants): Don't check no_new_pseudos.
1541         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
1542         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
1543         noce_try_sign_mask): Likewise.
1544         (if_convert): Check no_new_pseudos here.
1545
1546         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
1547         Remove prototypes.
1548         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
1549         (noce_get_condition): Handle new then_else_reversed argument.
1550         (noce_init_if_info): Remove, fold into noce_find_if_block.
1551         (noce_process_if_block): Take a struct noce_if_info as the
1552         argument.  Don't set up one based on ce_if_info.  Update pointer
1553         references accordingly.
1554         (cond_move_process_if_block): Likewise.
1555         (process_if_block): Removed.
1556         (find_if_block): Removed.  Move functionality two new functions,
1557         noce_find_if_block and cond_exec_find_if_block.
1558         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
1559         blocks and the symmetric IF-ELSE-JOIN case.
1560         (cond_exec_find_if_block): Also new function mostly based on old
1561         find_if_block and process_if_block.
1562         (find_if_header): Replace find_if_block call with separately
1563         guarded calls to noce_find_if_block and cond_exec_find_if_block.
1564         (find_cond_trap): Update noce_get_condition call.
1565         (dead_or_predicable): Likewise.
1566
1567 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
1568
1569         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
1570         Remove.
1571         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
1572         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
1573         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
1574         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
1575         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
1576         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
1577         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
1578         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
1579         __builtin_ia32_psrad128 builtins.
1580
1581 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
1582
1583         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
1584         * config/i386/constraints.md
1585         (define_constraint "I"): Use IN_RANGE macro.
1586         (define_constraint "J"): Ditto.
1587         (define_constraint "K"): Ditto.
1588         (define_constraint "M"): Ditto.
1589         (define_constraint "N"): Ditto.
1590         (define_constraint "O"): Ditto.
1591         * config/i386/predicates.md
1592         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
1593         (define_predicate "const_0_to_3_operand"): Ditto.
1594         (define_predicate "const_0_to_7_operand"): Ditto.
1595         (define_predicate "const_0_to_15_operand"): Ditto.
1596         (define_predicate "const_0_to_63_operand"): Ditto.
1597         (define_predicate "const_0_to_255_operand"): Ditto.
1598         (define_predicate "const_1_to_31_operand"): Ditto.
1599         (define_predicate "const_2_to_3_operand"): Ditto.
1600         (define_predicate "const_4_to_7_operand"): Ditto.
1601
1602 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1603
1604         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
1605         in SImode for save_world.
1606         * config/rs6000/altivec.md (save_world, restore_world): Convert to
1607         LR hard reg.
1608
1609 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
1610
1611         PR tree-optimization/30784
1612         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
1613         BIT_FIELD_REF.
1614
1615 2007-03-25  Revital Eres  <eres@il.ibm.com>
1616
1617         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
1618           Fold movement_possibility function into it.
1619
1620 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
1621
1622         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
1623         (load_macho_picbase_{si,di}): Convert to LR hard reg.
1624         (call_indirect_nonlocal_darwin64): Same.
1625         (call_nonlocal_darwin64): Same.
1626         (call_value_indirect_nonlocal_darwin64): Same.
1627         (call_value_nonlocal_darwin64): Same.
1628         (sibcall_nonlocal_darwin64): Same.
1629         (sibcall_value_nonlocal_darwin64): Same.
1630         (sibcall_symbolic_64): Same.
1631         (sibcall_value_symbolic_64): Same.
1632         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
1633         LR pseudo.
1634         (rs6000_emit_load_toc_table): Same.
1635         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
1636         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
1637         (mull_call): Same.
1638         (divss_call): Same.
1639         (divus_call): Same.
1640         (quoss_call): Same.
1641         (quous_call): Same.
1642         (load_toc_v4_pic_si): Same
1643         (load_toc_v4_PIC_1): Same.
1644         (load_toc_v4_PIC_1b): Same.
1645         (call_indirect_aix{32,64}): Same.
1646         (call_value_indirect_aix{32,64}): Same.
1647         (call): Same.
1648         (call_value): Same.
1649         (call_local{32,64}): Same.
1650         (call_value_local{32,64}): Same.
1651         (call_indirect_nonlocal_aix{32,64}): Same.
1652         (call_nonlocal_aix{32,64}): Same.
1653         (call_value_indirect_nonlocal_aix{32,64}): Same.
1654         (call_value_nonlocal_aix{32,64}): Same.
1655         (call_indirect_nonlocal_sysv<mode>): Same.
1656         (call_nonlocal_sysv<mode>): Same.
1657         (call_value_indirect_nonlocal_sysv<mode>): Same.
1658         (call_value_nonlocal_sysv<mode>): Same.
1659         (sibcall): Same.
1660         (sibcall_local{32,64}): Same.
1661         (sibcall_value_local{32,64}): Same.
1662         (sibcall_nonlocal_aix{32,64}): Same.
1663         (sibcall_value_nonlocal_aix{32,64}): Same.
1664         (sibcall_nonlocal_sysv<mode>): Same.
1665         (sibcall_value): Same.
1666         (sibcall_value_nonlocal_sysv<mode>): Same.
1667
1668 2007-03-24  Paul Brook  <paul@codesourcery.com>
1669
1670         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
1671         * config/arm/linux-eabi.h: Remove legacy syscall hack.
1672
1673 2007-03-24  Richard Henderson  <rth@redhat.com>
1674
1675         * config/ia64/constraints.md: New file.
1676         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
1677         satisfies_constraint_?.
1678         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
1679         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
1680         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
1681         ia64_output_mi_thunk): Likewise.
1682         (ia64_const_ok_for_letter_p): Remove.
1683         (ia64_const_double_ok_for_letter_p): Remove.
1684         (ia64_extra_constraint): Remove.
1685         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
1686         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
1687         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
1688         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
1689         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
1690         EXTRA_MEMORY_CONSTRAINT): Remove.
1691         * config/ia64/ia64.md: Include constriants.md.  Replace
1692         CONST_OK_FOR_? with satisfies_constraint_?.
1693
1694 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
1695             H.J. Lu  <hongjiu.lu@intel.com>
1696
1697         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
1698         DPD or BID name.
1699         (name macros): Use DPD_BID_NAME to convert names properly.
1700
1701         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
1702         decimal floating point format.
1703         (init_floating_libfuncs): Change decimal functions so that they
1704         have a "bid_" prefix if the decimal system uses the BID format,
1705         and "dpd_" prefix if the decimal system uses the DPD format.
1706         (init_interclass_conv_libfuncs): Ditto.
1707         (init_intraclass_conv_libfuncs): Ditto.
1708
1709         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1710         using the BID format.
1711
1712         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1713         whether we are using the BID decimal format.
1714         * configure: Regenerate.
1715
1716         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1717         the compiler has decimal floating point enabled.  Define
1718         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1719         instead of DPD.
1720
1721         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
1722         using the BID format.
1723
1724         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
1725         whether we are using the BID decimal format.
1726         * configure: Regenerate.
1727
1728         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
1729         the compiler has decimal floating point enabled.  Define
1730         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
1731         instead of DPD.
1732
1733         * doc/install.texi (--enable-decimal-float): Document BID and DPD
1734         options, and that it is enabled for i386/x86_64 systems.
1735
1736         * Makefile.in (enable_decimal_float): New.
1737         (DECNUMFMT): New.
1738         (DECNUMINC): Add  -I$(DECNUMFMT).
1739         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
1740         to $(DECNUMFMT) from $(DECNUM).
1741
1742         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
1743         Substitute enable_decimal_float.
1744         * configure: Regenerated.
1745
1746         PR other/30529
1747         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
1748         unsigned long.
1749
1750         * configure.ac: Enable decimal float for x86_64-*-linux*.
1751         * configure: Regenerated.
1752
1753         PR other/30530
1754         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
1755         decimal128ClearSign to flip and clear the sign bit in decimal128.
1756         (decimal_real_maxval): Set decimal128SetSign to set the sign
1757         bit in decimal128.
1758
1759 2007-03-23  Ian Lance Taylor  <iant@google.com>
1760
1761         * fold-const.c (fold_binary): Correct warning for X - c >= X.
1762
1763 2007-03-23  Ian Lance Taylor  <iant@google.com>
1764
1765         * tree-dump.c (dump_files): Correct comment.
1766
1767 2007-03-23  Ian Lance Taylor  <iant@google.com>
1768
1769         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
1770
1771 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
1772
1773         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
1774         in cfglayout mode.  Don't go into and out of cfglayout mode.
1775         Link the blocks in the order of the constructed traces.
1776         (rest_of_handle_tracer): Adjust call to tracer.
1777         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
1778         Don't go into cfglayout mode.
1779         (rtl_loop_done): Don't go out of cfglayout mode.
1780         * cfglayout.c (relink_block_chain): New function, split out from...
1781         (fixup_reorder_chain): ...here.  Remove redundant checking.
1782         (cfg_layout_finalize): Don't clear the header, footer, and aux
1783         fields here, move the code to do so to relink_block_chain.  Likewise
1784         for free_original_copy_tables.
1785         * rtl.h (tracer): Update prototype.
1786         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
1787         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
1788         mode.  Use relink_block_chain to serialize the CFG according to the
1789         new basic block order.  Move targetm.cannot_modify_jumps_p check from
1790         here...
1791         (gate_handle_reorder_blocks): ...to here.
1792         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
1793         from here...
1794         (gate_duplicate_computed_gotos): ...to here.
1795         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
1796         something always changes when going into and out of cfglayout mode.
1797         Perform an expensive cfg cleanup while going into cfglayout mode.
1798         Always update liveness information on HAVE_conditional_execution
1799         targets.  Reserialize the basic blocks and go out of cfglayout mode.
1800         * reg-stack.c: Include cfglayout.h.
1801         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
1802         the call to reorder_basic_blocks.
1803         * basic-block.h (reorder_basic_blocks): Update prototype.
1804         (relink_block_chain): New prototype.
1805         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
1806
1807 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
1808
1809         * config/mips/mips.md (type, hazard, *movdi_32bit,
1810         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
1811         *movhi_internal, *movqi_internal, *movsf_hardfloat,
1812         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
1813         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
1814         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
1815         applicable.
1816         (movcc): Change first xfer to multi.
1817         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
1818         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
1819         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
1820         config/mips/generic.md: Change reservations using "xfer" to use
1821         "mfc,mtc".
1822         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
1823         using match_operand.
1824         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
1825         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
1826         examining mode.
1827         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
1828
1829 2007-03-22  Richard Henderson  <rth@redhat.com>
1830
1831         * config/i386/i386.c: Remove unnecessary function declarations.
1832         Move targetm definition, and all related macros, to the end of
1833         the file.  Resort some functions to put definitions before uses.
1834         (ix86_attribute_table): Make static.  Move to end of file.
1835         (ix86_gimplify_va_arg): Make static.
1836
1837 2007-03-22  Richard Henderson  <rth@redhat.com>
1838
1839         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
1840         don't increase local_regparm with force_align_arg_pointer check.
1841         (ix86_function_sseregparm): Assert 32-bit.
1842         (type_has_variadic_args_p): New.
1843         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
1844         type_has_variadic_args_p.
1845         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
1846         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
1847         use memset instead.  Do maybe_vaarg check first; skip attribute
1848         tests if true; skip attribute tests for 64-bit.
1849         (construct_container): Remove TARGET_DEBUG_ARG.
1850         (function_arg_advance_32, function_arg_advance_64): Split out ...
1851         (function_arg_advance): ... from here.
1852         (function_arg_32, function_arg_64): Split out ...
1853         (function_arg): ... from here.
1854         (ix86_pass_by_reference): Tidy.
1855         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
1856         (function_value_32): New, from parts of ix86_function_value
1857         and ix86_value_regno.
1858         (function_value_64): New, from parts of ix86_function_value
1859         and ix86_libcall_value.
1860         (ix86_function_value_1): New.
1861         (ix86_function_value, ix86_libcall_value): Use it.
1862         (return_in_memory_32, return_in_memory_64): Split out ...
1863         (ix86_return_in_memory): ... from here.
1864         (ix86_struct_value_rtx): Skip for 64-bit.
1865         (ix86_libcall_value, ix86_value_regno): Remove.
1866         (setup_incoming_varargs_64): Split out ...
1867         (ix86_setup_incoming_varargs): ... from here.
1868         (ix86_va_start): Remove TARGET_DEBUG_ARG.
1869         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
1870         * config/i386/i386-protos.h (ix86_function_value): Remove.
1871         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
1872
1873 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1874
1875         PR other/23572
1876         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
1877         infinities not supported, otherwise emit warning if -Woverflow. On
1878         underflow, emit warning if -Woverflow.
1879         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
1880         and 0 otherwise.
1881         * real.h (real_from_string): Update declaration
1882
1883 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
1884             Richard Henderson  <rth@redhat.com>
1885
1886         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
1887         * calls.c (compute_argument_block_size, expand_call,
1888         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
1889         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
1890         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
1891         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
1892         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
1893         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
1894         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
1895         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
1896         Set to 1.
1897
1898 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
1899
1900         * c-incpath.c (add_sysroot_to_chain): New.
1901         (merge_include_chains): Add sysroot argument.  Call
1902         add_sysroot_to_chain if sysrooted.
1903         (register_include_chains): Update call to merge_include_chains.
1904         * doc/cppopts.texi: Document use of '=' in include directory
1905         arguments.
1906
1907 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
1908
1909         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
1910         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
1911         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
1912         insn pattern using X87MODEF12 mode macro.
1913
1914 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
1915
1916         * regmove.c (regmove_optimize): Use reg_mentioned_p
1917         instead of reg_overlap_mentioned_p for DST.
1918
1919 2007-03-21  Mike Stump  <mrs@apple.com>
1920
1921         * c.opt: Fixup for Objective-C/C++.
1922
1923 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
1924
1925         * explow.c (convert_memory_address): Fold memory reference when
1926         POINTERS_EXTEND_UNSIGNED < 0
1927
1928 2007-03-21  Richard Henderson  <rth@redhat.com>
1929
1930         PR target/31245
1931         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
1932         * config/i386/mmintrin.h (__m64): Likewise.
1933         * config/i386/xmmintrin.h (__m128): Likewise.
1934
1935 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1936
1937         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
1938         (VXWORKS_OS_CPP_BUILTINS): Define.
1939         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
1940         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
1941
1942 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1943
1944         * rtl.h (constant_pool_reference_p): Delete.
1945         (find_constant_src): Declare.
1946         * rtlanal.c (find_constant_src): New function.
1947         * simplify-rtx.c (constant_pool_reference_p): Delete.
1948         * config/i386/i386.md: Use find_constant_src instead of
1949         constant_pool_reference_p/avoid_constant_pool_reference pairs.
1950
1951 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
1952
1953         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
1954         * c-cppbuiltin.c (c_cpp_builtins): Define them.
1955
1956 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
1957
1958         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
1959         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
1960         (arm_elf_asm_constructor): Use it.
1961         (arm_elf_asm_destructor): New function.
1962
1963 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
1964
1965         * jump.c (mark_jump_label): Treat SEQUENCE specially.
1966
1967 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
1968
1969         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
1970
1971 2007-03-19  Andrew Haley  <aph@redhat.com>
1972
1973         PR tree-optimization/31264
1974         * tree-vrp.c (register_edge_assert_for_1): Don't look though
1975         VIEW_CONVERT_EXPRs.
1976
1977 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
1978
1979         PR rtl-optimization/30907
1980         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
1981         (fwprop_init): Always call loop_optimizer_initialize.
1982         (fwprop_done): Always call loop_optimizer_finalize.
1983         (fwprop): We always have loop info now.
1984         (gate_fwprop_addr): Remove.
1985         (pass_fwprop_addr): Use gate_fwprop as gate.
1986
1987         PR rtl-optimization/30841
1988         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
1989         df_chain_alloc): Call df_reorganize_refs unconditionally.
1990         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
1991         refs_organized to refs_organized_size.
1992         (df_ref_create_structure): Use refs_organized_size instead of
1993         bitmap_size if refs had been organized, and keep refs_organized_size
1994         up-to-date.
1995         * df.h (struct df_ref_info): Change refs_organized to
1996         refs_organized_size.
1997         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
1998         bitmap_size.
1999
2000 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
2001
2002         * except.c (output_function_exception_table): Do not reference the
2003         EH personality routine for functions that do not require an
2004         exception table.
2005
2006 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
2007
2008         PR c/30762
2009         * c-typeck.c (convert_for_assignment): Call comptypes for
2010         RECORD_TYPE or UNION_TYPE.
2011
2012         PR inline-asm/30505
2013         * reload1.c (reload): Do invalid ASM checking after
2014         cleanup_subreg_operands.
2015
2016 2007-03-19  Jeff Law  <law@redhat.com>
2017
2018         * tree-cfg.c (find_taken_edge): Tighten conditions for
2019         optimizing computed gotos.
2020
2021 2007-03-19  Michael Matz  <matz@suse.de>
2022
2023         * builtins.c (expand_builtin_sync_operation,
2024         expand_builtin_compare_and_swap,
2025         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
2026         correctly.
2027
2028         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
2029         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
2030         for operand 3.
2031
2032 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2033
2034         * doc/tm.texi: Add brackets around the return type of
2035         TARGET_SECONDARY_RELOAD.
2036
2037 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2038         Richard Guenther  <rguenther@suse.de>
2039
2040         PR tree-optimization/31254
2041         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
2042         Use handled_component_p () where appropriate.  Continue
2043         propagating into the rhs if we propagated into an INDIRECT_REF
2044         on the lhs.
2045
2046 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2047
2048         * config/s390/s390.md (op_type attribute): RRR instruction type added.
2049         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
2050         (xde, xdee): Mode attributes adjusted to support DFP modes.
2051         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
2052         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
2053         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
2054         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
2055         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
2056         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2057         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
2058         numbers.
2059         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
2060         "movsf"): Insn definitions removed.
2061         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
2062         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
2063         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
2064         definitions added.
2065         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
2066         "reload_in<mode>", "reload_out<mode>"): Expander added.
2067         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
2068         Expander removed.
2069
2070 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2071
2072         * config/s390/s390.md: Only non-functional changes.  Renamed
2073         FPR mode macro to BFP all over the file.
2074
2075 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2076
2077         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
2078         (op_type attribute): RRF instruction type added.
2079         (fT0): New mode attribute.
2080         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
2081         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
2082         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
2083         no secondary memory is needed when moving DFmode values between GPRs
2084         and FPRs.
2085
2086 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2087
2088         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
2089         inverted and documentation adjusted.
2090         ("mhard-dfp", "msoft-dfp"): New options.
2091         * config/s390/s390.c (s390_handle_arch_option): New architecture
2092         switch: z9-ec.
2093         (override_options): Sanity checks for the new options added.
2094         * config.gcc: New architecture switch: z9-ec.
2095         * config/s390/s390.h (processor_flags): PF_DFP added.
2096         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
2097         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
2098         when the bit is NOT set so remove it from the defaults.
2099
2100 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2101
2102         * genemit.c (main): Print include statement for dfp.h.
2103         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
2104         is not available.
2105
2106 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2107
2108         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
2109
2110 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
2111
2112         PR target/31022
2113         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
2114         instead of PATTERN.
2115
2116 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2117
2118         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
2119         attr_length_call, output_call, output_indirect_call): Cleanup
2120         formatting of targetm calls.
2121
2122 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
2123
2124         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
2125
2126 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2127
2128         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
2129         reservation, bypass and anti-bypass descriptions for these instructions.
2130         Update move patterns.
2131         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
2132         TYPE_FPSTORE.
2133
2134 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
2135
2136         * tree-vect-transform.c (get_initial_def_for_induction): Replace
2137         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
2138         (get_initial_def_for_reduction): Likewise.
2139
2140 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
2141
2142         Fix PR tree-optimization/29922
2143         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
2144         (get_representative): Removed.
2145         (value_dies_in_block_x): Update for rvuse removal.
2146         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
2147         (compute_antic_aux): Handle when PHI nodes appear in
2148         non-single-successors.
2149         (dump_bitmap_of_names): Removed.
2150         (compute_antic_safe): Renamed and removed rvuse calculation.
2151         Calculate only antic safe.
2152         (insert_into_preds_of_block): Remove assert.
2153         (execute_pre): Update for renamed functions.
2154         (defer_or_phi_translate_block): New function.
2155
2156 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2157
2158         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
2159         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
2160         typos.
2161         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
2162         Follow spelling conventions.
2163
2164         * tree-data-ref.h: Remove the prototype for analyze_array.
2165
2166 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
2167
2168         PR tree-optimization/31041
2169         * tree-vect-transform.c (get_initial_def_for_induction): Call
2170         force_gimple_operand.
2171
2172 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
2173
2174         * ipa-type-escape.c (look_for_casts) : Revert code to use
2175         handled_component_p due to ada test a-numaux.adb.
2176
2177 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
2178
2179         * final.c (final_scan_insn): Alter the condition of a
2180         conditional trap if we have nonstandard CC.
2181
2182 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2183
2184         * configure.ac: Remove excess quoting from asm line 0 test.
2185         * configure: Rebuilt.
2186
2187 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2188
2189         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
2190         * c-common.c (convert_and_check): Move warning logic to...
2191         (warnings_for_convert_and_check): ...here. Define.
2192         * c-common.h (warnings_for_convert_and_check): Declare.
2193
2194 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2195
2196         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
2197         (output_call): Likewise.
2198
2199 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2200
2201         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
2202
2203 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
2204
2205         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
2206
2207 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
2208
2209         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
2210         opteron, athlon-64 and athlon-fx processor_alias_table entries.
2211
2212 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
2213
2214         PR tree-optimization/31183
2215         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2216         Use double_int instead of unsigned int for representing access_strides.
2217         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
2218
2219 2007-03-16  Richard Guenther  <rguenther@suse.de>
2220
2221         PR tree-optimization/31146
2222         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
2223         to allow recursion of forward_propagate_addr_expr.
2224         (forward_propagate_addr_into_variable_array_index): Likewise.
2225         (forward_propagate_addr_expr): Likewise.
2226         (tree_ssa_forward_propagate_single_use_vars): Likewise.
2227         (forward_propagate_addr_expr_1): Recurse on simple copies
2228         instead of propagating into them.  Do so for useless conversions
2229         as well.
2230         (forward_propagate_addr_expr): Clean up unused statements after
2231         recursion.
2232
2233 2007-03-16  Richard Guenther  <rguenther@suse.de>
2234
2235         * builtins.c (expand_builtin_cexpi): Use the right argument
2236         for the expansion via cexp.
2237
2238 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2239
2240         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
2241         * configure: Rebuilt.
2242
2243 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
2244
2245         PR debug/29906
2246         * dwarf2out.c (force_type_die): Adjust comment.
2247         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
2248
2249 2007-03-15  DJ Delorie  <dj@redhat.com>
2250
2251         * config/frv/predicates.md (minmax_operator): Don't check operands
2252         here.
2253
2254 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2255
2256         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
2257         Update constant estimates of number of iterations.
2258         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
2259         argument renamed to "realistic".
2260         (compute_estimated_nb_iterations): Removed.
2261         (record_niter_bound): New function.
2262         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
2263         call record_nonwrapping_iv with upper = false.
2264         (infer_loop_bounds_from_signedness): Pass upper argument to
2265         record_nonwrapping_iv.
2266         (estimate_numbers_of_iterations_loop): Do not call
2267         compute_estimated_nb_iterations.  Record estimate based on profile
2268         information.  Initialize the constant estimates of number of
2269         iterations.
2270         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
2271         estimates.
2272         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
2273         number of iterations is too small.
2274         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
2275         (EST_NOT_AVAILABLE): Removed.
2276         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
2277         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
2278         fields.
2279
2280 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
2281
2282         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
2283         Handle NE_EXPR guards.
2284
2285 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2286
2287         PR c++/24924
2288         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
2289         Set also -pedantic-errors by default for the  preprocessor unless
2290         -fpermissive is given.
2291
2292 2007-03-15  Richard Guenther  <rguenther@suse.de>
2293
2294         PR middle-end/29719
2295         PR middle-end/31161
2296         * builtins.c (expand_builtin_cexpi): As a fallback if we
2297         don't have builtins for sincos or cexp create a function
2298         declaration for cexp and expand to a call to that.
2299         (expand_builtin_int_roundingfn): Always fall
2300         back to floor/ceil and its variants even if they may be
2301         not available.
2302
2303 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
2304
2305         PR middle-end/31159
2306         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
2307         jump tables, move the call to delete_dead_jumptables from here...
2308         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
2309         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
2310         don't allow merging of blocks that try_redirect_by_replacing_jump
2311         also does not handle when not optimizing.
2312
2313 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2314             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
2315
2316         * config/i386/i386.md (x86_sahf_1): Correctly handle
2317         HAVE_AS_IX86_SAHF.
2318
2319 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
2320
2321         PR target/31167
2322         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
2323         x86_64_general_operand as operand[2] predicate.  Remove "iF"
2324         from operand constraints and use "e" constraint instead.
2325         (*subti3_1, *subti3_1 splitter): Ditto.
2326         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
2327         operand[1] predicate.
2328
2329 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
2330
2331         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
2332         arrays, multiply the access strides by the size of the sub-array.
2333         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
2334
2335 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2336
2337         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
2338         the configured assembler supports the sahf mnemonic.
2339         * configure: Regenerate.
2340         * config.in: Regenerate.
2341
2342         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
2343         emit "sahf" or ".byte\t0x9e" as asm template.
2344
2345 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
2346
2347         PR 31018
2348         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
2349         option to replace hard coded TARGET_xxx in md file.
2350         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
2351         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2352         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
2353         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
2354         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
2355         (X86_TUNE_NOT_VECTORMODE): Ditto.
2356         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
2357         (TUNE_AVOID_VECTOR_DECODE): Ditto.
2358         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
2359         (TUNE_SLOW_IMUL_IMM8): Ditto.
2360         (TUNE_MOVE_M1_VIA_OR): Ditto.
2361         (TUNE_NOT_UNPAIRABLE): Ditto.
2362         (TUNE_NOT_VECTORMODE): Ditto.
2363
2364         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
2365         options.
2366
2367         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
2368         tuning options instead of hard coded TARGET_xxx.
2369         (fix ssemode peephole2's): Ditto.
2370         (imul peephole2's): Ditto.
2371         (movsi_or): Ditto.
2372         (movdi_or_rex64): Ditto.
2373         (move peephole2): Ditto.
2374         (not peephole2's): Ditto.
2375
2376 2007-03-14  Dirk Mueller  <dmueller@suse.de>
2377
2378         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
2379         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
2380         * c-parser.c (c_parser_if_body): Always add an empty statement in case
2381         of empty body.
2382         * c-parser.c (c_parser_do_statement): Warn about empty body in
2383         do/while statement.
2384         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
2385         * doc/invoke.texi (-Wempty-body): Update documentation.
2386
2387 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2388
2389         PR c/21438
2390         * c-common.h (warn_for_div_by_zero): Declare.
2391         * c-common.c (warn_for_div_by_zero): Define.
2392         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
2393         warning.
2394
2395 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2396
2397         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
2398         to PREFIX and STANDARD_PREFIX.
2399
2400 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2401             Phil Edwards  <phil@codesourcery.com>
2402
2403         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
2404         (__gthread_once_t): Remove busy field for RTPs.
2405         (__GTHREAD_ONCE_INIT): Update accordingly.
2406
2407 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
2408
2409         * doc/invoke.texi: Document VxWorks options.
2410
2411 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
2412
2413         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
2414
2415 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
2416
2417         PR tree-optimization/30590
2418         * tree-nrv.c (tree_nrv): Check for the partial update of the
2419         return value.
2420
2421 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2422
2423         * flags.h (flag_random_seed): Remove declaration, in favor of...
2424         * toplev.h (get_random_seed, set_random_seed): ... these.
2425         * tree.c (get_file_function_name): Use the former.
2426         * opts.c (common_handle_option): Use the latter.
2427         * toplev.c
2428
2429 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
2430
2431         PR middle-end/31127
2432         * cse.c (cse_find_path): Do not bail out if a basic block that
2433         we already visited now becomes part of a path that starts at a
2434         different basic block.  Just disallow this, to make sure we
2435         visit each basic block at most once.
2436
2437 2007-03-13  Jan Hubicka  <jh@suse.cz>
2438
2439         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
2440         when profile esitmate is present, calls with very low frequency are
2441         cold.
2442
2443 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
2444
2445         PR tree-optimization/30730
2446         PR tree-optimization/26900
2447         * tree-ssa-loop-niter.c: Include gmp.h.
2448         (bounds): New type.
2449         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
2450         split_to_var_and_offset, determine_value_range,
2451         bound_difference_of_offsetted_base, refine_bounds_using_guard,
2452         bound_difference, bounds_add, bounds_negate,
2453         number_of_iterations_ne_max, dump_affine_iv): New functions.
2454         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2455         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
2456         difference of initial and final value of control iv to validate
2457         results.
2458         (number_of_iterations_cond): Add loop parameter.  Determine bounds
2459         on the difference of the extremes of the control iv.  Add dumps.
2460         (expand_simple_operations): Handle phi nodes.
2461         (simplify_using_initial_conditions): Do not record used conditions.
2462         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
2463         Do not set additional_info.
2464         (implies_nonnegative_p, implies_ge_p): Removed.
2465         (derive_constant_upper_bound): Do not use parameter `additional'.
2466         (record_estimate): Parameter `additional' removed.  Parameter
2467         `i_bound' added.  Do not call derive_constant_upper_bound.
2468         (record_nonwrapping_iv): Use derive_constant_upper_bound to
2469         bound the number of iterations estimate.
2470         (estimate_numbers_of_iterations_loop): Pass the estimate from
2471         the number of iterations analysis to record_estimate.
2472         * tree.h (multiple_of_p): Declare.
2473         * tree-scalar-evolution.c (expression_expensive_p): Removed.
2474         (scev_const_prop): Do not check expression_expensive_p.
2475         * fold-const.c (multiple_of_p): Exported.
2476         * double-int.c (double_int_mask): Exported.
2477         * double-int.h (double_int_mask): Declare.
2478         * tree-flow.h (struct tree_niter_desc): Removed additional_info
2479         field.  Added max field.
2480
2481 2007-03-13  David Taylor  <taylor@candd.org>
2482
2483         PR driver/12448:
2484         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
2485         default -MQ.
2486
2487 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2488
2489         PR target/31123
2490         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
2491         two unamed patterns.
2492
2493 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
2494
2495         * config/i386/i386.opt (mcx16, msahf): New options.
2496         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
2497         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
2498
2499         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
2500         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
2501         Output -mcx16 and -msahf options when corresponding bit is set.
2502
2503         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
2504         and -msahf options.
2505
2506 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
2507
2508         * configure.ac: Test for assembler tolerance to # 0 "".
2509         * configure, config.in: Rebuilt.
2510         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
2511
2512 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
2513
2514         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
2515
2516         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
2517         (handle_syscall): Handle direct system calls.
2518         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
2519
2520 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2521
2522         * doc/invoke.texi: Fix cpp.info cross-reference.
2523         * doc/passes.texi: Fix gcc.info cross-reference.
2524
2525 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
2526
2527         PR tree-optimization/30835
2528         * lambda-code.c (can_convert_to_perfect_nest): Check whether
2529         bb_for_stmt is not NULL before accessing it.
2530
2531 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
2532
2533         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
2534         some multilibs.
2535
2536 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
2537
2538         PR 30635
2539         * doc/install.texi: Document --enable-stage1-languages
2540
2541 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
2542
2543         * tree-pass.h (pass_into_cfg_layout_mode,
2544         pass_outof_cfg_layout_mode): Declare.
2545         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
2546         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
2547         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
2548         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
2549
2550 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
2551
2552         * c-decl.c (warn_variable_length_array): New function.
2553         Refactored from grokdeclarator to handle warn_vla
2554         and handle unnamed array case.
2555         (grokdeclarator): Refactored VLA warning case.
2556         * c.opt (Wvla): New flag.
2557         * doc/invoke.texi (Wvla): New warning.
2558
2559 2007-03-12  Richard Henderson  <rth@redhat.com>
2560
2561         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
2562         (TARGET_SECTION_TYPE_FLAGS): New.
2563
2564 2007-03-12  Richard Henderson  <rth@redhat.com>
2565
2566         * config/darwin.c (machopic_reloc_rw_mask): New.
2567         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
2568         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
2569
2570 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
2571
2572         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
2573         * cppdefault.h (cpp_PREFIX): Document.
2574         (cpp_PREFIX_len): Likewise.
2575         (cpp_EXEC_PREFIX): New variable.
2576         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
2577         * c-incpath.c (add_standard_paths): Correct logic for relocating
2578         paths within prefix.
2579
2580 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
2581
2582         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
2583         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
2584         mode macro.
2585         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
2586         fix_truncdfdi_sse using SSEMODEF mode macro.
2587         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
2588         fix_truncdfsi_sse using SSEMODEF mode macro.
2589         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
2590         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
2591
2592 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
2593
2594         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
2595         elfos.h to tm_file.
2596
2597 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
2598
2599         * tree.h : Add multiple_of_p declaration.
2600         * fold-const.c (multiple_of_p): Make multiple_of_p public.
2601         * ipa-type-escape.c (results_of_malloc): Redundant.
2602         (visited_stmts): New. Visited stmt for walk_use_def_chains.
2603         (cast_type): Extended with new members.
2604         (check_cast): Returns cast_type.
2605         (cast): New structure for data of walk_use_def_chains.
2606         (is_malloc_result, is_cast_from_non_pointer_1,
2607         is_cast_from_non_pointer,
2608         is_array_access_through_pointer_and_index): New functions.
2609         (look_for_casts): Returns cast types.
2610         (check_call): Returns void.
2611         (okay_pointer_operation): Use support of pointer plus index,
2612         pointer plus constant and allow all multiplications.
2613
2614 2007-03-11  Richard Guenther  <rguenther@suse.de>
2615
2616         PR tree-optimization/31115
2617         * tree-vrp.c (extract_range_from_binary_expr): Make sure
2618         the shift count is positive and non-anti-range for RSHIFT_EXPR.
2619         A shift count of zero is not special as with *_DIV_EXPR.
2620         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
2621         direction.
2622
2623 2007-03-11  Ian Lance Taylor  <iant@google.com>
2624
2625         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
2626         the *_DIV_EXPR codes correctly with overflow infinities.
2627
2628 2007-03-11  Ira Rosen  <irar@il.ibm.com>
2629
2630         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
2631         indicate success/failure of the analysis. Add negation to subtrahend
2632         in case of subtraction. Fail if both operands contain constants.
2633         (create_data_ref): Fail if analyze_offset fails.
2634
2635 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
2636
2637         * config/i386/i386.md (frndintxf2): Rename to ...
2638         (rintxf2): ... this. Remove expander having same name.
2639         (rintsf2, rintdf2): Implement using SSEMODEF macro.
2640         (roundsf2, rounddf2): Ditto.
2641         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
2642         (lround<mode>di2, lround<mode>si2): Ditto.
2643
2644 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
2645
2646         * lower-subreg.c: Include except.h.
2647         (decompose_multiword_subregs): Verify that the only control flow
2648         insns we can split are loads to multi-words pseudos.
2649         Handle breaking such blocks after splitting, instead of calling
2650         find_many_sub_basic_blocks.
2651
2652         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
2653         on the new basic block.  Add a lengthy comment explaining why we
2654         thought this was necessary.
2655         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
2656
2657 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
2658
2659         PR c++/30924
2660         * tree.c (walk_type_fields): Recurse into the element type of
2661         ARRAY_TYPEs if there is a pointer set.
2662
2663 2007-03-10  Dirk Mueller  <dmueller@suse.de>
2664
2665         * c-common.c (warn_logical_operator): Fix condition.
2666
2667 2007-03-10  Tobias Schl├╝ter  <tobi@gcc.gnu.org>
2668
2669         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
2670         quotation mark.
2671         * config/darwin.c (machopic_select_section): Remove superfluous
2672         argument in call to categorize_decl_for_section.  Remove unused
2673         variable shlib.
2674
2675 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
2676
2677         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
2678         defined.
2679         * configure: Regenerate.
2680
2681 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
2682
2683         PR target/31101
2684         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
2685         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
2686         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
2687         Add LABEL_NUSES to emitted label.
2688         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
2689         branch probability value to emitted jump insn.
2690         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
2691         Do not check life information and do not re-arrange input operands
2692         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
2693
2694 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2695
2696         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
2697         the change of decode_asm_operands.
2698
2699 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2700
2701         * mode-switching.c (create_pre_exit): Skip blockage insn.
2702
2703 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
2704
2705         * tree-pass.h (TODO_update_smt_usage): Remove.
2706         Update all users.
2707         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
2708         argument SOME.
2709         Update all users.
2710
2711 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2712
2713         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
2714         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
2715         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
2716         SOM target.
2717
2718 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
2719
2720         * gcc.c: Document %{, in big comment at top.
2721         (input_suffix_matches): Remove special handling for .s and
2722         .S.
2723         (input_spec_matches): New.
2724         (handle_braces): Handle %{,.
2725         (validate_switches): ',' indicates a value which is not a switch.
2726         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
2727         to detect assembler input.
2728         * config/i386/sol2.h (CPP_SPEC): Likewise.
2729         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
2730         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
2731         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
2732         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
2733         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
2734         -m64 causes deployment target to default to 10.5.
2735         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2736
2737 2007-03-09  Richard Henderson  <rth@redhat.com>
2738
2739         PR target/26090
2740         * target.h (targetm.asm.out.reloc_rw_mask): New.
2741         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
2742         (TARGET_ASM_OUT): Use it.
2743         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
2744         * varasm.c (categorize_decl_for_section): Remove shlib argument;
2745         use the new reloc_rw_mask target hook instead.
2746         (default_section_type_flags_1): Merge into...
2747         (default_section_type_flags): ... here.
2748         (decl_readonly_section_1): Merge into...
2749         (decl_readonly_section): ... here.
2750         (default_elf_select_section_1): Merge into...
2751         (default_elf_select_section): ... here.
2752         (default_unique_section_1): Merge into...
2753         (default_unique_section): ... here.
2754         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
2755         (default_select_rtx_section): Use it.
2756         (default_elf_select_rtx_section): Likewise.
2757         * output.h: Update to match.
2758         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
2759         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
2760         (TARGET_ASM_RELOC_RW_MASK): New.
2761         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
2762         to categorize_decl_for_section.
2763         (x86_64_elf_unique_section): Likewise.
2764         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
2765         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
2766         (TARGET_ASM_RELOC_RW_MASK): New.
2767         * config/ia64/ia64.c (ia64_rwreloc_select_section,
2768         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
2769         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
2770         (TARGET_RWRELOC): Remove.
2771         (ia64_section_type_flags): Adjust call to default_section_type_flags.
2772         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2773         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
2774         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
2775         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
2776         (rs6000_xcoff_select_section): Use decl_readonly_section.
2777         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
2778         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
2779         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
2780         (TARGET_SECTION_TYPE_FLAGS): Remove.
2781         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
2782
2783 2007-03-09  Roger Sayle  <roger@eyesopen.com>
2784
2785         * fold-const.c (fold_comparison): Remove compile-time evaluation of
2786         complex constant equality/inequality comparisons for here.
2787         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
2788         known at compile-time or can be simplified to a scalar comparison.
2789         (fold_relational_const): Move compile-time evaluation of complex
2790         constant equality/inequality comparisons to here.
2791
2792 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2793
2794         PR rtl-optimization/30643
2795         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
2796         dest_addr_elt.
2797         (fold_rtx): Recurse, like before 2006-11-03.
2798
2799 2007-03-09  DJ Delorie  <dj@redhat.com>
2800
2801         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
2802         m32c-pragma.o.
2803
2804 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
2805
2806         PR tree-optimization/30375
2807         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
2808         LHS of statements is not the same.
2809         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
2810
2811 2007-03-09  Chao-ying Fu  <fu@mips.com>
2812
2813         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
2814         REV 2.
2815         * doc/invoke.texi (-mdspr2): Document new option.
2816         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
2817         New unspec for DSP REV 2.
2818         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
2819         these instructions are extended in DSP REV 2.
2820         (mips-dspr2.md): Include.
2821         * config/mips/mips.opt (mdspr2): New option.
2822         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
2823         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
2824         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
2825         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
2826         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
2827         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
2828         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
2829         and 2 builtins.
2830         (bdesc_map): Add one field of unsupported_target_flags.
2831         (bdesc_arrays):  Update entries to have extra fields.  Add
2832         dsp_32only_bdesc.
2833         (mips_init_builtins): Initialize new function types.
2834         Check unsupported_target_fileds to filter out builtins.
2835         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
2836         TARGET_DSPR2.
2837         (ASM_SPEC): Pass mdspr2 to the assembler.
2838         * config/mips/mips-dspr2.md: New file.
2839
2840 2007-03-09  Sa Liu  <saliu@de.ibm.com>
2841
2842         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
2843
2844 2007-03-09  Ian Lance Taylor  <iant@google.com>
2845
2846         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
2847         argument) like -Wstrict-overflow=2.
2848         * doc/invoke.texi (Warning Options): Update documentation.
2849
2850 2007-03-09  Dirk Mueller  <dmueller@suse.de>
2851
2852         PR c++/17946
2853         * doc/invoke.texi (-Wlogical-op): Document.
2854         * common.opt (-Wlogical-op): New.
2855         * c-common.h (warn_logical_operator): Declare.
2856         * c-common.c (warn_logical_operator): Define.
2857         * c-typeck.c (parser_build_binary_op): Call
2858         warn_logical_operator.
2859
2860 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2861
2862         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
2863         * final.c (final_scan_insn): Test for non-"" file name.
2864
2865 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
2866
2867         * doc/loop.texi: Document the Omega linear constraints solver.
2868         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
2869         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
2870         omega-hash-table-size, omega-max-keys, and
2871         omega-eliminate-redundant-constraints.
2872         * tree-pass.h (pass_check_data_deps): Declared.
2873         * omega.c: New.
2874         * omega.h: New.
2875         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
2876         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
2877         pass_check_data_deps): New.
2878         * tree-data-ref.c (init_data_ref): Remove declaration.
2879         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
2880         (analyze_array): Renamed init_array_ref, move up initializations.
2881         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
2882         Removed arguments that are set to NULL.
2883         (analyze_indirect_ref): Correct indentation, correct call to
2884         init_pointer_ref.
2885         (object_analysis): Call init_array_ref instead of analyze_array.
2886         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
2887         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
2888         of DR_ACCESS_FNS_ADDR.
2889         (init_omega_eq_with_af, omega_extract_distance_vectors,
2890         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
2891         ddr_consistent_p): New.
2892         (compute_affine_dependence): Check consistency of ddrs when
2893         flag_check_data_deps is passed.
2894         (analyze_all_data_dependences): Uncomment.
2895         (tree_check_data_deps): New.
2896         * tree-data-ref.h: Include omega.h.
2897         (DR_ACCESS_FNS_ADDR): Removed.
2898         (data_dependence_relation): Add inner_loop.
2899         (DDR_INNER_LOOP): New.
2900         * common.opt (fcheck-data-deps): New.
2901         * tree-flow.h (tree_check_data_deps): Declare.
2902         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
2903         (OBJS-common): Depend on omega.o.
2904         (omega.o): Define.
2905         * passes.c (pass_check_data_deps): Scheduled.
2906         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
2907         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
2908         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
2909         PARAM_VECT_MAX_VERSION_CHECKS,
2910         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
2911
2912 2007-03-09  Richard Guenther  <rguenther@suse.de>
2913
2914         PR tree-optimization/30904
2915         PR middle-end/31058
2916         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
2917         the same way as *_DIV_EXPR.
2918
2919 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2920
2921         * recog.c (decode_asm_operands): No mixed declarations and code.
2922
2923 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
2924
2925         * rtl.def (ASM_INPUT): Add location.
2926         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
2927         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
2928         (decode_asm_operands): Add loc operand.
2929         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
2930         * stmt.c (expand_asm): Rename to...
2931         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
2932         gen_rtx_ASM_INPUT_loc.
2933         (expand_asm_expr): Adjust.
2934         * recog.c (decode_asm_operands): Add loc operand.
2935         (check_asm_operands, extract_insn): Adjust.
2936         * reload1.c (maybe_fix_stack_asms): Likewise.
2937         * final.c (asm_insn_count): Likewise.
2938         (final_scan_insn): Output # line before and after asm.
2939
2940 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
2941
2942         * tree-ssa-structalias.c (variable_info): Remove
2943         finished_solution.
2944         (new_var_info): Ditto.
2945         (shared_bitmap_info_t): New structure.
2946         (shared_bitmap_table): New variable.
2947         (shared_bitmap_hash): New function.
2948         (shared_bitmap_eq): Ditto
2949         (shared_bitmap_lookup): Ditto.
2950         (shared_bitmap_add): Ditto.
2951         (merge_smts_into): Change to take bitmap directly.
2952         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
2953         (init_alias_vars): Init shared bitmap hashtable.
2954         (delete_points_to_sets): Delete shared bitmap hashtable.
2955         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
2956         is_aliased removal as a change that was still necessary was
2957         deleted.
2958
2959 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
2960
2961         * config/i386/i386.h (override_options): Conditionally disable
2962         x86_sahf for 64bit targets only.
2963
2964 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2965
2966         PR C/31072
2967         * c-decl.c (merge_decls): Don't call make_var_volatile.
2968         * varasm.c (make_var_volatile): Remove.
2969         * output.h (make_var_volatile): Remove.
2970
2971 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
2972
2973         PR tree-optimization/31085
2974         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
2975
2976 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2977
2978         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
2979         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
2980         ATTR_CONST_NOTHROW_LIST.
2981
2982         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2983         FIX_TRUNC_EXPR.
2984
2985 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
2986
2987         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
2988
2989 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
2990
2991         PR 31013
2992         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
2993         is declared.
2994         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
2995         passed, use shared libgcc.
2996
2997 2007-03-08  Roger Sayle  <roger@eyesopen.com>
2998
2999         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
3000         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3001         (honor_protect_cleanup_actions, lower_try_finally_switch):
3002         Likewise.
3003         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
3004         ifc_temp_var): Likewise.
3005         * tree-inline.c (setup_one_parameter): Likewise.
3006         * tree-mudflap.c (mf_decl_cache_locals,
3007         mf_build_check_statement_for): Likewise.
3008         * tree-nested.c (init_tmp_var, save_tmp_var,
3009         finalize_nesting_tree_1): Likewise.
3010         * tree-outof-ssa.c (insert_copy_on_edge,
3011         insert_backedge_copies): Likewise.
3012         * tree-profile.c (tree_gen_edge_profiler,
3013         tree_gen_ic_profiler): Likewise.
3014         * tree-scalar-evolution.c (scev_const_prop): Likewise.
3015         * tree-sra.c (sra_build_assignment): Likewise.
3016         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
3017         * tree-ssa-math-opts.c (insert_reciprocals,
3018         execute_cse_sincos_1): Likewise.
3019         * tree-tailcall.c (adjust_accumulator_values,
3020         adjust_return_value): Likewise.
3021         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
3022         * tree-vect-transform.c (vect_create_data_ref_ptr,
3023         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
3024         vect_create_epilog_for_reduction, vectorizable_reduction,
3025         vectorizable_call, vectorizable_conversion,
3026         vectorizable_assignment, vectorizable_operation,
3027         vectorizable_type_demotion, vect_gen_widened_results_half,
3028         vect_permute_store_chain, vectorizable_store,
3029         vect_setup_realignment, vect_permute_load_chain,
3030         vectorizable_load, vectorizable_condition,
3031         vect_create_cond_for_align_checks): Likewise.
3032         * tree-vrp.c (build_assert_expr_for): Likewise.
3033
3034 2007-03-08  Ian Lance Taylor  <iant@google.com>
3035
3036         * tree-vrp.c: Include "intl.h".
3037         (usable_range_p): New static function.
3038         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
3039         overflowed values, juts set *strict_overflow_p.
3040         (compare_values): Only return -2 if one of the operands is not a
3041         constant.
3042         (compare_ranges): Call usable_range_p.
3043         (compare_range_with_value): Likewise.
3044         (vrp_evaluate_conditional_warnv): Rename from
3045         vrp_evaluate_conditional.  Make static.  Change all callers.
3046         (vrp_evaluate_conditional): New function.
3047         (simplify_div_or_mod_using_ranges): Issue warning about reliance
3048         on signed overflow.
3049         (simplify_abs_using_ranges): Likewise.
3050         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
3051         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
3052         within_stmt parameter.
3053         * tree-ssa-propagate.c (fold_predicate_in): Update call to
3054         vrp_evaluate_conditional.
3055         * tree-ssa-threadedge.c
3056         (record_temporary_equivalences_from_stmts_at_dest): Change
3057         simplify parameter to take a second tree parameter.
3058         (simplify_control_stmt_condition): Likewise.
3059         (thread_across_edge): Likewise.
3060         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
3061         (thread_across_edge): Likewise.
3062         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
3063
3064 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
3065
3066         * config/i386/i386.h (TARGET_SAHF): New define.
3067         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
3068         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
3069         (x86_sahf): New global variable.
3070         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
3071         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
3072         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
3073         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
3074         for 64-bit.
3075         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
3076         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
3077         when expanding fcomi/sahf based tests.
3078         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
3079         expanding sahf based alternative. Emit sahf based sequence when
3080         optimizing for code size.
3081         * config/i386/i386.md (x86_sahf_1): Do not disable for
3082         TARGET_64BIT, enable for TARGET_SAHF.
3083
3084 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
3085
3086         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
3087         spurious whitespace from error message.
3088
3089 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
3090
3091         PR c++/30852
3092         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
3093
3094 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3095
3096         * c-decl.c (grokdeclarator): Disable warnings for anonymous
3097         bitfields.
3098         * tree-sra.c (instantiate_element): Propagate disabled warnings
3099         from the element itself to the created variable.
3100
3101 2007-03-07  Richard Henderson  <rth@redhat.com>
3102
3103         PR target/30848
3104         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
3105         silently fix up the stack in the case of a missing register.
3106
3107 2007-03-07  Paul Brook  <paul@codesourcery.com>
3108
3109         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
3110
3111 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
3112
3113         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
3114         New.
3115         (phase1_vrs): Use them.
3116         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
3117         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
3118         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
3119         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
3120         __gnu_Unwind_Restore_WMMXC if required.
3121         (_Unwind_VRS_Pop): Implement iWMMXt support.
3122         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
3123         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
3124         gnu_Unwind_Save_WMMXC): Define.
3125
3126 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3127
3128         * config/vxworks.h (vxworks_override_options): Declare.
3129         (VXWORKS_OVERRIDE_OPTIONS): Use it.
3130         * config/vxworks.c: Include target.h and toplev.h.
3131         (vxworks_override_options): New function.
3132         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
3133
3134 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
3135
3136         * config/s390/s390.c (override_options): Don't emit an error when
3137         -mstack-size is used without providing -mstack-guard.
3138         (s390_emit_prologue): Choose stack_guard value automatically if not
3139         provided via command line.
3140         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
3141
3142 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
3143
3144         * config/i386/i386.c (output_set_got): Add a GOT initialization
3145         sequence for VxWorks PIC.
3146         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
3147         around labels as well as symbols.  Use gotoff_operand instead
3148         of local_symbolic_operand.
3149         (legitimize_pic_address): Use gotoff_operand instead of
3150         local_symbolic_operand.  Use @GOT accesses for labels as
3151         well as symbols.
3152         (ix86_output_addr_diff_elt): Use PC-relative rather than
3153         GP-relative offsets for VxWorks PIC.
3154         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
3155         no_new_pseudos.  Check whether the returned register is op0.
3156         * config/i386/i386.md (tablejump): Use PC-relative rather than
3157         GP-relative offsets for VxWorks PIC.
3158         * config/i386/predicates.md (gotoff_operand): New predicate.
3159
3160 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3161
3162         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
3163         before defining.
3164         * config/vxworks-dummy.h: New file.
3165         * config/i386/i386.h: Include it.
3166
3167 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3168
3169         * dwarf2out.c (is_inlined_entry_point): New
3170         (add_high_low_attributes): Emit DW_AT_entry_pc along with
3171         DW_AT_ranges if the first subblock is the entry point.
3172
3173 2007-03-06  David Daney  <ddaney@avtrex.com>
3174
3175         * doc/install.texi (mips-*-*): Change recommended binutils
3176         version.
3177
3178 2007-03-06  Anatoly Sokolov <aesok@post.ru>
3179
3180         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
3181         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
3182         devices.
3183         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3184         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3185
3186 2007-03-06  Jan Hubicka  <jh@suse.cz>
3187
3188         * errors.h (warning, error, fatal, internal_error): Mark as cold.
3189         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
3190         are hot.
3191         (probably_cold_bb_p): Cold functions are cold.
3192         (probably_never_executed_bb_p): Cold functions are cold.
3193         (tree_bb_level_predictions): Predict calls to cold functions as not
3194         taken.
3195         (compute_function_frequency): Check hot/cold attributes.
3196         * function.h (function_frequency): Update comments.
3197         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
3198         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
3199         (c_common_att): Add cold and hot.
3200
3201         * doc/extend.texi (hot,cold attributes): Document.
3202
3203 2007-03-06  Andrew Haley  <aph@redhat.com>
3204
3205         * function.c (expand_function_end): Move blockage to just after we
3206         emit the label for the naked return from the function.
3207
3208 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3209
3210         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
3211         before redefining.
3212
3213 2007-03-06  Jan Hubicka  <jh@suse.cz>
3214
3215         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
3216         loaded for constant large models.  Non-large 64bit PIC can do.
3217         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
3218         * cmodel.h: Add LARGE PIC.
3219         * i386.md (UNSPEC_PLTOFF): New.
3220         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
3221         needed.
3222         (*call_1_rex64): Disable for large models.
3223         (*call_1_rex64_large): New.
3224         (*call_value_1_rex64): Disable for large models.
3225         (*call_value_1_rex64_large): New.
3226         (set_rip_rex4): New.
3227         (set_got_offset_rex64): New.
3228         * predicates.md (constant_call_address_operand): For large model
3229         constant calls are not possible.
3230         * i386-protos.h (construct_plt_address): Declare.
3231         * i386.c (override_options): Accept large models.
3232         (ix86_expand_prologue): Expand large PIC GOT pointer load.
3233         (legitimate_constant_p): Add new UNSPECs.
3234         (legitimate_pic_operand_p): Likewise.
3235         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
3236         (legitimize_pic_address): Do easy RIP relative way for TLS only for
3237         non-large model.
3238         (output_pic_addr_const): Add PLTOFF.
3239         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
3240         (ix86_expand_move): Legitimize pic address when in PIC mode.
3241         (construct_plt_address): New function.
3242         (ix86_expand_call): Offload the address to register and use GOT pointer
3243         for large model.
3244         * invoke.texi (mcmodel=large): Update documentation.
3245
3246 2007-03-06  Richard Henderson  <rth@redhat.com>
3247
3248         * config/i386/i386.c (x86_use_leave, x86_push_memory,
3249         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
3250         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
3251         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
3252         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
3253         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
3254         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
3255         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
3256         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
3257         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3258         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3259         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
3260         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3261         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3262         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
3263         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
3264         x86_schedule, x86_use_bt, x86_pad_returns,
3265         x86_use_xchgb): Merge into ...
3266         (ix86_tune_features): ... here.  New array.
3267         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3268         x86_bswap): Merge into ...
3269         (ix86_arch_features): ... here.  New array.
3270         (x86_3dnow_a): Remove.
3271         (x86_accumulate_outgoing_args): Make static.
3272         (x86_arch_always_fancy_math_387): Make static.
3273         (ix86_tune_mask, ix86_arch_mask): Move ...
3274         (override_options): ... to local variables here.  Apply the
3275         appropriate mask to each element of ix86_arch_features and
3276         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
3277         as were done in the old macros.
3278         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
3279         * config/i386/i386.h (x86_use_leave, x86_push_memory,
3280         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
3281         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
3282         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
3283         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
3284         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
3285         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
3286         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
3287         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
3288         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
3289         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3290         x86_accumulate_outgoing_args, x86_prologue_using_move,
3291         x86_epilogue_using_move, x86_decompose_lea,
3292         x86_arch_always_fancy_math_387, x86_shift1,
3293         x86_sse_partial_reg_dependency, x86_sse_split_regs,
3294         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
3295         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
3296         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
3297         x86_use_incdec, x86_pad_returns, x86_bswap,
3298         x86_partial_flag_reg_stall): Remove.
3299         (enum ix86_tune_indices): New.
3300         (ix86_tune_features): New.
3301         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
3302         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
3303         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
3304         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
3305         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
3306         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
3307         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
3308         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
3309         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
3310         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
3311         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
3312         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
3313         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
3314         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
3315         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
3316         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
3317         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
3318         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
3319         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
3320         TARGET_EXT_80387_CONSTANTS): Use it.
3321         (enum ix86_arch_indices): New.
3322         (ix86_arch_features): New.
3323         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
3324         TARGET_BSWAP): Use it.
3325         (ix86_tune_mask, ix86_arch_mask): Remove.
3326
3327 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
3328
3329         PR bootstrap/31020
3330         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
3331         Define using $${sysroot_headers_suffix}.
3332         * configure: Regenerate.
3333         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
3334         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
3335         defined.
3336         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
3337         * gcc.c (print_sysroot_headers_suffix): New.
3338         (option_map): Include --print-sysroot-headers-suffix.
3339         (display_help): Mention -print-sysroot-headers-suffix.
3340         (process_command): Handle -print-sysroot-headers-suffix.
3341         (do_spec_1): Append multilib directory to include-fixed path if
3342         sysroot suffixes in use.
3343         (main): Handle -print-sysroot-headers-suffix.
3344         * Makefile.in (start.encap): Don't depend on xlimits.h
3345         (xlimits.h): Remove.
3346         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
3347         limits.h for each multilib in fixinc_list.
3348         (fixinc_list, s-fixinc_list): New.
3349         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
3350         generate them for each multilib in fixinc_list.
3351         (stmp-fixproto): Use include-fixed.  Run fixproto for each
3352         multilib in fixinc_list.
3353         (mostlyclean): Don't remove xlimits.h.
3354         (clean): Remove include-fixed.
3355         (real-install-headers-tar, real-install-headers-cpio,
3356         real-install-headers-cp): Don't copy include, only include-fixed.
3357         (install-mkheaders): Depend on fixinc_list.  Don't depend on
3358         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
3359         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
3360         SYSTEM_HEADER_DIR setting in mkheaders.conf.
3361
3362 2007-03-06  Jan Hubicka  <jh@suse.cz>
3363
3364         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
3365         NANs easilly.
3366
3367 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3368
3369         * configure.ac: Allow tm_file to contain build-directory files.
3370         * configure: Regenerate.
3371         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
3372         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
3373         * config/m68k/print-sysroot-suffix.sh: New file.
3374
3375 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3376
3377         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
3378         of pic_offset_table_rtx if reload_completed.
3379         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
3380         PIC_OFFSET_TABLE_REGNUM.
3381         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
3382         return true.
3383         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
3384         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
3385
3386 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3387
3388         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3389         functions that call eh_return.
3390
3391 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3392
3393         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
3394         functions that need a constant pool.
3395
3396 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
3397
3398         PR target/28181
3399         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
3400         (m68k_preferred_reload_class): Likewise.
3401         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
3402         (SECONDARY_RELOAD_CLASS): Define.
3403         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
3404         (LIMIT_RELOAD_CLASS): Delete.
3405         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
3406         registers from&