OSDN Git Service

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