OSDN Git Service

* lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
2
3         * lambda-code.c (struct lambda_lattice_s): Add a name to the struct.
4         (lambda_body_vector_new): Use type safe memory macros.
5         (lambda_linear_expression_new): Likewise.
6         (lambda_loopnest_new): Likewise.
7         (lambda_lattice_new): Likewise.
8         (replace_uses_equiv_to_x_with_y): Cast according to the coding
9         conventions. Use type safe memory macros.
10         * lambda.h (struct lambda_trans_matrix_s): Add a name to the struct.
11         (lambda_body_vector_s): Likewise.
12         * lambda-mat.c (lambda_matrix_new): Use type safe memory macros.
13         * lambda-trans.c (lambda_trans_matrix_new): Likewise.
14
15 2007-06-06  Richard Guenther  <rguenther@suse.de>
16
17         * tree-ssa-forwprop.c (forward_propagate_into_cond): Return 2
18         if we need to schedule cfg_cleanup.
19         (tree_ssa_forward_propagate_single_use_vars): Do so.
20
21 2007-06-06  Ian Lance Taylor  <iant@google.com>
22
23         * fold-const.c (merge_ranges): If range_successor or
24         range_predecessor fail, just return 0.
25
26 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
27
28         PR tree-optimization/32216
29         * tree-vectorizer.c (supportable_widening_operation): Determine
30         signedness of FIX_TRUNC_EXPR from output operand.
31         (supportable_narrowing_operation): Ditto.
32         * tree-vect-generic.c (expand_vector_operations_1): Determine
33         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
34         from input operand.
35
36 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
37
38         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
39         (struct pta): ...from here. Change flags to unsigned to avoid
40         excessive casting (as it is used as a bit mask).
41         (override_options): Add casts according to the coding convenventions.
42         (x86_64_elf_unique_section): Likewise.
43         (examine_argument): Avoid using C++ keywords as variable names.
44         (construct_container): Likewise.
45         (legitimize_pic_address): Likewise.
46         (get_dllimport_decl): Cast according to the coding conventions. Use
47         type safe memory macros.
48         (legitimize_address): Cast according to the coding conventions.
49         (emit_i387_cw_initialization): Corrected the type of slot to enum
50         ix86_stack_slot.
51         (ix86_init_machine_status): Use type safe memory macros.
52         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
53         (bdesc_pcmpistr): Likewise.
54         (bdesc_crc32): Likewise.
55         (bdesc_sse_3arg): Likewise.
56         (bdesc_2arg): Likewise.
57         (bdesc_1arg): Likewise.
58         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
59         (ix86_expand_sse_pcmpistr): Likewise.
60         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
61         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
62         int to match the langhook definition.
63         (ix86_builtin_conversion): Change the type of code to unsigned init to
64         match the langhook definition.
65         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
66         names.
67         (ix86_preferred_output_reload_class): Likewise.
68         (ix86_cannot_change_mode_class): Likewise.
69         (ix86_memory_move_cost): Likewise.
70         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
71         avoid excessive casting later on.
72         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
73
74 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
75
76         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
77         as flags setting insn.
78         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
79
80 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
81
82         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
83         (UNSPEC_ROUND): New.
84         ("sse4_1_round<mode>2"): New insn pattern.
85         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
86         SSE4.1 targets.
87         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
88         expander using SSEMODEF mode macro.  Expand using
89         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
90         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
91         expander using SSEMODEF mode macro.  Expand using
92         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
93         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
94         expander using SSEMODEF mode macro.  Expand using
95         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
96         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
97         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
98         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
99         UNSPEC_ROUNDS.
100
101 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
102             Sebastian Pop  <sebpop@gmail.com>
103
104         * lambda.h (build_linear_expr): New.
105         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression): 
106         Use build_linear_expr, call fold and force_gimple_operand.
107         (lambda_loopnest_to_gcc_loopnest): Check that there is
108         something to insert.
109         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
110
111 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
112
113         PR preprocessor/23479
114         * doc/extend.texi: Document the 0b-prefixed binary integer
115         constant extension.
116         
117 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
118
119         PR tree-optimization/32215
120         * tree-vectorizer.c (supportable_widening_operation): Return false
121         for unsupported FIX_TRUNC_EXPR tree code.
122         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
123
124 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
125
126         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
127         register on SPE targets.  Change documentation to reflect
128         reality.
129         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
130         Change FIXED_SCRATCH to 14 and document why we're keeping r14
131         out of the register allocation pool.
132         (rs6000_reg_live_or_pic_offset_p): New function.
133         (rs6000_emit_prologue): Move the actual saving of LR up to free
134         r0 for holding r11.  Split saving of SPE 64-bit registers into
135         its own case.  Ensure that offsets will always be in-range for
136         'evstdd' by using r11 as a scratch register to point at the start
137         of the SPE save area.  Save r11 if necessary, as it is the static
138         chain register.
139         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
140         into its own case.  Ensure that offsets will always be in-range
141         for 'evldd' by using r11 as a scratch register to point at the
142         start of the SPE save area.  Also adjust r11 when restoring
143         the stack pointer to compensate for pre-loading r11.
144
145 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
146
147         * cfg.c (init_flow): Use type safe memory macros.
148         (alloc_block): Likewise.
149         (unchecked_make_edge): Likewise.
150         (dump_flow_info): Avoid using C++ keywords as variable names.
151         (copy_original_table_clear): Cast according to the coding conventions.
152         (copy_original_table_set): Likewise.
153         * cfgexpand (label_rtx_for_bb): Likewise.
154         (expand_gimple_basic_block): Likewise.
155         * cfghooks.c (dump_bb): Likewise.
156         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
157         variable names.
158         (lv_add_condition_to_bb): Likewise.
159         * cfglayout (relink_block_chain): Cast according to the coding
160         conventions.
161         (fixup_reorder_chain): Likewise.
162         (fixup_fallthru_exit_predecessor): Likewise.
163         * cfgloop.c (glb_enum_p): Likewise.
164         (get_exit_description): Likewise.
165         (dump_recorded_exit): Likewise.
166         * cfgloop.h (enum loop_estimation): Move out of struct scope...
167         (struct loop): ... from here.
168         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
169         conventions.
170         * cfgrtl.c (rtl_create_basic_block): Likewise.
171         (rtl_split_block): Likewise.
172         (rtl_dump_bb): Likewise.
173         (cfg_layout_split_block): Likewise.
174         (init_rtl_bb_info): Use typesafe memory macros.
175
176         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
177         * graphds.h: Updated all usages of edge to graph_edge.
178         * graphds.c: Likewise.
179         * cfgloopanal.c: Likewise.
180
181 2007-06-05  Ian Lance Taylor  <iant@google.com>
182
183         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
184         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
185         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
186         expression.
187         (test_for_singularity): Likewise.
188
189 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
190
191         * config/i386/constraints.md ("Y2"): Replaced by ...
192         ("Yt"): This.
193         * config/i386/i386.md: Likewise.
194         * config/i386/mmx.md: Likewise.
195         * config/i386/sse.md: Likewise.
196
197 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
198
199         * config/i386/constraints.md ("z"): Replaced by ...
200         ("Y0"): This.
201         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
202         (sse4_1_blendvps): Likewise.
203         (sse4_1_pblendvb): Likewise.
204         (sse4_2_pcmpestr): Likewise.
205         (sse4_2_pcmpestrm): Likewise.
206         (sse4_2_pcmpestr_cconly): Likewise.
207         (sse4_2_pcmpistr): Likewise.
208         (sse4_2_pcmpistrm): Likewise.
209         (sse4_2_pcmpistr_cconly): Likewise.
210
211 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
212
213         * matrix-reorg.c (transform_access_sites): Fix computation.
214         (transform_allocation_sites): Same.
215
216 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
217
218         * config/i386/i386.c (override_options): Use
219         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
220
221 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
222
223         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
224         (nonimm_not_xmm0_operand): Ditto.
225         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
226         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
227         as operand[2] predicate.  Require "z" class XMM register for
228         operand[3].  Adjust asm template.
229         ("sse4_1_blendvpd"): Ditto.
230         ("sse4_1_pblendvb"): Ditto.
231         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
232         force op2 into xmm0 register for variable blend instructions.
233
234 2007-06-04  Tom Tromey  <tromey@redhat.com>
235
236         * c-tree.h (start_enum): Update.
237         (build_enumerator): Likewise.
238         * c-decl.c (enum_next_value): Removed.
239         (enum_overflow): Likewise.
240         (start_enum): Add c_enum_contents argument.  Don't use globals.
241         (build_enumerator): Likewise.
242         * c-tree.h (struct c_enum_contents): New struct.
243
244 2007-06-04  Tom Tromey  <tromey@redhat.com>
245
246         * c-common.c (c_common_get_alias_set): Fix indentation.
247
248 2007-06-04  Ian Lance Taylor  <iant@google.com>
249
250         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
251         to overflow, reduce overflow infinity to regular infinity.
252         (vrp_var_may_overflow): New static function.
253         (vrp_visit_phi_node): Check vrp_var_may_overflow.
254
255 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
256
257         * stor-layout.c (layout_type): Remove duplicate code.
258
259 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
260
261         PR c/32191
262         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
263         before build_common_builtin_nodes ().
264
265 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
266
267         PR target/31733
268         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
269
270 2007-06-04  Jan Hubicka  <jh@suse.cz>
271
272         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
273         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
274         instead of _stat version.
275
276 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
277
278         PR tree-optimization/32194
279         * tree-predcom.c (determine_offset): Check that both references have
280         the same type.
281
282 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
283
284         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
285         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
286         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
287         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
288         Add argument to iterate_fix_dominators call.
289         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
290         * gcse.c (hoist_code): Change domby to vector.
291         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
292         Add argument to iterate_fix_dominators call.
293         * loop-doloop.c (doloop_modify): Changed recount_dominator to
294         recompute_dominator.
295         * lambda-code.c (perfect_nestify): Ditto.
296         * cfgloopanal.c: Include graphds.h.
297         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
298         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
299         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
300         add_edge call.
301         * graphds.c: New file.
302         * graphds.h: New file.
303         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
304         (get_dominated_by, get_dominated_by_region): Change return type to
305         vector.
306         (verify_dominators): Recompute all dominators and compare the results.
307         (recount_dominator): Renamed to ...
308         (recompute_dominator): ... this.  Do not check that the block is
309         dominated by entry.
310         (iterate_fix_dominators): Reimplemented.
311         (prune_bbs_to_update_dominators, root_of_dom_tree,
312         determine_dominators_for_sons): New functions.
313         * et-forest.c (et_root): New function.
314         * et-forest.h (et_root): Declare.
315         * Makefile.in (graphds.o): Add.
316         (cfgloopanal.o): Add graphds.h dependency.
317         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
318         * basic-block.h (get_dominated_by, get_dominated_by_region,
319         iterate_fix_dominators): Declaration changed.
320         (recount_dominator): Renamed to ...
321         (recompute_dominator): ... this.
322         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
323         (thread_through_all_blocks): Do not free dominance info.
324
325 2007-06-03  Andreas Schwab  <schwab@suse.de>
326
327         * config/m68k/m68k.c (override_options): Don't override
328         REAL_MODE_FORMAT.
329         * config/m68k/m68k-modes.def (SF, DF): Define to use
330         motorola_single_format and motorola_double_format, resp.
331         * real.c (motorola_single_format): Renamed from
332         coldfire_single_format.
333         (motorola_double_format): Renamed from coldfire_double_format.
334         (encode_ieee_extended): Generate a proper canonical NaN image
335         respecting canonical_nan_lsbs_set.
336         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
337         true.
338         * real.h: Adjust declarations.
339
340 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
341
342         PR target/32163
343         * config/sh/sh.md (symGOT_load): Don't schedule insns when
344         the symbol is generated with the stack protector.
345
346 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
347
348         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
349         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
350         "interrupt".
351         * doc/extend.texi (interrupt): Mention m68k.
352
353 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
354
355         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
356         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
357         (ix86_expand_sse_pcmpestr): Do not check operands for
358         "register_operand", when insn operand predicate is "register_operand".
359         (ix86_expand_sse_pcmpistr): Ditto.
360
361 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
362             Uros Bizjak  <ubizjak@gmail.com>
363
364         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
365         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
366         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
367         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
368         * config/i386/constraints.md ("z"): New register constraint
369         for members of SSE_FIRST_REG class.
370         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
371         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
372         SSE_FIRST_REG class.
373         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
374         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
375         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
376         (IX86_BUILTIN_PCMPESTRM128): Likewise.
377         (IX86_BUILTIN_PCMPESTRA128): Likewise.
378         (IX86_BUILTIN_PCMPESTRC128): Likewise.
379         (IX86_BUILTIN_PCMPESTRO128): Likewise.
380         (IX86_BUILTIN_PCMPESTRS128): Likewise.
381         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
382         (IX86_BUILTIN_PCMPISTRI128): Likewise.
383         (IX86_BUILTIN_PCMPISTRM128): Likewise.
384         (IX86_BUILTIN_PCMPISTRA128): Likewise.
385         (IX86_BUILTIN_PCMPISTRC128): Likewise.
386         (IX86_BUILTIN_PCMPISTRO128): Likewise.
387         (IX86_BUILTIN_PCMPISTRS128): Likewise.
388         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
389         (struct builtin_description): Change "flag" field to unsigned.
390         (bdesc_pcmpestr): New builtin description table.
391         (bdesc_pcmpistr): Likewise.
392         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
393         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
394         Initialize pcmp[ei]str[im] insns for SSE4.2.
395         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
396         (ix86_expand_sse_pcmpistr): Likewise.
397         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
398         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
399         (UNSPEC_PCMPISTR): Likewise.
400         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
401         (sse4_2_pcmpestri):New isns pattern.
402         (sse4_2_pcmpestrm): Likewise.
403         (sse4_2_pcmpestr_cconly): Likewise.
404         (sse4_2_pcmpistr): New insn patern and splitter.
405         (sse4_2_pcmpistri):New isns pattern.
406         (sse4_2_pcmpistrm): Likewise.
407         (sse4_2_pcmpistr_cconly): Likewise.
408         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
409         in SSE4.2.
410
411 2007-06-01  David Daney  <ddaney@avtrex.com>
412
413         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
414         LOADGP_ABSOLUTE and not binds_local_p.
415         
416 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
417
418         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
419
420 2007-06-01  Ian Lance Taylor  <iant@google.com>
421
422         * tree-vrp.c (compare_name_with_value): Always set
423         used_strict_overflow if we get a result from the variable itself.
424
425 2007-06-01  Ian Lance Taylor  <iant@google.com>
426
427         PR rtl-optimization/31455
428         * lower-subreg.c (find_decomposable_subregs): Don't decompose
429         subregs which have a cast between modes which are not tieable.
430
431 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
432
433         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
434         breaks after return statements.
435
436 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
437
438         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
439         only after no_new_pseudos.
440
441 2007-05-31  Eric Christopher  <echristo@apple.com>
442
443         * expr.c (convert_move): Assert that we don't have a BLKmode
444         operand.
445         (store_expr): Handle BLKmode moves by calling emit_block_move.
446
447 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
448
449         * c-typeck.c (build_indirect_ref): Include type in error message.
450         (build_binary_op): Pass types to binary_op_error.
451         * c-common.c (binary_op_error): Take two type arguments, print out
452         types with error.
453         * c-common.h (binary_op_error): Update prototype.
454
455 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
456
457         * config/i386/i386.c: Correct coments on -mno-sse4.
458
459 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
460
461         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
462         (x86_64-*-*): Likewise.
463         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
464         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
465         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
466         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
467         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
468         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
469         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
470         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
471         (OPTION_MASK_ISA_SSE4): Likewise.
472         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
473         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
474         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
475         (override_options): Support SSE4.2.
476         (ix86_build_const_vector): Support SImode and DImode.
477         (ix86_build_signbit_mask): Likewise.
478         (ix86_expand_int_vcond): Support V2DImode.
479         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
480         (IX86_BUILTIN_CRC32HI): Likewise.
481         (IX86_BUILTIN_CRC32SI): Likewise.
482         (IX86_BUILTIN_CRC32DI): Likewise.
483         (IX86_BUILTIN_PCMPGTQ): Likewise.
484         (bdesc_crc32): Likewise.
485         (bdesc_sse_3arg): Likewise.
486         (ix86_expand_crc32): Likewise.
487         (ix86_init_mmx_sse_builtins): Support SSE4.2.
488         (ix86_expand_builtin): Likewise.
489         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
490         __SSE4_2__ for -msse4.2.
491         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
492         (CRC32MODE): Likewise.
493         (crc32modesuffix): Likewise.
494         (crc32modeconstraint): Likewise.
495         (sse4_2_crc32<mode>): Likewise.
496         (sse4_2_crc32di): Likewise.
497         * config/i386/i386.opt (msse4.2): New for SSE4.2.
498         (msse4): Likewise.
499         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
500         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
501         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
502         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
503         (vcondu<mode>): Likewise.
504         * doc/extend.texi: Document SSE4.2 built-in functions.
505         * doc/invoke.texi: Document -msse4.2/-msse4.
506
507 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
508
509         PR tree-optimization/32160
510         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
511         variable as gimple reg.
512         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
513
514 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
515
516         * gcc.c (main): Don't consider linker options when issuing the
517         warning about a linker input file not being used.
518
519 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
520
521         * tree-vrp.c (compare_names): Initialize sop.
522
523 2007-05-30  Dirk Mueller  <dmueller@suse.de>
524
525         * cgraphunit.c (cgraph_analyze_function): Remove
526         computation of inline parameters.
527
528 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
529
530         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
531
532 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
533
534         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
535         Add vx-common.h.  Include vxworks.h between vx-common.h and
536         arm/vxworks.h.
537         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
538         redefining.
539         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
540         (TARGET_ASM_DESTRUCTOR): Likewise.
541         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
542         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
543         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
544         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
545         (VXWORKS_ENDIAN_SPEC): Define.
546         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
547         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
548         VXWORKS_* equivalents.
549         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
550         (ASM_FILE_START): Delete.
551         (TARGET_VERSION): Reformat.
552         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
553         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
554         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
555         (FPBIT, DPBIT): Define.
556         (fp-bit.c, dp-bit.c): New rules.
557         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
558         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
559         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
560         * config/arm/arm.h: Include vxworks-dummy.h.
561         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
562         Mark with ATTRIBUTE_UNUSED.
563         (arm_override_options): Do not allow VxWorks RTP PIC to be used
564         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
565         make it incompatible with -msingle-pic-base.
566         (arm_function_ok_for_sibcall): Return false for calls that might
567         go through a VxWorks PIC PLT entry.
568         (require_pic_register): New function, split out from...
569         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
570         for VxWorks RTPs.
571         (arm_load_pic_register): Handle the VxWorks RTP initialization
572         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
573         (arm_emit_call_insn): New function.
574         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
575         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
576         (pic_offset_arm): New pattern.
577         (call, call_value): Use arm_emit_call_insn.
578         (call_internal, call_value_internal): New expanders.
579         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
580         VxWorks unless __PIC__.
581
582 2007-05-30  Eric Christopher  <echristo@gmail.com>
583
584         * genrecog.c: Include regs.h in generated file.
585         * genemit.c: Ditto. Fix up formatting.
586         * config/mn10300/constraints.md: New.
587         * config/mn10300/mn10300.md: Include.
588         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
589         Fix up for removed macro.
590         * config/mn10300/predicates.md (call_address_operand):  Ditto.
591         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
592         (CONST_OK_FOR_I): Ditto.
593         (CONST_OK_FOR_J): Ditto.
594         (CONST_OK_FOR_K): Ditto.
595         (CONST_OK_FOR_L): Ditto.
596         (CONST_OK_FOR_M): Ditto.
597         (CONST_OK_FOR_N): Ditto.
598         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
599         (OK_FOR_Q): Ditto.
600         (OK_FOR_R): Ditto.
601         (OK_FOR_T): Ditto.
602         (EXTRA_CONSTRAINT): Ditto.
603
604 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
605
606         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
607         Remove defines.
608         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
609         OPTION_MASK_ISA_64BIT.
610         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
611
612 2007-05-30  Richard Guenther  <rguenther@suse.de>
613
614         PR middle-end/32152
615         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
616         types for comparison.
617         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
618         with original typed arguments.
619         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
620
621 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
622
623         PR tree-optimization/31769
624         * except.c (duplicate_eh_regions): Clear prev_try if
625         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
626
627 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
628
629         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
630         * tree-ssa-sink.c (statement_sink_location): Return basic block and
631         bsi of the location where statements should be inserted.
632         (sink_code_in_bb): Take bsi from statement_sink_location.
633         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
634         instead of bsi_start.
635         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
636         bsi_insert_after.
637         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
638         (bsi_move_before): Document inconsistency with bsi_move_after.
639         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
640
641 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
642
643         * config/i386/i386.h (TARGET_ABM): New define.
644         (TARGET_POPCNT): Ditto.
645         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
646         New temporary defines to redefine from OPTION_ISA_* defines.
647         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
648         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
649         (ix86_isa_flags): New extern int declaration.
650         (TARGET_SUBTARGET_DEFAULT): New define.
651         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
652         (TARGET_SUBTARGET32_DEFAULT): Ditto.
653         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
654         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
655         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
656         * config/i386/darwin.h: Change TARGET_64BIT define to
657         OPTION_ISA_64BIT.
658
659         * config/i386/i386.opt (m3dnowa): Define as undocumented option
660         using existing "ix86_isa_flags" varible.
661         (m32, m64): Use existing "ix86_isa_flags" variable.
662         (mmmx, m3dnow): Ditto.
663         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
664         (mabm): Define as non-negative option using "x86_abm" variable.
665         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
666
667         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
668         Rewrite feature test bitmap.
669         (ix86_isa_flags): New initialized global int varible.
670         (ix86_isa_flags_explicit): New static int variable.
671         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
672         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
673         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
674         target_flags_explicit.
675         (override_options): Remove "target_enable" and "target_disable" fields
676         from "struct ptt". Update processor_target_table accordingly. Remove
677         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
678         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
679         "target_flags" and "ix86_isa_flags_explicit" instead of
680         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
681         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
682         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
683         to true when either of PTA_POPCNT or PTA_ABM is set in
684         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
685         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
686         processor_alias_table flags entry.  Remove handling of
687         "target_enable" and "target_disable" fields of processor_target_table.
688         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
689         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
690         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
691         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
692         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
693         "target_flags".
694         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
695
696 2007-05-29  David Daney  <ddaney@avtrex.com>
697
698         PR gcc/31975
699         * config/mips/mips.c (mips_output_mi_thunk): Emit
700         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
701
702 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
703         * config/i386/i386.c (ix86_function_regparm): Added checking of
704         ix86_force_align_arg_pointer to determine the number of
705         register parameters.
706
707 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
708
709         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
710         (SET_DR_MISALIGNMENT): New.
711         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
712         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
713         Use SET_DR_MISALIGNMENT.
714         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
715         pointer.
716         * tree-data-ref.c (create_data_ref, compute_all_dependences,
717         find_loop_nest): Export.
718         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
719         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
720         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
721         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
722         New macros.
723         (struct mem_ref): Add field reuse_distance.
724         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
725         Initialize reuse_distance field.
726         (issue_prefetch_ref): Select temporality of prefetch according to
727         reuse_distance.
728         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
729         self_reuse_distance, determine_loop_nest_reuse): New functions.
730         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
731         (tree_ssa_prefetch_arrays): Dump L2 cache size.
732         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
733         dependency.
734
735 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
736
737         * tree-ssa-alias.c: Add aliasing overview.
738
739 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
740             Danny Smith  <dannysmith@users.sourceforge.net>
741
742         PR target/29498
743         * config/i386/t-crtfm: Compile crtfastmath.o with
744         -minline-all-stringops.
745         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
746         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
747
748 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
749
750         * doc/md.texi: Document constraints on HP PA-RISC.
751
752         * pa/constraints.md: New file.
753         * pa.md: Include constraints.md.
754         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
755         (integer_store_memory_operand, ldil_cint_p): New functions.
756         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
757         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
758         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
759         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
760         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
761
762 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
763
764         PR c/31339
765         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
766         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
767         case POSTDECREMENT_EXPR>): Return the error_mark_node
768         if either the real or imaginary parts would an
769         error_mark_node.
770
771 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
772
773         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
774         name when we remove it from a call.
775
776 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
777
778         * targhooks.c (default_narrow_bitfield): Remove.
779         * targhooks.h: Remove the prototype for
780         default_narrow_bitfield.
781
782         * langhooks-def.h: Remove the prototype for
783         hook_get_alias_set_0.
784         * langhooks.c (hook_get_alias_set_0): Remove.
785
786         * global.c (EXECUTE_IF_CONFLICT): Remove.
787
788 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
789
790         PR tree-opt/32100
791         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
792         return true when truth_value_p is true and the type
793         is of signed:1.
794
795 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
796
797         * doc/install.texi (Prerequisites): We no longer require Autoconf
798         2.13 for the top-level.
799
800 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
801
802         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
803         memory access via x86_expand_vector_move_misalign() only for
804         TImode values on 32-bit targets.
805
806 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
807
808         * matrix-reorg.c: New file. Implement matrix flattening and
809         transposing optimization.
810         * tree-pass.h: Add matrix reorg pass.
811         * common.opt: Add fipa-mreorg flag.
812         * Makefile.in: Add matrix-reorg.c.
813         * passes.c: Add matrix reorg pass.
814         * varpool.c (add_new_static_var): New function.
815         * cgraph.h (add_new_static_var): Declare.
816
817 2007-05-27  Eric Christopher  <echristo@apple.com>
818
819         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
820         sp_offset depending on stack size. Save r12 depending
821         on registers we're saving later.
822         (rs6000_emit_epilogue): Update sp_offset depending only
823         on stack size.
824
825 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
826
827         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
828         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
829         * ifcvt.c (if_convert): Ditto.
830         * tree-ssa-threadupdate.c (thread_block): Ditto.
831         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
832         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
833         verify_loop_closed_ssa): Check number_of_loops instead of
834         current_loops.
835         * predict.c (tree_estimate_probability): Ditto.
836         * tree-if-conv.c (main_tree_if_conversion): Ditto.
837         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
838         * modulo-sched.c (sms_schedule): Ditto.
839         * tree-scalar-evolution.c (scev_const_prop): Ditto.
840         (scev_finalize): Do not do anything if scev analysis was not
841         initialized.
842         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
843         current_loops == NULL.
844         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
845         * loop-init.c (loop_optimizer_init): Do not free current_loops when
846         there are no loops.
847         (loop_optimizer_finalize): Assert that loops were analyzed.
848         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
849         rtl_doloop): Check number_of_loops instead of current_loops.
850         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
851         current_loops == NULL.
852         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
853         gate_tree_vectorize tree_linear_transform, check_data_deps,
854         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
855         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
856         Check number_of_loops instead of current_loops.
857         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
858         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
859         free loops if available.
860         (execute_pre): Do not pass do_fre to fini_pre.
861
862 2007-05-27  Tobias Burnus  <burnus@net-b.de>
863
864         PR middle-end/32083
865         * real.c (mpfr_from_real): Fix sign of -Inf.
866
867 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
868
869         * tree-vect-transform.c (vectorizable_conversion): Initialize
870         tree_code variables to ERROR_MARK.
871         (vectorizable_type_demotion): Likewise.
872         (vectorizable_type_promotion): Likewise.
873
874 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
875
876         PR target/32065
877         * config/i386/i386.md (movti): Handle push operands via
878         ix86_expand_push().
879
880 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
881
882         * basic-block.h: Remove the prototype for merge_seq_blocks.
883         * cfgcleanup.c (merge_seq_blocks): Remove.
884
885         * tree-flow.h: Remove the prototype for is_aliased_with.
886         * tree-ssa-alias.c (is_aliased_with): Remove.
887
888 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
889
890         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
891
892         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
893
894         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
895         ix86_expand_sse4_unpack if SSE4.1 is enabled.
896         (vec_unpacks_hi_v16qi): Likewise.
897         (vec_unpacku_lo_v16qi): Likewise.
898         (vec_unpacks_lo_v16qi): Likewise.
899         (vec_unpacku_hi_v8hi): Likewise.
900         (vec_unpacks_hi_v8hi): Likewise.
901         (vec_unpacku_lo_v8hi): Likewise.
902         (vec_unpacks_lo_v8hi): Likewise.
903         (vec_unpacku_hi_v4si): Likewise.
904         (vec_unpacks_hi_v4si): Likewise.
905         (vec_unpacku_lo_v4si): Likewise.
906         (vec_unpacks_lo_v4si): Likewise.
907
908 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
909
910         * c-typeck.c, config/arm/arm.c, config/darwin.c,
911         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
912         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
913         follow spelling conventions in various
914         warning/error/diagnostic messages.
915
916         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
917         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
918         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
919         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
920         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
921         * doc/tm.texi: Follow spelling conventions.
922
923 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
924
925         PR tree-opt/32090
926         * tree-ssa-forwprop.c
927         (forward_propagate_addr_into_variable_array_index): Remove
928         the lhs argument.  Use the type of def_rhs instead of lhs.
929         (forward_propagate_addr_expr_1): Update use of
930         forward_propagate_addr_into_variable_array_index.
931
932 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
933             Nigel Stephens  <nigel@mips.com>
934
935         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
936         function attributes, "far" being an alias for "long_call".
937         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
938         (mips_near_type_p, mips_far_type_p): New.
939         (mips_comp_type_attributes): New function to check that attributes
940         attached to a function type are compatible.
941         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
942         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
943         to the target function of the thunk.
944         (mips_encode_section_info): Check for "near" and "far" function
945         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
946
947         * config/mips/predicates.md (const_call_insn_operand): Test only
948         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
949
950         * doc/extend.texi (Function Attributes): Document MIPS "near" and
951         "far" attributes.
952
953         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
954         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
955         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
956         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
957
958 2007-05-25  Eric Christopher  <echristo@apple.com>
959
960         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
961         to x86-darwin configurations.
962         * config/i386/t-darwin: Add softfp support.
963         * config/i386/t-darwin64: Ditto.
964         * config/i386/sfp-machine.h: If mach then don't use
965         aliasing, emit a stub to call.
966
967 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
968
969         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
970         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
971         tree-predcom.c, tree-ssa-alias-warnings.c,
972         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
973         comment typos.  Follow spelling conventions.
974         * doc/cpp.texi, doc/invoke.texi: Fix typos.
975
976 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
977
978         PR target/32065
979         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
980         constants into memory.  Expand unaligned memory references for
981         SSE modes via x86_expand_vector_move_misalign() function.
982
983 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
984
985         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
986         "memory" attribute for "sseishft" type insn without operands[2].
987
988 2007-05-25  Dirk Mueller  <dmueller@suse.de>
989             Marcus Meissner <meissner@suse.de>
990
991         * doc/extend.texi (alloc_size): New attribute.
992         * c-common.c (handle_alloc_size_attribute): New.
993         * tree-object-size.c (alloc_object_size): Use alloc_size
994         attribute, if available.
995
996 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
997
998         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
999         with MASK_SSE2.
1000         (__builtin_ia32_vec_ext_v2di): Likewise.
1001         (__builtin_ia32_vec_ext_v4si): Likewise.
1002         (__builtin_ia32_vec_ext_v8hi): Likewise.
1003         (__builtin_ia32_vec_ext_v16qi): Likewise.
1004         (__builtin_ia32_vec_set_v8hi): Likewise.
1005
1006 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
1007
1008         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
1009
1010 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
1011
1012         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
1013         (arm_is_longcall_p): Rename to...
1014         (arm_is_long_call_p): ...this.  Take a single tree argument and
1015         return a bool.
1016         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
1017         (CUMULATIVE_ARGS): Remove call_cookie.
1018         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
1019         (ENCODED_LONG_CALL_ATTR_P): Delete.
1020         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
1021         LONG_CALL_FLAG_CHAR cases.
1022         (ARM_DECLARE_FUNCTION_SIZE): Delete.
1023         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
1024         ARM_DECLARE_FUNCTION_SIZE.
1025         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
1026         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
1027         (arm_encode_call_attribute, current_file_function_operand): Delete.
1028         (arm_function_in_section_p): New function.
1029         (arm_is_longcall_p): Rename to...
1030         (arm_is_long_call_p): ...this.  Take the target function as a single
1031         argument and return a bool.  Do not rely on call cookies.  Check
1032         whether the target symbol is in the same section as the current
1033         function, not just the same compilation unit.
1034         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
1035         (arm_encode_section_info): Don't encode a call type.
1036         * config/arm/arm.md (call, call_value): Update calls to
1037         arm_is_long(_)call_p.  Simplify logic.
1038         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
1039         Update calls to arm_is_long(_)call_p.
1040
1041 2007-05-25  Richard Guenther  <rguenther@suse.de>
1042
1043         PR tree-optimization/31982
1044         * tree-ssa-forwprop.c
1045         (forward_propagate_addr_into_variable_array_index): Handle arrays
1046         with element size one.
1047
1048 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1049
1050         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
1051         (umulsi3_highpart): Likewise.
1052
1053 2007-05-24  Ian Lance Taylor  <iant@google.com>
1054
1055         PR rtl-optimization/32069
1056         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
1057         is NULL.
1058
1059 2007-05-24  Ollie Wild  <aaw@google.com>
1060
1061         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
1062         description.
1063
1064 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1065
1066         * postreload-gcse.c (reg_changed_after_insn_p): New function.
1067         (oprs_unchanged_p): Use it to check all registers in a REG.
1068         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
1069         (reg_set_between_after_reload_p): Delete.
1070         (reg_used_between_after_reload_p): Likewise.
1071         (reg_set_or_used_since_bb_start): Likewise.
1072         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
1073         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
1074         Use reg_set_between_p instead of reg_set_between_after_reload_p.
1075         * rtlanal.c (reg_set_p): Check whether REG overlaps
1076         regs_invalidated_by_call, rather than just checking the
1077         membership of REGNO (REG).
1078
1079 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1080
1081         * doc/passes.texi: Document predictive commoning.
1082         * doc/invoke.texi (-fpredictive-commoning): Document.
1083         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
1084         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
1085         adding indices to the generated name.
1086         (schedule_sm): Pass 0 to get_lsm_tmp_name.
1087         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
1088         * tree-pretty-print.c (op_symbol_1): Renamed to ...
1089         (op_symbol_code): ... and exported.
1090         (dump_omp_clause, op_symbol): Use op_symbol_code
1091         instead of op_symbol_1.
1092         * tree-pass.h (pass_predcom): Declare.
1093         * timevar.def (TV_PREDCOM): New timevar.
1094         * tree-ssa-loop.c (run_tree_predictive_commoning,
1095         gate_tree_predictive_commoning, pass_predcom): New.
1096         * tree-data-ref.c (find_data_references_in_loop): Find the
1097         references in dominance order.
1098         (canonicalize_base_object_address): Ensure that the result has
1099         pointer type.
1100         (dr_analyze_innermost): Export.
1101         (create_data_ref): Code to fail for references with invariant
1102         address moved ...
1103         (find_data_references_in_stmt): ... here.
1104         * tree-data-ref.h (dr_analyze_innermost): Declare.
1105         * tree-affine.c: Include tree-gimple.h and hashtab.h.
1106         (aff_combination_find_elt, name_expansion_hash,
1107         name_expansion_eq, tree_to_aff_combination_expand,
1108         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
1109         New functions.
1110         * tree-affine.h (aff_combination_constant_multiple_p,
1111         tree_to_aff_combination_expand): Declare.
1112         * tree-predcom.c: New file.
1113         * common.opt (fpredictive-commoning): New option.
1114         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
1115         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
1116         * Makefile.in (tree-predcom.o): Add.
1117         (tree-affine.o): Add TREE_GIMPLE_H dependency.
1118         * passes.c (init_optimization_passes):  Add dceloop after
1119         copy propagation in loop optimizer.  Add predictive commoning
1120         to loop optimizer passes.
1121
1122 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1123
1124         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
1125         default hook.
1126
1127 2007-05-24  Jan Hubicka  <jh@suse.cz>
1128
1129         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
1130         statistics.
1131         (genheader): Include statistics.h.
1132
1133         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
1134         notes are gone.
1135         * print-rtl.c (flag_dump_unnumbered): Update comments.
1136         (print_rtl): Fix my previous change.
1137         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
1138         specific data.
1139
1140 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1141
1142         PR middle-end/32018
1143         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
1144         set_loop_copy.
1145         (thread_through_all_blocks): Call initialize_original_copy_tables
1146         and free_original_copy_tables.
1147         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
1148         Use set_loop_copy.
1149         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
1150         * cfghooks.c (duplicate_block): Use get_loop_copy.
1151         * cfg.c: Include cfgloop.h.
1152         (loop_copy): New hash table.
1153         (initialize_original_copy_tables): Initialize loop_copy table.
1154         (free_original_copy_tables): Free loop_copy table.
1155         (copy_original_table_clear, copy_original_table_set,
1156         set_loop_copy, get_loop_copy): New functions.
1157         (set_bb_original, set_bb_copy): Use copy_original_table_set.
1158         * cfgloop.h (struct loop): Remove copy field.
1159         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
1160         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
1161
1162 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1163
1164         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
1165         -msse/-msse2/-msse3.
1166
1167 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1168
1169         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
1170         __builtin_ia32_vec_set_v2di with MASK_64BIT.
1171
1172 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
1173
1174         PR target/27067
1175         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
1176         * targhooks.h (default_mangle_decl_assembler_name): Declare
1177         default hook.
1178         * targhooks.c (default_mangle_decl_assembler_name): Define
1179         default hook.
1180         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
1181         default hook.
1182         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
1183         * langhooks.c (lhd_set_decl_assembler_name): Call
1184         targetm.mangle_decl_assembler_name for names with global scope.
1185
1186         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
1187         default.
1188         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
1189         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
1190         Declare.
1191         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
1192         New. Factored out of i386_pe_encode_section_info.
1193         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
1194         Move check for prior decoration of stdcall
1195         symbols to i386_pe_encode_section_info.
1196         (i386_pe_encode_section_info): Adjust call to
1197         gen_stdcall_or_fastcall_suffix.  Use
1198         i386_pe_maybe_mangle_decl_assembler_name, if needed.
1199         (i386_pe_mangle_decl_assembler_name): New. Wrap
1200         i386_pe_maybe_mangle_decl_assembler_name.
1201
1202 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
1203
1204         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
1205         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
1206         * langhooks.c (get_signed_or_unsigned_type): Don't check for
1207         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
1208         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
1209         TYPE_UNSIGNED.
1210
1211 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
1212             Nigel Stephens  <nigel@mips.com>
1213             Richard Sandiford  <richard@codesourcery.com>
1214
1215         Fix up MIPS16 hard float and add support for complex.
1216
1217         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
1218         (TARGET_SOFT_FLOAT_ABI): New.
1219         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
1220         __mips_soft_float to reflect the ABI in use, not whether the
1221         FPU is directly accessible (e.g., in MIPS16 mode).
1222         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
1223         (UNITS_PER_FPVALUE): Likewise.
1224
1225         * config/mips/mips.c (mips_expand_call): Remove redundant
1226         TARGET_MIPS16 check.
1227         (mips_arg_regno): New.
1228         (function_arg_advance): When setting bits in cum->fp_code for
1229         MIPS16, don't subtract 1 from cum->arg_number, since it is now
1230         zero-based.
1231         (function_arg): Use mips_arg_regno.
1232         (mips_return_mode_in_fpr_p): New.
1233         (mips16_call_stub_mode_suffix): New.
1234         (mips16_cfun_returns_in_fpr_p): New.
1235         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
1236         (mips_output_function_prologue): Test mips16_hard_float, not
1237         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
1238         (mips_expand_epilogue): Call MIPS16 helper routines to copy
1239         return value into a floating-point register.
1240         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
1241         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
1242         (mips16_fp_args): Handle MIPS32r2 ISA which supports
1243         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
1244         word of double arguments from or to the high bits of 64-bit
1245         floating point registers.
1246         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
1247         (mips16_fpret_double): New helper function.
1248         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
1249         support for complex modes.  Fill in DECL_RESULT for stubdecl.
1250         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
1251
1252         * config/mips/mips16.S
1253         (RET, ARG1, ARG2): New.
1254         (MERGE_GPRf, MERGE_GPRt): New.
1255         (DELAYt, DELAYf): New.
1256         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
1257         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
1258         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
1259         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
1260         (SFOP): Renamed to...
1261         (OPSF3): This, and macro-ified.  Updated all uses.
1262         (SFOP2): Renamed to...
1263         (OPSF2): This, and macro-ified.  Updated all uses.
1264         (SFCMP): Renamed to...
1265         (CMPSF): This, and macro-ified.  Updated all uses.
1266         (SFREVCMP): Renamed to...
1267         (REVCMPSF): This, and macro-ified.  Updated all uses.
1268         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
1269         (LDDBL1, LDDBL2, RETDBL): Deleted.
1270         (DFOP): Renamed to...
1271         (OPDF3): This, and macro-ified.  Updated all uses.
1272         (DFOP2): Renamed to...
1273         (OPDF2): This, and macro-ified.  Updated all uses.
1274         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
1275         (DFCMP): Renamed to...
1276         (CMPDF): This, and macro-ified.  Updated all uses.
1277         (DFREVCMP): Renamed to...
1278         (REVCMPDF): This, and macro-ified.  Updated all uses.
1279         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
1280         (RET_FUNCTION): New.
1281         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
1282         (__mips16_ret_sc, __mips16_ret_dc): New.
1283         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
1284         STUB_ARGS_6, STUB_ARGS_10): New.
1285         (CALL_STUB_NO_RET): New.
1286         (__mips16_call_stub_1): Macro-ified.
1287         (__mips16_call_stub_5): Macro-ified.
1288         (__mips16_call_stub_2): Macro-ified.
1289         (__mips16_call_stub_6): Macro-ified.
1290         (__mips16_call_stub_9): Macro-ified.
1291         (__mips16_call_stub_10): Macro-ified.
1292         (CALL_STUB_RET): New.
1293         (__mips16_call_stub_sf_0): Macro-ified.
1294         (__mips16_call_stub_sf_1): Macro-ified.
1295         (__mips16_call_stub_sf_5): Macro-ified.
1296         (__mips16_call_stub_sf_2): Macro-ified.
1297         (__mips16_call_stub_sf_6): Macro-ified.
1298         (__mips16_call_stub_sf_9): Macro-ified.
1299         (__mips16_call_stub_sf_10): Macro-ified.
1300         (__mips16_call_stub_df_0): Macro-ified.
1301         (__mips16_call_stub_df_1): Macro-ified.
1302         (__mips16_call_stub_df_5): Macro-ified.
1303         (__mips16_call_stub_df_2): Macro-ified.
1304         (__mips16_call_stub_df_6): Macro-ified.
1305         (__mips16_call_stub_df_9): Macro-ified.
1306         (__mips16_call_stub_df_10): Macro-ified.
1307         (__mips16_call_stub_sc_0): New.
1308         (__mips16_call_stub_sc_1): New.
1309         (__mips16_call_stub_sc_5): New.
1310         (__mips16_call_stub_sc_2): New.
1311         (__mips16_call_stub_sc_6): New.
1312         (__mips16_call_stub_sc_9): New.
1313         (__mips16_call_stub_sc_10): New.
1314         (__mips16_call_stub_dc_0): New.
1315         (__mips16_call_stub_dc_1): New.
1316         (__mips16_call_stub_dc_5): New.
1317         (__mips16_call_stub_dc_2): New.
1318         (__mips16_call_stub_dc_6): New.
1319         (__mips16_call_stub_dc_9): New.
1320         (__mips16_call_stub_dc_10): New.
1321
1322         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
1323         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
1324         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
1325
1326 2007-05-23  Ian Lance Taylor  <iant@google.com>
1327
1328         * doc/invoke.texi (Invoking GCC): Document that the order of the
1329         -l option matters.
1330
1331 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
1332
1333         PR target/30987
1334         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
1335         * config/score/predicate.md (const_pow2, const_npow2): Remove.
1336         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
1337         undef.
1338
1339         PR target/30474
1340         * config/score/score.c (score_print_operand): Make sure that only
1341         lower bits are used.
1342
1343 2007-05-22  Ian Lance Taylor  <iant@google.com>
1344
1345         * tree-vrp.c (avoid_overflow_infinity): New static function,
1346         broken out of set_value_range_to_value.
1347         (set_value_range_to_value): Call avoid_overflow_infinity.
1348         (extract_range_from_assert): Likewise.
1349
1350 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1351
1352         PR middle-end/31095
1353          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
1354         change the type before looking for a COMPOUND_EXPR.
1355
1356 2007-05-22  Ian Lance Taylor  <iant@google.com>
1357
1358         * lower-subreg.c (decompose_multiword_subregs): If we change an
1359         insn, call remove_retval_note on it.
1360
1361 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1362
1363         * regs.h (end_hard_regno): New function.
1364         (END_HARD_REGNO, END_REGNO): New macros.
1365         (add_to_hard_reg_set): New function.
1366         (remove_from_hard_reg_set): Likewise.
1367         (in_hard_reg_set_p): Likewise.
1368         (overlaps_hard_reg_set_p): Likewise.
1369         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
1370         (note_btr_set): Use END_HARD_REGNO.
1371         * caller-save.c (setup_save_areas): Use end_hard_regno.
1372         (mark_set_regs): Use END_HARD_REGNO.
1373         (add_stored_regs): Use end_hard_regno.
1374         (mark_referenced_regs): Use add_to_hard_reg_set.
1375         * combine.c (update_table_tick): Use END_REGNO.
1376         (record_value_for_reg): Likewise.
1377         (record_dead_and_set_regs): Likewise.
1378         (get_last_value_validate): Likewise.
1379         (use_crosses_set_p): Likewise.
1380         (reg_dead_at_p_1): Likewise.
1381         (reg_dead_at_p): Likewise.
1382         (mark_used_regs_combine): Use add_to_hard_reg_set.
1383         (move_deaths): Use END_HARD_REGNO.
1384         (reg_bitfield_target_p): Use end_hard_regno.
1385         (distribute_notes): Use END_HARD_REGNO.
1386         * cse.c (mention_regs): Use END_REGNO.
1387         (insert): Use add_to_hard_reg_set.
1388         (invalidate): Use END_HARD_REGNO.
1389         (invalidate_for_call): Likewise.
1390         (exp_equiv_p): Use END_REGNO.
1391         (cse_insn): Likewise.
1392         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
1393         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
1394         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
1395         * function.c (keep_stack_depressed): Use end_hard_regno.
1396         * global.c (global_alloc): Use end_hard_regno.
1397         (global_conflicts): Use add_to_hard_reg_set instead of
1398         mark_reg_live_nc.
1399         (find_reg): Likewise.
1400         (mark_reg_store): Likewise.
1401         (mark_reg_conflicts): Likewise.
1402         (mark_reg_death): Use remove_from_hard_reg_set.
1403         (mark_reg_live_nc): Delete.
1404         (set_preference): Use end_hard_regno.
1405         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
1406         remove_from_hard_reg_set.
1407         (post_mark_life): Use add_to_hard_reg_set.
1408         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
1409         (reg_becomes_live): Use add_to_hard_reg_set.
1410         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
1411         (peep2_find_free_register): Use add_to_hard_reg_set.
1412         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
1413         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
1414         * regrename.c (note_sets): Use add_to_hard_reg_set.
1415         (clear_dead_regs): Use remove_from_hard_reg_set.
1416         (regrename_optimize): Use add_to_hard_reg_set.
1417         (find_oldest_value_reg): Use in_hard_reg_set_p.
1418         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
1419         (hard_reg_set_here_p): Use end_hard_regno.
1420         (decompose): Likewise.
1421         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
1422         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
1423         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
1424         (mark_home_live): Use end_hard_regno.
1425         (spill_hard_reg): Likewise.
1426         (clear_reload_reg_in_use): Likewise.
1427         * reorg.c (delete_prior_computation): Use END_REGNO.
1428         * resource.c (update_live_status): Use END_HARD_REGNO.
1429         (mark_referenced_resources): Use add_to_hard_reg_set.
1430         (mark_set_resources): Likewise.
1431         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
1432         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
1433         (reg_overlap_mentioned_p): Likewise.
1434         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
1435         (covers_regno_no_parallel_p): Use END_REGNO.
1436         (find_regno_note): Likewise.
1437         (find_reg_fusage): Use END_HARD_REGNO.
1438         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
1439         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
1440
1441 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1442
1443         * mode-switching.c (reg_dies): Change type of second argument to
1444         "HARD_REG_SET *".
1445         (optimize_mode_switching): Update accordingly.
1446
1447 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
1448
1449         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
1450         in favor of...
1451         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
1452         (hard_reg_set_empty_p): ...these new functions.
1453         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
1454         GO_IF_HARD_REG_SUBSET.
1455         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
1456         instead of GO_IF_HARD_REG_EQUAL.
1457         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
1458         instead of GO_IF_HARD_REG_EQUAL.
1459         * global.c (find_reg): Use hard_reg_set_empty_p instead of
1460         GO_IF_HARD_REG_SUBSET.
1461         (modify_reg_pav): Use hard_reg_set_empty_p instead of
1462         GO_IF_HARD_REG_EQUAL.
1463         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
1464         of GO_IF_HARD_REG_SUBSET.
1465         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
1466         instead of GO_IF_HARD_REG_EQUAL.
1467         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
1468         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
1469         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
1470         of GO_IF_HARD_REG_SUBSET,
1471         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
1472         GO_IF_HARD_REG_SUBSET.
1473         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
1474         instead of GO_IF_HARD_REG_EQUAL.
1475         * config/sh/sh.c (push_regs, calc_live_regs): Use
1476         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
1477         (hard_regs_intersect_p): Delete.
1478
1479 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
1480
1481         * doc/sourcebuild.texi (Test Directives) Add dg-message.
1482
1483 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
1484             Richard Henderson  <rth@redhat.com>
1485
1486         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
1487         extra_headers.
1488         (x86_64-*-*): Likewise.
1489
1490         * i386/i386-modes.def (V2QI): New.
1491
1492         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
1493         SSE4A.
1494         (override_options): Support SSE4.1.
1495         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
1496         (IX86_BUILTIN_BLENDPS): Likewise.
1497         (IX86_BUILTIN_BLENDVPD): Likewise.
1498         (IX86_BUILTIN_BLENDVPS): Likewise.
1499         (IX86_BUILTIN_PBLENDVB128): Likewise.
1500         (IX86_BUILTIN_PBLENDW128): Likewise.
1501         (IX86_BUILTIN_DPPD): Likewise.
1502         (IX86_BUILTIN_DPPS): Likewise.
1503         (IX86_BUILTIN_INSERTPS128): Likewise.
1504         (IX86_BUILTIN_MOVNTDQA): Likewise.
1505         (IX86_BUILTIN_MPSADBW128): Likewise.
1506         (IX86_BUILTIN_PACKUSDW128): Likewise.
1507         (IX86_BUILTIN_PCMPEQQ): Likewise.
1508         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
1509         (IX86_BUILTIN_PMAXSB128): Likewise.
1510         (IX86_BUILTIN_PMAXSD128): Likewise.
1511         (IX86_BUILTIN_PMAXUD128): Likewise.
1512         (IX86_BUILTIN_PMAXUW128): Likewise.
1513         (IX86_BUILTIN_PMINSB128): Likewise.
1514         (IX86_BUILTIN_PMINSD128): Likewise.
1515         (IX86_BUILTIN_PMINUD128): Likewise.
1516         (IX86_BUILTIN_PMINUW128): Likewise.
1517         (IX86_BUILTIN_PMOVSXBW128): Likewise.
1518         (IX86_BUILTIN_PMOVSXBD128): Likewise.
1519         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
1520         (IX86_BUILTIN_PMOVSXWD128): Likewise.
1521         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
1522         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
1523         (IX86_BUILTIN_PMOVZXBW128): Likewise.
1524         (IX86_BUILTIN_PMOVZXBD128): Likewise.
1525         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
1526         (IX86_BUILTIN_PMOVZXWD128): Likewise.
1527         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
1528         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
1529         (IX86_BUILTIN_PMULDQ128): Likewise.
1530         (IX86_BUILTIN_PMULLD128): Likewise.
1531         (IX86_BUILTIN_ROUNDPD): Likewise.
1532         (IX86_BUILTIN_ROUNDPS): Likewise.
1533         (IX86_BUILTIN_ROUNDSD): Likewise.
1534         (IX86_BUILTIN_ROUNDSS): Likewise.
1535         (IX86_BUILTIN_PTESTZ): Likewise.
1536         (IX86_BUILTIN_PTESTC): Likewise.
1537         (IX86_BUILTIN_PTESTNZC): Likewise.
1538         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
1539         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
1540         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
1541         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
1542         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
1543         (bdesc_ptest): New.
1544         (bdesc_sse_3arg): Likewise.
1545         (bdesc_2arg): Likewise.
1546         (bdesc_1arg): Likewise.
1547         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
1548         with 3 args.
1549         (ix86_expand_sse_4_operands_builtin): New.
1550         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
1551         smaller than 8 bits as the 2nd arg.
1552         (ix86_expand_sse_ptest): New.
1553         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
1554         (ix86_expand_vector_set): Support SSE4.1.
1555         (ix86_expand_vector_extract): Likewise.
1556
1557         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1558         __SSE4_1__ for -msse4.1.
1559
1560         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
1561         (UNSPEC_INSERTPS): Likewise.
1562         (UNSPEC_DP): Likewise.
1563         (UNSPEC_MOVNTDQA): Likewise.
1564         (UNSPEC_MPSADBW): Likewise.
1565         (UNSPEC_PHMINPOSUW): Likewise.
1566         (UNSPEC_PTEST): Likewise.
1567         (UNSPEC_ROUNDP): Likewise.
1568         (UNSPEC_ROUNDS): Likewise.
1569
1570         * config/i386/i386.opt (msse4.1): New for SSE4.1.
1571
1572         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
1573         (const_pow2_1_to_32768_operand): Likewise.
1574
1575         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
1576         file.
1577
1578         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
1579         SSE4.1.
1580         (sse4_1_insertps): Likewise.
1581         (*sse4_1_extractps): Likewise.
1582         (sse4_1_ptest): Likewise.
1583         (sse4_1_mulv2siv2di3): Likewise.
1584         (*sse4_1_mulv4si3): Likewise.
1585         (*sse4_1_smax<mode>3): Likewise.
1586         (*sse4_1_umax<mode>3): Likewise.
1587         (*sse4_1_smin<mode>3): Likewise.
1588         (*sse4_1_umin<mode>3): Likewise.
1589         (sse4_1_eqv2di3): Likewise.
1590         (*sse4_1_pinsrb): Likewise.
1591         (*sse4_1_pinsrd): Likewise.
1592         (*sse4_1_pinsrq): Likewise.
1593         (*sse4_1_pextrb): Likewise.
1594         (*sse4_1_pextrb_memory): Likewise.
1595         (*sse4_1_pextrw_memory): Likewise.
1596         (*sse4_1_pextrq): Likewise.
1597         (sse4_1_blendpd): Likewise.
1598         (sse4_1_blendps): Likewise.
1599         (sse4_1_blendvpd): Likewise.
1600         (sse4_1_blendvps): Likewise.
1601         (sse4_1_dppd): Likewise.
1602         (sse4_1_dpps): Likewise.
1603         (sse4_1_movntdqa): Likewise.
1604         (sse4_1_mpsadbw): Likewise.
1605         (sse4_1_packusdw): Likewise.
1606         (sse4_1_pblendvb): Likewise.
1607         (sse4_1_pblendw): Likewise.
1608         (sse4_1_phminposuw): Likewise.
1609         (sse4_1_extendv8qiv8hi2): Likewise.
1610         (*sse4_1_extendv8qiv8hi2): Likewise.
1611         (sse4_1_extendv4qiv4si2): Likewise.
1612         (*sse4_1_extendv4qiv4si2): Likewise.
1613         (sse4_1_extendv2qiv2di2): Likewise.
1614         (*sse4_1_extendv2qiv2di2): Likewise.
1615         (sse4_1_extendv4hiv4si2): Likewise.
1616         (*sse4_1_extendv4hiv4si2): Likewise.
1617         (sse4_1_extendv2hiv2di2): Likewise.
1618         (*sse4_1_extendv2hiv2di2): Likewise.
1619         (sse4_1_extendv2siv2di2): Likewise.
1620         (*sse4_1_extendv2siv2di2): Likewise.
1621         (sse4_1_zero_extendv8qiv8hi2): Likewise.
1622         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
1623         (sse4_1_zero_extendv4qiv4si2): Likewise.
1624         (*sse4_1_zero_extendv4qiv4si2): Likewise.
1625         (sse4_1_zero_extendv2qiv2di2): Likewise.
1626         (*sse4_1_zero_extendv2qiv2di2): Likewise.
1627         (sse4_1_zero_extendv4hiv4si2): Likewise.
1628         (*sse4_1_zero_extendv4hiv4si2): Likewise.
1629         (sse4_1_zero_extendv2hiv2di2): Likewise.
1630         (*sse4_1_zero_extendv2hiv2di2): Likewise.
1631         (sse4_1_zero_extendv2siv2di2): Likewise.
1632         (*sse4_1_zero_extendv2siv2di2): Likewise.
1633         (sse4_1_roundpd): Likewise.
1634         (sse4_1_roundps): Likewise.
1635         (sse4_1_roundsd): Likewise.
1636         (sse4_1_roundss): Likewise.
1637         (mulv4si3): Don't expand for SSE4.1.
1638         (smax<mode>3): Likewise.
1639         (umaxv4si3): Likewise.
1640         (uminv16qi3): Likewise.
1641         (umin<mode>3): Likewise.
1642         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
1643
1644         * doc/extend.texi: Document SSE4.1 built-in functions.
1645
1646         * doc/invoke.texi: Document -msse4.1.
1647
1648 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
1649
1650         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
1651         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
1652         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
1653         (ASM_SPEC): Add asm_pcrel_spec.
1654         (EXTRA_SPECS): Add asm_pcrel_spec.
1655
1656 2007-05-21  David Daney  <ddaney@avtrex.com>
1657
1658         * doc/install.texi (Building a cross compiler): Add requirements
1659         for Java cross compiler.
1660
1661 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1662
1663         PR middle-end/31995
1664         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
1665         Add loopno argument.  Use evolution_function_is_invariant_rec_p
1666         instead of evolution_function_is_constant_p.
1667         Update calls to evolution_function_is_affine_multivariate_p.
1668         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
1669         Add loopno argument.
1670         * tree-scalar-evolution.c (gather_chrec_stats): Call
1671         evolution_function_is_affine_multivariate_p with a loop
1672         number of 0.
1673         * tree-data-ref.c (analyze_miv_subscript): Likewise.
1674         (analyze_overlapping_iterations): Likewise.
1675         (access_functions_are_affine_or_constant_p): Likewise.
1676         (build_classic_dist_vector_1): If the access functions
1677         are equal, don't do anything.
1678
1679 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
1680             Paolo Carlini  <pcarlini@suse.de>
1681             Uros Bizjak  <ubizjak@gmail.com>
1682
1683         * c-cppbuiltin.c (c_cpp_builtins): Define
1684         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
1685         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
1686         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
1687         * doc/cpp.texi ([Standard Predefined Macros]): Document.
1688
1689 2007-05-21  Mike Stump  <mrs@apple.com>
1690
1691         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
1692         handling as well.
1693         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
1694
1695 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
1696
1697         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
1698         implementation if __OPTIMIZE__ is not defined.
1699         (_mm_alignr_pi8): Ditto.
1700         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
1701         (_mm_inserti_si64): Ditto.
1702         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
1703         (_mm_slli_epi16): Ditto.
1704         (_mm_slli_epi32): Ditto.
1705         (_mm_slli_epi64): Ditto.
1706         (_mm_srai_epi16): Ditto.
1707         (_mm_srai_epi32): Ditto.
1708         (_mm_srli_si128): Ditto.
1709         (_mm_slli_si128): Ditto.
1710         (_mm_srli_epi16): Ditto.
1711         (_mm_srli_epi32): Ditto.
1712         (_mm_srli_epi64): Ditto.
1713         (_mm_extract_epi16): Ditto.
1714         (_mm_insert_epi16): Ditto.
1715         (_mm_shufflehi_epi16): Ditto.
1716         (_mm_shufflelo_epi16): Ditto.
1717         (_mm_shuffle_epi32): Ditto.
1718         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
1719         (_m_pextrw): Ditto.
1720         (_mm_insert_pi16): Ditto.
1721         (_m_pinsrw): Ditto.
1722         (_mm_shuffle_pi16): Ditto.
1723         (_m_pshufw): Ditto.
1724         (_mm_shufle_ps): Ditto.
1725         (_mm_prefetch): Ditto.
1726
1727 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
1728
1729         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
1730         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
1731         * real.c (encode_i370_single, decode_i370_single,
1732         encode_i370_double, decode_i370_double): Functions removed.
1733         (i370_single_format, i370_double_format): Initializations removed.
1734         (real_maxval, round_for_format, exact_real_truncate, significand_size):
1735         Consider the log2_b field to always be one.
1736         (ieee_single_format, mips_single_format, coldfire_single_format,
1737         ieee_double_format, mips_double_format, coldfire_double_format,
1738         ieee_extended_motorola_format, ieee_extended_intel_96_format,
1739         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
1740         ibm_extended_format, mips_extended_format, ieee_quad_format,
1741         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
1742         decimal_single_format, decimal_double_format, decimal_quad_format,
1743         c4x_single_format, c4x_extended_format, real_internal_format): Remove
1744         initialization of log2_b.
1745         * real.h (i370_single_format, i370_double_format): Declarations removed.
1746         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
1747         field to always be one.
1748
1749 2007-05-21  Andreas Schwab  <schwab@suse.de>
1750
1751         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
1752         NOTE_INSN_BASIC_BLOCK_P.
1753         (process_for_unwind_directive): Likewise.
1754
1755 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
1756
1757         * builtins.c (expand_builtin_setjmp_setup): Update comment.
1758         * function.h (struct function): Move va_list_gpr_size,
1759         va_list_fpr_size, function_frequency to front of bitfields.  Add
1760         calls_unwind_init.
1761         (current_function_calls_unwind_init): New.
1762         * except.c (expand_builtin_unwind_init): Set
1763         current_function_calls_unwind_init not
1764         current_function_has_nonlocal_label.
1765         * reload1.c (has_nonexceptional_receiver): New.
1766         (reload): Use it and current_function_calls_unwind_init to
1767         determine whether call-saved regs must be saved.
1768
1769 2007-05-20  Jan Hubicka  <jh@suse.cz>
1770
1771         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
1772         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1773         * ddg.c (create_ddg): LIkewise.
1774         * final.c (final): Remove hunk moving line numbernotes around since
1775         they are no longer present at this stage.
1776         (final_scan_insn): Use NOTE_KIND instead of
1777         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1778         (output_asm_label): Likewise.
1779         * reorg.c (dbr_schedule): Likewise.
1780         * haifa-sched.c (unlink_other_notes): Likewise.
1781         * mode-switching.c (optimize_mode_switching): Likewise.
1782         * graph.c (start_bb): Likewise.
1783         * rtl.def (NOTE): Update description.
1784         * jump.c (squeeze_notes): Delete.
1785         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
1786         NOTE_INSN_BASIC_BLOCK_P when possible.
1787         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
1788         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
1789         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1790         (dwarf2out_var_location): Likewise.
1791         * cfgbuild.c (make_edges): Likewise.
1792         (find_basic_blocks_1): Likewise.
1793         * function.c (reorder_blocks_1): Likewise.
1794         (epilogue_done): Likewise.
1795         (reposition_prologue_and_epilogue_notes): Likewise.
1796         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
1797         notes.
1798         (print_rtl): Likewise.
1799         (print_rtl_single): Likewise.
1800         * gcse.c (insert_insn_start_bb): Likewise.
1801         * alias.c (init_alias_analysis): Likewise.
1802         * calls.c (fixup_tail_calls): Likewise.
1803         * except.c (sjlj_emit_function_enter): Likewise.
1804         * emit-rtl.c (add_insn_after): Likeiwse.
1805         (emit_label_before): Likewise.
1806         (emit_label_after): Likewise.
1807         (emit_note_before, emit_note_after, emit_note): Update
1808         parameter to be enum insn_note; do not deal with source
1809         files.
1810         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
1811         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
1812         when possible.
1813         (merge_blocks_move_successor_nojumps): Simplify now when
1814         we don't have BLOCK notes.
1815         (try_optimize_cfg): Likewise.
1816         * cfglayout.c (skip_insns_after_block): Likewise.
1817         (record_effective_endpoints): Likewise.
1818         (duplicate_insn_chain): Likewise.
1819         * varasm.c (output_constant_pool_1): Likewise.
1820         * sched-deps.c (sched_analyze): Likewise.
1821         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
1822         Exterminate.
1823         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
1824         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
1825         (SET_INSN_DELETED): Simplify.
1826         (NOTE_LINE_NUMBER): Exterminate.
1827         (NOTE_LINE_KIND): New.
1828         (NOTE_INSN_BASIC_BLOCK_P): Update.
1829         (enum insn_note): Simplify.
1830         (GET_NOTE_INSN_NAME) Simplify.
1831         (emit_note_before, emit_note_after, emit_note): Update prototype.
1832         (squeeze_notes): Remove.
1833         * sched-int.h (NOTE_NOT_BB_P): Update.
1834         * resource.c (mark_target_live_regs): Update.
1835         * sched-rgn.c (debug_dependencies): Update.
1836         * sched-vis.c (print_insn): Update.
1837         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
1838         * config/i386/i386.c (ix86_output_function_epilogue): Update.
1839         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
1840         (TARGET_ADJUST_UNROLL_MAX): Likewise.
1841         (split_branches): Update.
1842         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
1843         4.0.0.
1844         (sh_adjust_unroll_max): Exterminate.
1845         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
1846         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
1847         (m68hc11_reorg): Likewise.
1848         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
1849         (emit_predicate_relation_info): Update.
1850         (process_for_unwind_directive): Update.
1851         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
1852         (output_call): Update.
1853         * config/pa/pa.c (output_lbranch): Update.
1854         (output_millicode_call): Update.
1855         (output_call): Update.
1856         (pa_combine_instructions): Update.
1857         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
1858         * config/bfin/bfin.c (gen_one_bundle): Update.
1859         * cfgrtl.c (can_delete_note_p): Update.
1860         (delete_insn): Update.
1861         (rtl_merge_blocks): Update.
1862         (commit_one_edge_insertion): Update.
1863         (rtl_verify_flow_info): Update.
1864         * stmt.c (expand_case): Do not call squeeze_notes.
1865
1866 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1867
1868         PR middle-end/7651
1869         PR c++/11856
1870         PR c/12963
1871         PR c/23587
1872         PR other/29694
1873         * c.opt (Wtype-limits): New.
1874         * doc/invoke.texi (Wtype-limits): Document it.
1875         (Wextra): Enabled by -Wextra.
1876         * c-opts.c (c_common_post_options): Enabled by -Wextra.
1877         * c-common.c (shorten_compare): Warn with Wtype-limits.
1878
1879 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
1880
1881         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
1882         inlined function, not as a macro.
1883         (_mm_alignr_pi8): Ditto.
1884         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
1885         (_mm_inserti_si64): Ditto.
1886         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
1887         (_mm_extract_epi16): Ditto.
1888         (_mm_insert_epi16): Ditto.
1889         (_mm_shufflehi_epi16): Ditto.
1890         (_mm_shufflelo_epi16): Ditto.
1891         (_mm_shuffle_epi32): Ditto.
1892         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
1893         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
1894         all functions.
1895         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
1896         float constant.
1897         (_m_to_float): Use C89 compatible assignment.
1898
1899 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
1900
1901         PR target/32007
1902         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
1903
1904 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1905
1906         PR middle-end/7651
1907         * doc/invoke.texi (Wreturn-type): Complete description.
1908         (Wextra): Delete item about return-type warning.
1909         * c-decl.c: Delete redundant Wextra warning.
1910
1911 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
1912
1913         PR target/31585
1914         * config/i386/pmmintrin.h: Do not include xmmintrin.h
1915         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
1916         inlined function, not as a macro.
1917         (_mm_prefetch): Ditto.
1918         (_m_pextrw): Ditto.
1919         (_mm_insert_pi16): Ditto.
1920         (_m_pinsrw): Ditto.
1921         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
1922         (_m_pshufw): Ditto. Add const to __N argument.
1923         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
1924         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
1925         (_mm_slli_epi32): Ditto.
1926         (_mm_srli_si128): Implement as always inlined function, not as a macro.
1927         Add __inline to function declaration.
1928         (_mm_slli_si128): Ditto.
1929
1930 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
1931
1932         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
1933         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
1934         New constants.
1935         (struct fenv): New structure.
1936         (FP_HANDLE_EXCEPTIONS): New define.
1937         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
1938         (_FP_DECL_EXP): New define.
1939         (FP_INIT_ROUNDMODE): New define.
1940         (FP_ROUNDMODE): New define.
1941
1942 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1943
1944         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
1945         (Wconversion): Update description.
1946         (Wconversion-sign): New.
1947         * c.opt (Wconversion-sign): New.
1948         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
1949         means disabled for C++. Otherwise, take the status of Wconversion.
1950         * c-common.c (conversion_warning): Warn with either Wconversion or
1951         Wconversion-sign.
1952         (warnings_for_convert_and_check): Conditions are already checked by
1953         conversion_warning.
1954         (convert_and_check): Don't check warnings if the conversion failed.
1955
1956 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
1957            Anatoly Sokolov <aesok@dol.ru>
1958
1959         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
1960         avr_epilogue_uses) : Add declaration.
1961         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
1962         * config/avr/constraints.md (R): New constraint.
1963         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
1964         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
1965         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
1966         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
1967         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
1968         call_prologue_saves, epilogue_restores, return_from_epilogue,
1969         return_from_main_epilogue, return_from_interrupt_epilogue,
1970         return_from_naked_epilogue, prologue, epilogue): New patterns.
1971         (jump): Handle symbol reference.
1972         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
1973         avr_output_function_prologue, avr_output_function_epilogue): Remove
1974         functions.
1975         (avr_init_machine_status, expand_prologue, expand_epilogue,
1976         avr_asm_function_end_prologue, avr_epilogue_uses,
1977         avr_asm_function_begin_epilogue): New functions.
1978         (prologue_size, epilogue_size, jump_tables_size): Remove global
1979         variables.
1980         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
1981         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
1982         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
1983         (avr_override_options): Initialise init_machine_status.
1984         (output_movhi): Handle all stack pointer loads.
1985         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
1986         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
1987         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
1988         (EPILOGUE_USES) Redefine.
1989         (machine_function) Declare.
1990
1991 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
1992
1993         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
1994         Use a single return statement.
1995
1996 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1997
1998         PR middle-end/30250
1999         * builtins.c (do_mpfr_lgamma_r): New.
2000         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
2001         * tree.h (CASE_FLT_FN_REENT): New.
2002
2003 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
2004
2005         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
2006         (output_die): Use 'unsigned long' with %x.
2007         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
2008         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
2009         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
2010
2011         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
2012
2013 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
2014
2015         PR target/31989
2016         PR target/31681
2017         PR target/31666
2018         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
2019         true if function has no argument.
2020
2021 2007-05-18  DJ Delorie  <dj@redhat.com>
2022
2023         * config/mips/mips.c (mips_offset_within_alignment_p): New.
2024         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
2025
2026 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2027
2028         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
2029         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
2030         count_trailing_zeros.
2031         (__i386__): Implement count_leading_zeros using __builtin_clz().
2032         Implement count_trailing_zeros usign __builtin_ctz().
2033
2034 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
2035
2036         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
2037
2038 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2039
2040         PR middle-end/31344
2041         * expr.c (emit_move_change_mode): Change mode of push operands here.
2042
2043 2007-05-17  Ian Lance Taylor  <iant@google.com>
2044
2045         PR tree-optimization/31953
2046         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
2047         Change all callers.
2048         (set_value_range_to_null): Call set_value_range_to_value.
2049         (extract_range_from_comparison): Likewise.
2050
2051 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2052
2053         * toplev.c (print_version): Output GMP/MPFR version info.
2054
2055         * builtins.c (CASE_MATHFN_REENT): New macro.
2056         (mathfn_built_in): Use it.
2057         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
2058         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
2059         BUILT_IN_LGAMMAL_R): New.
2060         * doc/extend.texi: Document new builtins.
2061
2062         PR middle-end/31796
2063         * builtins.c (do_mpfr_remquo): New.
2064         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
2065         (fold_builtin_3): Handle BUILT_IN_REMQUO.
2066
2067         PR middle-end/30251
2068         * builtins.c (fold_builtin_1): Handle y0, y1.
2069         (fold_builtin_2): Handle yn.
2070
2071         PR middle-end/30251
2072         * builtins.c (do_mpfr_bessel_n): New.
2073         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
2074         (fold_builtin_2): Handle BUILT_IN_JN.
2075
2076 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
2077
2078         PR target/31965
2079         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
2080         TYPE_PRECISION (intmax_type_node).
2081
2082 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
2083
2084         PR target/31850
2085         * reload.c (subst_reloads): Remove checking.
2086
2087 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2088
2089         PR rtl-optimization/31691
2090         * combine.c (simplify_set): Build a new src pattern instead of
2091         substituting its operands in the COMPARE case.
2092
2093 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2094
2095         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
2096         (execute_vrp): Preserve loops through jump threading.
2097         * tree-ssa-threadupdate.c (thread_single_edge,
2098         dbds_continue_enumeration_p, determine_bb_domination_status,
2099         thread_through_loop_header): New functions.
2100         (create_edge_and_update_destination_phis,
2101         create_edge_and_update_destination_phis): Set loops for the new blocks.
2102         (prune_undesirable_thread_requests): Removed.
2103         (redirect_edges): Do not pretend that redirect_edge_and_branch can
2104         create new blocks.
2105         (thread_block): Do not call prune_undesirable_thread_requests.
2106         Update loops.
2107         (mark_threaded_blocks): Select edges to thread here.
2108         (thread_through_all_blocks): Take may_peel_loop_headers argument.
2109         Thread edges through loop headers independently.
2110         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
2111         * tree-pass.h (TODO_mark_first_instance): New.
2112         (first_pass_instance): Declare.
2113         * cfghooks.c (duplicate_block): Put the block to the original loop
2114         if copy is not specified.
2115         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
2116         jump threading.  Pass may_peel_loop_headers to
2117         thread_through_all_blocks according to first_pass_instance.
2118         * cfgloop.h (create_preheader): Declare.
2119         * tree-flow.h (thread_through_all_blocks): Declaration changed.
2120         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
2121         * passes.c (first_pass_instance): New variable.
2122         (next_pass_1): Set TODO_mark_first_instance.
2123         (execute_todo): Set first_pass_instance.
2124
2125 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
2126
2127         PR tree-optimization/24659
2128         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
2129         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
2130         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
2131         OTI_vec_pack_ufix_trunc.
2132         (vec_unpacks_float_hi_optab): Define new macro.
2133         (vec_unpacks_float_lo_optab): Ditto.
2134         (vec_unpacku_float_hi_optab): Ditto.
2135         (vec_unpacku_float_lo_optab): Ditto.
2136         (vec_pack_sfix_trunc_optab): Ditto.
2137         (vec_pack_ufix_trunc_optab): Ditto.
2138         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
2139         and vec_pack_[s|u]fix_trunc_optab using
2140         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
2141         * tree-vectorizer.c (supportable_widening_operation): Handle
2142         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
2143         (supportable_narrowing_operation): New function.
2144         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
2145         * tree-vect-transform.c (vectorizable_conversion): Handle
2146         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
2147         (vect_gen_widened_results_half): Move before vectorizable_conversion.
2148         (vectorizable_type_demotion): Call supportable_narrowing_operation()
2149         to check for target support.
2150         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
2151         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
2152         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
2153         for VEC_PACK_FIX_TRUNC_EXPR.
2154         (expand_binop): Special case mode of the result for
2155         vec_pack_[u|s]fix_trunc_optab.
2156         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
2157         vec_pack_[u|s]fix_trunc_optab.
2158
2159         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
2160         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
2161         * tree-pretty-print.c (dump_generic_node): Handle
2162         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
2163         VEC_PACK_FIX_TRUNC_EXPR.
2164         (op_prio): Ditto.
2165         * expr.c (expand_expr_real_1): Ditto.
2166         * tree-inline.c (estimate_num_insns_1): Ditto.
2167         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
2168
2169         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
2170         (vec_unpacks_float_lo_v8hi): Ditto.
2171         (vec_unpacku_float_hi_v8hi): Ditto.
2172         (vec_unpacku_float_lo_v8hi): Ditto.
2173         (vec_unpacks_float_hi_v4si): Ditto.
2174         (vec_unpacks_float_lo_v4si): Ditto.
2175         (vec_pack_sfix_trunc_v2df): Ditto.
2176
2177         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
2178         Document.
2179         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
2180         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
2181         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
2182         [vec_pack_ufix_trunc]: Ditto.
2183         [vec_unpacks_float_hi]: Ditto.
2184         [vec_unpacks_float_lo]: Ditto.
2185         [vec_unpacku_float_hi]: Ditto.
2186         [vec_unpacku_float_lo]: Ditto.
2187
2188 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
2189
2190         * soft-fp/README: Update for new files.
2191         * soft-fp/floattisf.c: New file.
2192         * soft-fp/floattidf.c: New file.
2193         * soft-fp/floattitf.c: New file.
2194         * soft-fp/floatuntisf.c: New file.
2195         * soft-fp/floatuntidf.c: New file.
2196         * soft-fp/floatuntitf.c: New file.
2197         * soft-fp/fixsfti.c: New file.
2198         * soft-fp/fixdfti.c: New file.
2199         * soft-fp/fixtfti.c: New file.
2200         * soft-fp/fixunssfti.c: New file.
2201         * soft-fp/fixunsdfti.c: New file.
2202         * soft-fp/fixunstfti.c: New file.
2203         * soft-fp/extendxftf.c: New file.
2204         * soft-fp/trunctfxf.c: New file.
2205
2206         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
2207         (__trunctfxf2): Ditto.
2208
2209         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
2210         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
2211         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
2212         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
2213         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
2214         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
2215
2216         * config/i386/t-fprules-softfp64: New file.
2217         * config/i386/sfp-machine.h: New file.
2218         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
2219         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
2220         and soft-fp/t-softfp to tmake_file.
2221         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
2222         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
2223
2224         * config/i386/t-linux64 (softfp_wrap_start): New.
2225         (softfp_wrap_end): New.
2226         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
2227         supported for TARGET_64BIT.
2228
2229 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2230
2231         * c-common.c (c_common_signed_or_unsigned_type): Emulate
2232         c_common_unsigned_type behavior.
2233
2234 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
2235
2236         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
2237         calls as pure.
2238
2239 2007-05-16  Eric Christopher  <echristo@apple.com>
2240
2241         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
2242         saving after stack push. Set sp_offset whenever we push.
2243         (rs6000_emit_epilogue): Move altivec register restore before
2244         stack push.
2245
2246 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
2247
2248         * configure.ac: Allow sysroots to be relocated under $prefix as
2249         well as $exec_prefix.
2250         * configure: Regenerate.
2251
2252 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
2253
2254         Revert:
2255
2256         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
2257
2258         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2259         (gcc_tooldir): Likewise.
2260         * configure: Regenerate.
2261         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2262         old configure.ac gcc_tooldir setting.
2263         (prefix_to_exec_prefix): New variable.
2264         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2265         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2266
2267 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
2268
2269         * c-typeck.c (build_binary_op): Return early for error.
2270
2271 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
2272
2273         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
2274         struct nb_iter_bound.
2275         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
2276         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
2277         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
2278         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
2279         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
2280         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
2281         (del_scev_info): Use ggc_free.
2282         (scev_initialize): Allocate scalar_evolution_info in gc memory.
2283         * loop-init.c: Include ggc.h.
2284         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
2285         (loop_optimizer_finalize): Use ggc_free.
2286         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
2287         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
2288         pass_iv_optimize): Add TODO_ggc_collect.
2289         * function.h (struct function): Remove skip marker from x_current_loops.
2290         * cfgloop.c: Include ggc.h.
2291         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
2292         memory.
2293         (establish_preds): Vector superloops is gc allocated.
2294         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
2295         loop->exits list.
2296         (flow_loops_find): Vector larray is gc allocated.
2297         (loop_exit_free): Use ggc_free.
2298         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
2299         that head of exits list is now not a part of struct loop.
2300         (record_loop_exits): Allocate exits table in gc memory.
2301         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
2302         head of exits list is now not a part of struct loop.
2303         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
2304         struct loop_exit): Add GTY marker.
2305         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
2306         Add skip marker to aux field.  Make head of exits list a separate
2307         object.
2308         (struct loops): Add GTY marker.  Make larray vector gc allocated.
2309         Add param marker to exits table.
2310         (get_loops): Type changed.
2311         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
2312         dependency.
2313         (cfgloop.o, loop-init.o): Add ggc.h dependency.
2314         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
2315         * basic-block.h (struct basic_block_def): Remove skip marker from
2316         loop_father field.
2317
2318 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
2319
2320         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
2321         of 0 in the call to expand_expr().
2322         (expand_builtin_mathfn_3): Ditto.
2323         (expand_builtin_interclass_mathfn): Ditto.
2324         (expand_builtin_cexpi): Ditto.
2325         (expand_builtin_int_roundingfn): Ditto.
2326         (expand_builtin_int_roundingfn_2): Ditto.
2327         (expand_builtin_pow): Ditto.
2328         (expand_builtin_powi): Ditto.
2329         (expand_builtin_bswap): Ditto.
2330         (expand_builtin_unop): Ditto.
2331         (expand_builtin_fabs): Ditto.
2332         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
2333         the call to expand_expr().
2334         (expand_builtin_sync_operation): Ditto.
2335         (expand_builtin_compare_and_swap): Ditto.
2336         (expand_builtin_lock_test_and_set): Ditto.
2337         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
2338         instead of 0 in the call to expand_expr().
2339         (expand_builtin_extract_return_addr): Ditto.
2340         (expand_builtin_eh_return): Ditto.
2341         (expand_eh_return): Ditto.
2342         * explow.c (expr_size): Ditto.
2343         * expr.c (optimize_bitfield_assignment_op): Ditto.
2344         (expand_assignement): Ditto.
2345         (store_expr): Ditto.
2346         (store_field): Ditto.
2347         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
2348         the call to expand_expr().
2349         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
2350         in the call to expand_expr().
2351         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
2352         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
2353         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
2354         of expand_expr().
2355         * optabs.c (expand_vec_shift_expr): Ditto.
2356         (expand_vec_cond_expr): Ditto.
2357         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
2358         call to expand_expr().
2359         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
2360         in the call to expand_expr().
2361
2362 2007-05-14  Dave Korn  <dave.korn@artimi.com>
2363
2364         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
2365
2366 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
2367
2368         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
2369         instead of c_common_unsigned_type.
2370         (c_common_unsigned_type): Remove.
2371         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
2372         c_common_unsigned_type.
2373         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
2374         c_common_unsigned_type.
2375         * c-common.h (c_common_unsigned_type): Remove.
2376         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
2377         c_common_unsigned_type.
2378         * c-format.c (check_format_types): Use unsigned_type_for instead of
2379         c_common_unsigned_type.
2380         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2381         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
2382         c_common_unsigned_type.
2383         * convert.c (convert_to_integer): Use unsigned_type_for instead of
2384         lang_hooks.types.unsigned_type.
2385         * expmed.c (make_tree): Use unsigned_type_for instead of
2386         lang_hooks.types.unsigned_type.
2387         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
2388         lang_hooks.types.unsigned_type.
2389         (build_range_check): Likewise.
2390         (fold_unary): Likewise.
2391         (fold_binary): Likewise.
2392         (fold_ternary): Likewise.
2393         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2394         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
2395         * tree.c (get_unsigned_type): New.
2396         (unsigned_type_for): Use get_unsigned_type instead of
2397         lang_hooks.types.unsigned_type.
2398
2399 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
2400
2401         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
2402         to m68k_get_function_kind.  Update its prototype.
2403         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
2404         interrupt_thread.
2405         (m68k_interrupt_function_p): Return enum m68k_function_type
2406         instead of bool.  Rename to m68k_get_function_kind.
2407         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
2408         target is not fido.
2409         (m68k_compute_frame_layout): Don't mark any register for save
2410         if an interrupt_thread attribute is specified.
2411         (m68k_hard_regno_rename_ok): Update a use of
2412         m68k_interrupt_function_p.
2413         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
2414         m68k_interrupt_function_p.
2415         (m68k_function_type): New.
2416         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
2417         for a function with an interrupt_thread attribute.
2418         * doc/extend.texi: Document the interrupt_thread attribute.
2419
2420 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
2421
2422         Fix PR tree-optimization/31911
2423         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
2424         if they didn't change the expression.
2425
2426 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
2427
2428         * tree-scalar-evolution.c (resolve_mixers): Exported.
2429         * tree-scalar-evolution.h (resolve_mixers): Declare.
2430         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
2431         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
2432         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
2433         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
2434         init_array_ref, init_pointer_ref, analyze_indirect_ref,
2435         strip_conversion, analyze_offset_expr, address_analysis,
2436         object_analysis, analyze_offset): Removed.
2437         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
2438         split_constant_offset, canonicalize_base_object_address,
2439         object_address_invariant_in_loop_p, disjoint_objects_p,
2440         dr_may_alias_p, dr_address_invariant_p): New functions.
2441         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
2442         and dr_analyze_alias.
2443         (initialize_data_dependence_relation): Use dr_may_alias_p
2444         and object_address_invariant_in_loop_p.
2445         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
2446         is chrec_dont_know.
2447         (find_data_references_in_stmt): Restrict the analysis of data references
2448         to the given loop nest.
2449         (find_data_references_in_loop): Made static.  Pass loop nest to
2450         find_data_references_in_stmt.
2451         (compute_data_dependences_for_loop): Use DR_VOPS.
2452         (free_data_ref): Free DR_VOPS.
2453         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
2454         (struct innermost_loop_behavior): ... new.
2455         (struct base_object_info): Replaced by ...
2456         (struct indices): ... new.
2457         (struct dr_alias): New.
2458         (enum data_ref_type): Removed.
2459         (struct data_reference): Consist of struct innermost_loop_behavior,
2460         struct indices and struct dr_alias.
2461         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
2462         (DR_MEMTAG): Renamed to ...
2463         (DR_SYMBOL_TAG): ... this.
2464         (find_data_references_in_loop): Declaration removed.
2465         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
2466         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
2467         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
2468         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
2469
2470 2007-05-13  Revital Eres  <eres@il.ibm.com>
2471
2472         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
2473         which walks virtual def-use chains to find redundant stores.
2474         (dse_optimize_stmt): Call it.
2475
2476 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
2477
2478         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
2479         * passes.c (init_optimization_passes): Move pass_jump_bypass
2480         after loop2.
2481
2482         * basic-block.h (bb_has_eh_pred): Fix style issue.
2483
2484 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
2485
2486         PR rtl-optimization/31848
2487         * loop-invariant.c (move_invariant_reg): If we move an insn
2488         with a REG_EQUAL note, and that insn is not always executed,
2489         remove the REG_EQUAL note.
2490
2491 2007-05-12  Richard Guenther  <rguenther@suse.de>
2492
2493         PR tree-optimization/31797
2494         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
2495         propagate into a stmt that has volatile ops.
2496
2497 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
2498
2499         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2500         (gcc_tooldir): Likewise.
2501         * configure: Regenerate.
2502         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2503         old configure.ac gcc_tooldir setting.
2504         (prefix_to_exec_prefix): New variable.
2505         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2506         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2507
2508 2007-05-11  Silvius Rus  <rus@google.com>
2509
2510         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
2511         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
2512         * c-common.h (strict_aliasing_warning): Change return type.
2513         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
2514         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
2515         (build_c_cast): Condition call to strict_aliasing_warning.
2516         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
2517         * flags.h (set_Wstrict_aliasing): Declare.
2518         * opts.c (set_Wstrict_alising): Define, add call to.
2519         * tree-flow.h (strict_aliasing_warning_backend): Declare.
2520         * tree-ssa-alias-warnings.c: New file.
2521         * tree-ssa-alias.c (compute_may_aliases): Add call to
2522         strict_aliasing_warning_backend.
2523
2524 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
2525
2526         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2527         Use loop_depth and loop_outer accessor functions.
2528         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
2529         determine_invariantness_stmt, move_computations_stmt): Ditto.
2530         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
2531         add_loop, loopify, unloop, fix_loop_structure): Ditto.
2532         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
2533         * tree-scalar-evolution.c (interpret_loop_phi,
2534         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
2535         instantiate_parameters_1, scev_const_prop): Ditto.
2536         * cfghooks.c (make_forwarder_block): Ditto.
2537         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
2538         * modulo-sched.c (loop_canon_p): Ditto.
2539         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
2540         slpeel_can_duplicate_loop_p): Ditto.
2541         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
2542         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2543         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
2544         cancel_loop, verify_loop_structure): Ditto.
2545         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
2546         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
2547         superloops vector instead of "pred" array.
2548         (establish_preds): Take father loop as an argument.  Initialize the
2549         superloops vector.
2550         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
2551         initialize loop->outer.
2552         (flow_loop_tree_node_remove): Truncate the superloops vector.
2553         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
2554         "pred" merged to "superloops" vector.
2555         (loop_depth, loop_outer): New.
2556         (fel_init): Use loop_outer.
2557
2558 2007-05-11  Jan Hubicka  <jh@suse.cz>
2559
2560         * cgraphunit.c: Include gt-cgraphunit.h
2561         (static_ctors, static_dtors): New static vars.
2562         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
2563         based on implementation in c-common.c
2564         (cgraph_finalize_function): Call record_cdtor_fn.
2565         (cgraph_optimize): Call cgraph_build_cdtor_fns.
2566         * decl.c (finish_function): Do not call c_record_cdtor_fn.
2567         (c_write_global_declarations): Do not call c_build_cdtor_fns.
2568         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
2569         build_cdtor, c_build_cdtor_fns): Remove.
2570         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
2571         c_build_cdtor_fns): Remove prototype.
2572
2573 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
2574
2575         PR other/31852
2576         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
2577         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
2578         * builtins.c (fold_builtin_memchr): New.
2579         (expand_builtin_memchr): Call the latter.
2580         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
2581         * doc/extend.texi ([Other built-in functions provided by GCC]):
2582         Document memchr.
2583
2584 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
2585
2586         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
2587         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
2588         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
2589         PFPO_OP1_TYPE_SHIFT): Constants added.
2590         (DFP_ALL): Mode macro defined.
2591         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
2592         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
2593         Insn definitions added.
2594         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
2595         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
2596         Expanders added.
2597
2598 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
2599
2600         PR tree-optimization/31885
2601         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
2602         to be undetermined.
2603         (automatically_generated_chrec_p): Return false for NULL.
2604
2605 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2606
2607         * config/bfin/bfin.h (MOVE_RATIO): Define.
2608
2609 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
2610
2611         * config.gcc (sparc-wrs-vxworks): New target.
2612         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
2613         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
2614         * config/sparc/sparc.h: Include vxworks-dummy.h.
2615         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
2616         include LABEL_REFs too.
2617         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
2618         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
2619         VxWorks.
2620         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
2621         on VxWorks.
2622         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
2623         (sparc_emit_call_insn): New function.
2624         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
2625         functions when generating VxWorks PIC.
2626         * config/sparc/sparc.md (vxworks_load_got): New pattern.
2627         (call, call_value): Use sparc_emit_call_insn instead of
2628         emit_call_insn.
2629
2630 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
2631
2632         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
2633
2634 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
2635
2636         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
2637         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
2638         instead of operand_subword.
2639
2640 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2641
2642         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
2643         * config/bfin/bfin.c (bfin_local_alignment): New function.
2644         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
2645
2646 2007-05-08  Chao-ying Fu  <fu@mips.com>
2647
2648         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
2649         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
2650         (smsub_widen_optab, umsub_widen_optab): Define.
2651         * optabs.c (init_optabs): Initialize smsub_widen_optab and
2652         umsub_widen_optab.
2653         * genopinit.c (optabs): Fill in smsub_widen_optab and
2654         umsub_widen_optab.
2655         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
2656         and umsub_widen_optab to implement multiply-subtract sequences.
2657         * config/mips/mips.md (*msac<u>_di): Rename to...
2658         (<u>msubsidi4): ...this.  Extend condition to include
2659         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
2660         of operand 0 to "ka" and use the three-operand form of msub<u>
2661         for TARGET_DSPR2.
2662         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
2663         to define_expands.
2664
2665 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2666
2667         PR rtl-optimization/28011
2668         * reload.c (push_reload): Set dont_share if IN appears in OUT
2669         also when IN is a PLUS rtx.
2670         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
2671         are same PLUS rtx.
2672
2673 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
2674
2675         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
2676         call unshare_all_decls.
2677         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
2678         (unshare_all_decls): Remove.
2679
2680 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
2681
2682         PR 31847
2683         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
2684         dumps.
2685
2686 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
2687             Nigel Stephens  <nigel@mips.com>
2688
2689         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
2690         Update comments and all uses.
2691         (MIN_FPRS_PER_FMT): Define.
2692         * config/mips/mips.c (function_arg): Fix to correctly handle
2693         the -mips32r2 -mfp64 -mabi=32 case.
2694         (override_options): Enable use of odd-numbered registers for
2695         SFmode values on MIPS32.
2696         (mips_save_reg_p): Save whole floating-point register pair if
2697         either half is used.
2698         (compute_frame_size): Fix comment.
2699
2700 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
2701
2702         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
2703         argument of type bool.
2704         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
2705         argument. Safely select temporary P register according to it.
2706         (do_link): Change call site of add_to_reg accordingly.
2707         (do_unlink): Add epilogue_p as a fourth argument and pass it
2708         to add_to_reg.
2709         (expand_interrupt_handler_epilogue): Change call of do_unlink
2710         accordingly.
2711         (bfin_expand_prologue): Add a third argument sibcall_p.
2712         * config/bfin/bfin.md (epilogue): Change call of
2713         bfin_expand_epilogue accordingly.
2714         (sibcall_epilogue): Likewise.
2715         (eh_return_internal): Likewise.
2716
2717         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
2718         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
2719         * config/bfin/bfin.c (bfin_handle_option): Handle
2720         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
2721         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
2722         Support bf534, bf536 and bf561.
2723         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
2724
2725 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
2726
2727         PR target/31854
2728         * config/i386/i386.c (ix86_function_regparm): Process local
2729         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
2730
2731 2007-05-07  Mike Stump  <mrs@apple.com>
2732
2733         * doc/invoke.texi (Warning Options): Document that -Wempty-body
2734         also checks for and while statements in C++.
2735
2736 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
2737
2738         * gcc.c (at_file_supplied): New variable.
2739         (main): Set it if we expanded argv.
2740         (do_spec_1): Pass an @-file to the linker if we were called with
2741         an @-file argument and HAVE_GNU_LD.
2742         * collect2.c (at_file_supplied): New variable.
2743         (response_file): New variable.
2744         (collect_exit): Unlink response_file if necessary.
2745         (handler): Likewise.
2746         (do_wait): Likewise.
2747         (main): Set at_file_supplied if we expanded argv.
2748         (collect_execute): Pass an @-file to subprocesses if we were called
2749         with an @-file argument.
2750         * configure.ac: Add define for HAVE_GNU_LD.
2751         * configure: Regenerate.
2752         * config.in: Regenerate.
2753
2754 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
2755
2756         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
2757         operand to HI mode.
2758         (mulsi3): New.
2759         (divsi3): New.
2760         (udivsi3): New.
2761
2762 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
2763
2764         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
2765         (TARGET_ENCODE_SECTION_INFO): Re-define.
2766         (m32c_encode_section_info): New
2767         (function_vector_handler): New
2768         (current_function_special_page_vector): New
2769         (m32c_special_page_vector_p): New.
2770         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
2771         Prototype.
2772         * config/m32c/jump.md: Added instruction JSRS for functions
2773         with attribute "function_vector".
2774         * doc/extend.texi (function_vector): Added description
2775         for M16C, M32C targets.
2776
2777 2007-05-07  DJ Delorie  <dj@redhat.com>
2778
2779         PR 31794
2780         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
2781         ashrpsi3, lshrpsi3): Update shift count constraint.
2782
2783 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
2784             Nathan Froyd  <froydnj@codesourcery.com>
2785
2786         PR 22133
2787         * c-incpath.c (add_path): Strip trailing path separators.
2788
2789 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2790
2791         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
2792         Free dominance info before purging EH edges.
2793         (eliminate_degenerate_phis): Likewise.
2794         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
2795
2796 2007-05-07  Jan Hubicka  <jh@suse.cz>
2797
2798         * gimplify.c (gimplify_expr): Do not crash when folding
2799         (void *)(int)&a + 4.
2800
2801 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2802
2803         PR driver/31694
2804         * c-opts.c (lang_fortran): Make it non static.
2805         * c-common.h (lang_fortran): New prototype.
2806         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
2807         -lang-fortran option was passed by the driver.
2808
2809 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
2810
2811         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
2812         of ASSERT_CHECKING.  Tweak message.
2813
2814 2007-05-06  Revital Eres  <eres@il.ibm.com>
2815
2816         PR 30957
2817         * loop-unroll.c (insert_var_expansion_initialization):
2818         Initialize the expansions with -zero instead of +zero.
2819
2820 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
2821
2822         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
2823         into pic and non-pic versions. Mark r19 as used for
2824         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
2825         for tgd_load, tld_load and tie_load .
2826         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
2827         version of tgd_load, tld_load and tie_load depending on the
2828         value of flag_pic.
2829
2830 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
2831             Jakub Jelinek  <jakub@redhat.com>
2832
2833         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
2834         (__do_global_dtors_aux): Use more paranoid loop to run
2835         destructors if HIDDEN_DTOR_LIST_END.
2836         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
2837
2838 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
2839
2840         * varasm.c (align_variable): Don't increase alignment for
2841         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
2842         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
2843
2844 2007-05-04  Josh Conner  <jconner@apple.com>
2845
2846         * basic-block.h (cdi_direction): Assign values to all enumeration
2847         constants.
2848         (dom_computed): Remove.
2849         (dom_info_state): New.
2850         (set_dom_info_availability): New.
2851         * tree-ssa-loop-im.c (determine_invariantness): Initialize
2852         walk_data.dom_direction.
2853         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
2854         instead of dom_computed[].
2855         (split_edge): Likewise.
2856         (create_basic_block): Likewise.
2857         (merge_blocks): Likewise.
2858         * ifcvt.c (find_if_header): Likewise.
2859         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
2860         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
2861         * tree-ssa.c (verify_ssa): Likewise.
2862         * tree-cfg.c (tree_verify_flow_info): Likewise.
2863         (remove_edge_and_dominated_blocks): Likewise.
2864         * dominance.c (dom_computed): Make static.
2865         (calc_dfs_tree_nonrec): Change third param to a bool.
2866         (calc_dfs_tree): Change second param to a bool.
2867         (calc_idioms): Change second param to a bool.  Use
2868         dom_convert_dir_to_idx.
2869         (init_dom_info): Validate dir before using.
2870         (dom_convert_dir_to_idx): New.
2871         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
2872         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
2873         (free_dominance_info): Use dom_convert_dir_to_idx.
2874         (get_immediate_dominator): Likewise.
2875         (set_immediate_dominator): Likewise.
2876         (get_dominated_by): Likewise.
2877         (redirect_immediate_dominators): Likewise.
2878         (nearest_common_denominator): Likewise.
2879         (dominated_by_p): Likewise.
2880         (bb_dom_dfs_in): Likewise.
2881         (bb_dom_dfs_out): Likewise.
2882         (recount_dominator): Likewise.
2883         (iterate_fix_dominators): Likewise.
2884         (add_to_dominance_info): Likewise.
2885         (delete_from_dominance_info): Likewise.
2886         (first_dom_son): Likewise.
2887         (next_dom_son): Likewise.
2888         (dom_info_available_p): Likewise.
2889         (dom_info_state): New.
2890         (set_dom_info_availability): New.
2891
2892 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2893
2894         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
2895         Expander removed.
2896         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
2897
2898 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
2899
2900         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
2901         (subdi3, subdi_carry): Delete.
2902
2903 2007-05-04  Jan Hubicka  <jh@suse.cz>
2904             Richard Guenther  <rguenther@suse.de>
2905
2906         * opts.c (decode_options): Do not fiddle with inlining
2907         parameters in case of optimizing for size.
2908         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
2909         for size do nothing.
2910         (cgraph_decide_inlining_of_small_function): When optimizing for
2911         size never inline functions increasing caller size.
2912         (cgraph_early_inlining): Inline for size when optimizing for size.
2913
2914 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
2915
2916         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
2917         logical operations piecewise.
2918         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
2919         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
2920         subdi_sesidi_di): Delete.
2921         (add_with_carry): Produce carry in CC instead of a DREG to shorten
2922         the generated sequence.  Allow three-reg add in constraints.  Rewrite
2923         the rtl expression for carry to avoid zero_extend of a constant.
2924         (sub_with_carry): New pattern.
2925         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
2926         different sequence not involving jumps.
2927         (notbi): Now a named pattern.
2928
2929 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
2930
2931         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
2932         Add the note about a significant loss of accuracy of some
2933         mathematical routines when these options are used.
2934
2935 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2936
2937         * haifa-sched.c (rtx_vec_t): New typedef.
2938         (contributes_to_priority_p): Extract piece of priority () into new
2939         static function.
2940         (priority): Use the function.  Add assertion.
2941         (rank_for_schedule, set_priorities): Add assertion to check that
2942         insn's priority is initialized.
2943         (clear_priorities, calc_priorities): Change signature.  Make it update
2944         all relevant insns.  Update all callers ('add_to_speculative_block ()'
2945         and 'create_block_check_twin ()').
2946         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
2947         Add new field 'priority_status'.
2948         (INSN_PRIORITY_STATUS): New macro.
2949         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
2950
2951 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2952
2953         * sched-ebb.c (debug_ebb_dependencies): New static function.
2954         (init_ready_list): Use it.
2955
2956         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
2957         with changed signature and 'debug_rgn_dependencies ()'.
2958         (debug_rgn_dependencies): New static function.
2959         (init_ready_list): Use it.
2960
2961         * sched-int.h (debug_dependencies): Declare.
2962
2963 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2964
2965         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
2966
2967 2007-05-04  Dirk Mueller  <dmueller@suse.de>
2968
2969         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
2970
2971 2007-05-03  Jan Hubicka  <jh@suse.cz>
2972
2973         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
2974         for pointer type in more cases than before.
2975
2976         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
2977
2978         * tree-object-size.c (plus_expr_object_size): When operand size is
2979         unknown, return unknown.
2980
2981 2007-05-03  Dirk Mueller  <dmueller@suse.de>
2982
2983         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
2984
2985         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
2986         options.
2987
2988         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
2989
2990 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
2991
2992         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
2993
2994 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
2995
2996         * config/soft-fp/double.h, config/soft-fp/extended.h,
2997         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
2998         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
2999         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
3000         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
3001         glibc CVS.
3002
3003 2007-05-03  Ian Lance Taylor  <iant@google.com>
3004
3005         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
3006         MASK_PPC_GFXOPT for 8540 or 8548.
3007
3008 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
3009
3010         * tree-vect-transform.c (vect_update_inits_of_drs): Use
3011         vect_print_dump_info() to output debug information.
3012
3013 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
3014
3015         PR target/31768
3016         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
3017         operands of size 2 when operand is not MEM_P.
3018
3019 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3020
3021         PR tree-optimization/30565
3022         * lambda-code.c (perfect_nestify): Fix updating of dominators.
3023
3024 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3025
3026         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
3027         (umulsi3_highpart): Use them.
3028         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
3029         for final accumulator to D regisster tranfser.
3030
3031 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
3032
3033         PR tree-optimization/31699
3034         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
3035         code.
3036         (vect_enhance_data_refs_alignment): Compute peel amount using
3037         TYPE_VECTOR_SUBPARTS instead of vf.
3038         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
3039
3040 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
3041
3042         PR bootstrap/31776
3043         * system.h: Remove inclusion of double-int.h
3044         * tree.h: Include double-int.h
3045         * gengtype.c: Likewise
3046         * cfgloop.h: Likewise
3047         * Makefile.in: Adjust dependencies on double-int.h
3048
3049 2007-05-02  Eric Christopher  <echristo@apple.com>
3050
3051         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
3052         -shared to -Zdynamiclib.
3053
3054 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
3055
3056         PR c++/31663
3057         * c-common.c (strip_pointer_or_array_types): New function.
3058         * c-common.h (strip_pointer_or_array_types): New function declaration.
3059
3060 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3061
3062         PR tree-optimization/31771
3063         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
3064
3065 2007-05-02  Paul Brook  <paul@codesourcery.com>
3066
3067         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
3068
3069 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3070
3071         PR middle-end/29715
3072         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
3073         transformation.
3074
3075 2007-05-02  Nick Clifton  <nickc@redhat.com>
3076
3077         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
3078
3079 2007-05-02  Richard Guenther  <rguenther@suse.de>
3080
3081         PR tree-optimization/31146
3082         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
3083         argument, single_use_p.  If we have a single use that is
3084         a conversion to the definition rhs type, propagate that rhs.
3085         (forward_propagate_addr_expr): Pass single_use_p argument
3086         to forward_propagate_addr_expr_1.
3087
3088 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
3089
3090         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
3091         variable.
3092
3093 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3094
3095         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
3096         'AMD Family 10 core'.
3097
3098 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3099
3100         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
3101         and athlon64-sse3 as improved versions of k8, opteron and athlon64
3102         with SSE3 instruction set support.
3103         * doc/invoke.texi: Likewise.
3104
3105 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3106
3107         * config/i386/i386.c (override_options): Tuning 32-byte loop
3108         alignment for amdfam10 architecture. Increasing the max loop
3109         alignment to 24 bytes.
3110
3111 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
3112
3113         * config/m68k/constraints.md: New.
3114         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
3115         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3116         EXTRA_CONSTRAINT): Remove.
3117         * config/m68k/m68k.md: Include constraints.md.
3118         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
3119
3120 2007-05-01  Ian Lance Taylor  <iant@google.com>
3121
3122         PR tree-optimization/31739
3123         * tree-vrp.c (vrp_val_is_max): New static function.
3124         (vrp_val_is_min): New static function.
3125         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
3126         copying the node.
3127         (set_value_range): Use vrp_val_is_{max,min}.
3128         (extract_range_from_assert): Likewise.
3129         (extract_range_from_binary_expr): Likewise.
3130         (extract_range_from_unary_expr): Likewise.
3131         (dump_value_range, vrp_meet): Likewise.
3132         (vrp_visit_phi_node): Likewise.
3133         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
3134
3135 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
3136
3137         * config/i386/gmon-sol2.c (size_t): New type.
3138         (intptr_t): Likewise.
3139         (s_textsize): Declare as size_t.
3140         (sbrk): Declare.
3141         (monstartup): Use size_t for sizes.
3142         (_mcount): Save and restore registers.
3143         (internal_mcount): Pass 0 as the first argument to monstartup
3144         in 64-bit mode.
3145         (moncontrol): Convert pointer to appropriately sized integer
3146         before passing to profil.
3147
3148 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
3149
3150         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
3151         __NO_FPRS__, not just if _SOFT_DOUBLE.
3152         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
3153         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
3154         also for E500 double.
3155         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
3156         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
3157         && !TARGET_FPRS).
3158
3159 2007-05-01  Richard Guenther  <rguenther@suse.de>
3160
3161         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
3162         is NULL.
3163
3164 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
3165
3166         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
3167
3168 2007-05-01  Jan Hubicka  <jh@suse.cz>
3169
3170         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
3171         invariant.
3172
3173 2007-05-01  Jan Hubicka  <jh@suse.cz>
3174
3175         * tree.h (maybe_fold_offset_to_component_ref): Remove.
3176         (maybe_fold_offset_to_reference): Declare.
3177         * fold-const.c (fold_unary): Do not fold
3178         (type *)&A into &A->field_of_type_and_offset_0
3179         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
3180         size is unknown, give up.
3181         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
3182         offsets.
3183         (maybe_fold_offset_to_reference): New.
3184         (maybe_fold_stmt_indirect): Use it.
3185         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
3186         * gimplify.c (gimplify_conversion): Canonicalize conversions to
3187         field references.
3188         (gimplify_expr): Likewise for plus_expr.
3189
3190 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
3191
3192         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
3193         bsi_after_labels.  Always insert statements before bsi.
3194         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
3195         * predict.c (apply_return_prediction): Check for empty blocks.
3196         * cfgexpand.c (lab_rtx_for_bb): New variable.
3197         (label_rtx_for_bb): Do not create new tree labels.
3198         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
3199         (tree_expand_cfg): Initialize lab_rtx_for_bb.
3200         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
3201         creating edges.
3202         (label_for_bb): Add field used.
3203         (update_eh_label, main_block_label): Mark the label used.
3204         (cleanup_dead_labels): Remove unused labels.
3205
3206 2007-05-01  Richard Guenther  <rguenther@suse.de>
3207
3208         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
3209         if it is not about to be set.
3210         (get_value_range): Do not pre-allocate equiv bitmap.
3211         (update_value_range): No need to clear equiv field.
3212         (add_equivalence): Change prototype to get bitmap pointer.
3213         Allocate bitmap here if it is not already.
3214         (extract_range_from_assert): Do not allocate bitmap here.
3215         Update callers to add_equivalence.
3216         (extract_range_from_ssa_name): Likewise.
3217         (get_vr_for_comparison): New static helper.
3218         (compare_name_with_value): Handle NULL equiv bitmap by
3219         peeling the first iteration of the comparison loop.
3220         Use get_vr_for_comparison.
3221         (compare_names): Handle NULL equiv bitmaps by using fake
3222         ones.  Use get_vr_for_comparison.
3223
3224 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
3225
3226         * double-int.c (mpz_set_double_int): Moved from
3227         tree-ssa-loop-niter.c.
3228         (mpz_get_double_int): Likewise; also, add option to wrap
3229         out-of-range integers.
3230         * double-int.h: New prototypes for above.
3231         * tree.c (get_static_type_bounds): Moved from
3232         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
3233         TYPE_MAX_VALUE if they exist..
3234         * tree.h: New prototype for above.
3235         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
3236         get_type_bounds calls.
3237         (mpz_set_double_int): Move to double-int.c.
3238         (get_type_bounds): Move to tree.c, rename to
3239         get_static_type_bounds.
3240         (mpz_to_double_int): Move to double-int.c, rename to
3241         mpz_get_double_int.
3242
3243 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
3244
3245         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
3246         DIV0 exception can fall through to a normal return.
3247
3248 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
3249
3250         PR middle-end/22156
3251         Temporarily revert:
3252         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
3253         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
3254         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
3255         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
3256         initialize align to silence bogus warning.
3257         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
3258         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
3259         all_no_warning.
3260         (struct sra_walk_fns): Remove use_all parameter from use.
3261         (sra_hash_tree): Handle BIT_FIELD_REFs.
3262         (sra_elt_hash): Don't hash bitfld blocks.
3263         (sra_elt_eq): Skip them in parent compares as well.  Handle
3264         BIT_FIELD_REFs.
3265         (sra_walk_expr): Don't maintain or pass down use_all_p.
3266         (scan_use): Remove use_all parameter.
3267         (scalarize_use): Likewise.  Re-expand assignment to
3268         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
3269         output, and re-scalarize after output.  Don't mark anything
3270         for no warning.
3271         (scalarize_ldst): Adjust.
3272         (scalarize_walk_gimple_modify_statement): Likewise.
3273         (build_element_name_1): Handle BIT_FIELD_REFs.
3274         (instantiate_element): Don't warn for any element whose parent
3275         is used as a whole.
3276         (instantiate_missing_elements_1): Return the sra_elt.
3277         (canon_type_for_field): New.
3278         (try_instantiate_multiple_fields): New.
3279         (instantiate_missing_elemnts): Use them.
3280         (mark_no_warning): Removed.
3281         (generate_one_element_ref): Handle BIT_FIELD_REFs.
3282         (REPLDUP, sra_build_elt_assignment): New.
3283         (generate_copy_inout): Use them.
3284         (generate_element_copy): Likewise.  Handle bitfld differences.
3285         (generate_element_zero): Don't recurse for blocks.  Use
3286         sra_build_elt_assignment.
3287         (generate_one_element_int): Take elt instead of var.  Use
3288         sra_build_elt_assignment.
3289         (generate_element_init_1): Adjust.
3290         (scalarize_use, scalarize_copy): Use REPLDUP.
3291         (scalarize_ldst): Move assert before dereference.
3292         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
3293
3294 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3295
3296         PR C++/31721
3297         * tree.c (reconstruct_complex_type): Reconstruct a reference
3298         correctly.
3299         Also use the same mode for the pointer as the old pointer type.
3300
3301 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
3302
3303         * doc/trouble.texi (Interoperation): Remove note about Ultrix
3304         Fortran compiler.
3305
3306 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
3307
3308         PR rtl-optimization/31676
3309         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
3310         (df_refs_record): Call it.
3311
3312 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
3313
3314         * rtl.def (SS_ABS): New code.
3315         * config/bfin/bfin.c (print_operand): New modifier 'v'.
3316         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
3317         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
3318         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
3319         (bfin_init_builtins): Define them.
3320         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
3321         (bfin_expand_builtin): ... and handle the others here.
3322         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
3323         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
3324         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
3325         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
3326         operand is only HImode.
3327
3328 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
3329
3330         * regclass.c (scan_one_insn): Remove splitting of
3331         two address insns.
3332
3333 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
3334             Nigel Stephens  <nigel@mips.com>
3335
3336         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
3337
3338 2007-04-28  Jan Hubicka  <jh@suse.cz>
3339
3340         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
3341         insn_locators_alloc instead of insn_locators_initialize;
3342         call reset_block_changes.
3343         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
3344         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
3345         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
3346         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
3347         * config/score/score.c (th_output_mi_thunk): Likewise.
3348         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
3349         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
3350         tolerate uninitialized locator info.
3351
3352         Re-apply:
3353         * function.c (init_function_start): Don't init line number info.
3354         (expand_function_end): Update.
3355         (reset_block_changes, record_block_change, finalize_block_changes,
3356         check_block_change, free_block_changes): Kill.
3357         * function.h (reset_block_changes, record_block_change,
3358         finalize_block_changes, check_block_change, free_block_changes): Remove
3359         prototypes.
3360         (struct function): Remove ib_boundaries_block.
3361         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
3362         Use curr_insn_locator to initialize locator.
3363         (emit_line_note): Remove.
3364         * cfgexpand.c (expand_gimple_cond_expr): Update.
3365         (construct_exit_block): Likewise.
3366         (tree_expand_cfg): Initialize/finalize locators.
3367         * expr.c (expand_expr_real): Update.
3368         * cfglayout.c (line_locators_locs, line_locators_lines,
3369         file_locators_locs, file_locators_files): Remove.
3370         (set_block_levels): Move to cfgexpand.c.
3371         (insn_locators_initialize): Remove.
3372         (pass_insn_locators_initialize): Remove.
3373         (locations_locators_locs, locations_locators_vals): New static vars.
3374         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
3375         Likewise.
3376         (insn_locators_alloc, insn_locators_finalize,
3377         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3378         New functions.
3379         (locator_location): New.
3380         (locator_line, locator_file): Rewrite.
3381         * rtl.h (emit_line_note): Kill.
3382         (insn_locators_alloc, insn_locators_finalize,
3383         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3384         Declare.
3385         * tree-inline.c (initialize_cfun): Do not initialize
3386         ib_boundaries_block.
3387         * passes.c (pass_insn_locators_initialize): Remove.
3388
3389 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
3390
3391         * tree-cfg.c (move_block_to_fn): Release bb from dominance
3392         info.  Update last_basic_block correctly.
3393
3394 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3395
3396         PR target/31701
3397         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
3398         register itself to hold the offset constant.  Tell flow the use
3399         of r4 and r5 when they are used.
3400
3401 2007-04-27  Richard Guenther  <rguenther@suse.de>
3402
3403         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
3404         if we simplified anything.
3405         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
3406         warnings until we did a simplification and the stmt was not
3407         marked as TREE_NO_WARNING.
3408
3409 2007-04-27  Mike Stump  <mrs@apple.com>
3410
3411         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
3412
3413 2007-04-27  Ian Lance Taylor  <iant@google.com>
3414
3415         PR middle-end/31710
3416         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
3417         TYPE_MAX_VALUE exist, convert them to the new type.
3418
3419 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3420
3421         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
3422         if it claims to be available.
3423         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
3424         edge is redirected.
3425         (perform_tree_ssa_dce): Always free postdominators.
3426
3427 2007-04-27  Richard Henderson  <rth@redhat.com>
3428
3429         * config/alpha/predicates.md (aligned_memory_operand): Mark
3430         as define_special_predicate.
3431         (unaligned_memory_operand, normal_memory_operand): Likewise.
3432         (reg_or_unaligned_mem_operand): Remove.
3433         (any_memory_operand): Match the documentation and check for
3434         non-renumbered pseudos during reload.
3435         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
3436         alpha_secondary_reload_class, update to new interface, make static.
3437         Handle CQImode like HImode.  Remove FP subreg check.
3438         (alpha_expand_mov): Use replace_equiv_address.
3439         (alpha_expand_mov_nobwx): Use any_memory_operand.
3440         (TARGET_SECONDARY_RELOAD): New.
3441         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
3442         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
3443         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
3444         * config/alpha/alpha.md: ... here.
3445         (RELOAD12, reloadmode): New.
3446         (movcqi): New.
3447         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
3448         Don't handle the aligned case here.
3449         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
3450         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
3451         reload_inhi_help.  Don't expect a scratch register.
3452         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
3453         reload_outhi_help.
3454         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
3455
3456 2007-04-27  Richard Guenther  <rguenther@suse.de>
3457
3458         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
3459
3460 2007-04-27  Richard Guenther  <rguenther@suse.de>
3461
3462         PR tree-optimization/30965
3463         PR tree-optimization/30978
3464         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
3465         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
3466         (find_equivalent_equality_comparison): Likewise.
3467         (simplify_cond): Likewise.
3468         (get_prop_source_stmt): New helper.
3469         (get_prop_dest_stmt): Likewise.
3470         (can_propagate_from): Likewise.
3471         (remove_prop_source_from_use): Likewise.
3472         (combine_cond_expr_cond): Likewise.
3473         (forward_propagate_comparison): New function.
3474         (forward_propagate_into_cond): Rewrite to use fold for
3475         tree combining.
3476         (tree_ssa_forward_propagate_single_use_vars): Call
3477         forward_propagate_comparison to propagate comparisons.
3478
3479 2007-04-27  Richard Guenther  <rguenther@suse.de>
3480
3481         PR tree-optimization/31715
3482         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
3483         sure to do computation on the offset in an appropriate
3484         signed type.
3485
3486 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
3487
3488         * reload.h (elimination_target_reg_p): Declare.
3489         * reload.c (find_reloads): Don't apply the reg_rtx move
3490         optimization if the SET_DEST satisfies elimination_target_reg_p.
3491         * reload1.c (elimination_target_reg_p): New function.
3492         (gen_reload): In the move/add2 fallback, make sure that op0
3493         does not overlap the destination register.
3494
3495 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3496
3497         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
3498         transform only GIMPLE_MODIFY_STMTs.
3499         * tree-complex.c (expand_complex_operations_1): Ditto.
3500         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
3501         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
3502         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
3503         branches.
3504         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
3505         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
3506         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
3507         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
3508         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
3509         slpeel_add_loop_guard): Ditto.
3510         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
3511         * lambda-code.c (perfect_nestify): Ditto.
3512         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
3513         before the first statement.
3514         * tree-optimize.c (execute_free_datastructures): Fix comments.
3515         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
3516         * tree-flow.h (disband_implicit_edges): Declaration removed.
3517         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
3518         branches.
3519         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
3520         without gotos.
3521         (disband_implicit_edges, has_label_p): Removed.
3522         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
3523         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
3524         branches.
3525         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
3526         side effects.
3527         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
3528         also for COND_EXPRs.
3529         * cfgexpand.c (label_rtx_for_bb): New function.
3530         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
3531         Use label_rtx_for_bb to find the labels.
3532         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
3533         last block.  Detect fallthru edges.
3534
3535 2007-04-26  Ian Lance Taylor  <iant@google.com>
3536
3537         PR target/28675
3538         * reload.c (find_reloads_subreg_address): If the address was valid
3539         in the original mode but not in the new mode, reload the whole
3540         address.
3541
3542 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3543
3544         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
3545         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
3546         (cleanup_control_expr_graph): Do not invalidate dominance info.
3547         Record altered blocks.
3548         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
3549         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
3550         cleanup_tree_cfg_bb): New functions.
3551         (remove_forwarder_block): Do not maintain the worklist of blocks.
3552         Record altered blocks.
3553         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
3554         not over whole cfg.
3555         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
3556         delete_unreachable_blocks if dominators are not available.
3557         * tree-inline.c (optimize_inline_calls): Free dominance information
3558         earlier.
3559         * tree-flow.h (remove_edge_and_dominated_blocks,
3560         cfgcleanup_altered_bbs): Altered.
3561         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
3562         blocks.
3563         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
3564         functions.
3565         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
3566         do not invalidate dominators.
3567
3568 2007-04-26  Anatoly Sokolov <aesok@post.ru>
3569
3570         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
3571         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
3572         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3573         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3574
3575 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
3576
3577         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
3578
3579 2007-04-26  Richard Guenther  <rguenther@suse.de>
3580
3581         PR tree-optimization/31703
3582         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
3583         the right type for the target of the bittest.
3584
3585 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3586
3587         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
3588         ix86_sol10_return_in_memory.
3589
3590 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3591
3592         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
3593         variables.
3594
3595 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
3596
3597         PR c++/31598
3598         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
3599
3600         PR tree-optimization/30558
3601         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
3602         clear this_state.prev_try.
3603
3604 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3605             Mark Mitchell  <mark@codesourcery.com>
3606
3607         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
3608         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
3609         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
3610
3611 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3612
3613         PR driver/31107
3614         * doc/invoke.texi (%:print-asm-header): Document.
3615         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
3616         and -ftarget-help.
3617         (static_spec_functions): Add print-asm-header.
3618         (main): Print a banner before the --target-help linker options.
3619         (print_asm_header_spec_function): New function.
3620
3621 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3622
3623         PR target/31403
3624         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
3625         (movsf_ie): Likewise.
3626
3627 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
3628
3629         * doc/extend.texi ([Type Traits]): Adjust per N2255.
3630
3631 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
3632
3633         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
3634         for divide-by-zero.
3635         (__umodsi3, __modsi3): Likewise.
3636
3637 2007-04-25  Dirk Mueller  <dmueller@suse.de>
3638
3639         * c-typeck.c (build_compound_expr): Annotate warning()
3640         call with OPT_Wunused_value.
3641         * tree-ssa.c (warn_uninit): Annotate warning with
3642         OPT_Wunintialized.
3643         * c-common.c (handle_sentinel_attribute): Annotate warning
3644         call with OPT_Wattributes.
3645
3646 2007-04-25  Thiemo Seufer  <ths@mips.com>
3647
3648         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
3649         (mips16): Fix typo.
3650         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
3651         on to the assembler.  Improve handling of -mno-mips16.  Add handling
3652         of -mno-mips3d, -mno-dsp, -mno-dspr2.
3653         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
3654         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
3655         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
3656
3657 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
3658
3659         PR target/31680
3660         * config/i386/winnt.c (i386_pe_file_end): Strip only
3661         USER_LABEL_PREFIX when writing export name.
3662
3663 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
3664
3665         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
3666         sh/elf.h, vx-common.h and vxworks.h.
3667         * config/sh/sh.h: Include config/vxworks-dummy.h.
3668         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3669         (OVERRIDE_OPTIONS): Use it.
3670         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
3671         (vxworks_picreg): New pattern.
3672         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
3673         VXWORKS_OS_CPP_BUILTINS.
3674         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
3675         to their VXWORKS_* equivalents.
3676         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
3677         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
3678         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
3679         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
3680         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
3681         -mrtp/-fPIC multilibs.
3682         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
3683         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
3684         (MULTILIB_OSDIRNAMES): Delete.
3685
3686 2007-04-25  Anatoly Sokolov <aesok@post.ru>
3687
3688         PR target/18989
3689         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
3690
3691 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
3692
3693         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
3694         rounding mode to be specified by the caller.
3695         (real_to_mpfr) Likewise.
3696         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
3697         include new arguments.
3698         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
3699
3700 2007-04-24  Ian Lance Taylor  <iant@google.com>
3701
3702         PR tree-optimization/31605
3703         * tree-vrp.c (set_value_range): Check that min and max are not
3704         both overflow infinities.
3705         (set_value_range_to_value): New static function.
3706         (extract_range_from_binary_expr): Call set_value_range_to_value.
3707         (extract_range_from_cond_expr): Likewise.
3708         (extract_range_from_expr): Likewise.
3709         (extract_range_from_unary_expr): Likewise.  Don't create a range
3710         which overflows on both sides.
3711         (vrp_meet): Check for a useless range.
3712         (vrp_visit_phi_node): If we see a constant which looks like an
3713         overflow infinity, turn off the TREE_OVERFLOW flag.
3714
3715 2007-04-24  Ian Lance Taylor  <iant@google.com>
3716
3717         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
3718
3719 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
3720
3721         PR diagnostic/25923
3722         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
3723         diagnostic message is being built.
3724         * tree-pretty-print.c (dump_generic_node): Only write the
3725         formatted text into BUFFER's stream if we are not building a
3726         diagnostic message.
3727         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
3728         dump_generic_node.
3729         * Makefile.in (toplev.o): Depend on tree-pass.h.
3730
3731 2007-04-24  Ian Lance Taylor  <iant@google.com>
3732
3733         PR tree-optimization/31602
3734         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
3735         conditionals in the copied loop header.
3736         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
3737         warnings if TREE_NO_WARNING is set.
3738         * doc/invoke.texi (Warning Options): Clarify that
3739         -Wstrict-overflow does not warn about loops.
3740
3741 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
3742
3743         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
3744         expand on the comment about _Decimal128 arguments and check the
3745         integer result of the modulus operation; for 64-bit ELF ABI, ensure
3746         that _Decimal128 argument uses even/odd register pair.
3747         (function_arg): Ditto.
3748
3749 2007-04-24  Hui-May Chang <hm.chang@apple.com>
3750
3751         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
3752         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
3753
3754 2007-04-24  Richard Guenther  <rguenther@suse.de>
3755             Olga Golovanevsky  <olga@il.ibm.com>
3756
3757         * fold-const.c (multiple_of_p): Check for bottom
3758         to be zero.
3759
3760 2007-04-24  Richard Henderson  <rth@redhat.com>
3761
3762         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
3763         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
3764         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
3765         looking for non-zero bits shifted out.  Avoid a recursive call
3766         when constructing the scalar.
3767         (__floatundisf): Likewise.
3768
3769 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
3770
3771         * dwarf2out.c (field_byte_offset): Move the existing logic
3772         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
3773         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
3774
3775 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3776
3777         PR target/31641
3778         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
3779         argument of 0 for memset.
3780         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
3781         unsigned shift instead of the signed variant.
3782
3783 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3784
3785         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
3786         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
3787         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
3788         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
3789         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
3790         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
3791         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
3792         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
3793         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
3794         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
3795         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
3796         "mul<mode>3", "div<mode>3"): Insn definitions added.
3797         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
3798         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
3799         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
3800         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
3801         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
3802         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
3803         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
3804         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
3805         TARGET_FLOAT_FORMAT): Macro definitions removed.
3806         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
3807         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
3808         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
3809         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
3810         (s390_gen_rtx_const_DI): Function removed.
3811         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
3812
3813 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
3814
3815         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
3816         over an external ffs function.
3817
3818 2007-04-24  Chao-ying Fu  <fu@mips.com>
3819             Richard Sandiford  <richard@nildram.co.uk>
3820
3821         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
3822         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
3823         (smadd_widen_optab, umadd_widen_optab): Define.
3824         * optabs.c (init_optabs): Initialize smadd_widen_optab and
3825         umadd_widen_optab.
3826         * genopinit.c (optabs): Fill in smadd_widen_optab and
3827         umadd_widen_optab.
3828         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
3829         and umadd_widen_optab to implement multiply-add sequences.
3830         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
3831         (<u>maddsidi4): ...this.  Extend condition to include
3832         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
3833         of operand 0 to "ka" and use the three-operand form of madd<u>
3834         for TARGET_DSPR2.
3835         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
3836         to define_expands.
3837         * config/mips/constraints.md (ka): New register constraint.
3838
3839 2007-04-24  Jan Hubicka  <j@suse.cz>
3840
3841         Revert:
3842
3843         2007-04-23  Jan Hubicka  <jh@suse.cz>
3844         * function.c (init_function_start): Don't init line number info.
3845         (expand_function_end): Update.
3846         (reset_block_changes, record_block_change, finalize_block_changes,
3847         check_block_change, free_block_changes): Kill.
3848         * function.h (reset_block_changes, record_block_change,
3849         finalize_block_changes, check_block_change, free_block_changes): Remove
3850         prototypes.
3851         (struct function): Remove ib_boundaries_block.
3852         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
3853         Use curr_insn_locator to initialize locator.
3854         (emit_line_note): Remove.
3855         * cfgexpand.c (expand_gimple_cond_expr): Update.
3856         (construct_exit_block): Likewise.
3857         (tree_expand_cfg): Initialize/finalize locators.
3858         * expr.c (expand_expr_real): Update.
3859         * cfglayout.c (line_locators_locs, line_locators_lines,
3860         file_locators_locs, file_locators_files): Remove.
3861         (set_block_levels): Move to cfgexpand.c.
3862         (insn_locators_initialize): Remove.
3863         (pass_insn_locators_initialize): Remove.
3864         (locations_locators_locs, locations_locators_vals): New static vars.
3865         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
3866         Likewise.
3867         (insn_locators_alloc, insn_locators_finalize,
3868         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3869         New functions.
3870         (locator_location): New.
3871         (locator_line, locator_file): Rewrite.
3872         * rtl.h (emit_line_note): Kill.
3873         (insn_locators_alloc, insn_locators_finalize,
3874         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3875         Declare.
3876         * tree-inline.c (initialize_cfun): Do not initialize
3877         ib_boundaries_block.
3878         * passes.c (pass_insn_locators_initialize): Remove.
3879
3880 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
3881
3882         * doc/invoke.texi: Removed leading '-' from option index entries.
3883
3884 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
3885
3886         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
3887         Use phi_nodes_ptr.
3888         (create_phi_node): Use set_phi_nodes.
3889         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
3890         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
3891         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
3892         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
3893         (bsi_start, bsi_last): Use bb_stmt_list.
3894         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
3895         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
3896         Traverse the statements using tsi iterator.
3897         * basic-block.h (struct basic_block_def): Fields stmt_list
3898         and phi_nodes moved to ...
3899         (struct tree_bb_info): ... new structure.
3900         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
3901         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
3902         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
3903         (tree_verify_flow_info): Verify that il.tree is not set for
3904         entry and exit block.
3905         (tree_split_block): Use set_bb_stmt_list.
3906
3907 2007-04-23  Mike Stump  <mrs@apple.com>
3908
3909         * config/i386/i386.c (ix86_tune_features
3910         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
3911         nocona and core2.
3912
3913 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
3914
3915         * config/i386/i386.md (prefix_extra): New attribute.
3916         (length): Add prefix_extra.
3917
3918         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
3919         (sse2_movntv2di): Likewise.
3920         (sse2_cvtps2dq): Likewise.
3921         (sse2_cvtpd2pi): Likewise.
3922         (sse2_cvttpd2pi): Likewise.
3923         (*sse2_cvtpd2ps): Likewise.
3924         (*add<mode>3): Likewise.
3925         (sse2_ssadd<mode>3): Likewise.
3926         (sse2_usadd<mode>3): Likewise.
3927         (*sub<mode>3): Likewise.
3928         (sse2_sssub<mode>3): Likewise.
3929         (sse2_ussub<mode>3): Likewise.
3930         (*mulv8hi3): Likewise.
3931         (*smulv8hi3_highpart): Likewise.
3932         (*umulv8hi3_highpart): Likewise.
3933         (sse2_umulv2siv2di3): Likewise.
3934         (sse2_pmaddwd): Likewise.
3935         (ashr<mode>3): Likewise.
3936         (lshr<mode>3): Likewise.
3937         (ashl<mode>3): Likewise.
3938         (sse2_ashlti3): Likewise.
3939         (sse2_lshrti3): Likewise.
3940         (*umaxv16qi3): Likewise.
3941         (*smaxv8hi3): Likewise.
3942         (*uminv16qi3): Likewise.
3943         (*sminv8hi3): Likewise.
3944         (sse2_eq<mode>3): Likewise.
3945         (sse2_gt<mode>3): Likewise.
3946         (*and<mode>3): Likewise.
3947         (sse2_nand<mode>3): Likewise.
3948         (*ior<mode>3): Likewise.
3949         (*xor<mode>3): Likewise.
3950         (sse2_packsswb): Likewise.
3951         (sse2_packssdw): Likewise.
3952         (sse2_packuswb): Likewise.
3953         (sse2_punpckhbw): Likewise.
3954         (sse2_punpcklbw): Likewise.
3955         (sse2_punpckhwd): Likewise.
3956         (sse2_punpcklwd): Likewise.
3957         (sse2_punpckhdq): Likewise.
3958         (sse2_punpckldq): Likewise.
3959         (sse2_punpckhqdq): Likewise.
3960         (sse2_punpcklqdq): Likewise.
3961         (*sse2_pinsrw): Likewise.
3962         (*sse2_pextrw): Likewise.
3963         (sse2_pshufd_1): Likewise.
3964         (sse2_uavgv16qi3): Likewise.
3965         (sse2_uavgv8hi3): Likewise.
3966         (sse2_psadbw): Likewise.
3967         (sse2_pmovmskb): Likewise.
3968         (*sse2_maskmovdqu): Likewise.
3969         (*sse2_maskmovdqu_rex64): Likewise.
3970         (sse4a_extrqi): Likewise.
3971         (sse4a_extrq): Likewise.
3972         (sse3_lddqu): Set prefix_rep.
3973         (sse3_addsubv4sf3): Likewise.
3974         (sse3_haddv4sf3): Likewise.
3975         (sse3_hsubv4sf3): Likewise.
3976         (sse_cvtss2si): Likewise.
3977         (sse_cvtss2si_2): Likewise.
3978         (sse_cvtss2siq): Likewise.
3979         (sse_cvtss2siq_2): Likewise.
3980         (sse_cvttss2si): Likewise.
3981         (sse_cvttss2siq): Likewise.
3982         (sse2_cvttps2dq): Likewise.
3983         (sse3_movshdup): Likewise.
3984         (sse3_movsldup): Likewise.
3985         (sse2_cvtsd2si): Likewise.
3986         (sse2_cvtsd2si_2): Likewise.
3987         (sse2_cvtsd2siq): Likewise.
3988         (sse2_cvtsd2siq_2): Likewise.
3989         (sse2_cvttsd2si): Likewise.
3990         (sse2_cvttsd2siq): Likewise.
3991         (*sse2_cvtpd2dq): Likewise.
3992         (*sse2_cvttpd2dq): Likewise.
3993         (sse2_pshuflw_1): Likewise.
3994         (sse2_pshufhw_1): Likewise.
3995         (sse4a_insertqi): Likewise.
3996         (sse4a_insertq): Likewise.
3997         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
3998         (ssse3_phadddv4si3): Likewise.
3999         (ssse3_phaddswv8hi3): Likewise.
4000         (ssse3_phsubwv8hi3): Likewise.
4001         (ssse3_phsubdv4si3): Likewise.
4002         (ssse3_phsubswv8hi3): Likewise.
4003         (ssse3_pmaddubswv8hi3): Likewise.
4004         (ssse3_pmulhrswv8hi3): Likewise.
4005         (ssse3_pshufbv16qi3): Likewise.
4006         (ssse3_psign<mode>3): Likewise.
4007         (ssse3_palignrti): Likewise.
4008         (abs<mode>2): Likewise.
4009         (ssse3_phaddwv4hi3): Set prefix_extra.
4010         (ssse3_phadddv2si3): Likewise.
4011         (ssse3_phaddswv4hi3): Likewise.
4012         (ssse3_phsubwv4hi3): Likewise.
4013         (ssse3_phsubdv2si3): Likewise.
4014         (ssse3_phsubswv4hi3): Likewise.
4015         (ssse3_pmaddubswv4hi3): Likewise.
4016         (ssse3_pmulhrswv4hi3): Likewise.
4017         (ssse3_pshufbv8qi3): Likewise.
4018         (ssse3_psign<mode>3): Likewise.
4019         (ssse3_palignrdi): Likewise.
4020         (abs<mode>2): Likewise.
4021         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
4022         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
4023         (sse2_pmovmskb): Set mode to SI instead of V2DF.
4024
4025 2007-04-23  Nick Clifton  <nickc@redhat.com>
4026
4027         * params.def: Fix formatting of emacs local variables.
4028
4029 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
4030
4031         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
4032         move if inter-unit move isn't allowed.
4033         Don't split moving the first element of V2DI to DI to inter-unit
4034         move if inter-unit move isn't allowed.
4035
4036 2007-04-23  Richard Guenther  <rguenther@suse.de>
4037
4038         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
4039         and CDI_POST_DOMINATORS separately.
4040
4041 2007-04-23  Nick Clifton  <nickc@redhat.com>
4042
4043         * c.opt (Wformat-contains-nul): Add warning attribute.
4044
4045 2007-04-23  Jan Hubicka  <jh@suse.cz>
4046
4047         * function.c (init_function_start): Don't init line number info.
4048         (expand_function_end): Update.
4049         (reset_block_changes, record_block_change, finalize_block_changes,
4050         check_block_change, free_block_changes): Kill.
4051         * function.h (reset_block_changes, record_block_change,
4052         finalize_block_changes, check_block_change, free_block_changes): Remove
4053         prototypes.
4054         (struct function): Remove ib_boundaries_block.
4055         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
4056         Use curr_insn_locator to initialize locator.
4057         (emit_line_note): Remove.
4058         * cfgexpand.c (expand_gimple_cond_expr): Update.
4059         (construct_exit_block): Likewise.
4060         (tree_expand_cfg): Initialize/finalize locators.
4061         * expr.c (expand_expr_real): Update.
4062         * cfglayout.c (line_locators_locs, line_locators_lines,
4063         file_locators_locs, file_locators_files): Remove.
4064         (set_block_levels): Move to cfgexpand.c.
4065         (insn_locators_initialize): Remove.
4066         (pass_insn_locators_initialize): Remove.
4067         (locations_locators_locs, locations_locators_vals): New static vars.
4068         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
4069         Likewise.
4070         (insn_locators_alloc, insn_locators_finalize,
4071         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4072         New functions.
4073         (locator_location): New.
4074         (locator_line, locator_file): Rewrite.
4075         * rtl.h (emit_line_note): Kill.
4076         (insn_locators_alloc, insn_locators_finalize,
4077         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4078         Declare.
4079         * tree-inline.c (initialize_cfun): Do not initialize
4080         ib_boundaries_block.
4081         * passes.c (pass_insn_locators_initialize): Remove.
4082
4083 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4084
4085         PR middle-end/31448
4086         * expr.c (reduce_to_bit_field_precision): Handle
4087         CONST_INT rtx's.
4088
4089 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
4090
4091         PR tree-optimization/24659
4092         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
4093         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
4094         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
4095         * genopinit.c (optabs): Rename vec_pack_mod_optab
4096         to vec_pack_trunc_optab.
4097         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
4098         early for scalar floating point operands for NOP_EXPR.
4099         (vectorizable_type_promotion): Ditto.
4100         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
4101         vec_pack_trunc_optab.
4102         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
4103
4104         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
4105         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
4106         Rename from VEC_PACK_MOD_EXPR.
4107         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
4108         * expr.c (expand_expr_real_1): Ditto.
4109         * tree-inline.c (estimate_num_insns_1): Ditto.
4110         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
4111
4112         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
4113         (vec_unpacks_lo_v4sf): Ditto.
4114         (vec_pack_trunc_v2df): Ditto.
4115         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
4116         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
4117         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
4118
4119         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
4120         vec_pack_mod_v8hi.
4121         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
4122
4123         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
4124         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
4125         packing of floating point operands.
4126         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
4127         represent unpacking of floating point operands.
4128         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
4129         [vec_unpacks_hi]: Ditto.
4130         [vec_unpacks_lo]: Ditto.
4131
4132 2007-04-22  Jan Hubicka  <jh@suse.cz>
4133
4134         * final.c (rest_of_handle_final): Call
4135         targetm.asm_out.constructor/targetm.asm_out.destructor
4136         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
4137         proper priority via decl_*_priority_insert.
4138         * c-common.c (c_expand_body): Likewise.
4139
4140 2007-04-22  Richard Guenther  <rguenther@suse.de>
4141
4142         PR tree-optimization/29789
4143         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
4144         (rewrite_reciprocal): New helper split out from
4145         determine_invariantness_stmt.
4146         (rewrite_bittest): Likewise.
4147         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
4148         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
4149         is not.
4150
4151 2007-04-22  Revital Eres  <eres@il.ibm.com>
4152
4153         * loop-unroll.c (var_to_expand): New field to support also
4154         insns of the form x = something + x.
4155         (analyze_insn_to_expand_var): Use it.
4156         (expand_var_during_unrolling): Likewise.
4157
4158 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
4159
4160         * predict.c: Include pointer-set.h.
4161         (bb_predictions): New variable.
4162         (tree_predicted_by_p, tree_predict_edge,
4163         remove_predictions_associated_with_edge): Use bb_predictions map
4164         instead of bb->predictions.
4165         (clear_bb_predictions, assert_is_empty): New functions.
4166         (combine_predictions_for_bb): Use bb_predictions map.  Call
4167         clear_bb_predictions.
4168         (tree_estimate_probability): Create and free bb_predictions map.
4169         * Makefile.in (predict.o): Add pointer-set.h dependency.
4170         * basic-block.h (struct basic_block_def): Remove predictions
4171         field.
4172         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
4173
4174 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
4175
4176         PR target/31480
4177         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
4178         is null.
4179
4180 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4181
4182         * timevar.c (timevar_print): Change reference of --disable-checking to
4183         --enable-checking=release.  Also warn if assert checking is disabled.
4184
4185 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4186
4187         PR C/30265
4188         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
4189         decl as addressable if the compound literal was marked as
4190         addressable.
4191         Mark the decl as a gimple register if it is a complex or
4192         vector decl and does not live in memory.
4193
4194 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4195
4196         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
4197         (GENERIC_NEXT): New function macro.
4198         (PHI_CHAIN): Use phi_node's new chain variable.
4199         (tree_phi_node): Change tree_common to tree_base
4200         and add the chain field.
4201         * tree-phinodes.c (make_phi_node): Don't set
4202         TREE_TYPE on the new node.
4203         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
4204         instead of checking GIMPLE_TUPLE_P in chain_next.
4205         * tree-vect-transform.c
4206         (get_initial_def_for_induction): Look at
4207         PHI_RESULT_TREE for the type of the phi node.
4208         (update_vuses_to_preheader): Use PHI_CHAIN
4209         instead of TREE_CHAIN on the phi node.
4210         * tree-ssa-structalias.c (compute_points_to_sets):
4211         Likewise.
4212         (ipa_pta_execute): Likewise.
4213
4214 2007-04-21  Richard Guenther  <rguenther@suse.de>
4215
4216         PR middle-end/31136
4217         * fold-const.c (fold_unary): Call fold_convert_const on the
4218         original tree.
4219
4220 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
4221
4222         * gcse.c (store_killed_in_insn): Handle PARALLELs.
4223         (store_killed_in_pat): New.
4224
4225 2007-04-20  Richard Henderson  <rth@redhat.com>
4226
4227         PR target/31628
4228         * config/i386/i386.c (type_has_variadic_args_p): Look for any
4229         TREE_LIST with a void_type_node value, not void_list_node exactly.
4230
4231 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
4232
4233         * doc/standards.texi: Re-arrange into language-specific
4234         subsections. Add a C++ section, documenting which standards we
4235         support.
4236
4237 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
4238
4239         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
4240         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
4241
4242 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
4243
4244         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
4245         ecrti.o and crtbegin.o.
4246         (LIB_DEFAULT_SPEC): Include -lc.
4247         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
4248
4249 2007-04-20  Richard Henderson  <rth@redhat.com>
4250
4251         PR target/28623
4252         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
4253         argument; update all callers.
4254         (get_unaligned_offset): New.
4255         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
4256         get_unaligned_address, just pass on the address directly.
4257         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
4258         the subreg in the helper patterns.
4259         (unaligned_extendqidi_le): Use get_unaligned_offset.
4260         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
4261         (unaligned_extendhidi_be): Likewise.
4262         (unaligned_extendhidi): Tidy.
4263         * config/alpha/alpha-protos.h: Update.
4264
4265 2007-04-20  Richard Henderson  <rth@redhat.com>
4266
4267         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
4268         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
4269         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
4270         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
4271         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
4272         (CPP_SPEC): Don't include %(cpp_subtarget).
4273         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
4274         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
4275         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
4276
4277 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
4278
4279         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
4280         for __builtin_ia32_cmpordss.
4281
4282         PR tree-optimization/31632
4283         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
4284         and arg1 for optimizations of comparison against min/max values.
4285         Fold arg0 to arg1's type for optimizations of comparison against
4286         min+1 and max-1 values.
4287
4288 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
4289
4290         * reload.c (combine_reloads): When trying to use a dying register,
4291         check whether it's uninitialized and don't use if so.
4292
4293 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
4294
4295         * fold-const.c: Remove prototypes for native_encode_expr and
4296         native_interpret_expr.
4297         (native_encode_expr): Make non-static.
4298         (native_interpret_expr): Likewise.
4299         * tree.h: Add prototypes for the above.
4300
4301 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
4302
4303         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
4304         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
4305         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
4306         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
4307         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
4308         Add length attributes.
4309
4310 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
4311
4312         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
4313         not that it is 1.
4314
4315         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
4316         __STDC_WANT_DEC_FP__.
4317
4318 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
4319
4320         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
4321         for long double compatibility.
4322         * configure: Regenerate.
4323
4324 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
4325
4326         PR rtl-optimization/29841
4327         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
4328         trap instructions.
4329         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
4330         that may cause control flow transfer from being moved.
4331
4332 2007-04-18  Jan Hubicka  <jh@suse.cz>
4333
4334         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
4335         types.
4336
4337 2007-04-18  Eric Christopher  <echristo@apple.com>
4338
4339         * config/rs6000/darwin.md (load_macho_picbase): Use link register
4340         only. Update operands.
4341         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
4342         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
4343         link register to pic register.
4344
4345 2007-04-18  Dirk Mueller  <dmueller@suse.de>
4346
4347         PR diagnostic/31227
4348         * tree-vrp.c (search_for_addr_array): New.
4349         (check_array_bounds): Suppress warning about
4350         address taken of array refs if its not de-referenced.
4351
4352 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
4353
4354         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
4355         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
4356
4357         * tree-vectorizer.h (NITERS_KNOWN_P): New.
4358         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
4359         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
4360
4361         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
4362         dump print.
4363         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
4364         print message.
4365         (vect_analyze_scalar_cycles): Fix indentation.
4366         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
4367         (vect_mark_relevant): Include phis in relevance analysis.
4368
4369         * tree-vect-transform.c (vect_transform_loop): Add an assert.
4370
4371 2007-04-18  Anatoly Sokolov <aesok@post.ru>
4372
4373         * config/avr/avr.c (ptrreg_to_str): Replace error() with
4374         output_operand_lossage().
4375
4376 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
4377
4378         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
4379         the unused code for reduction without adjust-in-epilog to simplify the
4380         function.
4381
4382 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
4383
4384         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
4385         (S390_TDC_NEGATIVE_ZERO): New constant.
4386         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
4387         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
4388         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
4389         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
4390         (S390_TDC_POSITIVE_INFINITY): New constant.
4391         (S390_TDC_NEGATIVE_INFINITY): New constant.
4392         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
4393         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
4394         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
4395         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
4396         (S390_TDC_INFINITY): New constant.
4397         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
4398         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
4399         optimization for UNSPEC_CCZ_TO_INT.
4400         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
4401         ("*ccz_to_int"): New insn.
4402         ("isinf<mode>2"): New insn.
4403         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
4404         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
4405         (UNSPEC_CCZ_TO_INT): New constant.
4406
4407 2007-04-18  Richard Guenther  <rguenther@suse.de>
4408
4409         PR tree-optimization/19431
4410         PR tree-optimization/21463
4411         * tree-pass.h (pass_phiprop): Declare.
4412         * passes.c (init_optimization_passes): New phiprop pass.
4413         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
4414         (phivn_valid_p): New helper function.
4415         (phiprop_insert_phi): Likewise.
4416         (propagate_with_phi): Likewise.
4417         (tree_ssa_phiprop): New propagator propagating loads
4418         through phi nodes if profitable.
4419
4420 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
4421
4422         * tree-vect-analyze.c (process_use): New function.
4423         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
4424         Check phis in all bbs.
4425         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
4426         assert.
4427
4428 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
4429
4430         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
4431         we use REG_EQUAL.
4432
4433 2007-04-17  Anatoly Sokolov <aesok@post.ru>
4434
4435         PR target/30483
4436         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
4437         error().
4438
4439 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
4440
4441         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
4442         on "0".
4443         (sse_vmmulv4sf3): Likewise.
4444         (sse2_vmaddv2df3): Likewise.
4445         (sse2_vmmulv2df3): Likewise.
4446
4447 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
4448
4449         PR rtl-optimization/31360
4450         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
4451         (target_reg_cost): New.
4452         (init_set_costs): Initialize target_reg_cost.  Add comments
4453         regarding the rationale of the costs.
4454         (global_cost_for_size): Renamed to...
4455         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
4456         of register pressure.
4457         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
4458         estimate_reg_pressure_cost.  Add number of ivs.
4459         (determine_set_costs): Dump target_reg_cost.
4460         * loop-invariant.c (gain_for_invariant):  Use
4461         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
4462         (best_gain_for_invariant, find_invariants_to_move): Remove
4463         n_inv_uses.
4464         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
4465         (target_reg_cost): Declare.
4466         (global_cost_for_size): Declaration removed.
4467         (estimate_reg_pressure_cost): Declare.
4468
4469 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
4470
4471         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
4472         regnos into even/odd register pairs.
4473         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
4474         TDmode similar to the other floating point modes.
4475         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
4476         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
4477         define_expand's.
4478         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
4479         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
4480         (movdd_hardfloat64): Use TARGET_MFPGPR.
4481
4482 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
4483
4484         * reload1.c (delete_output_reload): Don't count output in n_inherited.
4485
4486         Revert
4487         2005-01-05  Richard Henderson  <rth@redhat.com>
4488         PR rtl-opt/10692
4489         * reload1.c (do_input_reload): Restrict the optimization deleteing
4490         a previous output reload to RELOAD_FOR_INPUT.
4491
4492 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
4493
4494         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
4495         induc_vec_info_type.
4496         (vectorizable_induction): New function declaration.
4497         * tree-vect-transform.c (get_initial_def_for_induction): No need to
4498         check if already vectorized.  Find first place in BB where new stmts
4499         can be inserted.  Takes only one argument.
4500         (vectorizable_induction): New function.
4501         (vect_transform_stmt): Add case for induc_vec_info_type to call
4502         vectorizable_induction.
4503         (vect_transform_loop): Consider phis for vectorization.
4504         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
4505         condition.
4506         (analyze_operations): Call vectorizable_induction when analyzing phis.
4507         Fix comment.
4508         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
4509         (vect_mark_relevant): Include phis in relevance analysis.
4510         (vect_mark_stmts_to_be_vectorize): Likewise.
4511         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
4512
4513 2007-04-16  Lawrence Crowl  <crowl@google.com>
4514
4515         * doc/invoke.texi (Debugging Options): Add documentation for the
4516         -femit-struct-debug options -femit-struct-debug-baseonly,
4517         -femit-struct-debug-reduced, and
4518         -femit-struct-debug-detailed[=...].
4519
4520         * c-opts.c (c_common_handle_option): Add
4521         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
4522         and OPT_femit_struct_debug_detailed_.
4523         * c.opt: Add specifications for
4524         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
4525         and -femit-struct-debug-detailed[=...].
4526         * opts.c (set_struct_debug_option): Parse the
4527         -femit-struct-debug-... options.
4528         * opts.c (matches_main_base, main_input_basename,
4529         main_input_baselength, base_of_path, matches_main_base): Add
4530         variables and functions to compare header base name to compilation
4531         unit base name.
4532         * opts.c (should_emit_struct_debug): Add to determine to emit a
4533         structure based on the option.
4534         (dump_struct_debug) Also disabled function to debug this
4535         function.
4536         * opts.c (handle_options): Save the base name of the
4537         compilation unit.
4538
4539         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
4540         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
4541         This hook indicates if a type is generic.  Set it by default
4542         to "never generic".
4543         * langhooks.h (struct lang_hooks_for_types): Add a new hook
4544         to determine if a struct type is generic or not.
4545         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
4546         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
4547         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
4548         with live C++ hook.
4549
4550         * flags.h (enum debug_info_usage): Add an enumeration to describe
4551         a program's use of a structure type.
4552         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
4553         to indicate the program's usage of the type.  Filter structs based
4554         on the -femit-struct-debug-... specification.
4555         (gen_type_die): Split into two routines, gen_type_die and
4556         gen_type_die_with_usage.  gen_type_die is now a wrapper
4557         that assumes direct usage.
4558         (gen_type_die_with_usage): Replace calls to gen_type_die
4559         with gen_type_die_with_usage adding the program usage of
4560         the referenced type.
4561         (dwarf2out_imported_module_or_decl): Suppress struct debug
4562         information using should_emit_struct_debug when appropriate.
4563
4564 2007-04-16  Ian Lance Taylor  <iant@google.com>
4565
4566         PR tree-optimization/31522
4567         * tree-vrp.c (vr_phi_edge_counts): New static variable.
4568         (vrp_initialize): Allocate vr_phi_edge_counts.
4569         (vrp_visit_phi_node): Don't push to infinity if we saw a new
4570         executable edge.  Drop test for all constants.
4571         (vrp_finalize): Free vrp_phi_edge_counts.
4572
4573         * doc/cpp.texi (Common Predefined Macros): Clarify description of
4574         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
4575
4576         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
4577         predecessors at head rather than tail.
4578
4579 2007-04-16  Matthias Klose  <doko@debian.org>
4580
4581         * config/alpha/linux.h (CPP_SPEC): Define.
4582         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
4583
4584 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
4585
4586         * function.h: Remove sequence_stack extern declaration.
4587
4588 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
4589
4590         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
4591         TARGET_FIDOA.
4592         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
4593         defined.
4594
4595 2007-04-16  Anatoly Sokolov <aesok@post.ru>
4596
4597         * config/avr/avr.c (avr_arch_types): Rearranging  array.
4598         (enum avr_arch): Add.
4599         (avr_mcu_types): Use avr_arch enumeration constants instead of
4600         numbers.
4601         * config/avr/avr.h (LINK_SPEC): Simplify.
4602
4603 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
4604
4605         * config/m68k/m68k.c (m68k_libcall_value,
4606         m68k_function_value): Use macros for register names more.
4607
4608         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
4609         instead.
4610         (M68K_REGNAME): Use A6_REG.
4611         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
4612
4613 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4614
4615         PR middle-end/28071
4616         * sched-int.h (struct deps): Split field 'pending_lists_length' into
4617         'pending_read_list_length' and 'pending_write_list_length'.  Update
4618         comment.
4619         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
4620         to handle two length counters instead of one.  Update all uses.
4621         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
4622         two length counters instead of one.
4623         * sched-rgn.c (propagate_deps): Update to handle two length counters
4624         instead of one.
4625
4626 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
4627
4628         PR target/31582
4629         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
4630         copy of source, pass it to ix86_expand_vector_set and return
4631         it as target.
4632
4633 2007-04-16  David Ung  <davidu@mips.com>
4634             Joseph Myers  <joseph@codesourcery.com>
4635
4636         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
4637         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
4638         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
4639         Add 74K processor information.
4640         * config/mips/mips.md: Include 74k.md.
4641         (cpu): Add 74kc,74kf,74kx.
4642         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
4643         * config/mips/74k.md: New.
4644         * doc/invoke.texi (MIPS Options): Document 74K support.
4645
4646 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
4647
4648         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
4649         vectorizable_* functions.
4650         * tree-vect-transform.c (vectorizable_call): Add check for
4651         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
4652         (vectorizable_store): likewise.
4653         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
4654         Add comments.
4655         (vectorizable_operation, vectorizable_type_demotion): Likewise.
4656         (vectorizable_type_promotion, vectorizable_load): Likewise.
4657         (vectorizable_live_operation, vectorizable_condition): Likewise.
4658         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
4659         STMT_VINFO_LIVE_P.
4660         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
4661
4662 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4663
4664         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
4665         register numbers more.
4666         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
4667         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
4668         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
4669         FUNCTION_VALUE_REGNO_P): Likewise.
4670         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
4671         STATIC_CHAIN_REGNUM): Likewise.
4672         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
4673         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
4674         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
4675         * config/m68k/m68k.md (FP_REG): New.
4676
4677 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4678
4679         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
4680         alignment on fido.
4681
4682 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4683
4684         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
4685         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
4686         comment typos.
4687
4688 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
4689
4690         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
4691         cold loops.
4692
4693 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4694
4695         PR c/31520
4696         * c-decl.c (finish_decl): Grab the type of the decl after the call
4697         to store_init_value.
4698
4699 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
4700
4701         * common.opt (fforward-propagate): Fix "Optimization" annotation.
4702
4703 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
4704
4705         PR c++/25874
4706         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
4707         post dominators and cleanup cfg before returning.
4708
4709 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4710
4711         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
4712         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
4713
4714 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
4715
4716         * config.gcc: Recognize fido.
4717         * config/m68k/m68k-devices.def (fidoa): New.
4718         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
4719         __mfido__.
4720         (FL_FIDOA, TARGET_FIDOA): New.
4721         * config/m68k/m68k.opt (mfidoa): New.
4722
4723 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4724
4725         PR middle-end/31322
4726         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
4727         when a personality function is used.
4728
4729 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
4730
4731         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
4732
4733 2007-04-13  Mike Stump  <mrs@apple.com>
4734
4735         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
4736         we can...
4737         * config/darwin.opt (fapple-kext): Make C++ only.
4738         * config/darwin.c (darwin_override_options): Remove code to ensure
4739         -fapple-kext is given for C++ only.
4740
4741 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
4742
4743         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
4744         * config/mips/mips.c (override_options): Call
4745         SUBTARGET_OVERRIDE_OPTIONS, if defined.
4746
4747 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
4748
4749         * config/i386/i386.opt (msvr3-shlib): Removed.
4750
4751         * doc/invoke.texi: Remove -msvr3-shlib.
4752
4753 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
4754
4755         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
4756         with "popcnt" instruction.
4757
4758 2007-04-13  Richard Guenther  <rguenther@suse.de>
4759
4760         PR tree-optimization/21258
4761         * tree-vrp.c (compare_case_labels): New helper.
4762         (find_switch_asserts): New function.
4763         (find_assert_locations): Call it for SWITCH_EXPRs.
4764
4765 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
4766
4767         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
4768         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
4769         check is now implied in X87_FLOAT_MODE_P.
4770         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
4771         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
4772         (fix_trunc<mode>_i386_fisttp): Ditto.
4773         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
4774         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
4775         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
4776         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
4777         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
4778         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
4779         (unnamed_splitters): Ditto.
4780         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
4781         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
4782         FIRST_SSE_REG for local functions when SSE math is enabled or
4783         for functions with sseregparm attribute.
4784         (standard_80387_constant_p): Return -1 if mode is not
4785         X87_FLOAT_MODE_P.
4786         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
4787         (ix86_expand_compare): Ditto.
4788         (ix86_expand_carry_flag_compare): Ditto.
4789         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
4790         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
4791         DECIMAL_FLOAT_MODE_P.
4792         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
4793         of SCALAR_FLOAT_MODE_P.
4794         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
4795         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
4796         checks before FLOAT_MODE_P.
4797         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
4798         before FLOAT_MODE_P.
4799         [DIV]: Ditto.
4800         [NEG]: Ditto.
4801         [ABS]: Ditto.
4802         [SQRT]: Ditto.
4803         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
4804
4805 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
4806             Charles Wilson  <libtool@cwilson.fastmail.fm>
4807
4808         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
4809         (libgcc.mvars): Don't depend on them.
4810         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
4811         * exec-tool.in: New.
4812
4813 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
4814
4815         * doc/invoke.text (--help): Document --help=common.
4816
4817 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
4818
4819         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
4820
4821 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4822
4823         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
4824         * genemit.c (main): Emit #include "integrate.h".
4825         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
4826         (LOADGP_RTP): New mips_loadgp_style.
4827         * config/mips/mips.h: Include config/vxworks-dummy.h.
4828         (TARGET_RTP_PIC): New macro.
4829         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
4830         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
4831         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
4832         for TARGET_RTP_PIC.
4833         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
4834         -mvxworks-pic when using -mrtp and a PIC option.
4835         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
4836         for RTP PIC.
4837         (mips_symbolic_constant_p, mips_symbolic_address_p)
4838         (mips_symbol_insns): Handle SYMBOL_HALF.
4839         (override_options): Warn about -G and -mrtp being used together.
4840         Initialize mips_lo_relocs[SYMBOL_HALF].
4841         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
4842         (mips_emit_loadgp): Handle LOADGP_RTP.
4843         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
4844         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
4845         (tablejump): Handle function-relative case table entries if
4846         TARGET_RTP_PIC.
4847         * config/mips/predicates.md (symbol_ref_operand): New predicate.
4848
4849 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4850
4851         * config/mips/mips.md (load_call<mode>): Allow any general register.
4852         destination.
4853         (sibcall_value_internal, sibcall_value_multiple_internal)
4854         (call_value_internal, call_value_split, call_value_multiple_internal)
4855         (call_value_multiple_split): Remove constraints from operand 0.
4856
4857 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4858
4859         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
4860         rather than loadgp_noshared.
4861         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
4862         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
4863         gen_loadgp.
4864         * config/mips/mips.md (loadgp): Rename to...
4865         (loadgp_newabi): ...this.
4866         (loadgp_noshared): Rename to...
4867         (loadgp_absolute): ...this.
4868
4869 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4870
4871         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
4872         false for locally-binding symbols.
4873         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
4874
4875 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4876
4877         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
4878         (SYMBOL_GOT_PAGE_OFST): ...this.
4879         (SYMBOL_GOT_GLOBAL): Rename to...
4880         (SYMBOL_GOT_DISP): ...this.
4881         (SYMBOL_GOTOFF_GLOBAL): Rename to...
4882         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
4883         * config/mips/mips.c (mips_global_symbol_p): New function.
4884         (mips_symbol_binds_local_p): Likewise.
4885         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
4886         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
4887         and mips_symbol_binds_local_p.
4888         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
4889         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
4890         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
4891         SYMBOL_GOTOFF_DISP.
4892         (mips_ok_for_lazy_binding_p): New function.
4893         (mips_load_call_address, mips_expand_call): Use it.
4894         (mips_dangerous_for_la25_p): Likewise.
4895         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
4896         (*got_disp<mode>): Use got_disp_operand instead of
4897         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
4898         SYMBOL_GOTOFF_GLOBAL.
4899         (*got_page<mode>): Use got_page_ofst_operand instead of
4900         local_got_operand.
4901         * config/mips/predicates.md (const_call_insn_operand): Use
4902         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
4903         (global_got_operand): Rename to...
4904         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
4905         SYMBOL_GOT_GLOBAL.
4906         (local_got_operand): Rename to...
4907         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
4908         of SYMBOL_GOT_LOCAL.
4909
4910 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4911
4912         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
4913         TARGET_CALL_CLOBBERED_GP.
4914         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4915         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
4916         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
4917         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
4918         of TARGET_ABICALLS && !TARGET_NEWABI.
4919         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4920         * config/mips/mips.c (mips_load_call_address): Check
4921         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
4922         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4923         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
4924         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
4925         TARGET_ABICALLS && TARGET_NEWABI.
4926         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
4927         TARGET_ABICALLS.
4928         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
4929         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
4930         TARGET_ABICALLS && TARGET_NEWABI.
4931         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
4932         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
4933         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
4934         whether indirect calls must use $25.
4935         (mips_extra_live_on_entry): Check TARGET_GOT instead of
4936         TARGET_ABICALLS.
4937         * config/mips/mips.md (jal_macro): Check flag_pic and
4938         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
4939         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
4940         instead of TARGET_ABICALLS.
4941         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
4942         TARGET_ABICALLS && TARGET_OLDABI.
4943         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4944         (sibcall): In the comment above the define_insn, mention
4945         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
4946         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
4947         instead of TARGET_ABICALLS.
4948
4949 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4950
4951         * doc/md.texi (Blackfin family constraints): Document PA and PB.
4952         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
4953         (MACFLAGS_MATCH_P): New macro.
4954         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
4955         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
4956         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
4957         the other MACFLAG constants.
4958         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
4959         (flag_machi): Tighten constraints.  Renumber some of the operands.
4960         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
4961         output template.
4962         (flag_machi_parts_acconly): New pattern.
4963         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
4964         used.
4965         (flag_macinit1hi): Tighten constraints.
4966         (flag_mul_macv2hi_parts_acconly): New pattern.
4967
4968         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
4969         Use a more efficient implementation.
4970         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
4971         inline sequences when not optimizing for size.
4972
4973         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
4974         movhi_high2low): Delete, merge functionality into...
4975         (packv2hi): ... this pattern.
4976
4977         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
4978         * config/bfin/bfin.opt (msim): New option.
4979         (mcpu=): New option.
4980         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
4981         (bfin_cpu_t): Typedef of enum bfin_cpu.
4982         (bfin_cpu_type): New declaration.
4983         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
4984         -msim and -mcpu= options.
4985         (LIB_SPEC): Likewise.
4986         * config/bfin/bfin.c (bfin_cpu_type): Define.
4987         (bfin_handle_option): Handle -mcpu= option.
4988         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
4989         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
4990         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
4991
4992 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4993
4994         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
4995         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
4996         (powerpc-wrs-vxworksae): Use ${tm_file}.
4997         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
4998         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
4999         * config/i386/vx-common.h: New file.
5000
5001 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
5002
5003         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
5004         of crt0.o%s.
5005
5006 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
5007
5008         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
5009         ldxtr.
5010
5011 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
5012
5013         PR c++/31078
5014         PR c++/31103
5015         * c-common.c (c_build_qualified_type): Set canonical type
5016         appropriately.
5017
5018 2007-04-12  Richard Guenther  <rguenther@suse.de>
5019
5020         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
5021         lower bound and element size if lower bound is not zero
5022         or either of the ARRAY_REF operands is set.
5023
5024 2007-04-12  Richard Guenther  <rguenther@suse.de>
5025
5026         PR tree-optimization/24689
5027         PR tree-optimization/31307
5028         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
5029         indices by value.
5030         * gimplify.c (canonicalize_addr_expr): To be consistent with
5031         gimplify_compound_lval only set operands two and three of
5032         ARRAY_REFs if they are not gimple_min_invariant.  This makes
5033         it never at this place.
5034         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
5035
5036 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5037
5038         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
5039         null before emitting a .nsubspa directive.
5040
5041 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
5042
5043         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
5044         need_to_partition_p if there are no memory statements in the
5045         function.
5046
5047 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5048
5049         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
5050         (gcd_of_steps_may_divide_p): New function.
5051         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
5052
5053 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
5054
5055         * reload.c (find_reloads_toplev, find_reloads_address,
5056         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
5057         not a pointer equality test, to decide if we need to call
5058         push_reg_equiv_alt_mem.
5059
5060 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
5061
5062         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
5063         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
5064         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
5065
5066 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5067
5068         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
5069         vector to be positive.
5070
5071 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
5072
5073         PR 30735
5074         PR 31090
5075         * doc/invoke.texi: Document --params max-aliased-vops and
5076         avg-aliased-vops.
5077         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
5078         debug_memory_partitions): Move to tree-flow.h
5079         * params.h (AVG_ALIASED_VOPS): Define.
5080         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
5081         users.
5082         (mp_info_t): Likewise.
5083         (get_mem_sym_stats_for): New.
5084         (set_memory_partition): Move from tree-flow-inline.h.
5085         (mark_non_addressable): Only clear the set of symbols for the
5086         partition if it exists.
5087         (dump_memory_partitions): Move from tree-ssa-operands.c
5088         (debug_memory_partitions): Likewise.
5089         (need_to_partition_p): New.
5090         (dump_mem_ref_stats): New.
5091         (debug_mem_ref_stats): New.
5092         (dump_mem_sym_stats): New.
5093         (debug_mem_sym_stats): New.
5094         (update_mem_sym_stats_from_stmt): New.
5095         (compare_mp_info_entries): New.
5096         (mp_info_cmp): Call it.
5097         (sort_mp_info): Change argument to a list of mem_sym_stats_t
5098         objects.
5099         (get_mpt_for): Move from tree-ssa-operands.c.
5100         (find_partition_for): New.
5101         (create_partition_for): Remove.
5102         (estimate_vop_reduction): New.
5103         (update_reference_counts): New.
5104         (build_mp_info): New.
5105         (compute_memory_partitions): Refactor.
5106         Document new heuristic.
5107         Call build_mp_info, update_reference_counts,
5108         find_partition_for and estimate_vop_reduction.
5109         (compute_may_aliases): Populate virtual operands before
5110         calling debugging dumps.
5111         (delete_mem_sym_stats): New.
5112         (delete_mem_ref_stats): New.
5113         (init_mem_ref_stats): New.
5114         (init_alias_info): Call it.
5115         (maybe_create_global_var): Remove alias_info argument.
5116         Get number of call sites and number of pure/const call sites
5117         from gimple_mem_ref_stats().
5118         (dump_alias_info): Call dump_memory_partitions first.
5119         (dump_points_to_info_for): Show how many times a pointer has
5120         been dereferenced.
5121         * opts.c (decode_options): For -O2 set --param
5122         max-aliased-vops to 500.
5123         For -O3 set --param max-aliased-vops to 1000 and --param
5124         avg-aliased-vops to 3.
5125         * fortran/options.c (gfc_init_options): Remove assignment to
5126         MAX_ALIASED_VOPS.
5127         * tree-flow-inline.h (gimple_mem_ref_stats): New.
5128         * tree-dfa.c (dump_variable): Dump memory reference
5129         statistics.
5130         Dump NO_ALIAS* settings.
5131         (referenced_var_lookup): Tidy.
5132         (mem_sym_stats): New.
5133         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
5134         and ORIG are different SSA names for a memory partition.
5135         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
5136         * tree-flow.h (struct mem_sym_stats_d): Define.
5137         (mem_sym_stats_t): Define.
5138         (struct mem_ref_stats_d): Define.
5139         (struct gimple_df): Add field mem_ref_stats.
5140         (enum noalias_state): Define.
5141         (struct var_ann_d): Add bitfield noalias_state.
5142         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
5143         debug_mem_ref_stats, debug_memory_partitions,
5144         debug_mem_sym_stats): Declare.
5145         * tree-ssa-structalias.c (update_alias_info): Update call
5146         sites, pure/const call sites and asm sites in structure
5147         returned by gimple_mem_ref_stats.
5148         Remove local variable IS_POTENTIAL_DEREF.
5149         Increase NUM_DEREFS if the memory expression is a potential
5150         dereference.
5151         Call update_mem_sym_stats_from_stmt.
5152         If the memory references memory, call
5153         update_mem_sym_stats_from_stmt for all the direct memory
5154         symbol references found.
5155         (intra_create_variable_infos): Set noalias_state field for
5156         pointer arguments according to the value of
5157         flag_argument_noalias.
5158         * tree-ssa-structalias.h (struct alias_info): Remove fields
5159         num_calls_found and num_pure_const_calls_found.
5160         (update_mem_sym_stats_from_stmt): Declare.
5161         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
5162         Set default value to 100.
5163         (PARAM_AVG_ALIASED_VOPS): Define.
5164
5165 2007-04-11  Richard Guenther  <rguenther@suse.de>
5166
5167         PR middle-end/31530
5168         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
5169         a * -b + c as c - a * b if we honor sign dependent rounding.
5170
5171 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
5172
5173         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
5174         bfin_expand_strmov.
5175         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
5176         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
5177         variables.
5178         (initialize_trampoline): Don't use old-style function definition.
5179         (bfin_secondary_reload): Mark IN_P argument as unused.
5180
5181 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
5182
5183         PR tree-optimization/31343
5184         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
5185         (build_polynomial_chrec): Return a scalar when the evolution is zero.
5186         * testsuite/gcc.dg/vect/pr31343.c: New.
5187
5188 2007-04-10  Eric Christopher  <echristo@apple.com>
5189
5190         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
5191         * config/i386/i386.md (*cmpfp0): Use.
5192         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
5193         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
5194         (fix_trunc<mode>_i386_fisttp): Ditto.
5195         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
5196         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
5197         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
5198         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
5199         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
5200         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
5201         (unnamed_splitters): Ditto.
5202         * config/i386/i386.c (output_fix_trunc): Assert that
5203         we're not being passed a TFmode operand.
5204
5205 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
5206
5207         PR tree-optimization/31526
5208         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
5209         n_basic_blocks to find newly added blocks.
5210
5211 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
5212
5213         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
5214         alternative.
5215         (fix_trunc<mode>si_sse): Ditto.
5216         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
5217         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
5218         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
5219         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
5220         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
5221         expander using SSEMODEF mode macro.
5222         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
5223         expander using SSEMODEF mode macro.
5224         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
5225         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
5226         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
5227         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
5228         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
5229         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
5230         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
5231         Macroize insn using X87MODEF mode macro.
5232
5233 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
5234
5235         * config/i386/sse.md (sse2_pinsrw): Removed.
5236         (sse2_pextrw): Renamed to ...
5237         (*sse2_pextrw): This.
5238
5239 2007-04-09  Jan Hubicka  <jh@suse.cz>
5240
5241         PR target/27869
5242         * config/i386/sse.md
5243         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
5244         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
5245         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
5246         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
5247
5248 2007-04-09  Jan Hubicka  <jh@suse.cz>
5249
5250         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
5251         multiple fields of union.
5252
5253 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
5254
5255         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
5256         (create_preheaders): Check that loops are available.
5257         (fix_loop_structure): Clean up, improve comments.
5258         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
5259         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
5260         state flags.
5261         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
5262         * predict.c (tree_estimate_probability): Do not call
5263         calculate_dominance_info.  Call create_preheaders.
5264         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
5265         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
5266         flags.
5267         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
5268         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
5269         * tree-cfg.c (tree_split_edge): Make an assert more precise.
5270         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
5271         arguments.
5272
5273 2007-04-08  Jan Hubicka  <jh@suse.cz>
5274
5275         * tree.h (maybe_fold_offset_to_component_ref): Declare.
5276         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
5277         * fold-const.c (fold_unary): Use it.
5278
5279 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5280
5281         * varasm.c (assemble_variable): Remove call to
5282         lang_hooks.decls.prepare_assemble_variable.
5283         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
5284         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
5285         * langhooks.h (lang_hooks_for_decls): Remove
5286         prepare_assemble_variable.
5287
5288 2007-04-08  Mike Stump  <mrs@apple.com>
5289
5290         * config/i386/i386.c: Use inc/dec on Core2.
5291
5292 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
5293
5294         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
5295         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
5296         lhd_tree_inlining_end_inlining): Remove.
5297         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
5298         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
5299         end_inlining hooks.
5300         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
5301         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
5302         lhd_tree_inlining_end_inlining): Remove prototypes.
5303         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
5304         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
5305         LANG_HOOKS_TREE_INLINING_START_INLINING,
5306         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
5307
5308         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
5309         not set it.
5310
5311 2007-04-08  Anatoly Sokolov <aesok@post.ru>
5312
5313         PR target/29932
5314         * config/avr/predicates.md (io_address_operand): Delete predicate.
5315         (low_io_address_operand): Don't use 'mode' argument.
5316         (higth_io_address_operand): Rename ...
5317         (high_io_address_operand): ... to this. Don't use 'mode' argument.
5318         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
5319         for above change.
5320
5321 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
5322
5323         Revert change removing staticp.
5324
5325 2007-04-07  Anatoly Sokolov <aesok@post.ru>
5326
5327         PR target/30289
5328         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
5329         earlyclobber.
5330
5331 2007-04-07  Bruce Korb  <bkorb@gnu.org>
5332
5333         * c.opt: Add -Wformat-contains-nul.
5334         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
5335           -Wformat setting.
5336         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
5337         the NUL byte warning.
5338
5339 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
5340
5341         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
5342
5343 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
5344
5345         * tree.c (staticp): No longer use staticp langhook.
5346         * langhooks.c (lhd_staticp): Removed.
5347         * langhooks.h (struct lang_hooks): Remove staticp.
5348         * c-common.c (c_staticp): Remove.
5349         * c-common.h (c_staticp): Ditto.
5350         * langhooks-defs.h (lhd_staticp): Ditto.
5351         (LHD_HOOKS_STATICP): Ditto
5352         * tree.h (gcc_assert_lowered): New macro.
5353
5354 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
5355
5356         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
5357         argument "reliable".
5358         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
5359         Add argument "reliable".  Propagate it through calls.
5360         (infer_loop_bounds_from_undefined):  Derive number of iterations
5361         estimates from references in blocks that do not dominate loop latch.
5362         (gcov_type_to_double_int): New function.
5363         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
5364         and expected_loop_iterations_unbounded.
5365         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
5366         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
5367         * tree-data-ref.c (estimated_loop_iterations): Export.
5368         (get_references_in_stmt): Fix -- do not return addresses of local
5369         objects.
5370         * cfgloop.h (expected_loop_iterations_unbounded,
5371         estimated_loop_iterations): Declare.
5372
5373 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
5374
5375         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
5376
5377 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
5378
5379         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
5380         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
5381         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
5382         Use output_387_reg_move().
5383         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
5384         expander using X87MODEF12 mode macro.
5385         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
5386         choosing register preferences.  Use output_387_reg_move().
5387         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
5388         instead of "x".  Use output_387_reg_move().
5389         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
5390         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
5391         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
5392         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
5393         Use output_387_reg_move().
5394         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
5395         mode macro.
5396         (*truncxf?f_i387 splitter): Ditto.
5397
5398 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
5399
5400         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
5401         LANG_HOOKS_SAFE_FROM_P.
5402         * expr.c (safe_from_p): Remove langhook call.
5403         * langhooks.h (lang_hooks): Remove safe_from_p.
5404         (lhd_safe_from_p): Remove prototype.
5405         * langhooks.c (lhd_safe_from_p): Remove.
5406
5407 2007-04-06  Jan Hubicka  <jh@suse.cz>
5408
5409         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
5410         functions.
5411
5412 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
5413
5414         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
5415         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
5416         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
5417         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
5418         alternative.
5419         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
5420         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
5421
5422 2007-04-05  Richard Henderson  <rth@redhat.com>
5423
5424         * config/alpha/alpha.c (print_operand) [+]: Remove.
5425         (alpha_end_function): Print nop if call at end of function.
5426         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
5427         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
5428         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
5429         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
5430         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
5431         the call pattern. Update peepholes to match.
5432
5433 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
5434
5435         * doc/extend.texi (Other Builtins): Add decimal float variants
5436         of signbit.
5437         * builtins.def: Ditto.
5438         * builtins.c (expand_builtin): Ditto.
5439
5440 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
5441             H.J. Lu  <hongjiu.lu@intel.com>
5442
5443         PR target/31478
5444         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
5445         of V8HImode when calling ix86_binary_operator_ok.
5446         (sse2_pmaddwd): Call ix86_binary_operator_ok.
5447         (sdot_prodv8hi): Operands 1 and 2 must be register.
5448
5449 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5450
5451         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5452         initialize align to silence bogus warning.
5453
5454 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5455
5456         PR middle-end/22156
5457         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5458         all_no_warning.
5459         (struct sra_walk_fns): Remove use_all parameter from use.
5460         (sra_hash_tree): Handle BIT_FIELD_REFs.
5461         (sra_elt_hash): Don't hash bitfld blocks.
5462         (sra_elt_eq): Skip them in parent compares as well.  Handle
5463         BIT_FIELD_REFs.
5464         (sra_walk_expr): Don't maintain or pass down use_all_p.
5465         (scan_use): Remove use_all parameter.
5466         (scalarize_use): Likewise.  Re-expand assignment to
5467         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5468         output, and re-scalarize after output.  Don't mark anything
5469         for no warning.
5470         (scalarize_ldst): Adjust.
5471         (scalarize_walk_gimple_modify_statement): Likewise.
5472         (build_element_name_1): Handle BIT_FIELD_REFs.
5473         (instantiate_element): Don't warn for any element whose parent
5474         is used as a whole.
5475         (instantiate_missing_elements_1): Return the sra_elt.
5476         (canon_type_for_field): New.
5477         (try_instantiate_multiple_fields): New.
5478         (instantiate_missing_elemnts): Use them.
5479         (mark_no_warning): Removed.
5480         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5481         (REPLDUP, sra_build_elt_assignment): New.
5482         (generate_copy_inout): Use them.
5483         (generate_element_copy): Likewise.  Handle bitfld differences.
5484         (generate_element_zero): Don't recurse for blocks.  Use
5485         sra_build_elt_assignment.
5486         (generate_one_element_int): Take elt instead of var.  Use
5487         sra_build_elt_assignment.
5488         (generate_element_init_1): Adjust.
5489         (scalarize_use, scalarize_copy): Use REPLDUP.
5490         (scalarize_ldst): Move assert before dereference.
5491         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5492
5493 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
5494
5495         * regmove.c: Fix unused variable warnings due to previous commit.
5496
5497 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
5498
5499         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
5500         (regmove_bb_head): Remove.
5501         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
5502         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
5503         problems with fixup_match_1.
5504         Don't initialize/free regmove_bb_head.
5505
5506         (reg_is_remote_constant_p): If an insn is in the same basic block
5507         but not before INSN, consider it remote, too.
5508
5509 2007-04-05  Anatoly Sokolov <aesok@post.ru>
5510
5511         PR target/25448
5512         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
5513         DECL_ASSEMBLER_NAME, not the DECL_NAME.
5514
5515 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
5516
5517         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
5518         (CONDITIONAL_REGISTER_USAGE): Likewise.
5519
5520 2007-04-04  Richard Henderson  <rth@redhat.com>
5521
5522         * config/alpha/lib1funcs.asm: Remove unused file.
5523
5524 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5525
5526         PR other/31356
5527         * opts.c (print_specific_help): Fix --help=<language>
5528         header line.
5529         (common_handle_option): Support --help=common.
5530
5531 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5532
5533         PR other/31353
5534         * gcc.c (main): Do not run the linker if
5535         print_subprocess_help indicates that it shouldn't be
5536         run.
5537
5538 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5539
5540         PR doc/31355
5541         * doc/invoke.texi (--help=): Document <languages> value, fix
5542         formatting in tables of values.
5543
5544 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
5545
5546         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
5547         dllimport attribute of virtual methods.
5548
5549 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
5550
5551         * config/score/crti.asm: Change _bss_start to __bss_start.
5552         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
5553         (OUTGOING_REG_PARM_STACK_SPACE) update.
5554         * config/score/score.opt: add options to make backend support
5555         score5, score5u, score7 and score7d.
5556         * config/score/score.md: Likewise.
5557         * config/score/misc.md: Likewise.
5558         * config/score/mac.md: Likewise.
5559         * doc/invoke.texi: Likewise.
5560         * doc/md.texi: update constraints define.
5561
5562 2007-04-03  Richard Henderson  <rth@redhat.com>
5563
5564         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
5565         an appropriate type, use the mode instead.
5566
5567 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
5568
5569         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
5570         Set the default --with-arch setting to mips2.
5571         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
5572         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
5573         (MULTILIB_OSDIRNAMES): Delete.
5574         (MULTILIB_DIRNAMES): Define.
5575         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
5576         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
5577         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
5578         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
5579         VXWORKS_OS_CPP_BUILTINS.
5580         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
5581         (MIPS_DEBUGGING_INFO): Undefine.
5582         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
5583
5584 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
5585
5586         PR middle-end/30704
5587         * fold-const.c (native_encode_real): Encode real.c provided longs
5588         as a series of 32-bit native integers.
5589         (native_interpret_real): Interpret buffer as a series of 32-bit
5590         native integers.
5591
5592 2007-04-03  Richard Guenther  <rguenther@suse.de>
5593
5594         * genpreds.c (write_insn_constraint_len): Write function
5595         optimized for CONSTRAINT_LEN implementation.
5596         (write_tm_preds_h): Output insn_constraint_len inline and
5597         use it for CONSTRAINT_LEN.
5598         (write_insn_preds_c): Don't output insn_constraint_len.
5599         * doc/md.texi (define_register_constraint): Document multi-letter
5600         constraints shall have the same length if they start with the same
5601         letter.
5602
5603 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
5604
5605         PR target/31175
5606         * config/i386/i386.md (isinf<mode>2): Expand only when
5607         TARGET_C99_FUNCTIONS is set.
5608
5609 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
5610
5611         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
5612         (x86_64-*-linux*): Ditto.
5613         * config/i386/i386.opt (mpc): New option.
5614         * config/i386/i386.c (overrride_options): Handle
5615         ix87_precision_string.
5616         * config/i386/crtprec.c: New file.
5617         * config/i386/t-crtpc: Ditto.
5618         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
5619         and -mpc80 options.
5620         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
5621         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
5622         crtprec32.o, crtprec64.o and crtprec80.o.
5623
5624         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
5625         and -mpc80 options.
5626         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
5627
5628 2007-04-02  Eric Christopher  <echristo@apple.com>
5629
5630         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
5631         limitations on darwin.
5632
5633 2007-04-02  Anatoly Sokolov <aesok@post.ru>
5634
5635         PR target/31137
5636         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
5637
5638 2007-04-02  Dave Korn  <dave.korn@artimi.com>
5639
5640         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
5641
5642 2007-04-02  Dave Korn  <dave.korn@artimi.com>
5643
5644         * libgcc2.h (exception_descriptor): Don't forward-declare.
5645         (__get_eh_table_language, __get_eh_table_version): Delete
5646         prototypes of long-dead functions.
5647
5648 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
5649
5650         * ebitmap.h: New file
5651         * ebitmap.c: New file
5652         * Makefile.in (ebitmap.o): New target.
5653
5654 2007-04-01  Jan Hubicka  <jh@suse.cz>
5655
5656         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
5657         before very first instruction.
5658
5659 2007-04-01  Jan Hubicka  <jh@suse.cz>
5660
5661         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
5662         waring on 64bit hosts.
5663         * bitmap.h: Fix typo in bitmap_head_def.
5664
5665 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
5666
5667         PR rtl-optimization/31391
5668         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
5669         into a DELETED_LABEL note, and the label is in an empty basic
5670         block, update BB_END as well as BB_HEAD.
5671
5672 2007-04-01  Richard Henderson  <rth@redhat.com>
5673
5674         PR tree-optimization/31169
5675         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
5676         to varying if the range is outside [0,  prec-1].
5677
5678 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
5679
5680         PR target/31388
5681         * config/mips/mips.md (load_const_gp): New insn.
5682         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
5683         the MIPS16 GP pseudo register if no_new_pseudos.
5684         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
5685
5686 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5687
5688         PR target/31364
5689         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
5690         secureplt.
5691         (call_value): Likewise.
5692
5693 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
5694             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5695
5696         PR 14737
5697         * doc/invoke.texi: (optimization options): Reword description
5698         of -ffast-math. Document its primary purpose.
5699
5700 2007-03-31  Richard Guenther  <rguenther@suse.de>
5701
5702         * omp-low.c (splay-tree.h): Include.
5703         (lookup_decl): Replace splay-tree usage by pointer-map.
5704         (maybe_lookup_decl): Likewise.
5705         (new_omp_context): Likewise.
5706         (delete_omp_context): Likewise.
5707         * gimplify.c (splay-tree.h): Include.
5708         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
5709         pointer-map.
5710         (remap_ssa_name): Likewise.
5711         (remap_decl): Likewise.
5712         (remap_type_1): Likewise.
5713         (remap_type): Likewise.
5714         (copy_body_r): Likewise.
5715         (expand_call_inline): Likewise.
5716         (clone_body): Likewise.
5717         (copy_tree_r): Likewise.
5718         (remap_save_expr): Likewise.
5719         (unsave_r): Likewise.
5720         (unsave_expr_now): Likewise.
5721         (tree_function_versioning): Likewise.
5722         (build_duplicate_type): Likewise.
5723         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
5724         (struct copy_body_data): Replace splay-tree by pointer-map.
5725         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
5726         not $(SPLAY_TREE_H).
5727         (gimplify.o): Depend on $(SPLAY_TREE_H).
5728         (omp-low.p): Likewise.
5729
5730 2007-03-31  Anatoly Sokolov <aesok@post.ru>
5731
5732         * config/avr/predicates.md (even_register_operand,
5733         odd_register_operand): New predicates.
5734         * config/avr/avr.md (movw peephole2): New.
5735         (movw_r peephole2): New.
5736
5737 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
5738
5739         * tree.h (get_signed_or_unsigned_type): New.
5740         * fold-const.c (operand_equal_for_comparison_p): Use
5741         get_signed_or_unsigned_type instead of
5742         lang_hooks.types.signed_or_unsigned_type.
5743         * expr.c (store_expr): Ditto.
5744         * langhooks.c (get_signed_or_unsigned_type): New.
5745         (lhd_signed_or_unsigned_type): New.
5746         * langhooks.h (lhd_signed_or_unsigned_type): New.
5747         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
5748
5749 2007-03-30  Richard Henderson  <rth@redhat.com>
5750
5751         * tree-ssa-loop-ivopts.c: Include target.h.
5752         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
5753         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
5754         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
5755         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
5756
5757 2007-03-30  Richard Henderson  <rth@redhat.com>
5758             Kai Tietz  <kai.tietz@onevision.com>
5759
5760         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
5761         default for 64-bit.
5762         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
5763         (TARGET_64BIT_MS_ABI): New.
5764         (DBX_REGISTER_NUMBER): Handle 64-bit.
5765         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
5766         (LONG_TYPE_SIZE): Force to 32.
5767         (REG_PARM_STACK_SPACE): New.
5768         (OUTGOING_REG_PARM_STACK_SPACE): New.
5769         (REGPARM_MAX, SSE_REGPARM_MAX): New.
5770         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
5771         (STACK_BOUNDARY): Use 128 for 64-bit.
5772         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
5773         Add 64-bit implementation.
5774         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
5775         argument unused.
5776         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
5777         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
5778         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
5779         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
5780         (ix86_handle_cconv_attribute): Don't warn when ignoring if
5781         TARGET_64BIT_MS_ABI.
5782         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
5783         (ix86_pass_by_reference): Likewise.
5784         (ix86_function_value_regno_p): Likewise.
5785         (ix86_build_builtin_va_list): Likewise.
5786         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
5787         (function_arg_advance_ms_64): New.
5788         (function_arg_advance): Call it.
5789         (function_arg_ms_64): New.
5790         (function_arg): Call it.
5791         (function_value_ms_64): New.
5792         (ix86_function_value_1): Call it.
5793         (return_in_memory_ms_64): New.
5794         (ix86_return_in_memory): Call it.
5795         (setup_incoming_varargs_ms_64): New.
5796         (ix86_setup_incoming_varargs): Call it.
5797         (ix86_expand_prologue): Handle 64-bit stack probing.
5798         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
5799         (output_pic_addr_const): Likewise.
5800         (x86_this_parameter): Likewise.
5801         (x86_output_mi_thunk): Likewise.
5802         (x86_function_profiler): Likewise.
5803         (TARGET_STRICT_ARGUMENT_NAMING): New.
5804         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
5805         (TARGET_64BIT_MS_ABI): New.
5806         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
5807         * config/i386/i386.md (allocate_stack_worker): Remove.
5808         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
5809         describe the clobber of eax without a match_scratch.
5810         (allocate_stack_worker_postreload): Remove.
5811         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
5812         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
5813         (allocate_stack_worker_rex64_postreload): Remove.
5814         (allocate_stack): Handle 64-bit.
5815         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
5816         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
5817         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
5818         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
5819         (STANDARD_STARTFILE_PREFIX_1): Likewise.
5820         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
5821         * config.build (x86_64-*-mingw*): New host.
5822         * config.host (x86_64-*-mingw*): New host.
5823         * config.gcc (x86_64-*-mingw*): New target.
5824         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
5825
5826 2007-03-30  Richard Henderson  <rth@redhat.com>
5827             Kai Tietz  <kai.tietz@onevision.com>
5828
5829         * c-pragma.c (struct def_pragma_macro_value): New.
5830         (struct def_pragma_macro): New.
5831         (pushed_macro_table): New.
5832         (dpm_hash, dpm_eq): New.
5833         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
5834         (init_pragma): Install them.
5835         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
5836
5837 2007-03-30  Anatoly Sokolov <aesok@post.ru>
5838
5839         * config/avr/avr.c (avr_override_options): Clear
5840         'flag_delete_null_pointer_checks'.
5841
5842 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
5843
5844         PR c++/26099
5845         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
5846         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
5847         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
5848         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
5849         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
5850         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
5851         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
5852         C++ extensions.
5853         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
5854
5855 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
5856
5857         * regmove.c: Move all of pass_stack_adjustments from here...
5858         * combine-stack-adj.c: ...to this new file.
5859         * Makefile.in: Add rules for combine-stack-adj.o.
5860
5861 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
5862
5863         PR tree-optimization/31383
5864         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
5865         to have the same length.
5866
5867 2007-03-30  Jan Hubicka  <jh@suse.cz>
5868
5869         PR middle-end/30700
5870         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
5871         availablility; add more sanity checking; ask varpool only about
5872         VAR_DECL.
5873
5874 2007-03-29  Richard Henderson  <rth@redhat.com>
5875
5876         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
5877         to decide, but __SIZEOF_LONG_LONG__.
5878
5879 2007-03-29  Richard Henderson  <rth@redhat.com>
5880
5881         * emutls.c (struct __emutls_array): New.
5882         (emutls_destroy): Use it instead of casting element 0 from void*.
5883         (__emutls_get_address): Likewise.
5884
5885 2007-03-29  Richard Henderson  <rth@redhat.com>
5886
5887         * varasm.c (initializer_constant_valid_p): Don't deny
5888         DECL_DLLIMPORT_P on functions.
5889
5890         * config/i386/cygming.h: Remove function declarations.
5891         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
5892         (ASM_OUTPUT_LABELREF): Remove.
5893         (COMMON_ASM_OP): Remove.
5894         (ASM_OUTPUT_COMMON): Remove.
5895         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
5896         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
5897         (ASM_DECLARE_FUNCTION_NAME): Likewise.
5898         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
5899         Rename from TARGET_ENCODE_SECTION_INFO.
5900         * config/i386/netware.h: Likewise.
5901         * config/i386/i386-protos.h: Update.
5902         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
5903         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
5904         (legitimate_constant_p): Reject dllimports.
5905         (dllimport_map, get_dllimport_decl): New.
5906         (legitimize_dllimport_symbol): New.
5907         (legitimize_address, ix86_expand_move): Use it.
5908         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
5909         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
5910         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
5911         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
5912         * config/i386/predicates.md (constant_call_address_operand): Only
5913         accept symbols; reject dllimport_p symbols.
5914         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
5915         i386_pe_maybe_record_exported_symbol.
5916         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
5917         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
5918         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
5919         trust the setting of DECL_DLLIMPORT_P.
5920         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
5921         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
5922         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
5923         tidy the argument scanning loop.
5924         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
5925         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
5926         (i386_pe_strip_name_encoding): Remove.
5927         (i386_pe_binds_local_p): New.
5928         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
5929         (i386_pe_output_labelref): Remove.
5930         (i386_pe_asm_output_aligned_decl_common): New.
5931         (i386_pe_maybe_record_exported_symbol): Rename from
5932         i386_pe_record_exported_symbol; check for dllexported symbols.
5933
5934 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
5935
5936         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
5937         add comment explaining why vsnprintf cannot be used.
5938
5939 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
5940
5941         PR tree-optimization/30666
5942         * tree.c (build_complex_type): When creating type names for DWARF2
5943         debug info, create TYPE_DECLs for TYPE_NAME instead of
5944         IDENTIFIER_NODEs.
5945         (build_common_tree_nodes_2): Use build_complex_type when building
5946         predefined complex types, to preserve canonical types.
5947
5948 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
5949
5950         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
5951         (noce_get_alt_condition): Look at it to determine whether to
5952         reverse the condition or not.
5953         (noce_get_condition): Substitute the truth for lies.
5954         (noce_find_if_block): Set the then_else_reversed field.
5955
5956 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
5957
5958         * config/fr30/fr30.md (movdi): Do not accept immediates as the
5959         destination of this insn.
5960         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
5961         than calling gen_rtx_SET directly.  Use r0 to hold the value of
5962         'address + 4' rather than a stack based temporary which can be
5963         mis-optimized away.
5964
5965 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5966
5967         * config/s390/s390.c (s390_secondary_input_reload_class,
5968         s390_secondary_output_reload_class): Functions removed.
5969         (s390_secondary_reload): New function.
5970         (TARGET_SECONDARY_RELOAD): Target macro defined.
5971         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
5972         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
5973         * config/s390/s390.md ("reload_outti", "reload_outdi",
5974         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
5975         "reload_out<mode>"): Expanders removed.
5976         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
5977         "reload<mode>_nonoffmem_out"): Expanders added.
5978
5979 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5980
5981         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
5982         SRC->DEST replacement failed anyway.
5983
5984 2007-03-28  Mike Stump  <mrs@apple.com>
5985
5986         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
5987         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
5988         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
5989
5990 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5991
5992         * config.gcc: Accept barcelona as a variant of amdfam10.
5993         * config/i386/i386.c (override_options): Likewise.
5994         * doc/invoke.texi: Likewise.
5995
5996 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
5997
5998         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
5999         offsets for BIT_FIELD_REF and COMPONENT_REF.
6000
6001 2007-03-28  Richard Guenther  <rguenther@suse.de>
6002
6003         * tree.c (is_global_var): Move ...
6004         * tree-flow-inline.h (is_global_var): ... here.
6005         * tree.h (is_global_var): Remove declaration.
6006
6007 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
6008
6009         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
6010         option.
6011         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
6012         * config/i386/i386.c (ix86_tune_features): Initialize new
6013         tuning option.
6014         * config/i386/predicates.md (promotable_binary_operator): Use
6015         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
6016
6017 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
6018
6019         PR target/31380
6020         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
6021
6022 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
6023
6024         * config/fr30/fr30.md (movsi_internal): Change destination
6025         constraint from m to V and add m to the end.
6026
6027 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6028
6029         * config/sh/sh.md (movsi_i): Fix type attribute.
6030
6031 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6032
6033         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
6034         (movsf_ie): Likewise.
6035
6036 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6037
6038         * config.gcc: Add sh4-300 to multilib.
6039         * config/sh/t-mlib-sh4-300: New file.
6040
6041 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
6042
6043         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
6044         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
6045         fix_trunc<mode>di2.
6046         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
6047         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
6048         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
6049         "fixuns_trunctddi2"): Whitespace fix.
6050
6051 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
6052
6053         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
6054         the definition of struct sh_args.
6055         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
6056         CALL_COOKIE_INT_REG_GET): Likewise.
6057
6058 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
6059
6060         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
6061         transformations are applied successfully.
6062
6063 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
6064
6065         * tree.c (tree_contains_struct): Permit 512 tree codes.
6066         * tree.h (tree_contains_struct): Ditto.
6067         (MAX_TREE_CODES): Ditto.
6068         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
6069         SPARE member to store remaining padding bits.
6070
6071 2007-03-27  Anatoly Sokolov <aesok@post.ru>
6072
6073         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
6074         architecture.
6075
6076 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
6077
6078         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
6079         * configure: Regenerate.
6080
6081         * configure: Regenerate using the correct version of autoconf.
6082
6083 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
6084
6085         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
6086         pointer regs.
6087         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
6088         regs to "__SP_L__" and "__SP_H__".
6089
6090 2007-03-27  Richard Guenther  <rguenther@suse.de>
6091
6092         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
6093         computations with it with a HOST_WIDE_INT variable.
6094
6095 2007-03-26  Mike Stump  <mrs@apple.com>
6096
6097         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
6098         objective-c-header, objective-c++-header and objc++-cpp-output
6099         support.
6100         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
6101
6102 2007-03-26  Richard Henderson  <rth@redhat.com>
6103
6104         PR target/31361
6105         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
6106         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
6107         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
6108         IX86_BUILTIN_PSRLQ128): New.
6109         (ix86_init_mmx_sse_builtins): Add them.
6110         (ix86_expand_builtin): Expand them.
6111         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
6112         operand 2 be TImode.
6113         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
6114         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
6115         _mm_srli_epi64): Mark __B const.
6116         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
6117         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
6118         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
6119         new two-vector shift builtins.
6120
6121 2007-03-26  Ian Lance Taylor  <iant@google.com>
6122
6123         PR tree-optimization/31345
6124         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
6125         [+INF, +INF(OVF)] into VARYING.
6126
6127 2007-03-26  Zack Weinberg  <zackw@panix.com>
6128
6129         * gengtype-parse.c: New file.
6130         * gengtype-yacc.y: Delete.
6131         * gengtype-lex.l: Don't include gengtype-yacc.h.
6132         Define YY_DECL and yyterminate appropriately for recursive
6133         descent parser.  yylval is now a string out-parameter to yylex.
6134         (HWS, EOID): New shorthand.
6135         (IWORD): Add a couple more types.
6136         (yylex): Add a setup stanza.  Remove the complex rules for
6137         detecting GTY'ed types and typedefs; replace with simple
6138         keyword detectors.  Adjust everything for the changed
6139         definition of yylval.  Ignore all pp-directives, not just #define.
6140         (yyerror): Delete.
6141         (parse_file): Rename yybegin; do not call yyparse.
6142         (yyend): New.
6143         * gengtype.c (xasprintf): Export again.
6144         (this_file): New.  Use everywhere __FILE__ was being used.
6145         (get_lang_bitmap): Special case types defined in gengtype.c.
6146         (do_typedef, new_structure): Suppress definition of certain types.
6147         (new_structure): Improve diagnostics of duplicate definitions.
6148         Make sure location_s is associated with input.h.
6149         (nreverse_pairs, define_location_structures): New functions.
6150         (main): Improve tagging of kludge types.  Remove old kludges
6151         for input.h types; use define_location_structures.
6152         * gengtype.h: Update prototypes.  Define token codes here.
6153         * Makefile.in: Remove all references to gengtype-yacc.
6154         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
6155         and gengtype.
6156         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
6157         add GTY((skip)) to the field that's only conditionally there.
6158         * doc/install.texi: Document that Bison is no longer required
6159         unless building treelang.
6160
6161         * gengtype.c: Don't include gtyp-gen.h.
6162         (srcdir): Declare here.
6163         (base_files, lang_dir_names): Allocate dynamically.
6164         (gt_files, num_gt_files, num_lang_dirs): New globals.
6165         (measure_input_list, read_input_line, read_input_list)
6166         (set_lang_bitmap): New functions.
6167         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
6168         simplify, relying on read_input_list to set up the bitmaps.
6169         (main): Arguments are no longer unused.  Check for correct number
6170         of command line arguments, set srcdir and srcdir_len, then call
6171         read_input_list, before doing anything else.  No need to worry
6172         about duplicates in main loop.
6173         * configure.ac: Simplify the calculation of all_gtfiles.
6174         Put language tags in there.  Don't set or substitute
6175         all_gtfiles_files_langs or all_gtfiles_files_frags.
6176         * Makefile.in: Revamp the way gengtype is invoked, now that it
6177         takes a file on its command line with a much simpler format.
6178         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
6179         (GTFILES): Remove duplicates and C source files.
6180         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
6181         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
6182         * configure: Regenerate.
6183
6184         * gengtype.h: Remove all type definitions to gengtype.c; leave
6185         only definitions of options_p, type_p, and pair_p as opaque
6186         pointers.  Update prototypes.
6187         * gengtype.c: Many type definitions moved here from gengtype.h.
6188         Consolidate type definitions at the top of the file.
6189         (xvasprintf): Delete.
6190         (xasprintf): Make static.
6191         (create_nested_pointer_option): Add 'next' parameter.
6192         (create_field_all, create_field_at): New functions.
6193         (create_field): Now a thin wrapper around create_field_all.
6194         (create_optional_field): Rename create_optional_field_ and add
6195         line argument.  Original name is now a macro which supplies
6196         __LINE__.
6197         (oprintf): Use vsnprintf directly.
6198         (close_output_files): Use fatal rather than perror/exit.
6199         (note_def_vec, note_def_vec_alloc): Use create_field_at.
6200         (main): Set progname.  Don't use exit.
6201         * gengtype-yacc.y (struct_fields): Use create_field_at.
6202         (option, optionseqopt): Delete.
6203         (optionseq): Consolidate productions from option here so we
6204         can use the first argument to create_option.
6205
6206         * gengtype-lex.l: Distinguish unions from structures in the
6207         token type.  Don't call find_structure; return the tag as a string.
6208         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
6209         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
6210         Reorganize typedef_struct production accordingly.
6211         Use create_nested_ptr_option.
6212         * gengtype.c (create_nested_ptr_option): New function.
6213         * gengtype.h: Declare it.
6214
6215         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
6216         (string_type): Don't declare.
6217         (do_scalar_typedef): Declare.
6218         (create_scalar_type): Update prototype.
6219         * gengtype.c (string_type): Make static.
6220         (scalar_nonchar, scalar_char): New.
6221         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
6222         (resolve_typedef): Use scalar_nonchar for error recovery.
6223         (create_scalar_type): Remove name_len field.  Return scalar_char
6224         or scalar_nonchar as appropriate.
6225         (adjust_field_type): Look at scalar_is_char boolean to decide whether
6226         to use string_type.
6227         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
6228         whenever possible.
6229         (main): Initialize scalar_char and scalar_nonchar before calling
6230         gen_rtx_next.
6231         * gengtype-lex.l: Adjust for removal of second argument to
6232         create_scalar_type.  Use yylval.s instead of yylval.t when
6233         returning SCALAR.
6234         * gengtype-yacc.y: Type of SCALAR is string.  Call
6235         create_scalar_type from type:SCALAR rule.  Adjust for removal of
6236         second argument to create_scalar_type.
6237
6238         * vec.h: Remove all #if IN_GENGTYPE blocks.
6239         Add comment saying that changes may require adjustments to gengtype.
6240         * gengtype.c: Don't include coretypes.h or tm.h.
6241         Add comment to inclusion of errors.h.
6242         (note_def_vec, note_def_vec_alloc): New functions.
6243         * gengtype.h: Declare new functions.
6244         * gengtype-lex.l: Don't include coretypes.h.
6245         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
6246         Delete.
6247         (update_lineno): Remove unnecessary prototype.
6248         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
6249         (VEC rule): Just return VEC_TOKEN.
6250         * gengtype-yacc.y (VEC_TOKEN): New token type.
6251         (type): Add a production for VEC(a,b).
6252         * Makefile.in: Update dependencies.
6253
6254         * gengtype-lex.l: Remove rules for parsing pointer-to-function
6255         typedefs that use the old PARAMS macro.
6256
6257         * gengtype-lex.l: Remove all rules and states relating to yacc
6258         input files.
6259         * gengtype-yacc.y: Similarly.
6260         * gengtype.c (note_yacc_type): Delete function.
6261         * gengtype.h: Update prototypes.
6262
6263 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
6264
6265         * tree-pretty-print.c (dump_generic_node): Report precision of
6266         unnamed integer types.
6267
6268 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
6269
6270         * ifcvt.c (noce_try_store_flag_constants): Don't check
6271         no_new_pseudos here.
6272         (noce_try_store_flag_constants): Don't check no_new_pseudos.
6273         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
6274         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
6275         noce_try_sign_mask): Likewise.
6276         (if_convert): Check no_new_pseudos here.
6277
6278         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
6279         Remove prototypes.
6280         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
6281         (noce_get_condition): Handle new then_else_reversed argument.
6282         (noce_init_if_info): Remove, fold into noce_find_if_block.
6283         (noce_process_if_block): Take a struct noce_if_info as the
6284         argument.  Don't set up one based on ce_if_info.  Update pointer
6285         references accordingly.
6286         (cond_move_process_if_block): Likewise.
6287         (process_if_block): Removed.
6288         (find_if_block): Removed.  Move functionality two new functions,
6289         noce_find_if_block and cond_exec_find_if_block.
6290         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
6291         blocks and the symmetric IF-ELSE-JOIN case.
6292         (cond_exec_find_if_block): Also new function mostly based on old
6293         find_if_block and process_if_block.
6294         (find_if_header): Replace find_if_block call with separately
6295         guarded calls to noce_find_if_block and cond_exec_find_if_block.
6296         (find_cond_trap): Update noce_get_condition call.
6297         (dead_or_predicable): Likewise.
6298
6299 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
6300
6301         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
6302         Remove.
6303         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
6304         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
6305         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
6306         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
6307         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
6308         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
6309         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
6310         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
6311         __builtin_ia32_psrad128 builtins.
6312
6313 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
6314
6315         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
6316         * config/i386/constraints.md
6317         (define_constraint "I"): Use IN_RANGE macro.
6318         (define_constraint "J"): Ditto.
6319         (define_constraint "K"): Ditto.
6320         (define_constraint "M"): Ditto.
6321         (define_constraint "N"): Ditto.
6322         (define_constraint "O"): Ditto.
6323         * config/i386/predicates.md
6324         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
6325         (define_predicate "const_0_to_3_operand"): Ditto.
6326         (define_predicate "const_0_to_7_operand"): Ditto.
6327         (define_predicate "const_0_to_15_operand"): Ditto.
6328         (define_predicate "const_0_to_63_operand"): Ditto.
6329         (define_predicate "const_0_to_255_operand"): Ditto.
6330         (define_predicate "const_1_to_31_operand"): Ditto.
6331         (define_predicate "const_2_to_3_operand"): Ditto.
6332         (define_predicate "const_4_to_7_operand"): Ditto.
6333
6334 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
6335
6336         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
6337         in SImode for save_world.
6338         * config/rs6000/altivec.md (save_world, restore_world): Convert to
6339         LR hard reg.
6340
6341 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
6342
6343         PR tree-optimization/30784
6344         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
6345         BIT_FIELD_REF.
6346
6347 2007-03-25  Revital Eres  <eres@il.ibm.com>
6348
6349         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
6350           Fold movement_possibility function into it.
6351
6352 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
6353
6354         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
6355         (load_macho_picbase_{si,di}): Convert to LR hard reg.
6356         (call_indirect_nonlocal_darwin64): Same.
6357         (call_nonlocal_darwin64): Same.
6358         (call_value_indirect_nonlocal_darwin64): Same.
6359         (call_value_nonlocal_darwin64): Same.
6360         (sibcall_nonlocal_darwin64): Same.
6361         (sibcall_value_nonlocal_darwin64): Same.
6362         (sibcall_symbolic_64): Same.
6363         (sibcall_value_symbolic_64): Same.
6364         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
6365         LR pseudo.
6366         (rs6000_emit_load_toc_table): Same.
6367         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
6368         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
6369         (mull_call): Same.
6370         (divss_call): Same.
6371         (divus_call): Same.
6372         (quoss_call): Same.
6373         (quous_call): Same.
6374         (load_toc_v4_pic_si): Same
6375         (load_toc_v4_PIC_1): Same.
6376         (load_toc_v4_PIC_1b): Same.
6377         (call_indirect_aix{32,64}): Same.
6378         (call_value_indirect_aix{32,64}): Same.
6379         (call): Same.
6380         (call_value): Same.
6381         (call_local{32,64}): Same.
6382         (call_value_local{32,64}): Same.
6383         (call_indirect_nonlocal_aix{32,64}): Same.
6384         (call_nonlocal_aix{32,64}): Same.
6385         (call_value_indirect_nonlocal_aix{32,64}): Same.
6386         (call_value_nonlocal_aix{32,64}): Same.
6387         (call_indirect_nonlocal_sysv<mode>): Same.
6388         (call_nonlocal_sysv<mode>): Same.
6389         (call_value_indirect_nonlocal_sysv<mode>): Same.
6390         (call_value_nonlocal_sysv<mode>): Same.
6391         (sibcall): Same.
6392         (sibcall_local{32,64}): Same.
6393         (sibcall_value_local{32,64}): Same.
6394         (sibcall_nonlocal_aix{32,64}): Same.
6395         (sibcall_value_nonlocal_aix{32,64}): Same.
6396         (sibcall_nonlocal_sysv<mode>): Same.
6397         (sibcall_value): Same.
6398         (sibcall_value_nonlocal_sysv<mode>): Same.
6399
6400 2007-03-24  Paul Brook  <paul@codesourcery.com>
6401
6402         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
6403         * config/arm/linux-eabi.h: Remove legacy syscall hack.
6404
6405 2007-03-24  Richard Henderson  <rth@redhat.com>
6406
6407         * config/ia64/constraints.md: New file.
6408         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
6409         satisfies_constraint_?.
6410         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
6411         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
6412         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
6413         ia64_output_mi_thunk): Likewise.
6414         (ia64_const_ok_for_letter_p): Remove.
6415         (ia64_const_double_ok_for_letter_p): Remove.
6416         (ia64_extra_constraint): Remove.
6417         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
6418         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
6419         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
6420         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
6421         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
6422         EXTRA_MEMORY_CONSTRAINT): Remove.
6423         * config/ia64/ia64.md: Include constriants.md.  Replace
6424         CONST_OK_FOR_? with satisfies_constraint_?.
6425
6426 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
6427             H.J. Lu  <hongjiu.lu@intel.com>
6428
6429         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
6430         DPD or BID name.
6431         (name macros): Use DPD_BID_NAME to convert names properly.
6432
6433         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
6434         decimal floating point format.
6435         (init_floating_libfuncs): Change decimal functions so that they
6436         have a "bid_" prefix if the decimal system uses the BID format,
6437         and "dpd_" prefix if the decimal system uses the DPD format.
6438         (init_interclass_conv_libfuncs): Ditto.
6439         (init_intraclass_conv_libfuncs): Ditto.
6440
6441         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
6442         using the BID format.
6443
6444         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
6445         whether we are using the BID decimal format.
6446         * configure: Regenerate.
6447
6448         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
6449         the compiler has decimal floating point enabled.  Define
6450         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
6451         instead of DPD.
6452
6453         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
6454         using the BID format.
6455
6456         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
6457         whether we are using the BID decimal format.
6458         * configure: Regenerate.
6459
6460         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
6461         the compiler has decimal floating point enabled.  Define
6462         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
6463         instead of DPD.
6464
6465         * doc/install.texi (--enable-decimal-float): Document BID and DPD
6466         options, and that it is enabled for i386/x86_64 systems.
6467
6468         * Makefile.in (enable_decimal_float): New.
6469         (DECNUMFMT): New.
6470         (DECNUMINC): Add  -I$(DECNUMFMT).
6471         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
6472         to $(DECNUMFMT) from $(DECNUM).
6473
6474         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
6475         Substitute enable_decimal_float.
6476         * configure: Regenerated.
6477
6478         PR other/30529
6479         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
6480         unsigned long.
6481
6482         * configure.ac: Enable decimal float for x86_64-*-linux*.
6483         * configure: Regenerated.
6484
6485         PR other/30530
6486         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
6487         decimal128ClearSign to flip and clear the sign bit in decimal128.
6488         (decimal_real_maxval): Set decimal128SetSign to set the sign
6489         bit in decimal128.
6490
6491 2007-03-23  Ian Lance Taylor  <iant@google.com>
6492
6493         * fold-const.c (fold_binary): Correct warning for X - c >= X.
6494
6495 2007-03-23  Ian Lance Taylor  <iant@google.com>
6496
6497         * tree-dump.c (dump_files): Correct comment.
6498
6499 2007-03-23  Ian Lance Taylor  <iant@google.com>
6500
6501         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
6502
6503 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
6504
6505         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
6506         in cfglayout mode.  Don't go into and out of cfglayout mode.
6507         Link the blocks in the order of the constructed traces.
6508         (rest_of_handle_tracer): Adjust call to tracer.
6509         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
6510         Don't go into cfglayout mode.
6511         (rtl_loop_done): Don't go out of cfglayout mode.
6512         * cfglayout.c (relink_block_chain): New function, split out from...
6513         (fixup_reorder_chain): ...here.  Remove redundant checking.
6514         (cfg_layout_finalize): Don't clear the header, footer, and aux
6515         fields here, move the code to do so to relink_block_chain.  Likewise
6516         for free_original_copy_tables.
6517         * rtl.h (tracer): Update prototype.
6518         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
6519         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
6520         mode.  Use relink_block_chain to serialize the CFG according to the
6521         new basic block order.  Move targetm.cannot_modify_jumps_p check from
6522         here...
6523         (gate_handle_reorder_blocks): ...to here.
6524         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
6525         from here...
6526         (gate_duplicate_computed_gotos): ...to here.
6527         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
6528         something always changes when going into and out of cfglayout mode.
6529         Perform an expensive cfg cleanup while going into cfglayout mode.
6530         Always update liveness information on HAVE_conditional_execution
6531         targets.  Reserialize the basic blocks and go out of cfglayout mode.
6532         * reg-stack.c: Include cfglayout.h.
6533         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
6534         the call to reorder_basic_blocks.
6535         * basic-block.h (reorder_basic_blocks): Update prototype.
6536         (relink_block_chain): New prototype.
6537         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
6538
6539 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
6540
6541         * config/mips/mips.md (type, hazard, *movdi_32bit,
6542         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
6543         *movhi_internal, *movqi_internal, *movsf_hardfloat,
6544         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
6545         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
6546         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
6547         applicable.
6548         (movcc): Change first xfer to multi.
6549         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
6550         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
6551         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
6552         config/mips/generic.md: Change reservations using "xfer" to use
6553         "mfc,mtc".
6554         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
6555         using match_operand.
6556         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
6557         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
6558         examining mode.
6559         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
6560
6561 2007-03-22  Richard Henderson  <rth@redhat.com>
6562
6563         * config/i386/i386.c: Remove unnecessary function declarations.
6564         Move targetm definition, and all related macros, to the end of
6565         the file.  Resort some functions to put definitions before uses.
6566         (ix86_attribute_table): Make static.  Move to end of file.
6567         (ix86_gimplify_va_arg): Make static.
6568
6569 2007-03-22  Richard Henderson  <rth@redhat.com>
6570
6571         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
6572         don't increase local_regparm with force_align_arg_pointer check.
6573         (ix86_function_sseregparm): Assert 32-bit.
6574         (type_has_variadic_args_p): New.
6575         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
6576         type_has_variadic_args_p.
6577         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
6578         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
6579         use memset instead.  Do maybe_vaarg check first; skip attribute
6580         tests if true; skip attribute tests for 64-bit.
6581         (construct_container): Remove TARGET_DEBUG_ARG.
6582         (function_arg_advance_32, function_arg_advance_64): Split out ...
6583         (function_arg_advance): ... from here.
6584         (function_arg_32, function_arg_64): Split out ...
6585         (function_arg): ... from here.
6586         (ix86_pass_by_reference): Tidy.
6587         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
6588         (function_value_32): New, from parts of ix86_function_value
6589         and ix86_value_regno.
6590         (function_value_64): New, from parts of ix86_function_value
6591         and ix86_libcall_value.
6592         (ix86_function_value_1): New.
6593         (ix86_function_value, ix86_libcall_value): Use it.
6594         (return_in_memory_32, return_in_memory_64): Split out ...
6595         (ix86_return_in_memory): ... from here.
6596         (ix86_struct_value_rtx): Skip for 64-bit.
6597         (ix86_libcall_value, ix86_value_regno): Remove.
6598         (setup_incoming_varargs_64): Split out ...
6599         (ix86_setup_incoming_varargs): ... from here.
6600         (ix86_va_start): Remove TARGET_DEBUG_ARG.
6601         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
6602         * config/i386/i386-protos.h (ix86_function_value): Remove.
6603         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
6604
6605 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6606
6607         PR other/23572
6608         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
6609         infinities not supported, otherwise emit warning if -Woverflow. On
6610         underflow, emit warning if -Woverflow.
6611         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
6612         and 0 otherwise.
6613         * real.h (real_from_string): Update declaration
6614
6615 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
6616             Richard Henderson  <rth@redhat.com>
6617
6618         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
6619         * calls.c (compute_argument_block_size, expand_call,
6620         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
6621         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
6622         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
6623         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
6624         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
6625         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
6626         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
6627         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
6628         Set to 1.
6629
6630 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
6631
6632         * c-incpath.c (add_sysroot_to_chain): New.
6633         (merge_include_chains): Add sysroot argument.  Call
6634         add_sysroot_to_chain if sysrooted.
6635         (register_include_chains): Update call to merge_include_chains.
6636         * doc/cppopts.texi: Document use of '=' in include directory
6637         arguments.
6638
6639 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
6640
6641         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
6642         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
6643         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
6644         insn pattern using X87MODEF12 mode macro.
6645
6646 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
6647
6648         * regmove.c (regmove_optimize): Use reg_mentioned_p
6649         instead of reg_overlap_mentioned_p for DST.
6650
6651 2007-03-21  Mike Stump  <mrs@apple.com>
6652
6653         * c.opt: Fixup for Objective-C/C++.
6654
6655 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
6656
6657         * explow.c (convert_memory_address): Fold memory reference when
6658         POINTERS_EXTEND_UNSIGNED < 0
6659
6660 2007-03-21  Richard Henderson  <rth@redhat.com>
6661
6662         PR target/31245
6663         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
6664         * config/i386/mmintrin.h (__m64): Likewise.
6665         * config/i386/xmmintrin.h (__m128): Likewise.
6666
6667 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6668
6669         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
6670         (VXWORKS_OS_CPP_BUILTINS): Define.
6671         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
6672         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
6673
6674 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6675
6676         * rtl.h (constant_pool_reference_p): Delete.
6677         (find_constant_src): Declare.
6678         * rtlanal.c (find_constant_src): New function.
6679         * simplify-rtx.c (constant_pool_reference_p): Delete.
6680         * config/i386/i386.md: Use find_constant_src instead of
6681         constant_pool_reference_p/avoid_constant_pool_reference pairs.
6682
6683 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6684
6685         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
6686         * c-cppbuiltin.c (c_cpp_builtins): Define them.
6687
6688 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
6689
6690         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
6691         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
6692         (arm_elf_asm_constructor): Use it.
6693         (arm_elf_asm_destructor): New function.
6694
6695 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
6696
6697         * jump.c (mark_jump_label): Treat SEQUENCE specially.
6698
6699 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
6700
6701         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
6702
6703 2007-03-19  Andrew Haley  <aph@redhat.com>
6704
6705         PR tree-optimization/31264
6706         * tree-vrp.c (register_edge_assert_for_1): Don't look though
6707         VIEW_CONVERT_EXPRs.
6708
6709 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
6710
6711         PR rtl-optimization/30907
6712         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
6713         (fwprop_init): Always call loop_optimizer_initialize.
6714         (fwprop_done): Always call loop_optimizer_finalize.
6715         (fwprop): We always have loop info now.
6716         (gate_fwprop_addr): Remove.
6717         (pass_fwprop_addr): Use gate_fwprop as gate.
6718
6719         PR rtl-optimization/30841
6720         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
6721         df_chain_alloc): Call df_reorganize_refs unconditionally.
6722         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
6723         refs_organized to refs_organized_size.
6724         (df_ref_create_structure): Use refs_organized_size instead of
6725         bitmap_size if refs had been organized, and keep refs_organized_size
6726         up-to-date.
6727         * df.h (struct df_ref_info): Change refs_organized to
6728         refs_organized_size.
6729         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
6730         bitmap_size.
6731
6732 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
6733
6734         * except.c (output_function_exception_table): Do not reference the
6735         EH personality routine for functions that do not require an
6736         exception table.
6737
6738 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
6739
6740         PR c/30762
6741         * c-typeck.c (convert_for_assignment): Call comptypes for
6742         RECORD_TYPE or UNION_TYPE.
6743
6744         PR inline-asm/30505
6745         * reload1.c (reload): Do invalid ASM checking after
6746         cleanup_subreg_operands.
6747
6748 2007-03-19  Jeff Law  <law@redhat.com>
6749
6750         * tree-cfg.c (find_taken_edge): Tighten conditions for
6751         optimizing computed gotos.
6752
6753 2007-03-19  Michael Matz  <matz@suse.de>
6754
6755         * builtins.c (expand_builtin_sync_operation,
6756         expand_builtin_compare_and_swap,
6757         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
6758         correctly.
6759
6760         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
6761         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
6762         for operand 3.
6763
6764 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6765
6766         * doc/tm.texi: Add brackets around the return type of
6767         TARGET_SECONDARY_RELOAD.
6768
6769 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6770         Richard Guenther  <rguenther@suse.de>
6771
6772         PR tree-optimization/31254
6773         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
6774         Use handled_component_p () where appropriate.  Continue
6775         propagating into the rhs if we propagated into an INDIRECT_REF
6776         on the lhs.
6777
6778 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6779
6780         * config/s390/s390.md (op_type attribute): RRR instruction type added.
6781         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
6782         (xde, xdee): Mode attributes adjusted to support DFP modes.
6783         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
6784         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
6785         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
6786         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
6787         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
6788         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
6789         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
6790         numbers.
6791         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
6792         "movsf"): Insn definitions removed.
6793         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
6794         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
6795         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
6796         definitions added.
6797         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
6798         "reload_in<mode>", "reload_out<mode>"): Expander added.
6799         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
6800         Expander removed.
6801
6802 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6803
6804         * config/s390/s390.md: Only non-functional changes.  Renamed
6805         FPR mode macro to BFP all over the file.
6806
6807 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6808
6809         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
6810         (op_type attribute): RRF instruction type added.
6811         (fT0): New mode attribute.
6812         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
6813         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
6814         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
6815         no secondary memory is needed when moving DFmode values between GPRs
6816         and FPRs.
6817
6818 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6819
6820         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
6821         inverted and documentation adjusted.
6822         ("mhard-dfp", "msoft-dfp"): New options.
6823         * config/s390/s390.c (s390_handle_arch_option): New architecture
6824         switch: z9-ec.
6825         (override_options): Sanity checks for the new options added.
6826         * config.gcc: New architecture switch: z9-ec.
6827         * config/s390/s390.h (processor_flags): PF_DFP added.
6828         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
6829         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
6830         when the bit is NOT set so remove it from the defaults.
6831
6832 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6833
6834         * genemit.c (main): Print include statement for dfp.h.
6835         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
6836         is not available.
6837
6838 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
6839
6840         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
6841
6842 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
6843
6844         PR target/31022
6845         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
6846         instead of PATTERN.
6847
6848 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6849
6850         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
6851         attr_length_call, output_call, output_indirect_call): Cleanup
6852         formatting of targetm calls.
6853
6854 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
6855
6856         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
6857
6858 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6859
6860         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
6861         reservation, bypass and anti-bypass descriptions for these instructions.
6862         Update move patterns.
6863         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
6864         TYPE_FPSTORE.
6865
6866 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
6867
6868         * tree-vect-transform.c (get_initial_def_for_induction): Replace
6869         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
6870         (get_initial_def_for_reduction): Likewise.
6871
6872 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
6873
6874         Fix PR tree-optimization/29922
6875         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
6876         (get_representative): Removed.
6877         (value_dies_in_block_x): Update for rvuse removal.
6878         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
6879         (compute_antic_aux): Handle when PHI nodes appear in
6880         non-single-successors.
6881         (dump_bitmap_of_names): Removed.
6882         (compute_antic_safe): Renamed and removed rvuse calculation.
6883         Calculate only antic safe.
6884         (insert_into_preds_of_block): Remove assert.
6885         (execute_pre): Update for renamed functions.
6886         (defer_or_phi_translate_block): New function.
6887
6888 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
6889
6890         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
6891         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
6892         typos.
6893         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
6894         Follow spelling conventions.
6895
6896         * tree-data-ref.h: Remove the prototype for analyze_array.
6897
6898 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
6899
6900         PR tree-optimization/31041
6901         * tree-vect-transform.c (get_initial_def_for_induction): Call
6902         force_gimple_operand.
6903
6904 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
6905
6906         * ipa-type-escape.c (look_for_casts) : Revert code to use
6907         handled_component_p due to ada test a-numaux.adb.
6908
6909 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
6910
6911         * final.c (final_scan_insn): Alter the condition of a
6912         conditional trap if we have nonstandard CC.
6913
6914 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6915
6916         * configure.ac: Remove excess quoting from asm line 0 test.
6917         * configure: Rebuilt.
6918
6919 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6920
6921         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
6922         * c-common.c (convert_and_check): Move warning logic to...
6923         (warnings_for_convert_and_check): ...here. Define.
6924         * c-common.h (warnings_for_convert_and_check): Declare.
6925
6926 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6927
6928         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
6929         (output_call): Likewise.
6930
6931 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
6932
6933         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
6934
6935 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
6936
6937         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
6938
6939 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
6940
6941         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
6942         opteron, athlon-64 and athlon-fx processor_alias_table entries.
6943
6944 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
6945
6946         PR tree-optimization/31183
6947         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
6948         Use double_int instead of unsigned int for representing access_strides.
6949         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
6950
6951 2007-03-16  Richard Guenther  <rguenther@suse.de>
6952
6953         PR tree-optimization/31146
6954         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
6955         to allow recursion of forward_propagate_addr_expr.
6956         (forward_propagate_addr_into_variable_array_index): Likewise.
6957         (forward_propagate_addr_expr): Likewise.
6958         (tree_ssa_forward_propagate_single_use_vars): Likewise.
6959         (forward_propagate_addr_expr_1): Recurse on simple copies
6960         instead of propagating into them.  Do so for useless conversions
6961         as well.
6962         (forward_propagate_addr_expr): Clean up unused statements after
6963         recursion.
6964
6965 2007-03-16  Richard Guenther  <rguenther@suse.de>
6966
6967         * builtins.c (expand_builtin_cexpi): Use the right argument
6968         for the expansion via cexp.
6969
6970 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6971
6972         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
6973         * configure: Rebuilt.
6974
6975 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6976
6977         PR debug/29906
6978         * dwarf2out.c (force_type_die): Adjust comment.
6979         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
6980
6981 2007-03-15  DJ Delorie  <dj@redhat.com>
6982
6983         * config/frv/predicates.md (minmax_operator): Don't check operands
6984         here.
6985
6986 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
6987
6988         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
6989         Update constant estimates of number of iterations.
6990         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
6991         argument renamed to "realistic".
6992         (compute_estimated_nb_iterations): Removed.
6993         (record_niter_bound): New function.
6994         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
6995         call record_nonwrapping_iv with upper = false.
6996         (infer_loop_bounds_from_signedness): Pass upper argument to
6997         record_nonwrapping_iv.
6998         (estimate_numbers_of_iterations_loop): Do not call
6999         compute_estimated_nb_iterations.  Record estimate based on profile
7000         information.  Initialize the constant estimates of number of
7001         iterations.
7002         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
7003         estimates.
7004         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
7005         number of iterations is too small.
7006         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
7007         (EST_NOT_AVAILABLE): Removed.
7008         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
7009         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
7010         fields.
7011
7012 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
7013
7014         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
7015         Handle NE_EXPR guards.
7016
7017 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7018
7019         PR c++/24924
7020         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
7021         Set also -pedantic-errors by default for the  preprocessor unless
7022         -fpermissive is given.
7023
7024 2007-03-15  Richard Guenther  <rguenther@suse.de>
7025
7026         PR middle-end/29719
7027         PR middle-end/31161
7028         * builtins.c (expand_builtin_cexpi): As a fallback if we
7029         don't have builtins for sincos or cexp create a function
7030         declaration for cexp and expand to a call to that.
7031         (expand_builtin_int_roundingfn): Always fall
7032         back to floor/ceil and its variants even if they may be
7033         not available.
7034
7035 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
7036
7037         PR middle-end/31159
7038         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
7039         jump tables, move the call to delete_dead_jumptables from here...
7040         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
7041         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
7042         don't allow merging of blocks that try_redirect_by_replacing_jump
7043         also does not handle when not optimizing.
7044
7045 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
7046             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
7047
7048         * config/i386/i386.md (x86_sahf_1): Correctly handle
7049         HAVE_AS_IX86_SAHF.
7050
7051 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
7052
7053         PR target/31167
7054         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
7055         x86_64_general_operand as operand[2] predicate.  Remove "iF"
7056         from operand constraints and use "e" constraint instead.
7057         (*subti3_1, *subti3_1 splitter): Ditto.
7058         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
7059         operand[1] predicate.
7060
7061 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
7062
7063         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
7064         arrays, multiply the access strides by the size of the sub-array.
7065         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
7066
7067 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
7068
7069         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
7070         the configured assembler supports the sahf mnemonic.
7071         * configure: Regenerate.
7072         * config.in: Regenerate.
7073
7074         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
7075         emit "sahf" or ".byte\t0x9e" as asm template.
7076
7077 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
7078
7079         PR 31018
7080         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
7081         option to replace hard coded TARGET_xxx in md file.
7082         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
7083         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
7084         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
7085         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
7086         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
7087         (X86_TUNE_NOT_VECTORMODE): Ditto.
7088         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
7089         (TUNE_AVOID_VECTOR_DECODE): Ditto.
7090         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
7091         (TUNE_SLOW_IMUL_IMM8): Ditto.
7092         (TUNE_MOVE_M1_VIA_OR): Ditto.
7093         (TUNE_NOT_UNPAIRABLE): Ditto.
7094         (TUNE_NOT_VECTORMODE): Ditto.
7095
7096         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
7097         options.
7098
7099         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
7100         tuning options instead of hard coded TARGET_xxx.
7101         (fix ssemode peephole2's): Ditto.
7102         (imul peephole2's): Ditto.
7103         (movsi_or): Ditto.
7104         (movdi_or_rex64): Ditto.
7105         (move peephole2): Ditto.
7106         (not peephole2's): Ditto.
7107
7108 2007-03-14  Dirk Mueller  <dmueller@suse.de>
7109
7110         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
7111         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
7112         * c-parser.c (c_parser_if_body): Always add an empty statement in case
7113         of empty body.
7114         * c-parser.c (c_parser_do_statement): Warn about empty body in
7115         do/while statement.
7116         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
7117         * doc/invoke.texi (-Wempty-body): Update documentation.
7118
7119 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7120
7121         PR c/21438
7122         * c-common.h (warn_for_div_by_zero): Declare.
7123         * c-common.c (warn_for_div_by_zero): Define.
7124         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
7125         warning.
7126
7127 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
7128
7129         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
7130         to PREFIX and STANDARD_PREFIX.
7131
7132 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
7133             Phil Edwards  <phil@codesourcery.com>
7134
7135         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
7136         (__gthread_once_t): Remove busy field for RTPs.
7137         (__GTHREAD_ONCE_INIT): Update accordingly.
7138
7139 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
7140
7141         * doc/invoke.texi: Document VxWorks options.
7142
7143 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
7144
7145         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
7146
7147 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
7148
7149         PR tree-optimization/30590
7150         * tree-nrv.c (tree_nrv): Check for the partial update of the
7151         return value.
7152
7153 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
7154
7155         * flags.h (flag_random_seed): Remove declaration, in favor of...
7156         * toplev.h (get_random_seed, set_random_seed): ... these.
7157         * tree.c (get_file_function_name): Use the former.
7158         * opts.c (common_handle_option): Use the latter.
7159         * toplev.c
7160
7161 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
7162
7163         PR middle-end/31127
7164         * cse.c (cse_find_path): Do not bail out if a basic block that
7165         we already visited now becomes part of a path that starts at a
7166         different basic block.  Just disallow this, to make sure we
7167         visit each basic block at most once.
7168
7169 2007-03-13  Jan Hubicka  <jh@suse.cz>
7170
7171         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
7172         when profile esitmate is present, calls with very low frequency are
7173         cold.
7174
7175 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
7176
7177         PR tree-optimization/30730
7178         PR tree-optimization/26900
7179         * tree-ssa-loop-niter.c: Include gmp.h.
7180         (bounds): New type.
7181         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
7182         split_to_var_and_offset, determine_value_range,
7183         bound_difference_of_offsetted_base, refine_bounds_using_guard,
7184         bound_difference, bounds_add, bounds_negate,
7185         number_of_iterations_ne_max, dump_affine_iv): New functions.
7186         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
7187         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
7188         difference of initial and final value of control iv to validate
7189         results.
7190         (number_of_iterations_cond): Add loop parameter.  Determine bounds
7191         on the difference of the extremes of the control iv.  Add dumps.
7192         (expand_simple_operations): Handle phi nodes.
7193         (simplify_using_initial_conditions): Do not record used conditions.
7194         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
7195         Do not set additional_info.
7196         (implies_nonnegative_p, implies_ge_p): Removed.
7197         (derive_constant_upper_bound): Do not use parameter `additional'.
7198         (record_estimate): Parameter `additional' removed.  Parameter
7199         `i_bound' added.  Do not call derive_constant_upper_bound.
7200         (record_nonwrapping_iv): Use derive_constant_upper_bound to
7201         bound the number of iterations estimate.
7202         (estimate_numbers_of_iterations_loop): Pass the estimate from
7203         the number of iterations analysis to record_estimate.
7204         * tree.h (multiple_of_p): Declare.
7205         * tree-scalar-evolution.c (expression_expensive_p): Removed.
7206         (scev_const_prop): Do not check expression_expensive_p.
7207         * fold-const.c (multiple_of_p): Exported.
7208         * double-int.c (double_int_mask): Exported.
7209         * double-int.h (double_int_mask): Declare.
7210         * tree-flow.h (struct tree_niter_desc): Removed additional_info
7211         field.  Added max field.
7212
7213 2007-03-13  David Taylor  <taylor@candd.org>
7214
7215         PR driver/12448:
7216         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
7217         default -MQ.
7218
7219 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7220
7221         PR target/31123
7222         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
7223         two unamed patterns.
7224
7225 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
7226
7227         * config/i386/i386.opt (mcx16, msahf): New options.
7228         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
7229         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
7230
7231         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
7232         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
7233         Output -mcx16 and -msahf options when corresponding bit is set.
7234
7235         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
7236         and -msahf options.
7237
7238 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
7239
7240         * configure.ac: Test for assembler tolerance to # 0 "".
7241         * configure, config.in: Rebuilt.
7242         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
7243
7244 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
7245
7246         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
7247
7248         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
7249         (handle_syscall): Handle direct system calls.
7250         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
7251
7252 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
7253
7254         * doc/invoke.texi: Fix cpp.info cross-reference.
7255         * doc/passes.texi: Fix gcc.info cross-reference.
7256
7257 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
7258
7259         PR tree-optimization/30835
7260         * lambda-code.c (can_convert_to_perfect_nest): Check whether
7261         bb_for_stmt is not NULL before accessing it.
7262
7263 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
7264
7265         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
7266         some multilibs.
7267
7268 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
7269
7270         PR 30635
7271         * doc/install.texi: Document --enable-stage1-languages
7272
7273 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
7274
7275         * tree-pass.h (pass_into_cfg_layout_mode,
7276         pass_outof_cfg_layout_mode): Declare.
7277         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
7278         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
7279         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
7280         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
7281
7282 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
7283
7284         * c-decl.c (warn_variable_length_array): New function.
7285         Refactored from grokdeclarator to handle warn_vla
7286         and handle unnamed array case.
7287         (grokdeclarator): Refactored VLA warning case.
7288         * c.opt (Wvla): New flag.
7289         * doc/invoke.texi (Wvla): New warning.
7290
7291 2007-03-12  Richard Henderson  <rth@redhat.com>
7292
7293         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
7294         (TARGET_SECTION_TYPE_FLAGS): New.
7295
7296 2007-03-12  Richard Henderson  <rth@redhat.com>
7297
7298         * config/darwin.c (machopic_reloc_rw_mask): New.
7299         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
7300         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
7301
7302 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
7303
7304         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
7305         * cppdefault.h (cpp_PREFIX): Document.
7306         (cpp_PREFIX_len): Likewise.
7307         (cpp_EXEC_PREFIX): New variable.
7308         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
7309         * c-incpath.c (add_standard_paths): Correct logic for relocating
7310         paths within prefix.
7311
7312 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
7313
7314         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
7315         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
7316         mode macro.
7317         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
7318         fix_truncdfdi_sse using SSEMODEF mode macro.
7319         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
7320         fix_truncdfsi_sse using SSEMODEF mode macro.
7321         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
7322         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
7323
7324 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
7325
7326         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
7327         elfos.h to tm_file.
7328
7329 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
7330
7331         * tree.h : Add multiple_of_p declaration.
7332         * fold-const.c (multiple_of_p): Make multiple_of_p public.
7333         * ipa-type-escape.c (results_of_malloc): Redundant.
7334         (visited_stmts): New. Visited stmt for walk_use_def_chains.
7335         (cast_type): Extended with new members.
7336         (check_cast): Returns cast_type.
7337         (cast): New structure for data of walk_use_def_chains.
7338         (is_malloc_result, is_cast_from_non_pointer_1,
7339         is_cast_from_non_pointer,
7340         is_array_access_through_pointer_and_index): New functions.
7341         (look_for_casts): Returns cast types.
7342         (check_call): Returns void.
7343         (okay_pointer_operation): Use support of pointer plus index,
7344         pointer plus constant and allow all multiplications.
7345
7346 2007-03-11  Richard Guenther  <rguenther@suse.de>
7347
7348         PR tree-optimization/31115
7349         * tree-vrp.c (extract_range_from_binary_expr): Make sure
7350         the shift count is positive and non-anti-range for RSHIFT_EXPR.
7351         A shift count of zero is not special as with *_DIV_EXPR.
7352         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
7353         direction.
7354
7355 2007-03-11  Ian Lance Taylor  <iant@google.com>
7356
7357         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
7358         the *_DIV_EXPR codes correctly with overflow infinities.
7359
7360 2007-03-11  Ira Rosen  <irar@il.ibm.com>
7361
7362         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
7363         indicate success/failure of the analysis. Add negation to subtrahend
7364         in case of subtraction. Fail if both operands contain constants.
7365         (create_data_ref): Fail if analyze_offset fails.
7366
7367 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
7368
7369         * config/i386/i386.md (frndintxf2): Rename to ...
7370         (rintxf2): ... this. Remove expander having same name.
7371         (rintsf2, rintdf2): Implement using SSEMODEF macro.
7372         (roundsf2, rounddf2): Ditto.
7373         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
7374         (lround<mode>di2, lround<mode>si2): Ditto.
7375
7376 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
7377
7378         * lower-subreg.c: Include except.h.
7379         (decompose_multiword_subregs): Verify that the only control flow
7380         insns we can split are loads to multi-words pseudos.
7381         Handle breaking such blocks after splitting, instead of calling
7382         find_many_sub_basic_blocks.
7383
7384         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
7385         on the new basic block.  Add a lengthy comment explaining why we
7386         thought this was necessary.
7387         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
7388
7389 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
7390
7391         PR c++/30924
7392         * tree.c (walk_type_fields): Recurse into the element type of
7393         ARRAY_TYPEs if there is a pointer set.
7394
7395 2007-03-10  Dirk Mueller  <dmueller@suse.de>
7396
7397         * c-common.c (warn_logical_operator): Fix condition.
7398
7399 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
7400
7401         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
7402         quotation mark.
7403         * config/darwin.c (machopic_select_section): Remove superfluous
7404         argument in call to categorize_decl_for_section.  Remove unused
7405         variable shlib.
7406
7407 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
7408
7409         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
7410         defined.
7411         * configure: Regenerate.
7412
7413 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
7414
7415         PR target/31101
7416         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
7417         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
7418         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
7419         Add LABEL_NUSES to emitted label.
7420         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
7421         branch probability value to emitted jump insn.
7422         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
7423         Do not check life information and do not re-arrange input operands
7424         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
7425
7426 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7427
7428         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
7429         the change of decode_asm_operands.
7430
7431 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7432
7433         * mode-switching.c (create_pre_exit): Skip blockage insn.
7434
7435 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
7436
7437         * tree-pass.h (TODO_update_smt_usage): Remove.
7438         Update all users.
7439         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
7440         argument SOME.
7441         Update all users.
7442
7443 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7444
7445         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
7446         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
7447         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
7448         SOM target.
7449
7450 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
7451
7452         * gcc.c: Document %{, in big comment at top.
7453         (input_suffix_matches): Remove special handling for .s and
7454         .S.
7455         (input_spec_matches): New.
7456         (handle_braces): Handle %{,.
7457         (validate_switches): ',' indicates a value which is not a switch.
7458         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
7459         to detect assembler input.
7460         * config/i386/sol2.h (CPP_SPEC): Likewise.
7461         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
7462         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
7463         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
7464         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
7465         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
7466         -m64 causes deployment target to default to 10.5.
7467         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
7468
7469 2007-03-09  Richard Henderson  <rth@redhat.com>
7470
7471         PR target/26090
7472         * target.h (targetm.asm.out.reloc_rw_mask): New.
7473         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
7474         (TARGET_ASM_OUT): Use it.
7475         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
7476         * varasm.c (categorize_decl_for_section): Remove shlib argument;
7477         use the new reloc_rw_mask target hook instead.
7478         (default_section_type_flags_1): Merge into...
7479         (default_section_type_flags): ... here.
7480         (decl_readonly_section_1): Merge into...
7481         (decl_readonly_section): ... here.
7482         (default_elf_select_section_1): Merge into...
7483         (default_elf_select_section): ... here.
7484         (default_unique_section_1): Merge into...
7485         (default_unique_section): ... here.
7486         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
7487         (default_select_rtx_section): Use it.
7488         (default_elf_select_rtx_section): Likewise.
7489         * output.h: Update to match.
7490         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
7491         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
7492         (TARGET_ASM_RELOC_RW_MASK): New.
7493         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
7494         to categorize_decl_for_section.
7495         (x86_64_elf_unique_section): Likewise.
7496         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
7497         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
7498         (TARGET_ASM_RELOC_RW_MASK): New.
7499         * config/ia64/ia64.c (ia64_rwreloc_select_section,
7500         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
7501         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
7502         (TARGET_RWRELOC): Remove.
7503         (ia64_section_type_flags): Adjust call to default_section_type_flags.
7504         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
7505         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
7506         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
7507         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
7508         (rs6000_xcoff_select_section): Use decl_readonly_section.
7509         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
7510         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
7511         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
7512         (TARGET_SECTION_TYPE_FLAGS): Remove.
7513         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
7514
7515 2007-03-09  Roger Sayle  <roger@eyesopen.com>
7516
7517         * fold-const.c (fold_comparison): Remove compile-time evaluation of
7518         complex constant equality/inequality comparisons for here.
7519         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
7520         known at compile-time or can be simplified to a scalar comparison.
7521         (fold_relational_const): Move compile-time evaluation of complex
7522         constant equality/inequality comparisons to here.
7523
7524 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7525
7526         PR rtl-optimization/30643
7527         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
7528         dest_addr_elt.
7529         (fold_rtx): Recurse, like before 2006-11-03.
7530
7531 2007-03-09  DJ Delorie  <dj@redhat.com>
7532
7533         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
7534         m32c-pragma.o.
7535
7536 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
7537
7538         PR tree-optimization/30375
7539         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
7540         LHS of statements is not the same.
7541         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
7542
7543 2007-03-09  Chao-ying Fu  <fu@mips.com>
7544
7545         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
7546         REV 2.
7547         * doc/invoke.texi (-mdspr2): Document new option.
7548         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
7549         New unspec for DSP REV 2.
7550         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
7551         these instructions are extended in DSP REV 2.
7552         (mips-dspr2.md): Include.
7553         * config/mips/mips.opt (mdspr2): New option.
7554         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
7555         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
7556         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
7557         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
7558         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
7559         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
7560         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
7561         and 2 builtins.
7562         (bdesc_map): Add one field of unsupported_target_flags.
7563         (bdesc_arrays):  Update entries to have extra fields.  Add
7564         dsp_32only_bdesc.
7565         (mips_init_builtins): Initialize new function types.
7566         Check unsupported_target_fileds to filter out builtins.
7567         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
7568         TARGET_DSPR2.
7569         (ASM_SPEC): Pass mdspr2 to the assembler.
7570         * config/mips/mips-dspr2.md: New file.
7571
7572 2007-03-09  Sa Liu  <saliu@de.ibm.com>
7573
7574         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
7575
7576 2007-03-09  Ian Lance Taylor  <iant@google.com>
7577
7578         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
7579         argument) like -Wstrict-overflow=2.
7580         * doc/invoke.texi (Warning Options): Update documentation.
7581
7582 2007-03-09  Dirk Mueller  <dmueller@suse.de>
7583
7584         PR c++/17946
7585         * doc/invoke.texi (-Wlogical-op): Document.
7586         * common.opt (-Wlogical-op): New.
7587         * c-common.h (warn_logical_operator): Declare.
7588         * c-common.c (warn_logical_operator): Define.
7589         * c-typeck.c (parser_build_binary_op): Call
7590         warn_logical_operator.
7591
7592 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7593
7594         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
7595         * final.c (final_scan_insn): Test for non-"" file name.
7596
7597 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
7598
7599         * doc/loop.texi: Document the Omega linear constraints solver.
7600         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
7601         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
7602         omega-hash-table-size, omega-max-keys, and
7603         omega-eliminate-redundant-constraints.
7604         * tree-pass.h (pass_check_data_deps): Declared.
7605         * omega.c: New.
7606         * omega.h: New.
7607         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
7608         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
7609         pass_check_data_deps): New.
7610         * tree-data-ref.c (init_data_ref): Remove declaration.
7611         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
7612         (analyze_array): Renamed init_array_ref, move up initializations.
7613         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
7614         Removed arguments that are set to NULL.
7615         (analyze_indirect_ref): Correct indentation, correct call to
7616         init_pointer_ref.
7617         (object_analysis): Call init_array_ref instead of analyze_array.
7618         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
7619         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
7620         of DR_ACCESS_FNS_ADDR.
7621         (init_omega_eq_with_af, omega_extract_distance_vectors,
7622         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
7623         ddr_consistent_p): New.
7624         (compute_affine_dependence): Check consistency of ddrs when
7625         flag_check_data_deps is passed.
7626         (analyze_all_data_dependences): Uncomment.
7627         (tree_check_data_deps): New.
7628         * tree-data-ref.h: Include omega.h.
7629         (DR_ACCESS_FNS_ADDR): Removed.
7630         (data_dependence_relation): Add inner_loop.
7631         (DDR_INNER_LOOP): New.
7632         * common.opt (fcheck-data-deps): New.
7633         * tree-flow.h (tree_check_data_deps): Declare.
7634         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
7635         (OBJS-common): Depend on omega.o.
7636         (omega.o): Define.
7637         * passes.c (pass_check_data_deps): Scheduled.
7638         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
7639         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
7640         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
7641         PARAM_VECT_MAX_VERSION_CHECKS,
7642         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
7643
7644 2007-03-09  Richard Guenther  <rguenther@suse.de>
7645
7646         PR tree-optimization/30904
7647         PR middle-end/31058
7648         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
7649         the same way as *_DIV_EXPR.
7650
7651 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7652
7653         * recog.c (decode_asm_operands): No mixed declarations and code.
7654
7655 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7656
7657         * rtl.def (ASM_INPUT): Add location.
7658         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
7659         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
7660         (decode_asm_operands): Add loc operand.
7661         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
7662         * stmt.c (expand_asm): Rename to...
7663         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
7664         gen_rtx_ASM_INPUT_loc.
7665         (expand_asm_expr): Adjust.
7666         * recog.c (decode_asm_operands): Add loc operand.
7667         (check_asm_operands, extract_insn): Adjust.
7668         * reload1.c (maybe_fix_stack_asms): Likewise.
7669         * final.c (asm_insn_count): Likewise.
7670         (final_scan_insn): Output # line before and after asm.
7671
7672 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
7673
7674         * tree-ssa-structalias.c (variable_info): Remove
7675         finished_solution.
7676         (new_var_info): Ditto.
7677         (shared_bitmap_info_t): New structure.
7678         (shared_bitmap_table): New variable.
7679         (shared_bitmap_hash): New function.
7680         (shared_bitmap_eq): Ditto
7681         (shared_bitmap_lookup): Ditto.
7682         (shared_bitmap_add): Ditto.
7683         (merge_smts_into): Change to take bitmap directly.
7684         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
7685         (init_alias_vars): Init shared bitmap hashtable.
7686         (delete_points_to_sets): Delete shared bitmap hashtable.
7687         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
7688         is_aliased removal as a change that was still necessary was
7689         deleted.
7690
7691 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
7692
7693         * config/i386/i386.h (override_options): Conditionally disable
7694         x86_sahf for 64bit targets only.
7695
7696 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7697
7698         PR C/31072
7699         * c-decl.c (merge_decls): Don't call make_var_volatile.
7700         * varasm.c (make_var_volatile): Remove.
7701         * output.h (make_var_volatile): Remove.
7702
7703 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
7704
7705         PR tree-optimization/31085
7706         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
7707
7708 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7709
7710         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
7711         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
7712         ATTR_CONST_NOTHROW_LIST.
7713
7714         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
7715         FIX_TRUNC_EXPR.
7716
7717 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
7718
7719         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
7720
7721 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
7722
7723         PR 31013
7724         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
7725         is declared.
7726         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
7727         passed, use shared libgcc.
7728
7729 2007-03-08  Roger Sayle  <roger@eyesopen.com>
7730
7731         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
7732         instead of calling build2 with a GIMPLE_MODIFY_STMT.
7733         (honor_protect_cleanup_actions, lower_try_finally_switch):
7734         Likewise.
7735         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
7736         ifc_temp_var): Likewise.
7737         * tree-inline.c (setup_one_parameter): Likewise.
7738         * tree-mudflap.c (mf_decl_cache_locals,
7739         mf_build_check_statement_for): Likewise.
7740         * tree-nested.c (init_tmp_var, save_tmp_var,
7741         finalize_nesting_tree_1): Likewise.
7742         * tree-outof-ssa.c (insert_copy_on_edge,
7743         insert_backedge_copies): Likewise.
7744         * tree-profile.c (tree_gen_edge_profiler,
7745         tree_gen_ic_profiler): Likewise.
7746         * tree-scalar-evolution.c (scev_const_prop): Likewise.
7747         * tree-sra.c (sra_build_assignment): Likewise.
7748         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
7749         * tree-ssa-math-opts.c (insert_reciprocals,
7750         execute_cse_sincos_1): Likewise.
7751         * tree-tailcall.c (adjust_accumulator_values,
7752         adjust_return_value): Likewise.
7753         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
7754         * tree-vect-transform.c (vect_create_data_ref_ptr,
7755         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
7756         vect_create_epilog_for_reduction, vectorizable_reduction,
7757         vectorizable_call, vectorizable_conversion,
7758         vectorizable_assignment, vectorizable_operation,
7759         vectorizable_type_demotion, vect_gen_widened_results_half,
7760         vect_permute_store_chain, vectorizable_store,
7761         vect_setup_realignment, vect_permute_load_chain,
7762         vectorizable_load, vectorizable_condition,
7763         vect_create_cond_for_align_checks): Likewise.
7764         * tree-vrp.c (build_assert_expr_for): Likewise.
7765
7766 2007-03-08  Ian Lance Taylor  <iant@google.com>
7767
7768         * tree-vrp.c: Include "intl.h".
7769         (usable_range_p): New static function.
7770         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
7771         overflowed values, juts set *strict_overflow_p.
7772         (compare_values): Only return -2 if one of the operands is not a
7773         constant.
7774         (compare_ranges): Call usable_range_p.
7775         (compare_range_with_value): Likewise.
7776         (vrp_evaluate_conditional_warnv): Rename from
7777         vrp_evaluate_conditional.  Make static.  Change all callers.
7778         (vrp_evaluate_conditional): New function.
7779         (simplify_div_or_mod_using_ranges): Issue warning about reliance
7780         on signed overflow.
7781         (simplify_abs_using_ranges): Likewise.
7782         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
7783         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
7784         within_stmt parameter.
7785         * tree-ssa-propagate.c (fold_predicate_in): Update call to
7786         vrp_evaluate_conditional.
7787         * tree-ssa-threadedge.c
7788         (record_temporary_equivalences_from_stmts_at_dest): Change
7789         simplify parameter to take a second tree parameter.
7790         (simplify_control_stmt_condition): Likewise.
7791         (thread_across_edge): Likewise.
7792         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
7793         (thread_across_edge): Likewise.
7794         * Makefile.in (tree-vrp.o): Depend upon intl.h.
7795
7796 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
7797
7798         * config/i386/i386.h (TARGET_SAHF): New define.
7799         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
7800         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
7801         (x86_sahf): New global variable.
7802         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
7803         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
7804         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
7805         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
7806         for 64-bit.
7807         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
7808         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
7809         when expanding fcomi/sahf based tests.
7810         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
7811         expanding sahf based alternative. Emit sahf based sequence when
7812         optimizing for code size.
7813         * config/i386/i386.md (x86_sahf_1): Do not disable for
7814         TARGET_64BIT, enable for TARGET_SAHF.
7815
7816 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
7817
7818         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
7819         spurious whitespace from error message.
7820
7821 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
7822
7823         PR c++/30852
7824         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
7825
7826 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
7827
7828         * c-decl.c (grokdeclarator): Disable warnings for anonymous
7829         bitfields.
7830         * tree-sra.c (instantiate_element): Propagate disabled warnings
7831         from the element itself to the created variable.
7832
7833 2007-03-07  Richard Henderson  <rth@redhat.com>
7834
7835         PR target/30848
7836         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
7837         silently fix up the stack in the case of a missing register.
7838
7839 2007-03-07  Paul Brook  <paul@codesourcery.com>
7840
7841         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
7842
7843 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
7844
7845         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
7846         New.
7847         (phase1_vrs): Use them.
7848         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
7849         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
7850         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
7851         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
7852         __gnu_Unwind_Restore_WMMXC if required.
7853         (_Unwind_VRS_Pop): Implement iWMMXt support.
7854         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
7855         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
7856         gnu_Unwind_Save_WMMXC): Define.
7857
7858 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
7859
7860         * config/vxworks.h (vxworks_override_options): Declare.
7861         (VXWORKS_OVERRIDE_OPTIONS): Use it.
7862         * config/vxworks.c: Include target.h and toplev.h.
7863         (vxworks_override_options): New function.
7864         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
7865
7866 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
7867
7868         * config/s390/s390.c (override_options): Don't emit an error when
7869         -mstack-size is used without providing -mstack-guard.
7870         (s390_emit_prologue): Choose stack_guard value automatically if not
7871         provided via command line.
7872         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
7873
7874 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
7875
7876         * config/i386/i386.c (output_set_got): Add a GOT initialization
7877         sequence for VxWorks PIC.
7878         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
7879         around labels as well as symbols.  Use gotoff_operand instead
7880         of local_symbolic_operand.
7881         (legitimize_pic_address): Use gotoff_operand instead of
7882         local_symbolic_operand.  Use @GOT accesses for labels as
7883         well as symbols.
7884         (ix86_output_addr_diff_elt): Use PC-relative rather than
7885         GP-relative offsets for VxWorks PIC.
7886         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
7887         no_new_pseudos.  Check whether the returned register is op0.
7888         * config/i386/i386.md (tablejump): Use PC-relative rather than
7889         GP-relative offsets for VxWorks PIC.
7890         * config/i386/predicates.md (gotoff_operand): New predicate.
7891
7892 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7893
7894         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
7895         before defining.
7896         * config/vxworks-dummy.h: New file.
7897         * config/i386/i386.h: Include it.
7898
7899 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
7900
7901         * dwarf2out.c (is_inlined_entry_point): New
7902         (add_high_low_attributes): Emit DW_AT_entry_pc along with
7903         DW_AT_ranges if the first subblock is the entry point.
7904
7905 2007-03-06  David Daney  <ddaney@avtrex.com>
7906
7907         * doc/install.texi (mips-*-*): Change recommended binutils
7908         version.
7909
7910 2007-03-06  Anatoly Sokolov <aesok@post.ru>
7911
7912         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
7913         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
7914         devices.
7915         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7916         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7917
7918 2007-03-06  Jan Hubicka  <jh@suse.cz>
7919
7920         * errors.h (warning, error, fatal, internal_error): Mark as cold.
7921         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
7922         are hot.
7923         (probably_cold_bb_p): Cold functions are cold.
7924         (probably_never_executed_bb_p): Cold functions are cold.
7925         (tree_bb_level_predictions): Predict calls to cold functions as not
7926         taken.
7927         (compute_function_frequency): Check hot/cold attributes.
7928         * function.h (function_frequency): Update comments.
7929         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
7930         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
7931         (c_common_att): Add cold and hot.
7932
7933         * doc/extend.texi (hot,cold attributes): Document.
7934
7935 2007-03-06  Andrew Haley  <aph@redhat.com>
7936
7937         * function.c (expand_function_end): Move blockage to just after we
7938         emit the label for the naked return from the function.
7939
7940 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7941
7942         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
7943         before redefining.
7944
7945 2007-03-06  Jan Hubicka  <jh@suse.cz>
7946
7947         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
7948         loaded for constant large models.  Non-large 64bit PIC can do.
7949         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
7950         * cmodel.h: Add LARGE PIC.
7951         * i386.md (UNSPEC_PLTOFF): New.
7952         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
7953         needed.
7954         (*call_1_rex64): Disable for large models.
7955         (*call_1_rex64_large): New.
7956         (*call_value_1_rex64): Disable for large models.
7957         (*call_value_1_rex64_large): New.
7958         (set_rip_rex4): New.
7959         (set_got_offset_rex64): New.
7960         * predicates.md (constant_call_address_operand): For large model
7961         constant calls are not possible.
7962         * i386-protos.h (construct_plt_address): Declare.
7963         * i386.c (override_options): Accept large models.
7964         (ix86_expand_prologue): Expand large PIC GOT pointer load.
7965         (legitimate_constant_p): Add new UNSPECs.
7966         (legitimate_pic_operand_p): Likewise.
7967         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
7968         (legitimize_pic_address): Do easy RIP relative way for TLS only for
7969         non-large model.
7970         (output_pic_addr_const): Add PLTOFF.
7971         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
7972         (ix86_expand_move): Legitimize pic address when in PIC mode.
7973         (construct_plt_address): New function.
7974         (ix86_expand_call): Offload the address to register and use GOT pointer
7975         for large model.
7976         * invoke.texi (mcmodel=large): Update documentation.
7977
7978 2007-03-06  Richard Henderson  <rth@redhat.com>
7979
7980         * config/i386/i386.c (x86_use_leave, x86_push_memory,
7981         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
7982         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
7983         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
7984         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
7985         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
7986         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
7987         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
7988         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
7989         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
7990         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7991         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
7992         x86_sse_partial_reg_dependency, x86_sse_split_regs,
7993         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
7994         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
7995         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
7996         x86_schedule, x86_use_bt, x86_pad_returns,
7997         x86_use_xchgb): Merge into ...
7998         (ix86_tune_features): ... here.  New array.
7999         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
8000         x86_bswap): Merge into ...
8001         (ix86_arch_features): ... here.  New array.
8002         (x86_3dnow_a): Remove.
8003         (x86_accumulate_outgoing_args): Make static.
8004         (x86_arch_always_fancy_math_387): Make static.
8005         (ix86_tune_mask, ix86_arch_mask): Move ...
8006         (override_options): ... to local variables here.  Apply the
8007         appropriate mask to each element of ix86_arch_features and
8008         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
8009         as were done in the old macros.
8010         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
8011         * config/i386/i386.h (x86_use_leave, x86_push_memory,
8012         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
8013         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
8014         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
8015         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
8016         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
8017         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
8018         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
8019         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
8020         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
8021         x86_partial_reg_dependency, x86_memory_mismatch_stall,
8022         x86_accumulate_outgoing_args, x86_prologue_using_move,
8023         x86_epilogue_using_move, x86_decompose_lea,
8024         x86_arch_always_fancy_math_387, x86_shift1,
8025         x86_sse_partial_reg_dependency, x86_sse_split_regs,
8026         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
8027         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
8028         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
8029         x86_use_incdec, x86_pad_returns, x86_bswap,
8030         x86_partial_flag_reg_stall): Remove.
8031         (enum ix86_tune_indices): New.
8032         (ix86_tune_features): New.
8033         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
8034         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
8035         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
8036         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
8037         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
8038         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
8039         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
8040         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
8041         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
8042         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
8043         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
8044         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
8045         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
8046         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
8047         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
8048         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
8049         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
8050         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
8051         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
8052         TARGET_EXT_80387_CONSTANTS): Use it.
8053         (enum ix86_arch_indices): New.
8054         (ix86_arch_features): New.
8055         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
8056         TARGET_BSWAP): Use it.
8057         (ix86_tune_mask, ix86_arch_mask): Remove.
8058
8059 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
8060
8061         PR bootstrap/31020
8062         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
8063         Define using $${sysroot_headers_suffix}.
8064         * configure: Regenerate.
8065         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
8066         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
8067         defined.
8068         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
8069         * gcc.c (print_sysroot_headers_suffix): New.
8070         (option_map): Include --print-sysroot-headers-suffix.
8071         (display_help): Mention -print-sysroot-headers-suffix.
8072         (process_command): Handle -print-sysroot-headers-suffix.
8073         (do_spec_1): Append multilib directory to include-fixed path if
8074         sysroot suffixes in use.
8075         (main): Handle -print-sysroot-headers-suffix.
8076         * Makefile.in (start.encap): Don't depend on xlimits.h
8077         (xlimits.h): Remove.
8078         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
8079         limits.h for each multilib in fixinc_list.
8080         (fixinc_list, s-fixinc_list): New.
8081         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
8082         generate them for each multilib in fixinc_list.
8083         (stmp-fixproto): Use include-fixed.  Run fixproto for each
8084         multilib in fixinc_list.
8085         (mostlyclean): Don't remove xlimits.h.
8086         (clean): Remove include-fixed.
8087         (real-install-headers-tar, real-install-headers-cpio,
8088         real-install-headers-cp): Don't copy include, only include-fixed.
8089         (install-mkheaders): Depend on fixinc_list.  Don't depend on
8090         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
8091         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
8092         SYSTEM_HEADER_DIR setting in mkheaders.conf.
8093
8094 2007-03-06  Jan Hubicka  <jh@suse.cz>
8095
8096         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
8097         NANs easilly.
8098
8099 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8100
8101         * configure.ac: Allow tm_file to contain build-directory files.
8102         * configure: Regenerate.
8103         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
8104         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
8105         * config/m68k/print-sysroot-suffix.sh: New file.
8106
8107 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8108
8109         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
8110         of pic_offset_table_rtx if reload_completed.
8111         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
8112         PIC_OFFSET_TABLE_REGNUM.
8113         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
8114         return true.
8115         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
8116         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
8117
8118 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8119
8120         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
8121         functions that call eh_return.
8122
8123 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8124
8125         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
8126         functions that need a constant pool.
8127
8128 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8129
8130         PR target/28181
8131         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
8132         (m68k_preferred_reload_class): Likewise.
8133         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
8134         (SECONDARY_RELOAD_CLASS): Define.
8135         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
8136         (LIMIT_RELOAD_CLASS): Delete.
8137         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
8138         registers from storing bytes.
8139         (m68k_secondary_reload_class): New function.
8140         (m68k_preferred_reload_class): Likewise.
8141
8142 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8143
8144         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
8145         leaf functions.
8146         (m68k_expand_prologue): Likewise.
8147
8148 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8149
8150         * config/m68k/m68k-protos.h (output_sibcall): Declare.
8151         (mips_expand_epilogue): Add a bool parameter.
8152         (m68k_legitimize_sibcall_address): Declare.
8153         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
8154         (m68k_expand_epilogue): Add a parameter to select between sibling
8155         and normal epilogues.  Only generate a return for the latter.
8156         (m68k_ok_for_sibcall_p): New function.
8157         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
8158         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
8159         (sibcall_value, *sibcall_value): Likewise.
8160         (*call, *call_value): Require !SIBLING_CALL_P.
8161         (epilogue): Update call to m68k_expand_epilogue.
8162         (sibcall_epilogue): New pattern.
8163         * config/m68k/predicates.md (const_call_operand): Say that this
8164         predicate applies to sibling calls too.
8165         (sibcall_operand): New predicate.
8166
8167 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8168
8169         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
8170         alternatives as movsi_cf.
8171         (movsf_cf_hard): Add commentary.
8172
8173 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
8174             Richard Sandiford  <richard@codesourcery.com>
8175
8176         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
8177         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
8178         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
8179         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
8180         as being live on exit from an interrupt function.
8181         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
8182         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
8183         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
8184         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
8185         (m68k_interrupt_function_p): Globalize.
8186         (m68k_compute_frame_layout): Remove reverse mask code.
8187         (m68k_emit_movem, m68k_set_frame_related): New functions.
8188         (m68k_output_function_prologue): Delete in favor of...
8189         (m68k_expand_prologue): ...this new function.
8190         (m68k_output_function_epilogue): Delete in favor of...
8191         (m68k_expand_epilogue): ...this new function.
8192         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
8193         functions.
8194         (print_operand): Handle %?.
8195         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
8196         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
8197         (prologue, epilogue): New patterns.
8198         (return): Turn into a define_expand.
8199         (*return): New pattern, derived from old "return" pattern.  Use rte
8200         rather than rts for interrupt functions.  Only use rtd if the pop
8201         count is nonzero.
8202         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
8203         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
8204         (link, *link, unlink, *unlink, load_got): Likewise.
8205
8206 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8207
8208         PR target/23482
8209         PR target/17114
8210         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
8211         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
8212         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
8213         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
8214         and m68k_matches_u_p.
8215         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
8216         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
8217         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
8218         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
8219         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
8220         (REG_STRICT_P): New macro.
8221         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
8222         PCREL_GENERAL_OPERAND_OK.
8223         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
8224         m68k_legitimate_base_reg_p.
8225         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
8226         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
8227         (PIC_CASE_VECTOR_ADDRESS): Update comment.
8228         * config/m68k/m68k.c (m68k_address): New structure.
8229         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
8230         (m68k_decompose_index, m68k_legitimate_constant_address_p)
8231         (m68k_jump_table_ref_p, m68k_decompose_address)
8232         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
8233         (m68k_matches_u_p): New functions.
8234         (print_operand_address): Rewrite to use m68k_decompose_index.
8235
8236 2007-03-05  David Taylor  <dtaylor@emc.com>
8237
8238         * gcc.c: Correct copyright date in --version output.
8239
8240 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8241
8242         * pa.md: In unamed move patterns, disparge copies between general
8243         and floating point registers using '?' modifier.  Don't include 'f'
8244         constraint for register preferences in DImode, SImode, HImode and
8245         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
8246         Remove constraints for copies between general and floating registers
8247         in soft-float DFmode pattern.
8248         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
8249         floating register.
8250         (movsf): Likewise.
8251
8252 2007-03-05  Mike Stump  <mrs@apple.com>
8253
8254         * c-common.c (targetcm): Add.
8255         * c-opts.c (c_common_handle_option): Handle language specific
8256         target options.
8257         * opts.c (handle_option): Verify language for target options, if
8258         any are given.
8259         * opth-gen.awk: Add CL_LANG_ALL.
8260         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
8261         (TARGETCM_INITIALIZER): Add.
8262         * target.h (struct gcc_targetcm): Add.
8263         (targetcm): Add.
8264         * targhooks.c (default_handle_c_option): Add.
8265         * targhooks.h (default_handle_c_option): Add.
8266         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
8267
8268         * config/darwin.opt (iframework): Add.
8269         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
8270         * config/darwin-c.c (handle_c_option): Add.
8271         (TARGET_HANDLE_C_OPTION): Add.
8272         (targetcm): Add.
8273         * doc/invoke.texi (Darwin Options): Add -iframework.
8274
8275 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8276
8277         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
8278         conversion.
8279
8280 2007-03-05  Ian Lance Taylor  <iant@google.com>
8281
8282         * c.opt (fgnu89-inline): New option.
8283         * c-opts.c (c_common_post_options): Set default value for
8284         flag_gnu89_inline.
8285         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
8286         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
8287         inline functions.
8288         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
8289         (grokdeclarator, start_function): Likewise.
8290         * c-cppbuiltin.c (c_cpp_builtins): Define either
8291         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
8292         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
8293         (C Dialect Options): Document -fgnu89-inline.
8294         * doc/extend.texi (Function Attributes): Explain what the
8295         gnu_inline attribute does.
8296         * doc/cpp.texi (Common Predefined Macros): Document
8297         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
8298
8299 2007-03-05  Ian Lance Taylor  <iant@google.com>
8300
8301         PR tree-optimization/31034
8302         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
8303         half-range if the other side is an overflow infinity.
8304
8305 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
8306
8307         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
8308         (bfin*-linux-uclibc*): New configuration.
8309         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
8310         defining.
8311         * config/bfin/linux.h: New file.
8312         * config/bfin/libgcc-bfin.ver: New file.
8313         * config/bfin/t-bfin-uclinux: New file.
8314         * config/bfin/t-bfin-linux: New file.
8315         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
8316         (TARGET_OS_CPP_BUILTINS): New macro.
8317
8318 2007-03-05  Richard Guenther  <rguenther@suse.de>
8319
8320         * fold-const.c (fold_binary): Remove duplicate folding
8321         of comparison of non-null ADDR_EXPR against null.
8322
8323 2007-03-05  Richard Guenther  <rguenther@suse.de>
8324             Dorit Nuzman  <dorit@il.ibm.com>
8325
8326         PR tree-optimization/26420
8327         * tree-vectorizer.c (vectorize_loops): Bail out early if there
8328         are no loops in the function.  Only print the number of
8329         vectorized loops if it is greater than zero or we are supposed
8330         to print information about unvectorized loops.
8331
8332 2007-03-05  Revital Eres  <eres@il.ibm.com>
8333
8334         * gcc.dg/var-expand1.c: New test.
8335         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
8336         when an accumulator is expanded.
8337
8338 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8339
8340         PR other/30465
8341         * c-common.c (convert_and_check): Don't give warnings for
8342         conversion if 'expr' already overflowed.
8343
8344 2007-03-04  Roger Sayle  <roger@eyesopen.com>
8345
8346         PR middle-end/30744
8347         * fold-const.c (fold_comparison): Enforce type consistency when
8348         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
8349
8350 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
8351
8352         * tree-ssa-address.c (create_mem_ref): Do not put an expression
8353         containing a cast to the base of TARGET_MEM_REF.
8354
8355 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
8356
8357         * tree.c (tree_contains_struct_check_failed): Remove spurious
8358         whitespace from error message.
8359
8360 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
8361
8362         PR target/30406
8363         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
8364         instead of precision.
8365
8366 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
8367             Nathan Sidwell  <nathan@codesourcery.com>
8368
8369         * emit-rtl.c (find_auto_inc): New.
8370         (try_split): recreate REG_INC notes,
8371         Use regular for loops rather than whiles.
8372
8373 2007-03-03  Andreas Schwab  <schwab@suse.de>
8374
8375         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
8376         * configure: Regenerate.
8377
8378 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8379
8380         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
8381         flag_rounding_math, not flag_unsafe_math_optimizations.
8382
8383         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
8384         fold_build2.
8385         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
8386         alpha_fold_vector_minmax): Likewise.
8387         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
8388         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
8389
8390 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8391
8392         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
8393         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
8394         if the lhs has side-effects.
8395         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
8396
8397 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8398
8399         * config/i386/i386.h (TUNEMASK): Remove define.
8400         (ARCHMASK): Remove define.
8401         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
8402          Use ix86_arch_mask variable instead of ARCHMASK.
8403         * config/i386/i386.c (override_options): Ditto.
8404         (standard_80387_constant_p): Ditto.
8405
8406 2007-03-02  Ian Lance Taylor  <iant@google.com>
8407
8408         Used signed infinities in VRP.
8409         * tree-vrp.c (uses_overflow_infinity): New static function.
8410         (supports_overflow_infinity): New static function.
8411         (make_overflow_infinity): New static function.
8412         (negative_overflow_infinity): New static function.
8413         (positive_overflow_infinity): New static function.
8414         (is_negative_overflow_infinity): New static function.
8415         (is_positive_overflow_infinity): New static function.
8416         (is_overflow_infinity): New static function.
8417         (overflow_infinity_range_p): New static function.
8418         (compare_values_warnv): New function split out of compare_values.
8419         (compare_value): Call it.
8420         (set_value_range_to_nonnegative): Add overflow_infinity
8421         parameter.  Change caller.
8422         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
8423         Change callers.
8424         (vrp_expr_computes_nonzero): Likewise.
8425         (compare_ranges, compare_range_with_value): Likewise.
8426         (compare_name_with_value, compare_names): Likewise.
8427         (vrp_evaluate_conditional): Likewise.
8428         (set_value_range): Handle infinity
8429         (vrp_operand_equal_p, operand_less_p): Likewise.
8430         (extract_range_from_assert): Likewise.
8431         (vrp_int_const_binop): Likewise.
8432         (extract_range_from_binary_expr): Likewise.
8433         (extract_range_from_unary_expr): Likewise.
8434         (extract_range_from_comparison): Likewise.
8435         (extract_range_from_expr): Likewise.
8436         (dump_value_range): Likewise.
8437         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
8438         (test_for_singularity): Likewise.
8439         (vrp_int_const_binop): Remove inline qualifier.
8440         (adjust_range_with_scev): Add comment.
8441         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
8442
8443 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
8444
8445         * tree-ssa-structalias.c (could_have_pointers): Tidy.
8446         (get_constraint_for): Likewise.
8447         (do_structure_copy): Likewise.
8448         (find_func_aliases): Fix references to MODIFY_EXPR.
8449         (intra_create_variable_infos): Tidy.
8450         * tree-ssa-operands.c (add_virtual_operand): Add argument
8451         IS_CALL_SITE.
8452         When adding members of alias sets, if IS_CALL_SITE is true and
8453         the symbol is not call-clobbered, skip it.
8454         Adjust all callers.
8455
8456 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8457
8458         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
8459         entry by means of emit_insn_at_entry.
8460
8461 2007-03-02  Richard Henderson  <rth@redhat.com>
8462
8463         * expr.h (promoted_input_arg): Remove decl.
8464         * function.c (promoted_input_arg): Merge into ...
8465         * combine.c (setup_incoming_promotions): ... only caller.
8466         Rearrange to avoid double loop.
8467
8468 2007-03-02  Ben Elliston  <bje@au.ibm.com>
8469             Peter Bergner  <bergner@vnet.ibm.com>
8470             Janis Johnson  <janis187@us.ibm.com>
8471
8472         * config/rs6000/dfp.md: New file.
8473         * config/rs6000/rs6000.md: Include dfp.md.
8474         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
8475         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
8476         and TDmode decimal float modes in FP registers.
8477         (num_insns_constant): Likewise.
8478         (rs6000_legitimate_offset_address_p): Likewise.
8479         (rs6000_legitimize_address): Likewise.
8480         (rs6000_legitimize_reload_address): Likewise.
8481         (rs6000_legitimate_address): Likewise.
8482         (rs6000_emit_move): Likewise.
8483         (function_arg_boundary): Likewise.
8484         (function_arg_advance): Likewise.
8485         (rs6000_darwin64_record_arg_recurse): Likewise.
8486         (function_arg): Likewise.
8487         (rs6000_gimplify_va_arg): Likewise.
8488         (rs6000_split_multireg_move): Likewise.
8489         (rs6000_output_function_epilogue): Likewise.
8490         (rs6000_output_function_epilogue): Likewise.
8491         (rs6000_register_move_cost): Likewise.
8492         (rs6000_function_value): Likewise.
8493         (rs6000_libcall_value): Likewise.
8494
8495 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
8496
8497         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
8498
8499 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
8500
8501         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
8502         Use $MULTIDIR to choose between the kernel and RTP headers,
8503         and use $WIND_BASE and $WIND_USR to locate them.
8504
8505 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8506
8507         * config/i386/i386.c (override_options): Put initialization of
8508         ix86_tune_mask and ix86_arch_mask to the correct place.
8509
8510 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8511             Michael Meissner  <michael.meissner@amd.com>
8512
8513         PR target/31019
8514         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
8515         (ARCHMASK): Define.
8516         (TARGET_CMOVE): Use ARCHMASK.
8517         (TARGET_CMPXCHG): Ditto.
8518         (TARGET_CMPXCHG8B): Ditto.
8519         (TARGET_XADD): Ditto.
8520         (TARGET_BSWAP): Ditto.
8521         * config/i386/i386.c (ix86_tune_mask): New global variable.
8522         (ix86_arch_mask): Ditto.
8523         (override_options): Initialize ix86_tune_mask and
8524         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
8525         target_flags.
8526
8527 2007-03-02  Ben Elliston  <bje@au.ibm.com>
8528
8529         PR 30992
8530         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
8531
8532 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
8533
8534         * target.h (init_dwarf_reg_sizes_extra): New target hook.
8535         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
8536         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
8537         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
8538         hook.
8539         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
8540         rs6000_init_dwarf_reg_sizes_extra): New.
8541         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
8542         SPE register high parts.
8543
8544 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
8545
8546         * Makefile.in: Add install-pdf target as
8547         copied from automake v1.10 rules.
8548         * configure.ac: Add install-pdf to target list.
8549         * configure: Regenerate.
8550
8551 2007-03-01  Paul Brook  <paul@codesourcery.com>
8552
8553         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
8554         modes to LDRD for DImode.
8555         (output_move_double): Fixup out of range ldrd/strd.
8556         (vfp_secondary_reload_class): Rename...
8557         (coproc_secondary_reload_class): ... to this.  Add wb argument.
8558         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
8559         coproc_secondary_reload_class for CLASS_IWMMXT.
8560         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
8561         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
8562
8563 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
8564
8565         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
8566         factor by the estimated number of iterations.
8567         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
8568         prefetch latency.
8569
8570         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
8571         decode_caches_intel, detect_caches_intel): New functions.
8572         (host_detect_local_cpu): Use detect_caches_amd and
8573         detect_caches_intel.
8574
8575 2007-03-01  Richard Henderson  <rth@redhat.com>
8576
8577         * expr.c (emit_move_complex_push): Export.
8578         (emit_move_complex_parts): Split out from ...
8579         (emit_move_complex): ... here.
8580         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
8581         * config/i386/i386.md (movcdi): New.
8582
8583 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
8584
8585         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
8586         size of mode1 to check for tieable modes in MMX case.
8587
8588 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
8589
8590         * Makefile.in (rtlanal.o): Depend on tree.h.
8591         * rtl.h (offset_within_section_p, split_const): Declare.
8592         * rtlanal.c: Include tree.h.
8593         (offset_within_block_p): New function, taken from
8594         mips_offset_within_object_p.
8595         (split_const): New function, taken from mips_split_const.
8596         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
8597         Declare.
8598         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
8599         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
8600         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
8601         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
8602         (m68k_illegitimate_symbolic_constant_p): New function.
8603         * config/m68k/m68k.md (movsi): Remove misleading predicates.
8604         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
8605         symbolic constant that might be outside the symbol's section,
8606         move the symbol first and then add the offset.
8607         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
8608         Override.
8609         * config/mips/mips.c (mips_split_const): Delete.
8610         (mips_offset_within_object_p): Delete.
8611         (mips_symbolic_constant_p): Use offset_within_section_p and
8612         split_const instead of mips_offset_within_object_p and
8613         mips_split_const.
8614         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
8615         (mips_legitimize_const_move, print_operand_reloc)
8616         (mips_dangerous_for_la25_p): Use split_const instead of
8617         mips_split_const.
8618
8619 2007-02-28  Eric Christopher  <echristo@apple.com>
8620
8621         * Makefile.in (install-include-dir): Don't rm -rf include.
8622
8623 2007-02-28  Richard Guenther  <rguenther@suse.de>
8624
8625         PR middle-end/30364
8626         * fold-const.c (fold_binary): Do not associate expressions
8627         with more than one variable for integer types that do not wrap.
8628
8629 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
8630
8631         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
8632         Delete, and replace with...
8633         (fold_builtin_call_array): This.  Update callers to use it.
8634         * fold-const.c (fold_build_call_list): Delete, and replace with...
8635         (fold_build_call_array): This.
8636         (fold_build_call_list_initializer): Delete, and replace with...
8637         (fold_build_call_array_initializer): This.
8638         * tree.h: Update declarations to reflect above changes.
8639
8640         * c-typeck.c (build_function_call): Store converted arguments
8641         in a stack-allocated array instead of building a list.
8642         (convert_arguments): Store arguments in the array passed in as an
8643         argument, and return the actual number of arguments.
8644         * c-format.c: (check_function_format): Pass arguments in an
8645         array instead of a list.
8646         * c-common.c (check_function_nonnull): Likewise.
8647         (check_function_sentinel): Likewise.
8648         (check_function_arguments): Likewise.
8649         * c-common.h: Update declarations to reflect above changes.
8650
8651 2007-02-28  Jan Hubicka  <jh@suse.cz>
8652
8653         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
8654         PRED_NEGATIVE_RETURN): Update outcomes.
8655
8656 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
8657
8658         * calls.c (emit_library_call_value_1): Handle partial registers
8659         correctly when building up CALL_INSN_FUNCTION_USAGE.
8660
8661 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8662
8663         * pa/predicates.md (move_src_operand): Allow zero for mode.
8664         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
8665         move pattern.
8666
8667 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
8668
8669         PR target/30970
8670         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
8671         *movv2df_internal): Enable pattern only for valid operand
8672         combinations.
8673         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
8674         tie only 128bit modes. For MMX registers, tie only 64bit modes.
8675
8676 2007-02-27  Mike Stump  <mrs@apple.com>
8677
8678         * config/darwin-crt3.c: Avoid compilation when compiling for a
8679         kext multilib.
8680
8681 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
8682
8683         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
8684         FIXED_INCLUDE_DIR.
8685         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
8686         for fixed headers and limits.h.
8687         (install-include-dir, install-headers-tar, install-headers-cpio,
8688         install-headers-cp, real-install-headers-tar,
8689         real-install-headers-cpio, real-install-headers-cp): Handle
8690         include-fixed as well as include.
8691         (install-mkheaders): Don't install files that go only in include
8692         not include-fixed.
8693         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
8694         from GCC_INCLUDE_DIR.
8695         * gcc.c (process_command): Remove special -BstageN/ handling.
8696         (do_spec_1): Add include-fixed directories.
8697
8698 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8699
8700         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
8701         _smulsi3_highpart.
8702         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
8703         New functions.
8704         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
8705         patterns.
8706
8707 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
8708
8709         * c-common.c (get_priority): Add check for
8710         SUPPORTS_INIT_PRIORITY.
8711
8712 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8713
8714         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
8715
8716         * config/bfin/bfin.c: Include "cfglayout.h".
8717         (MAX_LSETUP_DISTANCE): New macro.
8718         (struct loop_info): New members incoming, incoming_src and
8719         incoming_dest.  Delete member predecessor.
8720         (length_for_loop): New function.
8721         (bfin_optimize_loop): Handle more different loop structures.
8722         (bfin_discover_loop): Rework detection of predecessor blocks by
8723         examining incoming edges.
8724         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
8725         bfin_reorg_loops.
8726         (bfin_reorder_loops): New function.
8727         (bfin_reorg_loops): Use these three new functions.
8728
8729         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
8730         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
8731         (CONSTRAINT_LEN): Add entry for 'q'.
8732         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
8733         Add 'q' constraints.
8734         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
8735         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
8736
8737         * config/bfin/bfin.md (add_with_carry): New pattern.
8738         (s_or_u, su_optab, su_modifier): New code macros/attrs.
8739         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
8740         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
8741         support unsigned multiplies too.  Removed incorrect commutativity from
8742         operand 1 constraint where appropriate.
8743         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
8744         patterns.
8745         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
8746         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
8747         New patterns.
8748         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
8749         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
8750         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
8751         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
8752         usmulhisi_hh_huh): New patterns.
8753
8754         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
8755         lshifthi3): Fix output template to use half reg for operand 2.
8756
8757         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
8758         instead of R2.
8759
8760         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
8761
8762 2007-02-27  Andreas Schwab  <schwab@suse.de>
8763
8764         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
8765
8766 2007-02-27  Jan Hubicka  <jh@suse.cz>
8767
8768         * predict.c (last_basic_block_p): Remove.
8769         (tree_estimate_probability): Update return heuristic for commonized
8770         return blocks.
8771
8772 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
8773
8774         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
8775
8776 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
8777
8778         * doc/include/gcc-common.texi (versionsubtitle): New macro.
8779         * doc/cpp.texi: Standardize title page.
8780         * doc/cppinternals.texi: Likewise.
8781         * doc/gcc.texi: Standardize title page, remove version number
8782         from copyright page.
8783         * doc/gccint.texi: Likewise.
8784         * doc/install.texi: Standardize title page, add table of
8785         contents.
8786
8787 2007-02-26  Jan Hubicka  <jh@suse.cz>
8788
8789         * predict.def: Set outcomes according to more recent results.
8790         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
8791         Remove dead predictors.
8792         * predict.c (return_prediction): Fix pasto.
8793
8794 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8795
8796         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
8797         change; avoid a memory leak when returning early.
8798
8799 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
8800
8801         * c-decl.c (static_ctors): Move to c-common.c.
8802         (static_dtors): Likewise.
8803         (finish_function): Use c_record_cdtor_fn.
8804         (build_cdtor): Move to c-common.c.
8805         (c_write_global_declarations): Use c_build_cdtor_fns.
8806         * c-common.h (static_ctors): Declare.
8807         (static_dtors): Likewise.
8808         (c_record_cdtor_fn): Likewise.
8809         (c_build_cdtor_fns): Likewise.
8810         * c-common.c (static_ctors): New variable.
8811         (static_dtors): Likewise.
8812         (c_record_cdtor_fn): New function.
8813         (build_cdtor): Move from c-decl.c
8814         (c_build_cdtor_fns): New function.
8815
8816         * output.h (assemble_addr_to_section): Declare.
8817         (get_cdtor_priority_section): Likewise.
8818         * varasm.c (assemble_addr_to_section): New function.
8819         (get_cdtor_priority_section): Likewise.
8820         (default_named_section_asm_out_destructor): Use them.
8821         (destor_dtor_section_asm_out_destructor): Likewise.
8822         (default_named_section_asm_out_constructor): Likewise.
8823         (default_ctor_section_asm_out_constructor): Likewise.
8824         * config.gcc (*-*-vxworks*): Include vxworks.o.
8825         * config/t-vxworks (vxworks.o): New target.
8826         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
8827         (TARGET_ASM_CONSTRUCTOR): Define.
8828         (TARGET_ASM_DESTRUCTOR): Likewise.
8829         (vxworks_asm_out_constructor): Declare.
8830         (vxworks_asm_out_destructor): Likewise.
8831
8832         * c-common.c (get_priority): Check that we have not just an
8833         INTEGER_CST, but an integer constant with integeral type.
8834
8835 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
8836
8837         PR tree-optimization/30938
8838         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
8839         use &dt[nargs-1] instead of &dt[nargs] in the call to
8840         vect_is_simple_use().
8841
8842 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
8843
8844         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
8845         from register elimination as PRE_MODIFY / POST_MODIFY increments.
8846         Do not attempt to handle MEM inside auto-inc expressions.
8847         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
8848         of a register modified by an auto-inc expression.  However, do handle
8849         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
8850         (elimination_effects): Prohibit elimination of a register modified
8851         by an auto-inc expression.  Disable register elimination rules whose
8852         target register is modified by an auto-inc expression with variable
8853         increment.
8854
8855 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
8856
8857         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
8858         off-by-one error.
8859         (array_at_struct_end_p): New function.
8860         (idx_infer_loop_bounds): Use it.
8861         (estimate_numbers_of_iterations_loop): Export.
8862         * predict.c (predict_loops): Use estimated_loop_iterations_int.
8863         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
8864         (tree_estimate_probability): Call record_loop_exits.
8865         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
8866         (estimated_loop_iterations, estimated_loop_iterations_int,
8867         estimated_loop_iterations_tree): New functions.
8868         (analyze_siv_subscript_cst_affine,
8869         compute_overlap_steps_for_affine_1_2,
8870         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
8871         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
8872         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
8873         (PRED_LOOP_ITERATIONS_GUESSED): New.
8874         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
8875         * cfgloop.h (estimate_numbers_of_iterations_loop,
8876         estimated_loop_iterations_int): Declare.
8877
8878 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
8879
8880         * doc/extend.texi: Document optional priority argument to
8881         constructors and destructors.
8882         * tree.c (init_priority_for_decl): Adjust GTY markers.
8883         (init_ttree): Use priority-info hash functions for
8884         init_priority_for_decl.
8885         (tree_map_eq): Rename to ...
8886         (tree_map_base_eq): ... this.
8887         (tree_map_marked_p): Rename to ...
8888         (tree_map_base_marked_p): ... this.
8889         (tree_map_base_hash): New function.
8890         (decl_init_priority_lookup): Rework.
8891         (decl_fini_priority_lookup): New function.
8892         (decl_priority_info): New function.
8893         (decl_init_priority_insert): Use it.
8894         (decl_fini_priority_insert): Likewise.
8895         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
8896         hierarchy.
8897         (decl_restrict_base_insert): Likewise.
8898         (decl_debug_expr_insert): Likewise.
8899         (decl_value_expr_lookup): Likewise.
8900         (decl_value_expr_insert): Likewise.
8901         * tree.h (priority_type): New type.
8902         (decl_init_priority_lookup): Use priority_type.
8903         (decl_fini_priority_lookup): New function.
8904         (decl_init_priority_insert): Use priority_type.
8905         (decl_fini_priority_insert): New function.
8906         (DECL_HAS_INIT_PRIORITY): Tweak comments.
8907         (DECL_INIT_PRIORITY): Likewise.
8908         (SET_DECL_INIT_PRIORITY): Add comment.
8909         (DECL_FINI_PRIORITY): New macro.
8910         (SET_DECL_FINI_PRIORITY): Likewise.
8911         (DEFAULT_INIT_PRIORITY): Document.
8912         (MAX_INIT_PRIORITY): Likewise.
8913         (MAX_RESERVED_INIT_PRIORITY): Likewise.
8914         (tree_map_base): New type.
8915         (tree_map_base_eq): New function.
8916         (tree_map_base_hash): Likewise.
8917         (tree_map_base_marked_p): Likewise.
8918         (tree_map): Inherit from tree_map_base.
8919         (tree_map_eq): Make it a macro.
8920         (tree_map_marked_p): Likewise.
8921         (tree_int_map): Inherit from tree_map_base.
8922         (tree_int_map_eq): Make it a macro.
8923         (tree_int_map_hash): Likewise.
8924         (tree_int_map_marked_p): Likewise.
8925         (tree_priority_map): New type.
8926         (tree_priority_map_eq): New macro.
8927         (tree_priority_map_hash): Likewise.
8928         (tree_priority_map_marked_p): Likewise.
8929         * varasm.c (emults_decl): Adjust for refactoring of tree_map
8930         hierarchy.
8931         (emutls_common_1): Likewise.
8932         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
8933         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
8934         of tree_map hierarchy.
8935         * tree-cfg.c (move_stmt_r): Likewise.
8936         (new_label_mapper): Likewise.
8937         * c-tree.h (c_expand_body): Move to ...
8938         * c-common.h (c_expand_body): ... here.
8939         * c-decl.c (c_expand_body): Move to ...
8940         * c-common.c (c_expand_body): ... here.
8941         (c_common_attribute_table): Allow 1 argument for the constructor
8942         and destructor attributes.
8943         (get_priority): New function.
8944         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
8945         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
8946
8947 2007-02-24  Jan Hubicka  <jh@suse.cz>
8948
8949         PR middle-end/30509
8950         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
8951
8952 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
8953             Jan Hubicka  <jh@suse.cz>
8954
8955         PR target/30778
8956         * i386.c (counter_mode): New function.
8957         (expand_set_or_movmem_via_loop): Use it.
8958         (expand_movmem_epilogue): Likewise; fix pasto.
8959         (ix86_expand_movmem): Do emit guard even for constant counts.
8960         (ix86_expand_setmem): Likewise.
8961
8962 2007-02-25  Nick Clifton  <nickc@redhat.com>
8963
8964         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
8965         (JUMP_TABLES_IN_TEXT_SECTION): Define.
8966
8967 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
8968
8969         PR target/30770
8970         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
8971         count argument with 0x10, not with 0x16.
8972         (expand_setmem_epilogue): Ditto.
8973
8974 2007-02-24  Mike Stump  <mrs@apple.com>
8975
8976         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
8977         symbols.
8978
8979 2007-02-24  Richard Guenther  <rguenther@suse.de>
8980
8981         PR middle-end/30951
8982         * fold-const.c (fold_binary): Fold x +- CST op x for
8983         EQ_EXPR and NE_EXPR.
8984
8985 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8986
8987         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
8988
8989 2007-02-24  Jan Hubicka  <jh@suse.cz>
8990
8991         * cgraphunit.c (decide_is_function_needed): Honor
8992         -fkeep-inline-functions.
8993
8994 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8995
8996         * builtins.c (fold_builtin_modf): New.
8997         (fold_builtin_2): Use it.
8998
8999 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
9000
9001         * loop-iv.c (implies_p): Detect additional cases where A implies B.
9002         (determine_max_iter): Take additional LOOP arg; all callers changed.
9003         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
9004         one using simplifications.
9005         (simplify_using_initial_values): Return if the expression becomes
9006         invalid due to altered regs.
9007
9008 2007-02-23  DJ Delorie  <dj@redhat.com>
9009
9010         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
9011
9012 2007-02-23  Mike Stump  <mrs@apple.com>
9013
9014         * tlink.c (scan_linker_output): Parse linker messages from
9015         darwin9's linker better.
9016
9017 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
9018
9019         PR debug/29614
9020         * varpool.c (varpool_assemble_pending_decls):  Set
9021         varpool_last_needed_node to null.
9022
9023 2007-02-23  DJ Delorie  <dj@redhat.com>
9024
9025         * config/i386/i386.c (ix86_data_alignment): Don't specify an
9026         alignment bigger than the object file can handle.
9027
9028 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
9029
9030         PR target/30825
9031         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
9032         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
9033         (*movsf_1): Penalize MMX moves.
9034
9035 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
9036
9037         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
9038         2^32-1 or more times unless flag_unsafe_loop_optimizations.
9039
9040         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
9041
9042 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9043
9044         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
9045         (fold_builtin_1): Use them.
9046         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
9047         BUILT_IN_SIGNIFICAND.
9048
9049 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
9050
9051         * config/i386/i386.c (bdesc_1arg): Initialize
9052         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
9053         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
9054         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
9055         and IX86_BUILTIN_MOVSLDUP.
9056
9057 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
9058
9059         PR rtl-optimization/30841
9060         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
9061
9062 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9063
9064         * builtins.c (fold_builtin_frexp): New.
9065         (fold_builtin_2): Use it.
9066
9067 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
9068
9069         * doc/invoke.texi (Spec Files): Document getenv spec function.
9070
9071         * gcc.c (getenv_spec_function): New function.
9072         (static_spec_functions): Add it.
9073         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
9074         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
9075         header files.
9076
9077 2007-02-22  Michael Matz  <matz@suse.de
9078
9079         PR c++/29433
9080         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
9081         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
9082
9083 2007-02-22  Ian Lance Taylor  <iant@google.com>
9084
9085         PR debug/30898
9086         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
9087         (mem_loc_descriptor): Call it.
9088
9089 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
9090             Ira Rosen  <irar@il.ibm.com>
9091
9092         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
9093
9094 2007-02-22  Ira Rosen  <irar@il.ibm.com>
9095
9096         PR tree-optimization/30843
9097         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
9098         stores only after all the group is vectorized.
9099
9100 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
9101
9102         PR tree-optimization/30858
9103         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
9104         in the reduction cycle have a single use in the loop.
9105         * tree-vectorizer.h (relevant): Add documentation.
9106
9107 2007-02-20  Mike Stump  <mrs@apple.com>
9108
9109         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
9110         * configure: Regenerate.
9111
9112 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9113
9114         Change the defaults of some parameters and options.
9115         * config/spu/spu-protos.h (spu_optimization_options): Declare.
9116         * config/spu/spu.c (spu_optimization_options): Add.
9117         (spu_override_options): Change params in spu_optimization_options.
9118         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
9119
9120         Register 127 is only 16 byte aligned when used as a frame pointer.
9121         * config/spu/spu-protos.h (spu_init_expanders): Declare.
9122         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
9123         HARD_FRAME_POINTER_REGNUM.
9124         (spu_legitimate_address):  Use regno_aligned_for_reload.
9125         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
9126         aligned when frame_pointer_needed is true.
9127         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
9128         to 8 bits.
9129         * config/spu/spu.h (INIT_EXPANDERS): Define.
9130
9131         Make sure shift and rotate instructions have valid immediate operands.
9132         * config/spu/predicates.md (spu_shift_operand): Remove.
9133         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
9134         * config/spu/constraints.md (W, O): Extend range.
9135         * config/spu/spu.md (umask, nmask): Define.
9136         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
9137         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
9138         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
9139         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
9140         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
9141         (lshr<mode>3_reg):  Fix rtl description.
9142
9143         Make sure mulhisi immediate operands are valid.
9144         * config/spu/predicates.md (imm_K_operand): Add.
9145         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
9146
9147         Generate constants using fsmbi and andi.
9148         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
9149         (print_operand, spu_split_immediate, classify_immediate,
9150         fsmbi_const_p): Handle IC_FSMBI2.
9151
9152         Correctly handle a CONST_VECTOR containing symbols.
9153         * config/spu/spu.c (print_operand): Handle HIGH correctly.
9154         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
9155         (immediate_load_p): Allow symbols that use 2 instructions to create.
9156         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
9157         with symbols when flag_pic is set.
9158         (const_vector_immediate_p): New.
9159         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
9160         accept a CONST_VECTOR with symbols.
9161         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
9162         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
9163         correctly.
9164         * config/spu/spu.md (high, low): Delete.
9165         (low_<mode>): Define.
9166
9167         Remove INTRmode and INTR_REGNUM, which didn't work.
9168         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
9169         of INTR_REGNUM.
9170         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
9171         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
9172         peephole2 pattern): Don't use INTR or 131.
9173         (movintrcc): Delete.
9174         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
9175         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
9176         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
9177         (UNSPEC_SET_INTR): Add.
9178         * config/spu/spu-modes.def (INTR): Remove.
9179
9180         More accurate warnings about run-time relocations.
9181         * config/spu/spu.c (reloc_diagnostic): Test in_section.
9182
9183         Correctly warn about immediate arguments to specific intrinsics.
9184         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
9185         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
9186         the instruction predicate.
9187
9188         Fix tree check errors with latest update.
9189         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
9190         CALL_EXPR_ARG.
9191         (spu_expand_builtin): Use CALL_EXPR_FN.
9192
9193         Add missing specific intrinsics.
9194         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
9195         si_bislede.
9196         * config/spu/spu_internals.h: Ditto.
9197
9198         Fix incorrect operand modifiers.
9199         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
9200         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
9201
9202         Optimize one case of zero_extend of a vec_select.
9203         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
9204
9205         Accept any immediate for hbr.
9206         * config/spu/spu.md (hbr):  Change s constraints to i.
9207
9208 2007-02-21  Paul Brook  <paul@codesourcery.com>
9209
9210         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
9211         condexec_count when skipping USE and CLOBBER.
9212
9213 2007-02-21  Nick Clifton  <nickc@redhat.com>
9214
9215         * common.opt (Warray-bounds): Add Warning attribute.
9216         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
9217         Likewise.
9218         (fsized-zeroes): Add Optimization attribute.
9219         (fsplit-wide-types, ftree-scev-cprop): Likewise.
9220         * c.opt (Wc++0x-compat): Add Warning attribute.
9221
9222 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
9223
9224         PR middle-end/30761
9225         * reload1.c (eliminate_regs_in_insn): In the single_set special
9226         case, attempt to re-recognize the insn before falling back to
9227         having reload fix it up.
9228
9229 2007-02-20  Eric Christopher  <echristo@gmail.com>
9230
9231         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
9232         Rewrite accordingly.
9233         (frv_read_iacc_argument): Ditto.
9234         (frv_expand_set_builtin): Take a call instead of arglist, update for
9235         above changes.
9236         (frv_expand_unop_builtin): Ditto.
9237         (frv_expand_binop_builtin): Ditto.
9238         (frv_expand_cut_builtin): Ditto.
9239         (frv_expand_binopimm_builtin): Ditto.
9240         (frv_expand_voidbinop_builtin): Ditto.
9241         (frv_expand_int_void2arg): Ditto.
9242         (frv_expand_prefetches): Ditto.
9243         (frv_expand_voidtriop_builtin): Ditto.
9244         (frv_expand_voidaccop_builtin): Ditto.
9245         (frv_expand_load_builtin): Ditto.
9246         (frv_expand_store_builtin): Ditto.
9247         (frv_expand_mdpackh_builtin): Ditto.
9248         (frv_expand_mclracc_builtin): Ditto.
9249         (frv_expand_mrdacc_builtin): Ditto.
9250         (frv_expand_mwtacc_builtin): Ditto.
9251         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
9252         calls for above.
9253
9254 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
9255
9256         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
9257         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
9258         cmpb instruction.
9259         (HAVE_GAS_DFP): Check for assembler support of decimal floating
9260         point instructions.
9261         * configure: Regenerate.
9262         * config.in: Regenerate.
9263         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
9264         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
9265         masks to power6 and power6x and to POWERPC_MASKS.
9266         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
9267         _ARCH_PWR6.
9268         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
9269         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
9270         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
9271         Access PROTOTYPE as variable, not mask.
9272
9273 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
9274
9275         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
9276         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
9277         * combine.c (adjust_for_new_dest): Use it.
9278         * postreload.c (reload_combine): Likewise.
9279
9280 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
9281
9282         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
9283         notes on an insn with multiple sets, even if single_set returns
9284         non-NULL for that insn.
9285
9286 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9287
9288         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
9289         scalbn and scalbln.
9290
9291 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
9292
9293         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
9294         if user didn't pass it.
9295         * config/i386/darwin.h (CC1_SPEC): Likewise.
9296         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
9297         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
9298         -mmacosx-version-min.
9299
9300 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9301             Uros Bizjak  <ubizjak@gmail.com>
9302
9303         * optabs.h (enum optab_index): Add new OTI_scalb.
9304         (scalb_optab): Define corresponding macro.
9305         * optabs.c (init_optabs): Initialize scalb_optab.
9306         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
9307         patterns.
9308         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
9309         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
9310         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
9311         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
9312         flag_unsafe_math_optimizations is set.
9313
9314         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
9315         to implement scalbf, scalb and scalbl built-ins as inline x87
9316         intrinsics.
9317
9318 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9319             DJ Delorie <dj@redhat.com>
9320
9321         PR other/30824
9322         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
9323         (diagnostic_report_diagnostic): ... here, and turn them into real
9324         errors. If warnings are inhibited, no need to do anything.
9325
9326 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
9327
9328         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
9329         better code generation.
9330
9331 2007-02-20  Ben Elliston  <bje@au.ibm.com>
9332
9333         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
9334
9335 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
9336
9337         * config/alpha/alpha.c, config/alpha/alpha.md,
9338         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
9339         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
9340         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
9341         config/arm/lib1funcs.asm: Follow spelling conventions.
9342
9343         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
9344         config/fr30/fr30.md, config/i386/i386.h,
9345         config/iq2000/iq2000.h, config/iq2000/predicates.md,
9346         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
9347         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
9348         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
9349         config/rs6000/altivec.md, config/rs6000/rs6000.c,
9350         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
9351         config/sparc/sparc.c, config/sparc/sparc.h,
9352         config/sparc/sparc.md, config/spu/constraints.md,
9353         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
9354         conventions.
9355
9356 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
9357
9358         PR target/29943
9359         * varasm.c (use_blocks_for_decl_p): Return false for decls with
9360         alias attribute.
9361
9362 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
9363
9364         * doc/invoke.texi (-ftree-lrs): Remove.
9365
9366 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
9367
9368         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
9369         NULL.
9370
9371 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
9372
9373         * config/ia64/ia64.c (ia64_expand_builtin): Use the
9374         new CALL_EXPR_FN macro for retrieving the function
9375         declaration of the input expression.
9376
9377 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9378
9379         * c.opt (Waddress): New.
9380         * common.opt (Walways-true): Delete.
9381         (Wstring-literal-comparison): Delete.
9382         * doc/invoke.texi (Warning Options): Delete -Walways-true and
9383         -Wstring-literal-comparison. Add -Waddress.
9384         (Waddress): New.
9385         (Walways-true): Delete.
9386         (Wstring-literal-comparison): Delete.
9387         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
9388         consistently instead of -Walways-true in example.
9389         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
9390         * c-typeck.c (parser_build_binary_op): Replace
9391         -Wstring-literal-comparison and -Walways-true with -Waddress.
9392         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
9393         with -Waddress.
9394
9395 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
9396
9397         * tree-cfg.c (dump_function_to_file): Be prepared for functions
9398         without DECL_STRUCT_FUNCTION initialized.
9399
9400 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
9401
9402         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
9403         due to calls to functions taking pointers as parameters.
9404
9405 2007-02-19  Richard Henderson  <rth@redhat.com>
9406
9407         PR debug/29558
9408         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
9409         in memory.
9410
9411 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9412
9413         * config/s390/s390.c (s390_call_saved_register_used,
9414         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
9415         accessed to the new scheme.
9416
9417 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
9418
9419         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
9420         (cris_print_index, cris_print_operand, cris_print_operand_address)
9421         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
9422         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
9423         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
9424         GET_CODE () == xxx.
9425         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
9426         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
9427         GO_IF_LEGITIMATE_ADDRESS): Ditto.
9428         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
9429         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
9430         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
9431         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
9432         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
9433         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
9434         (uminsi3, call, call_value): Ditto.
9435         (define_split: indir_to_reg_split, unnamed): Ditto.
9436
9437 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
9438
9439         PR tree-optimization/30975
9440         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
9441         wrong assert.
9442
9443 2007-02-18  Eric Christopher  <echristo@gmail.com>
9444
9445         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
9446         Remove use of arglist.
9447         (mips_expand_builtin): Remove use of arglist, pass in expr.
9448         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
9449         (mips_expand_builtin_movtf): Ditto.
9450         (mips_expand_builtin_compare): Ditto.
9451
9452 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
9453
9454         * tree-sra.c (sra_build_assignment): Replace assertion
9455         checking with a comment explaining why it can't be done.
9456
9457 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
9458
9459         PR middle-end/30833
9460         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
9461         during CALL_EXPR representation conversion.
9462         * tree-ssa-propagate.c (set_rhs): Likewise.
9463
9464 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
9465
9466         * tree-sra.c (sra_build_assignment): Disable assertion checking
9467         for now.
9468
9469 2007-02-18  Roger Sayle  <roger@eyesopen.com>
9470
9471         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
9472         instead of calling build2 with a GIMPLE_MODIFY_STMT.
9473         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
9474         Likewise.
9475         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
9476         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
9477         gimplify_init_ctor_eval_range, gimple_push_cleanup,
9478         gimplify_omp_for, gimplify_omp_atomic_pipeline,
9479         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
9480         force_gimple_operand): Likewise.
9481         * ipa-cp.c (constant_val_insert): Likewise.
9482         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
9483         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
9484         perfect_nestify): Likewise.
9485         * langhooks.c (lhd_omp_assignment): Likewise.
9486         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
9487         lower_copyprivate_clauses, lower_send_clauses,
9488         lower_send_shared_vars, expand_parallel_call,
9489         expand_omp_for_generic, expand_omp_for_static_nochunk,
9490         expand_omp_for_static_chunk, expand_omp_sections,
9491         lower_omp_single_copy, lower_omp_for_lastprivate,
9492         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
9493         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
9494         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
9495         Likewise.
9496
9497 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
9498
9499         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
9500         config/sh/sh.md: Follow spelling conventions.
9501
9502         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
9503         config/frv/predicates.md: Follow spelling conventions.
9504
9505         * config/m68k/linux-unwind.h: Fix a comment typo.
9506         * target.h: Follow spelling conventions.
9507
9508 2007-02-18  Roger Sayle  <roger@eyesopen.com>
9509
9510         PR rtl-optimization/28173
9511         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
9512         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
9513         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
9514         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
9515         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
9516
9517 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9518
9519         * builtins.c (fold_builtin_load_exponent): New.
9520         (fold_builtin_2): Use it.
9521
9522 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
9523
9524         PR rtl-optimization/30773
9525         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
9526         if we fail to attach a REG_EQUIV note.
9527
9528 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
9529             Roger Sayle  <roger@eyesopen.com>
9530
9531         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
9532
9533 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
9534
9535         * calls.c (initialize_argument_information): Pass original EXP
9536         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
9537         code to split complex arguments here, as part of initializing the
9538         ARGS array.
9539         (expand_call): Remove code that builds a list of arguments and
9540         inserts implicit arguments into it.  Instead, just count how many
9541         implicit arguments there will be so we can determine the size of
9542         the ARGS array, and let initialize_argument_information do the work.
9543         (split_complex_values): Delete unused function.
9544
9545 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
9546
9547         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
9548
9549 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
9550
9551         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
9552         for arg pointer based indexed addressing.
9553
9554 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
9555
9556         * config/ia64/ia64.h, config/ia64/ia64.md,
9557         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
9558         spelling conventions.
9559
9560 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9561
9562         * config/m68k/m68k.c (split_di): New.
9563         * config/m68k/m68k-protos.h: Declare split_di.
9564         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
9565           Improve predicate handling and split constant shifts.
9566
9567 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9568
9569         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
9570         parameter for register bitfield operations, general predicates
9571         cleanup
9572
9573 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9574
9575         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
9576         * config/m68k/linux-unwind.h: New file.
9577
9578 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
9579
9580         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
9581         config/i386/athlon.md, config/ia64/ia64.md,
9582         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
9583         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
9584         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
9585         tree-ssa-loop-niter.c, tree-vect-analyze.c,
9586         tree-vect-transform.c: Fix comment typos.
9587
9588 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
9589
9590         * sched-deps.c (find_insn_list): Remove.
9591         * sched-int.h: Remove the prototype for find_insn_list.
9592
9593 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
9594
9595         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
9596         to linker.
9597         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
9598         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
9599         darwin_rs6000_override_options.
9600         (C_COMMON_OVERRIDE_OPTIONS): Expect
9601         darwin_macosx_version_min to be non-NULL always.
9602         (TARGET_C99_FUNCTIONS): Likewise.
9603         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
9604         (DARWIN_MINVERSION_SPEC): New.
9605         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
9606         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
9607         to cc1*.
9608         (DARWIN_MINVERSION_SPEC): New.
9609         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
9610         value.
9611         * config/darwin-c.c (darwin_cpp_builtins): Expect
9612         darwin_macosx_version_min to be non-NULL always.
9613
9614         * config/rs6000/rs6000.c: Clean up trailing whitespace.
9615
9616 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
9617
9618         * config/i386/i386.h (x86_use_xchgb): New.
9619         (TARGET_USE_XCHGB): New macro.
9620         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
9621         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
9622         Split after reload into bswaphi for shifts of 8.
9623         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
9624         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
9625         or when optimizing for size.
9626
9627 2007-02-16  Richard Guenther  <rguenther@suse.de>
9628             Christian Bruel  <christian.bruel@st.com>
9629
9630         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
9631         DECLs but prefer SSA_NAMEs over DECLs.
9632
9633 2007-02-16  Richard Guenther  <rguenther@suse.de>
9634
9635         * tree-flow-inline.h (single_imm_use_p): Remove.
9636         (zero_imm_uses_p): Likewise.
9637         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
9638         instead of single_imm_use_p.
9639         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
9640         zero_imm_uses_p.
9641
9642 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9643
9644         PR other/27843
9645         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
9646         nested double- and backquotes.
9647
9648 2007-02-15  Roger Sayle  <roger@eyesopen.com>
9649
9650         PR middle-end/30391
9651         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
9652         should be unreachable.
9653         (build2_stat): Allow construction of MODIFY_EXPR at any time.
9654         For the time being redirect GIMPLE_MODIFY_STMT to the new
9655         (renamed) build_gimple_modify_stmt_stat.
9656         (build2_gimple_stat): Rename to...
9657         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
9658         Always build a GIMPLE_MODIFY_STMT node.
9659         * tree.h (build2_gimple, build2_gimple_stat): Delete.
9660         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
9661         declarations.
9662
9663         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
9664         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
9665         * tree-complex.c (set_component_ssa_name, expand_complex_move,
9666         expand_complex_div_wide): Likewise.
9667         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
9668         * tree-ssa-loop-im.c (schedule_sm): Likewise.
9669         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
9670         * tree-ssa-loop-manip.c (create_iv): Likewise.
9671         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
9672         abs_replacement): Likewise.
9673         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
9674         realify_fake_stores): Likewise.
9675
9676         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
9677         node rather than a GIMPLE_MODIFY_STMT node.
9678         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
9679         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
9680         Likewise.
9681         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
9682         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
9683         GIMPLE_MODIFY_STMT.
9684
9685 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9686
9687         PR middle-end/30433
9688         * fold-const.c (fold_comparison): Add back the
9689         folding of constant complex comparisions.
9690
9691 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9692
9693         PR middle-end/30729
9694         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
9695         effects unknown to this function, return early.
9696
9697 2007-02-15  Ian Lance Taylor  <iant@google.com>
9698
9699         * lower-subreg.c (move_eh_region_note): New static function.
9700         (resolve_simple_move): Call it.
9701         (decompose_multiword_subregs): Track blocks for which we resolve a
9702         simple move which is also a control flow insn.  Pass them to
9703         find_many_sub_basic_blocks.
9704         (pass_lower_subreg): Add TODO_verify_flow.
9705         (pass_lower_subreg2): Likewise.
9706
9707 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9708             Brooks Moses  <brooks.moses@codesourcery.com>
9709             Lee Millward  <lee.millward@codesourcery.com>
9710
9711         * tree.h (enum tree_code_class): Add tcc_vl_exp.
9712         (VL_EXP_CLASS_P): New.
9713         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
9714         TREE_CODE_LENGTH.
9715         (TREE_OPERAND_CHECK_CODE): Likewise.
9716         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
9717         (TREE_RTL_OPERAND_CHECK): Likewise.
9718         (tree_operand_check_failed): Make second parameter the whole tree
9719         instead of its code.  Fixed callers.
9720         (VL_EXP_CHECK): New.
9721         (TREE_OPERAND_LENGTH): New.
9722         (VL_EXP_OPERAND_LENGTH): New.
9723         (CALL_EXPR_FN): New.
9724         (CALL_EXPR_STATIC_CHAIN): New.
9725         (CALL_EXPR_ARGS): New.
9726         (CALL_EXPR_ARG): New.
9727         (call_expr_nargs): New.
9728         (CALL_EXPR_ARGP): New.
9729         (build_nt_call_list): Declare.
9730         (build_vl_exp_stat): Declare.
9731         (build_vl_exp): New.
9732         (build_call_list): Declare.
9733         (build_call_nary): Declare.
9734         (build_call_valist): Declare.
9735         (build_call_array): Declare.
9736         (call_expr_arg): Declare.
9737         (call_expr_argp): Declare.
9738         (call_expr_arglist): Declare.
9739         (fold_build_call_list): Declare.
9740         (fold_build_call_list_initializer): Declare.
9741         (fold_call_expr): Declare to replace fold_builtin.
9742         (fold_builtin_fputs): Update to agree with modified definition.
9743         (fold_builtin_strcpy): Likewise.
9744         (fold_builtin_strncpy): Likewise.
9745         (fold_builtin_memory_chk): Likewise.
9746         (fold_builtin_stxcpy_chk): Likewise.
9747         (fold_builtin_strncpy_chk): Likewise.
9748         (fold_builtin_next_arg): Likewise.
9749         (fold_build_call_expr): Declare.
9750         (fold_builtin_call_list): Declare.
9751         (fold_builtin_call_valist): Declare.
9752         (build_call_expr): Declare.
9753         (validate_arglist): Update to agree with modified definition.
9754         (tree_operand_length): New.
9755         (call_expr_arg_iterator): New.
9756         (init_call_expr_arg_iterator): New.
9757         (next_call_expr_arg): New.
9758         (first_call_expr_arg): New.
9759         (more_call_expr_args_p): New.
9760         (FOR_EACH_CALL_EXPR_ARG): New.
9761
9762         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
9763         and tcc_gimple_stmt.
9764         (tree_code_size): Update documentation.  Use sizeof (tree) rather
9765         than sizeof (char *).
9766         (tree_size): Likewise.  Add case for tcc_vl_exp.
9767         (tree_node_structure): Add case for tcc_vl_exp.
9768         (contains_placeholder_p): Likewise.
9769         (substitute_in_expr): Likewise.
9770         (substitute_placeholder_in_expr): Likewise.
9771         (stabilize_reference_1): Likewise.
9772         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
9773         to diagnose breakage of this interface for constructing CALL_EXPRs.
9774         (build_nt): Add similar assertion here.
9775         (build_nt_call_list): New.
9776         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
9777         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
9778         TREE_CODE_LENGTH.
9779         (get_callee_fndecl): Use new CALL_EXPR accessors.
9780         (tree_operand_check_failed): Change parameters to pass entire node
9781         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
9782         (process_call_operands): New.
9783         (build_vl_exp_stat): New.
9784         (build_call_list): New.
9785         (build_call_nary): New.
9786         (build_call_valist): New.
9787         (build_call_array): New.
9788         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9789         (call_expr_arglist): New.
9790
9791         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
9792         tcc_vl_exp instead of a fixed-size tcc_expression.
9793
9794         * doc/c-tree.texi (CALL_EXPR): Document new representation and
9795         accessors for CALL_EXPRs.
9796         (AGGR_INIT_EXPR): Likewise.
9797
9798 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9799             Brooks Moses  <brooks.moses@codesourcery.com>
9800             Lee Millward  <lee.millward@codesourcery.com>
9801
9802         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
9803         (expand_builtin_nonlocal_goto): Change parameter to be entire
9804         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
9805         (expand_builtin_prefetch): Likewise.
9806         (expand_builtin_classify_type): Likewise.
9807         (mathfn_built_in): Return NULL_TREE instead of 0.
9808         (expand_errno_check): Use new CALL_EXPR accessors.
9809         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
9810         Return NULL_RTX instead of 0.
9811         (expand_builtin_mathfn_2): Likewise.
9812         (expand_builtin_mathfn_3): Likewise.
9813         (expand_builtin_interclass_mathfn): Likewise.
9814         (expand_builtin_sincos): Likewise.
9815         (expand_builtin_cexpi): Likewise.
9816         (expand_builtin_int_roundingfn): Likewise.
9817         (expand_builtin_int_roundingfn_2): Likewise.
9818         (expand_builtin_pow): Likewise.
9819         (expand_builtin_powi): Likewise.
9820         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
9821         of arglist, fixing callers appropriately.  Use new CALL_EXPR
9822         accessors and constructors.  Return NULL_RTX instead of 0.
9823         (expand_builtin_strstr): Likewise.
9824         (expand_builtin_strchr): Likewise.
9825         (expand_builtin_strrchr): Likewise.
9826         (expand_builtin_strpbrk): Likewise.
9827         (expand_builtin_memcpy): Likewise.
9828         (expand_builtin_mempcpy): Likewise.
9829         (expand_builtin_mempcpy_args): New.
9830         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
9831         (expand_builtin_memmove_args): New.
9832         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
9833         (expand_movstr): Likewise.
9834         (expand_builtin_strcpy): Likewise.
9835         (expand_builtin_strcpy_args): New.
9836         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
9837         (expand_builtin_strncpy): Likewise.
9838         (expand_builtin_memset): Likewise.
9839         (expand_builtin_memset_args): New.
9840         (expand_builtin_bzero): Similarly to expand_builtin_memset.
9841         (expand_builtin_memcmp): Likewise.
9842         (expand_builtin_strcmp): Likewise.
9843         (expand_builtin_strncmp): Likewise.
9844         (expand_builtin_strcat): Likewise.
9845         (expand_builtin_strncat): Likewise.
9846         (expand_builtin_strspn): Likewise.
9847         (expand_builtin_strcspn): Likewise.
9848         (expand_builtin_args_info): Likewise.
9849         (expand_builtin_va_start): Likewise.
9850         (gimplify_va_arg_expr): Likewise.
9851         (expand_builtin_va_end): Likewise.
9852         (expand_builtin_va_copy): Likewise.
9853         (expand_builtin_frame_address): Likewise.
9854         (expand_builtin_alloca): Likewise.
9855         (expand_builtin_bswap): Likewise.
9856         (expand_builtin_unop): Likewise.
9857         (expand_builtin_fputs): Likewise.
9858         (expand_builtin_expect): Likewise.
9859         (expand_builtin_fabs): Likewise.
9860         (expand_builtin_copysign): Likewise.
9861         (expand_builtin_printf): Likewise.
9862         (expand_builtin_fprintf): Likewise.
9863         (expand_builtin_sprintf): Likewise.
9864         (expand_builtin_init_trampoline): Likewise.
9865         (expand_builtin_signbit): Likewise.
9866         (expand_builtin_fork_or_exec): Likewise.
9867         (expand_builtin_sync_operation): Likewise.
9868         (expand_builtin_compare_and_swap): Likewise.
9869         (expand_builtin_lock_test_and_set): Likewise.
9870         (expand_builtin_lock_release): Likewise.
9871         (expand_builtin): Likewise.
9872         (builtin_mathfn_code): Likewise.
9873
9874         (fold_builtin_constant_p): Pass call arguments individually instead
9875         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9876         accessors and constructors.  Return NULL_TREE instead of 0.
9877         (fold_builtin_expect): Likewise.
9878         (fold_builtin_classify_type): Likewise.
9879         (fold_builtin_strlen): Likewise.
9880         (fold_builtin_nan): Likewise.
9881         (integer_valued_real_p): Likewise.
9882         (fold_trunc_transparent_mathfn): Likewise.
9883         (fold_fixed_mathfn): Likewise.
9884         (fold_builtin_cabs): Likewise.
9885         (fold_builtin_sqrt): Likewise.
9886         (fold_builtin_cbrt): Likewise.
9887         (fold_builtin_cos): Likewise.
9888         (fold_builtin_cosh): Likewise.
9889         (fold_builtin_tan): Likewise.
9890         (fold_builtin_sincos): Likewise.
9891         (fold_builtin_cexp): Likewise.
9892         (fold_builtin_trunc): Likewise.
9893         (fold_builtin_floor): Likewise.
9894         (fold_builtin_ceil): Likewise.
9895         (fold_builtin_round): Likewise.
9896         (fold_builtin_int_roundingfn): Likewise.
9897         (fold_builtin_bitop): Likewise.
9898         (fold_builtin_bswap): Likewise.
9899         (fold_builtin_logarithm): Likewise.
9900         (fold_builtin_hypot): Likewise.
9901         (fold_builtin_pow): Likewise.
9902         (fold_builtin_powi): Likewise.
9903         (fold_builtin_exponent): Likewise.
9904         (fold_builtin_memset): Likewise.
9905         (fold_builtin_bzero): Likewise.
9906         (fold_builtin_memory_op): Likewise.
9907         (fold_builtin_bcopy): Deleted; call site changed to invoke
9908         fold_builtin_memory_op directly.
9909         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
9910         (fold_builtin_strncpy): Likewise.
9911         (fold_builtin_memcmp): Likewise.
9912         (fold_builtin_strcmp): Likewise.
9913         (fold_builtin_strncmp): Likewise.
9914         (fold_builtin_signbit): Likewise.
9915         (fold_builtin_copysign): Likewise.
9916         (fold_builtin_isascii): Likewise.
9917         (fold_builtin_toascii): Likewise.
9918         (fold_builtin_isdigit): Likewise.
9919         (fold_builtin_fabs): Likewise.
9920         (fold_builtin_abs): Likewise.
9921         (fold_builtin_fmin_fmax): Likewise.
9922         (fold_builtin_carg): Likewise.
9923         (fold_builtin_classify): Likewise.
9924         (fold_builtin_unordered_cmp): Likewise.
9925
9926         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
9927         New functions split out from fold_builtin_1.
9928         (fold_builtin_n): New.
9929         (fold_builtin_varargs): New.
9930         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
9931         instead.
9932         (fold_call_expr): New.
9933         (build_function_call_expr): Rewrite to use new helper function.
9934         (fold_builtin_call_list): New.
9935         (build_call_expr): New.
9936         (fold_builtin_call_valist): New.
9937         (rewrite_call_expr): New.
9938         (validate_arg): New.
9939         (validate_arglist): Change parameter to be entire CALL_EXPR instead
9940         of an arglist.  Change return type to bool.  Use new CALL_EXPR
9941         accessors.
9942
9943         (fold_builtin_strstr):  Pass call arguments individually instead
9944         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9945         accessors and constructors.  Return NULL_TREE instead of 0.
9946         (fold_builtin_strchr): Likewise.
9947         (fold_builtin_strrchr): Likewise.
9948         (fold_builtin_strpbrk): Likewise.
9949         (fold_builtin_strcat): Likewise.
9950         (fold_builtin_strncat): Likewise.
9951         (fold_builtin_strspn): Likewise.
9952         (fold_builtin_strcspn): Likewise.
9953         (fold_builtin_fputs): Likewise.
9954         (fold_builtin_next_arg): Likewise.
9955         (fold_builtin_sprintf): Likewise.
9956
9957         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
9958         NULL_RTX instead of 0.
9959         (expand_builtin_memory_chk): Likewise.
9960         (maybe_emit_chk_warning): Likewise.
9961         (maybe_emit_sprintf_chk_warning): Likewise.
9962
9963         (fold_builtin_object_size): Pass call arguments individually instead
9964         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9965         accessors and constructors.  Return NULL_TREE instead of 0.
9966         (fold_builtin_memory_chk): Likewise.
9967         (fold_builtin_stxcpy_chk): Likewise.
9968         (fold_builtin_strncpy_chk): Likewise.
9969         (fold_builtin_strcat_chk): Likewise.
9970         (fold_builtin_strcat_chk): Likewise.
9971         (fold_builtin_strncat_chk): Likewise.
9972         (fold_builtin_sprintf_chk): Likewise.
9973         (fold_builtin_snprintf_chk): Likewise.
9974         (fold_builtin_printf): Likewise.
9975         (fold_builtin_vprintf): Likewise.
9976
9977         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
9978         constructors.
9979         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
9980         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9981         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
9982         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
9983         (fold_unary): Likewise.
9984         (fold_binary): Likewise.
9985         (fold_ternary): Remove CALL_EXPR case, since they are no longer
9986         ternary expressions.
9987         (fold): Add logic for tcc_vl_exp.
9988         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
9989         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9990         (fold_build3_stat): Add assertion to flag broken interface for
9991         constructing CALL_EXPRs.
9992         (fold_build_call_list): New.
9993         (fold_build_call_list_initializer): New.
9994         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
9995         constructors.
9996         (fold_strip_sign_ops): Likewise.
9997
9998 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9999             Brooks Moses  <brooks.moses@codesourcery.com>
10000             Lee Millward  <lee.millward@codesourcery.com>
10001
10002         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
10003         accessors and dump arguments explicitly.
10004
10005         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
10006         TREE_CODE_LENGTH.
10007         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
10008         explicitly.
10009         (print_call_name): Use new CALL_EXPR accessors.
10010
10011         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
10012         CALL_EXPR arguments explicitly instead of as a list.  Use
10013         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10014
10015         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
10016         (vrp_visit_stmt): Likewise.
10017
10018         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
10019         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
10020         TREE_CODE_LENGTH.
10021         (force_move_till_expr): Likewise.
10022
10023         * targhooks.c (default_external_stack_protect_fail): Use
10024         build_call_expr instead of build_function_call_expr.
10025         (default_hidden_stack_protect_fail): Likewise.
10026
10027         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
10028         build the call.
10029
10030         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
10031         and walk arguments explicitly.
10032
10033         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
10034         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10035         (expand_simple_operations): Likewise.
10036         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
10037
10038         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
10039         of TREE_CODE_LENGTH.
10040         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
10041
10042         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
10043         instead of TREE_CODE_LENGTH.
10044
10045         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
10046         (tree_ic_transform): Likewise.
10047         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
10048         parameter instead of arglist.  Fix callers.
10049         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
10050         (tree_stringops_transform): Likewise.
10051         (tree_indirect_call_to_profile): Likewise.
10052         (tree_stringops_values_to_profile): Likewise.
10053
10054         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
10055         (eliminate_tail_call): Likewise.
10056
10057         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
10058
10059         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
10060         Use TREE_OPERAND_LENGTH and generalize to handle any number of
10061         operands.
10062         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
10063
10064         * omp-low.c (build_omp_barrier): Use build_call_expr.
10065         (lower_rec_input_clauses): Likewise.
10066         (lower_reduction_clauses): Likewise.
10067         (expand_parallel_call): Likewise.
10068         (maybe_catch_exception): Likewise.
10069         (expand_omp_for_generic): Likewise.
10070         (expand_omp_for_static_nochunk): Likewise.
10071         (expand_omp_sections): Likewise.
10072         (lower_omp_single_simple): Likewise.
10073         (lower_omp_single_copy): Likewise.
10074         (lower_omp_master): Likewise.
10075         (lower_omp_ordered): Likewise.
10076         (lower_omp_critical): Likewise.
10077
10078         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
10079         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
10080
10081         * tree-gimple.c (is_gimple_call_addr): Fix doc.
10082         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
10083         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
10084
10085         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
10086         and generalize to handle any number of operands.
10087         (chrec_contains_undetermined): Likewise.
10088         (tree_contains_chrecs): Likewise.
10089         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
10090
10091         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
10092
10093         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
10094         fold_call_expr instead of fold_builtin.
10095         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
10096         match declarations there.
10097         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
10098         updates.
10099
10100         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
10101         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10102
10103         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
10104         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
10105
10106         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
10107         accessors.
10108
10109         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
10110         (execute_cse_sincos): Use new CALL_EXPR accessors.
10111
10112         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
10113
10114         * gimple-low.c (lower_function_body): Use build_call_expr.
10115         (lower_builtin_setjmp): Likewise.
10116
10117         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
10118         (set_storage_via_libcall): Likewise.
10119         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
10120         instead of TREE_CODE_LENGTH.
10121         (expand_expr_real_1): Use new CALL_EXPR accessors.
10122
10123         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
10124         generalize to handle any number of operands.
10125         (TB_parent_eq): Likewise.
10126
10127         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
10128         (strip_builtin_expect): Likewise.
10129
10130         * function.c (gimplify_parameters): Use build_call_expr.
10131
10132         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
10133         instead of TREE_CODE_LENGTH.
10134
10135         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
10136         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
10137
10138         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
10139         iterators.
10140
10141         * gimplify.c (build_stack_save_restore): Use build_call_expr.
10142         (gimplify_decl_expr): Likewise.
10143         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
10144         Use new CALL_EXPR iterators.
10145         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
10146         (gimplify_modify_expr_to_memset): Likewise.
10147         (gimplify_variable_sized_compare): Likewise.
10148         (gimplify_omp_atomic_fetch_op): Likewise.
10149         (gimplify_omp_atomic_pipeline): Likewise.
10150         (gimplify_omp_atomic_mutex): Likewise.
10151         (gimplify_function_tree): Likewise.
10152
10153         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
10154         (call_expr_flags): Likewise.
10155         (expand_call): Likewise.
10156
10157         * except.c (expand_builtin_eh_return_data_regno): Pass entire
10158         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
10159         accessors.
10160
10161         * coverage.c (create_coverage): Use build_call_expr.
10162
10163         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
10164         (temp_call_expr_obstack): New.
10165         (pool_copy_list): Delete.
10166         (temp_copy_call_expr): New.
10167         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
10168         CALL_EXPR accessors.  Get rid of special goo for copying argument
10169         lists and use temp_copy_call_expr instead.
10170         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
10171         CALL_EXPR accessors.
10172         (create_expression_by_pieces): Likewise.  Use build_call_array
10173         to construct the result instead of fold_build3.
10174         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
10175         dealing with argument lists.
10176         (init_pre): Remove references to expression_node_pool and
10177         list_node_pool.  Init temp_call_expr_obstack instead.
10178         (fini_pre): Remove references to expression_node_pool and
10179         list_node_pool.
10180
10181         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
10182         and walk arguments explicitly instead of as a list.
10183
10184         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
10185         (mx_register_decls): Likewise.
10186         (mudflap_register_call): Likewise.
10187         (mudflap_finish_file): Likewise.
10188
10189         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
10190         (ipa_callsite_compute_param): Likewise.
10191
10192         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
10193         accessors and constructor.
10194
10195         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
10196         accessors and constructor.
10197         (convert_tramp_reference): Likewise.
10198         (convert_call_expr): Likewise.
10199         (finalize_nesting_tree_1): Likewise.
10200
10201         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
10202         accessors.
10203
10204         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
10205
10206         * tree-inline.c (initialize_inlined_parameters): Pass entire
10207         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
10208         accessors.
10209         (estimate_num_insns_1): Use new CALL_EXPR accessors.
10210         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
10211
10212         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
10213         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10214         (vectorizable_reduction): Likewise.
10215         (vectorizable_call): Use new CALL_EXPR iterators.
10216         (vectorizable_conversion): Use build_call_expr.
10217         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
10218         (vect_gen_widened_results_half): Use build_call_expr.
10219         (vect_setup_realignment): Likewise.
10220         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
10221
10222         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
10223         (pass_through_call): Likewise.
10224         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
10225         fold_builtin.
10226
10227         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
10228         (tree_gen_pow2_profiler): Likewise.
10229         (tree_gen_one_value_profiler): Likewise.
10230         (tree_gen_ic_func_profiler): Likewise.
10231         (tree_gen_average_profiler): Likewise.
10232         (tree_gen_ior_profiler): Likewise.
10233
10234         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
10235         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
10236         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10237
10238         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
10239         of TREE_CODE_LENGTH.
10240
10241         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
10242         of TREE_CODE_LENGTH.
10243
10244         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
10245         constructor.
10246         (convert_to_integer): Likewise.
10247
10248         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
10249         accessors.
10250
10251 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10252             Brooks Moses  <brooks.moses@codesourcery.com>
10253             Lee Millward  <lee.millward@codesourcery.com>
10254
10255         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
10256         accessors.
10257         * config/frv/frv.c (frv_expand_builtin): Likewise.
10258         * config/s390/s390.c (s390_expand_builtin): Likewise.
10259
10260         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
10261         (sparc_expand_builtin): Use new CALL_EXPR accessors.
10262
10263         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
10264         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
10265         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
10266         (ix86_expand_store_builtin): Likewise.
10267         (ix86_expand_unop_builtin): Likewise.
10268         (ix86_expand_unop1_builtin): Likewise.
10269         (ix86_expand_sse_compare): Likewise.
10270         (ix86_expand_sse_comi): Likewise.
10271         (ix86_expand_vec_init_builtin): Likewise.
10272         (ix86_expand_vec_ext_builtin): Likewise.
10273         (ix86_expand_vec_set_builtin): Likewise.
10274         (ix86_expand_builtin): Use new CALL_EXPR accessors.
10275
10276         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
10277         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
10278
10279         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
10280         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
10281         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
10282
10283         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
10284         build_call_expr.
10285         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
10286         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
10287         arglist.  Use new CALL_EXPR accessors.  Fix callers.
10288         (altivec_expand_abs_builtin): Likewise.
10289         (rs6000_expand_binop_builtin): Likewise.
10290         (altivec_expand_predicate_builtin): Likewise.
10291         (altivec_expand_lv_builtin): Likewise.
10292         (spe_expand_stv_builtin): Likewise.
10293         (altivec_expand_stv_builtin): Likewise.
10294         (rs6000_expand_ternop_builtin): Likewise.
10295         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
10296         (altivec_expand_st_builtin): Likewise.
10297         (altivec_expand_dst_builtin): Likewise.
10298         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
10299         arglist.  Use new CALL_EXPR accessors.  Fix callers.
10300         (altivec_expand_vec_set_builtin): Likewise.
10301         (altivec_expand_vec_ext_builtin): Likewise.
10302         (altivec_expand_builtin): Use new CALL_EXPR accessors.
10303         (spe_expand_builtin): Likewise.
10304         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
10305         arglist.  Use new CALL_EXPR accessors.  Fix callers.
10306         (spe_expand_evsel_builtin): Likewise.
10307         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
10308         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
10309
10310         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
10311         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
10312         (arm_expand_unop_builtin): Likewise.
10313         (arm_expand_builtin): Use new CALL_EXPR accessors.
10314
10315         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
10316         accessors.
10317
10318         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
10319         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
10320         (bfin_expand_unop_builtin): Likewise.
10321         (bfin_expand_builtin): Use new CALL_EXPR accessors.
10322
10323 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10324             Brooks Moses  <brooks.moses@codesourcery.com>
10325             Lee Millward  <lee.millward@codesourcery.com>
10326
10327         * c-semantics.c (build_stmt): Add internal diagnostic check.
10328
10329         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
10330         accessors.  Print arguments explicitly instead of as a list.
10331
10332         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
10333
10334         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
10335         (c_finish_omp_flish): Likewise.
10336
10337         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
10338         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
10339         instead of TREE_CODE_LENGTH.
10340         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
10341         (c_warn_unused_result): Likewise.
10342
10343 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10344
10345         PR c/26494
10346         * doc/invoke.texi (Warning Options): Remove
10347         -Werror-implicit-function-declaration.
10348         (Wimplicit-function-declaration): Update description.
10349         * opts.c (common_handle_option): Move handling of -Werror=* to...
10350         (enable_warning_as_error): ...here.
10351         * opts.h (enable_warning_as_error): Declare.
10352         * c-decl.c (implicit_decl_warning): Unless
10353         -Wno-implicit-function-declaration is given, emit a pedwarn if
10354         -std=c99 or emit a warning if -Wimplicit-function-declaration.
10355         * c.opt (Wimplicit-function-declaration): Replace
10356         mesg_implicit_function_declaration with
10357         warn_implicit_function_declaration.
10358         * c-opts.c (c_common_handle_option):
10359         -Werror-implicit-function-declaration is exactly equal as
10360         -Werror=implicit-function-declaration.
10361         (set_Wimplicit): Replace mesg_implicit_function_declaration with
10362         warn_implicit_function_declaration.
10363         (c_common_post_options): -Wimplict-function-declaration is enabled
10364         by default by -std=c99, otherwise is disabled by default.
10365         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
10366
10367 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
10368
10369         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
10370         DECL on the rhs to a DECL on the lhs for debug info purposes if the
10371         former is ignored but not the latter.
10372
10373 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
10374
10375         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
10376         is made and the reference doesn't use the alias set of its type,
10377         do not create the temporary using that type.
10378
10379 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
10380
10381         * jump.c: Remove prototypes for delete_computation and
10382         delete_prior_computation.
10383
10384 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
10385
10386         * jump.c (get_label_after): Delete.
10387         (get_label_before, delete_computation, delete_jump,
10388         delete_prior_computation, follow_jumps): Move...
10389         * reorg.c (delete_computation, delete_prior_computation): ... here...
10390         (get_label_before, delete_jump): ... making these static ...
10391         (follow_jumps): ... and simplifying this since it only runs after
10392         reload.
10393         * rtl.h (get_label_after, get_label_before, delete_jump,
10394         follow_jumps): Delete prototypes.
10395
10396 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
10397
10398         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
10399
10400 2007-02-15  Nick Clifton  <nickc@redhat.com>
10401
10402         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
10403         order to prevent it from being munged by the target.
10404
10405 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
10406
10407         * config/i386/i386.md: Remove misleading comment.
10408
10409 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10410
10411         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
10412         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
10413         invalid patterns.
10414
10415 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10416
10417         * tree-sra.c (instantiate_missing_elements): Canonicalize
10418         bit-field types.
10419         (sra_build_assignment): New.
10420         (generate_copy_inout, generate_element_copy,
10421         generate_element_zero, generate_one_element_init): Use it.
10422
10423 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10424
10425         * tree-sra.c (instantiate_missing_elements): Canonicalize
10426         bit-field types.
10427         (sra_build_assignment): New.
10428         (generate_copy_inout, generate_element_copy,
10429         generate_element_zero, generate_one_element_init): Use it.
10430
10431 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10432
10433         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
10434         limbo die nodes.
10435
10436 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
10437
10438         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
10439         types as aggregates not scalars.
10440         * function.c (assign_stack_temp_for_type): Likewise.
10441
10442 2007-02-14  Roger Sayle  <roger@eyesopen.com>
10443             Zdenek Dvorak  <dvorakz@suse.cz>
10444
10445         * tree-dump.c (dump_switch_p_1): Require exact match of the option
10446         name.
10447
10448 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
10449
10450         * passes.c (next_pass_1): Clear the next field of the copied
10451         pass structure.
10452
10453 2007-02-14  Richard Henderson  <rth@redhat.com>
10454
10455         * tree-sra.c (early_sra): New.
10456         (decl_can_be_decomposed_p): Deny va_list if early_sra.
10457         (tree_sra_early, pass_sra_early): New.
10458         * tree-pass.h (pass_sra_early): Declare.
10459         * passes.c (init_optimization_passes): Use it.
10460
10461 2007-02-14  Richard Guenther  <rguenther@suse.de>
10462
10463         * flags.h (issue_strict_overflow_warning): Convert to a macro.
10464
10465 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
10466
10467          PR tree-optimization/30771
10468         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
10469         also phi nodes.
10470         (vect_analyze_operations): Induction phis can now be marked as
10471         used_in_loop.
10472         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
10473         Update documentation accordingly.
10474
10475 2007-02-14  Nick Clifton  <nickc@redhat.com>
10476
10477         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
10478         most 3 arguments are supported.
10479         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
10480
10481 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
10482
10483         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
10484         Ensure dst->current is valid.
10485
10486 2007-02-13  Paul Brook  <paul@codesourcery.com>
10487
10488         * config.gcc: Add arm*-*-uclinux-*eabi.
10489         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
10490         (SUBTARGET_EXTRA_LINK_SPEC): Define.
10491         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
10492         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
10493         (LINK_SPEC): Define.
10494         (LIB_SPEC): Define.
10495         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
10496         register.
10497         * config/arm/uclinux-eabi.h: New file.
10498         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
10499         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
10500         based targets.
10501
10502 2007-02-13  Ian Lance Taylor  <iant@google.com>
10503
10504         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
10505         * flags.h (warn_strict_overflow): Declare.
10506         (enum warn_strict_overflow_code): Define.
10507         (issue_strict_overflow_warning): New static inline function.
10508         * opts.c (warn_strict_overflow): New variable.
10509         (common_handle_option): Handle OPT_Wstrict_overflow and
10510         OPT_Wstrict_overflow_.
10511         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
10512         OPT_Wall.
10513         * fold-const.c: Include intl.h.
10514         (fold_deferring_overflow_warnings): New static variable.
10515         (fold_deferred_overflow_warning): New static variable.
10516         (fold_deferred_overflow_code): New static variable.
10517         (fold_defer_overflow_warnings): New function.
10518         (fold_undefer_overflow_warnings): New function.
10519         (fold_undefer_and_ignore_overflow_warnings): New function.
10520         (fold_deferring_overflow_warnings_p): New function.
10521         (fold_overflow_warning): New static function.
10522         (make_range): Add strict_overflow_p parameter.  Change all
10523         callers.
10524         (extract_muldiv, extract_muldiv_1): Likewise.
10525         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
10526         tree_expr_nonnegative_p.
10527         (fold_negate_expr): Call fold_overflow_warning.
10528         (fold_range_test): Likewise.
10529         (fold_comparison): Likewise.
10530         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
10531         instead of tree_expr_nonnegative_p.
10532         (tree_expr_nonnegative_warnv_p): Rename from
10533         tree_expr_nonnegative_p, add strict_overflow_p parameter.
10534         (tree_expr_nonnegative_p): New function.
10535         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
10536         strict_overflow_p parameter.
10537         (tree_expr_nonzero_p): New function.
10538         * passes.c (verify_interpass_invariants): New static function.
10539         (execute_one_pass): Call it.
10540         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
10541         warnings.
10542         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
10543         (estimate_numbers_of_iterations): Likewise.
10544         (scev_probably_wraps_p): Likewise.
10545         * tree-ssa-ccp.c: Include "toplev.h".
10546         (evaluate_stmt): Defer fold overflow warnings until we know we are
10547         going to optimize.
10548         (struct fold_stmt_r_data): Add stmt field.
10549         (fold_stmt_r): Defer fold overflow warnings until we know we
10550         optimized.
10551         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
10552         (fold_stmt_inplace): Likewise.
10553         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
10554         (cleanup_control_expr_graph): Defer fold overflow warnings until
10555         we know we are going to optimize.
10556         * tree-cfg.c (fold_cond_expr_cond): Likewise.
10557         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
10558         Likewise.
10559         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
10560         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
10561         * tree-ssa-loop-manip.c (create_iv): Likewise.
10562         * c-typeck.c (build_conditional_expr): Likewise.
10563         (build_binary_op): Likewise.
10564         * tree-vrp.c (vrp_expr_computes_nonzero): Call
10565         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
10566         (extract_range_from_unary_expr): Likewise.
10567         * simplify-rtx.c (simplify_const_relational_operation): Warn when
10568         assuming that signed overflow does not occur.
10569         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
10570         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
10571         (fold_defer_overflow_warnings): Declare.
10572         (fold_undefer_overflow_warnings): Declare.
10573         (fold_undefer_and_ignore_overflow_warnings): Declare.
10574         (fold_deferring_overflow_warnings_p): Declare.
10575         (tree_expr_nonzero_warnv_p): Declare.
10576         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
10577         of warning options.
10578         (Warning Options): Document -Wstrict-overflow.
10579         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
10580         (tree-ssa-ccp.o): Likewise.
10581         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
10582         (fold-const.o): Depend on intl.h.
10583
10584 2007-02-13  Ian Lance Taylor  <iant@google.com>
10585
10586         PR middle-end/30751
10587         * lower-subreg.c (resolve_simple_move): Decompose subregs in
10588         addresses.
10589
10590 2007-02-13  Stuart Hastings  <stuart@apple.com>
10591
10592         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
10593
10594 2007-02-13  Richard Henderson  <rth@redhat.com>
10595
10596         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
10597         handled_component_p before looking for the indirect_ref.
10598
10599 2007-02-13  Richard Henderson  <rth@redhat.com>
10600
10601         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
10602         remove flags clobber.
10603         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
10604         (bswaphi_lowpart): New.
10605         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
10606         remove TARGET_BSWAP test.  Delete expander of the same name.
10607
10608         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
10609         (expand_unop): Use them.
10610
10611 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
10612
10613         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
10614         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
10615         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
10616         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
10617         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
10618         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
10619         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
10620         assembler dialect choice from asm templates.
10621
10622 2007-02-12  Richard Henderson  <rth@redhat.com>
10623
10624         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
10625         (fixuns_trunc<SSEMODEF>si2): Use it.
10626         * config/i386/sse.md (vec_setv4sf_0): Export.
10627         * config/i386/i386.c (ix86_build_const_vector): Export.
10628         (ix86_split_convert_uns_si_sse): Rename from
10629         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
10630         * config/i386/i386-protos.h: Update.
10631
10632 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10633
10634         PR c/29521
10635         * c-typeck.c (c_finish_return): Improve warning message.
10636
10637 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10638
10639         * alias.c (find_symbolic_term): Delete unused function.
10640
10641 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
10642
10643         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
10644         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
10645         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
10646
10647 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
10648
10649         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
10650         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
10651         the function, temporarily point the debug interface to the null one.
10652
10653 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
10654
10655         * dwarf2out.c (round_up_to_align): New static function.
10656         (field_byte_offset): Use it to round the offset.
10657
10658 2007-02-12  Richard Henderson  <rth@redhat.com>
10659
10660         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
10661         (inswl_const): Export.
10662
10663 2007-02-12  Richard Henderson  <rth@redhat.com>
10664
10665         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
10666         result mode of the libcall, convert back to outmode.
10667
10668 2007-02-12  Roger Sayle  <roger@eyesopen.com>
10669
10670         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
10671         (bswapdi2): New define_expand to implement 32-bit implementation.
10672
10673 2007-02-12  Nick Clifton  <nickc@redhat.com>
10674
10675         * doc/invoke.texi (Overall Options): Document --help=.
10676         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
10677         (cc1_options): Pass --help= on to cc1.
10678         (display_help): Add description of --help=.
10679         (process_command): Add code to handle --help=.  Allow translated
10680         --help and --target-help switches to be passed on to compiler
10681         sub-process.
10682         (main): Remove unused if statement.
10683         * opts.c (columns): Remove.
10684         (LEFT_COLUMN): Define.
10685         (wrap_help): Add columns argument.
10686         (print_filtered_help): Change parameters to be an include bitmask,
10687         an exclude bitmask, an any bitmask and the column width.  Move the
10688         code to display the params list here.  Add code to display the
10689         status of options rather than their descriptions if the quiet flag
10690         is not active.
10691         (print_specific_help): Change parameters to be an include bitmask,
10692         an exclude bitmask and an any bitmask.  Move code to look up the
10693         column width here.  Decide upon the title for an options listing.
10694         (common_handle_options): Add code to handle --help=.  Adapt code
10695         for --help and --target-help to use the revised form of the
10696         print_specific_help function.
10697         (print_help): Delete.
10698         (print_param_help): Delete.
10699         (print_switch): Delete.
10700         * opts.h (cl_lang_count): Add prototype.
10701         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
10702         CL_MAX_OPTION_CLASS): New defines.
10703         * optc-gen.awk: Add construction of cl_lang_count.
10704         * c.opt: Add Warning attribute to warning options and Optimization
10705         attribute to optimization options.
10706         * common.opt: Likewise.
10707         Add --help=.
10708         Add -fhelp and -ftarget-help as aliases for the transformed --help
10709         and --target-help options.
10710         * opt-functions.awk: Add code to handle Warning and Optimization
10711         attributes.
10712
10713 2007-02-12  Richard Henderson  <rth@redhat.com>
10714
10715         * config/alpha/constraints.md: New file.
10716         * config/alpha/alpha.c: Include tm-constrs.h.
10717         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
10718         alpha_extra_constraint): Remove.
10719         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
10720         * config/alpha/alpha-protos.h: Update.
10721         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
10722         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
10723         (EXTRA_CONSTRAINT): Remove.
10724         * config/alpha/alpha.md: Include constraints.md.
10725         (adddi splitter): Use satisfies_constraint_*.
10726         * config/alpha/predicates.md (add_operand): Likewise.
10727         (sext_add_operand, addition_operation): Likewise.
10728
10729 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
10730
10731         PR tree-optimization/29145
10732         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
10733         in our handling of restrict qualified pointers.
10734
10735 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10736
10737         PR middle-end/7651
10738         * doc/invoke.texi (Wunused-value): Update description.
10739         (Wextra): Delete item.
10740         * opts.c (set_Wextra): Don't use the value of Wextra to set the
10741         value of Wunused-value.
10742         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
10743         (c_finish_stmt_expr): Don't check extra_warnings.
10744         (emit_side_effect_warnings): The caller is responsible to check
10745         warn_unused_value.
10746
10747 2007-02-11  Roger Sayle  <roger@eyesopen.com>
10748             Matt Thomas  <matt@3am-software.com>
10749
10750         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
10751
10752 2007-02-11  Roger Sayle  <roger@eyesopen.com>
10753
10754         * simplify-rtx.c (simplify_relational_operation_1): Optimize
10755         comparisons of POPCOUNT against zero.
10756         (simplify_const_relational_operation): Likewise.
10757
10758 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10759
10760         * doc/invoke.texi (Wextra): Delete outdated paragraph.
10761
10762 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10763
10764         * dwarf2out.c (root_type): Delete unused function.
10765
10766 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10767
10768         * genattrtab.c (contained_in_p): Delete unused function.
10769         (write_expr_attr_cache): Likewise.
10770
10771 2007-02-11  Jan Hubicka  <jh@suse.cz>
10772
10773         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
10774         previous patch.
10775
10776 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
10777
10778         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
10779         to add the REG_EQ* note.
10780         * see.c (see_merge_one_use_extension): Likewise.
10781         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
10782         turn REG_EQUAL notes into REG_EQUIV notes if the target
10783         register may have more than one set.
10784         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
10785         * gcse.c (try_replace_reg): Likewise.
10786         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
10787         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
10788         more than one REG_EQUIV note.
10789         * reload1.c (gen_reload): Use set_unique_reg_note.
10790
10791 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
10792
10793         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
10794         (ix86_builtin_conversion): New function.
10795
10796 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
10797
10798         PR target/29487
10799         * tree.h (DECL_REPLACEABLE_P): New macro.
10800         * except.c (set_nothrow_function_flags): Likewise.
10801
10802 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
10803             Ira Rosen  <irar@il.ibm.com>
10804             Dorit Nuzman  <dorit@il.ibm.com>
10805
10806         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
10807         * targhooks.c (default_builtin_vectorized_conversion): New.
10808         * targhooks.h (default_builtin_vectorized_function): New declaration.
10809         * target.h (struct vectorize): Add builtin_conversion field.
10810         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
10811         stmt_vec_info_type value.
10812         (vectorizable_conversion): New declaration.
10813         * tree-vect-analyze.c (vect_analyze_operations): Add
10814         vectorizable_conversion call.
10815         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
10816         * tree-vect-transform.c (vectorizable_conversion): New function.
10817         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
10818         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
10819         mode.
10820         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
10821         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
10822         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
10823         or ALTIVEC_BUILTIN_VCFSX.
10824
10825 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10826
10827         PR target/30634
10828         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
10829         CONST_DOUBLE and operand 0 is a hard register.
10830         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
10831         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
10832         is a hard floating-point register.
10833
10834 2007-02-10  Richard Henderson  <rth@redhat.com>
10835             Jakub Jelinek  <jakub@redhat.com>
10836             Alexandre Oliva  <aoliva@redhat.com>
10837
10838         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
10839         * builtin-types.def (BT_WORD): Make unsigned.
10840         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
10841         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
10842         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
10843         * c-decl.c (grokdeclarator): Don't error if !have_tls.
10844         * c-parser.c (c_parser_omp_threadprivate): Likewise.
10845         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
10846         emulated tls.
10847         * expr.c (emutls_var_address): New.
10848         (expand_expr_real_1): Expand emulated tls.
10849         (expand_expr_addr_expr_1): Likewise.
10850         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
10851         * output.h (emutls_finish): Declare.
10852         * toplev.c (compile_file): Call it.
10853         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
10854         address before wrapping in CONST.
10855         * varasm.c (emutls_htab, emutls_object_type): New.
10856         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
10857         (get_emutls_object_name, get_emutls_object_type): New.
10858         (get_emutls_init_templ_addr, emutls_decl): New.
10859         (emutls_common_1, emutls_finish): New.
10860         (assemble_variable): When emulating tls, swap decls; generate
10861         constructor for the emutls objects.
10862         (do_assemble_alias): When emulating tls, swap decl and target name.
10863         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
10864         for emulated tls.
10865         * varpool.c (decide_is_variable_needed): Look at force_output.
10866         Recurse for emulated tls.
10867         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
10868         with decide_is_variable_needed.
10869         * emutls.c: New file.
10870         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
10871         tls_object for real tls.
10872
10873 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
10874
10875         PR rtl-optimization/29599
10876         * reload1.c (eliminate_regs_in_insn): Take the destination
10877         mode into account when computing the offset.
10878
10879 2007-02-09  Stuart Hastings  <stuart@apple.com>
10880             Richard Henderson  <rth@redhat.com>
10881
10882         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
10883         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
10884         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
10885         fixuns_truncdfhi2): New.
10886         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
10887         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
10888         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
10889         (floatunssidf2): Allow nonimmediate source.
10890         * config/i386/sse.md (movdi_to_sse): New.
10891         (vec_concatv2di): Drop '*'.
10892         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
10893         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
10894         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
10895         New.
10896         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
10897         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
10898         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
10899         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
10900         (ix86_build_signbit_mask): Fix decl of v, refactor to call
10901         ix86_build_const_vector.
10902         (x86_emit_floatuns): Rewrite.
10903
10904 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10905
10906         * genautomata.c (longest_path_length): Delete unused function.
10907         (struct state): Delete unused longest_path_length.
10908         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
10909         (get_free_state): Delete unused.
10910
10911 2007-02-09  Jan Hubicka  <jh@suse.cz>
10912
10913         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
10914         * doc/invoke.texi (inline-unit-growth): Update default value.
10915
10916         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
10917         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
10918         (rebuild_cgraph_edges): Likewise.
10919         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
10920         (dump_cgraph_node): Dump frequencies.
10921         (cgraph_clone_edge): Add frequency scales.
10922         (cgraph_clone_node): Add freuqnecy.
10923         * cgraph.h (cgraph_edge): Add freuqnecy argument.
10924         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
10925         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
10926         * tree-pass.h (TODO_rebuild_frequencies): New constant.
10927         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
10928         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
10929         (save_inline_function_body): Likewise.
10930         * ipa-inline.c: inluce rtl.h
10931         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
10932         (cgraph_edge_badness): Use frequencies.
10933         (cgraph_decide_recursive_inlining): Update clonning.
10934         (cgraph_decide_inlining_of_small_function): Dump frequency.
10935         * predict.c (estimate_bb_frequencies): Export.
10936         * predict.h (estimate_bb_frequencies): Declare.
10937         * tree-inline.c (copy_bb): Watch overflows.
10938         (expand_call_inline): Update call of cgraph_create_edge.
10939         (optimize_inline_calls): Use TODO flags to update frequnecies.
10940         * passes.h: Include predict.h
10941         (init_optimization_passes): Move profile ahead.
10942         (execute_function_todo): Handle TODO_rebuild_frequencies.
10943
10944 2007-02-09  Roger Sayle  <roger@eyesopen.com>
10945
10946         * config/alpha/alpha.c (emit_insxl): Force the first operand of
10947         the insbl or inswl pattern into a register.
10948
10949 2007-02-09  Roger Sayle  <roger@eyesopen.com>
10950
10951         * config/ia64/ia64.md (bswapdi2): New define_insn.
10952
10953 2007-02-09  Richard Henderson  <rth@redhat.com>
10954
10955         * config/i386/constraints.md (Ym): New constraint.
10956         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
10957         (movdi_1_rex64): Split sse and xmm general register moves from
10958         memory move alternatives.  Use conditional register constraints.
10959         (movsf_1, movdf_integer): Likewise.
10960         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
10961         (movdf_integer_rex64): New.
10962         (pushsf_rex64): Fix output constraints.
10963         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
10964         (sse2_stored): Likewise.
10965         (sse2_storeq_rex64): New.
10966         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
10967         amd and not generic.
10968         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
10969         for optimize_size.  Remove SF/DFmode hack.
10970
10971 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10972
10973         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
10974         (bit_SSE4a): New.
10975
10976 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
10977             Richard Sandiford  <richard@codesourcery.com>
10978
10979         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
10980         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
10981         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
10982         m68k/t-mlib to tmake_file.
10983         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
10984         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
10985         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
10986         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
10987         variable is not empty, add t-$m68k_arch_family to tmake_file.
10988         Add t-mlibs to tmake_file.
10989         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
10990         * config/m68k/t-cf: New file.
10991         * config/m68k/t-m68k: Likewise.
10992         * config/m68k/t-mlibs: Likewise.
10993         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10994         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10995         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
10996         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10997         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
10998         Delete.
10999         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
11000         (INSTALL_LIBGCC): Delete.
11001         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
11002         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
11003         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
11004         (M68K_MLIB_CPU): Define.
11005         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
11006         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
11007         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
11008
11009 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
11010             Richard Guenther  <rguenther@suse.de>
11011
11012         PR middle-end/23361
11013         * fold-const.c (fold_comparison): Handle obfuscated comparisons
11014         against INT_MIN/INT_MAX.
11015         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
11016         file if a loop is removed.
11017
11018 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
11019
11020         * calls.c (store_one_arg): Pass correct alignment to
11021         emit_push_insn for non-BLKmode values.
11022         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
11023         unaligned stack slot via a suitably aligned slot.
11024
11025 2007-02-08  DJ Delorie  <dj@redhat.com>
11026
11027         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
11028         warnings.
11029         (legal_subregs): Use unsigned char, make const.
11030         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
11031
11032 2007-02-08  Paul Brook  <paul@codesourcery.com>
11033
11034         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
11035         special interworking needed.
11036
11037 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
11038
11039         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
11040         conditional to __SSE2__.
11041         (Entries below should have been added to first ChangeLog
11042         entry for amdfam10 dated 2007-02-05)
11043         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
11044         defined.
11045         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
11046         defined.
11047         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
11048         defined.
11049
11050 2007-02-08  DJ Delorie  <dj@redhat.com>
11051
11052         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
11053         * config/m32c/m32c.c (legal_subregs): New.
11054         (m32c_illegal_subreg_p): New.
11055         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
11056         unsupported subregs of hard regs.
11057
11058 2007-02-08  Jan Hubicka  <jh@suse.cz>
11059
11060         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
11061         the same one; always update histograms.
11062
11063 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
11064
11065         * passes.c (init_optimization_passes): Tidy comment.
11066
11067 2007-02-08  Roger Sayle  <roger@eyesopen.com>
11068
11069         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
11070         strip zero_extend, bswap and rotates from POCOUNT's argument.
11071         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
11072         zero_extend and rotates from PARITY's argument.
11073         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
11074         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
11075         of an integer constant at compile-time.
11076
11077 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
11078
11079         PR 30562
11080         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
11081         Update all users.
11082         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
11083         users.
11084         (init_alias_info):
11085         * tree-ssa-live.c (remove_unused_locals): Do not remove
11086         TREE_ADDRESSABLE variables.
11087         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
11088         * tree-ssa-operands.c (add_virtual_operand): Remove argument
11089         FOR_CLOBBER.  Update all users.
11090         If VAR has an associated alias set, add a virtual operand for
11091         it if no alias is found to conflict with the memory reference.
11092
11093 2007-02-07  Jan Hubicka  <jh@suse.cz>
11094             Robert Kidd <rkidd@crhc.uiuc.edu>
11095
11096         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
11097
11098 2007-02-07  Ian Lance Taylor  <iant@google.com>
11099
11100         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
11101
11102 2007-02-07  Roger Sayle  <roger@eyesopen.com>
11103
11104         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
11105         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
11106         tablejumpdi, movsi_to_cr_one): Remove constraints from
11107         define_expand's match_operands.
11108
11109 2007-02-07  Roger Sayle  <roger@eyesopen.com>
11110
11111         * global.c (compute_regsets): Move declatation of "i" inside of
11112         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
11113
11114 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
11115
11116         PR c++/30703
11117         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
11118         of INDIRECT_REF <RESULT_DECL>.
11119
11120         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
11121
11122 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
11123             Kaz Kojima  <kkojima@gcc.gnu.org>
11124
11125         PR target/29746
11126         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
11127         properly.
11128         (sh_initialize_trampoline): Add parentheses to avoid a warning.
11129
11130 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
11131
11132         * doc/loop.texi: Document possibility not to perform disambiguation
11133         of loops with multiple latches.
11134         * cfgloopmanip.c (alp_enum_p): Removed.
11135         (add_loop): Handle subloops.  Use get_loop_body_with_size.
11136         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
11137         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
11138         the new forwarder block.
11139         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
11140         Handle the case latch is NULL.
11141         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
11142         when marking loop exits.
11143         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
11144         be modified.
11145         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
11146         disambiguate_loops_with_multiple_latches.
11147         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
11148         before fix_loop_structure.
11149         * cfgloop.c: Include pointer-set.h and output.h.
11150         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
11151         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
11152         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
11153         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
11154         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
11155         disambiguate_multiple_latches, get_loop_body_with_size,
11156         disambiguate_loops_with_multiple_latches): New functions.
11157         (flow_loop_dump): Dump multiple latch edges.
11158         (flow_loop_nodes_find): Handle loops with multiple latches.
11159         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
11160         (glb_enum_p): Modified.
11161         (get_loop_body): Use get_loop_body_with_size.
11162         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
11163         (AVOID_CFG_MODIFICATIONS): New constant.
11164         (disambiguate_loops_with_multiple_latches, add_loop,
11165         get_loop_body_with_size): Declare.
11166         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
11167
11168 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
11169
11170         PR inline-asm/28686
11171         * global.c (compute_regsets): New function.
11172         (global_alloc): Refactored ELIMINABLE_REGSET
11173         and NO_GLOBAL_ALLOC_REGS computation out.
11174         (rest_of_handle_global_alloc): Call compute_regsets()
11175         for non-optimizing case.
11176
11177 2007-02-06  Richard Henderson  <rth@redhat.com>
11178
11179         * config/i386/constraints.md (Y2): Rename from Y.
11180         (Yi): New constraint.
11181         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
11182         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
11183         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
11184         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
11185         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
11186         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
11187         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
11188         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
11189         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
11190         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
11191         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
11192         vec_extractv2si_1): Change Y constraints to Y2.
11193         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
11194         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
11195         Change Y constraints to Y2.
11196         (sse2_loadld): Change Y constraints to x.
11197
11198 2007-02-06  Roger Sayle  <roger@eyesopen.com>
11199
11200         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
11201         (parity<mode>2): New define_expand using rs6000_emit_parity.
11202         * config/rs6000/rs6000.c (rs6000_emit_popcount,
11203         rs6000_emit_parity): New functions.
11204         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
11205         rs6000_emit_parity): Prototype here.
11206
11207 2007-02-06  Ian Lance Taylor  <iant@google.com>
11208
11209         * lower-subreg.c (simple_move_operand): Reject CONST.
11210         (resolve_clobber): Call validate_change rather than directly
11211         assigning to XEXP (pat, 0).
11212
11213 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
11214
11215         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
11216         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
11217         (tree-cfg.o): Remove hashtab.h dependency.
11218
11219         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
11220         (struct ivopts_data): Change niters to pointer_map_t.
11221         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
11222         (niter_for_exit): Create pointer_map on demand.  Change for
11223         pointer_map API.
11224         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
11225         (free_loop_data): Destroy data->niters if created and reset field.
11226         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
11227         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
11228
11229         * tree-ssa-reassoc.c: Include pointer-set.h.
11230         (bb_rank): Change to long *.
11231         (operand_rank): Change to pointer_map_t.
11232         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
11233         (insert_operand_rank): Accept long.
11234         (operand_entry_hash, operand_entry_eq): Remove.
11235         (get_rank): Return long.  Adjust for changes above.
11236         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
11237         and operand_rank.
11238         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
11239
11240         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
11241         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
11242         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
11243         is not NULL.
11244         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
11245         directly since it cannot be NULL.
11246         (get_vi_for_tree): Rewrite for pointer_map API.
11247         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
11248         (init_alias_vars): Create vi_for_tree as pointer_map.
11249         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
11250
11251         * tree-cfg.c: Don't include hashtab.h.
11252         (edge_to_cases): Declare as pointer_map.
11253         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
11254         Delete.
11255         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
11256         (start_recording_case_labels): Create edge_to_cases as pointer_map.
11257         (end_recoding_case_labels): Cleanup edge_to_cases manually before
11258         destroying it.
11259         (record_switch_edge): Delete.
11260         (get_cases_for_edge): Adjust for pointer_map API, inline
11261         record_switch_edge (rewritten for new API), remove goto.
11262
11263 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
11264
11265         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
11266         * tree-nested.c: Include pointer-set.h.
11267         (var_map_elt, var_map_eq, var_map_hash): Delete.
11268         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
11269         to pointer_map_t's.
11270         (nesting_info_bitmap_obstack): New.
11271         (lookup_field_for_decl): Adjust for pointer_map API.
11272         (lookup_tramp_for_decl): Adjust for pointer_map API.
11273         (get_nonlocal_debug_decl): Adjust for pointer_map API.
11274         (get_local_debug_decl): Adjust for pointer_map API.
11275         (convert_nl_goto_reference): Adjust for pointer_map API.
11276         (convert_nl_goto_receiver): Adjust for pointer_map API.
11277         (create_nesting_tree): Create outside GGC space.  Create bitmap on
11278         the new obstack.  Create field_map and var_map as pointer_maps.
11279         (free_nesting_tree): Adjust for changes to create_nesting_tree.
11280         (root): Delete.
11281         (lower_nested_functions): Move root here, no need to NULL it.
11282         Initialize and release the obstack.
11283
11284 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
11285
11286         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
11287         Remove prototypes and make them non-static.
11288         (struct tree_int_map): Remove.
11289         * tree.h (struct tree_int_map): Move here, turning TO into an
11290         unsigned int.
11291         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
11292
11293         * tree.h (TREE_COMPLEXITY): Remove.
11294         (struct tree_exp): Remove complexity field.
11295         * tree.c (build1_stat): Don't set it.
11296
11297 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
11298             Victor Kaplansky  <victork@il.ibm.com>
11299
11300         * tree-vectorizer.c (vect_is_simple_use): Support induction.
11301         (vect_is_simple_reduction): Support reduction with induction as
11302         one of the operands.
11303         (vect_is_simple_iv_evolution): Fix formatting.
11304         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
11305         formatting.  Don't mark induction phis for vectorization.
11306         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
11307         * tree-vect-transform.c (get_initial_def_for_induction): New function.
11308         (vect_get_vec_def_for_operand): Support induction.
11309         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
11310         induction case.
11311         (vectorizable_reduction): Support reduction with induction as one of
11312         the operands.
11313         (vectorizable_type_demotion): Use def-type of stmt argument rather
11314         than dummy def-type.
11315
11316         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
11317         flag_tree_scev_cprop.
11318         * common.opt (tree-scev-cprop): New flag.
11319
11320         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
11321         call to vect_get_new_vect_var.
11322
11323 2007-02-06  Ira Rosen  <irar@il.ibm.com>
11324
11325         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
11326         vectype is not NULL.
11327         (vect_pattern_recog_1): Likewise.
11328
11329 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11330
11331         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
11332         (fold_negate_expr): Likewise.
11333
11334 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
11335
11336         PR debug/30189
11337         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
11338         even if cv-qualification is the same.
11339
11340 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
11341
11342         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
11343         __enable_execute_stack on completion.
11344
11345 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11346
11347         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
11348         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
11349         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
11350         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
11351         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
11352         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
11353         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
11354         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
11355
11356 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11357
11358         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
11359         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
11360         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
11361         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
11362         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
11363         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
11364         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
11365         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
11366         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
11367         umuldi3_highpart_rex64, umulsi3_highpart_insn,
11368         umulsi3_highpart_zext, smuldi3_highpart_rex64,
11369         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
11370         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
11371         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
11372         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
11373         sqrtextenddfxf2_i387): Added amdfam10_decode.
11374
11375         * config/i386/athlon.md (athlon_idirect_amdfam10,
11376         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
11377         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
11378         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
11379         athlon_ivector_store_amdfam10): New define_insn_reservation.
11380         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
11381         amdfam10.
11382
11383 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11384
11385         * config/i386/athlon.md (athlon_call_amdfam10,
11386         athlon_pop_amdfam10, athlon_lea_amdfam10): New
11387         define_insn_reservation.
11388         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
11389         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
11390         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
11391
11392 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11393
11394         * config/i386/athlon.md (athlon_sseld_amdfam10,
11395         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
11396         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
11397
11398 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11399
11400         * config/i386/athlon.md (athlon_sseins_amdfam10): New
11401         define_insn_reservation.
11402         * config/i386/i386.md (sseins): Added sseins to define_attr type
11403         and define_attr unit.
11404         * config/i386/sse.md: Set type attribute to sseins for insertq
11405         and insertqi.
11406
11407 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11408
11409         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
11410         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
11411         ssecomi_load_amdfam10, ssecomi_amdfam10,
11412         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
11413         define_insn_reservation.
11414         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
11415
11416 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11417
11418         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
11419         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
11420         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
11421         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
11422         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
11423         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
11424         define_insn_reservation.
11425
11426         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
11427         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
11428         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
11429         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
11430         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
11431
11432 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11433
11434         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
11435         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
11436         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
11437         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
11438         athlon_ssemul_load_k8): Added amdfam10.
11439
11440 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11441
11442         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
11443         (x86_sse_unaligned_move_optimal): New variable.
11444
11445         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
11446         m_AMDFAM10.
11447         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
11448         for unaligned vector SSE double/single precision loads for AMDFAM10.
11449
11450 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11451
11452         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
11453         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
11454         Define TARGET_CPU_DEFAULT_amdfam10.
11455         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
11456         (processor_type): Add PROCESSOR_AMDFAM10.
11457
11458         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
11459         processor_type in config/i386/i386.h.
11460         Enable imul peepholes for TARGET_AMDFAM10.
11461
11462         * config.gcc: Add support for --with-cpu option for amdfam10.
11463
11464         * config/i386/i386.c (amdfam10_cost): New variable.
11465         (m_AMDFAM10): New macro.
11466         (m_ATHLON_K8_AMDFAM10): New macro.
11467         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
11468         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
11469         x86_promote_QImode, x86_integer_DFmode_moves,
11470         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11471         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
11472         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
11473         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
11474         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
11475         Enable/disable for amdfam10.
11476         (override_options): Add amdfam10_cost to processor_target_table.
11477         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
11478         processor_alias_table.
11479         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
11480         (ix86_adjust_cost): Add code for amdfam10.
11481
11482 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11483
11484         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
11485         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
11486         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
11487         * config/i386/i386.h: Add builtin definition for SSE4A.
11488         * config/i386/i386.md: Add support for ABM instructions
11489         (popcnt and lzcnt).
11490         * config/i386/sse.md: Add support for SSE4A instructions
11491         (movntss, movntsd, extrq, insertq).
11492         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
11493         Add -march=amdfam10 flag.
11494         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
11495         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
11496         and amdfam10.
11497         * doc/extend.texi: Add documentation for SSE4A builtins.
11498
11499 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
11500
11501         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
11502
11503 2007-02-05  Richard Guenther  <rguenther@suse.de>
11504
11505         * tree-vectorizer.h (vectorizable_function): Add argument type
11506         argument, change return type.
11507         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
11508         * tree-vect-transform.c (vectorizable_function): Handle extra
11509         argument, return vectorized function decl.
11510         (build_vectorized_function_call): Remove.
11511         (vectorizable_call): Handle calls with result and argument types
11512         differing.  Handle loop vectorization factor correctly.
11513         * targhooks.c (default_builtin_vectorized_function): Adjust for
11514         extra argument.
11515         * targhooks.h (default_builtin_vectorized_function): Likewise.
11516         * target.h (builtin_vectorized_function): Add argument type
11517         argument.
11518         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
11519         extra argument, allow vectorizing of lrintf.
11520         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
11521         documentation of target hook.
11522
11523 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
11524
11525         PR target/30665
11526         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
11527         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
11528         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
11529
11530 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11531
11532         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
11533         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
11534         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
11535         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
11536         before canonicalizing sincos to cexpi.
11537         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
11538
11539 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11540
11541         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
11542         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
11543         (alpha_init_builtins): Use alpha_add_builtins to process tables.
11544
11545 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11546
11547         * mips-tfile.c (initialize_init_file): Correct endianness test.
11548
11549 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
11550
11551         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
11552         the 'y' constraint.
11553
11554 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
11555
11556         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
11557         saves in a PARALLEL before the register assignments.
11558
11559 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
11560
11561         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
11562         DWARF_FRAME_RETURN_COLUMN to be a general register.
11563         * dwarf2out.c (init_return_column_size): New function, split from...
11564         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
11565         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
11566         to be nongeneral registers.
11567         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
11568         integer registers.
11569         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
11570         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
11571
11572 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
11573
11574         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
11575
11576 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
11577
11578         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
11579         (remove_path): Use can_remove_branch_p and remove_branch instead
11580         of loop_delete_branch_edge.
11581         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
11582         (tree_transform_and_unroll_loop): Remove dead branches immediately.
11583         Update profile using scale_dominated_blocks_in_loop.
11584         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
11585         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
11586         (can_remove_branch_p, remove_branch): Declare.
11587         * tree-cfg.c (tree_can_remove_branch_p): New function.
11588         (tree_cfg_hooks): Add tree_can_remove_branch_p.
11589         * cfgrtl.c (rtl_can_remove_branch_p): New function.
11590         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
11591
11592 2007-02-05  Jan Hubicka  <jh@suse.cz>
11593
11594         PR middle-end/30696
11595         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
11596         nodes in cgraph, don't remove offline copy of the function.
11597
11598 2007-02-04  Jan Hubicka  <jh@suse.cz>
11599
11600         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
11601         vectors might cause maybe_lookup_element_for_expr to be called
11602         on non-sra-candidate.
11603
11604 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11605
11606         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
11607         config/bfin/bfin.md, config/bfin/predicates.md: Follow
11608         spelling conventions.
11609
11610 2007-02-04  Richard Guenther  <rguenther@suse.de>
11611
11612         PR middle-end/30636
11613         * fold-const.c (try_move_mult_to_index): Make sure to not
11614         overflow one dimension of a multi-dimensional array access.
11615
11616 2007-02-04  Jan Hubicka  <jh@suse.cz>
11617
11618         * passes.c (init_optimization_passes): Reindent.
11619
11620 2007-02-04  Jan Hubicka  <jh@suse.cz>
11621             Eric Botcazou  <ebotcazou@adacore.com>
11622
11623         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
11624         (execute_fixup_cfg): Break out the abnormal goto code.
11625         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
11626         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
11627         (optimize_inline_calls): Call make_nonlocal_label_edges.
11628
11629 2007-02-04  Jan Hubicka  <jh@suse.cz>
11630
11631         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
11632         true when something was changed.
11633         (rename_ssa_copies): When something was changed, do
11634         TODO_remove_unused_locals.
11635         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
11636         add TODO_remove_unused_locals when instruction was removed.
11637
11638 2007-02-04  Jan Hubicka  <jh@suse.cz>
11639
11640         * ipa-inline.c (try_inline): Improve debug output; work on already
11641         inline edges too.
11642         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
11643         call try_inline for already inlined edges too when flattening;
11644         inline also functions that make callee growth but overall unit size
11645         reduce.
11646
11647 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11648
11649         * config/m32c/bitops.md, config/m32c/jump.md,
11650         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
11651         config/m32r/m32r.h, config/m32r/m32r.md,
11652         config/m32r/predicates.md, config/m68hc11/larith.asm,
11653         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
11654         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
11655         config/mips/mips-protos.h, config/mips/mips.c,
11656         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
11657         config/mn10300/mn10300.h, config/mn10300/predicates.md,
11658         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
11659         spelling conventions.
11660
11661         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
11662         Follow spelling conventions.
11663
11664 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
11665
11666         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
11667         warn about C++0x compatibility.
11668
11669 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11670
11671         * config/h8300/h8300.c, config/h8300/h8300.h,
11672         config/h8300/h8300.md: Follow spelling conventions.
11673
11674 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
11675
11676         PR middle-end/30667
11677         * combine.c (try_combine): Do not substitute source operand
11678         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
11679
11680 2007-02-03  Jan Hubicka  <jh@suse.cz>
11681
11682         PR gcov-profile/30650
11683         * value-prof.c (stringop_block_profile): Fix handling of size counter;
11684         do not divide by zero for never executed counters.
11685         (tree_find_values_to_profile): Fix counters.
11686         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
11687
11688 2007-02-03  Ian Lance Taylor  <iant@google.com>
11689
11690         * lower-subreg.c (simple_move_operand): New static function,
11691         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
11692         operands.
11693         (simple_move): Call simple_move_operand.
11694         (find_decomposable_subregs): Add special handling of MEMs.
11695         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
11696         meaning of return value.  If we see a hard register, test whether
11697         it can store a word_mode value.  Change all callers.
11698
11699 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11700
11701         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
11702         ftrapv insns and expanders.
11703         (subdi3): Change define_expand operand 1 to arith11_operand, and
11704         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
11705         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
11706         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
11707         respectively.
11708
11709         PR middle-end/30174
11710         * varasm.c (notice_global_symbol): Treat global objects as weak when
11711         flag_shlib is true.
11712
11713 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11714
11715         * emit-rtl.c (dconstpi): Delete.
11716         (dconstsqrt2): New.
11717         (init_emit_once): Delete dconstpi and init dconstsqrt2.
11718         * real.h (dconstpi): Delete.
11719         (dconstsqrt2): New.
11720         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
11721         (fold_builtin_hypot): Likewise.
11722
11723 2007-02-03  Tom Tromey  <tromey@redhat.com>
11724
11725         PR driver/30246
11726         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
11727         -gcoff3, -gxcoff3, -gvms3 implies -dD.
11728
11729 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
11730
11731         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
11732         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
11733         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
11734         config/rs6000/cell.md, config/rs6000/darwin.h,
11735         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
11736         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
11737         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
11738         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
11739         typos.  Follow spelling conventions.
11740         * doc/invoke.texi: Follow spelling conventions.
11741
11742 2007-02-03  Roger Sayle  <roger@eyesopen.com>
11743
11744         * simplify-rtx.c (simplify_relational_operation_1): Implement some
11745         canonicalization transformations that attempt to simplify integer
11746         constant comparisons to become comparisons against zero.
11747
11748 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11749
11750         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
11751         fabs(x)*sqrt(2).
11752         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
11753         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
11754
11755 2007-02-02  Mike Stump  <mrs@apple.com>
11756
11757         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
11758         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
11759         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
11760         generate a branch island.
11761
11762 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
11763
11764         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
11765         (xtensa_legitimate_address_p): New.
11766         (xtensa_legitimize_address): New.
11767         (xtensa_output_addr_const_extra): New.
11768         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
11769         (BASE_REG_P): New.
11770         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
11771         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
11772         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
11773         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
11774         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
11775         (xtensa_legitimize_address): New.
11776         (xtensa_output_addr_const_extra): New.
11777
11778 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
11779
11780         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
11781
11782 2007-02-02  Ian Lance Taylor  <iant@google.com>
11783
11784         * expmed.c (expand_divmod): Add comment.
11785
11786 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
11787
11788         * emit-rtl.c (renumber_insns): Remove.
11789         * flags.h: Remove the extern for flag_renumber_insns.
11790         * rtl.h: Remove the prototype for renumber_insns.
11791         * toplev.c (flag_renumber_insns): Remove.
11792
11793 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
11794
11795         Revert for x86 darwin:
11796         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
11797
11798         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
11799         code before the following patch under TARGET_MACHO.
11800         (ix86_function_value_regno_p): Likewise.
11801
11802 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11803
11804         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
11805         COMPLEX_EXPR.
11806
11807 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11808
11809         PR target/29682
11810         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
11811         general or fp registers.  Add comments.
11812         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
11813
11814 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
11815
11816         * pointer-set.c (insert_aux): Only return insertion slot.
11817         (pointer_set_insert): Adjust.
11818         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
11819         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
11820         pointer_map_traverse): New.
11821         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
11822         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
11823         pointer_map_contains, pointer_map_traverse): Declare.
11824
11825 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
11826
11827         PR middle-end/30473
11828         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
11829         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
11830
11831 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11832
11833         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
11834
11835         (struct _dep): New type.
11836         (dep_t): New typedef.
11837         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
11838         (DEP_STATUS): New access macro.  The macro with the same name was
11839         renamed to DEP_LINK_STATUS.
11840         (dep_init): Declare function
11841
11842         (struct _dep_link): New type.
11843         (dep_link_t): New typedef.
11844         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
11845         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
11846         (DEP_LINK_STATUS): New macro.
11847         (debug_dep_links): New debug function.
11848
11849         (struct _deps_list): New type.
11850         (deps_list_t): New typedef.
11851         (DEPS_LIST_FIRST): New access macro.
11852         (FOR_EACH_DEP_LINK): New cycle macro.
11853         (create_deps_list, free_deps_list, delete_deps_list): Declare
11854         functions.
11855         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
11856         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
11857         (copy_deps_list_change_con): Ditto.
11858
11859         (move_dep_link): Declare function.
11860
11861         (struct _dep_node): New type.
11862         (dep_node_t): New typedef.
11863         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
11864
11865         (struct haifa_insn_data.back_deps): New field to hold backward
11866         dependencies of the insn.
11867         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
11868         to deps_list_t.
11869         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
11870         Change its type to deps_list_t.
11871         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
11872         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
11873         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
11874
11875         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
11876
11877         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
11878
11879         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
11880         all callers.
11881         (dep_cost): Declare.
11882
11883         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
11884         (ds_to_dk, dk_to_ds): New functions.
11885
11886         (init_dep_1): New static function.
11887         (init_dep): New function.
11888         (copy_dep): New static function.
11889
11890         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
11891         functions.
11892         (detach_dep_link): New static function.
11893         (move_dep_link): New function.
11894
11895         (dep_links_consistent_p, dump_dep_links): New static functions.
11896         (debug_dep_links): New debugging function.
11897
11898         (deps_obstack, dl_obstack, dn_obstack): New static variables.
11899
11900         (alloc_deps_list, init_deps_list): New static functions.
11901         (create_deps_list): New function.
11902         (clear_deps_list): New static function.
11903         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
11904         (deps_list_consistent_p, dump_deps_list): New static functions.
11905         (debug_deps_list): New function.
11906         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
11907         functions.
11908         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
11909
11910         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
11911         use new scheduler dependencies lists.
11912         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
11913         (sched_analyze): Ditto.  Initialize dependencies lists.
11914         (add_forw_dep, compute_forward_dependences): Update to use new
11915         scheduler dependencies lists.
11916
11917         (init_dependency_caches): Init deps_obstack.
11918         (free_dependency_caches): Free deps_obstack.
11919
11920         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
11921         new scheduler dependencies lists.
11922         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
11923         (add_back_forw_dep, delete_back_forw_dep): Ditto.
11924
11925         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
11926         Update to use new scheduler dependencies lists.
11927         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
11928         (debug_dependencies): Ditto.
11929         (schedule_region): Update comments.
11930
11931         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
11932         scheduler dependencies lists.
11933         (schedule_ebb): Update comments.
11934
11935         * rtl.def (DEPS_LIST): Remove.
11936
11937         * lists.c (unused_deps_list): Remove.
11938         (free_list): Update assertions.
11939
11940         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
11941         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
11942
11943         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
11944         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
11945
11946         * haifa-sched.c (comments): Update.
11947         (insn_cost1): Remove.  Inline the code into insn_cost ().
11948         (insn_cost): Update to use new scheduler dependencies lists.  Move
11949         processing of the dependency cost to dep_cost ().
11950         (dep_cost): New function.  Use it instead of insn_cost () when
11951         evaluating cost of the dependency.  Use compatible interface to
11952         interact with the target.
11953         (priority): Update to use new scheduler dependencies lists.
11954         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
11955         with greater number of insns that depend on the insn.
11956         (schedule_insn): Update to use new scheduler dependencies lists.  Add
11957         code to free backward dependencies lists.  Inline and optimize code
11958         from resolve_dep () - see PR28071.
11959         (ok_for_early_queue_removal): Update to use new scheduler dependencies
11960         lists.  Update call to targetm.sched.is_costly_dependence hook.
11961
11962         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
11963         scheduler dependencies lists.
11964
11965         (resolve_dep): Remove.  Move the logic to schedule_insn ().
11966         (init_h_i_d): Initialize dependencies lists.
11967
11968         (process_insn_depend_be_in_spec): Rename to
11969         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
11970         dependencies lists.
11971         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
11972         Update to use new scheduler dependencies lists.
11973         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
11974
11975         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
11976         new scheduler dependencies lists.
11977         (build_intra_loop_deps): Ditto.
11978
11979         * target.h (struct _dep): Declare to use in
11980         gcc_target.sched.is_costly_dependence.
11981         (struct gcc_target.sched.adjust_cost): Fix typo.
11982         (struct gcc_target.sched.is_costly_dependence): Change signature to use
11983         single dep_t parameter instead of an equivalent triad.
11984         (struct gcc_target.sched.adjust_cost_2): Remove.
11985
11986         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
11987
11988         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
11989
11990         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
11991         documentation.
11992         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
11993
11994         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
11995         (REG_DEP_TRUE): Document.
11996
11997         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
11998         Change signature to correspond to the targetm.sched.adjust_cost hook.
11999         Update use in TARGET_SCHED_ADJUST_COST_2.
12000         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
12001         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
12002         new scheduler dependencies lists.
12003         (ia64_gen_check): Ditto.
12004
12005         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
12006         dependencies lists.
12007
12008         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
12009         signature to correspond to the targetm.sched.is_costly_dependence hook.
12010         (is_costly_group): Update to use new scheduler dependencies lists.
12011
12012         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
12013         instead of INSN_COST () macro.
12014
12015 2007-02-01  Ian Lance Taylor  <iant@google.com>
12016
12017         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
12018
12019 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
12020
12021         * pa.md (tp_load): Correct mfctl instruction syntax.
12022
12023 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
12024
12025         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
12026         altivec_padding_size calculation on AIX.  Improve comment, add
12027         assert to verify that it's right.
12028
12029         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
12030         64-bit.
12031
12032 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
12033
12034         PR inline-asm/28686
12035         * global.c (global_alloc): Add mising initialization of
12036         ELIMINABLE_REGSET.
12037
12038 2007-02-01  Roger Sayle  <roger@eyesopen.com>
12039
12040         * alias.c (init_alias_analysis): Correct whitespace.
12041         * bb-reorder.c (fix_edges_for_rarely_executed_code,
12042         partition_hot_cold_basic_blocks): Likewise.
12043         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
12044         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
12045         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
12046         fold_builtin_snprintf_chk, fold_builtin_printf,
12047         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
12048         do_mpfr_arg3, do_mpfr_sincos): Likewise.
12049         * cfgcleanup.c (cleanup_cfg): Likewise.
12050         * cfgexpand.c (tree_expand_cfg): Likewise.
12051         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
12052         * function.c (get_next_funcdef_no): Likewise.
12053         * gengtype.c (main): Likewise.
12054         * genmodes.c (main): Likewise.
12055         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
12056         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
12057         * ifcvt.c (noce_emit_move_insn): Likewise.
12058         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
12059         Likewise.
12060         * stor-layout.c (get_best_mode): Likewise.
12061         * tree-ssa-loop-niter.c (get_val_for): Likewise.
12062         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
12063         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
12064         perform_var_substitution, solve_graph): Likewise.
12065         * tree-vrp.c (vrp_finalize): Likewise.
12066
12067 2007-02-01  Ian Lance Taylor  <iant@google.com>
12068
12069         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
12070         high part of a paradoxical subreg, return a constant zero.
12071
12072 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
12073
12074         * toplev.c (lang_dependent_init): Call init_set_costs.
12075         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
12076
12077 2007-02-01  Richard Guenther  <rguenther@suse.de>
12078
12079         PR middle-end/30656
12080         * fold-const.c (fold_negate_expr): Allow negating a
12081         constant if overflow does not change.
12082
12083 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12084
12085         * doc/c-tree.texi (Expression trees): Improve markup.
12086         * doc/tm.texi (Register Classes, Addressing Modes)
12087         (Floating Point): Fix spacing after abbreviations.  Fix some
12088         typos.
12089
12090 2007-02-01  Ben Elliston  <bje@au.ibm.com>
12091
12092         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
12093         * doc/contrib.texi: Likewise.
12094         * doc/install.texi: Likewise.
12095
12096 2007-01-31  Richard Henderson  <rth@redhat.com>
12097             Ian Lance Taylor  <iant@google.com>
12098
12099         * lower-subreg.c: New file.
12100         * rtl.def (CONCATN): Define.
12101         * passes.c (init_optimization_passes): Add pass_lower_subreg and
12102         pass_lower_subreg2.
12103         * emit-rtl.c (update_reg_offset): New static function, broken out
12104         of gen_rtx_REG_offset.
12105         (gen_rtx_REG_offset): Call update_reg_offset.
12106         (gen_reg_rtx_offset): New function.
12107         * regclass.c: Revert patch of 2006-03-05, restoring
12108         reg_scan_update.
12109         (clear_reg_info_regno): New function.
12110         * dwarf2out.c (concatn_loc_descriptor): New static function.
12111         (loc_descriptor): Handle CONCATN.
12112         * common.opt (fsplit_wide_types): New option.
12113         * opts.c (decode_options): Set flag_split_wide_types when
12114         optimizing.
12115         * timevar.def (TV_LOWER_SUBREG): Define.
12116         * rtl.h (gen_reg_rtx_offset): Declare.
12117         (reg_scan_update): Declare.
12118         * regs.h (clear_reg_info_regno): Declare.
12119         * tree-pass.h (pass_lower_subreg): Declare.
12120         (pass_lower_subreg2): Declare.
12121         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
12122         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
12123         -fsplit-wide-types.
12124         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
12125         * Makefile.in (OBJS-common): Add lower-subreg.o.
12126         (lower-subreg.o): New target.
12127
12128 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
12129
12130         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
12131
12132 2007-01-31  Anatoly Sokolov <aesok@post.ru>
12133
12134         PR target/19087
12135         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
12136
12137 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12138
12139         PR middle-end/29335
12140         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
12141
12142 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
12143
12144         * cfgloop.h: Include vec-prim.h.
12145         (enum li_flags): Remove LI_ONLY_OLD.
12146         (loop_iterator): Changed.
12147         (fel_next, fel_init): Iterate over loop tree.
12148         (FOR_EACH_LOOP_BREAK): New macro.
12149         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
12150         FOR_EACH_LOOP.
12151         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
12152         * modulo-sched.c (sms_schedule): Ditto.
12153         * tree-vectorizer.c (vectorize_loops): Ditto.
12154         * doc/loop.texi: Update information on loop numbering and behavior of
12155         FOR_EACH_LOOP wrto new loops.
12156         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
12157         add_to_evolution_1): Test nestedness of loops instead of comparing
12158         their numbers.
12159         * tree-chrec.c (chrec_fold_plus_poly_poly,
12160         chrec_fold_multiply_poly_poly, chrec_evaluate,
12161         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
12162         reset_evolution_in_loop): Ditto.
12163         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
12164
12165 2007-01-31  Dirk Mueller  <dmueller@suse.de>
12166
12167         * c-common.c (warn_about_parentheses): Separate warning about
12168         un-parenthized sequence of comparison operators from the one
12169         which is supposed to warn about x <= y <= z.
12170
12171 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
12172
12173         * optabs.h (enum optab_index): Add new OTI_isinf.
12174         (isinf_optab): Define corresponding macro.
12175         * optabs.c (init_optabs): Initialize isinf_optab.
12176         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
12177         patterns.
12178         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
12179         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
12180         using isinf_optab.
12181         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
12182         expand_builtin_interclass_mathfn.
12183         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
12184         * config/i386/i386.md (UNSPEC_FXAM): New constant.
12185         (fxam<mode>2_i387): New insn pattern.
12186         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
12187         built-in functions as x87 inline asm.
12188
12189 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
12190
12191         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
12192
12193 2007-01-30  Eric Christopher  <echristo@apple.com>
12194
12195         * config.gcc: Add geode.
12196
12197 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
12198
12199         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
12200         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
12201         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
12202         value-prof.c: Fix comment typos.
12203
12204 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12205
12206         PR c++/24745
12207         * doc/invoke.texi (Wpointer-arith): Document warning.
12208
12209 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
12210
12211         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
12212         the list of discrepancies from the draft TR.
12213
12214 2007-01-30  Dirk Mueller  <dmueller@suse.de>
12215
12216         PR c++/30601
12217         * doc/invoke.texi (-Wreturn-type): Update description to
12218         match new behavior.
12219
12220 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
12221
12222         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
12223
12224 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
12225
12226         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
12227         to handle optabs that operate on floating point input argument and
12228         output to integer output.
12229         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
12230         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
12231         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
12232         expand_builtin_interclass_mathfn ().
12233         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
12234         (ilogbsi2): Remove.
12235         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
12236         ilogbl built-in functions as x87 intrinsics.
12237
12238 2007-01-30  Richard Guenther  <rguenther@suse.de>
12239
12240         PR middle-end/27657
12241         * dwarf2out.c (reference_to_unused): Query varpool if the
12242         variable was output.
12243
12244 2007-01-30  Richard Guenther  <rguenther@suse.de>
12245
12246         PR middle-end/30313
12247         * passes.c (execute_one_pass): Reset in_gimple_form to not
12248         confuse non-unit-at-a-time mode.
12249
12250 2007-01-29  Roger Sayle  <roger@eyesopen.com>
12251             Richard Guenther  <rguenther@suse.de>
12252
12253         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
12254         avoid undefined behaviour on overflow.  Use force_fit_type_double
12255         to construct the constant with the specified TREE_OVERFLOW.
12256
12257 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
12258
12259         * config/dfp-bit.c: Add parameterized support for fp exceptions.
12260         * config/dfp-bit.h: Ditto.
12261
12262 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12263
12264         * c-decl.c (pop_scope): Replace warnings with call to
12265         warn_for_unused_label.
12266         * c-common.h (warn_for_unused_label): Declare.
12267         * c-common.c (warn_for_unused_label): Define.
12268
12269 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12270
12271         * tree-optimize.c (update_inlined_to_pointers): Delete unused
12272         function.
12273
12274 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
12275
12276         * Makefile.in (USER_H): Remove decfloat.h.
12277         * ginclude/decfloat.h: Delete, moving contents to ...
12278         * ginclude/float.h: Add support for decimal floating point,
12279         guarded by __STDC_WANT_DEC_FP__.
12280
12281 2007-01-29  Mike Stump  <mrs@apple.com>
12282
12283         * doc/gccint.texi (Top): Rename Loop Representation to Loop
12284         Analysis and Representation to resolve case insensitive conflict.
12285         * doc/loop.texi (Loop Analysis and Representation): Likewise.
12286
12287 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
12288
12289         * tree.h (struct tree_memory_tag): Add aliases member.
12290         (MTAG_ALIASES): New macro.
12291         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
12292         (add_may_alias): Remove pointer-set. Update for may_aliases being
12293         a bitmap.
12294         (mark_aliases_call_clobbered): Update for may_aliases being a
12295         bitmap.
12296         (compute_tag_properties): Ditto.
12297         (create_partition_for): Ditto.
12298         (compute_memory_partitions): Ditto.
12299         (dump_may_aliases_for): Ditto.
12300         (is_aliased_with): Ditto.
12301         (add_may_alias_for_new_tag): Ditto.
12302         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
12303         (compute_is_aliased): New function.
12304         (compute_may_aliases): Call compute_is_aliased).
12305         (init_alias_info): Initialize alias_bitmap_obstack.
12306         (union_alias_set_into): New function.
12307         (compute_flow_sensitive_aliasing): Use union_aliases_into.
12308         (have_common_aliases_p): Rewrite to take two bitmaps and use
12309         intersection.
12310         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
12311         Update for bitmaps.
12312         (finalize_ref_all_pointers): Update for add_may_alias changes.
12313         (new_type_alias): Ditto.
12314         * tree-flow-inline.h (may_aliases): Return a bitmap.
12315         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
12316         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
12317         may_aliases being a bitmap.
12318         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
12319         may_aliases now returns a bitmap.
12320         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
12321         being a bitmap.
12322         * tree-ssa-operands.c (add_virtual_operand): Update for
12323         may_aliases being a bitmap.
12324
12325 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
12326
12327         PR tree-optimization/30630
12328         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
12329         variable as changed.
12330
12331 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
12332
12333         PR c++/28266
12334         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
12335         expanded only once even if an error occurs.
12336
12337 2007-01-29  Ben Elliston  <bje@au.ibm.com>
12338
12339         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
12340         (__gcov_average_profiler): Likewise.
12341         (__gcov_ior_profiler): Likewise.
12342         (__gcov_merge_ior): Likewise.
12343
12344 2007-01-28  Jan Hubicka  <jh@suse.cz>
12345
12346         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
12347         * value-prof.c (stringop_block_profile): Likewise.
12348
12349 2007-01-28  Jan Hubicka  <jh@suse.cz>
12350
12351         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
12352         variant handling histograms; add wrapper.
12353         (clear_storage_via_libcall): Export.
12354         (emit_block_move_hints): Break out from ...; add histograms.
12355         (emit_block_move): ... this one.
12356         (clear_storage_hints): Break out from ...; add histograms.
12357         (clear_storage): ... this one.
12358         (set_storage_via_memset): Handle histogram.
12359         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
12360         (clear_storage_hints, clear_storage_via_libcall): Declare.
12361         (set_storage_via_setmem): Update prototype.
12362         * doc/md.texi (movmem, setmem): Document new arguments.
12363
12364         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
12365         new histograms.
12366         (stringop_block_profile): New global function.
12367         (tree_stringops_values_to_profile): Profile block size and alignment.
12368         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
12369         HIST_TYPE_IOR.
12370         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
12371         (stringop_block_profile): Declare.
12372         * builtins.c: Include value-prof.h.
12373         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
12374         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
12375         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
12376         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
12377         * profile.c (instrument_values): Add new counters.
12378         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
12379         calls.
12380         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
12381         (tree_init_edge_profiler): Build new profilers.
12382         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
12383         (pass_tree_profile): Add dump.
12384         (tree_profile_hooks): Update.
12385         * Makefile.in (LIBGCOV): Add new constants.
12386         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
12387         __gcov_ior_profiler): New.
12388         * i386.md (movmem/setmem expanders): Add new optional arguments.
12389
12390 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
12391
12392         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
12393
12394 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
12395
12396         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
12397         (tree_unswitch_single_loop): Pass eni_size_weights to
12398         tree_num_loop_insns.
12399         * tree-ssa-loop-manip.c: Include tree-inline.h.
12400         (can_unroll_loop_p): Pass eni_size_weights to
12401         tree_num_loop_insns.
12402         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
12403         Pass eni_size_weights to estimate_num_insns.
12404         * tree.h (init_inline_once): Export.
12405         * toplev.c (backend_init): Call init_inline_once.
12406         * cgraphunit.c (cgraph_process_new_functions,
12407         cgraph_analyze_function): Pass eni_inlining_weights to
12408         estimate_num_insns.
12409         * ipa-inline.c (compute_inline_parameters): Ditto.
12410         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
12411         to estimate_num_insns.
12412         (try_unroll_loop_completely): Pass eni_size_weights to
12413         tree_num_loop_insns.
12414         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
12415         ot estimate_num_insns.
12416         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
12417         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
12418         * tree-inline.c (eni_inlining_weights, eni_size_weights,
12419         eni_time_weights): New variables.
12420         (init_inline_once): Initialize them.
12421         (struct eni_data): Mew.
12422         (estimate_num_insns_1, estimate_num_insns): Use weights.
12423         * tree-inline.h (struct eni_weights_d): New.
12424         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
12425         (estimate_num_insns): Declaration changed.
12426         * cfgloop.h (tree_num_loop_insns): Declaration changed.
12427         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
12428         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
12429
12430 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
12431
12432         * tree-data-ref.c (conflict_fn): Assert that the number of affine
12433         relations in the conflict function is valid.
12434
12435 2007-01-27  Ian Lance Taylor  <iant@google.com>
12436
12437         * common.opt: Add fstrict-overflow.
12438         * opts.c (decode_options): Set flag_strict_overflow if -O2.
12439         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
12440         (TYPE_OVERFLOW_UNDEFINED): Define.
12441         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
12442         Replace all uses.
12443         * tree.h (TYPE_TRAP_SIGNED): Don't define.
12444         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
12445         (fold_negate_expr): Likewise.
12446         (make_range): Likewise.
12447         (extract_muldiv_1): Likewise.
12448         (maybe_canonicalize_comparison): Likewise.
12449         (fold_comparison): Likewise.
12450         (fold_binary): Likewise.
12451         (tree_expr_nonnegative_p): Likewise.
12452         (tree_expr_nonzero_p): Likewise.
12453         * tree-vrp.c (compare_values): Likewise.
12454         (extract_range_from_binary_expr): Likewise.
12455         (extract_range_from_unary_expr): Likewise.
12456         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
12457         Likewise.
12458         (nowrap_type_p): Likewise.
12459         * tree-scalar-evolution.c (simple_iv): Likewise.
12460         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
12461         (build_range_check): Likewise.
12462         (extract_muldiv_1): Likewise.
12463         (fold_comparison): Likewise.
12464         * tree-vrp.c (vrp_int_const_binop): Likewise.
12465         (extract_range_from_unary_expr): Likewise.
12466         * convert.c (convert_to_integer): Likewise.
12467         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
12468         (fold_comparison): Likewise.
12469         (fold_binary): Likewise.
12470         * optabs.c (optab_for_tree_code): Likewise.
12471         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
12472         * simplify-rtx.c (simplify_const_relational_operation): Check
12473         flag_strict_overflow and flag_trapv.
12474         (simplify_const_relational_operation): Likewise.
12475         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
12476         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
12477         -fstrict-overflow.
12478
12479 2007-01-27  Roger Sayle  <roger@eyesopen.com>
12480
12481         * tree.c (tree_fold_gcd): Delete.
12482         * tree.h (tree_fold_gcd): Remove prototype.
12483         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
12484         test whether one constant integer is a multiple of another.  Instead
12485         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
12486         * fold-const.c (multiple_of_p):  We've determined both TOP and
12487         BOTTOM are integer constants so we can call int_const_binop directly
12488         instead of the more generic const_binop.
12489
12490 2007-01-27  Roger Sayle  <roger@eyesopen.com>
12491
12492         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
12493         1*X check that the constant hasn't overflowed, to preserve the
12494         TREE_OVERFLOW bit.
12495         (round_up): Provide an efficient implementation when rouding-up an
12496         INTEGER_CST to a power-of-two.
12497
12498 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12499
12500         * doc/sourcebuild.texi: Add comma for clarity.
12501         * doc/extend.texi: Fix some typos.
12502         * doc/passes.texi: Likewise.
12503         * doc/cppinternals.texi: Likewise.
12504         * doc/c-tree.texi: Likewise.
12505         * doc/tree-ssa.texi: Likewise.
12506         * doc/install.texi: Likewise.
12507
12508 2007-01-27  Jan Hubicka  <jh@suse.cz>
12509
12510         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
12511         (pass_sra): Do not require alias information.
12512         * passes.c (init_optimization_passes): Add SRA
12513
12514 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
12515
12516         * tracer.c (rest_of_handle_tracer): We already cleaned
12517         up the CFG in tracer() so don't do it here again.
12518         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
12519         cleanup_cfg here, either.  And don't call renumber_insns.
12520
12521         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
12522         and BB_HEAD are in the insn stream here.  Instead make sure
12523         that BB_INSN is valid on all insns.  Also, do check here that
12524         there are no pending branch predictions...
12525         (rtl_verify_flow_info): ...instead of doing it here.  Checks
12526         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
12527         here.
12528
12529 2007-01-26  Roger Sayle  <roger@eyesopen.com>
12530
12531         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
12532         function to simplify/factorize operand order canonicalization.
12533         (ix86_fixup_binary_operands): Reorganize using the above function.
12534         (ix86_binary_operator_ok): Likewise.
12535
12536 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
12537
12538         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
12539         file scope from optimize_attrs.
12540         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
12541         up search.
12542         (optimize_attrs): Clear insn_code_values after freeing it.
12543
12544 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
12545
12546         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
12547         a parts.base assignment.
12548
12549 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
12550
12551         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
12552         (compute_subscript_distance, initialize_data_dependence_relation,
12553         finalize_ddr_dependent, analyze_ziv_subscript,
12554         analyze_siv_subscript_cst_affine,
12555         compute_overlap_steps_for_affine_univar,
12556         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
12557         analyze_siv_subscript, analyze_miv_subscript,
12558         analyze_overlapping_iterations, subscript_dependence_tester_1,
12559         compute_self_dependence, free_dependence_relation): Work
12560         with affine_fn instead of chrecs.
12561         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
12562         common_affine_function, affine_function_base,
12563         affine_function_constant_p, affine_fn_op, affine_fn_plus,
12564         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
12565         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
12566         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
12567         (all_chrecs_equal_p): Removed.
12568         * tree-data-ref.h (affine_fn, conflict_function): New types.
12569         (struct subscript): Change type of conflicting_iterations_in_a
12570         and conflicting_iterations_in_b.
12571
12572 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
12573
12574         PR other/30182
12575         * config/pa/pa.h (TARGET_HPUX_11): New.
12576         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
12577         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
12578
12579 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
12580         Richard Guenther  <rguenther@suse.de>
12581
12582         * tree-ssa-structalias.c (solve_graph): Handle case
12583         we merged the variable to another.
12584
12585 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12586
12587         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
12588         functions.
12589
12590         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
12591         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
12592
12593 2007-01-25  DJ Delorie  <dj@redhat.com>
12594
12595         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
12596         allow changes to modes which don't fit in those registers.
12597
12598         * reload1.c (choose_reload_regs): Check for invalid subregs before
12599         computing their locations, not after.
12600
12601 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
12602
12603         PR 25127
12604         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
12605         save Altivec registers in an eh_return function.
12606         (compute_vrsave_mask): Likewise.
12607         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
12608         for saving Altivec registers.
12609         (rs6000_emit_prologue): Don't allocate stack twice in
12610         eh_return function.  Correct expected value of altivec_save_offset
12611         when using save_world.  Describe save of R0 to stack when using
12612         save_world.  Describe stack pointer adjustment when using
12613         save_world.  Remove duplicated eh_return parameter register saving.
12614         Update sp_offset variable after save_world.
12615         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
12616         darwin-world.asm.
12617         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
12618         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
12619         implies Altivec.
12620
12621 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
12622
12623         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
12624
12625 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
12626
12627         PR other/30182
12628         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
12629         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
12630
12631 2007-01-25  Richard Guenther  <rguenther@suse.de>
12632
12633         * doc/invoke.texi (-Wcoverage-mismatch): Document.
12634         * common.opt (-Wcoverage-mismatch): New warning option.
12635         * coverage.c (get_coverage_counts): Ignore coverage mismatch
12636         if -Wcoverage-mismatch is given.
12637
12638 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
12639
12640         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
12641         (ipcp_driver): Change to static definition.
12642         Add dumping of the ifunctions.
12643         (constant_val_insert): Remove unused parameter. Support for SSA.
12644         (ipcp_propagate_const): Support for SSA.
12645         (ipcp_profile_bb_print): Print only analyzed nodes.
12646         (ipcp_replace_map_create): Remove support for Fortran constant
12647         for now.
12648         * ipa-prop.c (ipa_method_modify_stmt,
12649         ipa_callsite_compute_param): Support for SSA.
12650         * ipa-prop.h (ipcp_driver): Remove declaration.
12651         (IS_VALID_TREE_MAP_INDEX): Add define.
12652
12653 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
12654
12655         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
12656
12657 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12658
12659         PR middle-end/30447
12660         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
12661         constant argument to cabs and do it without checking for
12662         -funsafe-math-optimizations.
12663
12664 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
12665
12666         * c-common.h (RID_FIRST_CXX0X): New.
12667         (RID_LAST_CXX0X): New.
12668         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
12669         by -Wall.
12670         * c.opt (Wc++0x-compat): New.
12671         * doc/invoke.texi (-Wc++0x-compat): Document.
12672
12673 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12674
12675         * builtins.c (fold_builtin_carg): New.
12676         (fold_builtin_1): Use it.
12677
12678 2007-01-24  Jan Hubicka  <jh@suse.cz>
12679
12680         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
12681
12682         * ipa-inline.c (initial_insns, max_insns): Delete.
12683         (compute_max_insns): New function.
12684         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
12685         of insns as base for code growth.
12686         (cgraph_decide_inlining): Make initial_insns local; do not compute
12687         max_insns.
12688         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
12689         * doc/invoke.texi (inline-unit-growth): Update docs.
12690
12691 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
12692
12693         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
12694         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
12695         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
12696         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
12697         for CPUs that have PTA_CX16 set.
12698
12699         PR middle-end/27416
12700         * gimplify.c (omp_check_private): New function.
12701         (gimplify_scan_omp_clauses): Use it for
12702         firstprivate/lastprivate/reduction.
12703
12704         PR middle-end/30494
12705         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
12706         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
12707
12708         PR middle-end/30421
12709         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
12710         If lower_lastprivate_clauses emits some statements, append them
12711         to dlist rather than body_p and to body_p append an initializer.
12712         (lower_omp_for): Adjust caller.
12713
12714 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
12715
12716         * target.h (globalize_decl_name): New.
12717         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
12718         * output.h (default_globalize_decl_name): New.
12719         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
12720         globalize_label.
12721         (globalize_decl): Ditto.
12722         (default_globalize_decl_name): New.
12723         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
12724         (ia64_handle_version_id_attribute): New.
12725         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
12726         (ia64_asm_output_external): Use globalize_decl_name instead
12727         of globalize_label.
12728         * doc/extend.texi (version_id): New pragma.
12729         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
12730
12731 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12732
12733         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
12734         _uleb128_t and _Unwind_SWord with _sleb128_t.
12735         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
12736         uw_frame_state_for, uw_update_context_1): Likewise.
12737         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
12738         * unwind-pe.h (read_uleb128, read_sleb128,
12739         read_encoded_value_with_base): Likewise.
12740         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
12741
12742 2007-01-24  Richard Guenther  <rguenther@suse.de>
12743
12744         * builtins.c (expand_builtin_cexpi): Get the fndecl
12745         for cexp in the correct way.
12746
12747 2007-01-24  Jan Hubicka  <jh@suse.cz>
12748
12749         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
12750
12751 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12752
12753         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
12754         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
12755         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
12756         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
12757         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
12758         __SIZEOF_PTRDIFF_T__.
12759         * doc/cpp.texi: Documentation for the new builtin macros added.
12760
12761 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
12762
12763         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
12764         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
12765         instead of operands[2] to avoid access past the end of array.
12766
12767 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
12768
12769         * reload1.c (emit_reload_insns): Pass the reload register
12770         for a non-spill output reload through forget_old_reloads_1.
12771
12772 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
12773
12774         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
12775         _SOFT_DOUBLE if doubles use software floating-point.
12776         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
12777         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
12778         * config/rs6000/darwin-ldouble.c: Also compile functions for
12779         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
12780         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
12781         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
12782         commented-out long double override.
12783         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
12784         * config/rs6000/eabispe.h: Likewise.
12785         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
12786         long double for non-SPE.
12787         (rs6000_handle_option): Likewise.
12788         (invalid_e500_subreg): Disallow more subregs involding DImode,
12789         DFmode, TImode or TFmode.
12790         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
12791         E500 double.
12792         (legitimate_lo_sum_address_p): Also check for TFmode for E500
12793         double.
12794         (rs6000_legitimize_address): Also handle TFmode for E500 double.
12795         (rs6000_legitimize_reload_address): Also handle TFmode for E500
12796         double.
12797         (rs6000_legitimate_address): Also check for TFmode for E500
12798         double.
12799         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
12800         (spe_build_register_parallel): Handle TFmode and TCmode.
12801         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
12802         double.
12803         (function_arg): Handle TFmode and TCmode for E500 double.
12804         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
12805         in general.
12806         (print_operand): Handle TFmode and TImode for %y.
12807         (rs6000_generate_compare): Handle TFmode comparisons for E500
12808         double.
12809         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
12810         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
12811         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
12812         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
12813         TFmode for E500 double.
12814         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
12815         (floatsidf2): Enable for E500 double.
12816         (movtf_softfloat): Use rs6000_nonimmediate_operand.
12817         (extenddftf2): Change to extenddftf2_fprs.
12818         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
12819         depending on TARGET_E500_DOUBLE.
12820         (extendsftf2): Enable for E500 double.
12821         (trunctfdf2): Enable for E500 double.
12822         (trunctfsf2): Change to trunctfsf2_fprs.
12823         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
12824         depending on TARGET_E500_DOUBLE.
12825         (floatsitf2): Enable for E500 double.
12826         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
12827         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
12828         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
12829         (negtf2): Change to negtf2_internal.
12830         (negtf2): New expander.
12831         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
12832         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
12833         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
12834         (movdi_internal32): Use rs6000_nonimmediate_operand.
12835         (unnamed splitter): Likewise.
12836         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
12837         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
12838         (SPE64TF, DITI): New mode macros.
12839         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
12840         modes.
12841         (frob_tf_ti): New.
12842         (frob_<mode>_di_2): New.
12843         (frob_tf_di_8_2): New.
12844         (frob_di_df): Change to frob_di_<mode>; allow more modes.
12845         (frob_ti_tf): New.
12846         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
12847         more modes.
12848         (frob_ti_<mode>_8_2): New.
12849         (frob_ti_tf_2): New.
12850         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
12851         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
12852         TFmode.
12853         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
12854         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
12855         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
12856         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
12857         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
12858         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
12859         tsttflt_gp): New.
12860
12861 2007-01-23  Ian Lance Taylor  <iant@google.com>
12862
12863         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
12864         insn-*.o first.
12865         (OBJS-archive): Reformat, alphabetize.
12866         (OBJS): Change out_object_file to OBJS-md.
12867
12868 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
12869
12870         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12871         JUMP_P and CALL_P predicates where applicable.
12872         * config/i386/i386.c: Ditto.
12873         * config/i386/i386.md: Ditto.
12874         * config/i386/mmx.md: Ditto.
12875         * config/i386/predicates.md: Ditto.
12876
12877 2007-01-22  Andreas Schwab  <schwab@suse.de>
12878
12879         * config/m68k/m68k.h: Fix comment.
12880
12881 2007-01-22  Jan Hubicka  <jh@suse.cz>
12882
12883         * passes.c (init_optimization_passes): Do not rerun
12884         pass_early_warn_uninitialized.
12885
12886 2007-01-22  Richard Guenther  <rguenther@suse.de>
12887
12888         PR tree-optimization/30038
12889         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
12890         function.
12891         (execute_cse_sincos_1): Likewise.
12892         (execute_cse_sincos): Likewise.
12893         (gate_cse_sincos): Likewise.
12894         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
12895         the cexpi() canonicalization of sincos().
12896         * tree-pass.h (pass_cse_sincos): Declare.
12897         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
12898
12899 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
12900
12901         PR rtl-optimization/29329
12902         * combine.c (replaced_rhs_insn): Rename to i2mod.
12903         (replaced_rhs_value): Rename to i2mod_new_rhs.
12904         (i2mod_old_rhs): New global variable.
12905         (combine_instructions): Adjust for above change.  Save a copy of
12906         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
12907         note are substituted in the second instruction.
12908         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
12909         ditch the note if it pertains to the second eliminated register
12910         and this register is mentioned in i2mod_old_rhs.
12911
12912         Revert:
12913         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
12914
12915         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
12916         the insn to which the note was originally attached.
12917
12918 2007-01-21  Jan Hubicka  <jh@suse.cz>
12919
12920         * ipa-inline.c (inlining_mode): Comment, move up.
12921         (cgraph_decide_inlining_incrementally): Do not perform inlining
12922         itself; fix handling of flattening of self recursive functions.
12923         (cgraph_find_cycles): Remove.
12924         (cgraph_flatten_node): Remove.
12925         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
12926         (try_inline): New function.
12927         (cgraph_early_inlining): Update call of
12928         cgraph_decide_inlining_incrementally.  Apply inlining here.
12929         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
12930
12931 2007-01-21  Dirk Mueller  <dmueller@suse.de>
12932
12933         PR bootstrap/30511
12934         * tree-vrp.c (check_array_bounds): do not warn
12935         about ADDR_EXPR's of ARRAY_REF's which are immediately
12936         used in binary expressions.
12937
12938 2007-01-21  Ira Rosen  <irar@il.ibm.com>
12939
12940         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
12941         read_write_dep and macros for its access.
12942         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
12943         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
12944         argument, call vect_check_interleaving for every independent pair of
12945         data-refs. Mark loads that access the same memory location as a store
12946         in the loop.
12947         (vect_check_dependences): Remove.
12948         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
12949         call, fix the call to vect_analyze_data_ref_dependence.
12950         (vect_analyze_data_ref_access): For statements that access the same
12951         data-ref, check that they are not stores; for loads, check that there
12952         is no store that access the same location.
12953
12954 2007-01-20  Roger Sayle  <roger@eyesopen.com>
12955             Joseph Myers  <joseph@codesourcery.com>
12956
12957         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
12958         (-fdump-rtl-stack): Likewise.
12959         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
12960         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
12961         (-mpt-fixed): Use @minus{} for minus sign.
12962         (Using Precompiled Headers): Fix under/overfull hbox.
12963
12964 2007-01-20  Jan Hubicka  <jh@suse.cz>
12965
12966         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
12967         place within annotation.
12968
12969 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12970
12971         * pa.c (output_move_double): Change array size of xoperands to 4.
12972
12973 2007-01-20  Jan Hubicka  <jh@suse.cz>
12974
12975         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
12976         as temporary.
12977
12978 2007-01-19  Ian Lance Taylor  <iant@google.com>
12979
12980         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
12981         constant to unsigned HOST_WIDE_INT before negating.
12982
12983 2007-01-19  Ian Lance Taylor  <iant@google.com>
12984
12985         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
12986         to unsigned.
12987         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
12988         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
12989         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
12990         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
12991         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
12992         (realloc_vdef, realloc_vuse): Change second parameter to
12993         unsigned.
12994         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
12995         fields to unsigned.
12996         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
12997         unsigned. Change x and lim locals to unsigned.
12998         (realloc_vdef, realloc_vuse): Change num_elem parameter to
12999         unsigned.
13000         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
13001         (copy_virtual_operands): Change i and n locals to unsigned.
13002
13003 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
13004
13005         PR middle-end/29335
13006         * builtins.c (fold_builtin_1): Handle builtin fdim.
13007
13008 2007-01-20  Jan Hubicka  <jh@suse.cz>
13009
13010         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
13011         * tree-ssa-structalias.c (compute_points_to_sets): Do call
13012         init_alias_heapvars.
13013         (init_alias_heapvars): Initialize only when not already initialized.
13014         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
13015
13016 2007-01-19  Roger Sayle  <roger@eyesopen.com>
13017
13018         * common.opt (fsigned-zeros): New command line option.
13019         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
13020         of flag_unsafe_math_optimizations.
13021         * opts.c (set_fast_math_flags): The -ffast-math command line option
13022         implies -fno-signed-zeros.
13023         (fast_math_flags_set_p): Likewise.
13024
13025         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
13026         the documentation of -ffast-math appropriately.  Wrap long lines.
13027
13028 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
13029
13030         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
13031         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
13032
13033 2007-01-19  Tomas Bily  <tbily@suse.cz>
13034
13035         * cgraphunit.c (cgraph_finalize_function): Updating of pid
13036         * tree-profile.c:
13037         (tree_init_ic_make_global_vars): New function
13038         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
13039         (tree_gen_ic_profiler): New function
13040         (tree_gen_ic_func_profiler): New function
13041         (tree_profiling): Added calling of tree_gen_ic_func_profiler
13042         (tree_profile_hooks): Added hook for indirec/virtual calls
13043         * value-prof.c (tree_find_values_to_profile): New case for
13044         indirect calls
13045         (tree_values_to_profile): Call for determining indirect/virtual
13046         counters
13047         (tree_indirect_call_to_profile): New function
13048         (tree_ic_transform): New function
13049         (tree_ic): New function
13050         (find_func_by_pid): New function
13051         (init_pid_map): New function
13052         (tree_value_profile_transformations): Added check for
13053         indirect/virtual call transformation
13054         * value-prof.h (enum hist_type): New counter type for
13055         indirect/virtual calls
13056         (profile_hooks): Added new hook for profiling indirect/virtual
13057         calls
13058         * profile.c (instrument_values): New case for indirect/virtual
13059         call added
13060         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
13061         (GCOV_COUNTER_V_INDIR): New counter type
13062         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
13063         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
13064         call added
13065         * cgraph.c: Definition of cgraph_max_pid
13066         (cgraph_create_node): Default init of pid attribute
13067         * cgraph.h: Declaration of cgraph_max_pid
13068         (struct cgraph_node): Added pid attribute
13069         * libgcov.c (__gcov_indirect_call_profiler): New function
13070         (__gcov_one_value_profiler_body): New function
13071         (__gcov_one_value_profiler): Body was moved to
13072         __gcov_one_value_profiler_body and calls it
13073
13074 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
13075
13076         * doc/gty.texi (Options): Document the mark_hook option to GTY.
13077         * gengtype.c (write_types_data, write_func_for_structure,
13078         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
13079         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
13080         (walk_type, write_func_for_structure): Generate the mark_hook if
13081         needed.
13082
13083 2007-01-19  Jan Hubicka  <jh@suse.cz>
13084
13085         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
13086         'early' argument take inlining mode argument specifying whether to
13087         inline for size/speeed or all functions; add support for flattening;
13088         improve dumpting.
13089         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
13090
13091 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13092
13093         PR c++/17947
13094         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
13095         the name of the declared identifier.
13096
13097 2007-01-19  Dirk Mueller  <dmueller@suse.de>
13098
13099         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
13100         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
13101         duplicate evaluation.
13102
13103 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
13104
13105         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
13106         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
13107         to XFMode, use acosxf2 and truncate result to requested mode.
13108         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
13109         (asin<mode>2): Similarly, with asin expanders.
13110         (*fscalexf4_i387): Rename from *fscalexf4.
13111         (expNcorexf3): New expander.
13112         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
13113         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
13114         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
13115         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
13116         patterns for SSE math.
13117         (exp10<mode>2): Similarly, with exp10 expanders.
13118         (exp2<mode>2): Similarly, with exp2 expanders.
13119         (expm1<mode>2): Similarly, with expm1 expanders.
13120         (ldexp<mode>3): Similarly, with ldexp expanders.
13121         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
13122         Use gen_truncxf<mode>2_i387_noop to truncate result.
13123
13124 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13125
13126         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
13127         for ColdFire targets.
13128
13129 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
13130             Richard Sandiford  <richard@codesourcery.com>
13131
13132         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
13133         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
13134         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
13135         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
13136         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
13137         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
13138
13139 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13140
13141         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
13142         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
13143         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
13144         (*adddi_dilshr32_cf): New pattern.
13145         (adddi3, subdi3): Remove first alternatives.
13146
13147 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13148
13149         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
13150         implemented using move.l, do not use its cc result for floating-point
13151         comparisons.
13152
13153 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13154
13155         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
13156         from accepting 's' constraints if flag_pic.
13157
13158 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13159
13160         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
13161         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
13162         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
13163         condition from TARGET_68881 to TARGET_HARD_FLOAT.
13164
13165 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
13166
13167         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
13168         ColdFire alternatives.
13169         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
13170         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
13171         architectures that support ff1 instruction.
13172
13173 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13174             Julian Brown  <julian@codesourcery.com>
13175
13176         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
13177         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
13178         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
13179         Add commentary.
13180
13181 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13182
13183         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
13184         and return a bool.
13185         (output_move_const_into_data_reg, output_move_simode_const): Delete.
13186         * config/m68k/m68k.c (const_method, const_int_cost): Take a
13187         HOST_WIDE_INT instead of an rtx.
13188         (m68k_rtx_costs): Update call accordingly.
13189         (output_move_const_into_data_reg): Likewise.  Fix formatting.
13190         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
13191         Return a bool.
13192         (output_move_simode_const): Update calls after above changes.
13193         Rework to use automatic variables and predicates like MEM_P.
13194         * config/m68k/m68k.md (pushexthisi_const): Update call to
13195         valid_mov3q_const.
13196
13197 2007-01-19  Dirk Mueller  <dmueller@suse.de>
13198
13199         * tree-ssa-alias.c (perform_var_substitution): Fix typo
13200         in dump_flags test.
13201
13202 2007-01-19  Richard Guenther  <rguenther@suse.de>
13203
13204         * builtins.c (expand_builtin_cexpi): Fall back to expanding
13205         via cexp in case sincos is not available.
13206
13207 2007-01-19  Richard Guenther  <rguenther@suse.de>
13208
13209         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
13210         * defaults.h (TARGET_HAS_SINCOS): Default to off.
13211         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
13212         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
13213         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
13214         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
13215         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
13216         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
13217
13218 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
13219
13220         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
13221         New insn patterns.
13222         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
13223         (atan2xf3): Directly generate RTL pattern.
13224         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
13225         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
13226         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13227         disable patterns for SSE math.
13228         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
13229         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
13230         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13231         disable patterns for SSE math.
13232
13233 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
13234
13235         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
13236
13237 2007-01-18  Roger Sayle  <roger@eyesopen.com>
13238
13239         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
13240         VIEW_CONVERT_EXPR to the same type as it's operand.
13241
13242 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
13243
13244         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
13245         configured for long double 128.
13246
13247 2007-01-18  Mike Stump  <mrs@apple.com>
13248
13249         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
13250         error.
13251
13252 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
13253
13254         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
13255         type correct.
13256
13257 2007-01-18  Jan Hubicka  <jh@suse.cz>
13258
13259         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
13260         greater than NUM_VOP_FREE_BUCKETS.
13261
13262 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
13263
13264         * tree-ssa-structalias.c: Update comments.
13265         (ptabitmap_obstack): Removed.
13266         (pta_obstack): New.
13267         (oldpta_obstack): Ditto.
13268         (stats): Add a few members.
13269         (struct variable_info): Remove node, complex, address_taken, and
13270         indirect_target members. Add oldsolution member.
13271         (new_var_info): Do not initialize removed members.
13272         (constraint_expr_type): Remove INCLUDES.
13273         (constraint_graph): Add size, implicit_preds, rep,
13274         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
13275         (FIRST_REF_NODE): New macro.
13276         (LAST_REF_NODE): Ditto.
13277         (FIRST_ADDR_NODE): Ditto.
13278         (find): New function.
13279         (unite): Ditto.
13280         (dump_constraint): Do not handle INCLUDES.
13281         (insert_into_complex): Do not insert duplicate constraints.
13282         (condense_varmap_nodes): Renamed and rewritten into ...
13283         (merge_node_constraints): This. Also fix bug in handling of
13284         offseted copy constraints.
13285         (clear_edges_for_node): No longer need to deal with preds at all,
13286         or removing associated preds/succs.
13287         (merge_graph_nodes): Deal with indirect_cycles.
13288         Don't deal with predecessors.
13289         (add_implicit_graph_edge): New function.
13290         (add_pred_graph_edge): Ditto.
13291         (add_graph_edge): Don't deal with predecessors.
13292         (build_constraint_graph): Removed.
13293         (build_pred_graph): New function.
13294         (build_succ_graph): Ditto.
13295         (struct scc_info): Removed in_component. Added roots, dfs, and
13296         node_mapping. Remove visited_index, unification_queue.
13297         (scc_visit): Deal with union-find we do now.
13298         Deal with cycles with REF nodes.
13299         (collapse_nodes): Renamed and rewritten to ...
13300         (unify_nodes): This.
13301         (process_unification_queue): Removed.
13302         (topo_visit): Cleanup
13303         (do_da_constraint): Use find.
13304         (do_sd_constraint): Ditto.
13305         (do_ds_constraint): Ditto.
13306         (do_complex_constraint): Ditto.
13307         (init_scc_info): Update for removed and added members.
13308         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
13309         (find_indirect_cycles): This.
13310         (equivalence_class): New variable.
13311         (label_visit): New function.
13312         (perform_variable_substitution): Rewritten.
13313         (free_var_substitution_info): New function.
13314         (find_equivalent_node): Ditto.
13315         (move_complex_constraints): Ditto.
13316         (eliminate_indirect_cycles): Ditto.
13317         (solve_graph): Only propagate changed bits.
13318         Use indirect cycle elimination.
13319         Use find.
13320         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
13321         (tree_id_eq): Renamed to ...
13322         (tree_vi_eq): This. Update for member change
13323         (insert_id_for_tree): Renamed and rewritten to ...
13324         (insert_vi_for_tree): This.
13325         (lookup_id_for_tree): Renamed and rewritten to ...
13326         (lookup_vi_for_tree): This.
13327         (get_id_for_tree): Renamed and rewritten to ...
13328         (get_vi_for_tree): Ditto.
13329         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
13330         (process_constraint): Don't handle INCLUDES.
13331         Remove special ADDRESSOF case.
13332         (find_func_aliases): Rewrite to use vi functions instead of id
13333         ones.
13334         (create_function_info_for): Ditto.
13335         (create_variable_info_for): Ditto.
13336         (intra_create_variable_infos): Ditto.
13337         (merge_smts_into): Ditto.
13338         (find_what_p_points_to): Ditto.
13339         (init_base_vars): Ditto.
13340         (init_alias_vars): Ditto.
13341         (remove_preds_and_fake_succs): New function.
13342         (dump_sa_points_to_info): Dump new stats.
13343         (dump_solution_for_var): Use find.
13344         (set_used_smts): Fix formatting.
13345         (compute_points_to_sets): Updated for new functions.
13346         (ipa_pta_execute): Ditto.
13347
13348 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13349             Richard Sandiford  <richard@codesourcery.com>
13350
13351         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
13352         parallels.
13353         * calls.c (expand_call): If the return value is a PARALLEL,
13354         extract its first member.
13355         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
13356         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
13357         use FUNCTION_EXTRA_EPILOGUE.
13358         (m68k_function_value): Return a PARALLEL if the return value
13359         is of a pointer type.
13360         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
13361         (FUNCTION_EXTRA_EPILOGUE): Remove.
13362         * config/m68k/m68k.md (D0_REG): New constant.
13363
13364 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13365
13366         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
13367         output a NOP for empty epilogues.
13368
13369 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13370
13371         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
13372         before function.  Extend register save check to include all
13373         registers, not just integer ones.
13374
13375 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13376
13377         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
13378         (m68k_use_return_insn): ...this.
13379         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
13380         * config/m68k/m68k.c (use_return_insn): Rename to...
13381         (m68k_use_return_insn): ...this.
13382         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
13383         of USE_RETURN_INSN.
13384
13385 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13386
13387         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
13388         nearest even, fix denormal rounding overflow.
13389
13390 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13391
13392         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
13393         f%$smove and f%$move.
13394         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
13395         (extendsfdf2_cf): Use fdmove instead of f%&move.
13396         (truncdfsf2_cf): Use fsmove instead of f%$smove.
13397         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
13398
13399 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13400
13401         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
13402         GPR<-GPR moves.
13403
13404 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13405
13406         * real.h (real_format): Add a canonical_nan_lsbs_set field.
13407         (coldfire_single_format): Declare.
13408         (coldfire_double_format): Likewise.
13409         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
13410         of qnan_msb_set to determine the lower bits of a canonical
13411         NaN significand.
13412         (encode_ieee_double): Likewise.
13413         (encode_ieee_quad): Likewise.
13414         (ieee_single_format): Initialize canonical_nan_lsbs_set.
13415         (mips_single_format): Likewise.
13416         (ieee_double_format): Likewise.
13417         (mips_double_format): Likewise.
13418         (ieee_extended_motorola_format): Likewise.
13419         (ieee_extended_intel_96_format): Likewise.
13420         (ieee_extended_intel_128_format): Likewise.
13421         (ieee_extended_intel_96_round_53_format): Likewise.
13422         (ibm_extended_format): Likewise.
13423         (mips_extended_format): Likewise.
13424         (ieee_quad_format): Likewise.
13425         (mips_quad_format): Likewise.
13426         (vax_f_format): Likewise.
13427         (vax_d_format): Likewise.
13428         (vax_g_format): Likewise.
13429         (i370_single_format): Likewise.
13430         (i370_double_format): Likewise.
13431         (decimal_single_format): Likewise.
13432         (decimal_double_format): Likewise.
13433         (decimal_quad_format): Likewise.
13434         (c4x_single_format): Likewise.
13435         (c4x_extended_format): Likewise.
13436         (real_internal_format): Likewise.
13437         (coldfire_single_format): New real_format.
13438         (coldfire_double_format): Likewise.
13439         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
13440         canonical_nan_lsbs_set.
13441         (pdp11_d_format): Likewise.
13442         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
13443         if TARGET_COLDFIRE_CPU.
13444
13445 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13446
13447         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
13448         (output_call, m68k_legitimize_call_address): Declare.
13449         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
13450         parenthesees.  Add support for a 'W' constraint.
13451         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
13452         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
13453         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
13454         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
13455         variables.
13456         (override_options): Initialize them.  Do not set flag_no_function_cse
13457         for TARGET_ID_SHARED_LIBRARY.
13458         (m68k_output_pic_call): Delete.
13459         (m68k_legitimize_call_address): New function.
13460         (print_operand): Remove the %o prefix.  Handle the %p prefix.
13461         (output_call): New function.
13462         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
13463         target address from the GOT if symbolic jumps are not allowed.
13464         * config/m68k/m68k.md (call, general_operand): Do not set
13465         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
13466         Merge separate flag_pic and !flag_pic define_insns into...
13467         (*call, *call_value): ...these new patterns.  Match the address
13468         rather than the containing MEM and require it to be a call_operand.
13469         Use output_call to generate the asm template.
13470         * config/m68k/predicates.md (const_call_operand): New predicate.
13471         (call_operand): Likewise.
13472
13473 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13474
13475         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
13476         (STACK_GROWS_DOWNWARD): Define to 1.
13477         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
13478         comments, emphasizing that these values are only defaults.
13479         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
13480         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
13481
13482 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13483
13484         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
13485
13486 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13487             Richard Sandiford  <richard@codesourcery.com>
13488
13489         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
13490         (FP_REGNO_P): New macros.
13491         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
13492         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
13493         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
13494         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
13495
13496 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13497
13498         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13499         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
13500         to $tmake_file.
13501         * config/m68k/t-floatlib: New file, extracting common code from...
13502         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
13503         * config/m68k/t-uclinux: Here.
13504         * config/m68k/fpgnulib.c: Do not compile extendeed precision
13505         routines on ColdFire targets.
13506
13507 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13508
13509         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13510         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
13511         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
13512         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
13513         explicitly set MOTOROLA to 1.
13514         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
13515
13516 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13517             Nathan Sidwell  <nathan@codesourcery.com>
13518
13519         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
13520         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
13521         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
13522         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
13523         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
13524         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
13525         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
13526         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
13527         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
13528         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
13529         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
13530         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
13531         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
13532         (DBX_REGISTER_NUMBER): Delete.
13533         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
13534         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
13535         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
13536
13537 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13538
13539         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
13540         * config/flat.h: New file.
13541         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
13542         OBJECT_FORMAT_FLAT.
13543         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
13544         indirect references for -msep-data or -mid-shared-library.
13545         Do not use PC-relative code addresses either.
13546         * config/m68k/m68k.c (override_options): Restrict -fPIC error
13547         to -mpcrel.
13548         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
13549         for shared libraries and crt1.o for executables.  Use crti.o and
13550         crtbegin.o.
13551         (ENDFILE_SPEC): Use crtend.o and crtn.o.
13552         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
13553         Do not add -elf2flt or -shared-lib-id options here.
13554         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
13555         Pass -shared-lib-id if -mid-shared-library, taking the library
13556         identifier from -mshared-library-id if given, otherwise
13557         defaulting to 0.
13558         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
13559         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
13560         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
13561         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
13562         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
13563         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
13564         and crtend.o.
13565         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
13566         jump sequence for ISA A and ISA A+.
13567         (PICJUMP): Likewise.
13568
13569 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13570
13571         * config.gcc (m68k-*-uclinux*): Base the port on the common
13572         and m68k GNU/Linux files rather than on the generic ELF ones.
13573         * config/m68k/uclinux.h (TARGET_VERSION): Override.
13574         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
13575
13576 2007-01-18  Julian Brown  <julian@codesourcery.com>
13577             Richard Sandiford  <richard@codesourcery.com>
13578
13579         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
13580         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
13581         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
13582         before redefining.
13583         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
13584         80 unconditionally.
13585         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
13586
13587 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13588
13589         * doc/install.texi: Document m68k-uclinuxoldabi.
13590         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
13591         * config/m68k/uclinux-oldabi.h: New file, copied from
13592         config/m68k/uclinux.h.
13593
13594 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
13595
13596         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
13597         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
13598         (m32r_compute_frame_size): Use unsigned for regno.
13599         (m32r_reload_lr): Use gen_frame_mem.
13600         (pop): New.
13601         (m32r_output_function_epilogue): Don't output the function epilogue
13602         textually here.
13603         (m32r_expand_epilogue): New.
13604         (direct_return): Return false if the function has the interrupt
13605         attribute.
13606         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
13607         * config/m32r/m32r.md (epilogue): New expander.
13608         (return_lr, return_rte): New insns.
13609         (return): Make it expander.
13610         (return_normal): New expander.
13611
13612 2007-01-18  Josh Conner  <jconner@apple.com>
13613
13614         PR target/30485
13615         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
13616         support for UNLE, UNLT, UNGE, and UNGT.
13617
13618 2007-01-18  Jan Hubicka  <jh@suse.cz>
13619
13620         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
13621         * tree-tailcall (add_virtual_phis): Likewise.
13622         (optimize_tail_call): Return TODOs.
13623         (execute_tail_calls): Return TODOs.
13624         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
13625         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
13626         changed.
13627         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
13628         Cleanup cfg using TODO.
13629         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
13630         * passes.c (execute_function_todo): When cleanup did something, remove
13631         unused locals.
13632         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
13633         (make_edges): Don't cleanup_cfg.
13634
13635 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
13636
13637         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
13638         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
13639         operate on the top of stack.
13640         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
13641         register handling of instructions that output to the second
13642         stack slot.
13643         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
13644         (move_for_stack_reg): Special-case check for dead destination
13645         stack slot for constant load of 1.0 inside UNSPEC_TAN.
13646
13647         * config/i386/i386.md (UNSPEC_TAN): New constant.
13648         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
13649         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
13650         to correctly model move of constant 1.0 to top stack slot.
13651         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
13652         (unnamed peephole2 pattern): Remove corresponding peephole2
13653         pattern that optimizes tan insn and loading of constant 1.0.
13654         (tanxf2): Use fptanxf4_i387.
13655         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
13656         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
13657         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13658         disable patterns for SSE math.
13659         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
13660         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
13661
13662 2007-01-18  Dirk Mueller  <dmueller@suse.de>
13663             Richard Guenther <rguenther@suse.de>
13664
13665         PR diagnostic/8268
13666         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
13667         * common.opt (Warray-bounds): Add new warning option.
13668         * c-opts.c (c_common_handle_option): Define -Warray-bounds
13669         if -Wall is given.
13670         * Makefile.in: make tree-vrp.o depend on toplev.h
13671         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
13672         is enabled.
13673         (check_array_refs, check_array_bounds, check_array_ref): New.
13674
13675 2007-01-18  Jan Hubicka  <jh@suse.cz>
13676
13677         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
13678         (execute_ssa_ccp): Return flags conditionally.
13679         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
13680         changed.
13681         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
13682
13683 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
13684
13685         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
13686         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
13687
13688         * Makefile.c (GTFILES): Add cfglayout.h.
13689         * gengtype.c (open_base_files): Likewise.
13690         * cfglayout.c (cfg_layout_function_footer,
13691         cfg_layout_function_header) Reindent to make gengtype happy.
13692         * cfglayout.h (cfg_layout_function_footer,
13693         cfg_layout_function_header): Add GTY(()) marker.
13694
13695         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
13696
13697 2007-01-18  Ben Elliston  <bje@au.ibm.com>
13698
13699         * genautomata.c (write_automata): Include xstrerror output in the
13700         error message if writing the DFA description file fails.
13701
13702 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
13703
13704         * config/mips/mips-protos.h (mips_output_external): Make it
13705         return void.
13706         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
13707         * config/mips/mips.c (irix_output_external_libcall): Likewise.
13708         (extern_list): Likewise.
13709         (extern_head): Likewise.
13710         (TARGET_ASM_FILE_END): Likewise.
13711         (mips_file_end): Likewise.
13712         (mips_output_external): Rewritten.
13713
13714 2007-01-18  Ben Elliston  <bje@au.ibm.com>
13715
13716         * genpreds.c (write_insn_preds_c): Only write out the function
13717         body for regclass_for_constraint if we have register constraints.
13718
13719 2007-01-17  Tom Tromey  <tromey@redhat.com>
13720
13721         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
13722         * doc/install.texi (Testing): Use sourceware.org.
13723         (Binaries): Likewise.
13724         (Specific): Likewise.
13725         * doc/contrib.texi (Contributors): Use sourceware.org.
13726
13727 2007-01-17  Anatoly Sokolov <aesok@post.ru>
13728
13729         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
13730         (AVR_ENHANCED): Rename to ...
13731         (AVR_HAVE_MUL): ... new.
13732         (avr_enhanced_p): Rename to ...
13733         (avr_have_mul_p): ... new.
13734         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
13735         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
13736         * config/avr/avr.c (avr_enhanced_p): Rename to ...
13737         (avr_have_mul_p): ... new.
13738         (base_arch_s): Rename 'enhanced' to 'have_mul'.
13739         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
13740         'avr_enhanced_p' and 'enhanced'.
13741         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
13742         AVR_HAVE_MUL instead of AVR_ENHANCED.
13743         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
13744         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
13745         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
13746         instead of AVR_ENHANCED.
13747         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
13748         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
13749         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
13750
13751 2007-01-17  Ian Lance Taylor  <iant@google.com>
13752
13753         * vec.h (VEC_reserve_exact): Define.
13754         (vec_gc_p_reserve_exact): Declare.
13755         (vec_gc_o_reserve_exact): Declare.
13756         (vec_heap_p_reserve_exact): Declare.
13757         (vec_heap_o_reserve_exact): Declare.
13758         (VEC_OP (T,A,reserve_exact)): New static inline function, three
13759         versions.
13760         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
13761         negative parameter.
13762         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
13763         (VEC_OP (T,A,copy)) [all versions]: Likewise.
13764         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
13765         * vec.c (calculate_allocation): Add exact parameter.  Change all
13766         callers.
13767         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
13768         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
13769         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
13770         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
13771         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
13772         (vec_heap_p_reserve_exact): New function.
13773         (vec_heap_o_reserve_exact): New function.
13774
13775 2007-01-17  Jan Hubicka  <jh@suse.cz>
13776
13777         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
13778
13779 2007-01-17  Eric Christopher  <echristo@apple.com>
13780
13781         * config.gcc: Support core2 processor.
13782
13783 2007-01-16  Jan Hubicka  <jh@suse.cz>
13784
13785         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
13786         the names, just unlink the chain so we don't crash on dangling pointers
13787         to dead SSA names.
13788
13789 2007-01-16  Jan Hubicka  <jh@suse.cz>
13790
13791         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
13792         * tree-pass.h: Reorder to make IPA passes appear toegher.
13793         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
13794         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
13795         parameters, do not call early inliner.
13796         * ipa-inline.c: Update comments.  Include tree-flow.h
13797         (cgraph_decide_inlining): Do not compute inlining parameters.
13798         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
13799         be called with function context set up.
13800         (pass_ipa_inline): Remove unreachable functions before pass.
13801         (cgraph_early_inlining): Simplify assuming to be called from the
13802         PM as local pass.
13803         (pass_early_inline): New pass.
13804         (cgraph_gate_ipa_early_inlining): New gate.
13805         (pass_ipa_early_inline): Turn into simple wrapper.
13806         (compute_inline_parameters): New function.
13807         (gate_inline_passes): New gate.
13808         (pass_inline_parameters): New pass.
13809         (apply_inline): Move here from tree-optimize.c
13810         (pass_apply_inline): New pass.
13811         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
13812         transforming.
13813         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
13814         doing them by hand.
13815         (tree_function_versioning): Do not allocate dummy struct function.
13816         * tree-inline.h (optimize_inline_calls): Update prototype.
13817         * tree-optimize.c (execute_fixup_cfg): Export.
13818         (pass_fixup_cfg): Remove
13819         (tree_rest_of_compilation): Do not apply inlines.
13820         * tree-flow.h (execute_fixup_cfg): Declare.
13821         * Makefile.in (gt-passes.c): New.
13822         * passes.c: Include gt-passes.h
13823         (init_optimization_passes): New passes.
13824         (nnodes, order): New static vars.
13825         (do_per_function_toporder): New function.
13826         (execute_one_pass): Dump current pass here.
13827         (execute_ipa_pass_list): Don't dump current pass here.
13828
13829 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
13830
13831         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
13832         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
13833
13834 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
13835
13836         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
13837         (strong_alias): Define.
13838         (__gcc_qmul): Provide non-FMA for soft-float.
13839         (__gcc_qdiv): Same.
13840         (__gcc_qneg): New.
13841         (__gcc_qeq): New.
13842         (__gcc_qle): New.
13843         (__gcc_qge): New.
13844         (__gcc_qunord): New.
13845         (__gcc_stoq): New.
13846         (__gcc_dtoq): New.
13847         (__gcc_qtos): New.
13848         (__gcc_qtod): New.
13849         (__gcc_qtoi): New.
13850         (__gcc_qtou): New.
13851         (__gcc_itoq): New.
13852         (__gcc_utoq): New.
13853         (fmsub): New.
13854         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
13855         soft-float functions.
13856         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
13857         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
13858         about long double soft float.
13859
13860 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
13861             Tehila Meyzels  <tehila@il.ibm.com>
13862
13863         * tree-vectorizer.h (is_pattern_stmt_p): New.
13864         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
13865         formatting (tabs instead of spaces). Cleanup and clarify setting
13866         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
13867         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
13868         (vectorizable_type_demotion): Check that types are integral.
13869         (vectorizable_type_promotion): Likewise.
13870         (vectorizable_store): Fix typo.  Eliminate new-line at end of
13871         comments.
13872
13873 2007-01-16  Jan Hubicka  <jh@suse.cz>
13874
13875         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
13876         cgraph edges too.
13877
13878 2007-01-15  Eric Christopher  <echristo@apple.com>
13879
13880         * ifcvt.c: Include vec.h, vecprim.h.
13881         (check_cond_move_block): New argument regs.
13882         Reorganize. Add registers used to regs.
13883         (cond_move_process_if_block): Use regs set above as
13884         loop bounds.
13885
13886 2007-01-15  Eric Christopher  <echristo@apple.com>
13887
13888         * config/darwin.h: Update copyright.
13889         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
13890         (LINK_COMMAND_SPEC): Add -u.
13891         (LINK_SPEC): Fix umbrella for above.
13892
13893 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
13894
13895         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
13896         glibc CVS.
13897
13898 2007-01-15  Tom Tromey  <tromey@redhat.com>
13899
13900         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
13901         * doc/install.texi (Testing): Don't mention jacks.
13902         (Configuration): Document --enable-java-maintainer-mode.  Move
13903         --with-java-home to libgcj-specific section.  Document
13904         --with-ecj-jar.
13905         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
13906
13907 2007-01-15  Jan Hubicka  <jh@suse.cz>
13908
13909         * tree-ssa-dce.c (DCE_TODOs): New.
13910         (propagate_necessity): Return if something changed.
13911         (eliminate_unnecessary_stmts): Likewise.
13912         (perform_tree_ssa_dce): Return TODO flags when needed.
13913         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
13914
13915 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
13916
13917         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
13918         (fyl2x_extend<mode>xf3_i387): New insn pattern.
13919         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
13920         patterns using X87MODEF12 mode macro.  Extend operand 1
13921         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
13922         (log10<mode>2): Ditto.
13923         (log2<mode>2): Ditto.
13924         (log1p<mode>2): Ditto.
13925         (logb<mode>2): Ditto.
13926         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
13927         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
13928         (*fxtractxf3_i387): Rename from *fxtractxf3.
13929         (fxtract_extend<mode>xf3_i387): New insn pattern.
13930         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
13931         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
13932         and gen_fyl2xxf3_i387().
13933
13934 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
13935
13936         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
13937         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
13938         get_loop_exit_edges.  Changed return type to bool.
13939         * cfgloop.h (fix_loop_placement): Declaration removed.
13940
13941 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
13942
13943         * param.h (MIN_VECT_LOOP_BOUND): New.
13944         * params.def (MIN_VECT_LOOP_BOUND): New.
13945         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
13946         argument - minimum threshold for number of iterations.
13947         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
13948         argument to declaration.
13949         * tree-vect-analyze.c (vect_analyze_operations): Check value of
13950         MIN_VECT_LOOP_BOUND.
13951         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
13952         slpeel_tree_peel_loop_to_edge with additional argument.
13953         (vect_do_peeling_for_alignment): Likewise.
13954         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
13955
13956 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
13957
13958         PR target/30413
13959         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
13960         operands of size 1.
13961
13962 2007-01-14  Jan Hubicka  <jh@suse.cz>
13963
13964         * tree-dfa.c (remove_referenced_var): New function.
13965         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
13966         prune referenced vars list too.
13967         * tree-flow.h (remove_referenced_var): Declare.
13968
13969 2007-01-14  Jan Hubicka  <jh@suse.cz>
13970
13971         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
13972         separately.
13973         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
13974         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
13975         * except.h (verify_eh_throw_table_statements): Kill prototype.
13976         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
13977         into call exrepssions.
13978         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
13979         eh trhow verifier.
13980         * tree-cfg.c: Include pointer-set.h.
13981         (verify_node_sharing): Work on pointer set.
13982         (verify_eh_throw_stmt_node): New.
13983         (verify_stmts): Use pointers sets, verify throw_stmt.
13984
13985 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
13986
13987         * ipa-reference.c (analyze_function): Consider also addresses taken
13988         in phi nodes.
13989
13990 2007-01-12  Roger Sayle  <roger@eyesopen.com>
13991
13992         * c-typeck.c (null_pointer_constant_p): Replace use of
13993         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13994         (build_c_cast): Likewise.
13995
13996 2007-01-12  Roger Sayle  <roger@eyesopen.com>
13997
13998         * tree.h (force_fit_type_double): Remove unused final argument.
13999         * c-common.c (constant_expression_warning): Replace use of
14000         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
14001         (convert_and_check): Likewise.
14002         (shorten_compare): Update call to force_fit_type_double.
14003         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
14004         * convert.c (convert_to_pointer): Update call to
14005         force_fit_type_double.
14006         * fold-const.c (force_fit_type_double): Remove overflowed_const
14007         argument.
14008         (int_const_binop, fold_convert_const_int_from_int,
14009         fold_convert_const_int_from_real, fold_div_compare,
14010         fold_sign_changed_comparison, fold_unary, fold_negate_const,
14011         fold_abs_const, fold_not_const): Remove the final argument from
14012         calls to force_fit_type_double.
14013
14014 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
14015
14016         * configure.ac: Set insn to "nop" for spu-*-* also.
14017         * configure: Regenerate.
14018
14019 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
14020
14021         * builtins.def : Add BUILT_IN_FREE.
14022
14023 2007-01-12  Jan Hubicka  <jh@suse.cz>
14024
14025         PR tree-optimization/30443
14026         * tree-inline.c (tree_function_versioning): Do not optimize when
14027         cloning for inlining.
14028
14029 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
14030
14031         * doc/loop.texi: Document recording of loop exits.
14032         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
14033         (update_single_exits_after_duplication,
14034         update_single_exit_for_duplicated_loop,
14035         update_single_exit_for_duplicated_loops): Removed.
14036         (duplicate_loop_to_header_edge): Do not call
14037         update_single_exits_after_duplication and
14038         update_single_exit_for_duplicated_loops.
14039         (loop_version): Do not update single_exit information.
14040         (fix_loop_structure): Use record_loop_exits instead of
14041         mark_single_exit_loops.
14042         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
14043         the lists of loop exits.
14044         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
14045         split_edge, merge_blocks): Update the lists of loop exits.
14046         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
14047         loop_optimizer_init.
14048         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
14049         of mark_single_exit_loops.
14050         (loop_optimizer_finalize): Call release_recorded_exits.
14051         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
14052         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
14053         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
14054         update single exit information.
14055         * lambda-code.c (perfect_nestify): Ditto.
14056         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
14057         (mark_single_exit_loops): Removed.
14058         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
14059         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
14060         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
14061         functions.
14062         (get_loop_exit_edges, single_exit): Use recorded exit lists.
14063         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
14064         (verify_loop_structure): Verify consistency of the exit lists.
14065         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
14066         (set_single_exit): Removed.
14067         * cfgloop.h (struct loop_exit): New function.
14068         (struct loop): single_exit_ field replaced by exits field.
14069         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
14070         (struct loops): Added exits hash.
14071         (mark_single_exit_loops, set_single_exit): Declaration removed.
14072         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
14073
14074 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14075
14076         * doc/invoke.texi: Avoid use of @headitem.
14077
14078 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14079
14080         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
14081
14082 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14083
14084         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
14085         list of targets.
14086
14087 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14088             Richard Sandiford  <richard@codesourcery.com>
14089
14090         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
14091         * config/m68k/m68k.opt: Resort options.
14092         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
14093
14094 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14095             Richard Sandiford  <richard@codesourcery.com>
14096
14097         * doc/invoke.texi: Document the macros that are defined by
14098         m68k's -mtune and -mhard-float options.
14099         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
14100         (m68k_cpp_cpu_family): Likewise.
14101         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
14102         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
14103         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
14104         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
14105         (m68k_cpp_cpu_family): Likewise.
14106
14107 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14108
14109         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
14110         macros besides mc68000 as tuning macros.  Use a switch statement
14111         to set them and mcpu32.
14112
14113 2007-01-12  Julian Brown  <julian@codesourcery.com>
14114
14115         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
14116         (TARGET_68040_ONLY): Rename to...
14117         (TARGET_68040): ...this.
14118         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
14119         * config/m68k/m68k.md: Likewise.
14120
14121 2007-01-12  Julian Brown  <julian@codesourcery.com>
14122             Nathan Sidwell  <nathan@codesourcery.com>
14123             Richard Sandiford  <richard@codesourcery.com>
14124
14125         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
14126         the -mcpu= argument associated with the --with-cpu setting.
14127         Define M68K_DEFAULT_TUNE to the default -mtune= option,
14128         if different from the one implied by the -mcpu setting.
14129         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
14130         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
14131         * doc/invoke.texi: Mention ColdFire in the introduction to the
14132         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
14133         -mno-div and -mhard-float options.  Make -m68881 a synonym for
14134         -mhard-float.  Document the previously-undocumented -m5206e,
14135         -m528x, -m5307 and -m5407 options.  Tweak the existing option
14136         documentation for consistency.
14137         * doc/install.texi: Mention new --with-cpu arguments.
14138         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
14139         default CPU if neither -mcpu nor -march are specified.
14140         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
14141         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
14142         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
14143         using m68k_tune to decide between families that implement the
14144         same ISA.  Use m68k_tune to set __mcfv4e__.
14145         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
14146         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
14147         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
14148         (FL_ISA_C, FL_ISA_MMU): New macros.
14149         (MASK_COLDFIRE): Delete.
14150         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
14151         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
14152         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
14153         (TARGET_HARD_FLOAT): Do not define here.
14154         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
14155         (TUNE_68000): New macro.
14156         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
14157         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
14158         (TUNE_CFV2): Redefine in terms of m68k_tune.
14159         (uarch_type, target_device, fpu_type): New enums.
14160         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
14161         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
14162         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
14163         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
14164         (FL_FOR_isa_c): New macros.
14165         (m68k_isa): New enum.
14166         (m68k_target_selection): New structure.
14167         (all_devices, all_isas, all_microarchs): New tables.
14168         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
14169         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
14170         (MASK_ALL_CPU_BITS): Delete.
14171         (m68k_find_selection): New function.
14172         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
14173         Map the legacy target options to a combination of the new ones.
14174         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
14175         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
14176         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
14177         settings.
14178         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
14179         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
14180         properties.
14181         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
14182         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
14183         * config/m68k/m68k-devices.def: New file.
14184
14185 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14186             Nathan Sidwell  <nathan@codesourcery.com>
14187
14188         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
14189         (SUBTARGET_EXTRA_SPECS): New macros.
14190         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
14191         use %(asm_cpu_spec) instead.
14192         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
14193         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
14194         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
14195         (EXTRA_SPECS): Rename to...
14196         (SUBTARGET_EXTRA_SPECS): ...this.
14197
14198 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14199             Richard Sandiford  <richard@codesourcery.com>
14200             Julian Brown  <julian@codesourcery.com>
14201
14202         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
14203         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
14204         to the configuration's default CPU.
14205         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
14206         Remove default masks.
14207         (m680[012]0-*-*): Set the default with_cpu to the first part of
14208         the target name.
14209         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
14210         (m68k*-*-linux): Extend the --with-cpu handling to...
14211         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
14212         and m68010.  Don't set target_cpu_default2.
14213         * doc/install.texi: Document --with-cpu for m68k.
14214         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
14215         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
14216         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
14217         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
14218         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
14219         (ASM_SPEC): Remove use of %(asm_cpu_default).
14220         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
14221         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
14222         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
14223         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
14224         __HAVE_FPU__ if TARGET_HARD_FLOAT.
14225         (TARGET_DEFAULT): Delete.
14226         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
14227         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
14228         (CPP_CPU_SPEC): Delete.
14229         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
14230         the appropriate string.
14231         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
14232         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
14233         (ASM_SPEC): Don't use %(asm_default_spec).
14234         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
14235         TARGET_DEFAULT and add MASK_68881.
14236         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
14237
14238 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14239
14240         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
14241         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
14242         MASK_68010 alongside MASK_68020.
14243         * doc/invoke.texi: Document -m68010.
14244         * config/m68k/m68k.opt (m68010): New.
14245         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
14246         if TUNE_68010.
14247         (TUNE_68010): New macro.
14248         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
14249         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
14250         (M68K_CPU_m68332): Add MASK_68010.
14251         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
14252         fallback definition.
14253         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
14254         defines.
14255         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
14256         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
14257         to all entries that use MASK_68020.
14258         (output_move_simode_const, output_move_himode, output_move_qimode)
14259         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
14260         instead of TARGET_68020 to select clr behavior.  Remove comment
14261         about there being no TARGET_68010.
14262         * config/m68k/m68k.md: Likewise throughout.
14263
14264 2007-01-12  Julian Brown  <julian@codesourcery.com>
14265
14266         * config/m68k/m68k.h (TARGET_ISAB): New macro.
14267         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
14268         * config/m68k/m68k.md: Likewise.
14269
14270 2007-01-12  Julian Brown  <julian@codesourcery.com>
14271
14272         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
14273         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
14274
14275 2007-01-12  Julian Brown  <julian@codesourcery.com>
14276
14277         * config/m68k/m68k.h (TUNE_68040_60): New macro.
14278         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
14279         * config/m68k/m68k.md: Likewise.
14280
14281 2007-01-12  Julian Brown  <julian@codesourcery.com>
14282             Richard Sandiford  <richard@codesourcery.com>
14283
14284         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
14285         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
14286         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
14287         TARGET_CPU32.
14288         (TARGET_CPU32): Rename to...
14289         (TUNE_CPU32): ...this.
14290         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
14291         (TUNE_CFV2): New macros.
14292         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
14293         remove conditions that are implied by TARGET_68020.
14294         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
14295         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
14296         (m68k_output_function_epilogue): Likewise.
14297         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
14298         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
14299         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
14300         non-68000 timings.  Refactor multiplication and division costs.
14301         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
14302         TUNE_CPU32 instead of TARGET_CPU32.
14303         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
14304         and TUNE_68060 instead of TARGET_68060.
14305         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
14306         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
14307         TARGET_CPU32.
14308         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
14309         && !TARGET_COLDFIRE" to choose between moveq and clr.
14310         Likewise in the unnamed movsf pattern.
14311         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
14312         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
14313         ashiftrt pattern.
14314
14315 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14316
14317         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
14318         of tabbing before backslashes.
14319
14320 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14321
14322         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
14323         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
14324         (ASM_OUTPUT_INTERNAL_LABEL): Define.
14325
14326 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
14327
14328         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
14329         find_interesting_uses_cond.
14330         (find_interesting_uses_cond): Use extract_cond_operands.
14331         (rewrite_use_compare): Use extract_cond_operands and
14332         force_gimple_operand_bsi.  Do not call update_stmt.
14333         (determine_use_iv_cost_condition): Use extract_cond_operands.
14334         Return cheaper of using original bound and changing the exit bound.
14335
14336 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
14337
14338         PR tree-optimization/29516
14339         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
14340         most_expensive_mult_to_index, addr_to_parts,
14341         create_mem_ref, maybe_fold_tmr): Make the type of
14342         fields of TARGET_MEM_REF sizetype.
14343         (move_fixed_address_to_symbol, move_pointer_to_base):
14344         New functions.
14345         * tree.def (TARGET_MEM_REF): Add comment on types of
14346         the operands.
14347
14348 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
14349
14350         * c-common.c (vector_types_convertible_p): Treat opaque types as
14351         always convertible if they have the same size, but not otherwise.
14352
14353 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
14354
14355         * ifcvt.c (struct noce_if_info): Add comments to the fields.
14356         Remove the b_unconditional field.
14357         (noce_try_sign_mask): Do not look at b_unconditional.
14358         (noce_process_if_block): Do not use merge_if_blocks.  Update
14359         the CFG here.  Do not set b_unconditional.
14360         (cond_move_process_if_block): Likewise.
14361         (find_cond_trap): Likewise.
14362         (check_cond_move_block): Require simple jump insns at the end
14363         of the basic block.
14364
14365 2007-01-11  Jan Hubicka  <jh@suse.cz>
14366
14367         PR tree-optimization/1046
14368         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
14369         when alias info is not ready.
14370         (pass_tail_recursion): Do not require aliasing.
14371         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
14372         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
14373         * tree-ssa-copy.c (pass_copy_prop): Likewise.
14374         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
14375         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
14376         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
14377         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
14378         before inlining.
14379         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
14380         When aliasing is not build, mark statement as volatile.
14381
14382 2007-01-11  Tom Tromey  <tromey@redhat.com>
14383
14384         PR preprocessor/15185, PR preprocessor/20989:
14385         * doc/cppopts.texi <-MT>: Update description of algorithm for
14386         computing default target.
14387         <-M, -MD>: Reword "basename" text.
14388
14389 2007-01-11  Roger Sayle  <roger@eyesopen.com>
14390
14391         * builtins.c (expand_builtin_pow, expand_builtin_powi,
14392         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
14393         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
14394         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
14395         fold_builtin_bswap, real_constp, fold_builtin_pow,
14396         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
14397         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
14398         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
14399         * convert.c (convert_to_pointer): Likewise.
14400         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
14401         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
14402         const_binop, fold_convert_const_int_from_int,
14403         fold_convert_const_int_from_real,
14404         fold_convert_const_real_from_real, sign_bit_p,
14405         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
14406         fold_sign_changed_comparison, fold_unary, fold_comparison,
14407         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
14408         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
14409         * print-tree.c (print_node_brief, print_node): Likewise.
14410         * stor-layout.c (place_field, layout_type): Likewise.
14411         * tree-chrec.c (keep_cast): Likewise.
14412         * tree.c (build_vector, build_real, build_real_from_int_cst,
14413         build_complex): Likewise.
14414
14415 2007-01-11  Roger Sayle  <roger@eyesopen.com>
14416
14417         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
14418         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
14419
14420 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
14421
14422         * configure.ac (strict1_warn): Rename to strict_warn.
14423         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
14424         cc_set_by_configure, quoted_cc_set_by_configure,
14425         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
14426         all_boot_languages, all_stagestuff): Remove.
14427         (target_list): Remove bootstrap targets.
14428         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
14429         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
14430         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
14431         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
14432         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
14433         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
14434         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
14435         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
14436         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
14437         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
14438         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
14439         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
14440         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
14441         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
14442         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
14443         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
14444         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
14445         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
14446         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
14447         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
14448         (mostlyclean): Adjust.
14449         (clean, distclean): Don't mention bootstrap stuff.
14450         * configure: Regenerate.
14451         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
14452         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
14453         treelang/config-lang.in (stagestuff): Remove.
14454         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
14455         stageprofile, stagefeedback, stagestuff): Remove mention.
14456
14457 2007-01-11  Nick Clifton  <nickc@redhat.com>
14458
14459         * config/mcore/predicates.md (mcore_general_movesrc_operand):
14460         Accept CONSTs.
14461         (mcore_general_movdst_operand): Do not accept CONST_INTs.
14462         (mcore_arith_K_S_operand): Run the test for the S constraint not
14463         the test for the M constraint.
14464         (mcore_addsub_operand): Do not accept integer values that are
14465         larger than 32 bits.
14466         * config/mcore/mcore.md: Remove unused constraints from split.
14467         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
14468         (addsi3): Likewise.
14469         (allocate_stack): Likewise.
14470         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
14471         operands to 32 bits.
14472         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
14473         INTVAL.
14474         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
14475         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
14476         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
14477         mcore_output_bclri, mcore_output_andn, output_inline_const,
14478         mcore_output_move, mcore_output_movedouble): Likewise.
14479         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
14480         (output_inline_const): Likewise.
14481         (output_inline_const): Fix format strings used in sprintf
14482         statements.
14483         * config/mcore/mcore-protos.h: Update prototypes for changed
14484         functions in mcore.c.
14485         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
14486         HOST_WIDE_INT and not int.
14487         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
14488         CONST_OK_FOR_N): Likewise.
14489         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
14490         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
14491         an INTVAL.
14492
14493 2007-01-10  Jan Hubicka  <jh@suse.cz>
14494
14495         * tree-vrp.c (remove_range_assertions): Release defs.
14496         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
14497         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
14498
14499 2007-01-10  Paul Brook  <paul@codesourcery.com>
14500
14501         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
14502         * config/arm/arm.md (mulsi3subsi): New insn.
14503
14504 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
14505
14506         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
14507         (tree_transform_and_unroll_loop): New.
14508         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
14509         Declare.
14510
14511 2007-01-10  Robert Kennedy <jimbob@google.com>
14512
14513         * fold-const.c (fold_comparison): Fold comparisons like (x *
14514         1000 < 0) to (x < 0).
14515
14516 2007-01-10  Ian Lance Taylor  <iant@google.com>
14517
14518         * tree-pretty-print.c (dump_generic_node): Print parentheses when
14519         operands have the same priority.
14520
14521 2007-01-10  Tom Tromey  <tromey@redhat.com>
14522
14523         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
14524         (fold_binary): Likewise.
14525         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
14526         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
14527         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
14528         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
14529         * langhooks.h (struct lang_hooks): Removed field
14530         'can_use_bit_fields_p'.
14531
14532 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
14533
14534         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
14535
14536 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
14537
14538         * function.c (get_last_funcdef_no): New function.
14539         * function.h (get_last_funcdef_no): Declare.
14540         * tree-inline.c (initialize_cfun): Add initialization.
14541         (tree_function_versioning): Cleanup.
14542
14543 2007-01-10  Jan Hubicka  <jh@suse.cz>
14544
14545         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
14546         PHIs.
14547
14548 2007-01-10  Sa Liu  <saliu@de.ibm.com>
14549             Ben Elliston  <bje@au.ibm.com>
14550
14551         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
14552         for SAVE_NONLOCAL and Pmode for any other save level.
14553         * spu-protos.h (spu_restore_stack_block): Declare.
14554         * spu.md (save_stack_block): Remove.
14555         (restore_stack_block): Call spu_restore_stack_block.
14556         * spu.c (spu_restore_stack_block): New function.
14557         (spu_expand_epilogue): Remove old comment.
14558
14559 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
14560
14561         PR tree-optimization/30322
14562         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
14563         (cand_value_at): Return the value as aff_tree.
14564         (may_eliminate_iv): Convert the bound from aff_tree to tree.
14565         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
14566         aff_combination_mult): New functions.
14567         (aff_combination_add): Use aff_combination_add_cst.
14568         (aff_combination_convert): Allow conversions to a wider type.
14569         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
14570         * tree-affine.h (aff_combination_mult): Declare.
14571
14572 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
14573
14574         * doc/tm.texi: Update documentation to reflect reality of exec
14575         and start file search behaviours. Update copyright year.
14576         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
14577         header file directories.
14578
14579 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
14580
14581         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
14582         (*cosxf2): Rename to cosxf2_i387.
14583         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
14584         using X87MODEF12 mode macro. Rename patterns to
14585         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
14586         for SSE math.
14587         (*cosdf2, *cossf2): Ditto.
14588         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
14589         to match extended input operands.
14590         (sincos<mode>3): New expander.
14591         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
14592         insn patterns and corresponding splitters.
14593
14594 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
14595
14596         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
14597         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
14598
14599 2007-01-09  Nicolas Pitre  <nico@cam.org>
14600
14601         PR target/30173
14602         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
14603
14604 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
14605
14606         * target.h (struct gcc_target): New field library_rtti_comdat.
14607         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
14608         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
14609         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
14610         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
14611
14612 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
14613
14614         * doc/invoke.texi (Optimize Options): Correct description of -O0.
14615
14616 2007-01-08  Richard Guenther  <rguenther@suse.de>
14617
14618         * tree.h (force_fit_type_double): Export.
14619         (force_fit_type): Remove.
14620         * fold-const.c (force_fit_type_double): New function.
14621         (force_fit_type): Remove.
14622         (int_const_binop): Use it.
14623         (fold_convert_const_int_from_int): Likewise.
14624         (fold_convert_const_int_from_real): Likewise.
14625         (fold_div_compare): Likewise.
14626         (fold_sign_changed_comparison): Likewise.
14627         (fold_unary): Likewise.
14628         (fold_negate_const): Likewise.
14629         (fold_abs_const): Likewise.
14630         (fold_not_const): Likewise.
14631         * c-common.c (shorten_compare): Use force_fit_type_double.
14632         * convert.c (convert_to_pointer): Likewise.
14633
14634 2007-01-08  Richard Guenther  <rguenther@suse.de>
14635
14636         * tree.h (build_int_cst_wide_type): Export.
14637         * tree.c (build_int_cst_wide_type): New function.
14638         (build_int_cst_wide): Fix comment.
14639         * builtins.c (fold_builtin_object_size): Use build_int_cst
14640         to build -1 or 0 of the correct type.  Use fit_double_type
14641         to check for overflow.
14642         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
14643         to build the mask.
14644         (decode_field_reference): Likewise.
14645         (all_ones_mask_p): Likewise.
14646         (native_interpret_int): Use build_int_cst_wide_type.
14647         (fold_binary): Use build_int_cst_type to build an all-ones
14648         value.
14649         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
14650
14651 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
14652
14653         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
14654
14655 2007-01-09  Ben Elliston  <bje@au.ibm.com>
14656
14657         * genautomata.c (STATS_OPTION): New option.
14658         (stats_flag): New flag.
14659         (gen_automata_option): Handle it.
14660         (initiate_automaton_gen): Ditto.
14661         (write_automata): Output statistics only if stats_flag is
14662         set. Likewise, output time statistics only if time_flag is set.
14663         * doc/md.texi (Processor pipeline description): Document new flag.
14664
14665 2007-01-08  Richard Guenther  <rguenther@suse.de>
14666
14667         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
14668         * tree.c (build_int_cst_type): Likewise.
14669         (size_in_bytes): Don't call force_fit_type on the result.
14670         (int_fits_type_p): Use fit_double_type.
14671         * fold-const.c (fit_double_type): New function.
14672         (force_fit_type): Use it.
14673         * tree.h (fit_double_type): Export.
14674
14675 2007-01-08  Jan Hubicka  <jh@suse.cz>
14676
14677         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
14678         * ipa.c (function_and_variable_visibility): Fix return type.
14679
14680 2007-01-08  Richard Guenther  <rguenther@suse.de>
14681
14682         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
14683         of offset to build the index.
14684         * tree-pretty-print.c (dump_generic_node): Don't build negated
14685         const just for printing.
14686         * c-pretty-print.c (pp_c_integer_constant): Likewise.
14687         * builtins.c (fold_builtin_int_roundingfn): Check if result
14688         fits the type by using force_fit_type and comparing the result.
14689         * predict.c (predict_loops): Use compare_tree_int for comparison.
14690         * tree.c (build_int_cst): Fall back to integer_type_node for
14691         NULL_TREE type.
14692         (build_int_cst_wide): Assert type is non-null.
14693
14694 2007-01-08  Roberto Costa  <roberto.costa@st.com>
14695
14696         * tree-vrp.c (extract_range_from_cond_expr): New.
14697         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
14698         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
14699         as expressions.
14700         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
14701         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
14702         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
14703         used as expressions.
14704         * tree-object-size.c (cond_expr_object_size): New.
14705         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
14706
14707 2007-01-08  Jan Hubicka  <jh@suse.cz>
14708
14709         * tree-ssa-forwprop.c (forward_propagate_into_cond,
14710         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
14711         statement.
14712
14713 2007-01-08  Richard Guenther  <rguenther@suse.de>
14714
14715         PR tree-optimization/23603
14716         * tree-vrp.c (set_value_range_to_truthvalue): New function.
14717         (extract_range_from_binary): Fall back to truthvalue instead of
14718         varying for TRUTH_*_EXPR.
14719         (extract_range_from_comparison): Fall back to truthvalue instead of
14720         varying.
14721         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
14722         if all visited PHI values were constant.
14723
14724 2007-01-08  Jan Hubicka  <jh@suse.cz>
14725
14726         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
14727         (cgraph_analyze_function): break out from ...
14728         (cgraph_finalize_compilation_unit): ... here.
14729         (cgraph_expand_function): Remove forgoten commented out line.
14730         (cgraph_optimize): Analyze functions.
14731
14732 2007-01-08  Jan Hubicka  <jh@suse.cz>
14733
14734         * tree-pas.h (TODO_remove_function): New flag.
14735         (TODO_update*): Renumber.
14736         (pass_ipa_increase_alignment,
14737         pass_ipa_function_and_variable_visibility): New passes.
14738         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
14739         (cgraph_function_and_variable_visibility): Move to ipa.c
14740         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
14741         cgraph_increase_alignment.
14742         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
14743         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
14744         calling tree-inline.
14745         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
14746         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
14747         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
14748         (gate_increase_alignment): New function.
14749         (pass_ipa_increase_alignment): New pass.
14750         * ipa.c: Inline tree-pass.h and timevar.h
14751         (function_and_variable_visibility): Move here from cgraphunit.c
14752         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
14753         * passes.c (init_optimization_passes): Add the two new passes.
14754         (execute_todo): Handle cgraph_remove_functions.
14755
14756 2007-01-08  Nick Clifton  <nickc@redhat.com>
14757
14758         * config/frv/predicates.md (reg_or_0_operand): Accept
14759         CONST_DOUBLEs.
14760
14761 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
14762
14763         * config/bfin/rtems.h, config/bfin/t-rtems: New.
14764         * config.gcc: Add bfin*-rtems*.
14765
14766 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
14767
14768         * c.opt: Add -flax-vector-conversions.
14769         * c-typeck.c (convert_for_assignment): Pass flag to
14770         vector_types_convertible_p to allow emission of note.
14771         (digest_init): Likewise.
14772         * c-opts.c: Handle -flax-vector-conversions.
14773         * c-common.c (flag_lax_vector_conversions): New.
14774         (vector_types_convertible_p): Unless -flax-vector conversions
14775         has been passed, disallow conversions between vectors with
14776         differing numbers of subparts and/or element types.  If such
14777         a conversion is disallowed, possibly emit a note on the first
14778         occasion only to inform the user of -flax-vector-conversions.
14779         The new last argument specifies this.
14780         * c-common.h (flag_lax_vector_conversions): New.
14781         (vector_types_convertible_p): Add extra argument.
14782         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
14783         char_type_node for V*QI type vectors.
14784         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
14785         Update to satisfy new typechecking rules.
14786         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
14787         C and C++ variants.
14788         * doc/invoke.texi (C Dialect Options): Document
14789         -flax-vector-conversions.
14790
14791 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
14792
14793         PR tree-optimization/29877
14794         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
14795         a register variable on the RHS to not be replaceable.
14796
14797 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
14798         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
14799         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
14800         const_simm15, const_pow2, const_npow2): Added.
14801         * config/score/misc.md (insv, extv, extzv, movmemsi,
14802         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
14803         * config/score/score.c (score_address_cost, score_select_cc_mode):
14804         Added.
14805         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
14806         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
14807         Update score_print_operand.
14808         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
14809         Adjust register allocate order and update some macro define.
14810         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
14811         mdx_block_move_straight, mdx_block_move_loop_head,
14812         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
14813         mdx_block_move): Added.
14814         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
14815         mdp_limm): Updated and fix some bug and typo.
14816         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
14817         (movsf, movdf, doloop_end): Added.
14818
14819 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
14820
14821         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
14822         config/arm/thumb2.md: Fix comment typos.
14823         * doc/extend.texi: Fix a typo.
14824
14825 2007-01-07  Eric Christopher  <echristo@apple.com>
14826
14827         * configure.ac: Check for __stack_chk_fail for darwin.
14828         * configure: Regenerate.
14829
14830 2007-01-07  Richard Guenther  <rguenther@suse.de>
14831
14832         * tree-vrp.c (extract_range_from_assert): CSE calls to
14833         compare_values where possible.
14834         (extract_range_from_unary_expr): Likewise.
14835
14836 2007-01-07  Anatoly Sokolov <aesok@post.ru>
14837
14838         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
14839         * config/avr/avr.c (call_insn_operand): Delete function.
14840         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
14841         instead of register number. Use predicates.
14842         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
14843         call_insn_operand): Add.
14844
14845 2007-01-06  Jan Hubicka  <jh@suse.cz>
14846
14847         * tree-pass.h (pass_build_cgraph_edges): Declare.
14848         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
14849         (visited_nodes): Remove.
14850         (cgraph_create_edges): Move to cgraphbuild.c; rename to
14851         build_cgrpah_edges; make visited_nodes local.
14852         (cgraph_process_new_functions): DO not call initialize_inline_failed.
14853         (record_references_in_initializer): Move to cgraphbuild.c
14854         (initialize_inline_failed, rebuild_cgraph_edges,
14855         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
14856         (verify_cgraph_node): Make visited_nodes local.
14857         (cgraph_analyze_function): Do not call cgraph_create_edges and
14858         initialize_inline_failed.
14859         (cgraph_expand_function): Do not call cgraph_lower_function;
14860         assert that function is already lowered.
14861         * Makefile.in (cgraphbuild.o): New.
14862         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
14863         at the end of lowering passes.
14864
14865 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
14866
14867         * ifcvt.c (cond_move_convert_if_block): New function, code
14868         factored out from...
14869         (cond_move_process_if_block): ...here.  Call the new function
14870         on the THEN and ELSE blocks.
14871         (merge_if_block): Do not copy global_live_at_end, merge_blocks
14872         already takes care of this.
14873
14874 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14875
14876         PR c/19978
14877         * tree.h (TREE_OVERFLOW_P): New.
14878         * c-typeck.c (parser_build_unary_op): Warn only if result
14879         overflowed and operands did not.
14880         (parser_build_binary_op): Likewise.
14881         (convert_for_assignment): Remove redundant overflow_warning.
14882         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
14883
14884 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14885
14886         * c-typeck.c (store_init_value): Split over two lines to follow
14887         the GNU coding style.
14888
14889 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
14890
14891         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
14892         __GXX_EXPERIMENTAL_CXX0X__.
14893         * doc/cpp.texi: Same.
14894
14895 2007-01-05  Richard Guenther  <rguenther@suse.de>
14896
14897         PR middle-end/27826
14898         * tree.c (get_narrower): Do not construct COMPONENT_REFs
14899         with mismatched types.  Instead explicitly build a
14900         conversion NOP_EXPR.
14901
14902 2007-01-05  Ian Lance Taylor  <iant@google.com>
14903
14904         * c-common.c (decl_with_nonnull_addr_p): New function.
14905         (c_common_truthvalue_conversion): Call it.
14906         * c-typeck.c (build_binary_op): Likewise.
14907         * c-common.h (decl_with_nonnull_addr_p): Declare.
14908
14909 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
14910
14911         PR c/30360
14912         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
14913         denom against 0.0.
14914
14915 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
14916
14917         * doc/install.texi (Final install): Document the fact that
14918         the GNAT runtime should not be stripped.
14919
14920 2007-01-04  Jan Hubicka  <jh@suse.cz>
14921
14922         * tree-inline.c (fold_marked_statements): Update operand caches
14923         and EH after folding
14924
14925 2007-01-04  Ian Lance Taylor  <iant@google.com>
14926
14927         * c-common.c (check_function_nonnull): Whitespace fix.
14928
14929 2007-01-04  Jan Hubicka  <jh@suse.cz>
14930
14931         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
14932         comitted older version of patch.
14933         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
14934         function, celanup cfg and collect garbage.
14935
14936 2007-01-04  Mike Stump  <mrs@apple.com>
14937
14938         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
14939         (clean): Likewise.
14940
14941 2007-01-04  Eric Christopher  <echristo@apple.com>
14942
14943         * libgcc2.c (__bswapsi2): Use SItype.
14944         (__bswapdi2): Use DItype.
14945         * libgcc2.h: Update for above.
14946
14947 2007-01-04  Paul Brook  <paul@codesourcery.com>
14948
14949         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
14950         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
14951         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
14952         umulsidi3, umulsidi3adddi, smulsi3_highpart,
14953         umulsi3_highpart): Make conditional on !arm_arch6.
14954         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
14955         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
14956         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
14957         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
14958         umulsi3_highpart_v6): New insns.
14959
14960 2007-01-04  Roger Sayle  <roger@eyesopen.com>
14961
14962         * fold-const.c (fold_convert): When casting an expression to void,
14963         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
14964         have a type.  Instead of attempting to build a NOP_EXPR, return
14965         these "special" trees directly.
14966
14967 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
14968
14969         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
14970         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
14971         rs6000_cost->fp not 0 as adjustment for outer NEG.
14972
14973 2007-01-04  Jan Hubicka  <jh@suse.cz>
14974
14975         * cgraph.c (cgraph_release_function_body): New function.
14976         (cgraph_remove_node): Use it.
14977         * cgraph.h (cgraph_release_function_body): Declare.
14978         * cgraphunit.c (cgraph_expand_function): Use it.
14979         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
14980         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
14981         is initialized and while compilation of other function is running.
14982         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
14983         statement CFG annotations from here to ...
14984         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
14985
14986 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
14987
14988         * cfgloop.h (enum li_flags): Make the constants powers of two.
14989
14990 2007-01-04  Jan Hubicka  <jh@suse.cz>
14991
14992         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
14993         set.
14994         (fold_marked_statements): New function.
14995         (optimize_inline_calls, tree_function_versioning): Fold new statements.
14996         * tree-inline.h (copy_body_data): Add statements_to_fold.
14997
14998 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
14999
15000         * config.gcc: Mention libgcc/config.host.
15001         * Makefile.in: Update comments mentioning libgcc.
15002         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
15003         (all.cross, start.encap, rest.encap, rest.cross): Update
15004         dependencies for libgcc move.
15005         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
15006         (clean-target, clean-target-libgcc): Delete.
15007         (srcdirify, GCC_EXTRA_PARTS): New macros.
15008         (libgcc-support, libgcc.mvars): New rules.
15009         (distclean): Remove mention of mklibgcc.
15010         (install): Don't reference INSTALL_LIBGCC.
15011         (install-common): Don't reference EXTRA_PARTS.
15012         (install-libgcc, install-multilib): Delete rules.
15013         * mklibgcc.in: Delete file.
15014         * doc/configfiles.texi: Don't mention mklibgcc.
15015
15016         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
15017         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
15018         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
15019         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
15020         (mklibgcc, ldblspecs): Likewise.
15021
15022         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
15023         (posixpre.def): Use $(T).
15024         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
15025         (SHLIB_SRC, SHLIB_INSTALL): Delete.
15026         (SHLIB_LINK): Make dummy.
15027         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
15028
15029         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
15030
15031         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
15032         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
15033         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
15034         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
15035
15036         * configure.ac (all_outputs): Remove mklibgcc.
15037         * configure: Regenerated.
15038
15039 2007-01-03  Josh Conner  <jconner@apple.com>
15040
15041         PR middle-end/29683
15042         * calls.c (compute_argument_addresses): Set stack and stack_slot
15043         for partial args, too.
15044         (store_one_arg): Use locate.size.constant for the size when
15045         generating a save_area.
15046
15047 2007-01-03  Robert Kennedy <jimbob@google.com>
15048
15049         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
15050         whose definitions are deleted due to basic block merging.
15051
15052 2007-01-03  Paul Brook  <paul@codesourcery.com>
15053
15054         PR target/16634
15055         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
15056         functions.
15057         (use_return_insn): Return 0 for Thumb interrupt functions.
15058         (print_multi_reg): Add rfe argument for IRQ returns.
15059         (arm_output_epilogue): Pop interrupt return address directly into PC.
15060         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
15061
15062 2007-01-03  Paul Brook  <paul@codesourcery.com>
15063
15064         Merge from sourcerygxx-4_1.
15065         * config/arm/thumb2.md: New file.
15066         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
15067         Thumb-2.
15068         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
15069         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
15070         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
15071         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
15072         tables.
15073         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
15074         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
15075         comptibility.
15076         * config/arm/ieee754-sf.S: Ditto.
15077         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
15078         (thumb1_base_register_rtx_p): ... to this.
15079         (thumb_index_register_rtx_p): Rename...
15080         (thumb1_index_register_rtx_p): ... to this.
15081         (thumb_output_function_prologue): Rename...
15082         (thumb1_output_function_prologue): ... to this.
15083         (thumb_legitimate_address_p): Rename...
15084         (thumb1_legitimate_address_p): ... to this.
15085         (thumb_rtx_costs): Rename...
15086         (thumb1_rtx_costs): ... to this.
15087         (thumb_compute_save_reg_mask): Rename...
15088         (thumb1_compute_save_reg_mask): ... to this.
15089         (thumb_final_prescan_insn): Rename...
15090         (thumb1_final_prescan_insn): ... to this.
15091         (thumb_expand_epilogue): Rename...
15092         (thumb1_expand_epilogue): ... to this.
15093         (arm_unwind_emit_stm): Rename...
15094         (arm_unwind_emit_sequence): ... to this.
15095         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
15096         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
15097         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
15098         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
15099         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
15100         thumb2_output_casesi): New functions.
15101         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
15102         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
15103         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
15104         THUMB2_WORK_REGS): Define.
15105         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
15106         arm_condexec_mask, arm_condexec_masklen)): New variables.
15107         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
15108         (arm_override_options): Check new CPU capabilities.
15109         Set new architecture flag variables.
15110         (arm_isr_value): Handle v7m interrupt functions.
15111         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
15112         Thumb-2.
15113         (const_ok_for_arm): Handle Thumb-2 constants.
15114         (arm_gen_constant): Ditto.  Use movw when available.
15115         (arm_function_ok_for_sibcall): Return false for v7m interrupt
15116         functions.
15117         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
15118         (thumb_find_work_register, arm_load_pic_register,
15119         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
15120         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
15121         print_multi_reg, output_mov_long_double_fpa_from_arm,
15122         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
15123         output_mov_double_fpa_from_arm, output_move_double,
15124         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
15125         output_return_instruction, arm_output_function_prologue,
15126         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
15127         arm_output_mi_thunk, thumb_set_return_address): Ditto.
15128         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
15129         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
15130         (arithmetic_instr, shift_op): Use arm_shift_nmem.
15131         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
15132         '!' and 'L'.
15133         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
15134         (thumb_expand_prologue): Use thumb_set_frame_pointer.
15135         (arm_file_start): Output directive for unified syntax.
15136         (arm_unwind_emit_set): Handle stack alignment instruction.
15137         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
15138         Add v6t2, v7, v7a, v7r and v7m.
15139         (RETLDM): Add Thumb-2 code.
15140         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
15141         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
15142         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
15143         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
15144         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
15145         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
15146         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
15147         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
15148         ADJUST_INSN_LENGTH): Define.
15149         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
15150         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
15151         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
15152         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
15153         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
15154         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
15155         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
15156         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
15157         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
15158         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
15159         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
15160         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
15161         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
15162         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
15163         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
15164         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
15165         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
15166         cortex-m3.
15167         * config/arm/arm-tune.md: Regenerate.
15168         * config/arm/arm-protos.h: Update prototypes.
15169         * config/arm/vfp.md: Enable patterns for Thumb-2.
15170         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
15171         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
15172         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
15173         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
15174         * config/arm/libunwind.S: Add Thumb-2 code.
15175         * config/arm/constraints.md: Update include Thumb-2.
15176         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
15177         * config/arm/ieee754-df.S: Ditto.
15178         * config/arm/bpabi.S: Ditto.
15179         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
15180         * config/arm/predicates.md (low_register_operand,
15181         low_reg_or_int_operand, thumb_16bit_operator): New.
15182         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
15183         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
15184         * config/arm/t-arm-elf: Add armv7 multilib.
15185         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
15186         Include thumb2.md.
15187         (UNSPEC_STACK_ALIGN, ce_count): New.
15188         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
15189         arm_zero_extendsidi2, arm_zero_extendqidi2): New
15190         insns/expanders.
15191         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
15192         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
15193         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
15194         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
15195         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
15196         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
15197         insns.
15198         * doc/extend.texi: Document ARMv7-M interrupt functions.
15199         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
15200
15201 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
15202
15203         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
15204         (struct _Unwind_Context): Rename args_size to flags, remove
15205         signal_frame field, add a new args_size field and version field.
15206         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
15207         _Unwind_IsExtendedContext): New inline functions.
15208         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
15209         Assume by_value array is only present if _Unwind_IsExtendedContext.
15210         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
15211         _Unwind_IsSignalFrame.
15212         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
15213         (uw_update_context_1): Use _Unwind_SetSignalFrame.
15214         (uw_init_context_1): Initialize context->flags to
15215         EXTENDED_CONTEXT_BIT.
15216         * config/rs6000/linux-unwind.h (frob_update_context): Use
15217         _Unwind_SetSignalFrame.
15218
15219 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15220
15221         PR middle-end/30353
15222         * gimplify.c (gimplify_modify_expr_complex_part): Move below
15223         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
15224         the value.
15225
15226 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
15227
15228         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
15229         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
15230         RET, AT_SP): Remove.
15231         * config/i386/i386.md (*sse_prologue_save_insn): Use return
15232         instead of RET.
15233
15234         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
15235         * cfgbuild.c (find_basic_blocks): Likewise.
15236         * cfgrtl.c (rtl_create_basic_block): Likewise.
15237         * function.c (temp_slots_at_level): Likewise.
15238         * reg-stack.c (stack_regs_mentioned): Likewise.
15239         * regclass.c (allocate_reg_info): Likewise.
15240         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
15241         set_bb_for_stmt, move_block_to_fn): Likewise.
15242         * tree-complex.c (tree_lower_complex): Likewise.
15243         * vec.h (VEC_safe_grow_cleared): New.
15244
15245         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
15246
15247 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
15248
15249         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
15250         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
15251         to loop_version.
15252         * cfgloopmanip.c (scale_loop_frequencies): Export.
15253         (loopify): Scale the frequencies by prescribed coefficients.
15254         (set_zero_probability): New function.
15255         (duplicate_loop_to_header_edge): Improve updating of frequencies.
15256         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
15257         and frequencies according to arguments.
15258         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
15259         correctly.
15260         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
15261         * modulo-sched.c (sms_schedule): Set probabilities for entering
15262         versioned loop correctly.
15263         * tree-vect-transform.c (vect_transform_loop): Ditto.
15264         * cfgloop.h (loopify, loop_version): Declaration changed.
15265         (scale_loop_frequencies): Declared.
15266
15267 2007-01-02  Jan Hubicka  <jh@suse.cz>
15268
15269         * cgraph.c: Include tree-flow.h
15270         (cgraph_add_new-function): Handle IPA_SSA mode; execute
15271         early_local_passes.
15272         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
15273         * tree-pass.h (pass_all_early_optimizations): Declare.
15274         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
15275         early_local_passes.
15276         (cgraph_analyze_function): Do early_local_passes.
15277         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
15278         Do not add referenced vars.
15279         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
15280         SSA form.
15281         (gate_all_early_local_passes): New gate.
15282         (pass_early_local_passes): Use new gate.
15283         (execute_early_local_optimizations): New functions.
15284         (gate_all_early_optimizations): New gate.
15285         (pass_all_early_optimizations): New pass.
15286         (execute_free_datastructures): Free SSA only when initialized.
15287         (gate_init_datastructures): Init only when optimizing.
15288         (tree_lowering_passes): Do early local passes when called late.
15289         * tree-profile.c (do_tree_profiling): Don't profile functions added
15290         late.
15291         (do_early_tree_profiling, pass_early_tree_profile): Kill.
15292         * tree-cfg.c (update_modified_stmts): Do not update when operands are
15293         not active.
15294         * passes.c (init_optimizations_passes): Reorder so we go into SSA
15295         during early_local_passes.
15296         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
15297
15298
15299 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
15300
15301         * Makefile.in: Update copyright year.
15302
15303 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
15304
15305         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
15306         in $(lang_checks) and check-consistency targets.
15307
15308 2007-01-02  Jan Hubicka  <jh@suse.cz>
15309
15310         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
15311         Do not add referenced vars.
15312         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
15313         are not active.
15314         * passes.c (init_optimization_passes): Put mudflap_2 after
15315         free_datastructures.
15316
15317 2007-01-02  Jan Hubicka  <jh@suse.cz>
15318
15319         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
15320         Set NOTHROW flag on call statements proved to be nothrow.
15321         Update statement of local calls so new pure/const functions are
15322         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
15323         goto receivers.
15324         (tree_rest_of_compilation): Register hooks and initialize bitmap
15325         early. Do not set after_inlining flag.
15326
15327 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
15328
15329         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
15330         HOST_BITS_PER_LONGLONG
15331
15332 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
15333
15334         PR c/19977
15335         * c-typeck.c (store_init_value): Don't emit pedantic overflow
15336         warning for non-static initializers.
15337
15338 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
15339
15340         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
15341         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
15342         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
15343         Always use set_unique_reg_note to add REG_EQUAL notes.
15344
15345 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
15346
15347         Revert:
15348         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
15349
15350         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
15351         * cfgbuild.c (find_basic_blocks): Likewise.
15352         * cfgrtl.c (rtl_create_basic_block): Likewise.
15353         * function.c (temp_slots_at_level): Likewise.
15354         * reg-stack.c (stack_regs_mentioned): Likewise.
15355         * regclass.c (allocate_reg_info): Likewise.
15356         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
15357         set_bb_for_stmt, move_block_to_fn): Likewise.
15358         * tree-complex.c (tree_lower_complex): Likewise.
15359         * vec.h (VEC_safe_grow_cleared): New.
15360
15361 2007-01-02  Ian Lance Taylor  <iant@google.com>
15362
15363         * c-common.c (c_common_truthvalue_conversion): When warning about
15364         using an assignment as a truth value, set TREE_NO_WARNING.
15365
15366 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15367
15368         PR middle-end/7651
15369         * c.opt (Wold-style-declaration): New.
15370         * doc/invoke.texi (C-only Warning Options): New.
15371         (Wold-style-declaration): Document it.
15372         (Wextra): Enabled by -Wextra.
15373         * c-opts.c (c_common_post_options): Enabled by -Wextra.
15374         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
15375         -Wold-style-declaration.
15376
15377 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
15378
15379         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
15380         * cfgbuild.c (find_basic_blocks): Likewise.
15381         * cfgrtl.c (rtl_create_basic_block): Likewise.
15382         * function.c (temp_slots_at_level): Likewise.
15383         * reg-stack.c (stack_regs_mentioned): Likewise.
15384         * regclass.c (allocate_reg_info): Likewise.
15385         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
15386         set_bb_for_stmt, move_block_to_fn): Likewise.
15387         * tree-complex.c (tree_lower_complex): Likewise.
15388         * vec.h (VEC_safe_grow_cleared): New.
15389
15390 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
15391
15392         * c-common.c (c_common_nodes_and_builtins): Since variants of
15393         void_type_node get built before it is given a name, we need to
15394         give those variants the name, too.
15395         (complete_array_type): We need to work with the canonical main
15396         type of the array, from which we will build the qualified version.
15397         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
15398         * print-tree.c (print_node): Display canonical type information
15399         for each type.
15400         * stor-layout.c (layout_type): When we don't know the
15401         alignment of a type for which we're building an array, we end up
15402         guessing wrong, so make the type require structural equality.
15403         * tree.c (make_node_stat): When we build a new type, it is its
15404         own canonical type.
15405         (build_type_attribute_qual_variant): When building an attribute
15406         variant, its canonical type is the non-attribute variant. However,
15407         if the attributes are target-dependent and they differ, we need to
15408         use structural equality checks for this type.
15409         (build_qualified_type): A qualified type is not equivalent to its
15410         unqualified variant; set the canonical type appropriately.
15411         (build_distinct_type_copy): When building a distinct type from
15412         another type, the new type is its own canonical type.
15413         (build_variant_type_copy): When building a new type variant, we
15414         assume that it is equivalent to the original type.
15415         (build_pointer_type_for_mode): When building a pointer type, also
15416         build a canonical type pointer.
15417         (build_reference_type_for_mode): When building a reference type,
15418         also build a canonical type reference.
15419         (build_index_type): When we can't hash an index type (e.g.,
15420         because its maximum value is negative), the index type requires
15421         structural equality tests.
15422         (build_array_type): Build the canonical form of an array type.
15423         (build_function_type): Function types require structural equality,
15424         because they contain default arguments, attributes, etc.
15425         (build_method_type_directly): Ditto for method types.
15426         (build_offset_type): Build the canonical offset type.
15427         (build_complex_type): Build the canonical vector type.
15428         (make_vector_type): Build the canonical vector type.
15429         * tree.h (TYPE_CANONICAL): New.
15430         (TYPE_STRUCTURAL_EQUALITY_P): New.
15431         (SET_TYPE_STRUCTURAL_EQUALITY): New.
15432         (struct tree_type): Added "canonical" field.
15433         * params.h (VERIFY_CANONICAL_TYPES): New.
15434         * doc/c-tree.texi (TYPE_CANONICAL): Document.
15435         (TYPE_STRUCTURAL_EQUALITY_P): Document.
15436         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
15437         * doc/invoke.texi (verify-canonical-types): Document --param
15438         parameter for verifying canonical types.
15439
15440 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15441
15442         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
15443         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
15444         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
15445         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
15446         tm_file.
15447         * config/rs6000/e500.h: New.
15448         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
15449         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
15450         Remove.
15451         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
15452         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
15453         TARGET_E500_DOUBLE): Remove.
15454         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
15455         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
15456         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
15457         * config/rs6000/rs6000.c (rs6000_override_options): Use
15458         CHECK_E500_OPTIONS.
15459
15460 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15461
15462         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
15463         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
15464         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
15465         rs6000_emit_cmove): Don't check TARGET_E500.
15466         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
15467         sordered): Don't check TARGET_E500.
15468
15469 2007-01-01  Eric Christopher  <echristo@apple.com>
15470
15471         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
15472         HARD_REGISTER_NUM_P.
15473
15474 2007-01-01  Roger Sayle  <roger@eyesopen.com>
15475
15476         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
15477         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
15478         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
15479         eq/ne Y".
15480
15481 2007-01-01  Mike Stump  <mrs@apple.com>
15482
15483         * configure.ac: Remove support for building with Apple's gcc-3.1.
15484
15485 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15486
15487         PR middle-end/30311
15488         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
15489         REG is a hard register.  Do not modify REG before calling
15490         subreg_nregs.
15491         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
15492         multiple of the size of YMODE for certain lowpart cases.
15493
15494 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15495
15496         PR middle-end/30253
15497         * gimplify (voidify_wrapper_expr): Update for
15498         GIMPLE_MODIFY_STMT.
15499
15500 2007-01-01  Andreas Schwab  <schwab@suse.de>
15501
15502         PR target/29166
15503         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
15504         save of BR0 in extra_spill_size instead of spill_size.
15505         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
15506         area.
15507         (ia64_expand_epilogue): Restore BR0 from its new location.
15508
15509 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15510
15511         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
15512         Use a temporary variable if the left hand side is not a gimple
15513         register.
15514
15515 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15516
15517         * gimplify.c (gimplify_return_expr): Make the temporary variable
15518         for the return expression, a gimple register variable.
15519
15520 2007-01-01  Jan Hubicka  <jh@suse.cz>
15521
15522         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
15523         INSN_LIST.
15524
15525 2007-01-01  Mike Stump  <mrs@apple.com>
15526
15527         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
15528         .literal16.
15529         * config/darwin.c (machopic_select_rtx_section): Use
15530         HAVE_GAS_LITERAL16.
15531         (darwin_mergeable_constant_section): Likewise.
15532         * configure: Regenerate.
15533         * config.in: Regenerate.
15534
15535 2007-01-01  Jan Hubicka  <jh@suse.cz>
15536             Andrew Pinski  <pinskia@gmail.com>
15537
15538         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
15539         before starting IPA passes.