OSDN Git Service

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