OSDN Git Service

* config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-04-27  Mike Stump  <mrs@apple.com>
2
3         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
4
5 2007-04-27  Ian Lance Taylor  <iant@google.com>
6
7         PR middle-end/31710
8         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
9         TYPE_MAX_VALUE exist, convert them to the new type.
10
11 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
12
13         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
14         if it claims to be available.
15         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
16         edge is redirected.
17         (perform_tree_ssa_dce): Always free postdominators.
18
19 2007-04-27  Richard Henderson  <rth@redhat.com>
20
21         * config/alpha/predicates.md (aligned_memory_operand): Mark
22         as define_special_predicate.
23         (unaligned_memory_operand, normal_memory_operand): Likewise.
24         (reg_or_unaligned_mem_operand): Remove.
25         (any_memory_operand): Match the documentation and check for
26         non-renumbered pseudos during reload.
27         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
28         alpha_secondary_reload_class, update to new interface, make static.
29         Handle CQImode like HImode.  Remove FP subreg check.
30         (alpha_expand_mov): Use replace_equiv_address.
31         (alpha_expand_mov_nobwx): Use any_memory_operand.
32         (TARGET_SECONDARY_RELOAD): New.
33         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
34         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
35         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
36         * config/alpha/alpha.md: ... here.
37         (RELOAD12, reloadmode): New.
38         (movcqi): New.
39         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
40         Don't handle the aligned case here.
41         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
42         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
43         reload_inhi_help.  Don't expect a scratch register.
44         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
45         reload_outhi_help.
46         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
47
48 2007-04-27  Richard Guenther  <rguenther@suse.de>
49
50         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
51
52 2007-04-27  Richard Guenther  <rguenther@suse.de>
53
54         PR tree-optimization/30965
55         PR tree-optimization/30978
56         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
57         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
58         (find_equivalent_equality_comparison): Likewise.
59         (simplify_cond): Likewise.
60         (get_prop_source_stmt): New helper.
61         (get_prop_dest_stmt): Likewise.
62         (can_propagate_from): Likewise.
63         (remove_prop_source_from_use): Likewise.
64         (combine_cond_expr_cond): Likewise.
65         (forward_propagate_comparison): New function.
66         (forward_propagate_into_cond): Rewrite to use fold for
67         tree combining.
68         (tree_ssa_forward_propagate_single_use_vars): Call
69         forward_propagate_comparison to propagate comparisons.
70
71 2007-04-27  Richard Guenther  <rguenther@suse.de>
72
73         PR tree-optimization/31715
74         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
75         sure to do computation on the offset in an appropriate
76         signed type.
77
78 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
79
80         * reload.h (elimination_target_reg_p): Declare.
81         * reload.c (find_reloads): Don't apply the reg_rtx move
82         optimization if the SET_DEST satisfies elimination_target_reg_p.
83         * reload1.c (elimination_target_reg_p): New function.
84         (gen_reload): In the move/add2 fallback, make sure that op0
85         does not overlap the destination register.
86
87 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
88
89         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
90         transform only GIMPLE_MODIFY_STMTs.
91         * tree-complex.c (expand_complex_operations_1): Ditto.
92         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
93         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
94         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
95         branches.
96         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
97         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
98         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
99         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
100         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
101         slpeel_add_loop_guard): Ditto.
102         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
103         * lambda-code.c (perfect_nestify): Ditto.
104         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
105         before the first statement.
106         * tree-optimize.c (execute_free_datastructures): Fix comments.
107         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
108         * tree-flow.h (disband_implicit_edges): Declaration removed.
109         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
110         branches.
111         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
112         without gotos.
113         (disband_implicit_edges, has_label_p): Removed.
114         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
115         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
116         branches.
117         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
118         side effects.
119         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
120         also for COND_EXPRs.
121         * cfgexpand.c (label_rtx_for_bb): New function.
122         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
123         Use label_rtx_for_bb to find the labels.
124         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
125         last block.  Detect fallthru edges.
126
127 2007-04-26  Ian Lance Taylor  <iant@google.com>
128
129         PR target/28675
130         * reload.c (find_reloads_subreg_address): If the address was valid
131         in the original mode but not in the new mode, reload the whole
132         address.
133
134 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
135
136         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
137         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
138         (cleanup_control_expr_graph): Do not invalidate dominance info.
139         Record altered blocks.
140         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
141         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
142         cleanup_tree_cfg_bb): New functions.
143         (remove_forwarder_block): Do not maintain the worklist of blocks.
144         Record altered blocks.
145         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
146         not over whole cfg.
147         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
148         delete_unreachable_blocks if dominators are not available.
149         * tree-inline.c (optimize_inline_calls): Free dominance information
150         earlier.
151         * tree-flow.h (remove_edge_and_dominated_blocks,
152         cfgcleanup_altered_bbs): Altered.
153         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
154         blocks.
155         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
156         functions.
157         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
158         do not invalidate dominators.
159
160 2007-04-26  Anatoly Sokolov <aesok@post.ru>
161
162         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and 
163         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
164         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
165         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
166
167 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
168
169         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
170
171 2007-04-26  Richard Guenther  <rguenther@suse.de>
172
173         PR tree-optimization/31703
174         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
175         the right type for the target of the bittest.
176
177 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
178
179         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
180         ix86_sol10_return_in_memory.
181
182 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
183
184         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
185         variables.
186
187 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
188
189         PR c++/31598
190         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
191
192         PR tree-optimization/30558
193         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
194         clear this_state.prev_try.
195
196 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
197             Mark Mitchell  <mark@codesourcery.com>
198
199         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
200         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
201         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
202
203 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
204
205         PR driver/31107
206         * doc/invoke.texi (%:print-asm-header): Document.
207         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
208         and -ftarget-help.
209         (static_spec_functions): Add print-asm-header.
210         (main): Print a banner before the --target-help linker options.
211         (print_asm_header_spec_function): New function.
212
213 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
214
215         PR target/31403
216         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
217         (movsf_ie): Likewise.
218
219 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
220
221         * doc/extend.texi ([Type Traits]): Adjust per N2255.
222
223 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
224
225         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
226         for divide-by-zero.
227         (__umodsi3, __modsi3): Likewise.
228
229 2007-04-25  Dirk Mueller  <dmueller@suse.de>
230
231         * c-typeck.c (build_compound_expr): Annotate warning()
232         call with OPT_Wunused_value.
233         * tree-ssa.c (warn_uninit): Annotate warning with
234         OPT_Wunintialized.
235         * c-common.c (handle_sentinel_attribute): Annotate warning
236         call with OPT_Wattributes.
237
238 2007-04-25  Thiemo Seufer  <ths@mips.com>
239
240         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
241         (mips16): Fix typo.
242         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
243         on to the assembler.  Improve handling of -mno-mips16.  Add handling
244         of -mno-mips3d, -mno-dsp, -mno-dspr2.
245         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
246         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
247         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
248
249 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
250
251         PR target/31680
252         * config/i386/winnt.c (i386_pe_file_end): Strip only
253         USER_LABEL_PREFIX when writing export name.
254
255 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
256
257         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
258         sh/elf.h, vx-common.h and vxworks.h.
259         * config/sh/sh.h: Include config/vxworks-dummy.h.
260         (SUBTARGET_OVERRIDE_OPTIONS): Define.
261         (OVERRIDE_OPTIONS): Use it.
262         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
263         (vxworks_picreg): New pattern.
264         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
265         VXWORKS_OS_CPP_BUILTINS.
266         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
267         to their VXWORKS_* equivalents.
268         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
269         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
270         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
271         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
272         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
273         -mrtp/-fPIC multilibs.
274         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
275         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
276         (MULTILIB_OSDIRNAMES): Delete.
277
278 2007-04-25  Anatoly Sokolov <aesok@post.ru>
279
280         PR target/18989
281         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
282
283 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
284
285         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
286         rounding mode to be specified by the caller.
287         (real_to_mpfr) Likewise.
288         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
289         include new arguments.
290         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
291
292 2007-04-24  Ian Lance Taylor  <iant@google.com>
293
294         PR tree-optimization/31605
295         * tree-vrp.c (set_value_range): Check that min and max are not
296         both overflow infinities.
297         (set_value_range_to_value): New static function.
298         (extract_range_from_binary_expr): Call set_value_range_to_value.
299         (extract_range_from_cond_expr): Likewise.
300         (extract_range_from_expr): Likewise.
301         (extract_range_from_unary_expr): Likewise.  Don't create a range
302         which overflows on both sides.
303         (vrp_meet): Check for a useless range.
304         (vrp_visit_phi_node): If we see a constant which looks like an
305         overflow infinity, turn off the TREE_OVERFLOW flag.
306
307 2007-04-24  Ian Lance Taylor  <iant@google.com>
308
309         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
310
311 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
312
313         PR diagnostic/25923
314         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
315         diagnostic message is being built.
316         * tree-pretty-print.c (dump_generic_node): Only write the
317         formatted text into BUFFER's stream if we are not building a
318         diagnostic message.
319         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
320         dump_generic_node.
321         * Makefile.in (toplev.o): Depend on tree-pass.h.
322
323 2007-04-24  Ian Lance Taylor  <iant@google.com>
324
325         PR tree-optimization/31602
326         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
327         conditionals in the copied loop header.
328         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
329         warnings if TREE_NO_WARNING is set.
330         * doc/invoke.texi (Warning Options): Clarify that
331         -Wstrict-overflow does not warn about loops.
332
333 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
334
335         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
336         expand on the comment about _Decimal128 arguments and check the
337         integer result of the modulus operation; for 64-bit ELF ABI, ensure
338         that _Decimal128 argument uses even/odd register pair.
339         (function_arg): Ditto.
340
341 2007-04-24  Hui-May Chang <hm.chang@apple.com>
342
343         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
344         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
345
346 2007-04-24  Richard Guenther  <rguenther@suse.de>
347             Olga Golovanevsky  <olga@il.ibm.com>
348
349         * fold-const.c (multiple_of_p): Check for bottom 
350         to be zero. 
351
352 2007-04-24  Richard Henderson  <rth@redhat.com>
353
354         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from 
355         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
356         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
357         looking for non-zero bits shifted out.  Avoid a recursive call
358         when constructing the scalar.
359         (__floatundisf): Likewise.
360
361 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
362
363         * dwarf2out.c (field_byte_offset): Move the existing logic
364         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
365         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
366
367 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
368
369         PR target/31641
370         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
371         argument of 0 for memset.
372         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
373         unsigned shift instead of the signed variant.
374
375 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
376
377         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
378         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
379         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
380         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
381         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
382         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
383         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
384         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
385         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
386         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
387         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
388         "mul<mode>3", "div<mode>3"): Insn definitions added.
389         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
390         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
391         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
392         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
393         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
394         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
395         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
396         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
397         TARGET_FLOAT_FORMAT): Macro definitions removed.
398         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
399         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
400         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
401         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
402         (s390_gen_rtx_const_DI): Function removed.
403         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
404
405 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
406
407         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
408         over an external ffs function.
409
410 2007-04-24  Chao-ying Fu  <fu@mips.com>
411             Richard Sandiford  <richard@nildram.co.uk>
412
413         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
414         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
415         (smadd_widen_optab, umadd_widen_optab): Define.
416         * optabs.c (init_optabs): Initialize smadd_widen_optab and
417         umadd_widen_optab.
418         * genopinit.c (optabs): Fill in smadd_widen_optab and
419         umadd_widen_optab.
420         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
421         and umadd_widen_optab to implement multiply-add sequences.
422         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
423         (<u>maddsidi4): ...this.  Extend condition to include
424         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
425         of operand 0 to "ka" and use the three-operand form of madd<u>
426         for TARGET_DSPR2.
427         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
428         to define_expands.
429         * config/mips/constraints.md (ka): New register constraint.
430
431 2007-04-24  Jan Hubicka  <j@suse.cz>
432
433         Revert:
434
435         2007-04-23  Jan Hubicka  <jh@suse.cz>
436         * function.c (init_function_start): Don't init line number info.
437         (expand_function_end): Update.
438         (reset_block_changes, record_block_change, finalize_block_changes,
439         check_block_change, free_block_changes): Kill.
440         * function.h (reset_block_changes, record_block_change,
441         finalize_block_changes, check_block_change, free_block_changes): Remove
442         prototypes.
443         (struct function): Remove ib_boundaries_block.
444         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
445         Use curr_insn_locator to initialize locator.
446         (emit_line_note): Remove.
447         * cfgexpand.c (expand_gimple_cond_expr): Update.
448         (construct_exit_block): Likewise.
449         (tree_expand_cfg): Initialize/finalize locators.
450         * expr.c (expand_expr_real): Update.
451         * cfglayout.c (line_locators_locs, line_locators_lines,
452         file_locators_locs, file_locators_files): Remove.
453         (set_block_levels): Move to cfgexpand.c.
454         (insn_locators_initialize): Remove.
455         (pass_insn_locators_initialize): Remove.
456         (locations_locators_locs, locations_locators_vals): New static vars.
457         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
458         Likewise.
459         (insn_locators_alloc, insn_locators_finalize,
460         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
461         New functions.
462         (locator_location): New.
463         (locator_line, locator_file): Rewrite.
464         * rtl.h (emit_line_note): Kill.
465         (insn_locators_alloc, insn_locators_finalize,
466         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
467         Declare.
468         * tree-inline.c (initialize_cfun): Do not initialize
469         ib_boundaries_block.
470         * passes.c (pass_insn_locators_initialize): Remove.
471
472 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
473
474         * doc/invoke.texi: Removed leading '-' from option index entries.
475
476 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
477
478         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
479         Use phi_nodes_ptr.
480         (create_phi_node): Use set_phi_nodes.
481         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
482         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
483         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
484         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
485         (bsi_start, bsi_last): Use bb_stmt_list.
486         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
487         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
488         Traverse the statements using tsi iterator.
489         * basic-block.h (struct basic_block_def): Fields stmt_list
490         and phi_nodes moved to ...
491         (struct tree_bb_info): ... new structure.
492         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
493         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
494         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
495         (tree_verify_flow_info): Verify that il.tree is not set for
496         entry and exit block.
497         (tree_split_block): Use set_bb_stmt_list.
498
499 2007-04-23  Mike Stump  <mrs@apple.com>
500
501         * config/i386/i386.c (ix86_tune_features
502         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
503         nocona and core2.
504
505 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
506
507         * config/i386/i386.md (prefix_extra): New attribute.
508         (length): Add prefix_extra.
509
510         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
511         (sse2_movntv2di): Likewise.
512         (sse2_cvtps2dq): Likewise.
513         (sse2_cvtpd2pi): Likewise.
514         (sse2_cvttpd2pi): Likewise.
515         (*sse2_cvtpd2ps): Likewise.
516         (*add<mode>3): Likewise.
517         (sse2_ssadd<mode>3): Likewise.
518         (sse2_usadd<mode>3): Likewise.
519         (*sub<mode>3): Likewise.
520         (sse2_sssub<mode>3): Likewise.
521         (sse2_ussub<mode>3): Likewise.
522         (*mulv8hi3): Likewise.
523         (*smulv8hi3_highpart): Likewise.
524         (*umulv8hi3_highpart): Likewise.
525         (sse2_umulv2siv2di3): Likewise.
526         (sse2_pmaddwd): Likewise.
527         (ashr<mode>3): Likewise.
528         (lshr<mode>3): Likewise.
529         (ashl<mode>3): Likewise.
530         (sse2_ashlti3): Likewise.
531         (sse2_lshrti3): Likewise.
532         (*umaxv16qi3): Likewise.
533         (*smaxv8hi3): Likewise.
534         (*uminv16qi3): Likewise.
535         (*sminv8hi3): Likewise.
536         (sse2_eq<mode>3): Likewise.
537         (sse2_gt<mode>3): Likewise.
538         (*and<mode>3): Likewise.
539         (sse2_nand<mode>3): Likewise.
540         (*ior<mode>3): Likewise.
541         (*xor<mode>3): Likewise.
542         (sse2_packsswb): Likewise.
543         (sse2_packssdw): Likewise.
544         (sse2_packuswb): Likewise.
545         (sse2_punpckhbw): Likewise.
546         (sse2_punpcklbw): Likewise.
547         (sse2_punpckhwd): Likewise.
548         (sse2_punpcklwd): Likewise.
549         (sse2_punpckhdq): Likewise.
550         (sse2_punpckldq): Likewise.
551         (sse2_punpckhqdq): Likewise.
552         (sse2_punpcklqdq): Likewise.
553         (*sse2_pinsrw): Likewise.
554         (*sse2_pextrw): Likewise.
555         (sse2_pshufd_1): Likewise.
556         (sse2_uavgv16qi3): Likewise.
557         (sse2_uavgv8hi3): Likewise.
558         (sse2_psadbw): Likewise.
559         (sse2_pmovmskb): Likewise.
560         (*sse2_maskmovdqu): Likewise.
561         (*sse2_maskmovdqu_rex64): Likewise.
562         (sse4a_extrqi): Likewise.
563         (sse4a_extrq): Likewise.
564         (sse3_lddqu): Set prefix_rep.
565         (sse3_addsubv4sf3): Likewise.
566         (sse3_haddv4sf3): Likewise.
567         (sse3_hsubv4sf3): Likewise.
568         (sse_cvtss2si): Likewise.
569         (sse_cvtss2si_2): Likewise.
570         (sse_cvtss2siq): Likewise.
571         (sse_cvtss2siq_2): Likewise.
572         (sse_cvttss2si): Likewise.
573         (sse_cvttss2siq): Likewise.
574         (sse2_cvttps2dq): Likewise.
575         (sse3_movshdup): Likewise.
576         (sse3_movsldup): Likewise.
577         (sse2_cvtsd2si): Likewise.
578         (sse2_cvtsd2si_2): Likewise.
579         (sse2_cvtsd2siq): Likewise.
580         (sse2_cvtsd2siq_2): Likewise.
581         (sse2_cvttsd2si): Likewise.
582         (sse2_cvttsd2siq): Likewise.
583         (*sse2_cvtpd2dq): Likewise.
584         (*sse2_cvttpd2dq): Likewise.
585         (sse2_pshuflw_1): Likewise.
586         (sse2_pshufhw_1): Likewise.
587         (sse4a_insertqi): Likewise.
588         (sse4a_insertq): Likewise.
589         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
590         (ssse3_phadddv4si3): Likewise.
591         (ssse3_phaddswv8hi3): Likewise.
592         (ssse3_phsubwv8hi3): Likewise.
593         (ssse3_phsubdv4si3): Likewise.
594         (ssse3_phsubswv8hi3): Likewise.
595         (ssse3_pmaddubswv8hi3): Likewise.
596         (ssse3_pmulhrswv8hi3): Likewise.
597         (ssse3_pshufbv16qi3): Likewise.
598         (ssse3_psign<mode>3): Likewise.
599         (ssse3_palignrti): Likewise.
600         (abs<mode>2): Likewise.
601         (ssse3_phaddwv4hi3): Set prefix_extra.
602         (ssse3_phadddv2si3): Likewise.
603         (ssse3_phaddswv4hi3): Likewise.
604         (ssse3_phsubwv4hi3): Likewise.
605         (ssse3_phsubdv2si3): Likewise.
606         (ssse3_phsubswv4hi3): Likewise.
607         (ssse3_pmaddubswv4hi3): Likewise.
608         (ssse3_pmulhrswv4hi3): Likewise.
609         (ssse3_pshufbv8qi3): Likewise.
610         (ssse3_psign<mode>3): Likewise.
611         (ssse3_palignrdi): Likewise.
612         (abs<mode>2): Likewise.
613         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
614         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
615         (sse2_pmovmskb): Set mode to SI instead of V2DF.
616
617 2007-04-23  Nick Clifton  <nickc@redhat.com>
618
619         * params.def: Fix formatting of emacs local variables.
620
621 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
622
623         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
624         move if inter-unit move isn't allowed.
625         Don't split moving the first element of V2DI to DI to inter-unit
626         move if inter-unit move isn't allowed.
627
628 2007-04-23  Richard Guenther  <rguenther@suse.de>
629
630         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
631         and CDI_POST_DOMINATORS separately.
632
633 2007-04-23  Nick Clifton  <nickc@redhat.com>
634
635         * c.opt (Wformat-contains-nul): Add warning attribute.
636
637 2007-04-23  Jan Hubicka  <jh@suse.cz>
638
639         * function.c (init_function_start): Don't init line number info.
640         (expand_function_end): Update.
641         (reset_block_changes, record_block_change, finalize_block_changes,
642         check_block_change, free_block_changes): Kill.
643         * function.h (reset_block_changes, record_block_change,
644         finalize_block_changes, check_block_change, free_block_changes): Remove
645         prototypes.
646         (struct function): Remove ib_boundaries_block.
647         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
648         Use curr_insn_locator to initialize locator.
649         (emit_line_note): Remove.
650         * cfgexpand.c (expand_gimple_cond_expr): Update.
651         (construct_exit_block): Likewise.
652         (tree_expand_cfg): Initialize/finalize locators.
653         * expr.c (expand_expr_real): Update.
654         * cfglayout.c (line_locators_locs, line_locators_lines,
655         file_locators_locs, file_locators_files): Remove.
656         (set_block_levels): Move to cfgexpand.c.
657         (insn_locators_initialize): Remove.
658         (pass_insn_locators_initialize): Remove.
659         (locations_locators_locs, locations_locators_vals): New static vars.
660         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
661         Likewise.
662         (insn_locators_alloc, insn_locators_finalize,
663         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
664         New functions.
665         (locator_location): New.
666         (locator_line, locator_file): Rewrite.
667         * rtl.h (emit_line_note): Kill.
668         (insn_locators_alloc, insn_locators_finalize,
669         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
670         Declare.
671         * tree-inline.c (initialize_cfun): Do not initialize
672         ib_boundaries_block.
673         * passes.c (pass_insn_locators_initialize): Remove.
674
675 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
676
677         PR middle-end/31448
678         * expr.c (reduce_to_bit_field_precision): Handle
679         CONST_INT rtx's.
680
681 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
682
683         PR tree-optimization/24659
684         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
685         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
686         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
687         * genopinit.c (optabs): Rename vec_pack_mod_optab
688         to vec_pack_trunc_optab.
689         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
690         early for scalar floating point operands for NOP_EXPR.
691         (vectorizable_type_promotion): Ditto.
692         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
693         vec_pack_trunc_optab.
694         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
695
696         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
697         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
698         Rename from VEC_PACK_MOD_EXPR.
699         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
700         * expr.c (expand_expr_real_1): Ditto.
701         * tree-inline.c (estimate_num_insns_1): Ditto.
702         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
703
704         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
705         (vec_unpacks_lo_v4sf): Ditto.
706         (vec_pack_trunc_v2df): Ditto.
707         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
708         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
709         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
710
711         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
712         vec_pack_mod_v8hi.
713         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
714
715         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
716         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
717         packing of floating point operands.
718         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
719         represent unpacking of floating point operands.
720         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
721         [vec_unpacks_hi]: Ditto.
722         [vec_unpacks_lo]: Ditto.
723
724 2007-04-22  Jan Hubicka  <jh@suse.cz>
725
726         * final.c (rest_of_handle_final): Call
727         targetm.asm_out.constructor/targetm.asm_out.destructor
728         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
729         proper priority via decl_*_priority_insert.
730         * c-common.c (c_expand_body): Likewise.
731
732 2007-04-22  Richard Guenther  <rguenther@suse.de>
733
734         PR tree-optimization/29789
735         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
736         (rewrite_reciprocal): New helper split out from
737         determine_invariantness_stmt.
738         (rewrite_bittest): Likewise.
739         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
740         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
741         is not.
742
743 2007-04-22  Revital Eres  <eres@il.ibm.com>
744
745         * loop-unroll.c (var_to_expand): New field to support also
746         insns of the form x = something + x.
747         (analyze_insn_to_expand_var): Use it.
748         (expand_var_during_unrolling): Likewise.
749
750 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
751
752         * predict.c: Include pointer-set.h.
753         (bb_predictions): New variable.
754         (tree_predicted_by_p, tree_predict_edge,
755         remove_predictions_associated_with_edge): Use bb_predictions map
756         instead of bb->predictions.
757         (clear_bb_predictions, assert_is_empty): New functions.
758         (combine_predictions_for_bb): Use bb_predictions map.  Call
759         clear_bb_predictions.
760         (tree_estimate_probability): Create and free bb_predictions map.
761         * Makefile.in (predict.o): Add pointer-set.h dependency.
762         * basic-block.h (struct basic_block_def): Remove predictions
763         field.
764         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
765
766 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
767
768         PR target/31480
769         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
770         is null.
771
772 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
773
774         * timevar.c (timevar_print): Change reference of --disable-checking to
775         --enable-checking=release.  Also warn if assert checking is disabled.
776
777 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
778
779         PR C/30265
780         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
781         decl as addressable if the compound literal was marked as
782         addressable.
783         Mark the decl as a gimple register if it is a complex or
784         vector decl and does not live in memory.
785
786 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
787
788         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
789         (GENERIC_NEXT): New function macro.
790         (PHI_CHAIN): Use phi_node's new chain variable.
791         (tree_phi_node): Change tree_common to tree_base
792         and add the chain field.
793         * tree-phinodes.c (make_phi_node): Don't set
794         TREE_TYPE on the new node.
795         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
796         instead of checking GIMPLE_TUPLE_P in chain_next.
797         * tree-vect-transform.c
798         (get_initial_def_for_induction): Look at
799         PHI_RESULT_TREE for the type of the phi node.
800         (update_vuses_to_preheader): Use PHI_CHAIN
801         instead of TREE_CHAIN on the phi node.
802         * tree-ssa-structalias.c (compute_points_to_sets):
803         Likewise.
804         (ipa_pta_execute): Likewise.
805
806 2007-04-21  Richard Guenther  <rguenther@suse.de>
807
808         PR middle-end/31136
809         * fold-const.c (fold_unary): Call fold_convert_const on the
810         original tree.
811
812 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
813
814         * gcse.c (store_killed_in_insn): Handle PARALLELs.
815         (store_killed_in_pat): New.
816
817 2007-04-20  Richard Henderson  <rth@redhat.com>
818
819         PR target/31628
820         * config/i386/i386.c (type_has_variadic_args_p): Look for any
821         TREE_LIST with a void_type_node value, not void_list_node exactly.
822
823 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
824
825         * doc/standards.texi: Re-arrange into language-specific
826         subsections. Add a C++ section, documenting which standards we
827         support.
828
829 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
830
831         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
832         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
833
834 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
835
836         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
837         ecrti.o and crtbegin.o.
838         (LIB_DEFAULT_SPEC): Include -lc.
839         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
840
841 2007-04-20  Richard Henderson  <rth@redhat.com>
842
843         PR target/28623
844         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
845         argument; update all callers.
846         (get_unaligned_offset): New.
847         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
848         get_unaligned_address, just pass on the address directly.
849         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
850         the subreg in the helper patterns.
851         (unaligned_extendqidi_le): Use get_unaligned_offset.
852         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
853         (unaligned_extendhidi_be): Likewise.
854         (unaligned_extendhidi): Tidy.
855         * config/alpha/alpha-protos.h: Update.
856
857 2007-04-20  Richard Henderson  <rth@redhat.com>
858
859         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
860         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
861         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
862         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
863         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
864         (CPP_SPEC): Don't include %(cpp_subtarget).
865         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
866         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
867         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
868
869 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
870
871         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
872         for __builtin_ia32_cmpordss.
873
874         PR tree-optimization/31632
875         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
876         and arg1 for optimizations of comparison against min/max values.
877         Fold arg0 to arg1's type for optimizations of comparison against
878         min+1 and max-1 values.
879
880 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
881
882         * reload.c (combine_reloads): When trying to use a dying register,
883         check whether it's uninitialized and don't use if so.
884
885 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
886
887         * fold-const.c: Remove prototypes for native_encode_expr and
888         native_interpret_expr.
889         (native_encode_expr): Make non-static.
890         (native_interpret_expr): Likewise.
891         * tree.h: Add prototypes for the above.
892
893 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
894
895         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
896         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
897         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
898         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
899         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
900         Add length attributes.
901
902 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
903
904         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
905         not that it is 1.
906
907         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
908         __STDC_WANT_DEC_FP__.
909
910 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
911
912         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
913         for long double compatibility.
914         * configure: Regenerate.
915
916 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
917
918         PR rtl-optimization/29841
919         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
920         trap instructions.
921         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
922         that may cause control flow transfer from being moved.
923
924 2007-04-18  Jan Hubicka  <jh@suse.cz>
925
926         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
927         types.
928
929 2007-04-18  Eric Christopher  <echristo@apple.com>
930
931         * config/rs6000/darwin.md (load_macho_picbase): Use link register
932         only. Update operands.
933         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
934         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
935         link register to pic register.
936
937 2007-04-18  Dirk Mueller  <dmueller@suse.de>
938
939         PR diagnostic/31227
940         * tree-vrp.c (search_for_addr_array): New.
941         (check_array_bounds): Suppress warning about
942         address taken of array refs if its not de-referenced.
943
944 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
945
946         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
947         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
948
949         * tree-vectorizer.h (NITERS_KNOWN_P): New.
950         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
951         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
952
953         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
954         dump print.
955         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
956         print message.
957         (vect_analyze_scalar_cycles): Fix indentation.
958         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
959         (vect_mark_relevant): Include phis in relevance analysis.
960
961         * tree-vect-transform.c (vect_transform_loop): Add an assert.
962
963 2007-04-18  Anatoly Sokolov <aesok@post.ru>
964
965         * config/avr/avr.c (ptrreg_to_str): Replace error() with
966         output_operand_lossage().
967
968 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
969
970         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
971         the unused code for reduction without adjust-in-epilog to simplify the
972         function.
973
974 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
975
976         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
977         (S390_TDC_NEGATIVE_ZERO): New constant.
978         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
979         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
980         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
981         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
982         (S390_TDC_POSITIVE_INFINITY): New constant.
983         (S390_TDC_NEGATIVE_INFINITY): New constant.
984         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
985         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
986         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
987         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
988         (S390_TDC_INFINITY): New constant.
989         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
990         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
991         optimization for UNSPEC_CCZ_TO_INT.
992         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
993         ("*ccz_to_int"): New insn.
994         ("isinf<mode>2"): New insn.
995         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
996         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
997         (UNSPEC_CCZ_TO_INT): New constant.
998
999 2007-04-18  Richard Guenther  <rguenther@suse.de>
1000
1001         PR tree-optimization/19431
1002         PR tree-optimization/21463
1003         * tree-pass.h (pass_phiprop): Declare.
1004         * passes.c (init_optimization_passes): New phiprop pass.
1005         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
1006         (phivn_valid_p): New helper function.
1007         (phiprop_insert_phi): Likewise.
1008         (propagate_with_phi): Likewise.
1009         (tree_ssa_phiprop): New propagator propagating loads
1010         through phi nodes if profitable.
1011
1012 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
1013
1014         * tree-vect-analyze.c (process_use): New function.
1015         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
1016         Check phis in all bbs.
1017         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
1018         assert.
1019
1020 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
1021
1022         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
1023         we use REG_EQUAL.
1024
1025 2007-04-17  Anatoly Sokolov <aesok@post.ru>
1026
1027         PR target/30483
1028         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
1029         error().
1030
1031 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
1032
1033         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
1034         on "0".
1035         (sse_vmmulv4sf3): Likewise.
1036         (sse2_vmaddv2df3): Likewise.
1037         (sse2_vmmulv2df3): Likewise.
1038
1039 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
1040
1041         PR rtl-optimization/31360
1042         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
1043         (target_reg_cost): New.
1044         (init_set_costs): Initialize target_reg_cost.  Add comments
1045         regarding the rationale of the costs.
1046         (global_cost_for_size): Renamed to...
1047         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
1048         of register pressure.
1049         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
1050         estimate_reg_pressure_cost.  Add number of ivs.
1051         (determine_set_costs): Dump target_reg_cost.
1052         * loop-invariant.c (gain_for_invariant):  Use
1053         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
1054         (best_gain_for_invariant, find_invariants_to_move): Remove
1055         n_inv_uses.
1056         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
1057         (target_reg_cost): Declare.
1058         (global_cost_for_size): Declaration removed.
1059         (estimate_reg_pressure_cost): Declare.
1060
1061 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
1062
1063         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
1064         regnos into even/odd register pairs.
1065         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
1066         TDmode similar to the other floating point modes.
1067         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
1068         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
1069         define_expand's.
1070         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
1071         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
1072         (movdd_hardfloat64): Use TARGET_MFPGPR.
1073
1074 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
1075
1076         * reload1.c (delete_output_reload): Don't count output in n_inherited.
1077
1078         Revert
1079         2005-01-05  Richard Henderson  <rth@redhat.com>
1080         PR rtl-opt/10692
1081         * reload1.c (do_input_reload): Restrict the optimization deleteing
1082         a previous output reload to RELOAD_FOR_INPUT.
1083
1084 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
1085
1086         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
1087         induc_vec_info_type.
1088         (vectorizable_induction): New function declaration.
1089         * tree-vect-transform.c (get_initial_def_for_induction): No need to
1090         check if already vectorized.  Find first place in BB where new stmts
1091         can be inserted.  Takes only one argument.
1092         (vectorizable_induction): New function.
1093         (vect_transform_stmt): Add case for induc_vec_info_type to call
1094         vectorizable_induction.
1095         (vect_transform_loop): Consider phis for vectorization.
1096         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
1097         condition.
1098         (analyze_operations): Call vectorizable_induction when analyzing phis.
1099         Fix comment.
1100         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
1101         (vect_mark_relevant): Include phis in relevance analysis.
1102         (vect_mark_stmts_to_be_vectorize): Likewise.
1103         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
1104
1105 2007-04-16  Lawrence Crowl  <crowl@google.com>
1106
1107         * doc/invoke.texi (Debugging Options): Add documentation for the
1108         -femit-struct-debug options -femit-struct-debug-baseonly,
1109         -femit-struct-debug-reduced, and
1110         -femit-struct-debug-detailed[=...].
1111
1112         * c-opts.c (c_common_handle_option): Add
1113         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
1114         and OPT_femit_struct_debug_detailed_.
1115         * c.opt: Add specifications for
1116         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
1117         and -femit-struct-debug-detailed[=...].
1118         * opts.c (set_struct_debug_option): Parse the
1119         -femit-struct-debug-... options.
1120         * opts.c (matches_main_base, main_input_basename,
1121         main_input_baselength, base_of_path, matches_main_base): Add
1122         variables and functions to compare header base name to compilation
1123         unit base name.
1124         * opts.c (should_emit_struct_debug): Add to determine to emit a
1125         structure based on the option.
1126         (dump_struct_debug) Also disabled function to debug this
1127         function.
1128         * opts.c (handle_options): Save the base name of the
1129         compilation unit.
1130
1131         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
1132         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
1133         This hook indicates if a type is generic.  Set it by default
1134         to "never generic".
1135         * langhooks.h (struct lang_hooks_for_types): Add a new hook
1136         to determine if a struct type is generic or not.
1137         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
1138         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
1139         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
1140         with live C++ hook.
1141
1142         * flags.h (enum debug_info_usage): Add an enumeration to describe
1143         a program's use of a structure type.
1144         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
1145         to indicate the program's usage of the type.  Filter structs based
1146         on the -femit-struct-debug-... specification.
1147         (gen_type_die): Split into two routines, gen_type_die and
1148         gen_type_die_with_usage.  gen_type_die is now a wrapper
1149         that assumes direct usage.
1150         (gen_type_die_with_usage): Replace calls to gen_type_die
1151         with gen_type_die_with_usage adding the program usage of
1152         the referenced type.
1153         (dwarf2out_imported_module_or_decl): Suppress struct debug
1154         information using should_emit_struct_debug when appropriate.
1155
1156 2007-04-16  Ian Lance Taylor  <iant@google.com>
1157
1158         PR tree-optimization/31522
1159         * tree-vrp.c (vr_phi_edge_counts): New static variable.
1160         (vrp_initialize): Allocate vr_phi_edge_counts.
1161         (vrp_visit_phi_node): Don't push to infinity if we saw a new
1162         executable edge.  Drop test for all constants.
1163         (vrp_finalize): Free vrp_phi_edge_counts.
1164
1165         * doc/cpp.texi (Common Predefined Macros): Clarify description of
1166         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1167
1168         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
1169         predecessors at head rather than tail.
1170
1171 2007-04-16  Matthias Klose  <doko@debian.org>
1172
1173         * config/alpha/linux.h (CPP_SPEC): Define.
1174         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
1175
1176 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
1177
1178         * function.h: Remove sequence_stack extern declaration.
1179
1180 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1181
1182         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
1183         TARGET_FIDOA.
1184         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
1185         defined.
1186
1187 2007-04-16  Anatoly Sokolov <aesok@post.ru>
1188
1189         * config/avr/avr.c (avr_arch_types): Rearranging  array.
1190         (enum avr_arch): Add.
1191         (avr_mcu_types): Use avr_arch enumeration constants instead of
1192         numbers.
1193         * config/avr/avr.h (LINK_SPEC): Simplify.
1194
1195 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
1196
1197         * config/m68k/m68k.c (m68k_libcall_value,
1198         m68k_function_value): Use macros for register names more.
1199
1200         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
1201         instead.
1202         (M68K_REGNAME): Use A6_REG.
1203         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
1204
1205 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
1206
1207         PR middle-end/28071
1208         * sched-int.h (struct deps): Split field 'pending_lists_length' into
1209         'pending_read_list_length' and 'pending_write_list_length'.  Update
1210         comment.
1211         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
1212         to handle two length counters instead of one.  Update all uses.
1213         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
1214         two length counters instead of one.
1215         * sched-rgn.c (propagate_deps): Update to handle two length counters
1216         instead of one.
1217
1218 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
1219
1220         PR target/31582
1221         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
1222         copy of source, pass it to ix86_expand_vector_set and return
1223         it as target.
1224
1225 2007-04-16  David Ung  <davidu@mips.com>
1226             Joseph Myers  <joseph@codesourcery.com>
1227
1228         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
1229         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
1230         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
1231         Add 74K processor information.
1232         * config/mips/mips.md: Include 74k.md.
1233         (cpu): Add 74kc,74kf,74kx.
1234         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
1235         * config/mips/74k.md: New.
1236         * doc/invoke.texi (MIPS Options): Document 74K support.
1237
1238 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
1239
1240         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
1241         vectorizable_* functions.
1242         * tree-vect-transform.c (vectorizable_call): Add check for
1243         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
1244         (vectorizable_store): likewise.
1245         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
1246         Add comments.
1247         (vectorizable_operation, vectorizable_type_demotion): Likewise.
1248         (vectorizable_type_promotion, vectorizable_load): Likewise.
1249         (vectorizable_live_operation, vectorizable_condition): Likewise.
1250         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
1251         STMT_VINFO_LIVE_P.
1252         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
1253
1254 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1255
1256         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
1257         register numbers more.
1258         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
1259         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
1260         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
1261         FUNCTION_VALUE_REGNO_P): Likewise.
1262         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
1263         STATIC_CHAIN_REGNUM): Likewise.
1264         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
1265         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
1266         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
1267         * config/m68k/m68k.md (FP_REG): New.
1268
1269 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1270
1271         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
1272         alignment on fido.
1273
1274 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
1275
1276         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
1277         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
1278         comment typos.
1279
1280 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1281
1282         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
1283         cold loops.
1284
1285 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1286
1287         PR c/31520
1288         * c-decl.c (finish_decl): Grab the type of the decl after the call
1289         to store_init_value.
1290
1291 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
1292
1293         * common.opt (fforward-propagate): Fix "Optimization" annotation.
1294
1295 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
1296
1297         PR c++/25874
1298         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
1299         post dominators and cleanup cfg before returning.
1300
1301 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
1302
1303         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
1304         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
1305
1306 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
1307
1308         * config.gcc: Recognize fido.
1309         * config/m68k/m68k-devices.def (fidoa): New.
1310         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
1311         __mfido__.
1312         (FL_FIDOA, TARGET_FIDOA): New.
1313         * config/m68k/m68k.opt (mfidoa): New.
1314
1315 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1316
1317         PR middle-end/31322
1318         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
1319         when a personality function is used.
1320
1321 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
1322
1323         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
1324
1325 2007-04-13  Mike Stump  <mrs@apple.com>
1326
1327         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
1328         we can...
1329         * config/darwin.opt (fapple-kext): Make C++ only.
1330         * config/darwin.c (darwin_override_options): Remove code to ensure
1331         -fapple-kext is given for C++ only.
1332
1333 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
1334
1335         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
1336         * config/mips/mips.c (override_options): Call
1337         SUBTARGET_OVERRIDE_OPTIONS, if defined.
1338
1339 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
1340
1341         * config/i386/i386.opt (msvr3-shlib): Removed.
1342
1343         * doc/invoke.texi: Remove -msvr3-shlib.
1344
1345 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
1346
1347         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
1348         with "popcnt" instruction.
1349
1350 2007-04-13  Richard Guenther  <rguenther@suse.de>
1351
1352         PR tree-optimization/21258
1353         * tree-vrp.c (compare_case_labels): New helper.
1354         (find_switch_asserts): New function.
1355         (find_assert_locations): Call it for SWITCH_EXPRs.
1356
1357 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
1358
1359         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
1360         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
1361         check is now implied in X87_FLOAT_MODE_P.
1362         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1363         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1364         (fix_trunc<mode>_i386_fisttp): Ditto.
1365         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1366         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1367         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1368         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1369         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1370         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1371         (unnamed_splitters): Ditto.
1372         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
1373         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
1374         FIRST_SSE_REG for local functions when SSE math is enabled or
1375         for functions with sseregparm attribute.
1376         (standard_80387_constant_p): Return -1 if mode is not
1377         X87_FLOAT_MODE_P.
1378         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
1379         (ix86_expand_compare): Ditto.
1380         (ix86_expand_carry_flag_compare): Ditto.
1381         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
1382         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
1383         DECIMAL_FLOAT_MODE_P.
1384         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
1385         of SCALAR_FLOAT_MODE_P.
1386         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
1387         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
1388         checks before FLOAT_MODE_P.
1389         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
1390         before FLOAT_MODE_P.
1391         [DIV]: Ditto.
1392         [NEG]: Ditto.
1393         [ABS]: Ditto.
1394         [SQRT]: Ditto.
1395         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
1396
1397 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
1398             Charles Wilson  <libtool@cwilson.fastmail.fm>
1399
1400         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
1401         (libgcc.mvars): Don't depend on them.
1402         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
1403         * exec-tool.in: New.
1404
1405 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
1406
1407         * doc/invoke.text (--help): Document --help=common.
1408
1409 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
1410
1411         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
1412
1413 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1414
1415         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
1416         * genemit.c (main): Emit #include "integrate.h".
1417         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
1418         (LOADGP_RTP): New mips_loadgp_style.
1419         * config/mips/mips.h: Include config/vxworks-dummy.h.
1420         (TARGET_RTP_PIC): New macro.
1421         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
1422         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
1423         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
1424         for TARGET_RTP_PIC.
1425         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
1426         -mvxworks-pic when using -mrtp and a PIC option.
1427         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
1428         for RTP PIC.
1429         (mips_symbolic_constant_p, mips_symbolic_address_p)
1430         (mips_symbol_insns): Handle SYMBOL_HALF.
1431         (override_options): Warn about -G and -mrtp being used together.
1432         Initialize mips_lo_relocs[SYMBOL_HALF].
1433         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
1434         (mips_emit_loadgp): Handle LOADGP_RTP.
1435         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
1436         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
1437         (tablejump): Handle function-relative case table entries if
1438         TARGET_RTP_PIC.
1439         * config/mips/predicates.md (symbol_ref_operand): New predicate.
1440
1441 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1442
1443         * config/mips/mips.md (load_call<mode>): Allow any general register.
1444         destination.
1445         (sibcall_value_internal, sibcall_value_multiple_internal)
1446         (call_value_internal, call_value_split, call_value_multiple_internal)
1447         (call_value_multiple_split): Remove constraints from operand 0.
1448
1449 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1450
1451         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
1452         rather than loadgp_noshared.
1453         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
1454         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
1455         gen_loadgp.
1456         * config/mips/mips.md (loadgp): Rename to...
1457         (loadgp_newabi): ...this.
1458         (loadgp_noshared): Rename to...
1459         (loadgp_absolute): ...this.
1460
1461 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1462
1463         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
1464         false for locally-binding symbols.
1465         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
1466
1467 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1468
1469         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
1470         (SYMBOL_GOT_PAGE_OFST): ...this.
1471         (SYMBOL_GOT_GLOBAL): Rename to...
1472         (SYMBOL_GOT_DISP): ...this.
1473         (SYMBOL_GOTOFF_GLOBAL): Rename to...
1474         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
1475         * config/mips/mips.c (mips_global_symbol_p): New function.
1476         (mips_symbol_binds_local_p): Likewise.
1477         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
1478         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
1479         and mips_symbol_binds_local_p.
1480         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
1481         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
1482         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
1483         SYMBOL_GOTOFF_DISP.
1484         (mips_ok_for_lazy_binding_p): New function.
1485         (mips_load_call_address, mips_expand_call): Use it.
1486         (mips_dangerous_for_la25_p): Likewise.
1487         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
1488         (*got_disp<mode>): Use got_disp_operand instead of
1489         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
1490         SYMBOL_GOTOFF_GLOBAL.
1491         (*got_page<mode>): Use got_page_ofst_operand instead of
1492         local_got_operand.
1493         * config/mips/predicates.md (const_call_insn_operand): Use
1494         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
1495         (global_got_operand): Rename to...
1496         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
1497         SYMBOL_GOT_GLOBAL.
1498         (local_got_operand): Rename to...
1499         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
1500         of SYMBOL_GOT_LOCAL.
1501
1502 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1503
1504         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
1505         TARGET_CALL_CLOBBERED_GP.
1506         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1507         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
1508         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
1509         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
1510         of TARGET_ABICALLS && !TARGET_NEWABI.
1511         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1512         * config/mips/mips.c (mips_load_call_address): Check
1513         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
1514         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1515         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
1516         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
1517         TARGET_ABICALLS && TARGET_NEWABI.
1518         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
1519         TARGET_ABICALLS.
1520         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
1521         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
1522         TARGET_ABICALLS && TARGET_NEWABI.
1523         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
1524         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
1525         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
1526         whether indirect calls must use $25.
1527         (mips_extra_live_on_entry): Check TARGET_GOT instead of
1528         TARGET_ABICALLS.
1529         * config/mips/mips.md (jal_macro): Check flag_pic and
1530         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
1531         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
1532         instead of TARGET_ABICALLS.
1533         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
1534         TARGET_ABICALLS && TARGET_OLDABI.
1535         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
1536         (sibcall): In the comment above the define_insn, mention
1537         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
1538         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
1539         instead of TARGET_ABICALLS.
1540
1541 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
1542
1543         * doc/md.texi (Blackfin family constraints): Document PA and PB.
1544         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
1545         (MACFLAGS_MATCH_P): New macro.
1546         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
1547         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
1548         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
1549         the other MACFLAG constants.
1550         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
1551         (flag_machi): Tighten constraints.  Renumber some of the operands.
1552         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
1553         output template.
1554         (flag_machi_parts_acconly): New pattern.
1555         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
1556         used.
1557         (flag_macinit1hi): Tighten constraints.
1558         (flag_mul_macv2hi_parts_acconly): New pattern.
1559
1560         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
1561         Use a more efficient implementation.
1562         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
1563         inline sequences when not optimizing for size.
1564
1565         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
1566         movhi_high2low): Delete, merge functionality into...
1567         (packv2hi): ... this pattern.
1568
1569         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
1570         * config/bfin/bfin.opt (msim): New option.
1571         (mcpu=): New option.
1572         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
1573         (bfin_cpu_t): Typedef of enum bfin_cpu.
1574         (bfin_cpu_type): New declaration.
1575         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
1576         -msim and -mcpu= options.
1577         (LIB_SPEC): Likewise.
1578         * config/bfin/bfin.c (bfin_cpu_type): Define.
1579         (bfin_handle_option): Handle -mcpu= option.
1580         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
1581         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
1582         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
1583
1584 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1585
1586         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
1587         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
1588         (powerpc-wrs-vxworksae): Use ${tm_file}.
1589         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
1590         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
1591         * config/i386/vx-common.h: New file.
1592
1593 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
1594
1595         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
1596         of crt0.o%s.
1597
1598 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
1599
1600         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
1601         ldxtr.
1602
1603 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
1604
1605         PR c++/31078
1606         PR c++/31103
1607         * c-common.c (c_build_qualified_type): Set canonical type
1608         appropriately.
1609
1610 2007-04-12  Richard Guenther  <rguenther@suse.de>
1611
1612         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
1613         lower bound and element size if lower bound is not zero
1614         or either of the ARRAY_REF operands is set.
1615
1616 2007-04-12  Richard Guenther  <rguenther@suse.de>
1617
1618         PR tree-optimization/24689
1619         PR tree-optimization/31307
1620         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
1621         indices by value.
1622         * gimplify.c (canonicalize_addr_expr): To be consistent with
1623         gimplify_compound_lval only set operands two and three of
1624         ARRAY_REFs if they are not gimple_min_invariant.  This makes
1625         it never at this place.
1626         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
1627
1628 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1629
1630         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
1631         null before emitting a .nsubspa directive.
1632
1633 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
1634
1635         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
1636         need_to_partition_p if there are no memory statements in the
1637         function.
1638
1639 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1640
1641         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
1642         (gcd_of_steps_may_divide_p): New function.
1643         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
1644
1645 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1646
1647         * reload.c (find_reloads_toplev, find_reloads_address,
1648         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
1649         not a pointer equality test, to decide if we need to call
1650         push_reg_equiv_alt_mem.
1651
1652 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
1653
1654         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
1655         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
1656         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
1657
1658 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
1659
1660         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
1661         vector to be positive.
1662
1663 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
1664
1665         PR 30735
1666         PR 31090
1667         * doc/invoke.texi: Document --params max-aliased-vops and
1668         avg-aliased-vops.
1669         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
1670         debug_memory_partitions): Move to tree-flow.h
1671         * params.h (AVG_ALIASED_VOPS): Define.
1672         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
1673         users.
1674         (mp_info_t): Likewise.
1675         (get_mem_sym_stats_for): New.
1676         (set_memory_partition): Move from tree-flow-inline.h.
1677         (mark_non_addressable): Only clear the set of symbols for the
1678         partition if it exists.
1679         (dump_memory_partitions): Move from tree-ssa-operands.c
1680         (debug_memory_partitions): Likewise.
1681         (need_to_partition_p): New.
1682         (dump_mem_ref_stats): New.
1683         (debug_mem_ref_stats): New.
1684         (dump_mem_sym_stats): New.
1685         (debug_mem_sym_stats): New.
1686         (update_mem_sym_stats_from_stmt): New.
1687         (compare_mp_info_entries): New.
1688         (mp_info_cmp): Call it.
1689         (sort_mp_info): Change argument to a list of mem_sym_stats_t
1690         objects.
1691         (get_mpt_for): Move from tree-ssa-operands.c.
1692         (find_partition_for): New.
1693         (create_partition_for): Remove.
1694         (estimate_vop_reduction): New.
1695         (update_reference_counts): New.
1696         (build_mp_info): New.
1697         (compute_memory_partitions): Refactor.
1698         Document new heuristic.
1699         Call build_mp_info, update_reference_counts,
1700         find_partition_for and estimate_vop_reduction.
1701         (compute_may_aliases): Populate virtual operands before
1702         calling debugging dumps.
1703         (delete_mem_sym_stats): New.
1704         (delete_mem_ref_stats): New.
1705         (init_mem_ref_stats): New.
1706         (init_alias_info): Call it.
1707         (maybe_create_global_var): Remove alias_info argument.
1708         Get number of call sites and number of pure/const call sites
1709         from gimple_mem_ref_stats().
1710         (dump_alias_info): Call dump_memory_partitions first.
1711         (dump_points_to_info_for): Show how many times a pointer has
1712         been dereferenced.
1713         * opts.c (decode_options): For -O2 set --param
1714         max-aliased-vops to 500.
1715         For -O3 set --param max-aliased-vops to 1000 and --param
1716         avg-aliased-vops to 3.
1717         * fortran/options.c (gfc_init_options): Remove assignment to
1718         MAX_ALIASED_VOPS.
1719         * tree-flow-inline.h (gimple_mem_ref_stats): New.
1720         * tree-dfa.c (dump_variable): Dump memory reference
1721         statistics.
1722         Dump NO_ALIAS* settings.
1723         (referenced_var_lookup): Tidy.
1724         (mem_sym_stats): New.
1725         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
1726         and ORIG are different SSA names for a memory partition.
1727         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
1728         * tree-flow.h (struct mem_sym_stats_d): Define.
1729         (mem_sym_stats_t): Define.
1730         (struct mem_ref_stats_d): Define.
1731         (struct gimple_df): Add field mem_ref_stats.
1732         (enum noalias_state): Define.
1733         (struct var_ann_d): Add bitfield noalias_state.
1734         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
1735         debug_mem_ref_stats, debug_memory_partitions,
1736         debug_mem_sym_stats): Declare.
1737         * tree-ssa-structalias.c (update_alias_info): Update call
1738         sites, pure/const call sites and asm sites in structure
1739         returned by gimple_mem_ref_stats.
1740         Remove local variable IS_POTENTIAL_DEREF.
1741         Increase NUM_DEREFS if the memory expression is a potential
1742         dereference.
1743         Call update_mem_sym_stats_from_stmt.
1744         If the memory references memory, call
1745         update_mem_sym_stats_from_stmt for all the direct memory
1746         symbol references found.
1747         (intra_create_variable_infos): Set noalias_state field for
1748         pointer arguments according to the value of
1749         flag_argument_noalias.
1750         * tree-ssa-structalias.h (struct alias_info): Remove fields
1751         num_calls_found and num_pure_const_calls_found.
1752         (update_mem_sym_stats_from_stmt): Declare.
1753         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
1754         Set default value to 100.
1755         (PARAM_AVG_ALIASED_VOPS): Define.
1756
1757 2007-04-11  Richard Guenther  <rguenther@suse.de>
1758
1759         PR middle-end/31530
1760         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
1761         a * -b + c as c - a * b if we honor sign dependent rounding.
1762
1763 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
1764
1765         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
1766         bfin_expand_strmov.
1767         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
1768         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
1769         variables.
1770         (initialize_trampoline): Don't use old-style function definition.
1771         (bfin_secondary_reload): Mark IN_P argument as unused.
1772
1773 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
1774
1775         PR tree-optimization/31343
1776         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
1777         (build_polynomial_chrec): Return a scalar when the evolution is zero.
1778         * testsuite/gcc.dg/vect/pr31343.c: New.
1779
1780 2007-04-10  Eric Christopher  <echristo@apple.com>
1781
1782         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
1783         * config/i386/i386.md (*cmpfp0): Use.
1784         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
1785         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
1786         (fix_trunc<mode>_i386_fisttp): Ditto.
1787         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
1788         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
1789         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
1790         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
1791         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
1792         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
1793         (unnamed_splitters): Ditto.
1794         * config/i386/i386.c (output_fix_trunc): Assert that
1795         we're not being passed a TFmode operand.
1796
1797 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
1798
1799         PR tree-optimization/31526
1800         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
1801         n_basic_blocks to find newly added blocks.
1802
1803 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
1804
1805         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
1806         alternative.
1807         (fix_trunc<mode>si_sse): Ditto.
1808         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
1809         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
1810         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
1811         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
1812         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
1813         expander using SSEMODEF mode macro.
1814         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
1815         expander using SSEMODEF mode macro.
1816         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
1817         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
1818         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
1819         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
1820         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
1821         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
1822         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
1823         Macroize insn using X87MODEF mode macro.
1824
1825 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
1826
1827         * config/i386/sse.md (sse2_pinsrw): Removed.
1828         (sse2_pextrw): Renamed to ...
1829         (*sse2_pextrw): This.
1830
1831 2007-04-09  Jan Hubicka  <jh@suse.cz>
1832
1833         PR target/27869
1834         * config/i386/sse.md
1835         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
1836         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
1837         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
1838         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
1839
1840 2007-04-09  Jan Hubicka  <jh@suse.cz>
1841
1842         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
1843         multiple fields of union.
1844
1845 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
1846
1847         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
1848         (create_preheaders): Check that loops are available.
1849         (fix_loop_structure): Clean up, improve comments.
1850         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
1851         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
1852         state flags.
1853         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
1854         * predict.c (tree_estimate_probability): Do not call
1855         calculate_dominance_info.  Call create_preheaders.
1856         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
1857         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
1858         flags.
1859         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
1860         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
1861         * tree-cfg.c (tree_split_edge): Make an assert more precise.
1862         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
1863         arguments.
1864
1865 2007-04-08  Jan Hubicka  <jh@suse.cz>
1866
1867         * tree.h (maybe_fold_offset_to_component_ref): Declare.
1868         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
1869         * fold-const.c (fold_unary): Use it.
1870
1871 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1872
1873         * varasm.c (assemble_variable): Remove call to
1874         lang_hooks.decls.prepare_assemble_variable.
1875         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
1876         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
1877         * langhooks.h (lang_hooks_for_decls): Remove
1878         prepare_assemble_variable.
1879
1880 2007-04-08  Mike Stump  <mrs@apple.com>
1881
1882         * config/i386/i386.c: Use inc/dec on Core2.
1883
1884 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
1885
1886         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
1887         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1888         lhd_tree_inlining_end_inlining): Remove.
1889         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
1890         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
1891         end_inlining hooks.
1892         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
1893         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
1894         lhd_tree_inlining_end_inlining): Remove prototypes.
1895         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
1896         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
1897         LANG_HOOKS_TREE_INLINING_START_INLINING,
1898         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
1899
1900         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
1901         not set it.
1902
1903 2007-04-08  Anatoly Sokolov <aesok@post.ru>
1904
1905         PR target/29932
1906         * config/avr/predicates.md (io_address_operand): Delete predicate.
1907         (low_io_address_operand): Don't use 'mode' argument.
1908         (higth_io_address_operand): Rename ...
1909         (high_io_address_operand): ... to this. Don't use 'mode' argument.
1910         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
1911         for above change.
1912
1913 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
1914
1915         Revert change removing staticp.
1916
1917 2007-04-07  Anatoly Sokolov <aesok@post.ru>
1918
1919         PR target/30289
1920         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
1921         earlyclobber.
1922
1923 2007-04-07  Bruce Korb  <bkorb@gnu.org>
1924
1925         * c.opt: Add -Wformat-contains-nul.
1926         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
1927           -Wformat setting.
1928         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
1929         the NUL byte warning.
1930
1931 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
1932
1933         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
1934
1935 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1936
1937         * tree.c (staticp): No longer use staticp langhook.
1938         * langhooks.c (lhd_staticp): Removed.
1939         * langhooks.h (struct lang_hooks): Remove staticp.
1940         * c-common.c (c_staticp): Remove.
1941         * c-common.h (c_staticp): Ditto.
1942         * langhooks-defs.h (lhd_staticp): Ditto.
1943         (LHD_HOOKS_STATICP): Ditto
1944         * tree.h (gcc_assert_lowered): New macro.
1945
1946 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
1947
1948         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
1949         argument "reliable".
1950         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
1951         Add argument "reliable".  Propagate it through calls.
1952         (infer_loop_bounds_from_undefined):  Derive number of iterations
1953         estimates from references in blocks that do not dominate loop latch.
1954         (gcov_type_to_double_int): New function.
1955         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
1956         and expected_loop_iterations_unbounded.
1957         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
1958         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
1959         * tree-data-ref.c (estimated_loop_iterations): Export.
1960         (get_references_in_stmt): Fix -- do not return addresses of local
1961         objects.
1962         * cfgloop.h (expected_loop_iterations_unbounded,
1963         estimated_loop_iterations): Declare.
1964
1965 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
1966
1967         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
1968
1969 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
1970
1971         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
1972         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
1973         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
1974         Use output_387_reg_move().
1975         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
1976         expander using X87MODEF12 mode macro.
1977         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
1978         choosing register preferences.  Use output_387_reg_move().
1979         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
1980         instead of "x".  Use output_387_reg_move().
1981         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
1982         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
1983         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
1984         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
1985         Use output_387_reg_move().
1986         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
1987         mode macro.
1988         (*truncxf?f_i387 splitter): Ditto.
1989
1990 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
1991
1992         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
1993         LANG_HOOKS_SAFE_FROM_P.
1994         * expr.c (safe_from_p): Remove langhook call.
1995         * langhooks.h (lang_hooks): Remove safe_from_p.
1996         (lhd_safe_from_p): Remove prototype.
1997         * langhooks.c (lhd_safe_from_p): Remove.
1998
1999 2007-04-06  Jan Hubicka  <jh@suse.cz>
2000
2001         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
2002         functions.
2003
2004 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
2005
2006         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
2007         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
2008         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
2009         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
2010         alternative.
2011         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
2012         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
2013
2014 2007-04-05  Richard Henderson  <rth@redhat.com>
2015
2016         * config/alpha/alpha.c (print_operand) [+]: Remove.
2017         (alpha_end_function): Print nop if call at end of function.
2018         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
2019         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
2020         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
2021         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
2022         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
2023         the call pattern. Update peepholes to match.
2024
2025 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
2026
2027         * doc/extend.texi (Other Builtins): Add decimal float variants
2028         of signbit.
2029         * builtins.def: Ditto.
2030         * builtins.c (expand_builtin): Ditto.
2031
2032 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
2033             H.J. Lu  <hongjiu.lu@intel.com>
2034
2035         PR target/31478
2036         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
2037         of V8HImode when calling ix86_binary_operator_ok.
2038         (sse2_pmaddwd): Call ix86_binary_operator_ok.
2039         (sdot_prodv8hi): Operands 1 and 2 must be register.
2040
2041 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2042
2043         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
2044         initialize align to silence bogus warning.
2045
2046 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
2047
2048         PR middle-end/22156
2049         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
2050         all_no_warning.
2051         (struct sra_walk_fns): Remove use_all parameter from use.
2052         (sra_hash_tree): Handle BIT_FIELD_REFs.
2053         (sra_elt_hash): Don't hash bitfld blocks.
2054         (sra_elt_eq): Skip them in parent compares as well.  Handle
2055         BIT_FIELD_REFs.
2056         (sra_walk_expr): Don't maintain or pass down use_all_p.
2057         (scan_use): Remove use_all parameter.
2058         (scalarize_use): Likewise.  Re-expand assignment to
2059         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
2060         output, and re-scalarize after output.  Don't mark anything
2061         for no warning.
2062         (scalarize_ldst): Adjust.
2063         (scalarize_walk_gimple_modify_statement): Likewise.
2064         (build_element_name_1): Handle BIT_FIELD_REFs.
2065         (instantiate_element): Don't warn for any element whose parent
2066         is used as a whole.
2067         (instantiate_missing_elements_1): Return the sra_elt.
2068         (canon_type_for_field): New.
2069         (try_instantiate_multiple_fields): New.
2070         (instantiate_missing_elemnts): Use them.
2071         (mark_no_warning): Removed.
2072         (generate_one_element_ref): Handle BIT_FIELD_REFs.
2073         (REPLDUP, sra_build_elt_assignment): New.
2074         (generate_copy_inout): Use them.
2075         (generate_element_copy): Likewise.  Handle bitfld differences.
2076         (generate_element_zero): Don't recurse for blocks.  Use
2077         sra_build_elt_assignment.
2078         (generate_one_element_int): Take elt instead of var.  Use
2079         sra_build_elt_assignment.
2080         (generate_element_init_1): Adjust.
2081         (scalarize_use, scalarize_copy): Use REPLDUP.
2082         (scalarize_ldst): Move assert before dereference.
2083         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
2084
2085 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2086
2087         * regmove.c: Fix unused variable warnings due to previous commit.
2088
2089 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
2090
2091         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
2092         (regmove_bb_head): Remove.
2093         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
2094         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
2095         problems with fixup_match_1.
2096         Don't initialize/free regmove_bb_head.
2097
2098         (reg_is_remote_constant_p): If an insn is in the same basic block
2099         but not before INSN, consider it remote, too.
2100
2101 2007-04-05  Anatoly Sokolov <aesok@post.ru>
2102
2103         PR target/25448
2104         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
2105         DECL_ASSEMBLER_NAME, not the DECL_NAME.
2106
2107 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
2108
2109         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
2110         (CONDITIONAL_REGISTER_USAGE): Likewise.
2111
2112 2007-04-04  Richard Henderson  <rth@redhat.com>
2113
2114         * config/alpha/lib1funcs.asm: Remove unused file.
2115
2116 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2117
2118         PR other/31356
2119         * opts.c (print_specific_help): Fix --help=<language>
2120         header line.
2121         (common_handle_option): Support --help=common.
2122
2123 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2124
2125         PR other/31353
2126         * gcc.c (main): Do not run the linker if
2127         print_subprocess_help indicates that it shouldn't be
2128         run.
2129
2130 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
2131
2132         PR doc/31355
2133         * doc/invoke.texi (--help=): Document <languages> value, fix
2134         formatting in tables of values.
2135
2136 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
2137
2138         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
2139         dllimport attribute of virtual methods.
2140
2141 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
2142
2143         * config/score/crti.asm: Change _bss_start to __bss_start.
2144         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
2145         (OUTGOING_REG_PARM_STACK_SPACE) update.
2146         * config/score/score.opt: add options to make backend support
2147         score5, score5u, score7 and score7d.
2148         * config/score/score.md: Likewise.
2149         * config/score/misc.md: Likewise.
2150         * config/score/mac.md: Likewise.
2151         * doc/invoke.texi: Likewise.
2152         * doc/md.texi: update constraints define.
2153
2154 2007-04-03  Richard Henderson  <rth@redhat.com>
2155
2156         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
2157         an appropriate type, use the mode instead.
2158
2159 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
2160
2161         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
2162         Set the default --with-arch setting to mips2.
2163         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
2164         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
2165         (MULTILIB_OSDIRNAMES): Delete.
2166         (MULTILIB_DIRNAMES): Define.
2167         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
2168         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
2169         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
2170         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
2171         VXWORKS_OS_CPP_BUILTINS.
2172         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
2173         (MIPS_DEBUGGING_INFO): Undefine.
2174         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
2175
2176 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
2177
2178         PR middle-end/30704
2179         * fold-const.c (native_encode_real): Encode real.c provided longs
2180         as a series of 32-bit native integers.
2181         (native_interpret_real): Interpret buffer as a series of 32-bit
2182         native integers.
2183
2184 2007-04-03  Richard Guenther  <rguenther@suse.de>
2185
2186         * genpreds.c (write_insn_constraint_len): Write function
2187         optimized for CONSTRAINT_LEN implementation.
2188         (write_tm_preds_h): Output insn_constraint_len inline and
2189         use it for CONSTRAINT_LEN.
2190         (write_insn_preds_c): Don't output insn_constraint_len.
2191         * doc/md.texi (define_register_constraint): Document multi-letter
2192         constraints shall have the same length if they start with the same
2193         letter.
2194
2195 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2196
2197         PR target/31175
2198         * config/i386/i386.md (isinf<mode>2): Expand only when
2199         TARGET_C99_FUNCTIONS is set.
2200
2201 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
2202
2203         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
2204         (x86_64-*-linux*): Ditto.
2205         * config/i386/i386.opt (mpc): New option.
2206         * config/i386/i386.c (overrride_options): Handle
2207         ix87_precision_string.
2208         * config/i386/crtprec.c: New file.
2209         * config/i386/t-crtpc: Ditto.
2210         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
2211         and -mpc80 options.
2212         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
2213         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
2214         crtprec32.o, crtprec64.o and crtprec80.o.
2215
2216         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
2217         and -mpc80 options.
2218         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
2219
2220 2007-04-02  Eric Christopher  <echristo@apple.com>
2221
2222         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
2223         limitations on darwin.
2224
2225 2007-04-02  Anatoly Sokolov <aesok@post.ru>
2226
2227         PR target/31137
2228         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
2229
2230 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2231
2232         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
2233
2234 2007-04-02  Dave Korn  <dave.korn@artimi.com>
2235
2236         * libgcc2.h (exception_descriptor): Don't forward-declare.
2237         (__get_eh_table_language, __get_eh_table_version): Delete
2238         prototypes of long-dead functions.
2239
2240 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
2241
2242         * ebitmap.h: New file
2243         * ebitmap.c: New file
2244         * Makefile.in (ebitmap.o): New target.
2245
2246 2007-04-01  Jan Hubicka  <jh@suse.cz>
2247
2248         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
2249         before very first instruction.
2250
2251 2007-04-01  Jan Hubicka  <jh@suse.cz>
2252
2253         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
2254         waring on 64bit hosts.
2255         * bitmap.h: Fix typo in bitmap_head_def.
2256
2257 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
2258
2259         PR rtl-optimization/31391
2260         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
2261         into a DELETED_LABEL note, and the label is in an empty basic
2262         block, update BB_END as well as BB_HEAD.
2263
2264 2007-04-01  Richard Henderson  <rth@redhat.com>
2265
2266         PR tree-optimization/31169
2267         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
2268         to varying if the range is outside [0,  prec-1].
2269
2270 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
2271
2272         PR target/31388
2273         * config/mips/mips.md (load_const_gp): New insn.
2274         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
2275         the MIPS16 GP pseudo register if no_new_pseudos.
2276         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
2277
2278 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2279
2280         PR target/31364
2281         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
2282         secureplt.
2283         (call_value): Likewise.
2284
2285 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
2286             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2287
2288         PR 14737
2289         * doc/invoke.texi: (optimization options): Reword description
2290         of -ffast-math. Document its primary purpose.
2291
2292 2007-03-31  Richard Guenther  <rguenther@suse.de>
2293
2294         * omp-low.c (splay-tree.h): Include.
2295         (lookup_decl): Replace splay-tree usage by pointer-map.
2296         (maybe_lookup_decl): Likewise.
2297         (new_omp_context): Likewise.
2298         (delete_omp_context): Likewise.
2299         * gimplify.c (splay-tree.h): Include.
2300         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
2301         pointer-map.
2302         (remap_ssa_name): Likewise.
2303         (remap_decl): Likewise.
2304         (remap_type_1): Likewise.
2305         (remap_type): Likewise.
2306         (copy_body_r): Likewise.
2307         (expand_call_inline): Likewise.
2308         (clone_body): Likewise.
2309         (copy_tree_r): Likewise.
2310         (remap_save_expr): Likewise.
2311         (unsave_r): Likewise.
2312         (unsave_expr_now): Likewise.
2313         (tree_function_versioning): Likewise.
2314         (build_duplicate_type): Likewise.
2315         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
2316         (struct copy_body_data): Replace splay-tree by pointer-map.
2317         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
2318         not $(SPLAY_TREE_H).
2319         (gimplify.o): Depend on $(SPLAY_TREE_H).
2320         (omp-low.p): Likewise.
2321
2322 2007-03-31  Anatoly Sokolov <aesok@post.ru>
2323
2324         * config/avr/predicates.md (even_register_operand,
2325         odd_register_operand): New predicates.
2326         * config/avr/avr.md (movw peephole2): New.
2327         (movw_r peephole2): New.
2328
2329 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
2330
2331         * tree.h (get_signed_or_unsigned_type): New.
2332         * fold-const.c (operand_equal_for_comparison_p): Use
2333         get_signed_or_unsigned_type instead of
2334         lang_hooks.types.signed_or_unsigned_type.
2335         * expr.c (store_expr): Ditto.
2336         * langhooks.c (get_signed_or_unsigned_type): New.
2337         (lhd_signed_or_unsigned_type): New.
2338         * langhooks.h (lhd_signed_or_unsigned_type): New.
2339         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
2340
2341 2007-03-30  Richard Henderson  <rth@redhat.com>
2342
2343         * tree-ssa-loop-ivopts.c: Include target.h.
2344         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
2345         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
2346         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
2347         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
2348
2349 2007-03-30  Richard Henderson  <rth@redhat.com>
2350             Kai Tietz  <kai.tietz@onevision.com>
2351
2352         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
2353         default for 64-bit.
2354         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
2355         (TARGET_64BIT_MS_ABI): New.
2356         (DBX_REGISTER_NUMBER): Handle 64-bit.
2357         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
2358         (LONG_TYPE_SIZE): Force to 32.
2359         (REG_PARM_STACK_SPACE): New.
2360         (OUTGOING_REG_PARM_STACK_SPACE): New.
2361         (REGPARM_MAX, SSE_REGPARM_MAX): New.
2362         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
2363         (STACK_BOUNDARY): Use 128 for 64-bit.
2364         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
2365         Add 64-bit implementation.
2366         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
2367         argument unused.
2368         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
2369         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
2370         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
2371         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
2372         (ix86_handle_cconv_attribute): Don't warn when ignoring if
2373         TARGET_64BIT_MS_ABI.
2374         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
2375         (ix86_pass_by_reference): Likewise.
2376         (ix86_function_value_regno_p): Likewise.
2377         (ix86_build_builtin_va_list): Likewise.
2378         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
2379         (function_arg_advance_ms_64): New.
2380         (function_arg_advance): Call it.
2381         (function_arg_ms_64): New.
2382         (function_arg): Call it.
2383         (function_value_ms_64): New.
2384         (ix86_function_value_1): Call it.
2385         (return_in_memory_ms_64): New.
2386         (ix86_return_in_memory): Call it.
2387         (setup_incoming_varargs_ms_64): New.
2388         (ix86_setup_incoming_varargs): Call it.
2389         (ix86_expand_prologue): Handle 64-bit stack probing.
2390         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
2391         (output_pic_addr_const): Likewise.
2392         (x86_this_parameter): Likewise.
2393         (x86_output_mi_thunk): Likewise.
2394         (x86_function_profiler): Likewise.
2395         (TARGET_STRICT_ARGUMENT_NAMING): New.
2396         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
2397         (TARGET_64BIT_MS_ABI): New.
2398         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
2399         * config/i386/i386.md (allocate_stack_worker): Remove.
2400         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
2401         describe the clobber of eax without a match_scratch.
2402         (allocate_stack_worker_postreload): Remove.
2403         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
2404         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
2405         (allocate_stack_worker_rex64_postreload): Remove.
2406         (allocate_stack): Handle 64-bit.
2407         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
2408         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
2409         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
2410         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
2411         (STANDARD_STARTFILE_PREFIX_1): Likewise.
2412         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
2413         * config.build (x86_64-*-mingw*): New host.
2414         * config.host (x86_64-*-mingw*): New host.
2415         * config.gcc (x86_64-*-mingw*): New target.
2416         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
2417
2418 2007-03-30  Richard Henderson  <rth@redhat.com>
2419             Kai Tietz  <kai.tietz@onevision.com>
2420
2421         * c-pragma.c (struct def_pragma_macro_value): New.
2422         (struct def_pragma_macro): New.
2423         (pushed_macro_table): New.
2424         (dpm_hash, dpm_eq): New.
2425         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
2426         (init_pragma): Install them.
2427         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
2428
2429 2007-03-30  Anatoly Sokolov <aesok@post.ru>
2430
2431         * config/avr/avr.c (avr_override_options): Clear
2432         'flag_delete_null_pointer_checks'.
2433
2434 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
2435
2436         PR c++/26099
2437         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
2438         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
2439         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
2440         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
2441         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
2442         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
2443         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
2444         C++ extensions.
2445         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
2446
2447 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
2448
2449         * regmove.c: Move all of pass_stack_adjustments from here...
2450         * combine-stack-adj.c: ...to this new file.
2451         * Makefile.in: Add rules for combine-stack-adj.o.
2452
2453 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
2454
2455         PR tree-optimization/31383
2456         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
2457         to have the same length.
2458
2459 2007-03-30  Jan Hubicka  <jh@suse.cz>
2460
2461         PR middle-end/30700
2462         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
2463         availablility; add more sanity checking; ask varpool only about
2464         VAR_DECL.
2465
2466 2007-03-29  Richard Henderson  <rth@redhat.com>
2467
2468         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
2469         to decide, but __SIZEOF_LONG_LONG__.
2470
2471 2007-03-29  Richard Henderson  <rth@redhat.com>
2472
2473         * emutls.c (struct __emutls_array): New.
2474         (emutls_destroy): Use it instead of casting element 0 from void*.
2475         (__emutls_get_address): Likewise.
2476
2477 2007-03-29  Richard Henderson  <rth@redhat.com>
2478
2479         * varasm.c (initializer_constant_valid_p): Don't deny
2480         DECL_DLLIMPORT_P on functions.
2481
2482         * config/i386/cygming.h: Remove function declarations.
2483         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
2484         (ASM_OUTPUT_LABELREF): Remove.
2485         (COMMON_ASM_OP): Remove.
2486         (ASM_OUTPUT_COMMON): Remove.
2487         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
2488         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
2489         (ASM_DECLARE_FUNCTION_NAME): Likewise.
2490         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
2491         Rename from TARGET_ENCODE_SECTION_INFO.
2492         * config/i386/netware.h: Likewise.
2493         * config/i386/i386-protos.h: Update.
2494         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
2495         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
2496         (legitimate_constant_p): Reject dllimports.
2497         (dllimport_map, get_dllimport_decl): New.
2498         (legitimize_dllimport_symbol): New.
2499         (legitimize_address, ix86_expand_move): Use it.
2500         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
2501         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
2502         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
2503         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
2504         * config/i386/predicates.md (constant_call_address_operand): Only
2505         accept symbols; reject dllimport_p symbols.
2506         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
2507         i386_pe_maybe_record_exported_symbol.
2508         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
2509         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
2510         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
2511         trust the setting of DECL_DLLIMPORT_P.
2512         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
2513         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
2514         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
2515         tidy the argument scanning loop.
2516         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
2517         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
2518         (i386_pe_strip_name_encoding): Remove.
2519         (i386_pe_binds_local_p): New.
2520         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
2521         (i386_pe_output_labelref): Remove.
2522         (i386_pe_asm_output_aligned_decl_common): New.
2523         (i386_pe_maybe_record_exported_symbol): Rename from
2524         i386_pe_record_exported_symbol; check for dllexported symbols.
2525
2526 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
2527
2528         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
2529         add comment explaining why vsnprintf cannot be used.
2530
2531 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
2532
2533         PR tree-optimization/30666
2534         * tree.c (build_complex_type): When creating type names for DWARF2
2535         debug info, create TYPE_DECLs for TYPE_NAME instead of
2536         IDENTIFIER_NODEs.
2537         (build_common_tree_nodes_2): Use build_complex_type when building
2538         predefined complex types, to preserve canonical types.
2539
2540 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
2541
2542         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
2543         (noce_get_alt_condition): Look at it to determine whether to
2544         reverse the condition or not.
2545         (noce_get_condition): Substitute the truth for lies.
2546         (noce_find_if_block): Set the then_else_reversed field.
2547
2548 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
2549
2550         * config/fr30/fr30.md (movdi): Do not accept immediates as the
2551         destination of this insn.
2552         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
2553         than calling gen_rtx_SET directly.  Use r0 to hold the value of
2554         'address + 4' rather than a stack based temporary which can be
2555         mis-optimized away.
2556
2557 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
2558
2559         * config/s390/s390.c (s390_secondary_input_reload_class,
2560         s390_secondary_output_reload_class): Functions removed.
2561         (s390_secondary_reload): New function.
2562         (TARGET_SECONDARY_RELOAD): Target macro defined.
2563         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
2564         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
2565         * config/s390/s390.md ("reload_outti", "reload_outdi",
2566         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
2567         "reload_out<mode>"): Expanders removed.
2568         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
2569         "reload<mode>_nonoffmem_out"): Expanders added.
2570
2571 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
2572
2573         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
2574         SRC->DEST replacement failed anyway.
2575
2576 2007-03-28  Mike Stump  <mrs@apple.com>
2577
2578         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
2579         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
2580         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
2581
2582 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
2583
2584         * config.gcc: Accept barcelona as a variant of amdfam10.
2585         * config/i386/i386.c (override_options): Likewise.
2586         * doc/invoke.texi: Likewise.
2587
2588 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
2589
2590         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
2591         offsets for BIT_FIELD_REF and COMPONENT_REF.
2592
2593 2007-03-28  Richard Guenther  <rguenther@suse.de>
2594
2595         * tree.c (is_global_var): Move ...
2596         * tree-flow-inline.h (is_global_var): ... here.
2597         * tree.h (is_global_var): Remove declaration.
2598
2599 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
2600
2601         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
2602         option.
2603         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
2604         * config/i386/i386.c (ix86_tune_features): Initialize new
2605         tuning option.
2606         * config/i386/predicates.md (promotable_binary_operator): Use
2607         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
2608
2609 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
2610
2611         PR target/31380
2612         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
2613
2614 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
2615
2616         * config/fr30/fr30.md (movsi_internal): Change destination
2617         constraint from m to V and add m to the end.
2618
2619 2007-03-28  Christian Bruel  <christian.bruel@st.com>
2620
2621         * config/sh/sh.md (movsi_i): Fix type attribute.
2622
2623 2007-03-28  Christian Bruel  <christian.bruel@st.com>
2624
2625         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
2626         (movsf_ie): Likewise.
2627
2628 2007-03-28  Christian Bruel  <christian.bruel@st.com>
2629
2630         * config.gcc: Add sh4-300 to multilib.
2631         * config/sh/t-mlib-sh4-300: New file.
2632
2633 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
2634
2635         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
2636         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
2637         fix_trunc<mode>di2.
2638         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
2639         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
2640         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
2641         "fixuns_trunctddi2"): Whitespace fix.
2642
2643 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
2644
2645         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
2646         the definition of struct sh_args.
2647         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
2648         CALL_COOKIE_INT_REG_GET): Likewise.
2649
2650 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
2651
2652         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
2653         transformations are applied successfully.
2654
2655 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2656
2657         * tree.c (tree_contains_struct): Permit 512 tree codes.
2658         * tree.h (tree_contains_struct): Ditto.
2659         (MAX_TREE_CODES): Ditto.
2660         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
2661         SPARE member to store remaining padding bits.
2662
2663 2007-03-27  Anatoly Sokolov <aesok@post.ru>
2664
2665         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
2666         architecture.
2667
2668 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
2669
2670         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
2671         * configure: Regenerate.
2672
2673         * configure: Regenerate using the correct version of autoconf.
2674
2675 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
2676
2677         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
2678         pointer regs.
2679         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
2680         regs to "__SP_L__" and "__SP_H__".
2681
2682 2007-03-27  Richard Guenther  <rguenther@suse.de>
2683
2684         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
2685         computations with it with a HOST_WIDE_INT variable.
2686
2687 2007-03-26  Mike Stump  <mrs@apple.com>
2688
2689         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
2690         objective-c-header, objective-c++-header and objc++-cpp-output
2691         support.
2692         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
2693
2694 2007-03-26  Richard Henderson  <rth@redhat.com>
2695
2696         PR target/31361
2697         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
2698         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
2699         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
2700         IX86_BUILTIN_PSRLQ128): New.
2701         (ix86_init_mmx_sse_builtins): Add them.
2702         (ix86_expand_builtin): Expand them.
2703         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
2704         operand 2 be TImode.
2705         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
2706         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
2707         _mm_srli_epi64): Mark __B const.
2708         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
2709         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
2710         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
2711         new two-vector shift builtins.
2712
2713 2007-03-26  Ian Lance Taylor  <iant@google.com>
2714
2715         PR tree-optimization/31345
2716         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
2717         [+INF, +INF(OVF)] into VARYING.
2718
2719 2007-03-26  Zack Weinberg  <zackw@panix.com>
2720
2721         * gengtype-parse.c: New file.
2722         * gengtype-yacc.y: Delete.
2723         * gengtype-lex.l: Don't include gengtype-yacc.h.
2724         Define YY_DECL and yyterminate appropriately for recursive
2725         descent parser.  yylval is now a string out-parameter to yylex.
2726         (HWS, EOID): New shorthand.
2727         (IWORD): Add a couple more types.
2728         (yylex): Add a setup stanza.  Remove the complex rules for
2729         detecting GTY'ed types and typedefs; replace with simple
2730         keyword detectors.  Adjust everything for the changed
2731         definition of yylval.  Ignore all pp-directives, not just #define.
2732         (yyerror): Delete.
2733         (parse_file): Rename yybegin; do not call yyparse.
2734         (yyend): New.
2735         * gengtype.c (xasprintf): Export again.
2736         (this_file): New.  Use everywhere __FILE__ was being used.
2737         (get_lang_bitmap): Special case types defined in gengtype.c.
2738         (do_typedef, new_structure): Suppress definition of certain types.
2739         (new_structure): Improve diagnostics of duplicate definitions.
2740         Make sure location_s is associated with input.h.
2741         (nreverse_pairs, define_location_structures): New functions.
2742         (main): Improve tagging of kludge types.  Remove old kludges
2743         for input.h types; use define_location_structures.
2744         * gengtype.h: Update prototypes.  Define token codes here.
2745         * Makefile.in: Remove all references to gengtype-yacc.
2746         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
2747         and gengtype.
2748         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
2749         add GTY((skip)) to the field that's only conditionally there.
2750         * doc/install.texi: Document that Bison is no longer required
2751         unless building treelang.
2752
2753         * gengtype.c: Don't include gtyp-gen.h.
2754         (srcdir): Declare here.
2755         (base_files, lang_dir_names): Allocate dynamically.
2756         (gt_files, num_gt_files, num_lang_dirs): New globals.
2757         (measure_input_list, read_input_line, read_input_list)
2758         (set_lang_bitmap): New functions.
2759         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
2760         simplify, relying on read_input_list to set up the bitmaps.
2761         (main): Arguments are no longer unused.  Check for correct number
2762         of command line arguments, set srcdir and srcdir_len, then call
2763         read_input_list, before doing anything else.  No need to worry
2764         about duplicates in main loop.
2765         * configure.ac: Simplify the calculation of all_gtfiles.
2766         Put language tags in there.  Don't set or substitute
2767         all_gtfiles_files_langs or all_gtfiles_files_frags.
2768         * Makefile.in: Revamp the way gengtype is invoked, now that it
2769         takes a file on its command line with a much simpler format.
2770         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
2771         (GTFILES): Remove duplicates and C source files.
2772         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
2773         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
2774         * configure: Regenerate.
2775
2776         * gengtype.h: Remove all type definitions to gengtype.c; leave
2777         only definitions of options_p, type_p, and pair_p as opaque
2778         pointers.  Update prototypes.
2779         * gengtype.c: Many type definitions moved here from gengtype.h.
2780         Consolidate type definitions at the top of the file.
2781         (xvasprintf): Delete.
2782         (xasprintf): Make static.
2783         (create_nested_pointer_option): Add 'next' parameter.
2784         (create_field_all, create_field_at): New functions.
2785         (create_field): Now a thin wrapper around create_field_all.
2786         (create_optional_field): Rename create_optional_field_ and add
2787         line argument.  Original name is now a macro which supplies
2788         __LINE__.
2789         (oprintf): Use vsnprintf directly.
2790         (close_output_files): Use fatal rather than perror/exit.
2791         (note_def_vec, note_def_vec_alloc): Use create_field_at.
2792         (main): Set progname.  Don't use exit.
2793         * gengtype-yacc.y (struct_fields): Use create_field_at.
2794         (option, optionseqopt): Delete.
2795         (optionseq): Consolidate productions from option here so we
2796         can use the first argument to create_option.
2797
2798         * gengtype-lex.l: Distinguish unions from structures in the
2799         token type.  Don't call find_structure; return the tag as a string.
2800         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
2801         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
2802         Reorganize typedef_struct production accordingly.
2803         Use create_nested_ptr_option.
2804         * gengtype.c (create_nested_ptr_option): New function.
2805         * gengtype.h: Declare it.
2806
2807         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
2808         (string_type): Don't declare.
2809         (do_scalar_typedef): Declare.
2810         (create_scalar_type): Update prototype.
2811         * gengtype.c (string_type): Make static.
2812         (scalar_nonchar, scalar_char): New.
2813         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
2814         (resolve_typedef): Use scalar_nonchar for error recovery.
2815         (create_scalar_type): Remove name_len field.  Return scalar_char
2816         or scalar_nonchar as appropriate.
2817         (adjust_field_type): Look at scalar_is_char boolean to decide whether
2818         to use string_type.
2819         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
2820         whenever possible.
2821         (main): Initialize scalar_char and scalar_nonchar before calling
2822         gen_rtx_next.
2823         * gengtype-lex.l: Adjust for removal of second argument to
2824         create_scalar_type.  Use yylval.s instead of yylval.t when
2825         returning SCALAR.
2826         * gengtype-yacc.y: Type of SCALAR is string.  Call
2827         create_scalar_type from type:SCALAR rule.  Adjust for removal of
2828         second argument to create_scalar_type.
2829
2830         * vec.h: Remove all #if IN_GENGTYPE blocks.
2831         Add comment saying that changes may require adjustments to gengtype.
2832         * gengtype.c: Don't include coretypes.h or tm.h.
2833         Add comment to inclusion of errors.h.
2834         (note_def_vec, note_def_vec_alloc): New functions.
2835         * gengtype.h: Declare new functions.
2836         * gengtype-lex.l: Don't include coretypes.h.
2837         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
2838         Delete.
2839         (update_lineno): Remove unnecessary prototype.
2840         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
2841         (VEC rule): Just return VEC_TOKEN.
2842         * gengtype-yacc.y (VEC_TOKEN): New token type.
2843         (type): Add a production for VEC(a,b).
2844         * Makefile.in: Update dependencies.
2845
2846         * gengtype-lex.l: Remove rules for parsing pointer-to-function
2847         typedefs that use the old PARAMS macro.
2848
2849         * gengtype-lex.l: Remove all rules and states relating to yacc
2850         input files.
2851         * gengtype-yacc.y: Similarly.
2852         * gengtype.c (note_yacc_type): Delete function.
2853         * gengtype.h: Update prototypes.
2854
2855 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
2856
2857         * tree-pretty-print.c (dump_generic_node): Report precision of
2858         unnamed integer types.
2859
2860 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
2861
2862         * ifcvt.c (noce_try_store_flag_constants): Don't check
2863         no_new_pseudos here.
2864         (noce_try_store_flag_constants): Don't check no_new_pseudos.
2865         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
2866         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
2867         noce_try_sign_mask): Likewise.
2868         (if_convert): Check no_new_pseudos here.
2869
2870         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
2871         Remove prototypes.
2872         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
2873         (noce_get_condition): Handle new then_else_reversed argument.
2874         (noce_init_if_info): Remove, fold into noce_find_if_block.
2875         (noce_process_if_block): Take a struct noce_if_info as the
2876         argument.  Don't set up one based on ce_if_info.  Update pointer
2877         references accordingly.
2878         (cond_move_process_if_block): Likewise.
2879         (process_if_block): Removed.
2880         (find_if_block): Removed.  Move functionality two new functions,
2881         noce_find_if_block and cond_exec_find_if_block.
2882         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
2883         blocks and the symmetric IF-ELSE-JOIN case.
2884         (cond_exec_find_if_block): Also new function mostly based on old
2885         find_if_block and process_if_block.
2886         (find_if_header): Replace find_if_block call with separately
2887         guarded calls to noce_find_if_block and cond_exec_find_if_block.
2888         (find_cond_trap): Update noce_get_condition call.
2889         (dead_or_predicable): Likewise.
2890
2891 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
2892
2893         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
2894         Remove.
2895         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
2896         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
2897         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
2898         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
2899         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
2900         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
2901         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
2902         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
2903         __builtin_ia32_psrad128 builtins.
2904
2905 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
2906
2907         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
2908         * config/i386/constraints.md
2909         (define_constraint "I"): Use IN_RANGE macro.
2910         (define_constraint "J"): Ditto.
2911         (define_constraint "K"): Ditto.
2912         (define_constraint "M"): Ditto.
2913         (define_constraint "N"): Ditto.
2914         (define_constraint "O"): Ditto.
2915         * config/i386/predicates.md
2916         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
2917         (define_predicate "const_0_to_3_operand"): Ditto.
2918         (define_predicate "const_0_to_7_operand"): Ditto.
2919         (define_predicate "const_0_to_15_operand"): Ditto.
2920         (define_predicate "const_0_to_63_operand"): Ditto.
2921         (define_predicate "const_0_to_255_operand"): Ditto.
2922         (define_predicate "const_1_to_31_operand"): Ditto.
2923         (define_predicate "const_2_to_3_operand"): Ditto.
2924         (define_predicate "const_4_to_7_operand"): Ditto.
2925
2926 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2927
2928         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
2929         in SImode for save_world.
2930         * config/rs6000/altivec.md (save_world, restore_world): Convert to
2931         LR hard reg.
2932
2933 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
2934
2935         PR tree-optimization/30784
2936         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
2937         BIT_FIELD_REF.
2938
2939 2007-03-25  Revital Eres  <eres@il.ibm.com>
2940
2941         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
2942           Fold movement_possibility function into it.
2943
2944 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
2945
2946         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
2947         (load_macho_picbase_{si,di}): Convert to LR hard reg.
2948         (call_indirect_nonlocal_darwin64): Same.
2949         (call_nonlocal_darwin64): Same.
2950         (call_value_indirect_nonlocal_darwin64): Same.
2951         (call_value_nonlocal_darwin64): Same.
2952         (sibcall_nonlocal_darwin64): Same.
2953         (sibcall_value_nonlocal_darwin64): Same.
2954         (sibcall_symbolic_64): Same.
2955         (sibcall_value_symbolic_64): Same.
2956         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
2957         LR pseudo.
2958         (rs6000_emit_load_toc_table): Same.
2959         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
2960         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
2961         (mull_call): Same.
2962         (divss_call): Same.
2963         (divus_call): Same.
2964         (quoss_call): Same.
2965         (quous_call): Same.
2966         (load_toc_v4_pic_si): Same
2967         (load_toc_v4_PIC_1): Same.
2968         (load_toc_v4_PIC_1b): Same.
2969         (call_indirect_aix{32,64}): Same.
2970         (call_value_indirect_aix{32,64}): Same.
2971         (call): Same.
2972         (call_value): Same.
2973         (call_local{32,64}): Same.
2974         (call_value_local{32,64}): Same.
2975         (call_indirect_nonlocal_aix{32,64}): Same.
2976         (call_nonlocal_aix{32,64}): Same.
2977         (call_value_indirect_nonlocal_aix{32,64}): Same.
2978         (call_value_nonlocal_aix{32,64}): Same.
2979         (call_indirect_nonlocal_sysv<mode>): Same.
2980         (call_nonlocal_sysv<mode>): Same.
2981         (call_value_indirect_nonlocal_sysv<mode>): Same.
2982         (call_value_nonlocal_sysv<mode>): Same.
2983         (sibcall): Same.
2984         (sibcall_local{32,64}): Same.
2985         (sibcall_value_local{32,64}): Same.
2986         (sibcall_nonlocal_aix{32,64}): Same.
2987         (sibcall_value_nonlocal_aix{32,64}): Same.
2988         (sibcall_nonlocal_sysv<mode>): Same.
2989         (sibcall_value): Same.
2990         (sibcall_value_nonlocal_sysv<mode>): Same.
2991
2992 2007-03-24  Paul Brook  <paul@codesourcery.com>
2993
2994         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
2995         * config/arm/linux-eabi.h: Remove legacy syscall hack.
2996
2997 2007-03-24  Richard Henderson  <rth@redhat.com>
2998
2999         * config/ia64/constraints.md: New file.
3000         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
3001         satisfies_constraint_?.
3002         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
3003         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
3004         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
3005         ia64_output_mi_thunk): Likewise.
3006         (ia64_const_ok_for_letter_p): Remove.
3007         (ia64_const_double_ok_for_letter_p): Remove.
3008         (ia64_extra_constraint): Remove.
3009         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
3010         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
3011         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
3012         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
3013         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
3014         EXTRA_MEMORY_CONSTRAINT): Remove.
3015         * config/ia64/ia64.md: Include constriants.md.  Replace
3016         CONST_OK_FOR_? with satisfies_constraint_?.
3017
3018 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
3019             H.J. Lu  <hongjiu.lu@intel.com>
3020
3021         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
3022         DPD or BID name.
3023         (name macros): Use DPD_BID_NAME to convert names properly.
3024
3025         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
3026         decimal floating point format.
3027         (init_floating_libfuncs): Change decimal functions so that they
3028         have a "bid_" prefix if the decimal system uses the BID format,
3029         and "dpd_" prefix if the decimal system uses the DPD format.
3030         (init_interclass_conv_libfuncs): Ditto.
3031         (init_intraclass_conv_libfuncs): Ditto.
3032
3033         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3034         using the BID format.
3035
3036         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3037         whether we are using the BID decimal format.
3038         * configure: Regenerate.
3039
3040         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3041         the compiler has decimal floating point enabled.  Define
3042         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3043         instead of DPD.
3044
3045         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
3046         using the BID format.
3047
3048         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
3049         whether we are using the BID decimal format.
3050         * configure: Regenerate.
3051
3052         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
3053         the compiler has decimal floating point enabled.  Define
3054         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
3055         instead of DPD.
3056
3057         * doc/install.texi (--enable-decimal-float): Document BID and DPD
3058         options, and that it is enabled for i386/x86_64 systems.
3059
3060         * Makefile.in (enable_decimal_float): New.
3061         (DECNUMFMT): New.
3062         (DECNUMINC): Add  -I$(DECNUMFMT).
3063         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
3064         to $(DECNUMFMT) from $(DECNUM).
3065
3066         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
3067         Substitute enable_decimal_float.
3068         * configure: Regenerated.
3069
3070         PR other/30529
3071         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
3072         unsigned long.
3073
3074         * configure.ac: Enable decimal float for x86_64-*-linux*.
3075         * configure: Regenerated.
3076
3077         PR other/30530
3078         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
3079         decimal128ClearSign to flip and clear the sign bit in decimal128.
3080         (decimal_real_maxval): Set decimal128SetSign to set the sign
3081         bit in decimal128.
3082
3083 2007-03-23  Ian Lance Taylor  <iant@google.com>
3084
3085         * fold-const.c (fold_binary): Correct warning for X - c >= X.
3086
3087 2007-03-23  Ian Lance Taylor  <iant@google.com>
3088
3089         * tree-dump.c (dump_files): Correct comment.
3090
3091 2007-03-23  Ian Lance Taylor  <iant@google.com>
3092
3093         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
3094
3095 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
3096
3097         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
3098         in cfglayout mode.  Don't go into and out of cfglayout mode.
3099         Link the blocks in the order of the constructed traces.
3100         (rest_of_handle_tracer): Adjust call to tracer.
3101         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
3102         Don't go into cfglayout mode.
3103         (rtl_loop_done): Don't go out of cfglayout mode.
3104         * cfglayout.c (relink_block_chain): New function, split out from...
3105         (fixup_reorder_chain): ...here.  Remove redundant checking.
3106         (cfg_layout_finalize): Don't clear the header, footer, and aux
3107         fields here, move the code to do so to relink_block_chain.  Likewise
3108         for free_original_copy_tables.
3109         * rtl.h (tracer): Update prototype.
3110         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
3111         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
3112         mode.  Use relink_block_chain to serialize the CFG according to the
3113         new basic block order.  Move targetm.cannot_modify_jumps_p check from
3114         here...
3115         (gate_handle_reorder_blocks): ...to here.
3116         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
3117         from here...
3118         (gate_duplicate_computed_gotos): ...to here.
3119         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
3120         something always changes when going into and out of cfglayout mode.
3121         Perform an expensive cfg cleanup while going into cfglayout mode.
3122         Always update liveness information on HAVE_conditional_execution
3123         targets.  Reserialize the basic blocks and go out of cfglayout mode.
3124         * reg-stack.c: Include cfglayout.h.
3125         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
3126         the call to reorder_basic_blocks.
3127         * basic-block.h (reorder_basic_blocks): Update prototype.
3128         (relink_block_chain): New prototype.
3129         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
3130
3131 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
3132
3133         * config/mips/mips.md (type, hazard, *movdi_32bit,
3134         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
3135         *movhi_internal, *movqi_internal, *movsf_hardfloat,
3136         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
3137         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
3138         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
3139         applicable.
3140         (movcc): Change first xfer to multi.
3141         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
3142         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
3143         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
3144         config/mips/generic.md: Change reservations using "xfer" to use
3145         "mfc,mtc".
3146         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
3147         using match_operand.
3148         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
3149         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
3150         examining mode.
3151         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
3152
3153 2007-03-22  Richard Henderson  <rth@redhat.com>
3154
3155         * config/i386/i386.c: Remove unnecessary function declarations.
3156         Move targetm definition, and all related macros, to the end of
3157         the file.  Resort some functions to put definitions before uses.
3158         (ix86_attribute_table): Make static.  Move to end of file.
3159         (ix86_gimplify_va_arg): Make static.
3160
3161 2007-03-22  Richard Henderson  <rth@redhat.com>
3162
3163         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
3164         don't increase local_regparm with force_align_arg_pointer check.
3165         (ix86_function_sseregparm): Assert 32-bit.
3166         (type_has_variadic_args_p): New.
3167         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
3168         type_has_variadic_args_p.
3169         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
3170         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
3171         use memset instead.  Do maybe_vaarg check first; skip attribute
3172         tests if true; skip attribute tests for 64-bit.
3173         (construct_container): Remove TARGET_DEBUG_ARG.
3174         (function_arg_advance_32, function_arg_advance_64): Split out ...
3175         (function_arg_advance): ... from here.
3176         (function_arg_32, function_arg_64): Split out ...
3177         (function_arg): ... from here.
3178         (ix86_pass_by_reference): Tidy.
3179         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
3180         (function_value_32): New, from parts of ix86_function_value
3181         and ix86_value_regno.
3182         (function_value_64): New, from parts of ix86_function_value
3183         and ix86_libcall_value.
3184         (ix86_function_value_1): New.
3185         (ix86_function_value, ix86_libcall_value): Use it.
3186         (return_in_memory_32, return_in_memory_64): Split out ...
3187         (ix86_return_in_memory): ... from here.
3188         (ix86_struct_value_rtx): Skip for 64-bit.
3189         (ix86_libcall_value, ix86_value_regno): Remove.
3190         (setup_incoming_varargs_64): Split out ...
3191         (ix86_setup_incoming_varargs): ... from here.
3192         (ix86_va_start): Remove TARGET_DEBUG_ARG.
3193         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
3194         * config/i386/i386-protos.h (ix86_function_value): Remove.
3195         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
3196
3197 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3198
3199         PR other/23572
3200         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
3201         infinities not supported, otherwise emit warning if -Woverflow. On
3202         underflow, emit warning if -Woverflow.
3203         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
3204         and 0 otherwise.
3205         * real.h (real_from_string): Update declaration
3206
3207 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
3208             Richard Henderson  <rth@redhat.com>
3209
3210         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
3211         * calls.c (compute_argument_block_size, expand_call,
3212         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
3213         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
3214         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
3215         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
3216         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
3217         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
3218         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
3219         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
3220         Set to 1.
3221
3222 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
3223
3224         * c-incpath.c (add_sysroot_to_chain): New.
3225         (merge_include_chains): Add sysroot argument.  Call
3226         add_sysroot_to_chain if sysrooted.
3227         (register_include_chains): Update call to merge_include_chains.
3228         * doc/cppopts.texi: Document use of '=' in include directory
3229         arguments.
3230
3231 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
3232
3233         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
3234         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
3235         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
3236         insn pattern using X87MODEF12 mode macro.
3237
3238 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
3239
3240         * regmove.c (regmove_optimize): Use reg_mentioned_p
3241         instead of reg_overlap_mentioned_p for DST.
3242
3243 2007-03-21  Mike Stump  <mrs@apple.com>
3244
3245         * c.opt: Fixup for Objective-C/C++.
3246
3247 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
3248
3249         * explow.c (convert_memory_address): Fold memory reference when
3250         POINTERS_EXTEND_UNSIGNED < 0
3251
3252 2007-03-21  Richard Henderson  <rth@redhat.com>
3253
3254         PR target/31245
3255         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
3256         * config/i386/mmintrin.h (__m64): Likewise.
3257         * config/i386/xmmintrin.h (__m128): Likewise.
3258
3259 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
3260
3261         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
3262         (VXWORKS_OS_CPP_BUILTINS): Define.
3263         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
3264         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
3265
3266 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
3267
3268         * rtl.h (constant_pool_reference_p): Delete.
3269         (find_constant_src): Declare.
3270         * rtlanal.c (find_constant_src): New function.
3271         * simplify-rtx.c (constant_pool_reference_p): Delete.
3272         * config/i386/i386.md: Use find_constant_src instead of
3273         constant_pool_reference_p/avoid_constant_pool_reference pairs.
3274
3275 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
3276
3277         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
3278         * c-cppbuiltin.c (c_cpp_builtins): Define them.
3279
3280 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
3281
3282         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
3283         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
3284         (arm_elf_asm_constructor): Use it.
3285         (arm_elf_asm_destructor): New function.
3286
3287 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
3288
3289         * jump.c (mark_jump_label): Treat SEQUENCE specially.
3290
3291 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
3292
3293         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
3294
3295 2007-03-19  Andrew Haley  <aph@redhat.com>
3296
3297         PR tree-optimization/31264
3298         * tree-vrp.c (register_edge_assert_for_1): Don't look though
3299         VIEW_CONVERT_EXPRs.
3300
3301 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
3302
3303         PR rtl-optimization/30907
3304         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
3305         (fwprop_init): Always call loop_optimizer_initialize.
3306         (fwprop_done): Always call loop_optimizer_finalize.
3307         (fwprop): We always have loop info now.
3308         (gate_fwprop_addr): Remove.
3309         (pass_fwprop_addr): Use gate_fwprop as gate.
3310
3311         PR rtl-optimization/30841
3312         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
3313         df_chain_alloc): Call df_reorganize_refs unconditionally.
3314         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
3315         refs_organized to refs_organized_size.
3316         (df_ref_create_structure): Use refs_organized_size instead of
3317         bitmap_size if refs had been organized, and keep refs_organized_size
3318         up-to-date.
3319         * df.h (struct df_ref_info): Change refs_organized to
3320         refs_organized_size.
3321         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
3322         bitmap_size.
3323
3324 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
3325
3326         * except.c (output_function_exception_table): Do not reference the
3327         EH personality routine for functions that do not require an
3328         exception table.
3329
3330 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
3331
3332         PR c/30762
3333         * c-typeck.c (convert_for_assignment): Call comptypes for
3334         RECORD_TYPE or UNION_TYPE.
3335
3336         PR inline-asm/30505
3337         * reload1.c (reload): Do invalid ASM checking after
3338         cleanup_subreg_operands.
3339
3340 2007-03-19  Jeff Law  <law@redhat.com>
3341
3342         * tree-cfg.c (find_taken_edge): Tighten conditions for
3343         optimizing computed gotos.
3344
3345 2007-03-19  Michael Matz  <matz@suse.de>
3346
3347         * builtins.c (expand_builtin_sync_operation,
3348         expand_builtin_compare_and_swap,
3349         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
3350         correctly.
3351
3352         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
3353         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
3354         for operand 3.
3355
3356 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
3357
3358         * doc/tm.texi: Add brackets around the return type of
3359         TARGET_SECONDARY_RELOAD.
3360
3361 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3362         Richard Guenther  <rguenther@suse.de>
3363
3364         PR tree-optimization/31254
3365         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
3366         Use handled_component_p () where appropriate.  Continue
3367         propagating into the rhs if we propagated into an INDIRECT_REF
3368         on the lhs.
3369
3370 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
3371
3372         * config/s390/s390.md (op_type attribute): RRR instruction type added.
3373         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
3374         (xde, xdee): Mode attributes adjusted to support DFP modes.
3375         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
3376         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
3377         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
3378         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
3379         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
3380         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
3381         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
3382         numbers.
3383         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
3384         "movsf"): Insn definitions removed.
3385         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
3386         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
3387         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
3388         definitions added.
3389         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
3390         "reload_in<mode>", "reload_out<mode>"): Expander added.
3391         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
3392         Expander removed.
3393
3394 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
3395
3396         * config/s390/s390.md: Only non-functional changes.  Renamed
3397         FPR mode macro to BFP all over the file.
3398
3399 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
3400
3401         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
3402         (op_type attribute): RRF instruction type added.
3403         (fT0): New mode attribute.
3404         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",