OSDN Git Service

PR tree-optimization/32216
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
2
3         PR tree-optimization/32216
4         * tree-vectorizer.c (supportable_widening_operation): Determine
5         signedness of FIX_TRUNC_EXPR from output operand.
6         (supportable_narrowing_operation): Ditto.
7         * tree-vect-generic.c (expand_vector_operations_1): Determine
8         signedness of VEC_UNPACK_FLOAT_HI_EXPR and VEC_UNPACK_FLOAT_LO_EXPR
9         from input operand.
10
11 2007-06-06  Thomas Neumann  <tneumann@users.sourceforge.net>
12
13         * config/i386/i386.c (enum pta_flags): Move out of struct scope...
14         (struct pta): ...from here. Change flags to unsigned to avoid
15         excessive casting (as it is used as a bit mask).
16         (override_options): Add casts according to the coding convenventions.
17         (x86_64_elf_unique_section): Likewise.
18         (examine_argument): Avoid using C++ keywords as variable names.
19         (construct_container): Likewise.
20         (legitimize_pic_address): Likewise.
21         (get_dllimport_decl): Cast according to the coding conventions. Use
22         type safe memory macros.
23         (legitimize_address): Cast according to the coding conventions.
24         (emit_i387_cw_initialization): Corrected the type of slot to enum
25         ix86_stack_slot.
26         (ix86_init_machine_status): Use type safe memory macros.
27         (bdesc_pcmpestr): Use UNKNOWN instead of integer 0.
28         (bdesc_pcmpistr): Likewise.
29         (bdesc_crc32): Likewise.
30         (bdesc_sse_3arg): Likewise.
31         (bdesc_2arg): Likewise.
32         (bdesc_1arg): Likewise.
33         (ix86_expand_sse_pcmpestr): Cast according to the coding conventions.
34         (ix86_expand_sse_pcmpistr): Likewise.
35         (ix86_expand_vec_set_builtin): Use EXPAND_NORMAL instead of integer 0.
36         (ix86_builtin_vectorized_function): Change the type of fn to unsigned
37         int to match the langhook definition.
38         (ix86_builtin_conversion): Change the type of code to unsigned init to
39         match the langhook definition.
40         (ix86_preferred_reload_class): Avoid using C++ keywords as variable
41         names.
42         (ix86_preferred_output_reload_class): Likewise.
43         (ix86_cannot_change_mode_class): Likewise.
44         (ix86_memory_move_cost): Likewise.
45         (ix86_rtx_costs): Cast the outer_code parameter to enum rtx_code to
46         avoid excessive casting later on.
47         (x86_output_mi_thunk): Avoid using C++ keywords as variable names.
48
49 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
50
51         * config/i386/sse.md (sse4_2_pcmpestr_cconly): Prefer pcmpestrm
52         as flags setting insn.
53         (sse4_2_pcmpistr_cconly): Prefer pcmpistrm as flags setting insn.
54
55 2007-06-06  Uros Bizjak  <ubizjak@gmail.com>
56
57         * config/i386/i386.md (UNSPEC_ROUNDP, UNSPEC_ROUNDS): Remove.
58         (UNSPEC_ROUND): New.
59         ("sse4_1_round<mode>2"): New insn pattern.
60         ("rint<mode>2"): Expand using "sse4_1_round<mode>2" pattern for
61         SSE4.1 targets.
62         ("floor<mode>2"): Rename from floordf2 and floorsf2.  Macroize
63         expander using SSEMODEF mode macro.  Expand using
64         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
65         ("ceil<mode>2"): Rename from ceildf2 and ceilsf2.  Macroize
66         expander using SSEMODEF mode macro.  Expand using
67         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
68         ("btrunc<mode>2"): Rename from btruncdf2 and btruncsf2.  Macroize
69         expander using SSEMODEF mode macro.  Expand using
70         "sse4_1_round<mode>2" pattern for SSE4.1 targets.
71         * config/i386/sse.md ("sse4_1_roundpd", "sse4_1_roundps"): Use
72         UNSPEC_ROUND instead of UNSPEC_ROUNDP.
73         ("sse4_1_roundsd", "sse4_1_roundss"): Use UNSPEC_ROUND instead of
74         UNSPEC_ROUNDS.
75
76 2007-06-06  Jan Sjodin  <jan.sjodin@amd.com>
77             Sebastian Pop  <sebpop@gmail.com>
78
79         * lambda.h (build_linear_expr): New.
80         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression): 
81         Use build_linear_expr, call fold and force_gimple_operand.
82         (lambda_loopnest_to_gcc_loopnest): Check that there is
83         something to insert.
84         * testsuite/gcc.dg/tree-ssa/ltrans-6.c: New.
85
86 2007-06-05  Joerg Wunsch  <j.gnu@uriah.heep.sax.de>
87
88         PR preprocessor/23479
89         * doc/extend.texi: Document the 0b-prefixed binary integer
90         constant extension.
91         
92 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
93
94         PR tree-optimization/32215
95         * tree-vectorizer.c (supportable_widening_operation): Return false
96         for unsupported FIX_TRUNC_EXPR tree code.
97         (supportable_narrowing_operation): Ditto for FLOAT_EXPR tree code.
98
99 2007-06-06  Nathan Froyd  <froydnj@codesourcery.com>
100
101         * config/rs6000/rs6000.h (FIXED_SCRATCH): Use r0 as a scratch
102         register on SPE targets.  Change documentation to reflect
103         reality.
104         * config/rs6000/rs6000.c (rs6000_conditional_register_usage):
105         Change FIXED_SCRATCH to 14 and document why we're keeping r14
106         out of the register allocation pool.
107         (rs6000_reg_live_or_pic_offset_p): New function.
108         (rs6000_emit_prologue): Move the actual saving of LR up to free
109         r0 for holding r11.  Split saving of SPE 64-bit registers into
110         its own case.  Ensure that offsets will always be in-range for
111         'evstdd' by using r11 as a scratch register to point at the start
112         of the SPE save area.  Save r11 if necessary, as it is the static
113         chain register.
114         (rs6000_emit_epilogue): Split restoring of SPE 64-bit registers
115         into its own case.  Ensure that offsets will always be in-range
116         for 'evldd' by using r11 as a scratch register to point at the
117         start of the SPE save area.  Also adjust r11 when restoring
118         the stack pointer to compensate for pre-loading r11.
119
120 2007-06-05  Thomas Neumann  <tneumann@users.sourceforge.net>
121
122         * cfg.c (init_flow): Use type safe memory macros.
123         (alloc_block): Likewise.
124         (unchecked_make_edge): Likewise.
125         (dump_flow_info): Avoid using C++ keywords as variable names.
126         (copy_original_table_clear): Cast according to the coding conventions.
127         (copy_original_table_set): Likewise.
128         * cfgexpand (label_rtx_for_bb): Likewise.
129         (expand_gimple_basic_block): Likewise.
130         * cfghooks.c (dump_bb): Likewise.
131         (lv_adjust_loop_header_phi): Avoid using C++ keywords as
132         variable names.
133         (lv_add_condition_to_bb): Likewise.
134         * cfglayout (relink_block_chain): Cast according to the coding
135         conventions.
136         (fixup_reorder_chain): Likewise.
137         (fixup_fallthru_exit_predecessor): Likewise.
138         * cfgloop.c (glb_enum_p): Likewise.
139         (get_exit_description): Likewise.
140         (dump_recorded_exit): Likewise.
141         * cfgloop.h (enum loop_estimation): Move out of struct scope...
142         (struct loop): ... from here.
143         * cfgloopmanip.c (rpe_enum_p): Cast according to the coding
144         conventions.
145         * cfgrtl.c (rtl_create_basic_block): Likewise.
146         (rtl_split_block): Likewise.
147         (rtl_dump_bb): Likewise.
148         (cfg_layout_split_block): Likewise.
149         (init_rtl_bb_info): Use typesafe memory macros.
150
151         * graphds.h (struct graph_edge): Renamed edge to graph_edge.
152         * graphds.h: Updated all usages of edge to graph_edge.
153         * graphds.c: Likewise.
154         * cfgloopanal.c: Likewise.
155
156 2007-06-05  Ian Lance Taylor  <iant@google.com>
157
158         * tree-vrp.c (compare_values_warnv): Check TREE_NO_WARNING on a
159         PLUS_EXPR or MINUS_EXPR node before setting *strict_overflow_p.
160         (extract_range_from_assert): Set TREE_NO_WARNING when creating an
161         expression.
162         (test_for_singularity): Likewise.
163
164 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
165
166         * config/i386/constraints.md ("Y2"): Replaced by ...
167         ("Yt"): This.
168         * config/i386/i386.md: Likewise.
169         * config/i386/mmx.md: Likewise.
170         * config/i386/sse.md: Likewise.
171
172 2007-06-05  H.J. Lu  <hongjiu.lu@intel.com>
173
174         * config/i386/constraints.md ("z"): Replaced by ...
175         ("Y0"): This.
176         * config/i386/sse.md (sse4_1_blendvpd): Likewise.
177         (sse4_1_blendvps): Likewise.
178         (sse4_1_pblendvb): Likewise.
179         (sse4_2_pcmpestr): Likewise.
180         (sse4_2_pcmpestrm): Likewise.
181         (sse4_2_pcmpestr_cconly): Likewise.
182         (sse4_2_pcmpistr): Likewise.
183         (sse4_2_pcmpistrm): Likewise.
184         (sse4_2_pcmpistr_cconly): Likewise.
185
186 2007-06-05  Razya Ladelsky  <razya@il.ibm.com>
187
188         * matrix-reorg.c (transform_access_sites): Fix computation.
189         (transform_allocation_sites): Same.
190
191 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
192
193         * config/i386/i386.c (override_options): Use
194         TARGET_SUBTARGET32_ISA_DEFAULT to select default ix86_isa_flags.
195
196 2007-06-05  Uros Bizjak  <ubizjak@gmail.com>
197
198         * config/i386/predicates.md (reg_not_xmm0_operand): New predicate.
199         (nonimm_not_xmm0_operand): Ditto.
200         * config/i386/sse.md ("sse4_1_blendvpd"): Use "reg_not_xmm0_operand"
201         as operand[0] and operand[1] predicate.  Use "nonimm_not_xmm0_operand"
202         as operand[2] predicate.  Require "z" class XMM register for
203         operand[3].  Adjust asm template.
204         ("sse4_1_blendvpd"): Ditto.
205         ("sse4_1_pblendvb"): Ditto.
206         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Do not
207         force op2 into xmm0 register for variable blend instructions.
208
209 2007-06-04  Tom Tromey  <tromey@redhat.com>
210
211         * c-tree.h (start_enum): Update.
212         (build_enumerator): Likewise.
213         * c-decl.c (enum_next_value): Removed.
214         (enum_overflow): Likewise.
215         (start_enum): Add c_enum_contents argument.  Don't use globals.
216         (build_enumerator): Likewise.
217         * c-tree.h (struct c_enum_contents): New struct.
218
219 2007-06-04  Tom Tromey  <tromey@redhat.com>
220
221         * c-common.c (c_common_get_alias_set): Fix indentation.
222
223 2007-06-04  Ian Lance Taylor  <iant@google.com>
224
225         * tree-vrp.c (adjust_range_with_scev): When loop is not expected
226         to overflow, reduce overflow infinity to regular infinity.
227         (vrp_var_may_overflow): New static function.
228         (vrp_visit_phi_node): Check vrp_var_may_overflow.
229
230 2007-06-04  Kazu Hirata  <kazu@codesourcery.com>
231
232         * stor-layout.c (layout_type): Remove duplicate code.
233
234 2007-06-04  Uros Bizjak  <ubizjak@gmail.com>
235
236         PR c/32191
237         * gcc/c-common.c (c_define_builtins): Call targetm.init_builtins ()
238         before build_common_builtin_nodes ().
239
240 2007-06-04  Steve Ellcey  <sje@cup.hp.com>
241
242         PR target/31733
243         * cfgrtl.c (rtl_verify_flow_info): Skip notes when looking for barrier.
244
245 2007-05-31  Jan Hubicka  <jh@suse.cz>
246
247         * tree-predcom.c (replace_ref_with, initialize_root_vars_lm,
248         reassociate_to_the_same_stmt): Call build_gimple_modify_stmt
249         instead of _stat version.
250
251 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
252
253         PR tree-optimization/32194
254         * tree-predcom.c (determine_offset): Check that both references have
255         the same type.
256
257 2007-06-03  Zdenek Dvorak  <dvorakz@suse.cz>
258
259         * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge):
260         Change dom_bbs to vector.  Add argument to iterate_fix_dominators call.
261         * loop-unroll.c (unroll_loop_runtime_iterations): Ditto.
262         * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector.
263         Add argument to iterate_fix_dominators call.
264         (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom.
265         * gcse.c (hoist_code): Change domby to vector.
266         * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector.
267         Add argument to iterate_fix_dominators call.
268         * loop-doloop.c (doloop_modify): Changed recount_dominator to
269         recompute_dominator.
270         * lambda-code.c (perfect_nestify): Ditto.
271         * cfgloopanal.c: Include graphds.h.
272         (struct edge, struct vertex, struct graph, dump_graph, new_graph,
273         add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c.
274         (mark_irreducible_loops): Use graphds_scc.  Remove argument from
275         add_edge call.
276         * graphds.c: New file.
277         * graphds.h: New file.
278         * dominance.c: Include vecprim.h, pointer-set.h and graphds.h.
279         (get_dominated_by, get_dominated_by_region): Change return type to
280         vector.
281         (verify_dominators): Recompute all dominators and compare the results.
282         (recount_dominator): Renamed to ...
283         (recompute_dominator): ... this.  Do not check that the block is
284         dominated by entry.
285         (iterate_fix_dominators): Reimplemented.
286         (prune_bbs_to_update_dominators, root_of_dom_tree,
287         determine_dominators_for_sons): New functions.
288         * et-forest.c (et_root): New function.
289         * et-forest.h (et_root): Declare.
290         * Makefile.in (graphds.o): Add.
291         (cfgloopanal.o): Add graphds.h dependency.
292         (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency.
293         * basic-block.h (get_dominated_by, get_dominated_by_region,
294         iterate_fix_dominators): Declaration changed.
295         (recount_dominator): Renamed to ...
296         (recompute_dominator): ... this.
297         * tree-ssa-threadupdate.c (thread_block): Free dominance info.
298         (thread_through_all_blocks): Do not free dominance info.
299
300 2007-06-03  Andreas Schwab  <schwab@suse.de>
301
302         * config/m68k/m68k.c (override_options): Don't override
303         REAL_MODE_FORMAT.
304         * config/m68k/m68k-modes.def (SF, DF): Define to use
305         motorola_single_format and motorola_double_format, resp.
306         * real.c (motorola_single_format): Renamed from
307         coldfire_single_format.
308         (motorola_double_format): Renamed from coldfire_double_format.
309         (encode_ieee_extended): Generate a proper canonical NaN image
310         respecting canonical_nan_lsbs_set.
311         (ieee_extended_motorola_format): Set canonical_nan_lsbs_set to
312         true.
313         * real.h: Adjust declarations.
314
315 2007-06-03  Kaz Kojima  <kkojima@gcc.gnu.org>
316
317         PR target/32163
318         * config/sh/sh.md (symGOT_load): Don't schedule insns when
319         the symbol is generated with the stack protector.
320
321 2007-06-03  Kazu Hirata  <kazu@codesourcery.com>
322
323         * config/m68k/m68k.c (m68k_attribute_table): Add "interrupt".
324         (m68k_get_function_kind): Return m68k_fk_interrupt_handler on
325         "interrupt".
326         * doc/extend.texi (interrupt): Mention m68k.
327
328 2007-06-02  Uros Bizjak  <ubizjak@gmail.com>
329
330         * config/i386/i386.c (ix86_expand_sse_4_operands_builtin): Call
331         safe_vector_operand() if input operand is VECTOR_MODE_P operand.
332         (ix86_expand_sse_pcmpestr): Do not check operands for
333         "register_operand", when insn operand predicate is "register_operand".
334         (ix86_expand_sse_pcmpistr): Ditto.
335
336 2007-06-02  H.J. Lu  <hongjiu.lu@intel.com>
337             Uros Bizjak  <ubizjak@gmail.com>
338
339         * config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
340         (SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
341         (REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
342         (REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
343         * config/i386/constraints.md ("z"): New register constraint
344         for members of SSE_FIRST_REG class.
345         * config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
346         * config/i386/i386.c (regclass_map): Change class of %xmm0 to
347         SSE_FIRST_REG class.
348         (put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
349         (ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
350         (IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
351         (IX86_BUILTIN_PCMPESTRM128): Likewise.
352         (IX86_BUILTIN_PCMPESTRA128): Likewise.
353         (IX86_BUILTIN_PCMPESTRC128): Likewise.
354         (IX86_BUILTIN_PCMPESTRO128): Likewise.
355         (IX86_BUILTIN_PCMPESTRS128): Likewise.
356         (IX86_BUILTIN_PCMPESTRZ128): Likewise.
357         (IX86_BUILTIN_PCMPISTRI128): Likewise.
358         (IX86_BUILTIN_PCMPISTRM128): Likewise.
359         (IX86_BUILTIN_PCMPISTRA128): Likewise.
360         (IX86_BUILTIN_PCMPISTRC128): Likewise.
361         (IX86_BUILTIN_PCMPISTRO128): Likewise.
362         (IX86_BUILTIN_PCMPISTRS128): Likewise.
363         (IX86_BUILTIN_PCMPISTRZ128): Likewise.
364         (struct builtin_description): Change "flag" field to unsigned.
365         (bdesc_pcmpestr): New builtin description table.
366         (bdesc_pcmpistr): Likewise.
367         (ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
368         v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
369         Initialize pcmp[ei]str[im] insns for SSE4.2.
370         (ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
371         (ix86_expand_sse_pcmpistr): Likewise.
372         (ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
373         * config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
374         (UNSPEC_PCMPISTR): Likewise.
375         * config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
376         (sse4_2_pcmpestri):New isns pattern.
377         (sse4_2_pcmpestrm): Likewise.
378         (sse4_2_pcmpestr_cconly): Likewise.
379         (sse4_2_pcmpistr): New insn patern and splitter.
380         (sse4_2_pcmpistri):New isns pattern.
381         (sse4_2_pcmpistrm): Likewise.
382         (sse4_2_pcmpistr_cconly): Likewise.
383         * config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
384         in SSE4.2.
385
386 2007-06-01  David Daney  <ddaney@avtrex.com>
387
388         * config/mips/mips.c (mips_output_mi_thunk): Only load gp if not
389         LOADGP_ABSOLUTE and not binds_local_p.
390         
391 2007-06-01  Geoffrey Keating  <geoffk@apple.com>
392
393         * config/darwin.h (LINK_SPEC): Pass -fpie through to the linker.
394
395 2007-06-01  Ian Lance Taylor  <iant@google.com>
396
397         * tree-vrp.c (compare_name_with_value): Always set
398         used_strict_overflow if we get a result from the variable itself.
399
400 2007-06-01  Ian Lance Taylor  <iant@google.com>
401
402         PR rtl-optimization/31455
403         * lower-subreg.c (find_decomposable_subregs): Don't decompose
404         subregs which have a cast between modes which are not tieable.
405
406 2007-06-01  Uros Bizjak  <ubizjak@gmail.com>
407
408         * expr.c (force_operand) [DIV, MOD, UDIV, UMOD, ASHIFTRT]: Remove
409         breaks after return statements.
410
411 2007-06-01  Kaz Kojima  <kkojima@gcc.gnu.org>
412
413         * config/sh/sh.c (fpscr_set_from_mem): Call get_free_reg
414         only after no_new_pseudos.
415
416 2007-05-31  Eric Christopher  <echristo@apple.com>
417
418         * expr.c (convert_move): Assert that we don't have a BLKmode
419         operand.
420         (store_expr): Handle BLKmode moves by calling emit_block_move.
421
422 2007-05-31  Daniel Berlin  <dberlin@dberlin.org>
423
424         * c-typeck.c (build_indirect_ref): Include type in error message.
425         (build_binary_op): Pass types to binary_op_error.
426         * c-common.c (binary_op_error): Take two type arguments, print out
427         types with error.
428         * c-common.h (binary_op_error): Update prototype.
429
430 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
431
432         * config/i386/i386.c: Correct coments on -mno-sse4.
433
434 2007-05-31  H.J. Lu  <hongjiu.lu@intel.com>
435
436         * config.gcc (i[34567]86-*-*): Add nmmintrin.h to extra_headers.
437         (x86_64-*-*): Likewise.
438         * config/i386/i386.c (OPTION_MASK_ISA_MMX_UNSET): New.
439         (OPTION_MASK_ISA_3DNOW_UNSET): Likewise.
440         (OPTION_MASK_ISA_SSE_UNSET): Likewise.
441         (OPTION_MASK_ISA_SSE2_UNSET): Likewise.
442         (OPTION_MASK_ISA_SSE3_UNSET): Likewise.
443         (OPTION_MASK_ISA_SSSE3_UNSET): Likewise.
444         (OPTION_MASK_ISA_SSE4_1_UNSET): Likewise.
445         (OPTION_MASK_ISA_SSE4_2_UNSET): Likewise.
446         (OPTION_MASK_ISA_SSE4): Likewise.
447         (OPTION_MASK_ISA_SSE4_UNSET): Likewise.
448         (OPTION_MASK_ISA_SSE4A_UNSET): Likewise.
449         (ix86_handle_option): Use OPTION_MASK_ISA_*_UNSET.  Handle SSE4.2.
450         (override_options): Support SSE4.2.
451         (ix86_build_const_vector): Support SImode and DImode.
452         (ix86_build_signbit_mask): Likewise.
453         (ix86_expand_int_vcond): Support V2DImode.
454         (IX86_BUILTIN_CRC32QI): New for SSE4.2.
455         (IX86_BUILTIN_CRC32HI): Likewise.
456         (IX86_BUILTIN_CRC32SI): Likewise.
457         (IX86_BUILTIN_CRC32DI): Likewise.
458         (IX86_BUILTIN_PCMPGTQ): Likewise.
459         (bdesc_crc32): Likewise.
460         (bdesc_sse_3arg): Likewise.
461         (ix86_expand_crc32): Likewise.
462         (ix86_init_mmx_sse_builtins): Support SSE4.2.
463         (ix86_expand_builtin): Likewise.
464         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
465         __SSE4_2__ for -msse4.2.
466         * config/i386/i386.md (UNSPEC_CRC32): New for SSE4.2.
467         (CRC32MODE): Likewise.
468         (crc32modesuffix): Likewise.
469         (crc32modeconstraint): Likewise.
470         (sse4_2_crc32<mode>): Likewise.
471         (sse4_2_crc32di): Likewise.
472         * config/i386/i386.opt (msse4.2): New for SSE4.2.
473         (msse4): Likewise.
474         * config/i386/nmmintrin.h: New. The dummy SSE4.2 intrinsic header file.
475         * config/i386/smmintrin.h: Add SSE4.2 intrinsics.
476         * config/i386/sse.md (sse4_2_gtv2di3): New pattern for SSE4.2.
477         (vcond<mode>): Use SSEMODEI instead of SSEMODE124.
478         (vcondu<mode>): Likewise.
479         * doc/extend.texi: Document SSE4.2 built-in functions.
480         * doc/invoke.texi: Document -msse4.2/-msse4.
481
482 2007-05-31  Zdenek Dvorak  <dvorakz@suse.cz>
483
484         PR tree-optimization/32160
485         * tree-predcom.c (predcom_tmp_var): New function.  Mark created
486         variable as gimple reg.
487         (initialize_root_vars, initialize_root_vars_lm): Use predcom_tmp_var.
488
489 2007-05-31  Kazu Hirata  <kazu@codesourcery.com>
490
491         * gcc.c (main): Don't consider linker options when issuing the
492         warning about a linker input file not being used.
493
494 2007-05-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
495
496         * tree-vrp.c (compare_names): Initialize sop.
497
498 2007-05-30  Dirk Mueller  <dmueller@suse.de>
499
500         * cgraphunit.c (cgraph_analyze_function): Remove
501         computation of inline parameters.
502
503 2007-05-30  Uros Bizjak  <ubizjak@gmail.com>
504
505         * config/i386/darwin.h (TARGET_SUBTARGET_DEFAULT): Undef before define.
506
507 2007-05-30  Richard Sandiford  <richard@codesourcery.com>
508
509         * config.gcc (arm-wrs-vxworks): Remove dbxelf.h from tm_file.
510         Add vx-common.h.  Include vxworks.h between vx-common.h and
511         arm/vxworks.h.
512         * config/vx-common.h (DWARF2_UNWIND_INFO): Undefine before
513         redefining.
514         * config/vxworks.h (TARGET_ASM_CONSTRUCTOR): Likewise.
515         (TARGET_ASM_DESTRUCTOR): Likewise.
516         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Check arm_arch_xscale
517         instead of arm_is_xscale.  Use VXWORKS_OS_CPP_BUILTINS.
518         (OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
519         (CC1_SPEC): Add -tstrongarm.  Line up backslashes.
520         (VXWORKS_ENDIAN_SPEC): Define.
521         (ASM_SPEC): Add VXWORKS_ENDIAN_SPEC.
522         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine to their
523         VXWORKS_* equivalents.
524         (LINK_SPEC): Likewise, but add VXWORKS_ENDIAN_SPEC.
525         (ASM_FILE_START): Delete.
526         (TARGET_VERSION): Reformat.
527         (FPUTYPE_DEFAULT, FUNCTION_PROFILER): Define.
528         (DEFAULT_STRUCTURE_SIZE_BOUNDARY): Define.
529         * config/arm/t-vxworks (LIB1ASMSRC, LIB1ASMFUNCS): Define.
530         (FPBIT, DPBIT): Define.
531         (fp-bit.c, dp-bit.c): New rules.
532         (MULTILIB_OPTIONS): Add strongarm, -mrtp and -mrtp/-fPIC multilibs.
533         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Define.
534         * config/arm/arm-protos.h (arm_emit_call_insn): Declare.
535         * config/arm/arm.h: Include vxworks-dummy.h.
536         * config/arm/arm.c (arm_elf_asm_constructor, arm_elf_asm_destructor):
537         Mark with ATTRIBUTE_UNUSED.
538         (arm_override_options): Do not allow VxWorks RTP PIC to be used
539         for Thumb.  Force r9 to be the PIC register for VxWorks RTPs and
540         make it incompatible with -msingle-pic-base.
541         (arm_function_ok_for_sibcall): Return false for calls that might
542         go through a VxWorks PIC PLT entry.
543         (require_pic_register): New function, split out from...
544         (legitimize_pic_address): ...here.  Do not use GOTOFF accesses
545         for VxWorks RTPs.
546         (arm_load_pic_register): Handle the VxWorks RTP initialization
547         sequence.  Use pic_reg as a shorthand for cfun->machine->pic_reg.
548         (arm_emit_call_insn): New function.
549         (arm_assemble_integer): Do not use GOTOFF accesses for VxWorks RTP.
550         * config/arm/arm.md (UNSPEC_PIC_OFFSET): New unspec number.
551         (pic_offset_arm): New pattern.
552         (call, call_value): Use arm_emit_call_insn.
553         (call_internal, call_value_internal): New expanders.
554         * config/arm/lib1funcs.asm (__PLT__): Define to empty for
555         VxWorks unless __PIC__.
556
557 2007-05-30  Eric Christopher  <echristo@gmail.com>
558
559         * genrecog.c: Include regs.h in generated file.
560         * genemit.c: Ditto. Fix up formatting.
561         * config/mn10300/constraints.md: New.
562         * config/mn10300/mn10300.md: Include.
563         * config/mn10300/mn10300.c(mn10300_secondary_reload_class):
564         Fix up for removed macro.
565         * config/mn10300/predicates.md (call_address_operand):  Ditto.
566         * config/mn10300/mn10300.h (REG_CLASS_FROM_LETTER): Delete.
567         (CONST_OK_FOR_I): Ditto.
568         (CONST_OK_FOR_J): Ditto.
569         (CONST_OK_FOR_K): Ditto.
570         (CONST_OK_FOR_L): Ditto.
571         (CONST_OK_FOR_M): Ditto.
572         (CONST_OK_FOR_N): Ditto.
573         (CONST_DOUBLE_OK_FOR_LETTER_P): Ditto.
574         (OK_FOR_Q): Ditto.
575         (OK_FOR_R): Ditto.
576         (OK_FOR_T): Ditto.
577         (EXTRA_CONSTRAINT): Ditto.
578
579 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
580
581         * config/i386/i386.h (MASK_64BIT, MASK_MMX, MASK_3DNOW*, MASK_SSE*):
582         Remove defines.
583         * config/i386/biarch.h (TARGET_64BIT_DEFAULT): Define to
584         OPTION_MASK_ISA_64BIT.
585         * config/i386/i386.c: Rename MASK_* macros to OPTION_MASK_ISA_*.
586
587 2007-05-30  Richard Guenther  <rguenther@suse.de>
588
589         PR middle-end/32152
590         * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
591         types for comparison.
592         * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
593         with original typed arguments.
594         * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
595
596 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
597
598         PR tree-optimization/31769
599         * except.c (duplicate_eh_regions): Clear prev_try if
600         ERT_MUST_NOT_THROW region is inside of ERT_TRY region.
601
602 2007-05-30  Zdenek Dvorak  <dvorakz@suse.cz>
603
604         * tree-scalar-evolution.c (scev_const_prop): Do not create labels.
605         * tree-ssa-sink.c (statement_sink_location): Return basic block and
606         bsi of the location where statements should be inserted.
607         (sink_code_in_bb): Take bsi from statement_sink_location.
608         * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
609         instead of bsi_start.
610         * tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
611         bsi_insert_after.
612         * tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
613         (bsi_move_before): Document inconsistency with bsi_move_after.
614         (tree_redirect_edge_and_branch): Do not create labels if not necessary.
615
616 2007-05-30 Uros Bizjak <ubizjak@gmail.com>
617
618         * config/i386/i386.h (TARGET_ABM): New define.
619         (TARGET_POPCNT): Ditto.
620         (TARGET_64BIT, TARGET_MMX, TARGET_3DNOW, TARGET_3DNOW_A, TARGET_SSE*):
621         New temporary defines to redefine from OPTION_ISA_* defines.
622         (MASK_64BIT, MASK_MMX, MASK_3DNOW, MASK_3DNOW_A, MASK_SSE*):
623         New temporary defines to redefine from OPTION_MASK_ISA_* defines.
624         (ix86_isa_flags): New extern int declaration.
625         (TARGET_SUBTARGET_DEFAULT): New define.
626         (TARGET_SUBTARGET_ISA_DEFAULT): Ditto.
627         (TARGET_SUBTARGET32_DEFAULT): Ditto.
628         (TARGET_SUBTARGET32_ISA_DEFAULT): Ditto.
629         (TARGET_SUBTARGET64_ISA_DEFAULT): Ditto.
630         * config/i386/unix.h: Undef TARGET_SUBTARGET_DEFAULT before define.
631         * config/i386/darwin.h: Change TARGET_64BIT define to
632         OPTION_ISA_64BIT.
633
634         * config/i386/i386.opt (m3dnowa): Define as undocumented option
635         using existing "ix86_isa_flags" varible.
636         (m32, m64): Use existing "ix86_isa_flags" variable.
637         (mmmx, m3dnow): Ditto.
638         (msse, msse2, msse3, mssse3, msse4.1, msse4a): Ditto.
639         (mabm): Define as non-negative option using "x86_abm" variable.
640         (mpopcnt): Define as non-negative option using "x86_popcnt" variable.
641
642         * config/i386/i386.c (ix86_arch_features) [X86_ARCH_CMOVE]:
643         Rewrite feature test bitmap.
644         (ix86_isa_flags): New initialized global int varible.
645         (ix86_isa_flags_explicit): New static int variable.
646         (ix86_handle_option): Set "ix86_isa_flags_explicit" when mmmx, m3dnow,
647         msse, msse2, msse3, msse4.1 and msse4a option is processed.  Change
648         i86_isa_flags and ix86_isa_flags_explicit, not target_flags and
649         target_flags_explicit.
650         (override_options): Remove "target_enable" and "target_disable" fields
651         from "struct ptt". Update processor_target_table accordingly. Remove
652         PTA_PREFETCH_SSE from processor_alias_table entry if PTE_SSE is
653         defined and rearrange PTA_* bits.  Use "ix86_isa_flags" instead of
654         "target_flags" and "ix86_isa_flags_explicit" instead of
655         "target_flags_explicit" when masked with MASK_64BIT, MASK_MMX,
656         MASK_3DNOW, MASK_3DNOW_A or MASK_SSE*.  Set "x86_abm" to true when
657         PTA_ABM is set in processor_alias_table flags entry.  Set "x86_popcnt"
658         to true when either of PTA_POPCNT or PTA_ABM is set in
659         processor_alias_table flags entry.  Set "x86_prefetch_sse" to true
660         when either of PTA_PREFETCH_SSE or PTA_SSE is set in
661         processor_alias_table flags entry.  Remove handling of
662         "target_enable" and "target_disable" fields of processor_target_table.
663         Mask "target_flags" with TARGET_SUBTARGET32_DEFAULT for 32-bit
664         targets or with TARGET_SUBTARGET64_DEFAULT for 64-bit targets.
665         Mask "ix86_isa_flags" with TARGET_SUBTARGET32_ISA_DEFAULT for 32-bit
666         targets or with TARGET_SUBTARGET64_ISA_DEFAULT for 64-bit targets.
667         (def_builtin): Mask "mask" variable with "ix86_isa_flags", not
668         "target_flags".
669         (TARGET_DEFAULT_TARGET_FLAGS): Do not include TARGET_64BIT_DEFAULT.
670
671 2007-05-29  David Daney  <ddaney@avtrex.com>
672
673         PR gcc/31975
674         * config/mips/mips.c (mips_output_mi_thunk): Emit
675         NOTE_INSN_PROLOGUE_END at beginning of the thunk.
676
677 2007-05-29  Hui-May Chang  <hm.chang@apple.com>
678         * config/i386/i386.c (ix86_function_regparm): Added checking of
679         ix86_force_align_arg_pointer to determine the number of
680         register parameters.
681
682 2007-05-29  Zdenek Dvorak  <dvorakz@suse.cz>
683
684         * tree-vectorizer.h (DR_MISALIGNMENT): Cast aux to integer.
685         (SET_DR_MISALIGNMENT): New.
686         * tree-vect-analyze.c (vect_compute_data_ref_alignment,
687         vect_update_misalignment_for_peel, vect_enhance_data_refs_alignment):
688         Use SET_DR_MISALIGNMENT.
689         * tree-predcom.c (split_data_refs_to_components): Cast dr->aux from
690         pointer.
691         * tree-data-ref.c (create_data_ref, compute_all_dependences,
692         find_loop_nest): Export.
693         * tree-data-ref.h (struct data_reference): Change aux field to pointer.
694         (create_data_ref, compute_all_dependences, find_loop_nest): Declare.
695         * tree-ssa-loop-prefetch.c: Include tree-data-ref.h.
696         (L1_CACHE_SIZE_BYTES, L2_CACHE_SIZE_BYTES, NONTEMPORAL_FRACTION):
697         New macros.
698         (struct mem_ref): Add field reuse_distance.
699         (find_or_create_group, record_ref): Use XNEW instead of xcalloc.
700         Initialize reuse_distance field.
701         (issue_prefetch_ref): Select temporality of prefetch according to
702         reuse_distance.
703         (volume_of_references, volume_of_dist_vector, add_subscript_strides,
704         self_reuse_distance, determine_loop_nest_reuse): New functions.
705         (loop_prefetch_arrays): Call determine_loop_nest_reuse.
706         (tree_ssa_prefetch_arrays): Dump L2 cache size.
707         * Makefile.in (tree-ssa-loop-prefetch.o): Add TREE_DATA_REF_H
708         dependency.
709
710 2007-05-29  Daniel Berlin  <dberlin@dberlin.org>
711
712         * tree-ssa-alias.c: Add aliasing overview.
713
714 2007-05-29  Zuxy Meng  <zuxy.meng@gmail.com>
715             Danny Smith  <dannysmith@users.sourceforge.net>
716
717         PR target/29498
718         * config/i386/t-crtfm: Compile crtfastmath.o with
719         -minline-all-stringops.
720         * config/i386/cygwin.h (ENDFILE_SPECS): Add crtfastmath.o.
721         * config/i386/mingw32.h (ENDFILE_SPECS): Add crtfastmath.o.
722
723 2007-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
724
725         * doc/md.texi: Document constraints on HP PA-RISC.
726
727         * pa/constraints.md: New file.
728         * pa.md: Include constraints.md.
729         * pa.c (cint_ok_for_move): Avoid using CONST_OK_FOR_LETTER_P.
730         (integer_store_memory_operand, ldil_cint_p): New functions.
731         * pa-protos.h (integer_store_memory_operand, ldil_cint_p): Declare.
732         * pa.h (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
733         IS_RELOADING_PSEUDO_P, EXTRA_CONSTRAINT): Remove.
734         * pa32-regs.h (REG_CLASS_FROM_LETTER): Remove.
735         * pa64-regs.h (REG_CLASS_FROM_LETTER): Remove.
736
737 2007-05-28  Andrew Pinski  <Andrew_pinski@playstation.sony.com>
738
739         PR c/31339
740         * c-typeck.c (build_unary_op <case PREINCREMENT_EXPR,
741         case POSTINCREMENT_EXPR, case PREDECREMENT_EXPR,
742         case POSTDECREMENT_EXPR>): Return the error_mark_node
743         if either the real or imaginary parts would an
744         error_mark_node.
745
746 2007-05-28  Daniel Berlin  <dberlin@dberlin.org>
747
748         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Release LHS SSA
749         name when we remove it from a call.
750
751 2007-05-28  Kazu Hirata  <kazu@codesourcery.com>
752
753         * targhooks.c (default_narrow_bitfield): Remove.
754         * targhooks.h: Remove the prototype for
755         default_narrow_bitfield.
756
757         * langhooks-def.h: Remove the prototype for
758         hook_get_alias_set_0.
759         * langhooks.c (hook_get_alias_set_0): Remove.
760
761         * global.c (EXECUTE_IF_CONFLICT): Remove.
762
763 2007-05-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
764
765         PR tree-opt/32100
766         * fold-const.c (tree_expr_nonnegative_warnv_p): Don't
767         return true when truth_value_p is true and the type
768         is of signed:1.
769
770 2007-05-28  Gerald Pfeifer  <gerald@pfeifer.com>
771
772         * doc/install.texi (Prerequisites): We no longer require Autoconf
773         2.13 for the top-level.
774
775 2007-05-28  Uros Bizjak  <ubizjak@gmail.com>
776
777         * target/i386/i386.c (ix86_expand_vector_move): Expand unaligned
778         memory access via x86_expand_vector_move_misalign() only for
779         TImode values on 32-bit targets.
780
781 2007-05-28  Razya Ladelsky  <razya@il.ibm.com>
782
783         * matrix-reorg.c: New file. Implement matrix flattening and
784         transposing optimization.
785         * tree-pass.h: Add matrix reorg pass.
786         * common.opt: Add fipa-mreorg flag.
787         * Makefile.in: Add matrix-reorg.c.
788         * passes.c: Add matrix reorg pass.
789         * varpool.c (add_new_static_var): New function.
790         * cgraph.h (add_new_static_var): Declare.
791
792 2007-05-27  Eric Christopher  <echristo@apple.com>
793
794         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update
795         sp_offset depending on stack size. Save r12 depending
796         on registers we're saving later.
797         (rs6000_emit_epilogue): Update sp_offset depending only
798         on stack size.
799
800 2007-05-27  Zdenek Dvorak  <dvorakz@suse.cz>
801
802         * tree-vrp.c (execute_vrp): Do not check whether current_loops == NULL.
803         * tree-chrec.c (evolution_function_is_invariant_rec_p): Ditto.
804         * ifcvt.c (if_convert): Ditto.
805         * tree-ssa-threadupdate.c (thread_block): Ditto.
806         (thread_through_all_blocks): Ditto.  Assert that loops were analysed.
807         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
808         verify_loop_closed_ssa): Check number_of_loops instead of
809         current_loops.
810         * predict.c (tree_estimate_probability): Ditto.
811         * tree-if-conv.c (main_tree_if_conversion): Ditto.
812         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
813         * modulo-sched.c (sms_schedule): Ditto.
814         * tree-scalar-evolution.c (scev_const_prop): Ditto.
815         (scev_finalize): Do not do anything if scev analysis was not
816         initialized.
817         * cfgloopanal.c (mark_irreducible_loops): Do not check whether
818         current_loops == NULL.
819         (mark_loop_exit_edges): Check number_of_loops instead of current_loops.
820         * loop-init.c (loop_optimizer_init): Do not free current_loops when
821         there are no loops.
822         (loop_optimizer_finalize): Assert that loops were analyzed.
823         (rtl_move_loop_invariants, rtl_unswitch, rtl_unroll_and_peel_loops,
824         rtl_doloop): Check number_of_loops instead of current_loops.
825         * tree-ssa-loop.c (tree_loop_optimizer_init): Do not check whether
826         current_loops == NULL.
827         (tree_ssa_loop_init, tree_ssa_loop_im, tree_ssa_loop_unswitch,
828         gate_tree_vectorize tree_linear_transform, check_data_deps,
829         tree_ssa_loop_ivcanon, tree_ssa_empty_loop, tree_ssa_loop_bounds,
830         tree_complete_unroll, tree_ssa_loop_prefetch, tree_ssa_loop_ivopts):
831         Check number_of_loops instead of current_loops.
832         (tree_ssa_loop_done): Do not check whether current_loops == NULL.
833         * tree-ssa-pre.c (fini_pre): Do not take do_fre argument.  Always
834         free loops if available.
835         (execute_pre): Do not pass do_fre to fini_pre.
836
837 2007-05-27  Tobias Burnus  <burnus@net-b.de>
838
839         PR middle-end/32083
840         * real.c (mpfr_from_real): Fix sign of -Inf.
841
842 2007-05-27  H.J. Lu  <hongjiu.lu@intel.com>
843
844         * tree-vect-transform.c (vectorizable_conversion): Initialize
845         tree_code variables to ERROR_MARK.
846         (vectorizable_type_demotion): Likewise.
847         (vectorizable_type_promotion): Likewise.
848
849 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
850
851         PR target/32065
852         * config/i386/i386.md (movti): Handle push operands via
853         ix86_expand_push().
854
855 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
856
857         * basic-block.h: Remove the prototype for merge_seq_blocks.
858         * cfgcleanup.c (merge_seq_blocks): Remove.
859
860         * tree-flow.h: Remove the prototype for is_aliased_with.
861         * tree-ssa-alias.c (is_aliased_with): Remove.
862
863 2007-05-26  H.J. Lu  <hongjiu.lu@intel.com>
864
865         * config/i386/i386-protos.h (ix86_expand_sse4_unpack): New.
866
867         * config/i386/i386.c (ix86_expand_sse4_unpack): New.
868
869         * config/i386/sse.md (vec_unpacku_hi_v16qi): Call
870         ix86_expand_sse4_unpack if SSE4.1 is enabled.
871         (vec_unpacks_hi_v16qi): Likewise.
872         (vec_unpacku_lo_v16qi): Likewise.
873         (vec_unpacks_lo_v16qi): Likewise.
874         (vec_unpacku_hi_v8hi): Likewise.
875         (vec_unpacks_hi_v8hi): Likewise.
876         (vec_unpacku_lo_v8hi): Likewise.
877         (vec_unpacks_lo_v8hi): Likewise.
878         (vec_unpacku_hi_v4si): Likewise.
879         (vec_unpacks_hi_v4si): Likewise.
880         (vec_unpacku_lo_v4si): Likewise.
881         (vec_unpacks_lo_v4si): Likewise.
882
883 2007-05-26  Kazu Hirata  <kazu@codesourcery.com>
884
885         * c-typeck.c, config/arm/arm.c, config/darwin.c,
886         config/sh/symbian.c, gcc.c, ipa-cp.c, ipa-inline.c, loop-iv.c,
887         omega.c, tree-ssa-loop-niter.c, treestruct.def: Fix typos and
888         follow spelling conventions in various
889         warning/error/diagnostic messages.
890
891         * config/i386/i386.c, config/pa/pa.c, config/spu/spu.c,
892         df-problems.c, df-scan.c, domwalk.c, ebitmap.c, ebitmap.h,
893         fold-const.c, gcc.c, ipa-type-escape.c, omega.c, omega.h,
894         tree-ssa-coalesce.c, tree-ssa-live.c, tree-ssa-structalias.c,
895         tree-vrp.c: Fix comment typos.  Follow spelling conventions.
896         * doc/tm.texi: Follow spelling conventions.
897
898 2007-05-25  Andrew Pinski  <andrew_pinski@playstation.sony.com>
899
900         PR tree-opt/32090
901         * tree-ssa-forwprop.c
902         (forward_propagate_addr_into_variable_array_index): Remove
903         the lhs argument.  Use the type of def_rhs instead of lhs.
904         (forward_propagate_addr_expr_1): Update use of
905         forward_propagate_addr_into_variable_array_index.
906
907 2007-05-25  Sandra Loosemore  <sandra@codesourcery.com>
908             Nigel Stephens  <nigel@mips.com>
909
910         * config/mips/mips.c (mips_attribute_table): Add "near" and "far"
911         function attributes, "far" being an alias for "long_call".
912         (TARGET_COMP_TYPE_ATTRIBUTES): Define as mips_comp_type_attributes.
913         (mips_near_type_p, mips_far_type_p): New.
914         (mips_comp_type_attributes): New function to check that attributes
915         attached to a function type are compatible.
916         (mips_output_mi_thunk): Test SYMBOL_REF_LONG_CALL_P() rather than
917         TARGET_LONG_CALLS when deciding whether we can do a direct sibcall
918         to the target function of the thunk.
919         (mips_encode_section_info): Check for "near" and "far" function
920         attributes, and always set the SYMBOL_FLAG_LONG_CALL bit explicitly.
921
922         * config/mips/predicates.md (const_call_insn_operand): Test only
923         SYMBOL_REF_LONG_CALL_P() and not TARGET_LONG_CALLS.
924
925         * doc/extend.texi (Function Attributes): Document MIPS "near" and
926         "far" attributes.
927
928         * testsuite/gcc.target/mips/near-far-1.c:  New test case.
929         * testsuite/gcc.target/mips/near-far-2.c:  New test case.
930         * testsuite/gcc.target/mips/near-far-3.c:  New test case.
931         * testsuite/gcc.target/mips/near-far-4.c:  New test case.
932
933 2007-05-25  Eric Christopher  <echristo@apple.com>
934
935         * config.gcc: Add i386/t-fprules-softfp64 and soft-fp/t-softfp
936         to x86-darwin configurations.
937         * config/i386/t-darwin: Add softfp support.
938         * config/i386/t-darwin64: Ditto.
939         * config/i386/sfp-machine.h: If mach then don't use
940         aliasing, emit a stub to call.
941
942 2007-05-25  Kazu Hirata  <kazu@codesourcery.com>
943
944         * cfglayout.c, cgraphunit.c, config/avr/avr.c, fold-const.c,
945         haifa-sched.c, optabs.h, tree-affine.c, tree-data-ref.c,
946         tree-predcom.c, tree-ssa-alias-warnings.c,
947         tree-ssa-forwprop.c, tree-vect-analyze.c, tree-vrp.c: Fix
948         comment typos.  Follow spelling conventions.
949         * doc/cpp.texi, doc/invoke.texi: Fix typos.
950
951 2007-05-26  Uros Bizjak  <ubizjak@gmail.com>
952
953         PR target/32065
954         * target/i386/i386.c (ix86_expand_vector_move): Force SUBREGs of
955         constants into memory.  Expand unaligned memory references for
956         SSE modes via x86_expand_vector_move_misalign() function.
957
958 2007-05-25  Uros Bizjak  <ubizjak@gmail.com>
959
960         * config/i386/sse.md (*vec_extractv2di_1_sse2): Do not calculate
961         "memory" attribute for "sseishft" type insn without operands[2].
962
963 2007-05-25  Dirk Mueller  <dmueller@suse.de>
964             Marcus Meissner <meissner@suse.de>
965
966         * doc/extend.texi (alloc_size): New attribute.
967         * c-common.c (handle_alloc_size_attribute): New.
968         * tree-object-size.c (alloc_object_size): Use alloc_size
969         attribute, if available.
970
971 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
972
973         * config/i386/i386.c (__builtin_ia32_vec_ext_v2df): Mark it
974         with MASK_SSE2.
975         (__builtin_ia32_vec_ext_v2di): Likewise.
976         (__builtin_ia32_vec_ext_v4si): Likewise.
977         (__builtin_ia32_vec_ext_v8hi): Likewise.
978         (__builtin_ia32_vec_ext_v16qi): Likewise.
979         (__builtin_ia32_vec_set_v8hi): Likewise.
980
981 2007-05-25  H.J. Lu  <hongjiu.lu@intel.com>
982
983         * config/i386/sse.md (*vec_extractv2di_1_sse2): Correct shift.
984
985 2007-05-25  Richard Sandiford  <richard@codesourcery.com>
986
987         * config/arm/arm-protos.h (arm_encode_call_attribute): Delete.
988         (arm_is_longcall_p): Rename to...
989         (arm_is_long_call_p): ...this.  Take a single tree argument and
990         return a bool.
991         * config/arm/arm.h (CALL_SHORT, CALL_LONG, CALL_NORMAL): Delete.
992         (CUMULATIVE_ARGS): Remove call_cookie.
993         (SHORT_CALL_FLAG_CHAR, LONG_CALL_FLAG_CHAR, ENCODED_SHORT_CALL_ATTR_P)
994         (ENCODED_LONG_CALL_ATTR_P): Delete.
995         (ARM_NAME_ENCODING_LENGTHS): Remove SHORT_CALL_FLAG_CHAR and
996         LONG_CALL_FLAG_CHAR cases.
997         (ARM_DECLARE_FUNCTION_SIZE): Delete.
998         * config/arm/elf.h (ASM_DECLARE_FUNCTION_SIZE): Don't use
999         ARM_DECLARE_FUNCTION_SIZE.
1000         * config/arm/arm.c (arm_init_cumulative_args): Don't set call_cookie.
1001         (arm_function_arg): Return const0_rtx for VOIDmode arguments.
1002         (arm_encode_call_attribute, current_file_function_operand): Delete.
1003         (arm_function_in_section_p): New function.
1004         (arm_is_longcall_p): Rename to...
1005         (arm_is_long_call_p): ...this.  Take the target function as a single
1006         argument and return a bool.  Do not rely on call cookies.  Check
1007         whether the target symbol is in the same section as the current
1008         function, not just the same compilation unit.
1009         (arm_function_ok_for_sibcall): Use arm_is_long_call_p.
1010         (arm_encode_section_info): Don't encode a call type.
1011         * config/arm/arm.md (call, call_value): Update calls to
1012         arm_is_long(_)call_p.  Simplify logic.
1013         (*call_symbol, *call_value_symbol, *call_insn, *call_value_insn):
1014         Update calls to arm_is_long(_)call_p.
1015
1016 2007-05-25  Richard Guenther  <rguenther@suse.de>
1017
1018         PR tree-optimization/31982
1019         * tree-ssa-forwprop.c
1020         (forward_propagate_addr_into_variable_array_index): Handle arrays
1021         with element size one.
1022
1023 2007-05-24  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1024
1025         * config/spu/spu.md (smulsi3_highpart): Unshare the rtl chain.
1026         (umulsi3_highpart): Likewise.
1027
1028 2007-05-24  Ian Lance Taylor  <iant@google.com>
1029
1030         PR rtl-optimization/32069
1031         * regclass.c (regclass): Don't crash if the entry in regno_reg_rtx
1032         is NULL.
1033
1034 2007-05-24  Ollie Wild  <aaw@google.com>
1035
1036         * doc/cpp.texi (Common Predefined Macros): Add __COUNTER__
1037         description.
1038
1039 2007-05-24  Richard Sandiford  <rsandifo@nildram.co.uk>
1040
1041         * postreload-gcse.c (reg_changed_after_insn_p): New function.
1042         (oprs_unchanged_p): Use it to check all registers in a REG.
1043         (record_opr_changes): Look for clobbers in CALL_INSN_FUNCTION_USAGE.
1044         (reg_set_between_after_reload_p): Delete.
1045         (reg_used_between_after_reload_p): Likewise.
1046         (reg_set_or_used_since_bb_start): Likewise.
1047         (eliminate_partially_redundant_load): Use reg_changed_after_insn_p
1048         and reg_used_between_p instead of reg_set_or_used_since_bb_start.
1049         Use reg_set_between_p instead of reg_set_between_after_reload_p.
1050         * rtlanal.c (reg_set_p): Check whether REG overlaps
1051         regs_invalidated_by_call, rather than just checking the
1052         membership of REGNO (REG).
1053
1054 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1055
1056         * doc/passes.texi: Document predictive commoning.
1057         * doc/invoke.texi (-fpredictive-commoning): Document.
1058         * opts.c (decode_options): Enable flag_predictive_commoning on -O3.
1059         * tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
1060         adding indices to the generated name.
1061         (schedule_sm): Pass 0 to get_lsm_tmp_name.
1062         * tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
1063         * tree-pretty-print.c (op_symbol_1): Renamed to ...
1064         (op_symbol_code): ... and exported.
1065         (dump_omp_clause, op_symbol): Use op_symbol_code
1066         instead of op_symbol_1.
1067         * tree-pass.h (pass_predcom): Declare.
1068         * timevar.def (TV_PREDCOM): New timevar.
1069         * tree-ssa-loop.c (run_tree_predictive_commoning,
1070         gate_tree_predictive_commoning, pass_predcom): New.
1071         * tree-data-ref.c (find_data_references_in_loop): Find the
1072         references in dominance order.
1073         (canonicalize_base_object_address): Ensure that the result has
1074         pointer type.
1075         (dr_analyze_innermost): Export.
1076         (create_data_ref): Code to fail for references with invariant
1077         address moved ...
1078         (find_data_references_in_stmt): ... here.
1079         * tree-data-ref.h (dr_analyze_innermost): Declare.
1080         * tree-affine.c: Include tree-gimple.h and hashtab.h.
1081         (aff_combination_find_elt, name_expansion_hash,
1082         name_expansion_eq, tree_to_aff_combination_expand,
1083         double_int_constant_multiple_p, aff_combination_constant_multiple_p):
1084         New functions.
1085         * tree-affine.h (aff_combination_constant_multiple_p,
1086         tree_to_aff_combination_expand): Declare.
1087         * tree-predcom.c: New file.
1088         * common.opt (fpredictive-commoning): New option.
1089         * tree-flow.h (op_symbol_code, tree_predictive_commoning,
1090         stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
1091         * Makefile.in (tree-predcom.o): Add.
1092         (tree-affine.o): Add TREE_GIMPLE_H dependency.
1093         * passes.c (init_optimization_passes):  Add dceloop after
1094         copy propagation in loop optimizer.  Add predictive commoning
1095         to loop optimizer passes.
1096
1097 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1098
1099         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Correct
1100         default hook.
1101
1102 2007-05-24  Jan Hubicka  <jh@suse.cz>
1103
1104         * gengenrtl.c (gendecl, gendef): Output the gens annotated for
1105         statistics.
1106         (genheader): Include statistics.h.
1107
1108         * doc/invoke.texi (-fdump-unnumbered): Update docs when line number
1109         notes are gone.
1110         * print-rtl.c (flag_dump_unnumbered): Update comments.
1111         (print_rtl): Fix my previous change.
1112         * emit-rtl.c (emit_note_before, emit_note_after): Clear out note
1113         specific data.
1114
1115 2007-05-24  Zdenek Dvorak  <dvorakz@suse.cz>
1116
1117         PR middle-end/32018
1118         * tree-ssa-threadupdate.c (thread_through_loop_header): Use
1119         set_loop_copy.
1120         (thread_through_all_blocks): Call initialize_original_copy_tables
1121         and free_original_copy_tables.
1122         * cfgloopmanip.c (duplicate_loop, duplicate_loop_to_header_edge):
1123         Use set_loop_copy.
1124         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
1125         * cfghooks.c (duplicate_block): Use get_loop_copy.
1126         * cfg.c: Include cfgloop.h.
1127         (loop_copy): New hash table.
1128         (initialize_original_copy_tables): Initialize loop_copy table.
1129         (free_original_copy_tables): Free loop_copy table.
1130         (copy_original_table_clear, copy_original_table_set,
1131         set_loop_copy, get_loop_copy): New functions.
1132         (set_bb_original, set_bb_copy): Use copy_original_table_set.
1133         * cfgloop.h (struct loop): Remove copy field.
1134         * Makefile.in (cfg.o): Add CFGLOOP_H dependency.
1135         * basic-block.h (set_loop_copy, get_loop_copy): Declare.
1136
1137 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1138
1139         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 for
1140         -msse/-msse2/-msse3.
1141
1142 2007-05-24  H.J. Lu  <hongjiu.lu@intel.com>
1143
1144         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Mark
1145         __builtin_ia32_vec_set_v2di with MASK_64BIT.
1146
1147 2007-05-24  Danny Smith  <dannysmith@users.sourceforge.net>
1148
1149         PR target/27067
1150         * doc/tm.texi (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Document.
1151         * targhooks.h (default_mangle_decl_assembler_name): Declare
1152         default hook.
1153         * targhooks.c (default_mangle_decl_assembler_name): Define
1154         default hook.
1155         * target-def.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) New. Set to
1156         default hook.
1157         * target.h (struct gcc_target): Add mangle_decl_assembler_name field.
1158         * langhooks.c (lhd_set_decl_assembler_name): Call
1159         targetm.mangle_decl_assembler_name for names with global scope.
1160
1161         * config/i386/cygming.h (TARGET_MANGLE_DECL_ASSEMBLER_NAME) Override
1162         default.
1163         (ASM_OUTPUT_DEF_FROM_DECLS): Simplify to use DECL_ASSEMBLER_NAME.
1164         * config/i386/i386-protos.h (i386_pe_mangle_decl_assembler_name):
1165         Declare.
1166         * config/i386/winnt.c (i386_pe_maybe_mangle_decl_assembler_name):
1167         New. Factored out of i386_pe_encode_section_info.
1168         (gen_stdcall_or_fastcall_suffix): Get name identifier as argument.
1169         Move check for prior decoration of stdcall
1170         symbols to i386_pe_encode_section_info.
1171         (i386_pe_encode_section_info): Adjust call to
1172         gen_stdcall_or_fastcall_suffix.  Use
1173         i386_pe_maybe_mangle_decl_assembler_name, if needed.
1174         (i386_pe_mangle_decl_assembler_name): New. Wrap
1175         i386_pe_maybe_mangle_decl_assembler_name.
1176
1177 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
1178
1179         * c-common.c (c_common_signed_or_unsigned_type): Delay the check for
1180         INTEGRAL_TYPE_P and TYPE_UNSIGNED.
1181         * langhooks.c (get_signed_or_unsigned_type): Don't check for
1182         INTEGRAL_TYPE_P or TYPE_UNSIGNED.
1183         (lhd_signed_or_unsigned_type): Check for INTEGRAL_TYPE_P and
1184         TYPE_UNSIGNED.
1185
1186 2007-05-23  Sandra Loosemore  <sandra@codesourcery.com>
1187             Nigel Stephens  <nigel@mips.com>
1188             Richard Sandiford  <richard@codesourcery.com>
1189
1190         Fix up MIPS16 hard float and add support for complex.
1191
1192         * config/mips/mips.h (TARGET_HARD_FLOAT_ABI): New.
1193         (TARGET_SOFT_FLOAT_ABI): New.
1194         (TARGET_CPU_CPP_BUILTINS): Define __mips_hard_float and
1195         __mips_soft_float to reflect the ABI in use, not whether the
1196         FPU is directly accessible (e.g., in MIPS16 mode).
1197         (UNITS_PER_HWFPVALUE): Use TARGET_SOFT_FLOAT_ABI.
1198         (UNITS_PER_FPVALUE): Likewise.
1199
1200         * config/mips/mips.c (mips_expand_call): Remove redundant
1201         TARGET_MIPS16 check.
1202         (mips_arg_regno): New.
1203         (function_arg_advance): When setting bits in cum->fp_code for
1204         MIPS16, don't subtract 1 from cum->arg_number, since it is now
1205         zero-based.
1206         (function_arg): Use mips_arg_regno.
1207         (mips_return_mode_in_fpr_p): New.
1208         (mips16_call_stub_mode_suffix): New.
1209         (mips16_cfun_returns_in_fpr_p): New.
1210         (mips_save_reg_p): Use mips16_cfun_returns_in_fpr_p.
1211         (mips_output_function_prologue): Test mips16_hard_float, not
1212         !TARGET_SOFT_FLOAT, to decide when a function stub is required.
1213         (mips_expand_epilogue): Call MIPS16 helper routines to copy
1214         return value into a floating-point register.
1215         (mips_can_use_return_insn): Use mips16_cfun_returns_in_fpr_p.
1216         (mips_function_value): Rewrite to use mips_return_mode_in_fpr_p.
1217         (mips16_fp_args): Handle MIPS32r2 ISA which supports
1218         TARGET_FLOAT64, and use mfhc1/mthc1 to copy the most significant
1219         word of double arguments from or to the high bits of 64-bit
1220         floating point registers.
1221         (build_mips16_function_stub): Fill in DECL_RESULT for stubdecl.
1222         (mips16_fpret_double): New helper function.
1223         (build_mips16_call_stub): Use mips16_return_mode_in_fpr_p.  Add
1224         support for complex modes.  Fill in DECL_RESULT for stubdecl.
1225         (mips_init_libfuncs): Remove redundant TARGET_MIPS16 check.
1226
1227         * config/mips/mips16.S
1228         (RET, ARG1, ARG2): New.
1229         (MERGE_GPRf, MERGE_GPRt): New.
1230         (DELAYt, DELAYf): New.
1231         (MOVE_SF_BYTE0, MOVE_SI_BYTE0): New.
1232         (MOVE_SF_BYTE4, MOVE_SF_BYTE8): New.
1233         (MOVE_DF_BYTE0, MOVE_DF_BYTE8): New.
1234         (MOVE_SF_RET, MOVE_SC_RET, MOVE_DF_RET, MOVE_DC_RET, MOVE_SI_RET): New.
1235         (SFOP): Renamed to...
1236         (OPSF3): This, and macro-ified.  Updated all uses.
1237         (SFOP2): Renamed to...
1238         (OPSF2): This, and macro-ified.  Updated all uses.
1239         (SFCMP): Renamed to...
1240         (CMPSF): This, and macro-ified.  Updated all uses.
1241         (SFREVCMP): Renamed to...
1242         (REVCMPSF): This, and macro-ified.  Updated all uses.
1243         (__mips16_floatsisf, __mips16_fix_truncsfsi): Macro-ified.
1244         (LDDBL1, LDDBL2, RETDBL): Deleted.
1245         (DFOP): Renamed to...
1246         (OPDF3): This, and macro-ified.  Updated all uses.
1247         (DFOP2): Renamed to...
1248         (OPDF2): This, and macro-ified.  Updated all uses.
1249         (__mips16_extendsfdf2, __mips16_truncdfsf2): Macro-ified.
1250         (DFCMP): Renamed to...
1251         (CMPDF): This, and macro-ified.  Updated all uses.
1252         (DFREVCMP): Renamed to...
1253         (REVCMPDF): This, and macro-ified.  Updated all uses.
1254         (__mips16_floatsidf, __mips16_fix_truncdfsi): Macro-ified.
1255         (RET_FUNCTION): New.
1256         (__mips16_ret_sf, __mips16_ret_df): Macro-ified.
1257         (__mips16_ret_sc, __mips16_ret_dc): New.
1258         (STUB_ARGS_0, STUB_ARGS_1, STUB_ARGS_5, STUB_ARGS_9, STUB_ARGS_2,
1259         STUB_ARGS_6, STUB_ARGS_10): New.
1260         (CALL_STUB_NO_RET): New.
1261         (__mips16_call_stub_1): Macro-ified.
1262         (__mips16_call_stub_5): Macro-ified.
1263         (__mips16_call_stub_2): Macro-ified.
1264         (__mips16_call_stub_6): Macro-ified.
1265         (__mips16_call_stub_9): Macro-ified.
1266         (__mips16_call_stub_10): Macro-ified.
1267         (CALL_STUB_RET): New.
1268         (__mips16_call_stub_sf_0): Macro-ified.
1269         (__mips16_call_stub_sf_1): Macro-ified.
1270         (__mips16_call_stub_sf_5): Macro-ified.
1271         (__mips16_call_stub_sf_2): Macro-ified.
1272         (__mips16_call_stub_sf_6): Macro-ified.
1273         (__mips16_call_stub_sf_9): Macro-ified.
1274         (__mips16_call_stub_sf_10): Macro-ified.
1275         (__mips16_call_stub_df_0): Macro-ified.
1276         (__mips16_call_stub_df_1): Macro-ified.
1277         (__mips16_call_stub_df_5): Macro-ified.
1278         (__mips16_call_stub_df_2): Macro-ified.
1279         (__mips16_call_stub_df_6): Macro-ified.
1280         (__mips16_call_stub_df_9): Macro-ified.
1281         (__mips16_call_stub_df_10): Macro-ified.
1282         (__mips16_call_stub_sc_0): New.
1283         (__mips16_call_stub_sc_1): New.
1284         (__mips16_call_stub_sc_5): New.
1285         (__mips16_call_stub_sc_2): New.
1286         (__mips16_call_stub_sc_6): New.
1287         (__mips16_call_stub_sc_9): New.
1288         (__mips16_call_stub_sc_10): New.
1289         (__mips16_call_stub_dc_0): New.
1290         (__mips16_call_stub_dc_1): New.
1291         (__mips16_call_stub_dc_5): New.
1292         (__mips16_call_stub_dc_2): New.
1293         (__mips16_call_stub_dc_6): New.
1294         (__mips16_call_stub_dc_9): New.
1295         (__mips16_call_stub_dc_10): New.
1296
1297         * config/mips/t-elf (LIB1ASMFUNCS): Add MIPS16 floating-point stubs.
1298         * config/mips/t-isa3264 (LIB1ASMFUNCS): Likewise.
1299         * config/mips/t-r2900 (LIB1ASMFUNCS): Likewise.
1300
1301 2007-05-23  Ian Lance Taylor  <iant@google.com>
1302
1303         * doc/invoke.texi (Invoking GCC): Document that the order of the
1304         -l option matters.
1305
1306 2007-05-23  Chen Liqin  <liqin@sunnorth.com.cn>
1307
1308         PR target/30987
1309         * config/score/misc.md (bitclr_c, bitset_c, bittgl_c): Remove.
1310         * config/score/predicate.md (const_pow2, const_npow2): Remove.
1311         * config/score/score.h (ASM_OUTPUT_EXTERNAL): Add ASM_OUTPUT_EXTERNAL
1312         undef.
1313
1314         PR target/30474
1315         * config/score/score.c (score_print_operand): Make sure that only
1316         lower bits are used.
1317
1318 2007-05-22  Ian Lance Taylor  <iant@google.com>
1319
1320         * tree-vrp.c (avoid_overflow_infinity): New static function,
1321         broken out of set_value_range_to_value.
1322         (set_value_range_to_value): Call avoid_overflow_infinity.
1323         (extract_range_from_assert): Likewise.
1324
1325 2007-05-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1326
1327         PR middle-end/31095
1328          * builtins.c (expand_builtin_memmove_args): Strip nops that don't
1329         change the type before looking for a COMPOUND_EXPR.
1330
1331 2007-05-22  Ian Lance Taylor  <iant@google.com>
1332
1333         * lower-subreg.c (decompose_multiword_subregs): If we change an
1334         insn, call remove_retval_note on it.
1335
1336 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1337
1338         * regs.h (end_hard_regno): New function.
1339         (END_HARD_REGNO, END_REGNO): New macros.
1340         (add_to_hard_reg_set): New function.
1341         (remove_from_hard_reg_set): Likewise.
1342         (in_hard_reg_set_p): Likewise.
1343         (overlaps_hard_reg_set_p): Likewise.
1344         * bt-load.c (find_btr_reference): Use overlaps_hard_reg_set_p.
1345         (note_btr_set): Use END_HARD_REGNO.
1346         * caller-save.c (setup_save_areas): Use end_hard_regno.
1347         (mark_set_regs): Use END_HARD_REGNO.
1348         (add_stored_regs): Use end_hard_regno.
1349         (mark_referenced_regs): Use add_to_hard_reg_set.
1350         * combine.c (update_table_tick): Use END_REGNO.
1351         (record_value_for_reg): Likewise.
1352         (record_dead_and_set_regs): Likewise.
1353         (get_last_value_validate): Likewise.
1354         (use_crosses_set_p): Likewise.
1355         (reg_dead_at_p_1): Likewise.
1356         (reg_dead_at_p): Likewise.
1357         (mark_used_regs_combine): Use add_to_hard_reg_set.
1358         (move_deaths): Use END_HARD_REGNO.
1359         (reg_bitfield_target_p): Use end_hard_regno.
1360         (distribute_notes): Use END_HARD_REGNO.
1361         * cse.c (mention_regs): Use END_REGNO.
1362         (insert): Use add_to_hard_reg_set.
1363         (invalidate): Use END_HARD_REGNO.
1364         (invalidate_for_call): Likewise.
1365         (exp_equiv_p): Use END_REGNO.
1366         (cse_insn): Likewise.
1367         * cselib.c (cselib_invalidate_regno): Use end_hard_regno.
1368         * df-problems.c (df_urec_mark_reg_change): Use END_HARD_REGNO.
1369         * df-scan.c (df_ref_record): Use END_HARD_REGNO.
1370         * function.c (keep_stack_depressed): Use end_hard_regno.
1371         * global.c (global_alloc): Use end_hard_regno.
1372         (global_conflicts): Use add_to_hard_reg_set instead of
1373         mark_reg_live_nc.
1374         (find_reg): Likewise.
1375         (mark_reg_store): Likewise.
1376         (mark_reg_conflicts): Likewise.
1377         (mark_reg_death): Use remove_from_hard_reg_set.
1378         (mark_reg_live_nc): Delete.
1379         (set_preference): Use end_hard_regno.
1380         * local-alloc.c (mark_life): Use add_to_hard_reg_set and
1381         remove_from_hard_reg_set.
1382         (post_mark_life): Use add_to_hard_reg_set.
1383         * mode-switching.c (reg_dies): Use remove_from_hard_reg_set.
1384         (reg_becomes_live): Use add_to_hard_reg_set.
1385         * recog.c (reg_fits_class_p): Use in_hard_reg_set_p.
1386         (peep2_find_free_register): Use add_to_hard_reg_set.
1387         * reg-stack.c (convert_regs_exit): Use END_HARD_REGNO.
1388         * regclass.c (record_reg_classes): Use in_hard_reg_set_p.
1389         * regrename.c (note_sets): Use add_to_hard_reg_set.
1390         (clear_dead_regs): Use remove_from_hard_reg_set.
1391         (regrename_optimize): Use add_to_hard_reg_set.
1392         (find_oldest_value_reg): Use in_hard_reg_set_p.
1393         * reload.c (push_reload): Use in_hard_reg_set_p and end_hard_regno.
1394         (hard_reg_set_here_p): Use end_hard_regno.
1395         (decompose): Likewise.
1396         (reg_overlap_mentioned_for_reload_p): Use END_HARD_REGNO.
1397         (find_equiv_reg): Use in_hard_reg_set_p and end_hard_regno.
1398         * reload1.c (compute_use_by_pseudos): Use add_to_hard_reg_set.
1399         (mark_home_live): Use end_hard_regno.
1400         (spill_hard_reg): Likewise.
1401         (clear_reload_reg_in_use): Likewise.
1402         * reorg.c (delete_prior_computation): Use END_REGNO.
1403         * resource.c (update_live_status): Use END_HARD_REGNO.
1404         (mark_referenced_resources): Use add_to_hard_reg_set.
1405         (mark_set_resources): Likewise.
1406         (mark_target_live_regs): Likewise.  Use remove_from_hard_reg_set.
1407         * rtlanal.c (refers_to_regno_p): Use END_REGNO.
1408         (reg_overlap_mentioned_p): Likewise.
1409         (dead_or_set_p): Likewise.  Use an exclusive upper loop bound.
1410         (covers_regno_no_parallel_p): Use END_REGNO.
1411         (find_regno_note): Likewise.
1412         (find_reg_fusage): Use END_HARD_REGNO.
1413         * stmt.c (decl_overlaps_hard_reg_set_p): Use overlaps_hard_reg_set_p.
1414         * var-tracking.c (emit_note_insn_var_location): Use end_hard_regno.
1415
1416 2007-05-22  Richard Sandiford  <rsandifo@nildram.co.uk>
1417
1418         * mode-switching.c (reg_dies): Change type of second argument to
1419         "HARD_REG_SET *".
1420         (optimize_mode_switching): Update accordingly.
1421
1422 2007-05-22  Richard Sandiford  <richard@codesourcery.com>
1423
1424         * hard-reg-set.h (GO_IF_HARD_REG_SUBSET, GO_IF_HARD_REG_EQUAL): Delete
1425         in favor of...
1426         (hard_reg_subset_p, hard_reg_sets_equal_p, hard_reg_sets_intersect_p)
1427         (hard_reg_set_empty_p): ...these new functions.
1428         * bt-load.c (choose_btr): Use hard_reg_subset_p instead of
1429         GO_IF_HARD_REG_SUBSET.
1430         * cfgcleanup.c (old_insns_match_p): Use hard_reg_sets_equal_p
1431         instead of GO_IF_HARD_REG_EQUAL.
1432         * df-problems.c (df_urec_local_compute): Use hard_reg_set_empty_p
1433         instead of GO_IF_HARD_REG_EQUAL.
1434         * global.c (find_reg): Use hard_reg_set_empty_p instead of
1435         GO_IF_HARD_REG_SUBSET.
1436         (modify_reg_pav): Use hard_reg_set_empty_p instead of
1437         GO_IF_HARD_REG_EQUAL.
1438         * local-alloc.c (find_free_reg): Use hard_reg_subset_p instead
1439         of GO_IF_HARD_REG_SUBSET.
1440         * reg-stack.c (change_stack, convert_regs_1): Use hard_reg_sets_equal_p
1441         instead of GO_IF_HARD_REG_EQUAL.
1442         * regclass.c (init_reg_sets_1, reg_scan_mark_refs): Use
1443         hard_reg_subset_p instead of GO_IF_HARD_REG_SUBSET.
1444         (reg_classes_intersect_p): Use hard_reg_sets_intersect_p instead
1445         of GO_IF_HARD_REG_SUBSET,
1446         * reload1.c (finish_spills): Use hard_reg_subset_p instead of
1447         GO_IF_HARD_REG_SUBSET.
1448         * struct-equiv.c (death_notes_match_p): Use hard_reg_sets_equal_p
1449         instead of GO_IF_HARD_REG_EQUAL.
1450         * config/sh/sh.c (push_regs, calc_live_regs): Use
1451         hard_reg_sets_intersect_p instead of hard_regs_intersect_p.
1452         (hard_regs_intersect_p): Delete.
1453
1454 2007-05-22  Janis Johnson  <janis187@us.ibm.com>
1455
1456         * doc/sourcebuild.texi (Test Directives) Add dg-message.
1457
1458 2007-05-22  H.J. Lu  <hongjiu.lu@intel.com>
1459             Richard Henderson  <rth@redhat.com>
1460
1461         * config.gcc (i[34567]86-*-*): Add smmintrin.h to
1462         extra_headers.
1463         (x86_64-*-*): Likewise.
1464
1465         * i386/i386-modes.def (V2QI): New.
1466
1467         * config/i386/i386.c (ix86_handle_option): Handle SSE4.1 and
1468         SSE4A.
1469         (override_options): Support SSE4.1.
1470         (IX86_BUILTIN_BLENDPD): New for SSE4.1.
1471         (IX86_BUILTIN_BLENDPS): Likewise.
1472         (IX86_BUILTIN_BLENDVPD): Likewise.
1473         (IX86_BUILTIN_BLENDVPS): Likewise.
1474         (IX86_BUILTIN_PBLENDVB128): Likewise.
1475         (IX86_BUILTIN_PBLENDW128): Likewise.
1476         (IX86_BUILTIN_DPPD): Likewise.
1477         (IX86_BUILTIN_DPPS): Likewise.
1478         (IX86_BUILTIN_INSERTPS128): Likewise.
1479         (IX86_BUILTIN_MOVNTDQA): Likewise.
1480         (IX86_BUILTIN_MPSADBW128): Likewise.
1481         (IX86_BUILTIN_PACKUSDW128): Likewise.
1482         (IX86_BUILTIN_PCMPEQQ): Likewise.
1483         (IX86_BUILTIN_PHMINPOSUW128): Likewise.
1484         (IX86_BUILTIN_PMAXSB128): Likewise.
1485         (IX86_BUILTIN_PMAXSD128): Likewise.
1486         (IX86_BUILTIN_PMAXUD128): Likewise.
1487         (IX86_BUILTIN_PMAXUW128): Likewise.
1488         (IX86_BUILTIN_PMINSB128): Likewise.
1489         (IX86_BUILTIN_PMINSD128): Likewise.
1490         (IX86_BUILTIN_PMINUD128): Likewise.
1491         (IX86_BUILTIN_PMINUW128): Likewise.
1492         (IX86_BUILTIN_PMOVSXBW128): Likewise.
1493         (IX86_BUILTIN_PMOVSXBD128): Likewise.
1494         (IX86_BUILTIN_PMOVSXBQ128): Likewise.
1495         (IX86_BUILTIN_PMOVSXWD128): Likewise.
1496         (IX86_BUILTIN_PMOVSXWQ128): Likewise.
1497         (IX86_BUILTIN_PMOVSXDQ128): Likewise.
1498         (IX86_BUILTIN_PMOVZXBW128): Likewise.
1499         (IX86_BUILTIN_PMOVZXBD128): Likewise.
1500         (IX86_BUILTIN_PMOVZXBQ128): Likewise.
1501         (IX86_BUILTIN_PMOVZXWD128): Likewise.
1502         (IX86_BUILTIN_PMOVZXWQ128): Likewise.
1503         (IX86_BUILTIN_PMOVZXDQ128): Likewise.
1504         (IX86_BUILTIN_PMULDQ128): Likewise.
1505         (IX86_BUILTIN_PMULLD128): Likewise.
1506         (IX86_BUILTIN_ROUNDPD): Likewise.
1507         (IX86_BUILTIN_ROUNDPS): Likewise.
1508         (IX86_BUILTIN_ROUNDSD): Likewise.
1509         (IX86_BUILTIN_ROUNDSS): Likewise.
1510         (IX86_BUILTIN_PTESTZ): Likewise.
1511         (IX86_BUILTIN_PTESTC): Likewise.
1512         (IX86_BUILTIN_PTESTNZC): Likewise.
1513         (IX86_BUILTIN_VEC_EXT_V16QI): Likewise.
1514         (IX86_BUILTIN_VEC_SET_V2DI): Likewise.
1515         (IX86_BUILTIN_VEC_SET_V4SF): Likewise.
1516         (IX86_BUILTIN_VEC_SET_V4SI): Likewise.
1517         (IX86_BUILTIN_VEC_SET_V16QI): Likewise.
1518         (bdesc_ptest): New.
1519         (bdesc_sse_3arg): Likewise.
1520         (bdesc_2arg): Likewise.
1521         (bdesc_1arg): Likewise.
1522         (ix86_init_mmx_sse_builtins): Support SSE4.1.  Handle SSE builtins
1523         with 3 args.
1524         (ix86_expand_sse_4_operands_builtin): New.
1525         (ix86_expand_unop_builtin): Support 2 arg builtins with a constant
1526         smaller than 8 bits as the 2nd arg.
1527         (ix86_expand_sse_ptest): New.
1528         (ix86_expand_builtin): Support SSE4.1. Support 3 arg SSE builtins.
1529         (ix86_expand_vector_set): Support SSE4.1.
1530         (ix86_expand_vector_extract): Likewise.
1531
1532         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Define
1533         __SSE4_1__ for -msse4.1.
1534
1535         * config/i386/i386.md (UNSPEC_BLENDV): New for SSE4.1.
1536         (UNSPEC_INSERTPS): Likewise.
1537         (UNSPEC_DP): Likewise.
1538         (UNSPEC_MOVNTDQA): Likewise.
1539         (UNSPEC_MPSADBW): Likewise.
1540         (UNSPEC_PHMINPOSUW): Likewise.
1541         (UNSPEC_PTEST): Likewise.
1542         (UNSPEC_ROUNDP): Likewise.
1543         (UNSPEC_ROUNDS): Likewise.
1544
1545         * config/i386/i386.opt (msse4.1): New for SSE4.1.
1546
1547         * config/i386/predicates.md (const_pow2_1_to_2_operand): New.
1548         (const_pow2_1_to_32768_operand): Likewise.
1549
1550         * config/i386/smmintrin.h: New. The SSE4.1 intrinsic header
1551         file.
1552
1553         * config/i386/sse.md (*vec_setv4sf_sse4_1): New pattern for
1554         SSE4.1.
1555         (sse4_1_insertps): Likewise.
1556         (*sse4_1_extractps): Likewise.
1557         (sse4_1_ptest): Likewise.
1558         (sse4_1_mulv2siv2di3): Likewise.
1559         (*sse4_1_mulv4si3): Likewise.
1560         (*sse4_1_smax<mode>3): Likewise.
1561         (*sse4_1_umax<mode>3): Likewise.
1562         (*sse4_1_smin<mode>3): Likewise.
1563         (*sse4_1_umin<mode>3): Likewise.
1564         (sse4_1_eqv2di3): Likewise.
1565         (*sse4_1_pinsrb): Likewise.
1566         (*sse4_1_pinsrd): Likewise.
1567         (*sse4_1_pinsrq): Likewise.
1568         (*sse4_1_pextrb): Likewise.
1569         (*sse4_1_pextrb_memory): Likewise.
1570         (*sse4_1_pextrw_memory): Likewise.
1571         (*sse4_1_pextrq): Likewise.
1572         (sse4_1_blendpd): Likewise.
1573         (sse4_1_blendps): Likewise.
1574         (sse4_1_blendvpd): Likewise.
1575         (sse4_1_blendvps): Likewise.
1576         (sse4_1_dppd): Likewise.
1577         (sse4_1_dpps): Likewise.
1578         (sse4_1_movntdqa): Likewise.
1579         (sse4_1_mpsadbw): Likewise.
1580         (sse4_1_packusdw): Likewise.
1581         (sse4_1_pblendvb): Likewise.
1582         (sse4_1_pblendw): Likewise.
1583         (sse4_1_phminposuw): Likewise.
1584         (sse4_1_extendv8qiv8hi2): Likewise.
1585         (*sse4_1_extendv8qiv8hi2): Likewise.
1586         (sse4_1_extendv4qiv4si2): Likewise.
1587         (*sse4_1_extendv4qiv4si2): Likewise.
1588         (sse4_1_extendv2qiv2di2): Likewise.
1589         (*sse4_1_extendv2qiv2di2): Likewise.
1590         (sse4_1_extendv4hiv4si2): Likewise.
1591         (*sse4_1_extendv4hiv4si2): Likewise.
1592         (sse4_1_extendv2hiv2di2): Likewise.
1593         (*sse4_1_extendv2hiv2di2): Likewise.
1594         (sse4_1_extendv2siv2di2): Likewise.
1595         (*sse4_1_extendv2siv2di2): Likewise.
1596         (sse4_1_zero_extendv8qiv8hi2): Likewise.
1597         (*sse4_1_zero_extendv8qiv8hi2): Likewise.
1598         (sse4_1_zero_extendv4qiv4si2): Likewise.
1599         (*sse4_1_zero_extendv4qiv4si2): Likewise.
1600         (sse4_1_zero_extendv2qiv2di2): Likewise.
1601         (*sse4_1_zero_extendv2qiv2di2): Likewise.
1602         (sse4_1_zero_extendv4hiv4si2): Likewise.
1603         (*sse4_1_zero_extendv4hiv4si2): Likewise.
1604         (sse4_1_zero_extendv2hiv2di2): Likewise.
1605         (*sse4_1_zero_extendv2hiv2di2): Likewise.
1606         (sse4_1_zero_extendv2siv2di2): Likewise.
1607         (*sse4_1_zero_extendv2siv2di2): Likewise.
1608         (sse4_1_roundpd): Likewise.
1609         (sse4_1_roundps): Likewise.
1610         (sse4_1_roundsd): Likewise.
1611         (sse4_1_roundss): Likewise.
1612         (mulv4si3): Don't expand for SSE4.1.
1613         (smax<mode>3): Likewise.
1614         (umaxv4si3): Likewise.
1615         (uminv16qi3): Likewise.
1616         (umin<mode>3): Likewise.
1617         (umaxv8hi3): Rewrite.  Only enabled for SSE4.1.
1618
1619         * doc/extend.texi: Document SSE4.1 built-in functions.
1620
1621         * doc/invoke.texi: Document -msse4.1.
1622
1623 2007-05-22  Nathan Sidwell  <nathan@codesourcery.com>
1624
1625         * config/m68k/linux.h (ASM_SPEC): Add asm_pcrel_spec.
1626         * config/m68k/m68k-none.h (ASM_SPEC): Don't override here.
1627         * config/m68k/m68k.h (ASM_PCREL_SPEC): New.
1628         (ASM_SPEC): Add asm_pcrel_spec.
1629         (EXTRA_SPECS): Add asm_pcrel_spec.
1630
1631 2007-05-21  David Daney  <ddaney@avtrex.com>
1632
1633         * doc/install.texi (Building a cross compiler): Add requirements
1634         for Java cross compiler.
1635
1636 2007-05-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1637
1638         PR middle-end/31995
1639         * tree-chrec.c (evolution_function_is_affine_multivariate_p):
1640         Add loopno argument.  Use evolution_function_is_invariant_rec_p
1641         instead of evolution_function_is_constant_p.
1642         Update calls to evolution_function_is_affine_multivariate_p.
1643         * tree-chrec.h (evolution_function_is_affine_multivariate_p):
1644         Add loopno argument.
1645         * tree-scalar-evolution.c (gather_chrec_stats): Call
1646         evolution_function_is_affine_multivariate_p with a loop
1647         number of 0.
1648         * tree-data-ref.c (analyze_miv_subscript): Likewise.
1649         (analyze_overlapping_iterations): Likewise.
1650         (access_functions_are_affine_or_constant_p): Likewise.
1651         (build_classic_dist_vector_1): If the access functions
1652         are equal, don't do anything.
1653
1654 2007-05-21  Paolo Bonzini  <bonzini@gnu.org>
1655             Paolo Carlini  <pcarlini@suse.de>
1656             Uros Bizjak  <ubizjak@gmail.com>
1657
1658         * c-cppbuiltin.c (c_cpp_builtins): Define
1659         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2,
1660         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8,
1661         __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16, if appropriate.
1662         * doc/cpp.texi ([Standard Predefined Macros]): Document.
1663
1664 2007-05-21  Mike Stump  <mrs@apple.com>
1665
1666         * config/darwin.h (LINK_COMMAND_SPEC): Add .cxx/.cp for dsymutil
1667         handling as well.
1668         * config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
1669
1670 2007-05-21  Uros Bizjak  <ubizjak@gmail.com>
1671
1672         * config/i386/tmmintrin.h (_mm_alignr_epi8): Provide macro
1673         implementation if __OPTIMIZE__ is not defined.
1674         (_mm_alignr_pi8): Ditto.
1675         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
1676         (_mm_inserti_si64): Ditto.
1677         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
1678         (_mm_slli_epi16): Ditto.
1679         (_mm_slli_epi32): Ditto.
1680         (_mm_slli_epi64): Ditto.
1681         (_mm_srai_epi16): Ditto.
1682         (_mm_srai_epi32): Ditto.
1683         (_mm_srli_si128): Ditto.
1684         (_mm_slli_si128): Ditto.
1685         (_mm_srli_epi16): Ditto.
1686         (_mm_srli_epi32): Ditto.
1687         (_mm_srli_epi64): Ditto.
1688         (_mm_extract_epi16): Ditto.
1689         (_mm_insert_epi16): Ditto.
1690         (_mm_shufflehi_epi16): Ditto.
1691         (_mm_shufflelo_epi16): Ditto.
1692         (_mm_shuffle_epi32): Ditto.
1693         * config/i386/xmmintrin.h (_mm_extract_pi16): Ditto.
1694         (_m_pextrw): Ditto.
1695         (_mm_insert_pi16): Ditto.
1696         (_m_pinsrw): Ditto.
1697         (_mm_shuffle_pi16): Ditto.
1698         (_m_pshufw): Ditto.
1699         (_mm_shufle_ps): Ditto.
1700         (_mm_prefetch): Ditto.
1701
1702 2007-05-21  Andreas Krebbel  <krebbel1@de.ibm.com>
1703
1704         * defaults.h (IBM_FLOAT_FORMAT): Macro definition removed.
1705         * doc/tm.texi (IBM_FLOAT_FORMAT): Documentation entry removed.
1706         * real.c (encode_i370_single, decode_i370_single,
1707         encode_i370_double, decode_i370_double): Functions removed.
1708         (i370_single_format, i370_double_format): Initializations removed.
1709         (real_maxval, round_for_format, exact_real_truncate, significand_size):
1710         Consider the log2_b field to always be one.
1711         (ieee_single_format, mips_single_format, coldfire_single_format,
1712         ieee_double_format, mips_double_format, coldfire_double_format,
1713         ieee_extended_motorola_format, ieee_extended_intel_96_format,
1714         ieee_extended_intel_128_format, ieee_extended_intel_96_round_53_format,
1715         ibm_extended_format, mips_extended_format, ieee_quad_format,
1716         mips_quad_format, vax_f_format, vax_d_format, vax_g_format,
1717         decimal_single_format, decimal_double_format, decimal_quad_format,
1718         c4x_single_format, c4x_extended_format, real_internal_format): Remove
1719         initialization of log2_b.
1720         * real.h (i370_single_format, i370_double_format): Declarations removed.
1721         * c-cppbuiltin.c (builtin_define_float_constants): Consider the log2_b
1722         field to always be one.
1723
1724 2007-05-21  Andreas Schwab  <schwab@suse.de>
1725
1726         * config/ia64/ia64.c (emit_predicate_relation_info): Fix use of
1727         NOTE_INSN_BASIC_BLOCK_P.
1728         (process_for_unwind_directive): Likewise.
1729
1730 2007-05-21  Nathan Sidwell  <nathan@codesourcery.com>
1731
1732         * builtins.c (expand_builtin_setjmp_setup): Update comment.
1733         * function.h (struct function): Move va_list_gpr_size,
1734         va_list_fpr_size, function_frequency to front of bitfields.  Add
1735         calls_unwind_init.
1736         (current_function_calls_unwind_init): New.
1737         * except.c (expand_builtin_unwind_init): Set
1738         current_function_calls_unwind_init not
1739         current_function_has_nonlocal_label.
1740         * reload1.c (has_nonexceptional_receiver): New.
1741         (reload): Use it and current_function_calls_unwind_init to
1742         determine whether call-saved regs must be saved.
1743
1744 2007-05-20  Jan Hubicka  <jh@suse.cz>
1745
1746         * gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
1747         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1748         * ddg.c (create_ddg): LIkewise.
1749         * final.c (final): Remove hunk moving line numbernotes around since
1750         they are no longer present at this stage.
1751         (final_scan_insn): Use NOTE_KIND instead of
1752         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1753         (output_asm_label): Likewise.
1754         * reorg.c (dbr_schedule): Likewise.
1755         * haifa-sched.c (unlink_other_notes): Likewise.
1756         * mode-switching.c (optimize_mode_switching): Likewise.
1757         * graph.c (start_bb): Likewise.
1758         * rtl.def (NOTE): Update description.
1759         * jump.c (squeeze_notes): Delete.
1760         (mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
1761         NOTE_INSN_BASIC_BLOCK_P when possible.
1762         * ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
1763         * dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
1764         NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
1765         (dwarf2out_var_location): Likewise.
1766         * cfgbuild.c (make_edges): Likewise.
1767         (find_basic_blocks_1): Likewise.
1768         * function.c (reorder_blocks_1): Likewise.
1769         (epilogue_done): Likewise.
1770         (reposition_prologue_and_epilogue_notes): Likewise.
1771         * print-rtl.c (print_rtx): Likewise; drop code for printing line number
1772         notes.
1773         (print_rtl): Likewise.
1774         (print_rtl_single): Likewise.
1775         * gcse.c (insert_insn_start_bb): Likewise.
1776         * alias.c (init_alias_analysis): Likewise.
1777         * calls.c (fixup_tail_calls): Likewise.
1778         * except.c (sjlj_emit_function_enter): Likewise.
1779         * emit-rtl.c (add_insn_after): Likeiwse.
1780         (emit_label_before): Likewise.
1781         (emit_label_after): Likewise.
1782         (emit_note_before, emit_note_after, emit_note): Update
1783         parameter to be enum insn_note; do not deal with source
1784         files.
1785         * cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
1786         Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
1787         when possible.
1788         (merge_blocks_move_successor_nojumps): Simplify now when
1789         we don't have BLOCK notes.
1790         (try_optimize_cfg): Likewise.
1791         * cfglayout.c (skip_insns_after_block): Likewise.
1792         (record_effective_endpoints): Likewise.
1793         (duplicate_insn_chain): Likewise.
1794         * varasm.c (output_constant_pool_1): Likewise.
1795         * sched-deps.c (sched_analyze): Likewise.
1796         * rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
1797         Exterminate.
1798         (note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
1799         * rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
1800         (SET_INSN_DELETED): Simplify.
1801         (NOTE_LINE_NUMBER): Exterminate.
1802         (NOTE_LINE_KIND): New.
1803         (NOTE_INSN_BASIC_BLOCK_P): Update.
1804         (enum insn_note): Simplify.
1805         (GET_NOTE_INSN_NAME) Simplify.
1806         (emit_note_before, emit_note_after, emit_note): Update prototype.
1807         (squeeze_notes): Remove.
1808         * sched-int.h (NOTE_NOT_BB_P): Update.
1809         * resource.c (mark_target_live_regs): Update.
1810         * sched-rgn.c (debug_dependencies): Update.
1811         * sched-vis.c (print_insn): Update.
1812         * config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
1813         * config/i386/i386.c (ix86_output_function_epilogue): Update.
1814         * config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
1815         (TARGET_ADJUST_UNROLL_MAX): Likewise.
1816         (split_branches): Update.
1817         (sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
1818         4.0.0.
1819         (sh_adjust_unroll_max): Exterminate.
1820         * config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
1821         * config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
1822         (m68hc11_reorg): Likewise.
1823         * config/ia64/ia64.c (emit_insn_group_barriers): Update.
1824         (emit_predicate_relation_info): Update.
1825         (process_for_unwind_directive): Update.
1826         * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
1827         (output_call): Update.
1828         * config/pa/pa.c (output_lbranch): Update.
1829         (output_millicode_call): Update.
1830         (output_call): Update.
1831         (pa_combine_instructions): Update.
1832         * config/mips/mips.c (mips16_gp_pseudo_reg): Update.
1833         * config/bfin/bfin.c (gen_one_bundle): Update.
1834         * cfgrtl.c (can_delete_note_p): Update.
1835         (delete_insn): Update.
1836         (rtl_merge_blocks): Update.
1837         (commit_one_edge_insertion): Update.
1838         (rtl_verify_flow_info): Update.
1839         * stmt.c (expand_case): Do not call squeeze_notes.
1840
1841 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1842
1843         PR middle-end/7651
1844         PR c++/11856
1845         PR c/12963
1846         PR c/23587
1847         PR other/29694
1848         * c.opt (Wtype-limits): New.
1849         * doc/invoke.texi (Wtype-limits): Document it.
1850         (Wextra): Enabled by -Wextra.
1851         * c-opts.c (c_common_post_options): Enabled by -Wextra.
1852         * c-common.c (shorten_compare): Warn with Wtype-limits.
1853
1854 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
1855
1856         * config/i386/tmmintrin.h (_mm_alignr_epi32): Implement as always
1857         inlined function, not as a macro.
1858         (_mm_alignr_pi8): Ditto.
1859         * config/i386/ammintrin.h (_mm_extracti_si64): Ditto.
1860         (_mm_inserti_si64): Ditto.
1861         * config/i386/emmintrin.h (_mm_shuffle_pd): Ditto.
1862         (_mm_extract_epi16): Ditto.
1863         (_mm_insert_epi16): Ditto.
1864         (_mm_shufflehi_epi16): Ditto.
1865         (_mm_shufflelo_epi16): Ditto.
1866         (_mm_shuffle_epi32): Ditto.
1867         * config/i386/xmmintrin.h (_mm_set_ss): Use 0.0f for float constant.
1868         * config/386/mm3dnow.h: Add __attribute__((__always_inline__)) to
1869         all functions.
1870         (_m_from_float): Add __extension__ to conversion.  Use 0.0f for
1871         float constant.
1872         (_m_to_float): Use C89 compatible assignment.
1873
1874 2007-04-20  Martin Michlmayr  <tbm@cyrius.com>
1875
1876         PR target/32007
1877         * config/arm/lib1funcs.asm: Define __ARM_ARCH__ on v2/v3 machines.
1878
1879 2007-05-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1880
1881         PR middle-end/7651
1882         * doc/invoke.texi (Wreturn-type): Complete description.
1883         (Wextra): Delete item about return-type warning.
1884         * c-decl.c: Delete redundant Wextra warning.
1885
1886 2007-05-20  Uros Bizjak  <ubizjak@gmail.com>
1887
1888         PR target/31585
1889         * config/i386/pmmintrin.h: Do not include xmmintrin.h
1890         * config/i386/xmmintrin.h (_mm_extract_pi16): Implement as always
1891         inlined function, not as a macro.
1892         (_mm_prefetch): Ditto.
1893         (_m_pextrw): Ditto.
1894         (_mm_insert_pi16): Ditto.
1895         (_m_pinsrw): Ditto.
1896         (_mm_shuffle_pi16): Ditto.  Add const to __N argument.
1897         (_m_pshufw): Ditto. Add const to __N argument.
1898         (_mm_shufle_ps): Ditto.  Add const to __mask argument.
1899         * config/i386/emmintrin.h (_mm_slli_epi16): Add const to __B argument.
1900         (_mm_slli_epi32): Ditto.
1901         (_mm_srli_si128): Implement as always inlined function, not as a macro.
1902         Add __inline to function declaration.
1903         (_mm_slli_si128): Ditto.
1904
1905 2007-05-19  Uros Bizjak  <ubizjak@gmail.com>
1906
1907         * config/i386/sfp-machine.h (FP_EX_INVALID, FP_EX_DENORM,
1908         FP_EXP_DIVZERO, FP_EX_OVERFLOW, FP_EX_UNDERFLOW, FP_EX_INEXACT):
1909         New constants.
1910         (struct fenv): New structure.
1911         (FP_HANDLE_EXCEPTIONS): New define.
1912         (FP_RND_NEAREST, FP_RND_ZERO, FP_RND_PINF, FP_RND_MINF): New constants.
1913         (_FP_DECL_EXP): New define.
1914         (FP_INIT_ROUNDMODE): New define.
1915         (FP_ROUNDMODE): New define.
1916
1917 2007-05-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1918
1919         * doc/invoke.texi (Warning Options): Add -Wconversion-sign.
1920         (Wconversion): Update description.
1921         (Wconversion-sign): New.
1922         * c.opt (Wconversion-sign): New.
1923         * c-opts.c (c_common_post_options): Uninitialized Wconversion-sign
1924         means disabled for C++. Otherwise, take the status of Wconversion.
1925         * c-common.c (conversion_warning): Warn with either Wconversion or
1926         Wconversion-sign.
1927         (warnings_for_convert_and_check): Conditions are already checked by
1928         conversion_warning.
1929         (convert_and_check): Don't check warnings if the conversion failed.
1930
1931 2007-05-19 Andy Hutchinson <HutchinsonAndy@netscape.net>
1932            Anatoly Sokolov <aesok@dol.ru>
1933
1934         * config/avr/avr-protos.h (expand_prologue, expand_epilogue,
1935         avr_epilogue_uses) : Add declaration.
1936         * config/avr/predicates.md (avr_sp_immediate_operand): New predicate.
1937         * config/avr/constraints.md (R): New constraint.
1938         config/avr/avr.md (SREG_ADDR, UNSPEC_SEI, UNSPEC_CLI,
1939         UNSPECV_PROLOGUE_SAVES, UNSPECV_EPILOGUE_RESTORES): New constants.
1940         (*pop1, *pop2, *pop3, *pop4, *pop5): Combine into ...
1941         (*addhi3_sp_R_pc2, *addhi3_sp_R_pc3): ... these patterns.
1942         (*movhi_sp, popqi, pophi, enable_interrupt, disable_interrupt,
1943         call_prologue_saves, epilogue_restores, return_from_epilogue,
1944         return_from_main_epilogue, return_from_interrupt_epilogue,
1945         return_from_naked_epilogue, prologue, epilogue): New patterns.
1946         (jump): Handle symbol reference.
1947         * config/avr/avr.c (out_adj_frame_ptr, out_set_stack_ptr,
1948         avr_output_function_prologue, avr_output_function_epilogue): Remove
1949         functions.
1950         (avr_init_machine_status, expand_prologue, expand_epilogue,
1951         avr_asm_function_end_prologue, avr_epilogue_uses,
1952         avr_asm_function_begin_epilogue): New functions.
1953         (prologue_size, epilogue_size, jump_tables_size): Remove global
1954         variables.
1955         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Remove.
1956         (TARGET_ASM_FUNCTION_END_PROLOGUE): Define.
1957         (TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): Define.
1958         (avr_override_options): Initialise init_machine_status.
1959         (output_movhi): Handle all stack pointer loads.
1960         (out_movqi_r_mr, out_movqi_mr_r): Handle SREG_ADDR address.
1961         (avr_output_addr_vec_elt): Do not use variable jump_tables_size.
1962         * config/avr/avr.h (AVR_2_BYTE_PC, AVR_3_BYTE_PC): New.
1963         (EPILOGUE_USES) Redefine.
1964         (machine_function) Declare.
1965
1966 2007-05-19  Richard Sandiford  <richard@codesourcery.com>
1967
1968         * config/mips/mips.c (mips_offset_within_alignment_p): Tweak comment.
1969         Use a single return statement.
1970
1971 2007-05-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1972
1973         PR middle-end/30250
1974         * builtins.c (do_mpfr_lgamma_r): New.
1975         (fold_builtin_2): Handle builtin gamma_r/lgamma_r.
1976         * tree.h (CASE_FLT_FN_REENT): New.
1977
1978 2007-05-18  Geoffrey Keating  <geoffk@apple.com>
1979
1980         * dwarf2out.c (print_die): Use '%ld' not '%lu' to print a 'long'.
1981         (output_die): Use 'unsigned long' with %x.
1982         * sched-vis.c (print_value): Use 'unsigned HOST_WIDE_INT' and
1983         HOST_WIDE_INT_PRINT_HEX to print HOST_WIDE_INT.
1984         * tree-dump.c (dump_pointer): Use 'unsigned long' for %lx.
1985
1986         * unwind-dw2.c (uw_identify_context): Use the CFA, not the IP.
1987
1988 2007-05-18  H.J. Lu  <hongjiu.lu@intel.com>
1989
1990         PR target/31989
1991         PR target/31681
1992         PR target/31666
1993         * config/i386/i386.c (init_cumulative_args): Set maybe_vaarg to
1994         true if function has no argument.
1995
1996 2007-05-18  DJ Delorie  <dj@redhat.com>
1997
1998         * config/mips/mips.c (mips_offset_within_alignment_p): New.
1999         (mips_symbolic_constant_p): Call it for TPREL and DTPREL symbols.
2000
2001 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2002
2003         * longlong.h (__x86_64__): Add definitions for add_ssaaaa,
2004         sub_ddmmss, umul_ppmm, udiv_qrnnd, count_leading_zeros and
2005         count_trailing_zeros.
2006         (__i386__): Implement count_leading_zeros using __builtin_clz().
2007         Implement count_trailing_zeros usign __builtin_ctz().
2008
2009 2007-05-18  Richard Sandiford  <richard@codesourcery.com>
2010
2011         * config/i386/vxworks.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine.
2012
2013 2007-05-18  Uros Bizjak  <ubizjak@gmail.com>
2014
2015         PR middle-end/31344
2016         * expr.c (emit_move_change_mode): Change mode of push operands here.
2017
2018 2007-05-17  Ian Lance Taylor  <iant@google.com>
2019
2020         PR tree-optimization/31953
2021         * tree-vrp.c (set_value_range_to_value): Add equiv parameter.
2022         Change all callers.
2023         (set_value_range_to_null): Call set_value_range_to_value.
2024         (extract_range_from_comparison): Likewise.
2025
2026 2007-05-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2027
2028         * toplev.c (print_version): Output GMP/MPFR version info.
2029
2030         * builtins.c (CASE_MATHFN_REENT): New macro.
2031         (mathfn_built_in): Use it.
2032         * builtins.def (BUILT_IN_GAMMA_R, BUILT_IN_GAMMAF_R,
2033         BUILT_IN_GAMMAL_R, BUILT_IN_LGAMMA_R, BUILT_IN_LGAMMAF_R,
2034         BUILT_IN_LGAMMAL_R): New.
2035         * doc/extend.texi: Document new builtins.
2036
2037         PR middle-end/31796
2038         * builtins.c (do_mpfr_remquo): New.
2039         (fold_builtin_2): Handle BUILT_IN_DREM/BUILT_IN_REMAINDER.
2040         (fold_builtin_3): Handle BUILT_IN_REMQUO.
2041
2042         PR middle-end/30251
2043         * builtins.c (fold_builtin_1): Handle y0, y1.
2044         (fold_builtin_2): Handle yn.
2045
2046         PR middle-end/30251
2047         * builtins.c (do_mpfr_bessel_n): New.
2048         (fold_builtin_1): Handle BUILT_IN_J0 and BUILT_IN_J1.
2049         (fold_builtin_2): Handle BUILT_IN_JN.
2050
2051 2007-05-17  Danny Smith  <dannysmith@users.sourceforge.net>
2052
2053         PR target/31965
2054         * config/i386/mingw32.h (_INTEGRAL_MAX_BITS): Define builtin as
2055         TYPE_PRECISION (intmax_type_node).
2056
2057 2007-05-17  Steve Ellcey  <sje@cup.hp.com>
2058
2059         PR target/31850
2060         * reload.c (subst_reloads): Remove checking.
2061
2062 2007-05-17  Eric Botcazou  <ebotcazou@libertysurf.fr>
2063
2064         PR rtl-optimization/31691
2065         * combine.c (simplify_set): Build a new src pattern instead of
2066         substituting its operands in the COMPARE case.
2067
2068 2007-05-17  Zdenek Dvorak  <dvorakz@suse.cz>
2069
2070         * tree-vrp.c (finalize_jump_threads): Do not care about dominance info.
2071         (execute_vrp): Preserve loops through jump threading.
2072         * tree-ssa-threadupdate.c (thread_single_edge,
2073         dbds_continue_enumeration_p, determine_bb_domination_status,
2074         thread_through_loop_header): New functions.
2075         (create_edge_and_update_destination_phis,
2076         create_edge_and_update_destination_phis): Set loops for the new blocks.
2077         (prune_undesirable_thread_requests): Removed.
2078         (redirect_edges): Do not pretend that redirect_edge_and_branch can
2079         create new blocks.
2080         (thread_block): Do not call prune_undesirable_thread_requests.
2081         Update loops.
2082         (mark_threaded_blocks): Select edges to thread here.
2083         (thread_through_all_blocks): Take may_peel_loop_headers argument.
2084         Thread edges through loop headers independently.
2085         * cfgloopmanip.c (create_preheader, mfb_keep_just): Export.
2086         * tree-pass.h (TODO_mark_first_instance): New.
2087         (first_pass_instance): Declare.
2088         * cfghooks.c (duplicate_block): Put the block to the original loop
2089         if copy is not specified.
2090         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Preserve loops through
2091         jump threading.  Pass may_peel_loop_headers to
2092         thread_through_all_blocks according to first_pass_instance.
2093         * cfgloop.h (create_preheader): Declare.
2094         * tree-flow.h (thread_through_all_blocks): Declaration changed.
2095         * basic-block.h (mfb_keep_just, mfb_kj_edge): Declare.
2096         * passes.c (first_pass_instance): New variable.
2097         (next_pass_1): Set TODO_mark_first_instance.
2098         (execute_todo): Set first_pass_instance.
2099
2100 2007-05-17  Uros Bizjak  <ubizjak@gmail.com>
2101
2102         PR tree-optimization/24659
2103         * optabs.h (enum optab_index): Add OTI_vec_unpacks_float_hi,
2104         OTI_vec_unpacks_float_lo, OTI_vec_unpacku_float_hi,
2105         OTI_vec_unpacku_float_lo, OTI_vec_pack_sfix_trunc and
2106         OTI_vec_pack_ufix_trunc.
2107         (vec_unpacks_float_hi_optab): Define new macro.
2108         (vec_unpacks_float_lo_optab): Ditto.
2109         (vec_unpacku_float_hi_optab): Ditto.
2110         (vec_unpacku_float_lo_optab): Ditto.
2111         (vec_pack_sfix_trunc_optab): Ditto.
2112         (vec_pack_ufix_trunc_optab): Ditto.
2113         * genopinit.c (optabs): Implement vec_unpack[s|u]_[hi|lo]_optab
2114         and vec_pack_[s|u]fix_trunc_optab using
2115         vec_unpack[s|u]_[hi\lo]_* and vec_pack_[u|s]fix_trunc_* patterns
2116         * tree-vectorizer.c (supportable_widening_operation): Handle
2117         FLOAT_EXPR and CONVERT_EXPR.  Update comment.
2118         (supportable_narrowing_operation): New function.
2119         * tree-vectorizer.h (supportable_narrowing_operation): Prototype.
2120         * tree-vect-transform.c (vectorizable_conversion): Handle
2121         (nunits_in == nunits_out / 2) and (nunits_out == nunits_in / 2) cases.
2122         (vect_gen_widened_results_half): Move before vectorizable_conversion.
2123         (vectorizable_type_demotion): Call supportable_narrowing_operation()
2124         to check for target support.
2125         * optabs.c (optab_for_tree_code) Return vec_unpack[s|u]_float_hi_optab
2126         for VEC_UNPACK_FLOAT_HI_EXPR, vec_unpack[s|u]_float_lo_optab
2127         for VEC_UNPACK_FLOAT_LO_EXPR and vec_pack_[u|s]fix_trunc_optab
2128         for VEC_PACK_FIX_TRUNC_EXPR.
2129         (expand_binop): Special case mode of the result for
2130         vec_pack_[u|s]fix_trunc_optab.
2131         (init_optabs): Initialize vec_unpack[s|u]_[hi|lo]_optab and
2132         vec_pack_[u|s]fix_trunc_optab.
2133
2134         * tree.def (VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR,
2135         VEC_PACK_FIX_TRUNC_EXPR): New tree codes.
2136         * tree-pretty-print.c (dump_generic_node): Handle
2137         VEC_UNPACK_FLOAT_HI_EXPR, VEC_UNPACK_FLOAT_LO_EXPR and
2138         VEC_PACK_FIX_TRUNC_EXPR.
2139         (op_prio): Ditto.
2140         * expr.c (expand_expr_real_1): Ditto.
2141         * tree-inline.c (estimate_num_insns_1): Ditto.
2142         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
2143
2144         * config/i386/sse.md (vec_unpacks_float_hi_v8hi): New expander.
2145         (vec_unpacks_float_lo_v8hi): Ditto.
2146         (vec_unpacku_float_hi_v8hi): Ditto.
2147         (vec_unpacku_float_lo_v8hi): Ditto.
2148         (vec_unpacks_float_hi_v4si): Ditto.
2149         (vec_unpacks_float_lo_v4si): Ditto.
2150         (vec_pack_sfix_trunc_v2df): Ditto.
2151
2152         * doc/c-tree.texi (Expression trees) [VEC_UNPACK_FLOAT_HI_EXPR]:
2153         Document.
2154         [VEC_UNPACK_FLOAT_LO_EXPR]: Ditto.
2155         [VEC_PACK_FIX_TRUNC_EXPR]: Ditto.
2156         * doc/md.texi (Standard Names) [vec_pack_sfix_trunc]: Document.
2157         [vec_pack_ufix_trunc]: Ditto.
2158         [vec_unpacks_float_hi]: Ditto.
2159         [vec_unpacks_float_lo]: Ditto.
2160         [vec_unpacku_float_hi]: Ditto.
2161         [vec_unpacku_float_lo]: Ditto.
2162
2163 2007-05-16  Uros Bizjak  <ubizjak@gmail.com>
2164
2165         * soft-fp/README: Update for new files.
2166         * soft-fp/floattisf.c: New file.
2167         * soft-fp/floattidf.c: New file.
2168         * soft-fp/floattitf.c: New file.
2169         * soft-fp/floatuntisf.c: New file.
2170         * soft-fp/floatuntidf.c: New file.
2171         * soft-fp/floatuntitf.c: New file.
2172         * soft-fp/fixsfti.c: New file.
2173         * soft-fp/fixdfti.c: New file.
2174         * soft-fp/fixtfti.c: New file.
2175         * soft-fp/fixunssfti.c: New file.
2176         * soft-fp/fixunsdfti.c: New file.
2177         * soft-fp/fixunstfti.c: New file.
2178         * soft-fp/extendxftf.c: New file.
2179         * soft-fp/trunctfxf.c: New file.
2180
2181         * libgcc-std.ver (__extendxftf2): Added to GCC_4.3.0 section.
2182         (__trunctfxf2): Ditto.
2183
2184         * config/i386/libgcc-x86_64-glibc.ver (__addtf3, __divtf3, __eqtf2,
2185         __extenddftf2, __extendsftf2, __fixtfdi, __fixtfsi, __fixtfti,
2186         __fixunstfdi, __fixunstfsi, __fixunstfti, __floatditf, __floatsitf,
2187         __floattitf, __floatunditf, __floatunsitf, __floatuntitf, __getf2,
2188         __letf2, __multf3, __negtf2, __subtf3, __trunctfdf2, __trunctfsf2,
2189         __unordtf2): Exclude and add to GCC_4.3.0 section for x86_64 targets.
2190
2191         * config/i386/t-fprules-softfp64: New file.
2192         * config/i386/sfp-machine.h: New file.
2193         * config.gcc (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu,
2194         x86_64-*-knetbsd*-gnu): Add i386/t-fprules-softfp64
2195         and soft-fp/t-softfp to tmake_file.
2196         (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu,
2197         i[34567]86-*-knetbsd*-gnu): Ditto for --enable-targets=all.
2198
2199         * config/i386/t-linux64 (softfp_wrap_start): New.
2200         (softfp_wrap_end): New.
2201         * config/i386/i386.c (ix86_scalar_mode_supported): TFmode is
2202         supported for TARGET_64BIT.
2203
2204 2007-05-16  Rafael Avila de Espindola  <espindola@google.com>
2205
2206         * c-common.c (c_common_signed_or_unsigned_type): Emulate
2207         c_common_unsigned_type behavior.
2208
2209 2007-05-16  Paolo Bonzini  <bonzini@gnu.org>
2210
2211         * config/i386/i386.c (legitimize_tls_address): Mark __tls_get_addr
2212         calls as pure.
2213
2214 2007-05-16  Eric Christopher  <echristo@apple.com>
2215
2216         * config/rs6000/rs6000.c (rs6000_emit_prologue): Move altivec register
2217         saving after stack push. Set sp_offset whenever we push.
2218         (rs6000_emit_epilogue): Move altivec register restore before
2219         stack push.
2220
2221 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
2222
2223         * configure.ac: Allow sysroots to be relocated under $prefix as
2224         well as $exec_prefix.
2225         * configure: Regenerate.
2226
2227 2007-05-16  Richard Sandiford  <richard@codesourcery.com>
2228
2229         Revert:
2230
2231         2007-05-12  Richard Sandiford  <richard@codesourcery.com>
2232
2233         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2234         (gcc_tooldir): Likewise.
2235         * configure: Regenerate.
2236         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2237         old configure.ac gcc_tooldir setting.
2238         (prefix_to_exec_prefix): New variable.
2239         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2240         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2241
2242 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
2243
2244         * c-typeck.c (build_binary_op): Return early for error.
2245
2246 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
2247
2248         * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
2249         struct nb_iter_bound.
2250         (free_numbers_of_iterations_estimates_loop): Use ggc_free.
2251         * gengtype.c (open_base_files): Add cfhloop.h to the list of includes.
2252         * cfgloopmanip.c (place_new_loop): Vector larray is gc-allocated.
2253         * tree-scalar-evolution.c: Include gt-tree-scalar-evolution.h.
2254         (struct scev_info_str, scalar_evolution_info): Add GTY markers.
2255         (new_scev_info_str): Use GGC_NEW to allocate struct scev_info_str.
2256         (del_scev_info): Use ggc_free.
2257         (scev_initialize): Allocate scalar_evolution_info in gc memory.
2258         * loop-init.c: Include ggc.h.
2259         (loop_optimizer_init): Use GGC_CNEW to allocate struct loops.
2260         (loop_optimizer_finalize): Use ggc_free.
2261         * tree-ssa-loop.c (pass_tree_unswitch, pass_vectorize,
2262         pass_linear_transfom, pass_empty_loop, pass_complete_unroll,
2263         pass_iv_optimize): Add TODO_ggc_collect.
2264         * function.h (struct function): Remove skip marker from x_current_loops.
2265         * cfgloop.c: Include ggc.h.
2266         (flow_loops_free, flow_loop_free): Free the loop descriptions in gc
2267         memory.
2268         (establish_preds): Vector superloops is gc allocated.
2269         (alloc_loop): Allocate loop using GGC_CNEW.  Allocate head of
2270         loop->exits list.
2271         (flow_loops_find): Vector larray is gc allocated.
2272         (loop_exit_free): Use ggc_free.
2273         (rescan_loop_exit): Use GGC_NEW to allocate struct loop_exit.  Reflect
2274         that head of exits list is now not a part of struct loop.
2275         (record_loop_exits): Allocate exits table in gc memory.
2276         (get_loop_exit_edges, verify_loop_structure, single_exit): Reflect that
2277         head of exits list is now not a part of struct loop.
2278         * cfgloop.h (struct lpt_decision, struct nb_iter_bound,
2279         struct loop_exit): Add GTY marker.
2280         (struct loop): Add GTY marker.  Make superloops vector gc allocated.
2281         Add skip marker to aux field.  Make head of exits list a separate
2282         object.
2283         (struct loops): Add GTY marker.  Make larray vector gc allocated.
2284         Add param marker to exits table.
2285         (get_loops): Type changed.
2286         * Makefile.in (tree-scalar-evolution.o): Add gt-tree-scalar-evolution.h
2287         dependency.
2288         (cfgloop.o, loop-init.o): Add ggc.h dependency.
2289         (GTFILES): Add cfgloop.h and tree-scalar-evolution.c.
2290         * basic-block.h (struct basic_block_def): Remove skip marker from
2291         loop_father field.
2292
2293 2007-05-14  Uros Bizjak  <ubizjak@gmail.com>
2294
2295         * builtins.c (expand_builtin_mathfn): Use EXPAND_NORMAL instead
2296         of 0 in the call to expand_expr().
2297         (expand_builtin_mathfn_3): Ditto.
2298         (expand_builtin_interclass_mathfn): Ditto.
2299         (expand_builtin_cexpi): Ditto.
2300         (expand_builtin_int_roundingfn): Ditto.
2301         (expand_builtin_int_roundingfn_2): Ditto.
2302         (expand_builtin_pow): Ditto.
2303         (expand_builtin_powi): Ditto.
2304         (expand_builtin_bswap): Ditto.
2305         (expand_builtin_unop): Ditto.
2306         (expand_builtin_fabs): Ditto.
2307         (get_builtin_sync_mem): Use NULL_RTX instead of NULL in
2308         the call to expand_expr().
2309         (expand_builtin_sync_operation): Ditto.
2310         (expand_builtin_compare_and_swap): Ditto.
2311         (expand_builtin_lock_test_and_set): Ditto.
2312         * except.c (expand_builtin_eh_return_data_regno): Use EXPAND_NORMAL
2313         instead of 0 in the call to expand_expr().
2314         (expand_builtin_extract_return_addr): Ditto.
2315         (expand_builtin_eh_return): Ditto.
2316         (expand_eh_return): Ditto.
2317         * explow.c (expr_size): Ditto.
2318         * expr.c (optimize_bitfield_assignment_op): Ditto.
2319         (expand_assignement): Ditto.
2320         (store_expr): Ditto.
2321         (store_field): Ditto.
2322         (expand_expr_addr_expr_1): Use NULL_RTX instead of NULL in
2323         the call to expand_expr().
2324         (expand_expr_real_1) [COMPLEX_CST]: Use EXPAND_NORMAL instead of 0
2325         in the call to expand_expr().
2326         [CONSTRUCTOR, PLUS_EXPR, MINUS_EXPR, NEGATE_EXPR, ABS_EXPR,
2327         BIT_NOT_EXPR, LSHIFT_EXPR, LT_EXPR, TRUTH_NOT_EXPR]: Ditto.
2328         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO]: Use expand_normal() instead
2329         of expand_expr().
2330         * optabs.c (expand_vec_shift_expr): Ditto.
2331         (expand_vec_cond_expr): Ditto.
2332         (vector_compare_rtx): Use EXPAND_STACK_PARM instead of 1 in the
2333         call to expand_expr().
2334         * stmt.c (expand_return): Use EXPAND_NORMAL instead of 0
2335         in the call to expand_expr().
2336
2337 2007-05-14  Dave Korn  <dave.korn@artimi.com>
2338
2339         * genautomata.c (gen_regexp_el):  Allocate correct size for regexp.
2340
2341 2007-05-14  Rafael Avila de Espindola  <espindola@google.com>
2342
2343         * c-common.c (warnings_for_convert_and_check): Use unsigned_type_for
2344         instead of c_common_unsigned_type.
2345         (c_common_unsigned_type): Remove.
2346         (shorten_compare): Use c_common_signed_or_unsigned_type instead of
2347         c_common_unsigned_type.
2348         (c_common_nodes_and_builtins): Use unsigned_type_for instead of
2349         c_common_unsigned_type.
2350         * c-common.h (c_common_unsigned_type): Remove.
2351         * c-decl.c (grokdeclarator): Use unsigned_type_for instead of
2352         c_common_unsigned_type.
2353         * c-format.c (check_format_types): Use unsigned_type_for instead of
2354         c_common_unsigned_type.
2355         * c-objc-common.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2356         * c-typeck.c (convert_for_assignment): Use unsigned_type_for instead of
2357         c_common_unsigned_type.
2358         * convert.c (convert_to_integer): Use unsigned_type_for instead of
2359         lang_hooks.types.unsigned_type.
2360         * expmed.c (make_tree): Use unsigned_type_for instead of
2361         lang_hooks.types.unsigned_type.
2362         * fold-const.c (fold_negate_expr): Use unsigned_type_for instead of
2363         lang_hooks.types.unsigned_type.
2364         (build_range_check): Likewise.
2365         (fold_unary): Likewise.
2366         (fold_binary): Likewise.
2367         (fold_ternary): Likewise.
2368         * langhooks-def.h (LANG_HOOKS_UNSIGNED_TYPE): Remove.
2369         * langhooks.h (lang_hooks_for_types): Remove unsigned_type.
2370         * tree.c (get_unsigned_type): New.
2371         (unsigned_type_for): Use get_unsigned_type instead of
2372         lang_hooks.types.unsigned_type.
2373
2374 2007-05-14  Kazu Hirata  <kazu@codesourcery.com>
2375
2376         * config/m68k/m68k-protos.h: Rename m68k_interrupt_function_p
2377         to m68k_get_function_kind.  Update its prototype.
2378         * config/m68k/m68k.c (m68k_attribute_table): Add an entry for
2379         interrupt_thread.
2380         (m68k_interrupt_function_p): Return enum m68k_function_type
2381         instead of bool.  Rename to m68k_get_function_kind.
2382         (m68k_handle_fndecl_attribute): Reject interrupt_thread if the
2383         target is not fido.
2384         (m68k_compute_frame_layout): Don't mark any register for save
2385         if an interrupt_thread attribute is specified.
2386         (m68k_hard_regno_rename_ok): Update a use of
2387         m68k_interrupt_function_p.
2388         * config/m68k/m68k.h (EPILOGUE_USES): Update a use of
2389         m68k_interrupt_function_p.
2390         (m68k_function_type): New.
2391         * config/m68k/m68k.md (*return): Output a 'sleep' instruction
2392         for a function with an interrupt_thread attribute.
2393         * doc/extend.texi: Document the interrupt_thread attribute.
2394
2395 2007-05-13  Daniel Berlin  <dberlin@dberlin.org>
2396
2397         Fix PR tree-optimization/31911
2398         * tree-ssa-pre.c (phi_translate): Make sure to cache results even
2399         if they didn't change the expression.
2400
2401 2007-05-13  Zdenek Dvorak  <dvorakz@suse.cz>
2402
2403         * tree-scalar-evolution.c (resolve_mixers): Exported.
2404         * tree-scalar-evolution.h (resolve_mixers): Declare.
2405         * tree-data-ref.c (object_analysis, ptr_decl_may_alias_p,
2406         ptr_ptr_may_alias_p, may_alias_p, record_ptr_differ_p,
2407         record_record_differ_p, record_array_differ_p, array_ptr_differ_p,
2408         base_object_differ_p, base_addr_differ_p, analyze_array_indexes,
2409         init_array_ref, init_pointer_ref, analyze_indirect_ref,
2410         strip_conversion, analyze_offset_expr, address_analysis,
2411         object_analysis, analyze_offset): Removed.
2412         (dr_analyze_innermost, dr_analyze_indices, dr_analyze_alias,
2413         split_constant_offset, canonicalize_base_object_address,
2414         object_address_invariant_in_loop_p, disjoint_objects_p,
2415         dr_may_alias_p, dr_address_invariant_p): New functions.
2416         (create_data_ref): Use dr_analyze_innermost, dr_analyze_indices
2417         and dr_analyze_alias.
2418         (initialize_data_dependence_relation): Use dr_may_alias_p
2419         and object_address_invariant_in_loop_p.
2420         (compute_self_dependence): Handle the case when DDR_ARE_DEPENDENT (ddr)
2421         is chrec_dont_know.
2422         (find_data_references_in_stmt): Restrict the analysis of data references
2423         to the given loop nest.
2424         (find_data_references_in_loop): Made static.  Pass loop nest to
2425         find_data_references_in_stmt.
2426         (compute_data_dependences_for_loop): Use DR_VOPS.
2427         (free_data_ref): Free DR_VOPS.
2428         * tree-data-ref.h (struct first_location_in_loop): Replaced by ...
2429         (struct innermost_loop_behavior): ... new.
2430         (struct base_object_info): Replaced by ...
2431         (struct indices): ... new.
2432         (struct dr_alias): New.
2433         (enum data_ref_type): Removed.
2434         (struct data_reference): Consist of struct innermost_loop_behavior,
2435         struct indices and struct dr_alias.
2436         (DR_SET_ACCESS_FNS, DR_FREE_ACCESS_FNS): Removed.
2437         (DR_MEMTAG): Renamed to ...
2438         (DR_SYMBOL_TAG): ... this.
2439         (find_data_references_in_loop): Declaration removed.
2440         * tree-vect-analyze.c (vect_compute_data_ref_alignment): Use DR_INIT
2441         instead of DR_OFFSET_MISALIGNMENT.  DR_ALIGNED_TO is never NULL.
2442         (vect_analyze_data_refs): Use DR_SYMBOL_TAG instead of DR_MEMTAG.
2443         * tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
2444
2445 2007-05-13  Revital Eres  <eres@il.ibm.com>
2446
2447         * tree-ssa-dse.c (get_use_of_stmt_lhs): New function
2448         which walks virtual def-use chains to find redundant stores.
2449         (dse_optimize_stmt): Call it.
2450
2451 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
2452
2453         * gcse.c (gcse_main): Do jump bypassing in CPROP2.
2454         * passes.c (init_optimization_passes): Move pass_jump_bypass
2455         after loop2.
2456
2457         * basic-block.h (bb_has_eh_pred): Fix style issue.
2458
2459 2007-05-12  Steven Bosscher  <steven@gcc.gnu.org>
2460
2461         PR rtl-optimization/31848
2462         * loop-invariant.c (move_invariant_reg): If we move an insn
2463         with a REG_EQUAL note, and that insn is not always executed,
2464         remove the REG_EQUAL note.
2465
2466 2007-05-12  Richard Guenther  <rguenther@suse.de>
2467
2468         PR tree-optimization/31797
2469         * tree-ssa-forwprop.c (forward_propagate_addr_expr): Do not
2470         propagate into a stmt that has volatile ops.
2471
2472 2007-05-12  Richard Sandiford  <richard@codesourcery.com>
2473
2474         * configure.ac (gcc_gxx_include_dir): Use $(libsubdir_to_prefix).
2475         (gcc_tooldir): Likewise.
2476         * configure: Regenerate.
2477         * Makefile.in (libsubdir_to_prefix): New variable, based on the
2478         old configure.ac gcc_tooldir setting.
2479         (prefix_to_exec_prefix): New variable.
2480         (DRIVER_DEFINES): Use $(libsubdir_to_prefix)$(prefix_to_exec_prefix)
2481         rather than $(unlibsubdir)/../ to derive TOOLDIR_BASE_PREFIX.
2482
2483 2007-05-11  Silvius Rus  <rus@google.com>
2484
2485         * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
2486         * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
2487         * c-common.h (strict_aliasing_warning): Change return type.
2488         * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
2489         * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
2490         (build_c_cast): Condition call to strict_aliasing_warning.
2491         * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
2492         * flags.h (set_Wstrict_aliasing): Declare.
2493         * opts.c (set_Wstrict_alising): Define, add call to.
2494         * tree-flow.h (strict_aliasing_warning_backend): Declare.
2495         * tree-ssa-alias-warnings.c: New file.
2496         * tree-ssa-alias.c (compute_may_aliases): Add call to
2497         strict_aliasing_warning_backend.
2498
2499 2007-05-11  Zdenek Dvorak  <dvorakz@suse.cz>
2500
2501         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
2502         Use loop_depth and loop_outer accessor functions.
2503         * tree-ssa-loop-im.c (outermost_invariant_loop, set_level,
2504         determine_invariantness_stmt, move_computations_stmt): Ditto.
2505         * cfgloopmanip.c (fix_bb_placement, fix_loop_placement, remove_path,
2506         add_loop, loopify, unloop, fix_loop_structure): Ditto.
2507         * tree-ssa-loop-manip.c (find_uses_to_rename_use): Ditto.
2508         * tree-scalar-evolution.c (interpret_loop_phi,
2509         compute_scalar_evolution_in_loop, analyze_scalar_evolution_in_loop,
2510         instantiate_parameters_1, scev_const_prop): Ditto.
2511         * cfghooks.c (make_forwarder_block): Ditto.
2512         * cfgloopanal.c (mark_irreducible_loops, mark_loop_exit_edges): Ditto.
2513         * modulo-sched.c (loop_canon_p): Ditto.
2514         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg,
2515         slpeel_can_duplicate_loop_p): Ditto.
2516         * lambda-code.c (invariant_in_loop_and_outer_loops): Ditto.
2517         * tree-cfg.c (tree_duplicate_sese_region): Ditto.
2518         * cfgloop.c (flow_loop_dump, flow_loop_nodes_find, rescan_loop_exit,
2519         cancel_loop, verify_loop_structure): Ditto.
2520         (flow_loop_nested_p, superloop_at_depth, flow_loop_free,
2521         add_bb_to_loop, remove_bb_from_loops, find_common_loop): Use the
2522         superloops vector instead of "pred" array.
2523         (establish_preds): Take father loop as an argument.  Initialize the
2524         superloops vector.
2525         (flow_loop_tree_node_add): Pass father loop to establish_preds.  Do not
2526         initialize loop->outer.
2527         (flow_loop_tree_node_remove): Truncate the superloops vector.
2528         * cfgloop.h (struct loop): Removed field "outer", fields "depth" and
2529         "pred" merged to "superloops" vector.
2530         (loop_depth, loop_outer): New.
2531         (fel_init): Use loop_outer.
2532
2533 2007-05-11  Jan Hubicka  <jh@suse.cz>
2534
2535         * cgraphunit.c: Include gt-cgraphunit.h
2536         (static_ctors, static_dtors): New static vars.
2537         (record_cdtor_fn, build_cdtor, cgraph_build_cdtor_fns): New functions,
2538         based on implementation in c-common.c
2539         (cgraph_finalize_function): Call record_cdtor_fn.
2540         (cgraph_optimize): Call cgraph_build_cdtor_fns.
2541         * decl.c (finish_function): Do not call c_record_cdtor_fn.
2542         (c_write_global_declarations): Do not call c_build_cdtor_fns.
2543         * c-common.c (static_ctors, static_dtors, c_record_cdtor_fn,
2544         build_cdtor, c_build_cdtor_fns): Remove.
2545         * c-common.h (static_ctors, static_dtors, c_record_cdtor_fn,
2546         c_build_cdtor_fns): Remove prototype.
2547
2548 2007-05-11  Paolo Carlini  <pcarlini@suse.de>
2549
2550         PR other/31852
2551         * builtin-types.def: Add BT_FN_PTR_CONST_PTR_INT_SIZE.
2552         * builtins.def: Add BUILT_IN_MEMCHR, use the latter.
2553         * builtins.c (fold_builtin_memchr): New.
2554         (expand_builtin_memchr): Call the latter.
2555         (expand_builtin, fold_builtin_3): Deal with BUILT_IN_MEMCHR.
2556         * doc/extend.texi ([Other built-in functions provided by GCC]):
2557         Document memchr.
2558
2559 2007-05-11  Andreas Krebbel  <krebbel1@de.ibm.com>
2560
2561         * config/s390/s390.md (GPR0_REGNUM, FPR0_REGNUM, FPR2_REGNUM,
2562         PFPO_CONVERT, PFPO_OP_TYPE_SF, PFPO_OP_TYPE_DF, PFPO_OP_TYPE_TF,
2563         PFPO_OP_TYPE_SD, PFPO_OP_TYPE_DD, PFPO_OP_TYPE_TD, PFPO_OP0_TYPE_SHIFT,
2564         PFPO_OP1_TYPE_SHIFT): Constants added.
2565         (DFP_ALL): Mode macro defined.
2566         ("*trunc<BFP:mode><DFP_ALL:mode>2", "*trunc<DFP_ALL:mode><BFP:mode>2",
2567         "*extend<BFP:mode><DFP_ALL:mode>2", "*extend<DFP_ALL:mode><BFP:mode>2"):
2568         Insn definitions added.
2569         ("trunc<BFP:mode><DFP_ALL:mode>2", "trunc<DFP_ALL:mode><BFP:mode>2",
2570         "extend<BFP:mode><DFP_ALL:mode>2", "extend<DFP_ALL:mode><BFP:mode>2"):
2571         Expanders added.
2572
2573 2007-05-10  Zdenek Dvorak  <dvorakz@suse.cz>
2574
2575         PR tree-optimization/31885
2576         * tree-chrec.c (chrec_contains_undetermined): Do not consider NULL_TREE
2577         to be undetermined.
2578         (automatically_generated_chrec_p): Return false for NULL.
2579
2580 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2581
2582         * config/bfin/bfin.h (MOVE_RATIO): Define.
2583
2584 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
2585
2586         * config.gcc (sparc-wrs-vxworks): New target.
2587         * config/sparc/vxworks.h, config/sparc/t-vxworks: New files.
2588         * config/sparc/sparc-protos.h (sparc_emit_call_insn): Declare.
2589         * config/sparc/sparc.h: Include vxworks-dummy.h.
2590         (PRINT_OPERAND_ADDRESS): Extend SYMBOL_REF handling to
2591         include LABEL_REFs too.
2592         * config/sparc/sparc.c (sparc_expand_move): Don't assume that
2593         _GLOBAL_OFFSET_TABLE_ - label_ref is a link-time constant on
2594         VxWorks.
2595         (legitimize_pic_address): Handle LABEL_REFs like SYMBOL_REFs
2596         on VxWorks.
2597         (load_pic_register): Use gen_vxworks_load_got for VxWorks.
2598         (sparc_emit_call_insn): New function.
2599         (sparc_function_ok_for_sibcall): Restrict sibcalls to locally-binding
2600         functions when generating VxWorks PIC.
2601         * config/sparc/sparc.md (vxworks_load_got): New pattern.
2602         (call, call_value): Use sparc_emit_call_insn instead of
2603         emit_call_insn.
2604
2605 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
2606
2607         * config/xtensa/xtensa.c (xtensa_output_literal): Don't use #if.
2608
2609 2007-05-09  Bob Wilson  <bob.wilson@acm.org>
2610
2611         * config/xtensa/xtensa.c (xtensa_output_literal): Mask out high bits
2612         for floating-point values if HOST_BITS_PER_LONG > 32.  Use split_double
2613         instead of operand_subword.
2614
2615 2007-05-08  Bernd Schmidt  <bernd.schmidt@analog.com>
2616
2617         * config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
2618         * config/bfin/bfin.c (bfin_local_alignment): New function.
2619         * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
2620
2621 2007-05-08  Chao-ying Fu  <fu@mips.com>
2622
2623         * doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
2624         * optabs.h (OTI_smsub_widen, OTI_umsub_widen): New optab_indexes.
2625         (smsub_widen_optab, umsub_widen_optab): Define.
2626         * optabs.c (init_optabs): Initialize smsub_widen_optab and
2627         umsub_widen_optab.
2628         * genopinit.c (optabs): Fill in smsub_widen_optab and
2629         umsub_widen_optab.
2630         * expr.c (expand_expr_real_1): Try to use smsub_widen_optab
2631         and umsub_widen_optab to implement multiply-subtract sequences.
2632         * config/mips/mips.md (*msac<u>_di): Rename to...
2633         (<u>msubsidi4): ...this.  Extend condition to include
2634         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
2635         of operand 0 to "ka" and use the three-operand form of msub<u>
2636         for TARGET_DSPR2.
2637         * config/mips/mips-dspr2.md (mips_msub, mips_msubu): Convert
2638         to define_expands.
2639
2640 2007-05-08  Kaz Kojima  <kkojima@gcc.gnu.org>
2641
2642         PR rtl-optimization/28011
2643         * reload.c (push_reload): Set dont_share if IN appears in OUT
2644         also when IN is a PLUS rtx.
2645         (reg_overlap_mentioned_for_reload_p): Return true if X and IN
2646         are same PLUS rtx.
2647
2648 2007-05-08  Kazu Hirata  <kazu@codesourcery.com>
2649
2650         * emit-rtl.c (unshare_all_rtl_1): Don't copy DECL_RTL.  Don't
2651         call unshare_all_decls.
2652         (unshare_all_rtl): Adjust the call to unshare_all_rtl_1.
2653         (unshare_all_decls): Remove.
2654
2655 2007-05-08  Simon Martin  <simartin@users.sourceforge.net>
2656
2657         PR 31847
2658         * tree-dump.c (dump_options): Don't use TDF_DIAGNOSTIC in "*-all" tree
2659         dumps.
2660
2661 2007-05-08  Sandra Loosemore  <sandra@codesourcery.com>
2662             Nigel Stephens  <nigel@mips.com>
2663
2664         * config/mips/mips.h (MAX_FPRS_PER_FMT): Renamed from FP_INC.
2665         Update comments and all uses.
2666         (MIN_FPRS_PER_FMT): Define.
2667         * config/mips/mips.c (function_arg): Fix to correctly handle
2668         the -mips32r2 -mfp64 -mabi=32 case.
2669         (override_options): Enable use of odd-numbered registers for
2670         SFmode values on MIPS32.
2671         (mips_save_reg_p): Save whole floating-point register pair if
2672         either half is used.
2673         (compute_frame_size): Fix comment.
2674
2675 2007-05-08  Jie Zhang  <jie.zhang@analog.com>
2676
2677         * config/bfin/bfin-protos.h (bfin_expand_epilogue): Add a third
2678         argument of type bool.
2679         * config/bfin/bfin.c (add_to_reg): Add epilogue_p as a fourth
2680         argument. Safely select temporary P register according to it.
2681         (do_link): Change call site of add_to_reg accordingly.
2682         (do_unlink): Add epilogue_p as a fourth argument and pass it
2683         to add_to_reg.
2684         (expand_interrupt_handler_epilogue): Change call of do_unlink
2685         accordingly.
2686         (bfin_expand_prologue): Add a third argument sibcall_p.
2687         * config/bfin/bfin.md (epilogue): Change call of
2688         bfin_expand_epilogue accordingly.
2689         (sibcall_epilogue): Likewise.
2690         (eh_return_internal): Likewise.
2691
2692         * config/bfin/bfin-protos.h (enum bfin_cpu): Add
2693         BFIN_CPU_BF534, BFIN_CPU_BF536 and BFIN_CPU_BF561.
2694         * config/bfin/bfin.c (bfin_handle_option): Handle
2695         -mcpu=bf534, -mcpu=bf536 and -mcpu=bf561.
2696         * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS):
2697         Support bf534, bf536 and bf561.
2698         * doc/invoke.texi (Blackfin Options): Document -mcpu and -msim.
2699
2700 2007-05-08  Uros Bizjak  <ubizjak@gmail.com>
2701
2702         PR target/31854
2703         * config/i386/i386.c (ix86_function_regparm): Process local
2704         functions only when TREE_CODE (decl) equals FUNCTION_DECL.
2705
2706 2007-05-07  Mike Stump  <mrs@apple.com>
2707
2708         * doc/invoke.texi (Warning Options): Document that -Wempty-body
2709         also checks for and while statements in C++.
2710
2711 2007-05-07  Nathan Froyd  <froydnj@codesourcery.com>
2712
2713         * gcc.c (at_file_supplied): New variable.
2714         (main): Set it if we expanded argv.
2715         (do_spec_1): Pass an @-file to the linker if we were called with
2716         an @-file argument and HAVE_GNU_LD.
2717         * collect2.c (at_file_supplied): New variable.
2718         (response_file): New variable.
2719         (collect_exit): Unlink response_file if necessary.
2720         (handler): Likewise.
2721         (do_wait): Likewise.
2722         (main): Set at_file_supplied if we expanded argv.
2723         (collect_execute): Pass an @-file to subprocesses if we were called
2724         with an @-file argument.
2725         * configure.ac: Add define for HAVE_GNU_LD.
2726         * configure: Regenerate.
2727         * config.in: Regenerate.
2728
2729 2007-05-07  Naveen.H.S  <naveen.hs@kpitcummins.com>
2730
2731         * config/m32c/muldiv.md (mulhisi3_c): Limit the mode of the 2nd
2732         operand to HI mode.
2733         (mulsi3): New.
2734         (divsi3): New.
2735         (udivsi3): New.
2736
2737 2007-05-07  Jayant Sonar  <jayants@kpitcummins.com>
2738
2739         * config/m32c/m32c.c (SYMBOL_FLAG_FUNCVEC_FUNCTION): Define.
2740         (TARGET_ENCODE_SECTION_INFO): Re-define.
2741         (m32c_encode_section_info): New
2742         (function_vector_handler): New
2743         (current_function_special_page_vector): New
2744         (m32c_special_page_vector_p): New.
2745         * config/m32c/m32c-protos.h (m32c_special_page_vector_p):
2746         Prototype.
2747         * config/m32c/jump.md: Added instruction JSRS for functions
2748         with attribute "function_vector".
2749         * doc/extend.texi (function_vector): Added description
2750         for M16C, M32C targets.
2751
2752 2007-05-07  DJ Delorie  <dj@redhat.com>
2753
2754         PR 31794
2755         * config/m32c/shift.md (ashlpsi3_i, ashrpsi3_i, ashlpsi3,
2756         ashrpsi3, lshrpsi3): Update shift count constraint.
2757
2758 2007-05-07  Danny Smith  <dannysmith@users.sourceforge.net>
2759             Nathan Froyd  <froydnj@codesourcery.com>
2760
2761         PR 22133
2762         * c-incpath.c (add_path): Strip trailing path separators.
2763
2764 2007-05-07  Eric Botcazou  <ebotcazou@adacore.com>
2765
2766         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Reset cfg_altered.
2767         Free dominance info before purging EH edges.
2768         (eliminate_degenerate_phis): Likewise.
2769         (propagate_rhs_into_lhs): Set cfg_altered to true instead of 1.
2770
2771 2007-05-07  Jan Hubicka  <jh@suse.cz>
2772
2773         * gimplify.c (gimplify_expr): Do not crash when folding
2774         (void *)(int)&a + 4.
2775
2776 2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
2777
2778         PR driver/31694
2779         * c-opts.c (lang_fortran): Make it non static.
2780         * c-common.h (lang_fortran): New prototype.
2781         * c-cppbuiltin.c (c_cpp_builtins): Create a __GFORTRAN__ if the
2782         -lang-fortran option was passed by the driver.
2783
2784 2007-05-06  Eric Botcazou  <ebotcazou@adacore.com>
2785
2786         * timevar.c (timevar_print): Test ENABLE_ASSERT_CHECKING instead
2787         of ASSERT_CHECKING.  Tweak message.
2788
2789 2007-05-06  Revital Eres  <eres@il.ibm.com>
2790
2791         PR 30957
2792         * loop-unroll.c (insert_var_expansion_initialization):
2793         Initialize the expansions with -zero instead of +zero.
2794
2795 2007-05-05  Aurelien Jarno  <aurelien@aurel32.net>
2796
2797         * config/pa/pa.md: Split tgd_load, tld_load and tie_load
2798         into pic and non-pic versions. Mark r19 as used for
2799         tgd_load_pic, tld_load_pic and tie_load_pic. Mark r27 as used
2800         for tgd_load, tld_load and tie_load .
2801         * config/pa/pa.c (legitimize_tls_address): Emit pic or non-pic
2802         version of tgd_load, tld_load and tie_load depending on the
2803         value of flag_pic.
2804
2805 2007-05-04  Ulrich Drepper  <drepper@redhat.com>
2806             Jakub Jelinek  <jakub@redhat.com>
2807
2808         * crtstuff.c (HIDDEN_DTOR_LIST_END): New macro.
2809         (__do_global_dtors_aux): Use more paranoid loop to run
2810         destructors if HIDDEN_DTOR_LIST_END.
2811         (__DTOR_END__): Export as a hidden symbol when HIDDEN_DTOR_LIST_END.
2812
2813 2007-05-04  Jakub Jelinek  <jakub@redhat.com>
2814
2815         * varasm.c (align_variable): Don't increase alignment for
2816         DECL_THREAD_LOCAL_P variables above BITS_PER_WORD through
2817         DATA_ALIGNMENT or CONSTANT_ALIGNMENT.
2818
2819 2007-05-04  Josh Conner  <jconner@apple.com>
2820
2821         * basic-block.h (cdi_direction): Assign values to all enumeration
2822         constants.
2823         (dom_computed): Remove.
2824         (dom_info_state): New.
2825         (set_dom_info_availability): New.
2826         * tree-ssa-loop-im.c (determine_invariantness): Initialize
2827         walk_data.dom_direction.
2828         * cfghooks.c (delete_basic_block): Use dom_info_available_p()
2829         instead of dom_computed[].
2830         (split_edge): Likewise.
2831         (create_basic_block): Likewise.
2832         (merge_blocks): Likewise.
2833         * ifcvt.c (find_if_header): Likewise.
2834         * tree-cfgcleanup.c (cleanup_tree_cfg): Likewise.
2835         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
2836         * tree-ssa.c (verify_ssa): Likewise.
2837         * tree-cfg.c (tree_verify_flow_info): Likewise.
2838         (remove_edge_and_dominated_blocks): Likewise.
2839         * dominance.c (dom_computed): Make static.
2840         (calc_dfs_tree_nonrec): Change third param to a bool.
2841         (calc_dfs_tree): Change second param to a bool.
2842         (calc_idioms): Change second param to a bool.  Use
2843         dom_convert_dir_to_idx.
2844         (init_dom_info): Validate dir before using.
2845         (dom_convert_dir_to_idx): New.
2846         (calculate_dominance_info): Use dom_convert_dir_to_idx.  New
2847         variable 'reverse' used for calling calc_dfs_tree and calc_idoms.
2848         (free_dominance_info): Use dom_convert_dir_to_idx.
2849         (get_immediate_dominator): Likewise.
2850         (set_immediate_dominator): Likewise.
2851         (get_dominated_by): Likewise.
2852         (redirect_immediate_dominators): Likewise.
2853         (nearest_common_denominator): Likewise.
2854         (dominated_by_p): Likewise.
2855         (bb_dom_dfs_in): Likewise.
2856         (bb_dom_dfs_out): Likewise.
2857         (recount_dominator): Likewise.
2858         (iterate_fix_dominators): Likewise.
2859         (add_to_dominance_info): Likewise.
2860         (delete_from_dominance_info): Likewise.
2861         (first_dom_son): Likewise.
2862         (next_dom_son): Likewise.
2863         (dom_info_available_p): Likewise.
2864         (dom_info_state): New.
2865         (set_dom_info_availability): New.
2866
2867 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2868
2869         * config/s390/s390.md ("fix_trunc<mode>di2", "fix_trunc<mode>si2"):
2870         Expander removed.
2871         ("fix_trunc<DSF:mode><GPR:mode>2"): Expander added.
2872
2873 2007-05-04  Bob Wilson  <bob.wilson@acm.org>
2874
2875         * config/xtensa/xtensa.md (adddi3, adddi_carry): Delete.
2876         (subdi3, subdi_carry): Delete.
2877
2878 2007-05-04  Jan Hubicka  <jh@suse.cz>
2879             Richard Guenther  <rguenther@suse.de>
2880
2881         * opts.c (decode_options): Do not fiddle with inlining
2882         parameters in case of optimizing for size.
2883         * ipa-inline.c (cgraph_decide_recursive_inlining): When optimizing
2884         for size do nothing.
2885         (cgraph_decide_inlining_of_small_function): When optimizing for
2886         size never inline functions increasing caller size.
2887         (cgraph_early_inlining): Inline for size when optimizing for size.
2888
2889 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
2890
2891         * config/bfin/bfin.md (<optab>di3): Now a define_expand which expands
2892         logical operations piecewise.
2893         (<optab>di_zesidi_di, <optab>di_sesidi_di, negdi2, one_cmpldi2,
2894         zero_extendsidi2, subdi_di_zesidi, subdi_zesidi_di, subdi_di_sesidi,
2895         subdi_sesidi_di): Delete.
2896         (add_with_carry): Produce carry in CC instead of a DREG to shorten
2897         the generated sequence.  Allow three-reg add in constraints.  Rewrite
2898         the rtl expression for carry to avoid zero_extend of a constant.
2899         (sub_with_carry): New pattern.
2900         (adddi3, subdi3): Change into define_expand.  For subtract, generate a
2901         different sequence not involving jumps.
2902         (notbi): Now a named pattern.
2903
2904 2007-05-04  Bradley Lucier  <lucier@math.purdue.edu>
2905
2906         * doc/invoke.texi (i386 and x86-64 Options) [-mpc32, -mpc64, -mpc80]:
2907         Add the note about a significant loss of accuracy of some
2908         mathematical routines when these options are used.
2909
2910 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2911
2912         * haifa-sched.c (rtx_vec_t): New typedef.
2913         (contributes_to_priority_p): Extract piece of priority () into new
2914         static function.
2915         (priority): Use the function.  Add assertion.
2916         (rank_for_schedule, set_priorities): Add assertion to check that
2917         insn's priority is initialized.
2918         (clear_priorities, calc_priorities): Change signature.  Make it update
2919         all relevant insns.  Update all callers ('add_to_speculative_block ()'
2920         and 'create_block_check_twin ()').
2921         * sched-int.h (struct haifa_insn_data): Remove field 'priority_known'.
2922         Add new field 'priority_status'.
2923         (INSN_PRIORITY_STATUS): New macro.
2924         (INSN_PRIORITY_KNOWN): Change to use INSN_PRIORITY_STATUS.
2925
2926 2007-05-04  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
2927
2928         * sched-ebb.c (debug_ebb_dependencies): New static function.
2929         (init_ready_list): Use it.
2930
2931         * sched-rgn.c (debug_dependencies): Split into 'debug_dependencies ()'
2932         with changed signature and 'debug_rgn_dependencies ()'.
2933         (debug_rgn_dependencies): New static function.
2934         (init_ready_list): Use it.
2935
2936         * sched-int.h (debug_dependencies): Declare.
2937
2938 2007-05-04  Andreas Krebbel  <krebbel1@de.ibm.com>
2939
2940         * libgcc-std.ver (__ffssi2): Added to GCC_4.3.0 section.
2941
2942 2007-05-04  Dirk Mueller  <dmueller@suse.de>
2943
2944         * c.opt(Wmain,ffreestanding): Enable for C++,ObjC++.
2945
2946 2007-05-03  Jan Hubicka  <jh@suse.cz>
2947
2948         * fold-const.c (fold_unary): Convert (T1)(X op Y) into ((T1)X op (T1)Y),
2949         for pointer type in more cases than before.
2950
2951         * gimplify.c (gimplify_expr): Fold (void *)&a + 4.
2952
2953         * tree-object-size.c (plus_expr_object_size): When operand size is
2954         unknown, return unknown.
2955
2956 2007-05-03  Dirk Mueller  <dmueller@suse.de>
2957
2958         * doc/invoke.texi (-m386,-m486,-mpentium,-mpentiumpro): Remove.
2959
2960         * config/i386/i386.h (CC1_CPU_SPEC): Remove handling for deprecated
2961         options.
2962
2963         * config/i386/i386.opt (m386,m486,mpentium,mpentiumpro): Remove.
2964
2965 2007-05-03  Janis Johnson  <janis187@us.ibm.com>
2966
2967         * doc/sourcebuild.texi (Test Directives) Clarify dg-excess-errors.
2968
2969 2007-05-03  Joseph Myers  <joseph@codesourcery.com>
2970
2971         * config/soft-fp/double.h, config/soft-fp/extended.h,
2972         config/soft-fp/floatundidf.c, config/soft-fp/floatundisf.c,
2973         config/soft-fp/floatunsidf.c, config/soft-fp/floatunsisf.c,
2974         config/soft-fp/op-2.h, config/soft-fp/op-4.h,
2975         config/soft-fp/op-common.h, config/soft-fp/quad.h: Update from
2976         glibc CVS.
2977
2978 2007-05-03  Ian Lance Taylor  <iant@google.com>
2979
2980         * config/rs6000/rs6000.c (rs6000_override_options): Don't set
2981         MASK_PPC_GFXOPT for 8540 or 8548.
2982
2983 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
2984
2985         * tree-vect-transform.c (vect_update_inits_of_drs): Use
2986         vect_print_dump_info() to output debug information.
2987
2988 2007-05-03  Uros Bizjak  <ubizjak@gmail.com>
2989
2990         PR target/31768
2991         * config/i386/i386.c (print_operand) ['z']: Output 'w' for
2992         operands of size 2 when operand is not MEM_P.
2993
2994 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
2995
2996         PR tree-optimization/30565
2997         * lambda-code.c (perfect_nestify): Fix updating of dominators.
2998
2999 2007-05-03  Bernd Schmidt  <bernd.schmidt@analog.com>
3000
3001         * config/bfin/bfin.md (addpdi3, us_truncpdisi2): New patterns.
3002         (umulsi3_highpart): Use them.
3003         * config/bfin/lib1funcs.asm (__umulsi3_highpart): Use unsigned move
3004         for final accumulator to D regisster tranfser.
3005
3006 2007-05-03  Dorit Nuzman  <dorit@il.ibm.com>
3007
3008         PR tree-optimization/31699
3009         * tree-vect-analyze.c (vect_update_misalignment_for_peel): Remove wrong
3010         code.
3011         (vect_enhance_data_refs_alignment): Compute peel amount using
3012         TYPE_VECTOR_SUBPARTS instead of vf.
3013         * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Likewise.
3014
3015 2007-05-02  Brooks Moses  <brooks.moses@codesourcery.com>
3016
3017         PR bootstrap/31776
3018         * system.h: Remove inclusion of double-int.h
3019         * tree.h: Include double-int.h
3020         * gengtype.c: Likewise
3021         * cfgloop.h: Likewise
3022         * Makefile.in: Adjust dependencies on double-int.h
3023
3024 2007-05-02  Eric Christopher  <echristo@apple.com>
3025
3026         * config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Translate
3027         -shared to -Zdynamiclib.
3028
3029 2007-05-02  Seongbae Park  <seongbae.park@gmail.com>
3030
3031         PR c++/31663
3032         * c-common.c (strip_pointer_or_array_types): New function.
3033         * c-common.h (strip_pointer_or_array_types): New function declaration.
3034
3035 2007-05-03  Zdenek Dvorak  <dvorakz@suse.cz>
3036
3037         PR tree-optimization/31771
3038         * tree-cfg.c (move_block_to_fn): Assign bb to the correct index.
3039
3040 2007-05-02  Paul Brook  <paul@codesourcery.com>
3041
3042         * config/arm/bpabi.S (aeabi_lcmp): Fix result on overflow.
3043
3044 2007-05-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3045
3046         PR middle-end/29715
3047         * fold-const.c (fold_comparision): Remove the "foo++ == CONST"
3048         transformation.
3049
3050 2007-05-02  Nick Clifton  <nickc@redhat.com>
3051
3052         * config/frv/predicates.md (symbolic_operand): Accept CONSTs.
3053
3054 2007-05-02  Richard Guenther  <rguenther@suse.de>
3055
3056         PR tree-optimization/31146
3057         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): New
3058         argument, single_use_p.  If we have a single use that is
3059         a conversion to the definition rhs type, propagate that rhs.
3060         (forward_propagate_addr_expr): Pass single_use_p argument
3061         to forward_propagate_addr_expr_1.
3062
3063 2007-05-01  H.J. Lu  <hongjiu.lu@intel.com>
3064
3065         * config/i386/i386.c (ix86_expand_sse_comi): Remove unused
3066         variable.
3067
3068 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3069
3070         * doc/invoke.texi: Fix typo, 'AMD Family 10h core' instead of
3071         'AMD Family 10 core'.
3072
3073 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3074
3075         * config/i386/i386.c (override_options): Accept k8-sse3, opteron-sse3
3076         and athlon64-sse3 as improved versions of k8, opteron and athlon64
3077         with SSE3 instruction set support.
3078         * doc/invoke.texi: Likewise.
3079
3080 2007-05-01  Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
3081
3082         * config/i386/i386.c (override_options): Tuning 32-byte loop
3083         alignment for amdfam10 architecture. Increasing the max loop
3084         alignment to 24 bytes.
3085
3086 2007-05-01  Kazu Hirata  <kazu@codesourcery.com>
3087
3088         * config/m68k/constraints.md: New.
3089         * config/m68k/m68k.h (REG_CLASS_FROM_LETTER,
3090         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P,
3091         EXTRA_CONSTRAINT): Remove.
3092         * config/m68k/m68k.md: Include constraints.md.
3093         * expr.c (expand_expr_real_1): Copy DECL_RTL before using it.
3094
3095 2007-05-01  Ian Lance Taylor  <iant@google.com>
3096
3097         PR tree-optimization/31739
3098         * tree-vrp.c (vrp_val_is_max): New static function.
3099         (vrp_val_is_min): New static function.
3100         (set_value_range_to_value): Use TYPE_{MAX,MIN}_VALUE rather than
3101         copying the node.
3102         (set_value_range): Use vrp_val_is_{max,min}.
3103         (extract_range_from_assert): Likewise.
3104         (extract_range_from_binary_expr): Likewise.
3105         (extract_range_from_unary_expr): Likewise.
3106         (dump_value_range, vrp_meet): Likewise.
3107         (vrp_visit_phi_node): Likewise.
3108         * tree.c (build_distinct_type_copy): Revert change of 2007-04-27.
3109
3110 2007-05-01  Mark Mitchell  <mark@codesourcery.com>
3111
3112         * config/i386/gmon-sol2.c (size_t): New type.
3113         (intptr_t): Likewise.
3114         (s_textsize): Declare as size_t.
3115         (sbrk): Declare.
3116         (monstartup): Use size_t for sizes.
3117         (_mcount): Save and restore registers.
3118         (internal_mcount): Pass 0 as the first argument to monstartup
3119         in 64-bit mode.
3120         (moncontrol): Convert pointer to appropriately sized integer
3121         before passing to profil.
3122
3123 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
3124
3125         * config/rs6000/darwin-ldouble.c (__gcc_qunord): Define if
3126         __NO_FPRS__, not just if _SOFT_DOUBLE.
3127         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qunord): Likewise.
3128         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Use __gcc_qunord
3129         also for E500 double.
3130         * config/rs6000/rs6000.md (buneq, bunge, bungt, bunle, bunlt,
3131         suneq, sunge, sungt, sunle, sunlt): Disable for (TARGET_HARD_FLOAT
3132         && !TARGET_FPRS).
3133
3134 2007-05-01  Richard Guenther  <rguenther@suse.de>
3135
3136         * tree-ssa-loop-manip.c (ip_normal_pos): Check if last stmt
3137         is NULL.
3138
3139 2007-05-01  Joseph Myers  <joseph@codesourcery.com>
3140
3141         * config/rs6000/libgcc-ppc-glibc.ver (__gcc_qgt): Fix typo.
3142
3143 2007-05-01  Jan Hubicka  <jh@suse.cz>
3144
3145         * tree-vectorize.c (vect_is_simple_use): gimple_min_invariant is
3146         invariant.
3147
3148 2007-05-01  Jan Hubicka  <jh@suse.cz>
3149
3150         * tree.h (maybe_fold_offset_to_component_ref): Remove.
3151         (maybe_fold_offset_to_reference): Declare.
3152         * fold-const.c (fold_unary): Do not fold
3153         (type *)&A into &A->field_of_type_and_offset_0
3154         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): When base type
3155         size is unknown, give up.
3156         (maybe_fold_offset_to_component_ref): Ignore firelds with unknown
3157         offsets.
3158         (maybe_fold_offset_to_reference): New.
3159         (maybe_fold_stmt_indirect): Use it.
3160         (fold_stmt_r): Fold (type *)&A+offset into A->field_if_type_and_offset.
3161         * gimplify.c (gimplify_conversion): Canonicalize conversions to
3162         field references.
3163         (gimplify_expr): Likewise for plus_expr.
3164
3165 2007-05-01  Zdenek Dvorak  <dvorakz@suse.cz>
3166
3167         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Use
3168         bsi_after_labels.  Always insert statements before bsi.
3169         * tree-vect-transform.c (vect_create_epilog_for_reduction): Ditto.
3170         * predict.c (apply_return_prediction): Check for empty blocks.
3171         * cfgexpand.c (lab_rtx_for_bb): New variable.
3172         (label_rtx_for_bb): Do not create new tree labels.
3173         (expand_gimple_basic_block): Add labels recorded in lab_rtx_for_bb.
3174         (tree_expand_cfg): Initialize lab_rtx_for_bb.
3175         * tree-cfg.c (build_tree_cfg): Call cleanup_dead_labels after
3176         creating edges.
3177         (label_for_bb): Add field used.
3178         (update_eh_label, main_block_label): Mark the label used.
3179         (cleanup_dead_labels): Remove unused labels.
3180
3181 2007-05-01  Richard Guenther  <rguenther@suse.de>
3182
3183         * tree-vrp.c (set_value_range): Do not allocate equiv bitmap
3184         if it is not about to be set.
3185         (get_value_range): Do not pre-allocate equiv bitmap.
3186         (update_value_range): No need to clear equiv field.
3187         (add_equivalence): Change prototype to get bitmap pointer.
3188         Allocate bitmap here if it is not already.
3189         (extract_range_from_assert): Do not allocate bitmap here.
3190         Update callers to add_equivalence.
3191         (extract_range_from_ssa_name): Likewise.
3192         (get_vr_for_comparison): New static helper.
3193         (compare_name_with_value): Handle NULL equiv bitmap by
3194         peeling the first iteration of the comparison loop.
3195         Use get_vr_for_comparison.
3196         (compare_names): Handle NULL equiv bitmaps by using fake
3197         ones.  Use get_vr_for_comparison.
3198
3199 2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>
3200
3201         * double-int.c (mpz_set_double_int): Moved from
3202         tree-ssa-loop-niter.c.
3203         (mpz_get_double_int): Likewise; also, add option to wrap
3204         out-of-range integers.
3205         * double-int.h: New prototypes for above.
3206         * tree.c (get_static_type_bounds): Moved from
3207         tree-ssa-loop-niter.c; now returns TYPE_MIN_VALUE and
3208         TYPE_MAX_VALUE if they exist..
3209         * tree.h: New prototype for above.
3210         * tree-ssa-loop-niter.c: Adjust mpz_to_double_int and
3211         get_type_bounds calls.
3212         (mpz_set_double_int): Move to double-int.c.
3213         (get_type_bounds): Move to tree.c, rename to
3214         get_static_type_bounds.
3215         (mpz_to_double_int): Move to double-int.c, rename to
3216         mpz_get_double_int.
3217
3218 2007-04-30  Bob Wilson  <bob.wilson@acm.org>
3219
3220         * config/xtensa/lib1funcs.asm (__umodsi3, __modsi3): Rearrange so that
3221         DIV0 exception can fall through to a normal return.
3222
3223 2007-04-30  Alexandre Oliva  <aoliva@redhat.com>
3224
3225         PR middle-end/22156
3226         Temporarily revert:
3227         2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
3228         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
3229         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
3230         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
3231         initialize align to silence bogus warning.
3232         2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
3233         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
3234         all_no_warning.
3235         (struct sra_walk_fns): Remove use_all parameter from use.
3236         (sra_hash_tree): Handle BIT_FIELD_REFs.
3237         (sra_elt_hash): Don't hash bitfld blocks.
3238         (sra_elt_eq): Skip them in parent compares as well.  Handle
3239         BIT_FIELD_REFs.
3240         (sra_walk_expr): Don't maintain or pass down use_all_p.
3241         (scan_use): Remove use_all parameter.
3242         (scalarize_use): Likewise.  Re-expand assignment to
3243         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
3244         output, and re-scalarize after output.  Don't mark anything
3245         for no warning.
3246         (scalarize_ldst): Adjust.
3247         (scalarize_walk_gimple_modify_statement): Likewise.
3248         (build_element_name_1): Handle BIT_FIELD_REFs.
3249         (instantiate_element): Don't warn for any element whose parent
3250         is used as a whole.
3251         (instantiate_missing_elements_1): Return the sra_elt.
3252         (canon_type_for_field): New.
3253         (try_instantiate_multiple_fields): New.
3254         (instantiate_missing_elemnts): Use them.
3255         (mark_no_warning): Removed.
3256         (generate_one_element_ref): Handle BIT_FIELD_REFs.
3257         (REPLDUP, sra_build_elt_assignment): New.
3258         (generate_copy_inout): Use them.
3259         (generate_element_copy): Likewise.  Handle bitfld differences.
3260         (generate_element_zero): Don't recurse for blocks.  Use
3261         sra_build_elt_assignment.
3262         (generate_one_element_int): Take elt instead of var.  Use
3263         sra_build_elt_assignment.
3264         (generate_element_init_1): Adjust.
3265         (scalarize_use, scalarize_copy): Use REPLDUP.
3266         (scalarize_ldst): Move assert before dereference.
3267         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
3268
3269 2007-04-30  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3270
3271         PR C++/31721
3272         * tree.c (reconstruct_complex_type): Reconstruct a reference
3273         correctly.
3274         Also use the same mode for the pointer as the old pointer type.
3275
3276 2007-04-30  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
3277
3278         * doc/trouble.texi (Interoperation): Remove note about Ultrix
3279         Fortran compiler.
3280
3281 2007-04-29  Zdenek Dvorak  <dvorakz@suse.cz>
3282
3283         PR rtl-optimization/31676
3284         * df-scan.c (record_nonlocal_goto_receiver_defs): New function.
3285         (df_refs_record): Call it.
3286
3287 2007-04-29  Bernd Schmidt  <bernd.schmidt@analog.com>
3288
3289         * rtl.def (SS_ABS): New code.
3290         * config/bfin/bfin.c (print_operand): New modifier 'v'.
3291         (enum bfin_builtins): Add BFIN_BUILTIN_SUM_2X16, BFIN_BUILTIN_ABS_1x32,
3292         BFIN_BUILTIN_ROUND_1x32, BFIN_BUILTIN_MULT_1x32x32,
3293         BFIN_BUILTIN_MULT_1x32x32NS, BFIN_BUILTIN_SSASHIFT_1x32.
3294         (bfin_init_builtins): Define them.
3295         (bdesc_1arg, bdesc_2arg): Add some of them here, ...
3296         (bfin_expand_builtin): ... and handle the others here.
3297         * config/bfin/bfin.md (ssabssi2, ssroundsi2, ssashiftsi3,
3298         flag_mul_macv2hi_parts_acconly_andcc0): New patterns.
3299         (ss_absv2hi2): Renamed from absv2hi; use ss_abs code.
3300         (ssashiftv2hi3, ssashifthi3, lshiftv2hi3, lshifthi3): Shift count
3301         operand is only HImode.
3302
3303 2007-04-29  Steven Bosscher  <steven@gcc.gnu.org>
3304
3305         * regclass.c (scan_one_insn): Remove splitting of
3306         two address insns.
3307
3308 2007-04-28  Sandra Loosemore  <sandra@codesourcery.com>
3309             Nigel Stephens  <nigel@mips.com>
3310
3311         * config/mips/mips.h (SLOW_BYTE_ACCESS): Turn off for MIPS16.
3312
3313 2007-04-28  Jan Hubicka  <jh@suse.cz>
3314
3315         * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Use
3316         insn_locators_alloc instead of insn_locators_initialize;
3317         call reset_block_changes.
3318         * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
3319         * config/sh/sh.c (sparc_output_mi_thunk): Likewise.
3320         * config/is64/ia64.c (ia64_output_mi_thunk): Likewise.
3321         * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
3322         * config/score/score.c (th_output_mi_thunk): Likewise.
3323         * config/mips/mips.c (mips_output_mi_thunk): Likewise.
3324         * cfglyaout.c (set_curr_insn_source_location, set_curr_insn_block):
3325         tolerate uninitialized locator info.
3326
3327         Re-apply:
3328         * function.c (init_function_start): Don't init line number info.
3329         (expand_function_end): Update.
3330         (reset_block_changes, record_block_change, finalize_block_changes,
3331         check_block_change, free_block_changes): Kill.
3332         * function.h (reset_block_changes, record_block_change,
3333         finalize_block_changes, check_block_change, free_block_changes): Remove
3334         prototypes.
3335         (struct function): Remove ib_boundaries_block.
3336         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
3337         Use curr_insn_locator to initialize locator.
3338         (emit_line_note): Remove.
3339         * cfgexpand.c (expand_gimple_cond_expr): Update.
3340         (construct_exit_block): Likewise.
3341         (tree_expand_cfg): Initialize/finalize locators.
3342         * expr.c (expand_expr_real): Update.
3343         * cfglayout.c (line_locators_locs, line_locators_lines,
3344         file_locators_locs, file_locators_files): Remove.
3345         (set_block_levels): Move to cfgexpand.c.
3346         (insn_locators_initialize): Remove.
3347         (pass_insn_locators_initialize): Remove.
3348         (locations_locators_locs, locations_locators_vals): New static vars.
3349         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
3350         Likewise.
3351         (insn_locators_alloc, insn_locators_finalize,
3352         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3353         New functions.
3354         (locator_location): New.
3355         (locator_line, locator_file): Rewrite.
3356         * rtl.h (emit_line_note): Kill.
3357         (insn_locators_alloc, insn_locators_finalize,
3358         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3359         Declare.
3360         * tree-inline.c (initialize_cfun): Do not initialize
3361         ib_boundaries_block.
3362         * passes.c (pass_insn_locators_initialize): Remove.
3363
3364 2007-04-28  Zdenek Dvorak  <dvorakz@suse.cz>
3365
3366         * tree-cfg.c (move_block_to_fn): Release bb from dominance
3367         info.  Update last_basic_block correctly.
3368
3369 2007-04-27  Kaz Kojima  <kkojima@gcc.gnu.org>
3370
3371         PR target/31701
3372         * config/sh/sh.c (output_stack_adjust): Avoid using the frame
3373         register itself to hold the offset constant.  Tell flow the use
3374         of r4 and r5 when they are used.
3375
3376 2007-04-27  Richard Guenther  <rguenther@suse.de>
3377
3378         * tree-ssa-forwprop.c (forward_propagate_into_cond): Keep track
3379         if we simplified anything.
3380         (tree_ssa_forward_propagate_single_use_vars): Defer overflow
3381         warnings until we did a simplification and the stmt was not
3382         marked as TREE_NO_WARNING.
3383
3384 2007-04-27  Mike Stump  <mrs@apple.com>
3385
3386         * config/rs6000/darwin.h (ALWAYS_PUSH_CONSTS_USING_REGS_P): Remove.
3387
3388 2007-04-27  Ian Lance Taylor  <iant@google.com>
3389
3390         PR middle-end/31710
3391         * tree.c (build_distinct_type_copy): If TYPE_MIN_VALUE or
3392         TYPE_MAX_VALUE exist, convert them to the new type.
3393
3394 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3395
3396         * tree-cfgcleanup.c (cleanup_tree_cfg): Verify dominance info
3397         if it claims to be available.
3398         * tree-ssa-dce.c (remove_dead_stmt): Mark cfg as altered when
3399         edge is redirected.
3400         (perform_tree_ssa_dce): Always free postdominators.
3401
3402 2007-04-27  Richard Henderson  <rth@redhat.com>
3403
3404         * config/alpha/predicates.md (aligned_memory_operand): Mark
3405         as define_special_predicate.
3406         (unaligned_memory_operand, normal_memory_operand): Likewise.
3407         (reg_or_unaligned_mem_operand): Remove.
3408         (any_memory_operand): Match the documentation and check for
3409         non-renumbered pseudos during reload.
3410         * config/alpha/alpha.c (alpha_secondary_reload): Rename from
3411         alpha_secondary_reload_class, update to new interface, make static.
3412         Handle CQImode like HImode.  Remove FP subreg check.
3413         (alpha_expand_mov): Use replace_equiv_address.
3414         (alpha_expand_mov_nobwx): Use any_memory_operand.
3415         (TARGET_SECONDARY_RELOAD): New.
3416         * config/alpha/alpha.h (SECONDARY_INPUT_RELOAD_CLASS): Remove.
3417         (SECONDARY_OUTPUT_RELOAD_CLASS): Remove.
3418         * config/alpha/sync.md (I12MODE, I48MODE, modesuffix): Move ...
3419         * config/alpha/alpha.md: ... here.
3420         (RELOAD12, reloadmode): New.
3421         (movcqi): New.
3422         (reload_in<RELOAD12>): Macro-ize from reload_inqi, reload_inhi.
3423         Don't handle the aligned case here.
3424         (reload_out<RELOAD12>): Macro-ize from reload_outqi, reload_outhi.
3425         (reload_in<I12MODE>_aligned): Macro-ize from reload_inqi_help,
3426         reload_inhi_help.  Don't expect a scratch register.
3427         (reload_out<I12MODE>_aligned): Macro-ize from reload_outqi_help,
3428         reload_outhi_help.
3429         * config/alpha/alpha-protos.h (alpha_secondary_reload_class): Remove.
3430
3431 2007-04-27  Richard Guenther  <rguenther@suse.de>
3432
3433         * tree-ssa-forwprop.c (get_prop_dest_stmt): Fix comment typo.
3434
3435 2007-04-27  Richard Guenther  <rguenther@suse.de>
3436
3437         PR tree-optimization/30965
3438         PR tree-optimization/30978
3439         * Makefile.in (tree-ssa-forwprop.o): Depend on $(FLAGS_H).
3440         * tree-ssa-forwprop.c (forward_propagate_into_cond_1): Remove.
3441         (find_equivalent_equality_comparison): Likewise.
3442         (simplify_cond): Likewise.
3443         (get_prop_source_stmt): New helper.
3444         (get_prop_dest_stmt): Likewise.
3445         (can_propagate_from): Likewise.
3446         (remove_prop_source_from_use): Likewise.
3447         (combine_cond_expr_cond): Likewise.
3448         (forward_propagate_comparison): New function.
3449         (forward_propagate_into_cond): Rewrite to use fold for
3450         tree combining.
3451         (tree_ssa_forward_propagate_single_use_vars): Call
3452         forward_propagate_comparison to propagate comparisons.
3453
3454 2007-04-27  Richard Guenther  <rguenther@suse.de>
3455
3456         PR tree-optimization/31715
3457         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Make
3458         sure to do computation on the offset in an appropriate
3459         signed type.
3460
3461 2007-04-27  Richard Sandiford  <richard@codesourcery.com>
3462
3463         * reload.h (elimination_target_reg_p): Declare.
3464         * reload.c (find_reloads): Don't apply the reg_rtx move
3465         optimization if the SET_DEST satisfies elimination_target_reg_p.
3466         * reload1.c (elimination_target_reg_p): New function.
3467         (gen_reload): In the move/add2 fallback, make sure that op0
3468         does not overlap the destination register.
3469
3470 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3471
3472         * tree-ssa-loop-im.c (determine_invariantness_stmt): Attempt to
3473         transform only GIMPLE_MODIFY_STMTs.
3474         * tree-complex.c (expand_complex_operations_1): Ditto.
3475         (expand_complex_div_wide): Do not create gotos in COND_EXPR branches.
3476         * tree-ssa-loop-manip.c (build_if_stmt): Removed.
3477         (tree_transform_and_unroll_loop): Do not create gotos in COND_EXPR
3478         branches.
3479         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
3480         tree_mod_subtract, tree_ic, tree_stringop_fixed_value): Ditto.
3481         * omp-low.c (expand_parallel_call, expand_omp_for_generic,
3482         expand_omp_for_static_chunk, expand_omp_for_static_nochunk): Ditto.
3483         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes,
3484         slpeel_add_loop_guard): Ditto.
3485         * tree-mudflap.c (mf_build_check_statement_for): Ditto.
3486         * lambda-code.c (perfect_nestify): Ditto.
3487         * tree-iterator.c (tsi_split_statement_list_before): Fix splitting
3488         before the first statement.
3489         * tree-optimize.c (execute_free_datastructures): Fix comments.
3490         (execute_free_cfg_annotations): Do not call disband_implicit_edges.
3491         * tree-flow.h (disband_implicit_edges): Declaration removed.
3492         * tree-cfg.c (make_cond_expr_edges): Remove gotos from COND_EXPR
3493         branches.
3494         (cleanup_dead_labels, tree_redirect_edge_and_branch): Handle COND_EXPRs
3495         without gotos.
3496         (disband_implicit_edges, has_label_p): Removed.
3497         (tree_verify_flow_info): Verify that COND_EXPR branches are empty.
3498         (tree_lv_add_condition_to_bb): Do not create gotos in COND_EXPR
3499         branches.
3500         * tree.c (build3_stat): Mark COND_EXPRs used as statements as having
3501         side effects.
3502         * tree-pretty-print.c (dump_implicit_edges): Dump implicit edges
3503         also for COND_EXPRs.
3504         * cfgexpand.c (label_rtx_for_bb): New function.
3505         (expand_gimple_cond_expr): Do not expect gotos in COND_EXPR branches.
3506         Use label_rtx_for_bb to find the labels.
3507         (expand_gimple_basic_block): Remove RETURN_EXPR at the end of the
3508         last block.  Detect fallthru edges.
3509
3510 2007-04-26  Ian Lance Taylor  <iant@google.com>
3511
3512         PR target/28675
3513         * reload.c (find_reloads_subreg_address): If the address was valid
3514         in the original mode but not in the new mode, reload the whole
3515         address.
3516
3517 2007-04-27  Zdenek Dvorak  <dvorakz@suse.cz>
3518
3519         * tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
3520         (remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
3521         (cleanup_control_expr_graph): Do not invalidate dominance info.
3522         Record altered blocks.
3523         (cleanup_control_flow, cleanup_forwarder_blocks): Removed.
3524         (cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
3525         cleanup_tree_cfg_bb): New functions.
3526         (remove_forwarder_block): Do not maintain the worklist of blocks.
3527         Record altered blocks.
3528         (cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
3529         not over whole cfg.
3530         (cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1.  Only call
3531         delete_unreachable_blocks if dominators are not available.
3532         * tree-inline.c (optimize_inline_calls): Free dominance information
3533         earlier.
3534         * tree-flow.h (remove_edge_and_dominated_blocks,
3535         cfgcleanup_altered_bbs): Altered.
3536         * tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
3537         blocks.
3538         (get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
3539         functions.
3540         (tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
3541         do not invalidate dominators.
3542
3543 2007-04-26  Anatoly Sokolov <aesok@post.ru>
3544
3545         * config/avr/avr.c (avr_mcu_types): Add support for ATmega8HVA and
3546         ATmega16HVA devices. Move AT90USB82 device to 'avr5' architecture.
3547         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
3548         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
3549
3550 2007-04-26  Steve Ellcey  <sje@cup.hp.com>
3551
3552         * config/ia64/ia64.md (ip_value):  Fix itanium_class attribute.
3553
3554 2007-04-26  Richard Guenther  <rguenther@suse.de>
3555
3556         PR tree-optimization/31703
3557         * tree-ssa-loop-im.c (rewrite_bittest): Make sure to use
3558         the right type for the target of the bittest.
3559
3560 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3561
3562         * config/i386/vx-common.h (RETURN_IN_MEMORY): Use
3563         ix86_sol10_return_in_memory.
3564
3565 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3566
3567         * config/i386/i386.c (ix86_sol10_return_in_memory): Remove unused
3568         variables.
3569
3570 2007-04-26  Jakub Jelinek  <jakub@redhat.com>
3571
3572         PR c++/31598
3573         * tree-inline.c (copy_body_r): Don't touch TREE_TYPE of OMP_CLAUSE.
3574
3575         PR tree-optimization/30558
3576         * tree-eh.c (lower_eh_filter): If EH_FILTER_MUST_NOT_THROW
3577         clear this_state.prev_try.
3578
3579 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3580             Mark Mitchell  <mark@codesourcery.com>
3581
3582         * config/i386/i386-protos.h (ix86_sol10_return_in_memory): Declare.
3583         * config/i386/i386.c (ix86_sol10_return_in_memory): New function.
3584         * config/i386/sol2-10.h (RETURN_IN_MEMORY): Use it.
3585
3586 2007-04-26  Richard Sandiford  <richard@codesourcery.com>
3587
3588         PR driver/31107
3589         * doc/invoke.texi (%:print-asm-header): Document.
3590         * gcc.c (asm_options): Use %:print-asm-header() for --target-help
3591         and -ftarget-help.
3592         (static_spec_functions): Add print-asm-header.
3593         (main): Print a banner before the --target-help linker options.
3594         (print_asm_header_spec_function): New function.
3595
3596 2007-04-25  Kaz Kojima  <kkojima@gcc.gnu.org>
3597
3598         PR target/31403
3599         * config/sh/sh.md (movsi_ie): Fix length for TARGET_SH2A.
3600         (movsf_ie): Likewise.
3601
3602 2007-04-25  Paolo Carlini  <pcarlini@suse.de>
3603
3604         * doc/extend.texi ([Type Traits]): Adjust per N2255.
3605
3606 2007-04-25  Bob Wilson  <bob.wilson@acm.org>
3607
3608         * config/xtensa/lib1funcs.asm (__udivsi3, __divsi3): Throw an exception
3609         for divide-by-zero.
3610         (__umodsi3, __modsi3): Likewise.
3611
3612 2007-04-25  Dirk Mueller  <dmueller@suse.de>
3613
3614         * c-typeck.c (build_compound_expr): Annotate warning()
3615         call with OPT_Wunused_value.
3616         * tree-ssa.c (warn_uninit): Annotate warning with
3617         OPT_Wunintialized.
3618         * c-common.c (handle_sentinel_attribute): Annotate warning
3619         call with OPT_Wattributes.
3620
3621 2007-04-25  Thiemo Seufer  <ths@mips.com>
3622
3623         * config/mips/mips.opt (mdmx, mmt, mno-mdmx): New options.
3624         (mips16): Fix typo.
3625         * config/mips/mips.h (ASM_SPEC): Pass -mmt/-mno-mt and -mdmx/-mno-mdmx
3626         on to the assembler.  Improve handling of -mno-mips16.  Add handling
3627         of -mno-mips3d, -mno-dsp, -mno-dspr2.
3628         * doc/invoke.texi (MIPS Options): Whitespace cleanup.  Fix wrong use
3629         of @itemx.  Document -mno-dsp, -mno-dspr2, -mno-paired-single, -mdmx,
3630         -mno-mdmx, -mno-mips3d, -mmt and -mno-mt.
3631
3632 2007-04-25  Danny Smith  <dannysmith.users.sourceforge.net>
3633
3634         PR target/31680
3635         * config/i386/winnt.c (i386_pe_file_end): Strip only
3636         USER_LABEL_PREFIX when writing export name.
3637
3638 2007-04-25  Richard Sandiford  <richard@codesourcery.com>
3639
3640         * config.gcc (sh-wrs-vxworks): Don't include dbxelf.h.  Include
3641         sh/elf.h, vx-common.h and vxworks.h.
3642         * config/sh/sh.h: Include config/vxworks-dummy.h.
3643         (SUBTARGET_OVERRIDE_OPTIONS): Define.
3644         (OVERRIDE_OPTIONS): Use it.
3645         * config/sh/sh.md (GOTaddr2picreg): Add suport for VxWorks RTPs.
3646         (vxworks_picreg): New pattern.
3647         * config/sh/vxworks.h (TARGET_OS_CPP_BUILTINS): Use
3648         VXWORKS_OS_CPP_BUILTINS.
3649         (LIB_SPEC, LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Redefine
3650         to their VXWORKS_* equivalents.
3651         (SUBTARGET_OVERRIDE_OPTIONS, SUBTARGET_CPP_SPEC): Define.
3652         (SUBTARGET_LINK_EMUL_SUFFIX, FUNCTION_PROFILER): Define.
3653         * config/sh/lib1funcs.asm (NO_FPSCR_VALUES): Define for VxWorks PIC.
3654         (set_fpscr, ic_invalidate): Add VxWorks PIC sequences.
3655         * config/sh/t-vxworks (MULTILIB_OPTIONS): Add m4a, -mrtp and
3656         -mrtp/-fPIC multilibs.
3657         (MULTILIB_EXCEPTIONS): Generalize globs accordingly.
3658         (MULTILIB_MATCHES, EXTRA_MULTILIB_PARTS): Define.
3659         (MULTILIB_OSDIRNAMES): Delete.
3660
3661 2007-04-25  Anatoly Sokolov <aesok@post.ru>
3662
3663         PR target/18989
3664         * config/avr/avr.h (ASM_OUTPUT_ALIGN): Redefine.
3665
3666 2007-04-24  Brooks Moses  <brooks.moses@codesourcery.com>
3667
3668         * real.c (mpfr_from_real): Handle Inf and NaN, and allow the
3669         rounding mode to be specified by the caller.
3670         (real_to_mpfr) Likewise.
3671         * real.h: Update mpfr_from_real, mpfr_to_real prototypes to
3672         include new arguments.
3673         * builtins.c: Update mpfr_from_real, mpfr_to_real calls.
3674
3675 2007-04-24  Ian Lance Taylor  <iant@google.com>
3676
3677         PR tree-optimization/31605
3678         * tree-vrp.c (set_value_range): Check that min and max are not
3679         both overflow infinities.
3680         (set_value_range_to_value): New static function.
3681         (extract_range_from_binary_expr): Call set_value_range_to_value.
3682         (extract_range_from_cond_expr): Likewise.
3683         (extract_range_from_expr): Likewise.
3684         (extract_range_from_unary_expr): Likewise.  Don't create a range
3685         which overflows on both sides.
3686         (vrp_meet): Check for a useless range.
3687         (vrp_visit_phi_node): If we see a constant which looks like an
3688         overflow infinity, turn off the TREE_OVERFLOW flag.
3689
3690 2007-04-24  Ian Lance Taylor  <iant@google.com>
3691
3692         * flow.c (elim_reg_cond): Handle a comparison of a subreg.
3693
3694 2007-04-24  Simon Martin  <simartin@users.sourceforge.net>
3695
3696         PR diagnostic/25923
3697         * tree-pass.h (TDF_DIAGNOSTIC): New dump control to specify that a
3698         diagnostic message is being built.
3699         * tree-pretty-print.c (dump_generic_node): Only write the
3700         formatted text into BUFFER's stream if we are not building a
3701         diagnostic message.
3702         * toplev.c (default_tree_printer): Pass TDF_DIAGNOSTIC to
3703         dump_generic_node.
3704         * Makefile.in (toplev.o): Depend on tree-pass.h.
3705
3706 2007-04-24  Ian Lance Taylor  <iant@google.com>
3707
3708         PR tree-optimization/31602
3709         * tree-ssa-loop-ch.c (copy_loop_headers): Set TREE_NO_WARNING for
3710         conditionals in the copied loop header.
3711         * tree-cfg.c (fold_cond_expr_cond): Don't issue undefined overflow
3712         warnings if TREE_NO_WARNING is set.
3713         * doc/invoke.texi (Warning Options): Clarify that
3714         -Wstrict-overflow does not warn about loops.
3715
3716 2007-04-24  Janis Johnson  <janis187@us.ibm.com>
3717
3718         * config/rs6000/rs6000.c (function_arg_advance): For 32-bit ELF ABI,
3719         expand on the comment about _Decimal128 arguments and check the
3720         integer result of the modulus operation; for 64-bit ELF ABI, ensure
3721         that _Decimal128 argument uses even/odd register pair.
3722         (function_arg): Ditto.
3723
3724 2007-04-24  Hui-May Chang <hm.chang@apple.com>
3725
3726         * reload1.c (merge_assigned_reloads) : Do not merge a RELOAD_OTHER
3727         instruction with a RELOAD_FOR_OPERAND_ADDRESS instruction.
3728
3729 2007-04-24  Richard Guenther  <rguenther@suse.de>
3730             Olga Golovanevsky  <olga@il.ibm.com>
3731
3732         * fold-const.c (multiple_of_p): Check for bottom
3733         to be zero.
3734
3735 2007-04-24  Richard Henderson  <rth@redhat.com>
3736
3737         * libgcc2.h (AVOID_FP_TYPE_CONVERSION): Rename from
3738         IS_IBM_EXTENDED.  Also define in terms of WIDEST_HARDWARE_FP_SIZE.
3739         * libgcc2.c (__floatdisf): Avoid double-word arithmetic when
3740         looking for non-zero bits shifted out.  Avoid a recursive call
3741         when constructing the scalar.
3742         (__floatundisf): Likewise.
3743
3744 2007-04-24  Nathan Froyd  <froydnj@codesourcery.com>
3745
3746         * dwarf2out.c (field_byte_offset): Move the existing logic
3747         under the control of PCC_BITFIELD_TYPE_MATTERS and just use
3748         the bit offset of the field if !PCC_BITFIELD_TYPE_MATTERS.
3749
3750 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3751
3752         PR target/31641
3753         * config/s390/s390.c (s390_expand_setmem): Don't ICE for constant length
3754         argument of 0 for memset.
3755         (s390_expand_movmem, s390_expand_setmem, s390_expand_cmpmem): Use
3756         unsigned shift instead of the signed variant.
3757
3758 2007-04-24  Andreas Krebbel  <krebbel1@de.ibm.com>
3759
3760         * config/s390/s390.md ("*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs_ibm",
3761         "fix_trunc<BFP:mode><GPR:mode>2_ieee", "fix_truncdfsi2_ibm",
3762         "floatsidf2_ibm", "floatsisf2", "truncdfsf2_ieee", "truncdfsf2_ibm",
3763         "*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee",
3764         "*trunctfsf2_ibm", "extendsfdf2_ieee", "extendsfdf2_ibm",
3765         "*extenddftf2_ieee", "*extenddftf2_ibm", "*extendsftf2_ieee",
3766         "*extendsftf2_ibm", "*add<mode>3", "*add<mode>3_ibm", "*sub<mode>3_ibm",
3767         "*mul<mode>3", "*mul<mode>3_ibm", "*div<mode>3", "*div<mode>3_ibm",
3768         "*neg<mode>2_ibm", "*abs<mode>2_ibm"): Insn definitions removed.
3769         ("fix_trunc<BFP:mode><GPR:mode>2_bfp", "floatsi<mode>2",
3770         "truncdfsf2", "trunctf<mode>2", "add<mode>3", "sub<mode>3",
3771         "mul<mode>3", "div<mode>3"): Insn definitions added.
3772         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fix_trunc<mode>di2",
3773         "fix_trunc<mode>si2"): gen_fix_trunc<BFP:mode><GPR:mode>2_ieee renamed
3774         to gen_fix_trunc<BFP:mode><GPR:mode>2_bfp.
3775         ("fix_truncdfsi2", "floatsitf2", "truncdfsf2", "trunctfdf2",
3776         "trunctfsf2", "extendsfdf2", "extenddftf2", "extendsftf2", "add<mode>3",
3777         "sub<mode>3", "mul<mode>3", "div<mode>3"): Expander removed.
3778         ("fix_trunc<mode>si2", "extend<DSF:mode><BFP:mode>2"): Expander added.
3779         * config/s390/s390.h (TARGET_IBM_FLOAT, TARGET_IEEE_FLOAT,
3780         TARGET_FLOAT_FORMAT): Macro definitions removed.
3781         (FP_REGNO_P): No special case for !TARGET_IEEE_FLOAT anymore.
3782         * config/s390/s390.c (struct processor_costs, z900_cost, z990_cost,
3783         z9_109_cost): Remove fields for hexfloat instructions: dxr, ddr and der.
3784         (s390_rtx_costs): Remove !TARGET_IEEE_FLOAT special branches.
3785         (s390_gen_rtx_const_DI): Function removed.
3786         * config/s390/s390-protos.h (s390_gen_rtx_const_DI): Prototype removed.
3787
3788 2007-04-24  Richard Sandiford  <richard@codesourcery.com>
3789
3790         * optabs.c (set_conv_libfunc): Prefer libgcc2's __ffsMM2 functions
3791         over an external ffs function.
3792
3793 2007-04-24  Chao-ying Fu  <fu@mips.com>
3794             Richard Sandiford  <richard@nildram.co.uk>
3795
3796         * doc/md.texi (madd@var{m}@var{n}4, umadd@var{m}@var{n}4): Document.
3797         * optabs.h (OTI_smadd_widen, OTI_umadd_widen): New optab_indexes.
3798         (smadd_widen_optab, umadd_widen_optab): Define.
3799         * optabs.c (init_optabs): Initialize smadd_widen_optab and
3800         umadd_widen_optab.
3801         * genopinit.c (optabs): Fill in smadd_widen_optab and
3802         umadd_widen_optab.
3803         * expr.c (expand_expr_real_1): Try to use smadd_widen_optab
3804         and umadd_widen_optab to implement multiply-add sequences.
3805         * config/mips/mips.md (*<su>mul_acc_di): Rename to...
3806         (<u>maddsidi4): ...this.  Extend condition to include
3807         GENERATE_MADD_MSUB and TARGET_DSPR2.  Change the constraint
3808         of operand 0 to "ka" and use the three-operand form of madd<u>
3809         for TARGET_DSPR2.
3810         * config/mips/mips-dspr2.md (mips_madd, mips_maddu): Convert
3811         to define_expands.
3812         * config/mips/constraints.md (ka): New register constraint.
3813
3814 2007-04-24  Jan Hubicka  <j@suse.cz>
3815
3816         Revert:
3817
3818         2007-04-23  Jan Hubicka  <jh@suse.cz>
3819         * function.c (init_function_start): Don't init line number info.
3820         (expand_function_end): Update.
3821         (reset_block_changes, record_block_change, finalize_block_changes,
3822         check_block_change, free_block_changes): Kill.
3823         * function.h (reset_block_changes, record_block_change,
3824         finalize_block_changes, check_block_change, free_block_changes): Remove
3825         prototypes.
3826         (struct function): Remove ib_boundaries_block.
3827         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
3828         Use curr_insn_locator to initialize locator.
3829         (emit_line_note): Remove.
3830         * cfgexpand.c (expand_gimple_cond_expr): Update.
3831         (construct_exit_block): Likewise.
3832         (tree_expand_cfg): Initialize/finalize locators.
3833         * expr.c (expand_expr_real): Update.
3834         * cfglayout.c (line_locators_locs, line_locators_lines,
3835         file_locators_locs, file_locators_files): Remove.
3836         (set_block_levels): Move to cfgexpand.c.
3837         (insn_locators_initialize): Remove.
3838         (pass_insn_locators_initialize): Remove.
3839         (locations_locators_locs, locations_locators_vals): New static vars.
3840         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
3841         Likewise.
3842         (insn_locators_alloc, insn_locators_finalize,
3843         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3844         New functions.
3845         (locator_location): New.
3846         (locator_line, locator_file): Rewrite.
3847         * rtl.h (emit_line_note): Kill.
3848         (insn_locators_alloc, insn_locators_finalize,
3849         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
3850         Declare.
3851         * tree-inline.c (initialize_cfun): Do not initialize
3852         ib_boundaries_block.
3853         * passes.c (pass_insn_locators_initialize): Remove.
3854
3855 2007-04-24  Daniel Franke  <franke.daniel@gmail.com>
3856
3857         * doc/invoke.texi: Removed leading '-' from option index entries.
3858
3859 2007-04-23  Zdenek Dvorak  <dvorakz@suse.cz>
3860
3861         * tree-phinodes.c (reserve_phi_args_for_new_edge, remove_phi_node):
3862         Use phi_nodes_ptr.
3863         (create_phi_node): Use set_phi_nodes.
3864         * omp-low.c (expand_omp_parallel): Use bb_stmt_list.
3865         * tree-if-conv.c (process_phi_nodes): Use set_phi_nodes.
3866         (combine_blocks):  Use bb_stmt_list and set_bb_stmt_list.
3867         * tree-flow-inline.h (phi_nodes, set_phi_nodes,
3868         (bsi_start, bsi_last): Use bb_stmt_list.
3869         (phi_nodes_ptr, bb_stmt_list, set_bb_stmt_list): New functions.
3870         * cfgexpand.c (expand_gimple_basic_block): Use bb_stmt_list.
3871         Traverse the statements using tsi iterator.
3872         * basic-block.h (struct basic_block_def): Fields stmt_list
3873         and phi_nodes moved to ...
3874         (struct tree_bb_info): ... new structure.
3875         * tree-cfg.c (create_bb): Allocate il.tree.  Use set_bb_stmt_list.
3876         (tree_merge_blocks): Use bb_stmt_list and set_bb_stmt_list.
3877         (remove_bb): Handle blocks with NULL stmt list.  Clear il.tree field.
3878         (tree_verify_flow_info): Verify that il.tree is not set for
3879         entry and exit block.
3880         (tree_split_block): Use set_bb_stmt_list.
3881
3882 2007-04-23  Mike Stump  <mrs@apple.com>
3883
3884         * config/i386/i386.c (ix86_tune_features
3885         [X86_TUNE_DEEP_BRANCH_PREDICTION]: Prefer call over thunks on
3886         nocona and core2.
3887
3888 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
3889
3890         * config/i386/i386.md (prefix_extra): New attribute.
3891         (length): Add prefix_extra.
3892
3893         * onfig/i386/sse.md (sse2_movdqu): Set prefix_data16.
3894         (sse2_movntv2di): Likewise.
3895         (sse2_cvtps2dq): Likewise.
3896         (sse2_cvtpd2pi): Likewise.
3897         (sse2_cvttpd2pi): Likewise.
3898         (*sse2_cvtpd2ps): Likewise.
3899         (*add<mode>3): Likewise.
3900         (sse2_ssadd<mode>3): Likewise.
3901         (sse2_usadd<mode>3): Likewise.
3902         (*sub<mode>3): Likewise.
3903         (sse2_sssub<mode>3): Likewise.
3904         (sse2_ussub<mode>3): Likewise.
3905         (*mulv8hi3): Likewise.
3906         (*smulv8hi3_highpart): Likewise.
3907         (*umulv8hi3_highpart): Likewise.
3908         (sse2_umulv2siv2di3): Likewise.
3909         (sse2_pmaddwd): Likewise.
3910         (ashr<mode>3): Likewise.
3911         (lshr<mode>3): Likewise.
3912         (ashl<mode>3): Likewise.
3913         (sse2_ashlti3): Likewise.
3914         (sse2_lshrti3): Likewise.
3915         (*umaxv16qi3): Likewise.
3916         (*smaxv8hi3): Likewise.
3917         (*uminv16qi3): Likewise.
3918         (*sminv8hi3): Likewise.
3919         (sse2_eq<mode>3): Likewise.
3920         (sse2_gt<mode>3): Likewise.
3921         (*and<mode>3): Likewise.
3922         (sse2_nand<mode>3): Likewise.
3923         (*ior<mode>3): Likewise.
3924         (*xor<mode>3): Likewise.
3925         (sse2_packsswb): Likewise.
3926         (sse2_packssdw): Likewise.
3927         (sse2_packuswb): Likewise.
3928         (sse2_punpckhbw): Likewise.
3929         (sse2_punpcklbw): Likewise.
3930         (sse2_punpckhwd): Likewise.
3931         (sse2_punpcklwd): Likewise.
3932         (sse2_punpckhdq): Likewise.
3933         (sse2_punpckldq): Likewise.
3934         (sse2_punpckhqdq): Likewise.
3935         (sse2_punpcklqdq): Likewise.
3936         (*sse2_pinsrw): Likewise.
3937         (*sse2_pextrw): Likewise.
3938         (sse2_pshufd_1): Likewise.
3939         (sse2_uavgv16qi3): Likewise.
3940         (sse2_uavgv8hi3): Likewise.
3941         (sse2_psadbw): Likewise.
3942         (sse2_pmovmskb): Likewise.
3943         (*sse2_maskmovdqu): Likewise.
3944         (*sse2_maskmovdqu_rex64): Likewise.
3945         (sse4a_extrqi): Likewise.
3946         (sse4a_extrq): Likewise.
3947         (sse3_lddqu): Set prefix_rep.
3948         (sse3_addsubv4sf3): Likewise.
3949         (sse3_haddv4sf3): Likewise.
3950         (sse3_hsubv4sf3): Likewise.
3951         (sse_cvtss2si): Likewise.
3952         (sse_cvtss2si_2): Likewise.
3953         (sse_cvtss2siq): Likewise.
3954         (sse_cvtss2siq_2): Likewise.
3955         (sse_cvttss2si): Likewise.
3956         (sse_cvttss2siq): Likewise.
3957         (sse2_cvttps2dq): Likewise.
3958         (sse3_movshdup): Likewise.
3959         (sse3_movsldup): Likewise.
3960         (sse2_cvtsd2si): Likewise.
3961         (sse2_cvtsd2si_2): Likewise.
3962         (sse2_cvtsd2siq): Likewise.
3963         (sse2_cvtsd2siq_2): Likewise.
3964         (sse2_cvttsd2si): Likewise.
3965         (sse2_cvttsd2siq): Likewise.
3966         (*sse2_cvtpd2dq): Likewise.
3967         (*sse2_cvttpd2dq): Likewise.
3968         (sse2_pshuflw_1): Likewise.
3969         (sse2_pshufhw_1): Likewise.
3970         (sse4a_insertqi): Likewise.
3971         (sse4a_insertq): Likewise.
3972         (ssse3_phaddwv8hi3): Set prefix_data16 and prefix_extra.
3973         (ssse3_phadddv4si3): Likewise.
3974         (ssse3_phaddswv8hi3): Likewise.
3975         (ssse3_phsubwv8hi3): Likewise.
3976         (ssse3_phsubdv4si3): Likewise.
3977         (ssse3_phsubswv8hi3): Likewise.
3978         (ssse3_pmaddubswv8hi3): Likewise.
3979         (ssse3_pmulhrswv8hi3): Likewise.
3980         (ssse3_pshufbv16qi3): Likewise.
3981         (ssse3_psign<mode>3): Likewise.
3982         (ssse3_palignrti): Likewise.
3983         (abs<mode>2): Likewise.
3984         (ssse3_phaddwv4hi3): Set prefix_extra.
3985         (ssse3_phadddv2si3): Likewise.
3986         (ssse3_phaddswv4hi3): Likewise.
3987         (ssse3_phsubwv4hi3): Likewise.
3988         (ssse3_phsubdv2si3): Likewise.
3989         (ssse3_phsubswv4hi3): Likewise.
3990         (ssse3_pmaddubswv4hi3): Likewise.
3991         (ssse3_pmulhrswv4hi3): Likewise.
3992         (ssse3_pshufbv8qi3): Likewise.
3993         (ssse3_psign<mode>3): Likewise.
3994         (ssse3_palignrdi): Likewise.
3995         (abs<mode>2): Likewise.
3996         (sse2_cvtdq2ps): Set mode to V4SF instead of V2DF.
3997         (*vec_dupv2df): Set mode to V2DF instead of V4SF.
3998         (sse2_pmovmskb): Set mode to SI instead of V2DF.
3999
4000 2007-04-23  Nick Clifton  <nickc@redhat.com>
4001
4002         * params.def: Fix formatting of emacs local variables.
4003
4004 2007-04-23  H.J. Lu  <hongjiu.lu@intel.com>
4005
4006         * config/i386/sse.md (sse2_stored): Don't split to inter-unit
4007         move if inter-unit move isn't allowed.
4008         Don't split moving the first element of V2DI to DI to inter-unit
4009         move if inter-unit move isn't allowed.
4010
4011 2007-04-23  Richard Guenther  <rguenther@suse.de>
4012
4013         * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS
4014         and CDI_POST_DOMINATORS separately.
4015
4016 2007-04-23  Nick Clifton  <nickc@redhat.com>
4017
4018         * c.opt (Wformat-contains-nul): Add warning attribute.
4019
4020 2007-04-23  Jan Hubicka  <jh@suse.cz>
4021
4022         * function.c (init_function_start): Don't init line number info.
4023         (expand_function_end): Update.
4024         (reset_block_changes, record_block_change, finalize_block_changes,
4025         check_block_change, free_block_changes): Kill.
4026         * function.h (reset_block_changes, record_block_change,
4027         finalize_block_changes, check_block_change, free_block_changes): Remove
4028         prototypes.
4029         (struct function): Remove ib_boundaries_block.
4030         * emit-rtl.c (make_insn_raw, make_jump_insn_raw, make_call_insn_raw):
4031         Use curr_insn_locator to initialize locator.
4032         (emit_line_note): Remove.
4033         * cfgexpand.c (expand_gimple_cond_expr): Update.
4034         (construct_exit_block): Likewise.
4035         (tree_expand_cfg): Initialize/finalize locators.
4036         * expr.c (expand_expr_real): Update.
4037         * cfglayout.c (line_locators_locs, line_locators_lines,
4038         file_locators_locs, file_locators_files): Remove.
4039         (set_block_levels): Move to cfgexpand.c.
4040         (insn_locators_initialize): Remove.
4041         (pass_insn_locators_initialize): Remove.
4042         (locations_locators_locs, locations_locators_vals): New static vars.
4043         (curr_location, last_location, curr_block, last_block, curr_rtl_loc):
4044         Likewise.
4045         (insn_locators_alloc, insn_locators_finalize,
4046         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4047         New functions.
4048         (locator_location): New.
4049         (locator_line, locator_file): Rewrite.
4050         * rtl.h (emit_line_note): Kill.
4051         (insn_locators_alloc, insn_locators_finalize,
4052         set_curr_insn_source_location, set_curr_insn_block, curr_insn_locator):
4053         Declare.
4054         * tree-inline.c (initialize_cfun): Do not initialize
4055         ib_boundaries_block.
4056         * passes.c (pass_insn_locators_initialize): Remove.
4057
4058 2007-04-22  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4059
4060         PR middle-end/31448
4061         * expr.c (reduce_to_bit_field_precision): Handle
4062         CONST_INT rtx's.
4063
4064 2007-04-22  Uros Bizjak  <ubizjak@gmail.com>
4065
4066         PR tree-optimization/24659
4067         * optabs.h (enum optab_index) [OTI_vec_unpacks_hi,
4068         OTI_vec_unpacks_lo]: Update comment to mention floating point operands.
4069         (vec_pack_trunc_optab): Rename from vec_pack_mod_optab.
4070         * genopinit.c (optabs): Rename vec_pack_mod_optab
4071         to vec_pack_trunc_optab.
4072         * tree-vect-transform.c (vectorizable_type_demotion): Do not fail
4073         early for scalar floating point operands for NOP_EXPR.
4074         (vectorizable_type_promotion): Ditto.
4075         * optabs.c (optab_for_tree_code) [VEC_PACK_TRUNC_EXPR]: Return
4076         vec_pack_trunc_optab.
4077         (expand_binop): Rename vec_float_trunc_optab to vec_pack_mod_optab.
4078
4079         * tree.def (VEC_PACK_TRUNC_EXPR): Rename from VEC_PACK_MOD_EXPR.
4080         * tree-pretty-print.c (dump_generic_node) [VEC_PACK_TRUNC_EXPR]:
4081         Rename from VEC_PACK_MOD_EXPR.
4082         (op_prio) [VEC_PACK_TRUNC_EXPR]: Ditto.
4083         * expr.c (expand_expr_real_1): Ditto.
4084         * tree-inline.c (estimate_num_insns_1): Ditto.
4085         * tree-vect-generic.c (expand_vector_operations_1): Ditto.
4086
4087         * config/i386/sse.md (vec_unpacks_hi_v4sf): New expander.
4088         (vec_unpacks_lo_v4sf): Ditto.
4089         (vec_pack_trunc_v2df): Ditto.
4090         (vec_pack_trunc_v8hi): Rename from vec_pack_mod_v8hi.
4091         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
4092         (vec_pack_trunc_v2di): Rename from vec_pack_mod_v2di.
4093
4094         * config/rs6000/altivec.md (vec_pack_trunc_v8hi): Rename from
4095         vec_pack_mod_v8hi.
4096         (vec_pack_trunc_v4si): Rename from vec_pack_mod_v4si.
4097
4098         * doc/c-tree.texi (Expression trees) [VEC_PACK_TRUNC_EXPR]:
4099         Rename from VEC_PACK_MOD_EXPR.  This expression also represent
4100         packing of floating point operands.
4101         [VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR]: These expression also
4102         represent unpacking of floating point operands.
4103         * doc/md.texi (Standard Names) [vec_pack_trunc]: Update documentation.
4104         [vec_unpacks_hi]: Ditto.
4105         [vec_unpacks_lo]: Ditto.
4106
4107 2007-04-22  Jan Hubicka  <jh@suse.cz>
4108
4109         * final.c (rest_of_handle_final): Call
4110         targetm.asm_out.constructor/targetm.asm_out.destructor
4111         * cgraphunit.c (cgraph_build_static_cdtor): Don't do it here; set
4112         proper priority via decl_*_priority_insert.
4113         * c-common.c (c_expand_body): Likewise.
4114
4115 2007-04-22  Richard Guenther  <rguenther@suse.de>
4116
4117         PR tree-optimization/29789
4118         * tree-ssa-loop-im.c (stmt_cost): Adjust cost of shifts.
4119         (rewrite_reciprocal): New helper split out from
4120         determine_invariantness_stmt.
4121         (rewrite_bittest): Likewise.
4122         (determine_invariantness_stmt): Rewrite (A >> B) & 1 to
4123         A & (1 << B) if (1 << B) is loop invariant but (A >> B)
4124         is not.
4125
4126 2007-04-22  Revital Eres  <eres@il.ibm.com>
4127
4128         * loop-unroll.c (var_to_expand): New field to support also
4129         insns of the form x = something + x.
4130         (analyze_insn_to_expand_var): Use it.
4131         (expand_var_during_unrolling): Likewise.
4132
4133 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
4134
4135         * predict.c: Include pointer-set.h.
4136         (bb_predictions): New variable.
4137         (tree_predicted_by_p, tree_predict_edge,
4138         remove_predictions_associated_with_edge): Use bb_predictions map
4139         instead of bb->predictions.
4140         (clear_bb_predictions, assert_is_empty): New functions.
4141         (combine_predictions_for_bb): Use bb_predictions map.  Call
4142         clear_bb_predictions.
4143         (tree_estimate_probability): Create and free bb_predictions map.
4144         * Makefile.in (predict.o): Add pointer-set.h dependency.
4145         * basic-block.h (struct basic_block_def): Remove predictions
4146         field.
4147         * cfgrtl.c (rtl_verify_flow_info_1): Do not check bb->predictions.
4148
4149 2007-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>
4150
4151         PR target/31480
4152         * config/sh/sh.md (length): Check if prev_nonnote_insn (insn)
4153         is null.
4154
4155 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4156
4157         * timevar.c (timevar_print): Change reference of --disable-checking to
4158         --enable-checking=release.  Also warn if assert checking is disabled.
4159
4160 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4161
4162         PR C/30265
4163         * c-gimplifier.c (gimplify_compound_literal_expr): Mark the
4164         decl as addressable if the compound literal was marked as
4165         addressable.
4166         Mark the decl as a gimple register if it is a complex or
4167         vector decl and does not live in memory.
4168
4169 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4170
4171         * tree.h (GIMPLE_TUPLE_P): Also true for PHI_NODEs.
4172         (GENERIC_NEXT): New function macro.
4173         (PHI_CHAIN): Use phi_node's new chain variable.
4174         (tree_phi_node): Change tree_common to tree_base
4175         and add the chain field.
4176         * tree-phinodes.c (make_phi_node): Don't set
4177         TREE_TYPE on the new node.
4178         * c-decl.c (lang_tree_node): Use GENERIC_NEXT
4179         instead of checking GIMPLE_TUPLE_P in chain_next.
4180         * tree-vect-transform.c
4181         (get_initial_def_for_induction): Look at
4182         PHI_RESULT_TREE for the type of the phi node.
4183         (update_vuses_to_preheader): Use PHI_CHAIN
4184         instead of TREE_CHAIN on the phi node.
4185         * tree-ssa-structalias.c (compute_points_to_sets):
4186         Likewise.
4187         (ipa_pta_execute): Likewise.
4188
4189 2007-04-21  Richard Guenther  <rguenther@suse.de>
4190
4191         PR middle-end/31136
4192         * fold-const.c (fold_unary): Call fold_convert_const on the
4193         original tree.
4194
4195 2007-04-21  Alexandre Oliva  <aoliva@redhat.com>
4196
4197         * gcse.c (store_killed_in_insn): Handle PARALLELs.
4198         (store_killed_in_pat): New.
4199
4200 2007-04-20  Richard Henderson  <rth@redhat.com>
4201
4202         PR target/31628
4203         * config/i386/i386.c (type_has_variadic_args_p): Look for any
4204         TREE_LIST with a void_type_node value, not void_list_node exactly.
4205
4206 2007-04-21  Douglas Gregor  <doug.gregor@gmail.com>
4207
4208         * doc/standards.texi: Re-arrange into language-specific
4209         subsections. Add a C++ section, documenting which standards we
4210         support.
4211
4212 2007-04-21  Zdenek Dvorak  <dvorakz@suse.cz>
4213
4214         * tree-ssa-structalias.c (delete_points_to_sets): Free graph->complex.
4215         * tree-ssa-operands.c (finalize_ssa_vuse_ops): Free new_ops.
4216
4217 2007-04-20  Daniel Jacobowitz  <dan@codesourcery.com>
4218
4219         * config/rs6000/sysv4.h (STARTFILE_DEFAULT_SPEC): Include
4220         ecrti.o and crtbegin.o.
4221         (LIB_DEFAULT_SPEC): Include -lc.
4222         (ENDFILE_DEFAULT_SPEC): Include crtend.o and ecrtn.o.
4223
4224 2007-04-20  Richard Henderson  <rth@redhat.com>
4225
4226         PR target/28623
4227         * config/alpha/alpha.c (get_unaligned_address): Remove extra_offset
4228         argument; update all callers.
4229         (get_unaligned_offset): New.
4230         * config/alpha/alpha.md (extendqidi2, extendhidi2): Don't use
4231         get_unaligned_address, just pass on the address directly.
4232         (unaligned_extendqidi): Use gen_lowpart instead of open-coding
4233         the subreg in the helper patterns.
4234         (unaligned_extendqidi_le): Use get_unaligned_offset.
4235         (unaligned_extendqidi_be, unaligned_extendhidi_le): Likewise.
4236         (unaligned_extendhidi_be): Likewise.
4237         (unaligned_extendhidi): Tidy.
4238         * config/alpha/alpha-protos.h: Update.
4239
4240 2007-04-20  Richard Henderson  <rth@redhat.com>
4241
4242         * config/alpha/alpha.h (CPP_SPEC, CPP_SUBTARGET_SPEC): Remove.
4243         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
4244         * config/alpha/linux.h (CPP_SPEC): Undef before redefine.
4245         * config/alpha/linux-elf.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
4246         * config/alpha/freebsd.h (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
4247         (CPP_SPEC): Don't include %(cpp_subtarget).
4248         * config/alpha/netbsd.h (CPP_SPEC): Rename CPP_SUBTARGET_SPEC.
4249         (EXTRA_SPECS): Rename SUBTARGET_EXTRA_SPECS.
4250         * config/alpha/osf.h (CPP_SPEC, EXTRA_SPECS): Similarly.
4251
4252 2007-04-20  Jakub Jelinek  <jakub@redhat.com>
4253
4254         * config/i386/i386.c (bdesc_2arg): Use ORDERED rather than UNORDERED
4255         for __builtin_ia32_cmpordss.
4256
4257         PR tree-optimization/31632
4258         * fold-const.c (fold_binary): Use op0 and op1 instead of arg0
4259         and arg1 for optimizations of comparison against min/max values.
4260         Fold arg0 to arg1's type for optimizations of comparison against
4261         min+1 and max-1 values.
4262
4263 2007-04-19  Bernd Schmidt  <bernd.schmidt@analog.com>
4264
4265         * reload.c (combine_reloads): When trying to use a dying register,
4266         check whether it's uninitialized and don't use if so.
4267
4268 2007-04-19  Brooks Moses  <brooks.moses@codesourcery.com>
4269
4270         * fold-const.c: Remove prototypes for native_encode_expr and
4271         native_interpret_expr.
4272         (native_encode_expr): Make non-static.
4273         (native_interpret_expr): Likewise.
4274         * tree.h: Add prototypes for the above.
4275
4276 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
4277
4278         * config/rs6000/spe.md (*frob_tf_ti, *frob_ti_tf, *frob_ti_tf_2,
4279         *mov_si<mode>_e500_subreg0, *mov_si<mode>_e500_subreg0_2,
4280         *mov_sitf_e500_subreg8, *mov_sitf_e500_subreg8_2, spe_extenddftf2,
4281         spe_fix_trunctfsi2_internal, spe_negtf2_internal, cmptfeq_gpr,
4282         tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr, tsttflt_gpr):
4283         Add length attributes.
4284
4285 2007-04-19  Janis Johnson  <janis187@us.ibm.com>
4286
4287         * ginclude/float.h: Check that __STDC_WANT_DEC_FP__ is defined,
4288         not that it is 1.
4289
4290         * c-cppbuiltin.c (c_cpp_builtins): Remove definition of
4291         __STDC_WANT_DEC_FP__.
4292
4293 2007-04-19  Joseph Myers  <joseph@codesourcery.com>
4294
4295         * configure.ac: Allow both powerpc*-*-linux* and powerpc*-*-gnu*
4296         for long double compatibility.
4297         * configure: Regenerate.
4298
4299 2007-04-19  Eric Botcazou  <ebotcazou@libertysurf.fr>
4300
4301         PR rtl-optimization/29841
4302         * cfgbuild.c (control_flow_insn_p): Return TRUE for unconditional
4303         trap instructions.
4304         * sched-deps.c (sched_analyze_insn): Prevent all non-jump instructions
4305         that may cause control flow transfer from being moved.
4306
4307 2007-04-18  Jan Hubicka  <jh@suse.cz>
4308
4309         * fold-const.c (div_if_zero_remainder): Do signed divide for pointer
4310         types.
4311
4312 2007-04-18  Eric Christopher  <echristo@apple.com>
4313
4314         * config/rs6000/darwin.md (load_macho_picbase): Use link register
4315         only. Update operands.
4316         * config/rs6000/rs6000.c (rs6000_emit_prologue): Update caller.
4317         * config/rs6000/rs6000.md (builtin_setjmp_receiver): Ditto. Move from
4318         link register to pic register.
4319
4320 2007-04-18  Dirk Mueller  <dmueller@suse.de>
4321
4322         PR diagnostic/31227
4323         * tree-vrp.c (search_for_addr_array): New.
4324         (check_array_bounds): Suppress warning about
4325         address taken of array refs if its not de-referenced.
4326
4327 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
4328
4329         * tree-vectorizer.c (destroy_loop_vec_info): Set loop->aux to NULL.
4330         * tree-vect-analyze.c (vect_analyze_loop_form): Set loop->aux.
4331
4332         * tree-vectorizer.h (NITERS_KNOWN_P): New.
4333         * tree-vect-analyze.c (vect_analyze_loop_form): Call NITERS_KNOWN_P
4334         instead of LOOP_VINFO_INT_NITERS to avoid having to geneate loop_info.
4335
4336         * tree-vect-analyze.c (vect_determine_vectorization_factor): Add
4337         dump print.
4338         (vect_analyze_operations): Fix indenetation.  Fix a comment.  Fix a
4339         print message.
4340         (vect_analyze_scalar_cycles): Fix indentation.
4341         (vect_enhance_data_refs_alignment): Fix check in case of peeling.
4342         (vect_mark_relevant): Include phis in relevance analysis.
4343
4344         * tree-vect-transform.c (vect_transform_loop): Add an assert.
4345
4346 2007-04-18  Anatoly Sokolov <aesok@post.ru>
4347
4348         * config/avr/avr.c (ptrreg_to_str): Replace error() with
4349         output_operand_lossage().
4350
4351 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
4352
4353         * tree-vect-transform.c (get_initial_def_for_reduction): Clean away
4354         the unused code for reduction without adjust-in-epilog to simplify the
4355         function.
4356
4357 2007-04-18  Wolfgang Gellerich  <gellerich@de.ibm.com>
4358
4359         * config/s390/s390.h (S390_TDC_POSITIVE_ZERO): New constant.
4360         (S390_TDC_NEGATIVE_ZERO): New constant.
4361         (S390_TDC_POSITIVE_NORMALIZED_NUMBER): New constant.
4362         (S390_TDC_NEGATIVE_NORMALIZED_NUMBER): New constant.
4363         (S390_TDC_POSITIVE_DENORMALIZED_NUMBER): New constant.
4364         (S390_TDC_NEGATIVE_DENORMALIZED_NUMBER): New constant.
4365         (S390_TDC_POSITIVE_INFINITY): New constant.
4366         (S390_TDC_NEGATIVE_INFINITY): New constant.
4367         (S390_TDC_POSITIVE_QUIET_NAN): New constant.
4368         (S390_TDC_NEGATIVE_QUIET_NAN): New constant.
4369         (S390_TDC_POSITIVE_SIGNALING_NAN): New constant.
4370         (S390_TDC_NEGATIVE_SIGNALING_NAN): New constant.
4371         (S390_TDC_INFINITY): New constant.
4372         * config/s390/s390.c (s390_canonicalize_comparison): Renamed
4373         UNSPEC_CMPINT to UNSPEC_CCU_TO_INT, added a UNSPEC_CCU_TO_INT-like
4374         optimization for UNSPEC_CCZ_TO_INT.
4375         * config/s390/s390.md ("*TDC_insn_<mode>"): New insn.
4376         ("*ccz_to_int"): New insn.
4377         ("isinf<mode>2"): New insn.
4378         (UNSPEC_CMPINT): Renamed to UNSPEC_CCU_TO_INT.
4379         (UNSPEC_CCU_TO_INT): New constant, replaces UNSPEC_CMPINT.
4380         (UNSPEC_CCZ_TO_INT): New constant.
4381
4382 2007-04-18  Richard Guenther  <rguenther@suse.de>
4383
4384         PR tree-optimization/19431
4385         PR tree-optimization/21463
4386         * tree-pass.h (pass_phiprop): Declare.
4387         * passes.c (init_optimization_passes): New phiprop pass.
4388         * tree-ssa-forwprop.c (struct phiprop_d): New structure.
4389         (phivn_valid_p): New helper function.
4390         (phiprop_insert_phi): Likewise.
4391         (propagate_with_phi): Likewise.
4392         (tree_ssa_phiprop): New propagator propagating loads
4393         through phi nodes if profitable.
4394
4395 2007-04-18  Dorit Nuzman  <dorit@il.ibm.com>
4396
4397         * tree-vect-analyze.c (process_use): New function.
4398         (vect_mark_stmts_to_be_vectorized): Factor out code to process_use.
4399         Check phis in all bbs.
4400         * tree-vectorizer.c (vect_is_simple_use): Remove a no longer relavant
4401         assert.
4402
4403 2007-04-18  Bernd Schmidt  <bernd.schmidt@analog.com>
4404
4405         * reload1.c (eliminte_regs_in_insn): Use REG_EQUIV notes the same way
4406         we use REG_EQUAL.
4407
4408 2007-04-17  Anatoly Sokolov <aesok@post.ru>
4409
4410         PR target/30483
4411         * config/avr/avr.c (ptrreg_to_str): Replace gcc_unreachable() with
4412         error().
4413
4414 2007-04-17  H.J. Lu  <hongjiu.lu@intel.com>
4415
4416         * config/i386/sse.md (sse_vmaddv4sf3): Use register_operand
4417         on "0".
4418         (sse_vmmulv4sf3): Likewise.
4419         (sse2_vmaddv2df3): Likewise.
4420         (sse2_vmmulv2df3): Likewise.
4421
4422 2007-04-17  Zdenek Dvorak  <dvorakz@suse.cz>
4423
4424         PR rtl-optimization/31360
4425         * cfgloopanal.c (target_small_cost, target_pres_cost): Removed.
4426         (target_reg_cost): New.
4427         (init_set_costs): Initialize target_reg_cost.  Add comments
4428         regarding the rationale of the costs.
4429         (global_cost_for_size): Renamed to...
4430         (estimate_reg_pressure_cost): ... and simplify.  Decrease importance
4431         of register pressure.
4432         * tree-ssa-loop-ivopts.c (ivopts_global_cost_for_size): Use
4433         estimate_reg_pressure_cost.  Add number of ivs.
4434         (determine_set_costs): Dump target_reg_cost.
4435         * loop-invariant.c (gain_for_invariant):  Use
4436         estimate_reg_pressure_cost.  Removed n_inv_uses argument.
4437         (best_gain_for_invariant, find_invariants_to_move): Remove
4438         n_inv_uses.
4439         * cfgloop.h (target_small_cost, target_pres_cost): Removed.
4440         (target_reg_cost): Declare.
4441         (global_cost_for_size): Declaration removed.
4442         (estimate_reg_pressure_cost): Declare.
4443
4444 2007-04-17  Peter Bergner  <bergner@vnet.ibm.com>
4445
4446         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Force TDmode
4447         regnos into even/odd register pairs.
4448         * config/rs6000/rs6000.h [SLOW_UNALIGNED_ACCESS]: Treat DDmode and
4449         TDmode similar to the other floating point modes.
4450         [SECONDARY_MEMORY_NEEDED]: Treat DDmode similar to DFmode.
4451         * config/rs6000/dfp.md (negdd2, absdd2, negtd2, abstd2): New
4452         define_expand's.
4453         (negdd2_fpr, absdd2_fpr, nabsdd2_fpr, negtd2_fpr, abstd2_fpr,
4454         nabstd2_fpr, movdd_hardfloat64_mfpgpr): New define_insn's.
4455         (movdd_hardfloat64): Use TARGET_MFPGPR.
4456
4457 2007-04-17  Bernd Schmidt  <bernd.schmidt@analog.com>
4458
4459         * reload1.c (delete_output_reload): Don't count output in n_inherited.
4460
4461         Revert
4462         2005-01-05  Richard Henderson  <rth@redhat.com>
4463         PR rtl-opt/10692
4464         * reload1.c (do_input_reload): Restrict the optimization deleteing
4465         a previous output reload to RELOAD_FOR_INPUT.
4466
4467 2007-04-17  Dorit Nuzman  <dorit@il.ibm.com>
4468
4469         * tree-vectorizer.h (stmt_vec_info_type): Add enum value
4470         induc_vec_info_type.
4471         (vectorizable_induction): New function declaration.
4472         * tree-vect-transform.c (get_initial_def_for_induction): No need to
4473         check if already vectorized.  Find first place in BB where new stmts
4474         can be inserted.  Takes only one argument.
4475         (vectorizable_induction): New function.
4476         (vect_transform_stmt): Add case for induc_vec_info_type to call
4477         vectorizable_induction.
4478         (vect_transform_loop): Consider phis for vectorization.
4479         * tree-vect-analyze.c (vect_determine_vectorization_factor): Simplify
4480         condition.
4481         (analyze_operations): Call vectorizable_induction when analyzing phis.
4482         Fix comment.
4483         (vect_mark_stmts_to_be_vectorized): Remove redundant checks.
4484         (vect_mark_relevant): Include phis in relevance analysis.
4485         (vect_mark_stmts_to_be_vectorize): Likewise.
4486         * tree-vect-patterns.c (widened_name_p): Remove obsolete asserts.
4487
4488 2007-04-16  Lawrence Crowl  <crowl@google.com>
4489
4490         * doc/invoke.texi (Debugging Options): Add documentation for the
4491         -femit-struct-debug options -femit-struct-debug-baseonly,
4492         -femit-struct-debug-reduced, and
4493         -femit-struct-debug-detailed[=...].
4494
4495         * c-opts.c (c_common_handle_option): Add
4496         OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
4497         and OPT_femit_struct_debug_detailed_.
4498         * c.opt: Add specifications for
4499         -femit-struct-debug-baseonly, -femit-struct-debug-reduced,
4500         and -femit-struct-debug-detailed[=...].
4501         * opts.c (set_struct_debug_option): Parse the
4502         -femit-struct-debug-... options.
4503         * opts.c (matches_main_base, main_input_basename,
4504         main_input_baselength, base_of_path, matches_main_base): Add
4505         variables and functions to compare header base name to compilation
4506         unit base name.
4507         * opts.c (should_emit_struct_debug): Add to determine to emit a
4508         structure based on the option.
4509         (dump_struct_debug) Also disabled function to debug this
4510         function.
4511         * opts.c (handle_options): Save the base name of the
4512         compilation unit.
4513
4514         * langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
4515         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
4516         This hook indicates if a type is generic.  Set it by default
4517         to "never generic".
4518         * langhooks.h (struct lang_hooks_for_types): Add a new hook
4519         to determine if a struct type is generic or not.
4520         * cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
4521         * cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
4522         * cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
4523         with live C++ hook.
4524
4525         * flags.h (enum debug_info_usage): Add an enumeration to describe
4526         a program's use of a structure type.
4527         * dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
4528         to indicate the program's usage of the type.  Filter structs based
4529         on the -femit-struct-debug-... specification.
4530         (gen_type_die): Split into two routines, gen_type_die and
4531         gen_type_die_with_usage.  gen_type_die is now a wrapper
4532         that assumes direct usage.
4533         (gen_type_die_with_usage): Replace calls to gen_type_die
4534         with gen_type_die_with_usage adding the program usage of
4535         the referenced type.
4536         (dwarf2out_imported_module_or_decl): Suppress struct debug
4537         information using should_emit_struct_debug when appropriate.
4538
4539 2007-04-16  Ian Lance Taylor  <iant@google.com>
4540
4541         PR tree-optimization/31522
4542         * tree-vrp.c (vr_phi_edge_counts): New static variable.
4543         (vrp_initialize): Allocate vr_phi_edge_counts.
4544         (vrp_visit_phi_node): Don't push to infinity if we saw a new
4545         executable edge.  Drop test for all constants.
4546         (vrp_finalize): Free vrp_phi_edge_counts.
4547
4548         * doc/cpp.texi (Common Predefined Macros): Clarify description of
4549         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
4550
4551         * tree-ssa-propagate.c (cfg_blocks_add): Insert blocks with fewer
4552         predecessors at head rather than tail.
4553
4554 2007-04-16  Matthias Klose  <doko@debian.org>
4555
4556         * config/alpha/linux.h (CPP_SPEC): Define.
4557         * config/arm/linux-gas.h (SUBTARGET_CPP_SPEC): Extend.
4558
4559 2007-04-16  Aldy Hernandez  <aldyh@redhat.com>
4560
4561         * function.h: Remove sequence_stack extern declaration.
4562
4563 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
4564
4565         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Change to 64 on
4566         TARGET_FIDOA.
4567         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Change to 64 if __mfido__ is
4568         defined.
4569
4570 2007-04-16  Anatoly Sokolov <aesok@post.ru>
4571
4572         * config/avr/avr.c (avr_arch_types): Rearranging  array.
4573         (enum avr_arch): Add.
4574         (avr_mcu_types): Use avr_arch enumeration constants instead of
4575         numbers.
4576         * config/avr/avr.h (LINK_SPEC): Simplify.
4577
4578 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
4579
4580         * config/m68k/m68k.c (m68k_libcall_value,
4581         m68k_function_value): Use macros for register names more.
4582
4583         * config/m68k/m68k.h (FRAME_POINTER_REGNUM): Use A6_REG
4584         instead.
4585         (M68K_REGNAME): Use A6_REG.
4586         * config/m68k/m68k.md (FP_REG): Rename to A6_REG.
4587
4588 2007-04-16  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
4589
4590         PR middle-end/28071
4591         * sched-int.h (struct deps): Split field 'pending_lists_length' into
4592         'pending_read_list_length' and 'pending_write_list_length'.  Update
4593         comment.
4594         * sched-deps.c (add_insn_mem_dependence): Change signature.  Update
4595         to handle two length counters instead of one.  Update all uses.
4596         (flush_pending_lists, sched_analyze_1, init_deps): Update to handle
4597         two length counters instead of one.
4598         * sched-rgn.c (propagate_deps): Update to handle two length counters
4599         instead of one.
4600
4601 2007-04-16  H.J. Lu  <hongjiu.lu@intel.com>
4602
4603         PR target/31582
4604         * config/i386/i386.c (ix86_expand_vec_set_builtin): Make a
4605         copy of source, pass it to ix86_expand_vector_set and return
4606         it as target.
4607
4608 2007-04-16  David Ung  <davidu@mips.com>
4609             Joseph Myers  <joseph@codesourcery.com>
4610
4611         * config/mips/mips.h (PROCESSOR_74KC, PROCESSOR_74KF,
4612         PROCESSOR_74KX, TUNE_74K, GENERATE_MADD_MSUB): Define.
4613         * config/mips/mips.c (mips_cpu_info_table, mips_rtx_cost_data):
4614         Add 74K processor information.
4615         * config/mips/mips.md: Include 74k.md.
4616         (cpu): Add 74kc,74kf,74kx.
4617         (ISA_HAS_MADD_MSUB): Change to GENERATE_MADD_MSUB throughout.
4618         * config/mips/74k.md: New.
4619         * doc/invoke.texi (MIPS Options): Document 74K support.
4620
4621 2007-04-16  Dorit Nuzman  <dorit@il.ibm.com>
4622
4623         * tree-vect-analyze.c (vect_analyze_operations): Reorganize calls to
4624         vectorizable_* functions.
4625         * tree-vect-transform.c (vectorizable_call): Add check for
4626         STMT_VINFO_RELEVANT_P, STMT_VINFO_DEF_TYPE and STMT_VINFO_LIVE_P.
4627         (vectorizable_store): likewise.
4628         (vectorizable_conversion): Add check for STMT_VINFO_DEF_TYPE.
4629         Add comments.
4630         (vectorizable_operation, vectorizable_type_demotion): Likewise.
4631         (vectorizable_type_promotion, vectorizable_load): Likewise.
4632         (vectorizable_live_operation, vectorizable_condition): Likewise.
4633         (vectorizable_assignment): Add check for STMT_VINFO_DEF_TYPE and
4634         STMT_VINFO_LIVE_P.
4635         (vect_transform_stmt): Reorganize calls to vectorizable_* functions.
4636
4637 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4638
4639         * config/m68k/linux.h (FUNCTION_VALUE_REGNO_P): Use macros for
4640         register numbers more.
4641         * config/m68k/m68k.h (STACK_POINTER_REGNUM,
4642         FRAME_POINTER_REGNUM, STATIC_CHAIN_REGNUM,
4643         M68K_STRUCT_VALUE_REGNUM, FUNCTION_VALUE, LIBCALL_VALUE,
4644         FUNCTION_VALUE_REGNO_P): Likewise.
4645         * config/m68k/m68kelf.h (M68K_STRUCT_VALUE_REGNUM,
4646         STATIC_CHAIN_REGNUM): Likewise.
4647         * config/m68k/m68kemb.h (FUNCTION_VALUE_REGNO_P): Likewise.
4648         * config/m68k/netbsd-elf.h (M68K_STRUCT_VALUE_REGNUM,
4649         STATIC_CHAIN_REGNUM, FUNCTION_VALUE_REGNO_P): Likewise.
4650         * config/m68k/m68k.md (FP_REG): New.
4651
4652 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4653
4654         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Prefer 32-bit
4655         alignment on fido.
4656
4657 2007-04-15  Kazu Hirata  <kazu@codesourcery.com>
4658
4659         * config/i386/i386.c, config/s390/s390.c, config/s390/s390.md,
4660         tree-ssa-loop-niter.c, tree-ssa-structalias.c, tree-vrp.c: Fix
4661         comment typos.
4662
4663 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
4664
4665         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Ignore
4666         cold loops.
4667
4668 2007-04-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>
4669
4670         PR c/31520
4671         * c-decl.c (finish_decl): Grab the type of the decl after the call
4672         to store_init_value.
4673
4674 2007-04-14  Steven Bosscher  <steven@gcc.gnu.org>
4675
4676         * common.opt (fforward-propagate): Fix "Optimization" annotation.
4677
4678 2007-04-14  Jakub Jelinek  <jakub@redhat.com>
4679
4680         PR c++/25874
4681         * omp-low.c (expand_omp_parallel): If child_cfun->cfg, free dominators,
4682         post dominators and cleanup cfg before returning.
4683
4684 2007-04-14  Bernd Schmidt  <bernd.schmidt@analog.com>
4685
4686         * config/bfin/bfin.h (MODES_TIEABLE_P): Allow more modes to be tied.
4687         * config/bfin/bfin.md (movsi_insn): Delete two unused alternatives.
4688
4689 2007-04-14  Kazu Hirata  <kazu@codesourcery.com>
4690
4691         * config.gcc: Recognize fido.
4692         * config/m68k/m68k-devices.def (fidoa): New.
4693         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define
4694         __mfido__.
4695         (FL_FIDOA, TARGET_FIDOA): New.
4696         * config/m68k/m68k.opt (mfidoa): New.
4697
4698 2007-04-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4699
4700         PR middle-end/31322
4701         * dwarf2out.c (output_call_frame_info): Call assemble_external_libcall
4702         when a personality function is used.
4703
4704 2007-04-13  Bob Wilson  <bob.wilson@acm.org>
4705
4706         * config/xtensa/xtensa.c (xtensa_expand_builtin): Use CALL_EXPR_FN.
4707
4708 2007-04-13  Mike Stump  <mrs@apple.com>
4709
4710         * config/darwin-c.c (handle_c_option): Handle -fapple-kext here so
4711         we can...
4712         * config/darwin.opt (fapple-kext): Make C++ only.
4713         * config/darwin.c (darwin_override_options): Remove code to ensure
4714         -fapple-kext is given for C++ only.
4715
4716 2007-04-13  Richard Sandiford  <richard@codesourcery.com>
4717
4718         * config/mips/vxworks.h (SUBTARGET_OVERRIDE_OPTIONS): Define.
4719         * config/mips/mips.c (override_options): Call
4720         SUBTARGET_OVERRIDE_OPTIONS, if defined.
4721
4722 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
4723
4724         * config/i386/i386.opt (msvr3-shlib): Removed.
4725
4726         * doc/invoke.texi: Remove -msvr3-shlib.
4727
4728 2007-04-13  H.J. Lu  <hongjiu.lu@intel.com>
4729
4730         * config/i386/i386.opt (mpopcnt): Replace "popcount" instruction
4731         with "popcnt" instruction.
4732
4733 2007-04-13  Richard Guenther  <rguenther@suse.de>
4734
4735         PR tree-optimization/21258
4736         * tree-vrp.c (compare_case_labels): New helper.
4737         (find_switch_asserts): New function.
4738         (find_assert_locations): Call it for SWITCH_EXPRs.
4739
4740 2007-04-13  Uros Bizjak  <ubizjak@gmail.com>
4741
4742         * config/i386/i386.h (X87_FLOAT_MODE_P): Check for TARGET_80387.
4743         * config/i386/i386.md (*cmpfp0): Remove check for TARGET_80387, this
4744         check is now implied in X87_FLOAT_MODE_P.
4745         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
4746         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
4747         (fix_trunc<mode>_i386_fisttp): Ditto.
4748         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
4749         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
4750         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
4751         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
4752         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
4753         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
4754         (unnamed_splitters): Ditto.
4755         * config/i386/i386.c (function_value_32): Generate FIRST_FLOAT_REG
4756         for X87_FLOAT_MODE_P mode.  Override FIRST_FLOAT_REG with
4757         FIRST_SSE_REG for local functions when SSE math is enabled or
4758         for functions with sseregparm attribute.
4759         (standard_80387_constant_p): Return -1 if mode is not
4760         X87_FLOAT_MODE_P.
4761         (ix86_cc_mode): Assert that scalar mode is not DECIMAL_FLOAT_MODE_P.
4762         (ix86_expand_compare): Ditto.
4763         (ix86_expand_carry_flag_compare): Ditto.
4764         (ix86_expand_int_movcc): Check for SCALAR_FLOAT_MODE_P instead
4765         of FLOAT_MODE_P for cmp_mode and assert that cmp_mode is not
4766         DECIMAL_FLOAT_MODE_P.
4767         (ix86_preferred_output_reload_class): Use X87_FLOAT_MODE_P instead
4768         of SCALAR_FLOAT_MODE_P.
4769         (ix86_rtx_costs) [PLUS] Remove FLOAT_MODE_P and fall through to ...
4770         [MINUS]: ... here.  Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P
4771         checks before FLOAT_MODE_P.
4772         [MULT]: Add SSE_FLOAT_MODE_P and X87_FLOAT_MODE_P checks
4773         before FLOAT_MODE_P.
4774         [DIV]: Ditto.
4775         [NEG]: Ditto.
4776         [ABS]: Ditto.
4777         [SQRT]: Ditto.
4778         [FLOAT_EXTEND]: Use SSE_FLOAT_MODE_P.
4779
4780 2007-04-12  Paolo Bonzini  <bonzini@gnu.org>
4781             Charles Wilson  <libtool@cwilson.fastmail.fm>
4782
4783         * Makefile.in (stamp-as, stamp-collect-ld, stamp-nm): Remove.
4784         (libgcc.mvars): Don't depend on them.
4785         * configure.ac (as, collect-ld, nm): Create from exec-tool.in.
4786         * exec-tool.in: New.
4787
4788 2007-04-12  Brooks Moses  <brooks.moses@codesourcery.com>
4789
4790         * doc/invoke.text (--help): Document --help=common.
4791
4792 2007-04-12  Thomas Neumann  <tneumann@users.sourceforge.net>
4793
4794         * stub-objc.c (objc_build_keyword_decl): Avoid C++ keywords.
4795
4796 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4797
4798         * Makefile.in (insn-emit.o): Depend on $(INTEGRATE_H).
4799         * genemit.c (main): Emit #include "integrate.h".
4800         * config/mips/mips-protos.h (SYMBOL_HALF): New mips_symbol_type.
4801         (LOADGP_RTP): New mips_loadgp_style.
4802         * config/mips/mips.h: Include config/vxworks-dummy.h.
4803         (TARGET_RTP_PIC): New macro.
4804         (TARGET_USE_GOT): Return true for TARGET_RTP_PIC.
4805         (TARGET_USE_PIC_FN_ADDR_REG): Return true for TARGET_VXWORKS_RTP.
4806         (ASM_OUTPUT_ADDR_DIFF_ELT): Emit function-relative case tables
4807         for TARGET_RTP_PIC.
4808         * config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Define.  Pass down
4809         -mvxworks-pic when using -mrtp and a PIC option.
4810         * config/mips/mips.c (mips_classify_symbol): Return SYMBOL_GOT_DISP
4811         for RTP PIC.
4812         (mips_symbolic_constant_p, mips_symbolic_address_p)
4813         (mips_symbol_insns): Handle SYMBOL_HALF.
4814         (override_options): Warn about -G and -mrtp being used together.
4815         Initialize mips_lo_relocs[SYMBOL_HALF].
4816         (mips_current_loadgp_style): Return LOADGP_RTP for RTP PIC.
4817         (mips_emit_loadgp): Handle LOADGP_RTP.
4818         (mips_in_small_data_p): Return false for TARGET_VXWORKS_RTP.
4819         * config/mips/mips.md (loadgp_rtp): New insn and splitter.
4820         (tablejump): Handle function-relative case table entries if
4821         TARGET_RTP_PIC.
4822         * config/mips/predicates.md (symbol_ref_operand): New predicate.
4823
4824 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4825
4826         * config/mips/mips.md (load_call<mode>): Allow any general register.
4827         destination.
4828         (sibcall_value_internal, sibcall_value_multiple_internal)
4829         (call_value_internal, call_value_split, call_value_multiple_internal)
4830         (call_value_multiple_split): Remove constraints from operand 0.
4831
4832 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4833
4834         * config/mips/mips-protos.h: In comments, refer to loadgp_absolute
4835         rather than loadgp_noshared.
4836         * config/mips/mips.c (mips_emit_loadgp): Use gen_loadgp_absolute
4837         instead of gen_loadgp_noshared.  Use gen_loadgp_newabi instead of
4838         gen_loadgp.
4839         * config/mips/mips.md (loadgp): Rename to...
4840         (loadgp_newabi): ...this.
4841         (loadgp_noshared): Rename to...
4842         (loadgp_absolute): ...this.
4843
4844 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4845
4846         * config/mips/mips.c (mips_ok_for_lazy_binding_p): Always return
4847         false for locally-binding symbols.
4848         (mips_dangerous_for_la25_p): Check mips_global_symbol_p.
4849
4850 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4851
4852         * config/mips/mips-protos.h (SYMBOL_GOT_LOCAL): Rename to...
4853         (SYMBOL_GOT_PAGE_OFST): ...this.
4854         (SYMBOL_GOT_GLOBAL): Rename to...
4855         (SYMBOL_GOT_DISP): ...this.
4856         (SYMBOL_GOTOFF_GLOBAL): Rename to...
4857         (SYMBOL_GOTOFF_DISP): ...this.  Update comments accordingly.
4858         * config/mips/mips.c (mips_global_symbol_p): New function.
4859         (mips_symbol_binds_local_p): Likewise.
4860         (mips_classify_symbol): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP
4861         and SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST.  Use mips_global_symbol_p
4862         and mips_symbol_binds_local_p.
4863         (mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
4864         (override_options): Rename SYMBOL_GOT_GLOBAL to SYMBOL_GOT_DISP,
4865         SYMBOL_GOT_LOCAL to SYMBOL_GOT_PAGE_OFST and SYMBOL_GOTOFF_GLOBAL to
4866         SYMBOL_GOTOFF_DISP.
4867         (mips_ok_for_lazy_binding_p): New function.
4868         (mips_load_call_address, mips_expand_call): Use it.
4869         (mips_dangerous_for_la25_p): Likewise.
4870         * config/mips/mips.md (*xgot_hi<mode>, *xgot_lo<mode>)
4871         (*got_disp<mode>): Use got_disp_operand instead of
4872         global_got_operand.  Use SYMBOL_GOTOFF_DISP instead of
4873         SYMBOL_GOTOFF_GLOBAL.
4874         (*got_page<mode>): Use got_page_ofst_operand instead of
4875         local_got_operand.
4876         * config/mips/predicates.md (const_call_insn_operand): Use
4877         SYMBOL_GOT_DISP instead of SYMBOL_GOT_GLOBAL.
4878         (global_got_operand): Rename to...
4879         (got_disp_operand): ...this and use SYMBOL_GOT_DISP instead of
4880         SYMBOL_GOT_GLOBAL.
4881         (local_got_operand): Rename to...
4882         (got_page_ofst_operand): ...this and use SYMBOL_GOT_PAGE_OFST instead
4883         of SYMBOL_GOT_LOCAL.
4884
4885 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4886
4887         * config/mips/mips.h (TARGET_SPLIT_CALLS): Check
4888         TARGET_CALL_CLOBBERED_GP.
4889         (TARGET_SIBCALLS): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4890         (TARGET_USE_GOT, TARGET_CALL_CLOBBERED_GP): New macros.
4891         (TARGET_CALL_SAVED_GP, TARGET_USE_PIC_FN_ADDR_REG): Likewise.
4892         (STARTING_FRAME_OFFSET): Check TARGET_CALL_CLOBBERED_GP instead
4893         of TARGET_ABICALLS && !TARGET_NEWABI.
4894         (MIPS_CALL): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4895         * config/mips/mips.c (mips_load_call_address): Check
4896         TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
4897         (mips_global_pointer): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4898         Check TARGET_CALL_SAVED_GP instead of TARGET_NEWABI.
4899         (mips_save_reg_p): Check TARGET_CALL_SAVED_GP instead of
4900         TARGET_ABICALLS && TARGET_NEWABI.
4901         (mips_current_loadgp_style): Check TARGET_USE_GOT instead of
4902         TARGET_ABICALLS.
4903         (mips_expand_prologue): Check TARGET_OLDABI instead of !TARGET_NEWABI.
4904         (mips_expand_epilogue): Check TARGET_CALL_SAVED_GP instead of
4905         TARGET_ABICALLS && TARGET_NEWABI.
4906         (mips_output_mi_thunk): Check TARGET_USE_GOT instead of
4907         TARGET_ABICALLS.  Check TARGET_CALL_SAVED_GP instead of
4908         TARGET_NEWABI.  Use TARGET_USE_PIC_FN_ADDR_REG to decide
4909         whether indirect calls must use $25.
4910         (mips_extra_live_on_entry): Check TARGET_GOT instead of
4911         TARGET_ABICALLS.
4912         * config/mips/mips.md (jal_macro): Check flag_pic and
4913         TARGET_CALL_CLOBBERED_GP instead of TARGET_ABICALLS and TARGET_NEWABI.
4914         (builtin_setjmp_setup, builtin_longjmp): Check TARGET_USE_GOT
4915         instead of TARGET_ABICALLS.
4916         (exception_receiver): Check TARGET_CALL_CLOBBERED_GP instead of
4917         TARGET_ABICALLS && TARGET_OLDABI.
4918         (load_call<mode>): Check TARGET_USE_GOT instead of TARGET_ABICALLS.
4919         (sibcall): In the comment above the define_insn, mention
4920         TARGET_USE_PIC_FN_ADDR_REG instead of TARGET_ABICALLS.
4921         * config/mips/constraints.md (c): Check TARGET_USE_PIC_FN_ADDR_REG
4922         instead of TARGET_ABICALLS.
4923
4924 2007-04-12  Bernd Schmidt  <bernd.schmidt@analog.com>
4925
4926         * doc/md.texi (Blackfin family constraints): Document PA and PB.
4927         * config/bfin/bfin.h (CONST_OK_FOR_P): Handle PA and PB.
4928         (MACFLAGS_MATCH_P): New macro.
4929         * config/bfin/bfin.c (print_operand): Handle MACFLAG_IS_M.
4930         (bfin_secondary_reload): Treat EVEN_AREGS and ODD_AREGS like AREGS.
4931         * config/bfin/bfin.md (MACFLAG_IS_M): New constant.  Renumber some of
4932         the other MACFLAG constants.
4933         (sum_of_accumulators, lshrpdi3, ashrpdi3): New patterns.
4934         (flag_machi): Tighten constraints.  Renumber some of the operands.
4935         (flag_machi_acconly): Tighten constraints.  Correct operand numbers in
4936         output template.
4937         (flag_machi_parts_acconly): New pattern.
4938         (flag_macinithi): Tighten constraints.  Allow any accumulator to be
4939         used.
4940         (flag_macinit1hi): Tighten constraints.
4941         (flag_mul_macv2hi_parts_acconly): New pattern.
4942
4943         * config/bfin/lib1funcs.asm (___umulsi3_highpart, __smulsi3_highpart):
4944         Use a more efficient implementation.
4945         * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
4946         inline sequences when not optimizing for size.
4947
4948         * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
4949         movhi_high2low): Delete, merge functionality into...
4950         (packv2hi): ... this pattern.
4951
4952         2007-02-11  Jie Zhang  <jie.zhang@analog.com>
4953         * config/bfin/bfin.opt (msim): New option.
4954         (mcpu=): New option.
4955         * config/bfin/bfin-protos.h (enum bfin_cpu): New.
4956         (bfin_cpu_t): Typedef of enum bfin_cpu.
4957         (bfin_cpu_type): New declaration.
4958         * config/bfin/elf.h (STARTFILE_SPEC): Add support for
4959         -msim and -mcpu= options.
4960         (LIB_SPEC): Likewise.
4961         * config/bfin/bfin.c (bfin_cpu_type): Define.
4962         (bfin_handle_option): Handle -mcpu= option.
4963         * config/bfin/bfin.h (DEFAULT_CPU_TYPE): Define as BFIN_CPU_BF532.
4964         (TARGET_CPU_CPP_BUILTINS): Define __ADSPBF531__, __ADSPBF532__,
4965         __ADSPBF533__ or __ADSPBF537__ according to the cpu type.
4966
4967 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4968
4969         * config.gcc (*-*-vxworks*): Don't add to tm_files in this stanza.
4970         (arm-wrs-vxworks, mips-wrs-vxworks, powerpc-wrs-vxworks)
4971         (powerpc-wrs-vxworksae): Use ${tm_file}.
4972         (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add svr4.h
4973         after elfos.h.  Remove i386/sysv4.h and add i386/vx-common.h.
4974         * config/i386/vx-common.h: New file.
4975
4976 2007-04-12  Richard Sandiford  <richard@codesourcery.com>
4977
4978         * config/vxworks.h (VXWORKS_STARTFILE_SPEC): Use -l:crt0.o instead
4979         of crt0.o%s.
4980
4981 2007-04-12  Andreas Krebbel  <krebbel1@de.ibm.com>
4982
4983         * config/s390/s390.md ("trunctddd2"): Use TDmode for the target of
4984         ldxtr.
4985
4986 2007-04-12  Douglas Gregor  <doug.gregor@gmail.com>
4987
4988         PR c++/31078
4989         PR c++/31103
4990         * c-common.c (c_build_qualified_type): Set canonical type
4991         appropriately.
4992
4993 2007-04-12  Richard Guenther  <rguenther@suse.de>
4994
4995         * tree-pretty-print.c (dump_generic_node): Print ARRAY_REF
4996         lower bound and element size if lower bound is not zero
4997         or either of the ARRAY_REF operands is set.
4998
4999 2007-04-12  Richard Guenther  <rguenther@suse.de>
5000
5001         PR tree-optimization/24689
5002         PR tree-optimization/31307
5003         * fold-const.c (operand_equal_p): Compare INTEGER_CST array
5004         indices by value.
5005         * gimplify.c (canonicalize_addr_expr): To be consistent with
5006         gimplify_compound_lval only set operands two and three of
5007         ARRAY_REFs if they are not gimple_min_invariant.  This makes
5008         it never at this place.
5009         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
5010
5011 2007-04-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5012
5013         * pa.c (pa_som_asm_init_sections): Ensure that cfun->machine is not
5014         null before emitting a .nsubspa directive.
5015
5016 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
5017
5018         * tree-ssa-alias.c (dump_mem_ref_stats): Do not call
5019         need_to_partition_p if there are no memory statements in the
5020         function.
5021
5022 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5023
5024         * tree-data-ref.c (chrec_steps_divide_constant_p): Removed.
5025         (gcd_of_steps_may_divide_p): New function.
5026         (analyze_miv_subscript): Use gcd_of_steps_may_divide_p.
5027
5028 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
5029
5030         * reload.c (find_reloads_toplev, find_reloads_address,
5031         find_reloads_address_1, find_reloads_subreg_address): Use rtx_equal_p,
5032         not a pointer equality test, to decide if we need to call
5033         push_reg_equiv_alt_mem.
5034
5035 2007-04-11  Sebastian Pop  <sebastian.pop@inria.fr>
5036
5037         * tree-data-ref.c (affine_function_zero_p, constant_access_functions,
5038         insert_innermost_unit_dist_vector, add_distance_for_zero_overlaps): New.
5039         (build_classic_dist_vector): Call add_distance_for_zero_overlaps.
5040
5041 2007-04-11  Zdenek Dvorak  <dvorakz@suse.cz>
5042
5043         * tree-data-ref.c (add_multivariate_self_dist): Force the distance
5044         vector to be positive.
5045
5046 2007-04-11  Diego Novillo  <dnovillo@redhat.com>
5047
5048         PR 30735
5049         PR 31090
5050         * doc/invoke.texi: Document --params max-aliased-vops and
5051         avg-aliased-vops.
5052         * tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
5053         debug_memory_partitions): Move to tree-flow.h
5054         * params.h (AVG_ALIASED_VOPS): Define.
5055         * tree-ssa-alias.c (struct mp_info_def): Remove.  Update all
5056         users.
5057         (mp_info_t): Likewise.
5058         (get_mem_sym_stats_for): New.
5059         (set_memory_partition): Move from tree-flow-inline.h.
5060         (mark_non_addressable): Only clear the set of symbols for the
5061         partition if it exists.
5062         (dump_memory_partitions): Move from tree-ssa-operands.c
5063         (debug_memory_partitions): Likewise.
5064         (need_to_partition_p): New.
5065         (dump_mem_ref_stats): New.
5066         (debug_mem_ref_stats): New.
5067         (dump_mem_sym_stats): New.
5068         (debug_mem_sym_stats): New.
5069         (update_mem_sym_stats_from_stmt): New.
5070         (compare_mp_info_entries): New.
5071         (mp_info_cmp): Call it.
5072         (sort_mp_info): Change argument to a list of mem_sym_stats_t
5073         objects.
5074         (get_mpt_for): Move from tree-ssa-operands.c.
5075         (find_partition_for): New.
5076         (create_partition_for): Remove.
5077         (estimate_vop_reduction): New.
5078         (update_reference_counts): New.
5079         (build_mp_info): New.
5080         (compute_memory_partitions): Refactor.
5081         Document new heuristic.
5082         Call build_mp_info, update_reference_counts,
5083         find_partition_for and estimate_vop_reduction.
5084         (compute_may_aliases): Populate virtual operands before
5085         calling debugging dumps.
5086         (delete_mem_sym_stats): New.
5087         (delete_mem_ref_stats): New.
5088         (init_mem_ref_stats): New.
5089         (init_alias_info): Call it.
5090         (maybe_create_global_var): Remove alias_info argument.
5091         Get number of call sites and number of pure/const call sites
5092         from gimple_mem_ref_stats().
5093         (dump_alias_info): Call dump_memory_partitions first.
5094         (dump_points_to_info_for): Show how many times a pointer has
5095         been dereferenced.
5096         * opts.c (decode_options): For -O2 set --param
5097         max-aliased-vops to 500.
5098         For -O3 set --param max-aliased-vops to 1000 and --param
5099         avg-aliased-vops to 3.
5100         * fortran/options.c (gfc_init_options): Remove assignment to
5101         MAX_ALIASED_VOPS.
5102         * tree-flow-inline.h (gimple_mem_ref_stats): New.
5103         * tree-dfa.c (dump_variable): Dump memory reference
5104         statistics.
5105         Dump NO_ALIAS* settings.
5106         (referenced_var_lookup): Tidy.
5107         (mem_sym_stats): New.
5108         * tree-ssa-copy.c (may_propagate_copy): Return true if DEST
5109         and ORIG are different SSA names for a memory partition.
5110         * tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
5111         * tree-flow.h (struct mem_sym_stats_d): Define.
5112         (mem_sym_stats_t): Define.
5113         (struct mem_ref_stats_d): Define.
5114         (struct gimple_df): Add field mem_ref_stats.
5115         (enum noalias_state): Define.
5116         (struct var_ann_d): Add bitfield noalias_state.
5117         (mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
5118         debug_mem_ref_stats, debug_memory_partitions,
5119         debug_mem_sym_stats): Declare.
5120         * tree-ssa-structalias.c (update_alias_info): Update call
5121         sites, pure/const call sites and asm sites in structure
5122         returned by gimple_mem_ref_stats.
5123         Remove local variable IS_POTENTIAL_DEREF.
5124         Increase NUM_DEREFS if the memory expression is a potential
5125         dereference.
5126         Call update_mem_sym_stats_from_stmt.
5127         If the memory references memory, call
5128         update_mem_sym_stats_from_stmt for all the direct memory
5129         symbol references found.
5130         (intra_create_variable_infos): Set noalias_state field for
5131         pointer arguments according to the value of
5132         flag_argument_noalias.
5133         * tree-ssa-structalias.h (struct alias_info): Remove fields
5134         num_calls_found and num_pure_const_calls_found.
5135         (update_mem_sym_stats_from_stmt): Declare.
5136         * params.def (PARAM_MAX_ALIASED_VOPS): Change description.
5137         Set default value to 100.
5138         (PARAM_AVG_ALIASED_VOPS): Define.
5139
5140 2007-04-11  Richard Guenther  <rguenther@suse.de>
5141
5142         PR middle-end/31530
5143         * simplify-rtx.c (simplify_binary_operation_1): Do not simplify
5144         a * -b + c as c - a * b if we honor sign dependent rounding.
5145
5146 2007-04-11  Bernd Schmidt  <bernd.schmidt@analog.com>
5147
5148         * config/bfin/bfin-protos.h (bfin_expand_movmem): Renamed from
5149         bfin_expand_strmov.
5150         * config/bfin/bfin.c (bfin_expand_prologue, bfin_delegitimize_address,
5151         bfin_function_ok_for_sibcall, split_load_immediate): Remove unused
5152         variables.
5153         (initialize_trampoline): Don't use old-style function definition.
5154         (bfin_secondary_reload): Mark IN_P argument as unused.
5155
5156 2007-04-10  Sebastian Pop  <sebastian.pop@inria.fr>
5157
5158         PR tree-optimization/31343
5159         * tree-chrec.h (chrec_zerop): Moved before build_polynomial_chrec.
5160         (build_polynomial_chrec): Return a scalar when the evolution is zero.
5161         * testsuite/gcc.dg/vect/pr31343.c: New.
5162
5163 2007-04-10  Eric Christopher  <echristo@apple.com>
5164
5165         * config/i386/i386.h (X87_FLOAT_MODE_P): New.
5166         * config/i386/i386.md (*cmpfp0): Use.
5167         (*cmpfp_u, *cmpfp_<mode>, *cmpfp_i_i387): Ditto.
5168         (*cmpfp_iu_387, fix_trunc<mode>_fisttp_i386_1): Ditto.
5169         (fix_trunc<mode>_i386_fisttp): Ditto.
5170         (fix_trunc<mode>_i387_fisttp_with_temp): Ditto.
5171         (*fix_trunc<mode>_i387_1, fix_truncdi_i387): Ditto.
5172         (fix_truncdi_i387_with_temp, fix_trunc<mode>_i387): Ditto.
5173         (fix_trunc<mode>_i387_with_temp, *fp_jcc_1_387): Ditto.
5174         (*fp_jcc_2_387, *fp_jcc_5_387, *fp_jcc_6_387): Ditto.
5175         (*fp_jcc_7_387, *fp_jcc_8<mode>_387): Ditto.
5176         (unnamed_splitters): Ditto.
5177         * config/i386/i386.c (output_fix_trunc): Assert that
5178         we're not being passed a TFmode operand.
5179
5180 2007-04-10  Zdenek Dvorak  <dvorakz@suse.cz>
5181
5182         PR tree-optimization/31526
5183         * tree-inline.c (copy_cfg_body): Use last_basic_block instead of
5184         n_basic_blocks to find newly added blocks.
5185
5186 2007-04-10  Uros Bizjak  <ubizjak@gmail.com>
5187
5188         * config/i386/i386.md (fix_trunc<mode>di_sse): Remove "x" from "xm"
5189         alternative.
5190         (fix_trunc<mode>si_sse): Ditto.
5191         (*floatsisf2_mixed, *floatsisf2_sse): Ditto.
5192         (*floatsidf2_mixed, *floatsidf2_sse): Ditto.
5193         (*floatdisf2_mixed, *floatdisf2_sse): Ditto.
5194         (*floatdidf2_mixed, *floatdidf2_sse): Ditto.
5195         (floathi<mode>2): Rename from floathisf2 and floathidf2. Macroize
5196         expander using SSEMODEF mode macro.
5197         (floatsi<mode>2): Rename from floatsisf2 and floashidf2. Macroize
5198         expander using SSEMODEF mode macro.
5199         (*floathi<mode>2_i387): Rename from *floathisf2_i387 and
5200         *floathidf2_i387. Macroize insn using X87MODEF12 mode macro.
5201         (*floatsi<mode>2_i387): Rename from *floatsisf2_i387 and
5202         *floatsidf2_i387. Macroize insn using X87MODEF12 mode macro.
5203         (*floatdi<mode>2_i387): Rename from *floatdisf2_i387 and
5204         *floatdidf2_i387. Macroize insn using X87MODEF12 mode macro.
5205         (float<mode>xf2): Rename from floathixf2, floatsixf2 and floatdixf2.
5206         Macroize insn using X87MODEF mode macro.
5207
5208 2007-04-09  H.J. Lu  <hongjiu.lu@intel.com>
5209
5210         * config/i386/sse.md (sse2_pinsrw): Removed.
5211         (sse2_pextrw): Renamed to ...
5212         (*sse2_pextrw): This.
5213
5214 2007-04-09  Jan Hubicka  <jh@suse.cz>
5215
5216         PR target/27869
5217         * config/i386/sse.md
5218         (sse_vmaddv4sf3, sse_vmmulv4sf3): Remove '%' modifier.
5219         (sse_vmsmaxv4sf3_finite, sse_vmsminv4sf3_finite): Remove.
5220         (sse2_vmaddv2df3, sse2_vmmulv2df3): Remove '%' modifier.
5221         (sse2_vmsmaxv2df3_finite, sse2_vmsminv2df3_finite): Remove.
5222
5223 2007-04-09  Jan Hubicka  <jh@suse.cz>
5224
5225         * tree-ssa-ccp (maybe_fold_offset_to_component_ref): Recurse into
5226         multiple fields of union.
5227
5228 2007-04-09  Zdenek Dvorak  <dvorakz@suse.cz>
5229
5230         * cfgloopmanip.c (create_preheader): Do not use loop_preheader_edge.
5231         (create_preheaders): Check that loops are available.
5232         (fix_loop_structure): Clean up, improve comments.
5233         * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa):
5234         Check that loops are available.  Set LOOP_CLOSED_SSA to the loops
5235         state flags.
5236         * tree-scalar-evolution.c (scev_finalize): Clear scalar_evolution_info.
5237         * predict.c (tree_estimate_probability): Do not call
5238         calculate_dominance_info.  Call create_preheaders.
5239         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Only call
5240         rewrite_into_loop_closed_ssa if LOOP_CLOSED_SSA is set in loops state
5241         flags.
5242         * cfgloop.c (loop_preheader_edge): Assert that loops have preheaders.
5243         * cfgloop.h (LOOP_CLOSED_SSA): New constant.
5244         * tree-cfg.c (tree_split_edge): Make an assert more precise.
5245         * tree-ssa-threadedge.c (thread_across_edge): Comment the function
5246         arguments.
5247
5248 2007-04-08  Jan Hubicka  <jh@suse.cz>
5249
5250         * tree.h (maybe_fold_offset_to_component_ref): Declare.
5251         * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Export.
5252         * fold-const.c (fold_unary): Use it.
5253
5254 2007-04-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5255
5256         * varasm.c (assemble_variable): Remove call to
5257         lang_hooks.decls.prepare_assemble_variable.
5258         * langhooks-def.h (LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE): Kill.
5259         (LANG_HOOKS_DECLS): Remove LANG_HOOKS_PREPARE_ASSEMBLE_VARIABLE.
5260         * langhooks.h (lang_hooks_for_decls): Remove
5261         prepare_assemble_variable.
5262
5263 2007-04-08  Mike Stump  <mrs@apple.com>
5264
5265         * config/i386/i386.c: Use inc/dec on Core2.
5266
5267 2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>
5268
5269         * langhooks.c (lhd_tree_inlining_add_pending_fn_decls,
5270         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
5271         lhd_tree_inlining_end_inlining): Remove.
5272         * langhooks.h (struct lang_hooks_for_tree_inlining): Remove then
5273         add_pending_fn_decls, anon_aggr_type_p, start_inlining, and
5274         end_inlining hooks.
5275         * langhooks-def.h (lhd_tree_inlining_add_pending_fn_decls,
5276         lhd_tree_inlining_anon_aggr_type_p, lhd_tree_inlining_start_inlining,
5277         lhd_tree_inlining_end_inlining): Remove prototypes.
5278         (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
5279         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
5280         LANG_HOOKS_TREE_INLINING_START_INLINING,
5281         LANG_HOOKS_TREE_INLINING_END_INLINING): Remove.
5282
5283         * c-objc-common.h (LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do
5284         not set it.
5285
5286 2007-04-08  Anatoly Sokolov <aesok@post.ru>
5287
5288         PR target/29932
5289         * config/avr/predicates.md (io_address_operand): Delete predicate.
5290         (low_io_address_operand): Don't use 'mode' argument.
5291         (higth_io_address_operand): Rename ...
5292         (high_io_address_operand): ... to this. Don't use 'mode' argument.
5293         * config/avr/avr.md (*sbix_branch_tmp, *sbix_branch_tmp_bit7): Adjust
5294         for above change.
5295
5296 2007-04-07  Daniel Berlin  <dberlin@dberlin.org>
5297
5298         Revert change removing staticp.
5299
5300 2007-04-07  Anatoly Sokolov <aesok@post.ru>
5301
5302         PR target/30289
5303         * config/avr/avr.md (*clrmemqi, *clrmemhi): Mark operand 4 as
5304         earlyclobber.
5305
5306 2007-04-07  Bruce Korb  <bkorb@gnu.org>
5307
5308         * c.opt: Add -Wformat-contains-nul.
5309         * c-format.c (set_Wformat):  Set warn_format_contains_nul to the
5310           -Wformat setting.
5311         (check_format_info_main): Check OPT_Wformat_contains_nul before emitting
5312         the NUL byte warning.
5313
5314 2007-04-07  H.J. Lu  <hongjiu.lu@intel.com>
5315
5316         * config/i386/i386.c (ix86_handle_option): Handle SSSE3.
5317
5318 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
5319
5320         * tree.c (staticp): No longer use staticp langhook.
5321         * langhooks.c (lhd_staticp): Removed.
5322         * langhooks.h (struct lang_hooks): Remove staticp.
5323         * c-common.c (c_staticp): Remove.
5324         * c-common.h (c_staticp): Ditto.
5325         * langhooks-defs.h (lhd_staticp): Ditto.
5326         (LHD_HOOKS_STATICP): Ditto
5327         * tree.h (gcc_assert_lowered): New macro.
5328
5329 2007-04-06  Zdenek Dvorak  <dvorakz@suse.cz>
5330
5331         * tree-ssa-loop-niter.c (idx_infer_loop_bounds): Add and use
5332         argument "reliable".
5333         (infer_loop_bounds_from_ref, infer_loop_bounds_from_array):
5334         Add argument "reliable".  Propagate it through calls.
5335         (infer_loop_bounds_from_undefined):  Derive number of iterations
5336         estimates from references in blocks that do not dominate loop latch.
5337         (gcov_type_to_double_int): New function.
5338         (estimate_numbers_of_iterations_loop): Use gcov_type_to_double_int
5339         and expected_loop_iterations_unbounded.
5340         * cfgloopanal.c (expected_loop_iterations_unbounded): New function.
5341         (expected_loop_iterations): Use expected_loop_iterations_unbounded.
5342         * tree-data-ref.c (estimated_loop_iterations): Export.
5343         (get_references_in_stmt): Fix -- do not return addresses of local
5344         objects.
5345         * cfgloop.h (expected_loop_iterations_unbounded,
5346         estimated_loop_iterations): Declare.
5347
5348 2007-04-06  Andreas Tobler  <a.tobler@schweiz.org>
5349
5350         * tree-sra.c (sra_build_elt_assignment): Initialize min/maxshift.
5351
5352 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
5353
5354         * config/i386/i386.md (extend<mode>xf2): Rename from extendsfxf2
5355         and extenddfxf2. Macroize expander using X87MODEF12 mode macro.
5356         (*truncdfsf_mixed, *truncdfsf_i387, *truncdfsf2_i387_1):
5357         Use output_387_reg_move().
5358         (*truncxf<mode>2): Rename from *truncxfsf2 and truncxfdf2. Macroize
5359         expander using X87MODEF12 mode macro.
5360         (*truncxfsf2_mixed): Combine alternatives, ignore "r" alternative when
5361         choosing register preferences.  Use output_387_reg_move().
5362         (*truncxfdf2_mixed): Combine alternatives, use "r" alternative
5363         instead of "x".  Use output_387_reg_move().
5364         (*truncxf<mode>2_i387_noop): Rename from *truncxfsf2_i387_noop and
5365         *truncxfdf2_i387_noop.  Macroize insn using X87MODEF12 mode macro.
5366         (*truncxf<mode>2_i387): Rename from *truncxfsf2_i387 and
5367         *truncxfdf2_i387.  Macroize insn using X87MODEF12 mode macro.
5368         Use output_387_reg_move().
5369         (*truncxf?f_mixed splitter): Macroize splitter using X87MODEF12
5370         mode macro.
5371         (*truncxf?f_i387 splitter): Ditto.
5372
5373 2007-04-06  Daniel Berlin  <dberlin@dberlin.org>
5374
5375         * langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
5376         LANG_HOOKS_SAFE_FROM_P.
5377         * expr.c (safe_from_p): Remove langhook call.
5378         * langhooks.h (lang_hooks): Remove safe_from_p.
5379         (lhd_safe_from_p): Remove prototype.
5380         * langhooks.c (lhd_safe_from_p): Remove.
5381
5382 2007-04-06  Jan Hubicka  <jh@suse.cz>
5383
5384         * cgraphunit.c (decide_is_function_needed): Do not keep always_inline
5385         functions.
5386
5387 2007-04-06  Uros Bizjak  <ubizjak@gmail.com>
5388
5389         * config/i386/i386.c (output_387_reg_move): Handle memory operand[0].
5390         * config/i386/i386.md (*movsf_1, *movdf_nointeger,
5391         *movdf_integer_rex64, *movdf_integer, *movxf_nointeger,
5392         *movxf_integer): Use output_387_reg_move() for x87 reg->mem
5393         alternative.
5394         (*extendsfdf2_mixed, *extendsfdf2_i387, *extendsfxf2_i387,
5395         *extenddfxf2_i387, *truncdfsf_fast_mixed): Ditto.
5396
5397 2007-04-05  Richard Henderson  <rth@redhat.com>
5398
5399         * config/alpha/alpha.c (print_operand) [+]: Remove.
5400         (alpha_end_function): Print nop if call at end of function.
5401         * config/alpha/alpha.h (PRINT_OPERAND_PUNCT_VALID_P): Remove +.
5402         * config/alpha/alpha.md (UNSPEC_LDGP1): New.
5403         (call_osf_1_er_noreturn, call_value_osf_1_er_noreturn): New.
5404         (call_osf_2_er_nogp, call_value_osf_2_er_nogp): New.
5405         (call_osf_2_er, call_value_osf_2_er): Merge the ldgp highpart into
5406         the call pattern. Update peepholes to match.
5407
5408 2007-04-05  Janis Johnson  <janis187@us.ibm.com>
5409
5410         * doc/extend.texi (Other Builtins): Add decimal float variants
5411         of signbit.
5412         * builtins.def: Ditto.
5413         * builtins.c (expand_builtin): Ditto.
5414
5415 2007-04-05  Uros Bizjak  <ubizjak@gmail.com>
5416             H.J. Lu  <hongjiu.lu@intel.com>
5417
5418         PR target/31478
5419         * config/i386/sse.md (sse2_umulv2siv2di3): Use V4SImode instead
5420         of V8HImode when calling ix86_binary_operator_ok.
5421         (sse2_pmaddwd): Call ix86_binary_operator_ok.
5422         (sdot_prodv8hi): Operands 1 and 2 must be register.
5423
5424 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5425
5426         * tree-sra.c (try_instantiate_multiple_fields): Needlessly
5427         initialize align to silence bogus warning.
5428
5429 2007-04-05  Alexandre Oliva  <aoliva@redhat.com>
5430
5431         PR middle-end/22156
5432         * tree-sra.c (struct sra_elt): Add in_bitfld_block.  Remove
5433         all_no_warning.
5434         (struct sra_walk_fns): Remove use_all parameter from use.
5435         (sra_hash_tree): Handle BIT_FIELD_REFs.
5436         (sra_elt_hash): Don't hash bitfld blocks.
5437         (sra_elt_eq): Skip them in parent compares as well.  Handle
5438         BIT_FIELD_REFs.
5439         (sra_walk_expr): Don't maintain or pass down use_all_p.
5440         (scan_use): Remove use_all parameter.
5441         (scalarize_use): Likewise.  Re-expand assignment to
5442         BIT_FIELD_REF of gimple_reg.  De-scalarize before input or
5443         output, and re-scalarize after output.  Don't mark anything
5444         for no warning.
5445         (scalarize_ldst): Adjust.
5446         (scalarize_walk_gimple_modify_statement): Likewise.
5447         (build_element_name_1): Handle BIT_FIELD_REFs.
5448         (instantiate_element): Don't warn for any element whose parent
5449         is used as a whole.
5450         (instantiate_missing_elements_1): Return the sra_elt.
5451         (canon_type_for_field): New.
5452         (try_instantiate_multiple_fields): New.
5453         (instantiate_missing_elemnts): Use them.
5454         (mark_no_warning): Removed.
5455         (generate_one_element_ref): Handle BIT_FIELD_REFs.
5456         (REPLDUP, sra_build_elt_assignment): New.
5457         (generate_copy_inout): Use them.
5458         (generate_element_copy): Likewise.  Handle bitfld differences.
5459         (generate_element_zero): Don't recurse for blocks.  Use
5460         sra_build_elt_assignment.
5461         (generate_one_element_int): Take elt instead of var.  Use
5462         sra_build_elt_assignment.
5463         (generate_element_init_1): Adjust.
5464         (scalarize_use, scalarize_copy): Use REPLDUP.
5465         (scalarize_ldst): Move assert before dereference.
5466         (dump_sra_elt_name): Handle BIT_FIELD_REFs.
5467
5468 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
5469
5470         * regmove.c: Fix unused variable warnings due to previous commit.
5471
5472 2007-04-05  Steven Bosscher  <steven@gcc.gnu.org>
5473
5474         * regmove.c (STACK_GROWS_DOWNWARD): Don't boolean-ize.
5475         (regmove_bb_head): Remove.
5476         (copy_src_to_dest): Don't update regmove_bb_head and BB_HEAD.
5477         (regmove_optimize): Don't do unnecessary CFG fixes for non-existing
5478         problems with fixup_match_1.
5479         Don't initialize/free regmove_bb_head.
5480
5481         (reg_is_remote_constant_p): If an insn is in the same basic block
5482         but not before INSN, consider it remote, too.
5483
5484 2007-04-05  Anatoly Sokolov <aesok@post.ru>
5485
5486         PR target/25448
5487         * config/avr/avr.c (avr_handle_fndecl_attribute): Use the
5488         DECL_ASSEMBLER_NAME, not the DECL_NAME.
5489
5490 2007-04-05  H.J. Lu  <hongjiu.lu@intel.com>
5491
5492         * config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): Reformat.
5493         (CONDITIONAL_REGISTER_USAGE): Likewise.
5494
5495 2007-04-04  Richard Henderson  <rth@redhat.com>
5496
5497         * config/alpha/lib1funcs.asm: Remove unused file.
5498
5499 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5500
5501         PR other/31356
5502         * opts.c (print_specific_help): Fix --help=<language>
5503         header line.
5504         (common_handle_option): Support --help=common.
5505
5506 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5507
5508         PR other/31353
5509         * gcc.c (main): Do not run the linker if
5510         print_subprocess_help indicates that it shouldn't be
5511         run.
5512
5513 2007-04-04  Brooks Moses  <brooks.moses@codesourcery.com>
5514
5515         PR doc/31355
5516         * doc/invoke.texi (--help=): Document <languages> value, fix
5517         formatting in tables of values.
5518
5519 2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>
5520
5521         * config/i386/winnt-cxx.c (i386_pe_type_dllimport_p): Don't ignore
5522         dllimport attribute of virtual methods.
5523
5524 2007-04-04  Chen Liqin  <liqin@sunnorth.com.cn>
5525
5526         * config/score/crti.asm: Change _bss_start to __bss_start.
5527         * config/score/score.h (CONDITIONAL_REGISTER_USAGE): Added.
5528         (OUTGOING_REG_PARM_STACK_SPACE) update.
5529         * config/score/score.opt: add options to make backend support
5530         score5, score5u, score7 and score7d.
5531         * config/score/score.md: Likewise.
5532         * config/score/misc.md: Likewise.
5533         * config/score/mac.md: Likewise.
5534         * doc/invoke.texi: Likewise.
5535         * doc/md.texi: update constraints define.
5536
5537 2007-04-03  Richard Henderson  <rth@redhat.com>
5538
5539         * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
5540         an appropriate type, use the mode instead.
5541
5542 2007-04-03  Richard Sandiford  <richard@codesourcery.com>
5543
5544         * config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
5545         Set the default --with-arch setting to mips2.
5546         * config/mips/t-vxworks (MULTILIB_OPTIONS, MULTILIB_MATCHES)
5547         (MULTILIB_EXCEPTIONS): Redefine with new multilibs.
5548         (MULTILIB_OSDIRNAMES): Delete.
5549         (MULTILIB_DIRNAMES): Define.
5550         * config/mips/vxworks.h (LINK_SPEC): Add VXWORKS_LINK_SPEC.
5551         (LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Define.
5552         (TARGET_OS_CPP_BUILTINS): Incorporate old SUBTARGET_CPP_SPEC
5553         definitions, except for _WRS_R3K_EXC_SUPPORT.  Call
5554         VXWORKS_OS_CPP_BUILTINS.
5555         (SUBTARGET_CPP_SPEC): Redefine to VXWORKS_ADDITIONAL_CPP_SPEC.
5556         (MIPS_DEBUGGING_INFO): Undefine.
5557         (FUNCTION_PROFILER): Define to VXWORKS_FUNCTION_PROFILER.
5558
5559 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
5560
5561         PR middle-end/30704
5562         * fold-const.c (native_encode_real): Encode real.c provided longs
5563         as a series of 32-bit native integers.
5564         (native_interpret_real): Interpret buffer as a series of 32-bit
5565         native integers.
5566
5567 2007-04-03  Richard Guenther  <rguenther@suse.de>
5568
5569         * genpreds.c (write_insn_constraint_len): Write function
5570         optimized for CONSTRAINT_LEN implementation.
5571         (write_tm_preds_h): Output insn_constraint_len inline and
5572         use it for CONSTRAINT_LEN.
5573         (write_insn_preds_c): Don't output insn_constraint_len.
5574         * doc/md.texi (define_register_constraint): Document multi-letter
5575         constraints shall have the same length if they start with the same
5576         letter.
5577
5578 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
5579
5580         PR target/31175
5581         * config/i386/i386.md (isinf<mode>2): Expand only when
5582         TARGET_C99_FUNCTIONS is set.
5583
5584 2007-04-03  Uros Bizjak  <ubizjak@gmail.com>
5585
5586         * config.gcc (i[34567]86-*-linux*): Add i386/t-crtpc to tm-file.
5587         (x86_64-*-linux*): Ditto.
5588         * config/i386/i386.opt (mpc): New option.
5589         * config/i386/i386.c (overrride_options): Handle
5590         ix87_precision_string.
5591         * config/i386/crtprec.c: New file.
5592         * config/i386/t-crtpc: Ditto.
5593         * config/i386/linux.h (ENDFILE_SPEC): Add handling of -mpc32, -mpc64
5594         and -mpc80 options.
5595         * config/i386/linux64.h (ENDFILE_SPEC): Ditto.
5596         * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Add
5597         crtprec32.o, crtprec64.o and crtprec80.o.
5598
5599         * doc/invoke.texi (Machine Dependent Options): Add -mpc32, -mpc64
5600         and -mpc80 options.
5601         (i386 and x86-64 Options): Document -mpc32, -mpc64 and -mpc80 options.
5602
5603 2007-04-02  Eric Christopher  <echristo@apple.com>
5604
5605         * doc/invoke.texi (i386 and x86-64 Options): Document -m64
5606         limitations on darwin.
5607
5608 2007-04-02  Anatoly Sokolov <aesok@post.ru>
5609
5610         PR target/31137
5611         * config/avr/avr.c (avr_rtx_costs): Add missing 'break' statements.
5612
5613 2007-04-02  Dave Korn  <dave.korn@artimi.com>
5614
5615         * doc/tm.texi (FUNCTION_MODE): Update and extend documentation.
5616
5617 2007-04-02  Dave Korn  <dave.korn@artimi.com>
5618
5619         * libgcc2.h (exception_descriptor): Don't forward-declare.
5620         (__get_eh_table_language, __get_eh_table_version): Delete
5621         prototypes of long-dead functions.
5622
5623 2007-04-01  Daniel Berlin  <dberlin@dberlin.org>
5624
5625         * ebitmap.h: New file
5626         * ebitmap.c: New file
5627         * Makefile.in (ebitmap.o): New target.
5628
5629 2007-04-01  Jan Hubicka  <jh@suse.cz>
5630
5631         * emit-rtl.c (emit_insn_before_setloc): Do not ICE when asked to emit
5632         before very first instruction.
5633
5634 2007-04-01  Jan Hubicka  <jh@suse.cz>
5635
5636         * ggc-page.c (ggc_print_statistics): Fix formatting string to avoid
5637         waring on 64bit hosts.
5638         * bitmap.h: Fix typo in bitmap_head_def.
5639
5640 2007-04-01  Steven Bosscher  <steven@gcc.gnu.org>
5641
5642         PR rtl-optimization/31391
5643         * cfgcleanup.c (try_optimize_cfg): If a removed label is turned
5644         into a DELETED_LABEL note, and the label is in an empty basic
5645         block, update BB_END as well as BB_HEAD.
5646
5647 2007-04-01  Richard Henderson  <rth@redhat.com>
5648
5649         PR tree-optimization/31169
5650         * tree-vrp.c (extract_range_from_binary_expr) <RSHIFT_EXPR>: Drop
5651         to varying if the range is outside [0,  prec-1].
5652
5653 2007-04-01  Richard Sandiford  <richard@codesourcery.com>
5654
5655         PR target/31388
5656         * config/mips/mips.md (load_const_gp): New insn.
5657         * config/mips/mips.c (mips_split_symbol): Avoid using or creating
5658         the MIPS16 GP pseudo register if no_new_pseudos.
5659         (mips16_gp_pseudo_reg): Use gen_load_const_gp.
5660
5661 2007-03-31  Andrew Pinski  <andrew_pinski@playstation.sony.com>
5662
5663         PR target/31364
5664         * config/rs6000/rs6000.md (call): Convert to LR hard reg for
5665         secureplt.
5666         (call_value): Likewise.
5667
5668 2007-03-31  Wolfgang Bangerth  <bangerth@dealii.org>
5669             Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5670
5671         PR 14737
5672         * doc/invoke.texi: (optimization options): Reword description
5673         of -ffast-math. Document its primary purpose.
5674
5675 2007-03-31  Richard Guenther  <rguenther@suse.de>
5676
5677         * omp-low.c (splay-tree.h): Include.
5678         (lookup_decl): Replace splay-tree usage by pointer-map.
5679         (maybe_lookup_decl): Likewise.
5680         (new_omp_context): Likewise.
5681         (delete_omp_context): Likewise.
5682         * gimplify.c (splay-tree.h): Include.
5683         * tree-inline.c (insert_decl_map): Replace splay-tree usage by
5684         pointer-map.
5685         (remap_ssa_name): Likewise.
5686         (remap_decl): Likewise.
5687         (remap_type_1): Likewise.
5688         (remap_type): Likewise.
5689         (copy_body_r): Likewise.
5690         (expand_call_inline): Likewise.
5691         (clone_body): Likewise.
5692         (copy_tree_r): Likewise.
5693         (remap_save_expr): Likewise.
5694         (unsave_r): Likewise.
5695         (unsave_expr_now): Likewise.
5696         (tree_function_versioning): Likewise.
5697         (build_duplicate_type): Likewise.
5698         * tree-inline.h (pointer-set.h): Include instead of splay-tree.h.
5699         (struct copy_body_data): Replace splay-tree by pointer-map.
5700         * Makefile.in (TREE_INLINE_H): Depend on pointer-map.h,
5701         not $(SPLAY_TREE_H).
5702         (gimplify.o): Depend on $(SPLAY_TREE_H).
5703         (omp-low.p): Likewise.
5704
5705 2007-03-31  Anatoly Sokolov <aesok@post.ru>
5706
5707         * config/avr/predicates.md (even_register_operand,
5708         odd_register_operand): New predicates.
5709         * config/avr/avr.md (movw peephole2): New.
5710         (movw_r peephole2): New.
5711
5712 2007-03-30  Rafael Avila de Espindola  <espindola@google.com>
5713
5714         * tree.h (get_signed_or_unsigned_type): New.
5715         * fold-const.c (operand_equal_for_comparison_p): Use
5716         get_signed_or_unsigned_type instead of
5717         lang_hooks.types.signed_or_unsigned_type.
5718         * expr.c (store_expr): Ditto.
5719         * langhooks.c (get_signed_or_unsigned_type): New.
5720         (lhd_signed_or_unsigned_type): New.
5721         * langhooks.h (lhd_signed_or_unsigned_type): New.
5722         * langhooks-def.h (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Define.
5723
5724 2007-03-30  Richard Henderson  <rth@redhat.com>
5725
5726         * tree-ssa-loop-ivopts.c: Include target.h.
5727         (produce_memory_decl_rtl): Pass the rtx through encode_section_info.
5728         (get_address_cost): Force SYMBOL_FLAG_LOCAL set.
5729         (force_expr_to_var_cost): Use produce_memory_decl_rtl.
5730         * Makefile.in (tree-ssa-loop-ivopts.o): Depend on TARGET_H.
5731
5732 2007-03-30  Richard Henderson  <rth@redhat.com>
5733             Kai Tietz  <kai.tietz@onevision.com>
5734
5735         * config/i386/cygming.h (DWARF2_DEBUGGING_INFO): Enable by
5736         default for 64-bit.
5737         (PREFERRED_DEBUGGING_TYPE): Prefer dwarf2 for 64-bit.
5738         (TARGET_64BIT_MS_ABI): New.
5739         (DBX_REGISTER_NUMBER): Handle 64-bit.
5740         (SIZE_TYPE, PTRDIFF_TYPE): Use long long for 64-bit.
5741         (LONG_TYPE_SIZE): Force to 32.
5742         (REG_PARM_STACK_SPACE): New.
5743         (OUTGOING_REG_PARM_STACK_SPACE): New.
5744         (REGPARM_MAX, SSE_REGPARM_MAX): New.
5745         (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
5746         (STACK_BOUNDARY): Use 128 for 64-bit.
5747         * config/i386/cygwin.asm: Use push/ret to preserve call stack.
5748         Add 64-bit implementation.
5749         * config/i386/gthr-win32.c (__gthr_win32_key_create): Mark dtor
5750         argument unused.
5751         * config/i386/i386.c (x86_64_ms_abi_int_parameter_registers): New.
5752         (override_options): Set ix86_cmodel for TARGET_64BIT_MS_ABI.
5753         Warn for -mregparm, -mrtd in 64-bit mode; force ix86_regparm
5754         for 64-bit; use TARGET_SUBTARGET64_DEFAULT.
5755         (ix86_handle_cconv_attribute): Don't warn when ignoring if
5756         TARGET_64BIT_MS_ABI.
5757         (ix86_function_arg_regno_p): Handle TARGET_64BIT_MS_ABI.
5758         (ix86_pass_by_reference): Likewise.
5759         (ix86_function_value_regno_p): Likewise.
5760         (ix86_build_builtin_va_list): Likewise.
5761         (ix86_va_start, ix86_gimplify_va_arg): Likewise.
5762         (function_arg_advance_ms_64): New.
5763         (function_arg_advance): Call it.
5764         (function_arg_ms_64): New.
5765         (function_arg): Call it.
5766         (function_value_ms_64): New.
5767         (ix86_function_value_1): Call it.
5768         (return_in_memory_ms_64): New.
5769         (ix86_return_in_memory): Call it.
5770         (setup_incoming_varargs_ms_64): New.
5771         (ix86_setup_incoming_varargs): Call it.
5772         (ix86_expand_prologue): Handle 64-bit stack probing.
5773         (legitimize_pic_address): Handle TARGET_64BIT_MS_ABI.
5774         (output_pic_addr_const): Likewise.
5775         (x86_this_parameter): Likewise.
5776         (x86_output_mi_thunk): Likewise.
5777         (x86_function_profiler): Likewise.
5778         (TARGET_STRICT_ARGUMENT_NAMING): New.
5779         * config/i386/i386.h (TARGET_SUBTARGET64_DEFAULT): New.
5780         (TARGET_64BIT_MS_ABI): New.
5781         (CONDITIONAL_REGISTER_USAGE): Handle TARGET_64BIT_MS_ABI.
5782         * config/i386/i386.md (allocate_stack_worker): Remove.
5783         (allocate_stack_worker_32): Rename from allocate_stack_worker_1;
5784         describe the clobber of eax without a match_scratch.
5785         (allocate_stack_worker_postreload): Remove.
5786         (allocate_stack_worker_64): Rename from allocate_stack_worker_rex64;
5787         describe the clobbers of rax, r10, r11 properly; use __chkstk symbol.
5788         (allocate_stack_worker_rex64_postreload): Remove.
5789         (allocate_stack): Handle 64-bit.
5790         * config/i386/i386elf (TARGET_SUBTARGET_DEFAULT): Remove.
5791         * config/i386/mingw32.h (TARGET_VERSION): Set correctly for 64-bit.
5792         (EXTRA_OS_CPP_BUILTINS): Handle 64-bit.
5793         (STANDARD_INCLUDE_DIR): Handle TARGET_64BIT_DEFAULT.
5794         (STANDARD_STARTFILE_PREFIX_1): Likewise.
5795         * config/i386/unix.h (TARGET_SUBTARGET64_DEFAULT): New.
5796         * config.build (x86_64-*-mingw*): New host.
5797         * config.host (x86_64-*-mingw*): New host.
5798         * config.gcc (x86_64-*-mingw*): New target.
5799         * gthr-win32.h (__gthread_key_create): Mark dtor unused.
5800
5801 2007-03-30  Richard Henderson  <rth@redhat.com>
5802             Kai Tietz  <kai.tietz@onevision.com>
5803
5804         * c-pragma.c (struct def_pragma_macro_value): New.
5805         (struct def_pragma_macro): New.
5806         (pushed_macro_table): New.
5807         (dpm_hash, dpm_eq): New.
5808         (handle_pragma_push_macro, handle_pragma_pop_macro): New.
5809         (init_pragma): Install them.
5810         * doc/tm.texi (HANDLE_PRAGMA_PUSH_POP_MACRO): New.
5811
5812 2007-03-30  Anatoly Sokolov <aesok@post.ru>
5813
5814         * config/avr/avr.c (avr_override_options): Clear
5815         'flag_delete_null_pointer_checks'.
5816
5817 2007-03-30  Paolo Carlini  <pcarlini@suse.de>
5818
5819         PR c++/26099
5820         * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN,
5821         RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY,
5822         RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR,
5823         RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR,
5824         RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF,
5825         RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM,
5826         RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as
5827         C++ extensions.
5828         * doc/extend.texi (Extensions to the C++ Language): Add Type Traits.
5829
5830 2007-03-30  Steven Bosscher  <steven@gcc.gnu.org>
5831
5832         * regmove.c: Move all of pass_stack_adjustments from here...
5833         * combine-stack-adj.c: ...to this new file.
5834         * Makefile.in: Add rules for combine-stack-adj.o.
5835
5836 2007-03-30  Zdenek Dvorak  <dvorakz@suse.cz>
5837
5838         PR tree-optimization/31383
5839         * tree-data-ref.c (affine_function_equal_p): Do not require the vectors
5840         to have the same length.
5841
5842 2007-03-30  Jan Hubicka  <jh@suse.cz>
5843
5844         PR middle-end/30700
5845         * dwarf2out.c (reference_to_unused): Ask cgraph for functions
5846         availablility; add more sanity checking; ask varpool only about
5847         VAR_DECL.
5848
5849 2007-03-29  Richard Henderson  <rth@redhat.com>
5850
5851         * unwind-generic.h (_sleb128_t, _uleb128_t): Don't use HAVE_LONG_LONG
5852         to decide, but __SIZEOF_LONG_LONG__.
5853
5854 2007-03-29  Richard Henderson  <rth@redhat.com>
5855
5856         * emutls.c (struct __emutls_array): New.
5857         (emutls_destroy): Use it instead of casting element 0 from void*.
5858         (__emutls_get_address): Likewise.
5859
5860 2007-03-29  Richard Henderson  <rth@redhat.com>
5861
5862         * varasm.c (initializer_constant_valid_p): Don't deny
5863         DECL_DLLIMPORT_P on functions.
5864
5865         * config/i386/cygming.h: Remove function declarations.
5866         (SUBTARGET_ENCODE_SECTION_INFO): Don't undef first.
5867         (ASM_OUTPUT_LABELREF): Remove.
5868         (COMMON_ASM_OP): Remove.
5869         (ASM_OUTPUT_COMMON): Remove.
5870         (ASM_OUTPUT_ALIGNED_DECL_COMMON): New.
5871         (ASM_DECLARE_OBJECT_NAME): Use i386_pe_maybe_record_exported_symbol.
5872         (ASM_DECLARE_FUNCTION_NAME): Likewise.
5873         * config/i386/i386-interix.h (SUBTARGET_ENCODE_SECTION_INFO):
5874         Rename from TARGET_ENCODE_SECTION_INFO.
5875         * config/i386/netware.h: Likewise.
5876         * config/i386/i386-protos.h: Update.
5877         * config/i386/i386.c (ix86_function_ok_for_sibcall): Turn ifdef
5878         of TARGET_DLLIMPORT_DECL_ATTRIBUTES into straight if.
5879         (legitimate_constant_p): Reject dllimports.
5880         (dllimport_map, get_dllimport_decl): New.
5881         (legitimize_dllimport_symbol): New.
5882         (legitimize_address, ix86_expand_move): Use it.
5883         (TARGET_BINDS_LOCAL_P): Redefine for TARGET_DLLIMPORT_DECL_ATTRIBUTES.
5884         * config/i386/i386.h (DLL_IMPORT_EXPORT_PREFIX): Remove.
5885         (SYMBOL_FLAG_DLLIMPORT, SYMBOL_REF_DLLIMPORT_P): New.
5886         (SYMBOL_FLAG_DLLEXPORT, SYMBOL_REF_DLLEXPORT_P): New.
5887         * config/i386/predicates.md (constant_call_address_operand): Only
5888         accept symbols; reject dllimport_p symbols.
5889         * config/i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Use
5890         i386_pe_maybe_record_exported_symbol.
5891         * config/i386/winnt.c (DLL_IMPORT_PREFIX, DLL_EXPORT_PREFIX): Remove.
5892         (i386_pe_determine_dllexport_p): Rename from i386_pe_dllexport_p.
5893         (i386_pe_determine_dllimport_p): Rename from i386_pe_dllimport_p;
5894         trust the setting of DECL_DLLIMPORT_P.
5895         (i386_pe_dllexport_name_p, i386_pe_dllimport_name_p): Remove.
5896         (i386_pe_mark_dllexport, i386_pe_mark_dllimport): Remove.
5897         (gen_stdcall_or_fastcall_suffix): Return NULL if no change required;
5898         tidy the argument scanning loop.
5899         (i386_pe_encode_section_info): Set SYMBOL_FLAG_DLLIMPORT and
5900         SYMBOL_FLAG_DLLEXPORT in SYMBOL_REF_FLAGS.
5901         (i386_pe_strip_name_encoding): Remove.
5902         (i386_pe_binds_local_p): New.
5903         (i386_pe_strip_name_encoding_full): Use default_strip_name_encoding.
5904         (i386_pe_output_labelref): Remove.
5905         (i386_pe_asm_output_aligned_decl_common): New.
5906         (i386_pe_maybe_record_exported_symbol): Rename from
5907         i386_pe_record_exported_symbol; check for dllexported symbols.
5908
5909 2007-03-29  Zack Weinberg  <zack@mrtock.ucsd.edu>
5910
5911         * gengtype.c (oprintf): Mostly revert changes from 2007-03-26;
5912         add comment explaining why vsnprintf cannot be used.
5913
5914 2007-03-29  Douglas Gregor  <doug.gregor@gmail.com>
5915
5916         PR tree-optimization/30666
5917         * tree.c (build_complex_type): When creating type names for DWARF2
5918         debug info, create TYPE_DECLs for TYPE_NAME instead of
5919         IDENTIFIER_NODEs.
5920         (build_common_tree_nodes_2): Use build_complex_type when building
5921         predefined complex types, to preserve canonical types.
5922
5923 2007-03-29  Steven Bosscher  <steven@gcc.gnu.org>
5924
5925         * ifcvt.c (struct noce_if_info): Add then_else_reversed field.
5926         (noce_get_alt_condition): Look at it to determine whether to
5927         reverse the condition or not.
5928         (noce_get_condition): Substitute the truth for lies.
5929         (noce_find_if_block): Set the then_else_reversed field.
5930
5931 2007-03-29  Lars Poeschel <larsi@wh2.tu-dresden.de>
5932
5933         * config/fr30/fr30.md (movdi): Do not accept immediates as the
5934         destination of this insn.
5935         * config/fr30/fr30.c (fr30_move_double): Use emit_move_insn rather
5936         than calling gen_rtx_SET directly.  Use r0 to hold the value of
5937         'address + 4' rather than a stack based temporary which can be
5938         mis-optimized away.
5939
5940 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5941
5942         * config/s390/s390.c (s390_secondary_input_reload_class,
5943         s390_secondary_output_reload_class): Functions removed.
5944         (s390_secondary_reload): New function.
5945         (TARGET_SECONDARY_RELOAD): Target macro defined.
5946         * config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS,
5947         SECONDARY_OUTPUT_RELOAD_CLASS): Macro definitions removed.
5948         * config/s390/s390.md ("reload_outti", "reload_outdi",
5949         "reload_indi", "reload_insi", "reload_out<mode>", "reload_in<mode>",
5950         "reload_out<mode>"): Expanders removed.
5951         ("reload<mode>_plus", "reload<mode>_nonoffmem_in",
5952         "reload<mode>_nonoffmem_out"): Expanders added.
5953
5954 2007-03-29  Andreas Krebbel  <krebbel1@de.ibm.com>
5955
5956         * regmove.c (optimize_reg_copy_1): Don't perform DEST->SRC repair action if
5957         SRC->DEST replacement failed anyway.
5958
5959 2007-03-28  Mike Stump  <mrs@apple.com>
5960
5961         * config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Add.
5962         * config/darwin.h (MAX_OFILE_ALIGNMENT): Fix.
5963         * config/rs6000/darwin.h (ASM_OUTPUT_ALIGNED_COMMON): Removed #undef.
5964
5965 2007-03-28  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
5966
5967         * config.gcc: Accept barcelona as a variant of amdfam10.
5968         * config/i386/i386.c (override_options): Likewise.
5969         * doc/invoke.texi: Likewise.
5970
5971 2007-03-28  Eric Botcazou  <ebotcazou@adacore.com>
5972
5973         * tree-dfa.c (get_ref_base_and_extent): Do not expect positive
5974         offsets for BIT_FIELD_REF and COMPONENT_REF.
5975
5976 2007-03-28  Richard Guenther  <rguenther@suse.de>
5977
5978         * tree.c (is_global_var): Move ...
5979         * tree-flow-inline.h (is_global_var): ... here.
5980         * tree.h (is_global_var): Remove declaration.
5981
5982 2007-03-28  Uros Bizjak  <ubizjak@gmail.com>
5983
5984         * config/i386/i386.h (X86_TUNE_PROMOTE_HIMODE_IMUL): New tuning
5985         option.
5986         (TARGET_TUNE_PROMOTE_HIMODE_IMUL): New define. Use new tuning option.
5987         * config/i386/i386.c (ix86_tune_features): Initialize new
5988         tuning option.
5989         * config/i386/predicates.md (promotable_binary_operator): Use
5990         TARGET_TUNE_PROMOTE_HIMODE_IMUL.
5991
5992 2007-03-28  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
5993
5994         PR target/31380
5995         * config/i386/sse.md (uminv16qi3): Use UMIN instead of UMAX.
5996
5997 2007-03-28  Lars Poeschel <larsi@wh2.tu-dresden.de>
5998
5999         * config/fr30/fr30.md (movsi_internal): Change destination
6000         constraint from m to V and add m to the end.
6001
6002 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6003
6004         * config/sh/sh.md (movsi_i): Fix type attribute.
6005
6006 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6007
6008         * config/sh/sh.md (movsi_ie): Fix memory constraints attribute length.
6009         (movsf_ie): Likewise.
6010
6011 2007-03-28  Christian Bruel  <christian.bruel@st.com>
6012
6013         * config.gcc: Add sh4-300 to multilib.
6014         * config/sh/t-mlib-sh4-300: New file.
6015
6016 2007-03-28  Andreas Krebbel  <krebbel1@de.ibm.com>
6017
6018         * config/s390/s390.md ("fix_trunc<mode>di2"): New expander.
6019         ("fix_trunc<DFP:mode>di2_dfp"): New insn definition renamed from
6020         fix_trunc<mode>di2.
6021         ("fixuns_truncdddi2", "fixuns_trunctddi2"): Use
6022         fix_trunc<DFP:mode>di2_dfp instead of fix_trunc<mode>di2.
6023         ("fix_truncdfsi2", "fix_truncsfsi2", "fixuns_truncdddi2",
6024         "fixuns_trunctddi2"): Whitespace fix.
6025
6026 2007-03-28  Kaz Kojima  <kkojima@gcc.gnu.org>
6027
6028         * config/sh/sh.h (CALL_COOKIE_RET_TRAMP_SHIFT): Move after
6029         the definition of struct sh_args.
6030         (CALL_COOKIE_RET_TRAMP, CALL_COOKIE_STACKSEQ_SHIFT,
6031         CALL_COOKIE_INT_REG_GET): Likewise.
6032
6033 2007-03-28  Steven Bosscher  <steven@gcc.gnu.org>
6034
6035         * ifcvt.c (cond_exec_find_if_block): Return FALSE if no
6036         transformations are applied successfully.
6037
6038 2007-03-27  Douglas Gregor  <doug.gregor@gmail.com>
6039
6040         * tree.c (tree_contains_struct): Permit 512 tree codes.
6041         * tree.h (tree_contains_struct): Ditto.
6042         (MAX_TREE_CODES): Ditto.
6043         (struct tree_base): Make CODE 16 bits, instead of 8 bits. Add
6044         SPARE member to store remaining padding bits.
6045
6046 2007-03-27  Anatoly Sokolov <aesok@post.ru>
6047
6048         * config/avr/avr.c (avr_mcu_types): Move at90usb82 device to 'avr4'
6049         architecture.
6050
6051 2007-03-27  Janis Johnson  <janis187@us.ibm.com>
6052
6053         * configure.ac: Fix assembler test for powerpc*-linux decimal float.
6054         * configure: Regenerate.
6055
6056         * configure: Regenerate using the correct version of autoconf.
6057
6058 2007-03-27  Anatoly Sokolov  <aesok@post.ru>
6059
6060         * config/avr/avr.c (avr_hard_regno_mode_ok): Disallow QImode in stack
6061         pointer regs.
6062         * config/avr/avr.h (REGISTER_NAMES): Rename "__SPL__" and "__SPH__"
6063         regs to "__SP_L__" and "__SP_H__".
6064
6065 2007-03-27  Richard Guenther  <rguenther@suse.de>
6066
6067         * tree-dfa.c (get_ref_base_and_extent): Replace bit_offset and
6068         computations with it with a HOST_WIDE_INT variable.
6069
6070 2007-03-26  Mike Stump  <mrs@apple.com>
6071
6072         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Add
6073         objective-c-header, objective-c++-header and objc++-cpp-output
6074         support.
6075         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
6076
6077 2007-03-26  Richard Henderson  <rth@redhat.com>
6078
6079         PR target/31361
6080         * config/i386/i386.c (IX86_BUILTIN_PSLLDQ128, IX86_BUILTIN_PSLLW128,
6081         IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128, IX86_BUILTIN_PSRAW128,
6082         IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128, IX86_BUILTIN_PSRLD128,
6083         IX86_BUILTIN_PSRLQ128): New.
6084         (ix86_init_mmx_sse_builtins): Add them.
6085         (ix86_expand_builtin): Expand them.
6086         * config/i386/sse.md (ashr<mode>3, lshr<mode>3, ashl<mode>3): Make
6087         operand 2 be TImode.
6088         * config/i386/emmintrin.h (_mm_slli_epi64, _mm_srai_epi16,
6089         _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
6090         _mm_srli_epi64): Mark __B const.
6091         (_mm_srli_si128, _mm_srli_si128): Fix disabled inline versions.
6092         (_mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64, _mm_sra_epi16,
6093         _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32, _mm_srl_epi64): Use
6094         new two-vector shift builtins.
6095
6096 2007-03-26  Ian Lance Taylor  <iant@google.com>
6097
6098         PR tree-optimization/31345
6099         * tree-vrp.c (extract_range_from_binary_expr): Turn ranges like
6100         [+INF, +INF(OVF)] into VARYING.
6101
6102 2007-03-26  Zack Weinberg  <zackw@panix.com>
6103
6104         * gengtype-parse.c: New file.
6105         * gengtype-yacc.y: Delete.
6106         * gengtype-lex.l: Don't include gengtype-yacc.h.
6107         Define YY_DECL and yyterminate appropriately for recursive
6108         descent parser.  yylval is now a string out-parameter to yylex.
6109         (HWS, EOID): New shorthand.
6110         (IWORD): Add a couple more types.
6111         (yylex): Add a setup stanza.  Remove the complex rules for
6112         detecting GTY'ed types and typedefs; replace with simple
6113         keyword detectors.  Adjust everything for the changed
6114         definition of yylval.  Ignore all pp-directives, not just #define.
6115         (yyerror): Delete.
6116         (parse_file): Rename yybegin; do not call yyparse.
6117         (yyend): New.
6118         * gengtype.c (xasprintf): Export again.
6119         (this_file): New.  Use everywhere __FILE__ was being used.
6120         (get_lang_bitmap): Special case types defined in gengtype.c.
6121         (do_typedef, new_structure): Suppress definition of certain types.
6122         (new_structure): Improve diagnostics of duplicate definitions.
6123         Make sure location_s is associated with input.h.
6124         (nreverse_pairs, define_location_structures): New functions.
6125         (main): Improve tagging of kludge types.  Remove old kludges
6126         for input.h types; use define_location_structures.
6127         * gengtype.h: Update prototypes.  Define token codes here.
6128         * Makefile.in: Remove all references to gengtype-yacc.
6129         Add rules for gengtype-parse.o.  Adjust rules for gengtype-lex.o
6130         and gengtype.
6131         * bitmap.h (struct bitmap_head_def): Coalesce definitions,
6132         add GTY((skip)) to the field that's only conditionally there.
6133         * doc/install.texi: Document that Bison is no longer required
6134         unless building treelang.
6135
6136         * gengtype.c: Don't include gtyp-gen.h.
6137         (srcdir): Declare here.
6138         (base_files, lang_dir_names): Allocate dynamically.
6139         (gt_files, num_gt_files, num_lang_dirs): New globals.
6140         (measure_input_list, read_input_line, read_input_list)
6141         (set_lang_bitmap): New functions.
6142         (get_base_file_bitmap): Rename get_lang_bitmap and drastically
6143         simplify, relying on read_input_list to set up the bitmaps.
6144         (main): Arguments are no longer unused.  Check for correct number
6145         of command line arguments, set srcdir and srcdir_len, then call
6146         read_input_list, before doing anything else.  No need to worry
6147         about duplicates in main loop.
6148         * configure.ac: Simplify the calculation of all_gtfiles.
6149         Put language tags in there.  Don't set or substitute
6150         all_gtfiles_files_langs or all_gtfiles_files_frags.
6151         * Makefile.in: Revamp the way gengtype is invoked, now that it
6152         takes a file on its command line with a much simpler format.
6153         Remove or replace with gtyp-input.list all references to gtyp-gen.h.
6154         (GTFILES): Remove duplicates and C source files.
6155         * c-config-lang.in, cp/config-lang.in, objc/config-lang.in
6156         * objcp/config-lang.in: Add c-pragma.h to gtfiles.
6157         * configure: Regenerate.
6158
6159         * gengtype.h: Remove all type definitions to gengtype.c; leave
6160         only definitions of options_p, type_p, and pair_p as opaque
6161         pointers.  Update prototypes.
6162         * gengtype.c: Many type definitions moved here from gengtype.h.
6163         Consolidate type definitions at the top of the file.
6164         (xvasprintf): Delete.
6165         (xasprintf): Make static.
6166         (create_nested_pointer_option): Add 'next' parameter.
6167         (create_field_all, create_field_at): New functions.
6168         (create_field): Now a thin wrapper around create_field_all.
6169         (create_optional_field): Rename create_optional_field_ and add
6170         line argument.  Original name is now a macro which supplies
6171         __LINE__.
6172         (oprintf): Use vsnprintf directly.
6173         (close_output_files): Use fatal rather than perror/exit.
6174         (note_def_vec, note_def_vec_alloc): Use create_field_at.
6175         (main): Set progname.  Don't use exit.
6176         * gengtype-yacc.y (struct_fields): Use create_field_at.
6177         (option, optionseqopt): Delete.
6178         (optionseq): Consolidate productions from option here so we
6179         can use the first argument to create_option.
6180
6181         * gengtype-lex.l: Distinguish unions from structures in the
6182         token type.  Don't call find_structure; return the tag as a string.
6183         * gengtype-yacc.y: Add new token types ENT_TYPEDEF_UNION and ENT_UNION.
6184         Type of these, ENT_TYPEDEF_STRUCT, and ENT_STRUCT is string.
6185         Reorganize typedef_struct production accordingly.
6186         Use create_nested_ptr_option.
6187         * gengtype.c (create_nested_ptr_option): New function.
6188         * gengtype.h: Declare it.
6189
6190         * gengtype.h (struct type): Replace 'sc' with boolean, scalar_is_char.
6191         (string_type): Don't declare.
6192         (do_scalar_typedef): Declare.
6193         (create_scalar_type): Update prototype.
6194         * gengtype.c (string_type): Make static.
6195         (scalar_nonchar, scalar_char): New.
6196         (do_scalar_typedef): Export.  Always use scalar_nonchar for the type.
6197         (resolve_typedef): Use scalar_nonchar for error recovery.
6198         (create_scalar_type): Remove name_len field.  Return scalar_char
6199         or scalar_nonchar as appropriate.
6200         (adjust_field_type): Look at scalar_is_char boolean to decide whether
6201         to use string_type.
6202         (throughout): Use scalar_nonchar instead of calling create_scalar_type,
6203         whenever possible.
6204         (main): Initialize scalar_char and scalar_nonchar before calling
6205         gen_rtx_next.
6206         * gengtype-lex.l: Adjust for removal of second argument to
6207         create_scalar_type.  Use yylval.s instead of yylval.t when
6208         returning SCALAR.
6209         * gengtype-yacc.y: Type of SCALAR is string.  Call
6210         create_scalar_type from type:SCALAR rule.  Adjust for removal of
6211         second argument to create_scalar_type.
6212
6213         * vec.h: Remove all #if IN_GENGTYPE blocks.
6214         Add comment saying that changes may require adjustments to gengtype.
6215         * gengtype.c: Don't include coretypes.h or tm.h.
6216         Add comment to inclusion of errors.h.
6217         (note_def_vec, note_def_vec_alloc): New functions.
6218         * gengtype.h: Declare new functions.
6219         * gengtype-lex.l: Don't include coretypes.h.
6220         (YY_INPUT, macro_input, push_macro_expansion, mangle_macro_name):
6221         Delete.
6222         (update_lineno): Remove unnecessary prototype.
6223         (DEF_VEC_* rules): Simplify using note_def_vec / note_def_vec_alloc.
6224         (VEC rule): Just return VEC_TOKEN.
6225         * gengtype-yacc.y (VEC_TOKEN): New token type.
6226         (type): Add a production for VEC(a,b).
6227         * Makefile.in: Update dependencies.
6228
6229         * gengtype-lex.l: Remove rules for parsing pointer-to-function
6230         typedefs that use the old PARAMS macro.
6231
6232         * gengtype-lex.l: Remove all rules and states relating to yacc
6233         input files.
6234         * gengtype-yacc.y: Similarly.
6235         * gengtype.c (note_yacc_type): Delete function.
6236         * gengtype.h: Update prototypes.
6237
6238 2007-03-26  Joseph Myers  <joseph@codesourcery.com>
6239
6240         * tree-pretty-print.c (dump_generic_node): Report precision of
6241         unnamed integer types.
6242
6243 2007-03-26  Steven Bosscher  <steven@gcc.gnu.org>
6244
6245         * ifcvt.c (noce_try_store_flag_constants): Don't check
6246         no_new_pseudos here.
6247         (noce_try_store_flag_constants): Don't check no_new_pseudos.
6248         (noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
6249         noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
6250         noce_try_sign_mask): Likewise.
6251         (if_convert): Check no_new_pseudos here.
6252
6253         (cond_exec_process_if_block, noce_process_if_block, find_if_block):
6254         Remove prototypes.
6255         (struct noce_if_info): Add then_bb, else_bb, join_bb members.
6256         (noce_get_condition): Handle new then_else_reversed argument.
6257         (noce_init_if_info): Remove, fold into noce_find_if_block.
6258         (noce_process_if_block): Take a struct noce_if_info as the
6259         argument.  Don't set up one based on ce_if_info.  Update pointer
6260         references accordingly.
6261         (cond_move_process_if_block): Likewise.
6262         (process_if_block): Removed.
6263         (find_if_block): Removed.  Move functionality two new functions,
6264         noce_find_if_block and cond_exec_find_if_block.
6265         (noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
6266         blocks and the symmetric IF-ELSE-JOIN case.
6267         (cond_exec_find_if_block): Also new function mostly based on old
6268         find_if_block and process_if_block.
6269         (find_if_header): Replace find_if_block call with separately
6270         guarded calls to noce_find_if_block and cond_exec_find_if_block.
6271         (find_cond_trap): Update noce_get_condition call.
6272         (dead_or_predicable): Likewise.
6273
6274 2007-03-26  Jakub Jelinek  <jakub@redhat.com>
6275
6276         * config/i386/i386.c (IX86_BUILTIN_CMPNEPD, IX86_BUILTIN_CMPNESD):
6277         Remove.
6278         (IX86_BUILTIN_PSLLW128, IX86_BUILTIN_PSLLD128, IX86_BUILTIN_PSLLQ128,
6279         IX86_BUILTIN_PSRAW128, IX86_BUILTIN_PSRAD128, IX86_BUILTIN_PSRLW128,
6280         IX86_BUILTIN_PSRLD128, IX86_BUILTIN_PSRLQ128): Remove.
6281         (ix86_init_mmx_sse_builtins): Remove v8hi_ftype_v8hi_v2di and
6282         v4si_ftype_v4si_v2di.  Remove __builtin_ia32_psllw128,
6283         __builtin_ia32_pslld128, __builtin_ia32_psllq128,
6284         __builtin_ia32_psrlw128, __builtin_ia32_psrld128,
6285         __builtin_ia32_psrlq128, __builtin_ia32_psraw128 and
6286         __builtin_ia32_psrad128 builtins.
6287
6288 2007-03-26  Uros Bizjak  <ubizjak@gmail.com>
6289
6290         * reg-stack.c (replace_reg): Use IN_RANGE macro in gcc_assert().
6291         * config/i386/constraints.md
6292         (define_constraint "I"): Use IN_RANGE macro.
6293         (define_constraint "J"): Ditto.
6294         (define_constraint "K"): Ditto.
6295         (define_constraint "M"): Ditto.
6296         (define_constraint "N"): Ditto.
6297         (define_constraint "O"): Ditto.
6298         * config/i386/predicates.md
6299         (define_predicate "register_no_elim_operand"): Use IN_RANGE macro.
6300         (define_predicate "const_0_to_3_operand"): Ditto.
6301         (define_predicate "const_0_to_7_operand"): Ditto.
6302         (define_predicate "const_0_to_15_operand"): Ditto.
6303         (define_predicate "const_0_to_63_operand"): Ditto.
6304         (define_predicate "const_0_to_255_operand"): Ditto.
6305         (define_predicate "const_1_to_31_operand"): Ditto.
6306         (define_predicate "const_2_to_3_operand"): Ditto.
6307         (define_predicate "const_4_to_7_operand"): Ditto.
6308
6309 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
6310
6311         * config/rs6000/rs6000.c (rs6000_emit_prologue): Always clobber LR
6312         in SImode for save_world.
6313         * config/rs6000/altivec.md (save_world, restore_world): Convert to
6314         LR hard reg.
6315
6316 2007-03-25  Dorit Nuzman  <dorit@il.ibm.com>
6317
6318         PR tree-optimization/30784
6319         * fold-const.c (fold_ternary): Handle CONSTRUCTOR in case
6320         BIT_FIELD_REF.
6321
6322 2007-03-25  Revital Eres  <eres@il.ibm.com>
6323
6324         * tree-if-conv.c (if_convertible_gimple_modify_stmt_p):
6325           Fold movement_possibility function into it.
6326
6327 2007-03-25  David Edelsohn  <edelsohn@gnu.org>
6328
6329         * config/rs6000/darwin.md (load_macho_picbase): Ignore operand 0.
6330         (load_macho_picbase_{si,di}): Convert to LR hard reg.
6331         (call_indirect_nonlocal_darwin64): Same.
6332         (call_nonlocal_darwin64): Same.
6333         (call_value_indirect_nonlocal_darwin64): Same.
6334         (call_value_nonlocal_darwin64): Same.
6335         (sibcall_nonlocal_darwin64): Same.
6336         (sibcall_value_nonlocal_darwin64): Same.
6337         (sibcall_symbolic_64): Same.
6338         (sibcall_value_symbolic_64): Same.
6339         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Remove
6340         LR pseudo.
6341         (rs6000_emit_load_toc_table): Same.
6342         * config/rs6000/altivec.md (restore_world): Convert to LR hard reg.
6343         * config/rs6000/rs6000.md (mulh_call): Convert to LR hard reg.
6344         (mull_call): Same.
6345         (divss_call): Same.
6346         (divus_call): Same.
6347         (quoss_call): Same.
6348         (quous_call): Same.
6349         (load_toc_v4_pic_si): Same
6350         (load_toc_v4_PIC_1): Same.
6351         (load_toc_v4_PIC_1b): Same.
6352         (call_indirect_aix{32,64}): Same.
6353         (call_value_indirect_aix{32,64}): Same.
6354         (call): Same.
6355         (call_value): Same.
6356         (call_local{32,64}): Same.
6357         (call_value_local{32,64}): Same.
6358         (call_indirect_nonlocal_aix{32,64}): Same.
6359         (call_nonlocal_aix{32,64}): Same.
6360         (call_value_indirect_nonlocal_aix{32,64}): Same.
6361         (call_value_nonlocal_aix{32,64}): Same.
6362         (call_indirect_nonlocal_sysv<mode>): Same.
6363         (call_nonlocal_sysv<mode>): Same.
6364         (call_value_indirect_nonlocal_sysv<mode>): Same.
6365         (call_value_nonlocal_sysv<mode>): Same.
6366         (sibcall): Same.
6367         (sibcall_local{32,64}): Same.
6368         (sibcall_value_local{32,64}): Same.
6369         (sibcall_nonlocal_aix{32,64}): Same.
6370         (sibcall_value_nonlocal_aix{32,64}): Same.
6371         (sibcall_nonlocal_sysv<mode>): Same.
6372         (sibcall_value): Same.
6373         (sibcall_value_nonlocal_sysv<mode>): Same.
6374
6375 2007-03-24  Paul Brook  <paul@codesourcery.com>
6376
6377         * config/arm/lib1funcs.asm (div0): Use ARM_FUNC_START and do_push.
6378         * config/arm/linux-eabi.h: Remove legacy syscall hack.
6379
6380 2007-03-24  Richard Henderson  <rth@redhat.com>
6381
6382         * config/ia64/constraints.md: New file.
6383         * config/ia64/predicates.md: Replace CONST_OK_FOR_? with
6384         satisfies_constraint_?.
6385         * config/ia64/ia64.c (ia64_move_ok, ia64_legitimate_constant_p,
6386         ia64_reload_gp, spill_restore_mem, ia64_expand_prologue,
6387         ia64_expand_epilogue, ia64_split_return_addr_rtx, ia64_rtx_costs,
6388         ia64_output_mi_thunk): Likewise.
6389         (ia64_const_ok_for_letter_p): Remove.
6390         (ia64_const_double_ok_for_letter_p): Remove.
6391         (ia64_extra_constraint): Remove.
6392         * config/ia64/ia64.h (REG_CLASS_FROM_LETTER): Remove.
6393         (CONST_OK_FOR_I, CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L,
6394         CONST_OK_FOR_M, CONST_OK_FOR_N, CONST_OK_FOR_O, CONST_OK_FOR_P,
6395         CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_G,
6396         CONST_DOUBLE_OK_FOR_LETTER_P, EXTRA_CONSTRAINT,
6397         EXTRA_MEMORY_CONSTRAINT): Remove.
6398         * config/ia64/ia64.md: Include constriants.md.  Replace
6399         CONST_OK_FOR_? with satisfies_constraint_?.
6400
6401 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
6402             H.J. Lu  <hongjiu.lu@intel.com>
6403
6404         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
6405         DPD or BID name.
6406         (name macros): Use DPD_BID_NAME to convert names properly.
6407
6408         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
6409         decimal floating point format.
6410         (init_floating_libfuncs): Change decimal functions so that they
6411         have a "bid_" prefix if the decimal system uses the BID format,
6412         and "dpd_" prefix if the decimal system uses the DPD format.
6413         (init_interclass_conv_libfuncs): Ditto.
6414         (init_intraclass_conv_libfuncs): Ditto.
6415
6416         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
6417         using the BID format.
6418
6419         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
6420         whether we are using the BID decimal format.
6421         * configure: Regenerate.
6422
6423         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
6424         the compiler has decimal floating point enabled.  Define
6425         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
6426         instead of DPD.
6427
6428         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
6429         using the BID format.
6430
6431         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
6432         whether we are using the BID decimal format.
6433         * configure: Regenerate.
6434
6435         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
6436         the compiler has decimal floating point enabled.  Define
6437         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
6438         instead of DPD.
6439
6440         * doc/install.texi (--enable-decimal-float): Document BID and DPD
6441         options, and that it is enabled for i386/x86_64 systems.
6442
6443         * Makefile.in (enable_decimal_float): New.
6444         (DECNUMFMT): New.
6445         (DECNUMINC): Add  -I$(DECNUMFMT).
6446         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
6447         to $(DECNUMFMT) from $(DECNUM).
6448
6449         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
6450         Substitute enable_decimal_float.
6451         * configure: Regenerated.
6452
6453         PR other/30529
6454         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
6455         unsigned long.
6456
6457         * configure.ac: Enable decimal float for x86_64-*-linux*.
6458         * configure: Regenerated.
6459
6460         PR other/30530
6461         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
6462         decimal128ClearSign to flip and clear the sign bit in decimal128.
6463         (decimal_real_maxval): Set decimal128SetSign to set the sign
6464         bit in decimal128.
6465
6466 2007-03-23  Ian Lance Taylor  <iant@google.com>
6467
6468         * fold-const.c (fold_binary): Correct warning for X - c >= X.
6469
6470 2007-03-23  Ian Lance Taylor  <iant@google.com>
6471
6472         * tree-dump.c (dump_files): Correct comment.
6473
6474 2007-03-23  Ian Lance Taylor  <iant@google.com>
6475
6476         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
6477
6478 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
6479
6480         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
6481         in cfglayout mode.  Don't go into and out of cfglayout mode.
6482         Link the blocks in the order of the constructed traces.
6483         (rest_of_handle_tracer): Adjust call to tracer.
6484         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
6485         Don't go into cfglayout mode.
6486         (rtl_loop_done): Don't go out of cfglayout mode.
6487         * cfglayout.c (relink_block_chain): New function, split out from...
6488         (fixup_reorder_chain): ...here.  Remove redundant checking.
6489         (cfg_layout_finalize): Don't clear the header, footer, and aux
6490         fields here, move the code to do so to relink_block_chain.  Likewise
6491         for free_original_copy_tables.
6492         * rtl.h (tracer): Update prototype.
6493         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
6494         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
6495         mode.  Use relink_block_chain to serialize the CFG according to the
6496         new basic block order.  Move targetm.cannot_modify_jumps_p check from
6497         here...
6498         (gate_handle_reorder_blocks): ...to here.
6499         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
6500         from here...
6501         (gate_duplicate_computed_gotos): ...to here.
6502         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
6503         something always changes when going into and out of cfglayout mode.
6504         Perform an expensive cfg cleanup while going into cfglayout mode.
6505         Always update liveness information on HAVE_conditional_execution
6506         targets.  Reserialize the basic blocks and go out of cfglayout mode.
6507         * reg-stack.c: Include cfglayout.h.
6508         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
6509         the call to reorder_basic_blocks.
6510         * basic-block.h (reorder_basic_blocks): Update prototype.
6511         (relink_block_chain): New prototype.
6512         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
6513
6514 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
6515
6516         * config/mips/mips.md (type, hazard, *movdi_32bit,
6517         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
6518         *movhi_internal, *movqi_internal, *movsf_hardfloat,
6519         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
6520         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
6521         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
6522         applicable.
6523         (movcc): Change first xfer to multi.
6524         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
6525         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
6526         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
6527         config/mips/generic.md: Change reservations using "xfer" to use
6528         "mfc,mtc".
6529         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
6530         using match_operand.
6531         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
6532         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
6533         examining mode.
6534         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
6535
6536 2007-03-22  Richard Henderson  <rth@redhat.com>
6537
6538         * config/i386/i386.c: Remove unnecessary function declarations.
6539         Move targetm definition, and all related macros, to the end of
6540         the file.  Resort some functions to put definitions before uses.
6541         (ix86_attribute_table): Make static.  Move to end of file.
6542         (ix86_gimplify_va_arg): Make static.
6543
6544 2007-03-22  Richard Henderson  <rth@redhat.com>
6545
6546         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
6547         don't increase local_regparm with force_align_arg_pointer check.
6548         (ix86_function_sseregparm): Assert 32-bit.
6549         (type_has_variadic_args_p): New.
6550         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
6551         type_has_variadic_args_p.
6552         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
6553         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
6554         use memset instead.  Do maybe_vaarg check first; skip attribute
6555         tests if true; skip attribute tests for 64-bit.
6556         (construct_container): Remove TARGET_DEBUG_ARG.
6557         (function_arg_advance_32, function_arg_advance_64): Split out ...
6558         (function_arg_advance): ... from here.
6559         (function_arg_32, function_arg_64): Split out ...
6560         (function_arg): ... from here.
6561         (ix86_pass_by_reference): Tidy.
6562         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
6563         (function_value_32): New, from parts of ix86_function_value
6564         and ix86_value_regno.
6565         (function_value_64): New, from parts of ix86_function_value
6566         and ix86_libcall_value.
6567         (ix86_function_value_1): New.
6568         (ix86_function_value, ix86_libcall_value): Use it.
6569         (return_in_memory_32, return_in_memory_64): Split out ...
6570         (ix86_return_in_memory): ... from here.
6571         (ix86_struct_value_rtx): Skip for 64-bit.
6572         (ix86_libcall_value, ix86_value_regno): Remove.
6573         (setup_incoming_varargs_64): Split out ...
6574         (ix86_setup_incoming_varargs): ... from here.
6575         (ix86_va_start): Remove TARGET_DEBUG_ARG.
6576         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
6577         * config/i386/i386-protos.h (ix86_function_value): Remove.
6578         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
6579
6580 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6581
6582         PR other/23572
6583         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
6584         infinities not supported, otherwise emit warning if -Woverflow. On
6585         underflow, emit warning if -Woverflow.
6586         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
6587         and 0 otherwise.
6588         * real.h (real_from_string): Update declaration
6589
6590 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
6591             Richard Henderson  <rth@redhat.com>
6592
6593         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
6594         * calls.c (compute_argument_block_size, expand_call,
6595         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
6596         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
6597         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
6598         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
6599         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
6600         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
6601         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
6602         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
6603         Set to 1.
6604
6605 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
6606
6607         * c-incpath.c (add_sysroot_to_chain): New.
6608         (merge_include_chains): Add sysroot argument.  Call
6609         add_sysroot_to_chain if sysrooted.
6610         (register_include_chains): Update call to merge_include_chains.
6611         * doc/cppopts.texi: Document use of '=' in include directory
6612         arguments.
6613
6614 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
6615
6616         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
6617         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
6618         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
6619         insn pattern using X87MODEF12 mode macro.
6620
6621 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
6622
6623         * regmove.c (regmove_optimize): Use reg_mentioned_p
6624         instead of reg_overlap_mentioned_p for DST.
6625
6626 2007-03-21  Mike Stump  <mrs@apple.com>
6627
6628         * c.opt: Fixup for Objective-C/C++.
6629
6630 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
6631
6632         * explow.c (convert_memory_address): Fold memory reference when
6633         POINTERS_EXTEND_UNSIGNED < 0
6634
6635 2007-03-21  Richard Henderson  <rth@redhat.com>
6636
6637         PR target/31245
6638         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
6639         * config/i386/mmintrin.h (__m64): Likewise.
6640         * config/i386/xmmintrin.h (__m128): Likewise.
6641
6642 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6643
6644         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
6645         (VXWORKS_OS_CPP_BUILTINS): Define.
6646         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
6647         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
6648
6649 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6650
6651         * rtl.h (constant_pool_reference_p): Delete.
6652         (find_constant_src): Declare.
6653         * rtlanal.c (find_constant_src): New function.
6654         * simplify-rtx.c (constant_pool_reference_p): Delete.
6655         * config/i386/i386.md: Use find_constant_src instead of
6656         constant_pool_reference_p/avoid_constant_pool_reference pairs.
6657
6658 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
6659
6660         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
6661         * c-cppbuiltin.c (c_cpp_builtins): Define them.
6662
6663 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
6664
6665         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
6666         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
6667         (arm_elf_asm_constructor): Use it.
6668         (arm_elf_asm_destructor): New function.
6669
6670 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
6671
6672         * jump.c (mark_jump_label): Treat SEQUENCE specially.
6673
6674 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
6675
6676         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
6677
6678 2007-03-19  Andrew Haley  <aph@redhat.com>
6679
6680         PR tree-optimization/31264
6681         * tree-vrp.c (register_edge_assert_for_1): Don't look though
6682         VIEW_CONVERT_EXPRs.
6683
6684 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
6685
6686         PR rtl-optimization/30907
6687         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
6688         (fwprop_init): Always call loop_optimizer_initialize.
6689         (fwprop_done): Always call loop_optimizer_finalize.
6690         (fwprop): We always have loop info now.
6691         (gate_fwprop_addr): Remove.
6692         (pass_fwprop_addr): Use gate_fwprop as gate.
6693
6694         PR rtl-optimization/30841
6695         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
6696         df_chain_alloc): Call df_reorganize_refs unconditionally.
6697         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
6698         refs_organized to refs_organized_size.
6699         (df_ref_create_structure): Use refs_organized_size instead of
6700         bitmap_size if refs had been organized, and keep refs_organized_size
6701         up-to-date.
6702         * df.h (struct df_ref_info): Change refs_organized to
6703         refs_organized_size.
6704         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
6705         bitmap_size.
6706
6707 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
6708
6709         * except.c (output_function_exception_table): Do not reference the
6710         EH personality routine for functions that do not require an
6711         exception table.
6712
6713 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
6714
6715         PR c/30762
6716         * c-typeck.c (convert_for_assignment): Call comptypes for
6717         RECORD_TYPE or UNION_TYPE.
6718
6719         PR inline-asm/30505
6720         * reload1.c (reload): Do invalid ASM checking after
6721         cleanup_subreg_operands.
6722
6723 2007-03-19  Jeff Law  <law@redhat.com>
6724
6725         * tree-cfg.c (find_taken_edge): Tighten conditions for
6726         optimizing computed gotos.
6727
6728 2007-03-19  Michael Matz  <matz@suse.de>
6729
6730         * builtins.c (expand_builtin_sync_operation,
6731         expand_builtin_compare_and_swap,
6732         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
6733         correctly.
6734
6735         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
6736         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
6737         for operand 3.
6738
6739 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6740
6741         * doc/tm.texi: Add brackets around the return type of
6742         TARGET_SECONDARY_RELOAD.
6743
6744 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
6745         Richard Guenther  <rguenther@suse.de>
6746
6747         PR tree-optimization/31254
6748         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
6749         Use handled_component_p () where appropriate.  Continue
6750         propagating into the rhs if we propagated into an INDIRECT_REF
6751         on the lhs.
6752
6753 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6754
6755         * config/s390/s390.md (op_type attribute): RRR instruction type added.
6756         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
6757         (xde, xdee): Mode attributes adjusted to support DFP modes.
6758         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
6759         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
6760         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3",
6761         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
6762         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
6763         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
6764         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP
6765         numbers.
6766         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
6767         "movsf"): Insn definitions removed.
6768         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
6769         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
6770         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
6771         definitions added.
6772         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
6773         "reload_in<mode>", "reload_out<mode>"): Expander added.
6774         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
6775         Expander removed.
6776
6777 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6778
6779         * config/s390/s390.md: Only non-functional changes.  Renamed
6780         FPR mode macro to BFP all over the file.
6781
6782 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6783
6784         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
6785         (op_type attribute): RRF instruction type added.
6786         (fT0): New mode attribute.
6787         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
6788         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
6789         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
6790         no secondary memory is needed when moving DFmode values between GPRs
6791         and FPRs.
6792
6793 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6794
6795         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
6796         inverted and documentation adjusted.
6797         ("mhard-dfp", "msoft-dfp"): New options.
6798         * config/s390/s390.c (s390_handle_arch_option): New architecture
6799         switch: z9-ec.
6800         (override_options): Sanity checks for the new options added.
6801         * config.gcc: New architecture switch: z9-ec.
6802         * config/s390/s390.h (processor_flags): PF_DFP added.
6803         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
6804         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
6805         when the bit is NOT set so remove it from the defaults.
6806
6807 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
6808
6809         * genemit.c (main): Print include statement for dfp.h.
6810         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
6811         is not available.
6812
6813 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
6814
6815         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
6816
6817 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
6818
6819         PR target/31022
6820         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
6821         instead of PATTERN.
6822
6823 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6824
6825         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
6826         attr_length_call, output_call, output_indirect_call): Cleanup
6827         formatting of targetm calls.
6828
6829 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
6830
6831         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
6832
6833 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6834
6835         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
6836         reservation, bypass and anti-bypass descriptions for these instructions.
6837         Update move patterns.
6838         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
6839         TYPE_FPSTORE.
6840
6841 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
6842
6843         * tree-vect-transform.c (get_initial_def_for_induction): Replace
6844         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
6845         (get_initial_def_for_reduction): Likewise.
6846
6847 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
6848
6849         Fix PR tree-optimization/29922
6850         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
6851         (get_representative): Removed.
6852         (value_dies_in_block_x): Update for rvuse removal.
6853         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
6854         (compute_antic_aux): Handle when PHI nodes appear in
6855         non-single-successors.
6856         (dump_bitmap_of_names): Removed.
6857         (compute_antic_safe): Renamed and removed rvuse calculation.
6858         Calculate only antic safe.
6859         (insert_into_preds_of_block): Remove assert.
6860         (execute_pre): Update for renamed functions.
6861         (defer_or_phi_translate_block): New function.
6862
6863 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
6864
6865         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
6866         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
6867         typos.
6868         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
6869         Follow spelling conventions.
6870
6871         * tree-data-ref.h: Remove the prototype for analyze_array.
6872
6873 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
6874
6875         PR tree-optimization/31041
6876         * tree-vect-transform.c (get_initial_def_for_induction): Call
6877         force_gimple_operand.
6878
6879 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
6880
6881         * ipa-type-escape.c (look_for_casts) : Revert code to use
6882         handled_component_p due to ada test a-numaux.adb.
6883
6884 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
6885
6886         * final.c (final_scan_insn): Alter the condition of a
6887         conditional trap if we have nonstandard CC.
6888
6889 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6890
6891         * configure.ac: Remove excess quoting from asm line 0 test.
6892         * configure: Rebuilt.
6893
6894 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6895
6896         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
6897         * c-common.c (convert_and_check): Move warning logic to...
6898         (warnings_for_convert_and_check): ...here. Define.
6899         * c-common.h (warnings_for_convert_and_check): Declare.
6900
6901 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6902
6903         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
6904         (output_call): Likewise.
6905
6906 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
6907
6908         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
6909
6910 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
6911
6912         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
6913
6914 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
6915
6916         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
6917         opteron, athlon-64 and athlon-fx processor_alias_table entries.
6918
6919 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
6920
6921         PR tree-optimization/31183
6922         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops):
6923         Use double_int instead of unsigned int for representing access_strides.
6924         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
6925
6926 2007-03-16  Richard Guenther  <rguenther@suse.de>
6927
6928         PR tree-optimization/31146
6929         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
6930         to allow recursion of forward_propagate_addr_expr.
6931         (forward_propagate_addr_into_variable_array_index): Likewise.
6932         (forward_propagate_addr_expr): Likewise.
6933         (tree_ssa_forward_propagate_single_use_vars): Likewise.
6934         (forward_propagate_addr_expr_1): Recurse on simple copies
6935         instead of propagating into them.  Do so for useless conversions
6936         as well.
6937         (forward_propagate_addr_expr): Clean up unused statements after
6938         recursion.
6939
6940 2007-03-16  Richard Guenther  <rguenther@suse.de>
6941
6942         * builtins.c (expand_builtin_cexpi): Use the right argument
6943         for the expansion via cexp.
6944
6945 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6946
6947         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
6948         * configure: Rebuilt.
6949
6950 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
6951
6952         PR debug/29906
6953         * dwarf2out.c (force_type_die): Adjust comment.
6954         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
6955
6956 2007-03-15  DJ Delorie  <dj@redhat.com>
6957
6958         * config/frv/predicates.md (minmax_operator): Don't check operands
6959         here.
6960
6961 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
6962
6963         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
6964         Update constant estimates of number of iterations.
6965         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
6966         argument renamed to "realistic".
6967         (compute_estimated_nb_iterations): Removed.
6968         (record_niter_bound): New function.
6969         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
6970         call record_nonwrapping_iv with upper = false.
6971         (infer_loop_bounds_from_signedness): Pass upper argument to
6972         record_nonwrapping_iv.
6973         (estimate_numbers_of_iterations_loop): Do not call
6974         compute_estimated_nb_iterations.  Record estimate based on profile
6975         information.  Initialize the constant estimates of number of
6976         iterations.
6977         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
6978         estimates.
6979         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
6980         number of iterations is too small.
6981         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
6982         (EST_NOT_AVAILABLE): Removed.
6983         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
6984         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
6985         fields.
6986
6987 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
6988
6989         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
6990         Handle NE_EXPR guards.
6991
6992 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6993
6994         PR c++/24924
6995         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
6996         Set also -pedantic-errors by default for the  preprocessor unless
6997         -fpermissive is given.
6998
6999 2007-03-15  Richard Guenther  <rguenther@suse.de>
7000
7001         PR middle-end/29719
7002         PR middle-end/31161
7003         * builtins.c (expand_builtin_cexpi): As a fallback if we
7004         don't have builtins for sincos or cexp create a function
7005         declaration for cexp and expand to a call to that.
7006         (expand_builtin_int_roundingfn): Always fall
7007         back to floor/ceil and its variants even if they may be
7008         not available.
7009
7010 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
7011
7012         PR middle-end/31159
7013         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
7014         jump tables, move the call to delete_dead_jumptables from here...
7015         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
7016         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
7017         don't allow merging of blocks that try_redirect_by_replacing_jump
7018         also does not handle when not optimizing.
7019
7020 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
7021             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
7022
7023         * config/i386/i386.md (x86_sahf_1): Correctly handle
7024         HAVE_AS_IX86_SAHF.
7025
7026 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
7027
7028         PR target/31167
7029         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
7030         x86_64_general_operand as operand[2] predicate.  Remove "iF"
7031         from operand constraints and use "e" constraint instead.
7032         (*subti3_1, *subti3_1 splitter): Ditto.
7033         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
7034         operand[1] predicate.
7035
7036 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
7037
7038         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
7039         arrays, multiply the access strides by the size of the sub-array.
7040         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
7041
7042 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
7043
7044         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
7045         the configured assembler supports the sahf mnemonic.
7046         * configure: Regenerate.
7047         * config.in: Regenerate.
7048
7049         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
7050         emit "sahf" or ".byte\t0x9e" as asm template.
7051
7052 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
7053
7054         PR 31018
7055         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
7056         option to replace hard coded TARGET_xxx in md file.
7057         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
7058         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
7059         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
7060         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
7061         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
7062         (X86_TUNE_NOT_VECTORMODE): Ditto.
7063         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
7064         (TUNE_AVOID_VECTOR_DECODE): Ditto.
7065         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
7066         (TUNE_SLOW_IMUL_IMM8): Ditto.
7067         (TUNE_MOVE_M1_VIA_OR): Ditto.
7068         (TUNE_NOT_UNPAIRABLE): Ditto.
7069         (TUNE_NOT_VECTORMODE): Ditto.
7070
7071         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
7072         options.
7073
7074         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
7075         tuning options instead of hard coded TARGET_xxx.
7076         (fix ssemode peephole2's): Ditto.
7077         (imul peephole2's): Ditto.
7078         (movsi_or): Ditto.
7079         (movdi_or_rex64): Ditto.
7080         (move peephole2): Ditto.
7081         (not peephole2's): Ditto.
7082
7083 2007-03-14  Dirk Mueller  <dmueller@suse.de>
7084
7085         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
7086         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
7087         * c-parser.c (c_parser_if_body): Always add an empty statement in case
7088         of empty body.
7089         * c-parser.c (c_parser_do_statement): Warn about empty body in
7090         do/while statement.
7091         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
7092         * doc/invoke.texi (-Wempty-body): Update documentation.
7093
7094 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
7095
7096         PR c/21438
7097         * c-common.h (warn_for_div_by_zero): Declare.
7098         * c-common.c (warn_for_div_by_zero): Define.
7099         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
7100         warning.
7101
7102 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
7103
7104         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
7105         to PREFIX and STANDARD_PREFIX.
7106
7107 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
7108             Phil Edwards  <phil@codesourcery.com>
7109
7110         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
7111         (__gthread_once_t): Remove busy field for RTPs.
7112         (__GTHREAD_ONCE_INIT): Update accordingly.
7113
7114 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
7115
7116         * doc/invoke.texi: Document VxWorks options.
7117
7118 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
7119
7120         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
7121
7122 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
7123
7124         PR tree-optimization/30590
7125         * tree-nrv.c (tree_nrv): Check for the partial update of the
7126         return value.
7127
7128 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
7129
7130         * flags.h (flag_random_seed): Remove declaration, in favor of...
7131         * toplev.h (get_random_seed, set_random_seed): ... these.
7132         * tree.c (get_file_function_name): Use the former.
7133         * opts.c (common_handle_option): Use the latter.
7134         * toplev.c
7135
7136 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
7137
7138         PR middle-end/31127
7139         * cse.c (cse_find_path): Do not bail out if a basic block that
7140         we already visited now becomes part of a path that starts at a
7141         different basic block.  Just disallow this, to make sure we
7142         visit each basic block at most once.
7143
7144 2007-03-13  Jan Hubicka  <jh@suse.cz>
7145
7146         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
7147         when profile esitmate is present, calls with very low frequency are
7148         cold.
7149
7150 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
7151
7152         PR tree-optimization/30730
7153         PR tree-optimization/26900
7154         * tree-ssa-loop-niter.c: Include gmp.h.
7155         (bounds): New type.
7156         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
7157         split_to_var_and_offset, determine_value_range,
7158         bound_difference_of_offsetted_base, refine_bounds_using_guard,
7159         bound_difference, bounds_add, bounds_negate,
7160         number_of_iterations_ne_max, dump_affine_iv): New functions.
7161         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
7162         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
7163         difference of initial and final value of control iv to validate
7164         results.
7165         (number_of_iterations_cond): Add loop parameter.  Determine bounds
7166         on the difference of the extremes of the control iv.  Add dumps.
7167         (expand_simple_operations): Handle phi nodes.
7168         (simplify_using_initial_conditions): Do not record used conditions.
7169         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
7170         Do not set additional_info.
7171         (implies_nonnegative_p, implies_ge_p): Removed.
7172         (derive_constant_upper_bound): Do not use parameter `additional'.
7173         (record_estimate): Parameter `additional' removed.  Parameter
7174         `i_bound' added.  Do not call derive_constant_upper_bound.
7175         (record_nonwrapping_iv): Use derive_constant_upper_bound to
7176         bound the number of iterations estimate.
7177         (estimate_numbers_of_iterations_loop): Pass the estimate from
7178         the number of iterations analysis to record_estimate.
7179         * tree.h (multiple_of_p): Declare.
7180         * tree-scalar-evolution.c (expression_expensive_p): Removed.
7181         (scev_const_prop): Do not check expression_expensive_p.
7182         * fold-const.c (multiple_of_p): Exported.
7183         * double-int.c (double_int_mask): Exported.
7184         * double-int.h (double_int_mask): Declare.
7185         * tree-flow.h (struct tree_niter_desc): Removed additional_info
7186         field.  Added max field.
7187
7188 2007-03-13  David Taylor  <taylor@candd.org>
7189
7190         PR driver/12448:
7191         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
7192         default -MQ.
7193
7194 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7195
7196         PR target/31123
7197         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
7198         two unamed patterns.
7199
7200 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
7201
7202         * config/i386/i386.opt (mcx16, msahf): New options.
7203         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
7204         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
7205
7206         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
7207         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
7208         Output -mcx16 and -msahf options when corresponding bit is set.
7209
7210         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
7211         and -msahf options.
7212
7213 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
7214
7215         * configure.ac: Test for assembler tolerance to # 0 "".
7216         * configure, config.in: Rebuilt.
7217         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
7218
7219 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
7220
7221         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
7222
7223         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
7224         (handle_syscall): Handle direct system calls.
7225         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
7226
7227 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
7228
7229         * doc/invoke.texi: Fix cpp.info cross-reference.
7230         * doc/passes.texi: Fix gcc.info cross-reference.
7231
7232 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
7233
7234         PR tree-optimization/30835
7235         * lambda-code.c (can_convert_to_perfect_nest): Check whether
7236         bb_for_stmt is not NULL before accessing it.
7237
7238 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
7239
7240         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
7241         some multilibs.
7242
7243 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
7244
7245         PR 30635
7246         * doc/install.texi: Document --enable-stage1-languages
7247
7248 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
7249
7250         * tree-pass.h (pass_into_cfg_layout_mode,
7251         pass_outof_cfg_layout_mode): Declare.
7252         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
7253         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
7254         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
7255         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
7256
7257 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
7258
7259         * c-decl.c (warn_variable_length_array): New function.
7260         Refactored from grokdeclarator to handle warn_vla
7261         and handle unnamed array case.
7262         (grokdeclarator): Refactored VLA warning case.
7263         * c.opt (Wvla): New flag.
7264         * doc/invoke.texi (Wvla): New warning.
7265
7266 2007-03-12  Richard Henderson  <rth@redhat.com>
7267
7268         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
7269         (TARGET_SECTION_TYPE_FLAGS): New.
7270
7271 2007-03-12  Richard Henderson  <rth@redhat.com>
7272
7273         * config/darwin.c (machopic_reloc_rw_mask): New.
7274         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
7275         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
7276
7277 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
7278
7279         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
7280         * cppdefault.h (cpp_PREFIX): Document.
7281         (cpp_PREFIX_len): Likewise.
7282         (cpp_EXEC_PREFIX): New variable.
7283         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
7284         * c-incpath.c (add_standard_paths): Correct logic for relocating
7285         paths within prefix.
7286
7287 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
7288
7289         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
7290         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
7291         mode macro.
7292         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
7293         fix_truncdfdi_sse using SSEMODEF mode macro.
7294         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
7295         fix_truncdfsi_sse using SSEMODEF mode macro.
7296         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
7297         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
7298
7299 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
7300
7301         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
7302         elfos.h to tm_file.
7303
7304 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
7305
7306         * tree.h : Add multiple_of_p declaration.
7307         * fold-const.c (multiple_of_p): Make multiple_of_p public.
7308         * ipa-type-escape.c (results_of_malloc): Redundant.
7309         (visited_stmts): New. Visited stmt for walk_use_def_chains.
7310         (cast_type): Extended with new members.
7311         (check_cast): Returns cast_type.
7312         (cast): New structure for data of walk_use_def_chains.
7313         (is_malloc_result, is_cast_from_non_pointer_1,
7314         is_cast_from_non_pointer,
7315         is_array_access_through_pointer_and_index): New functions.
7316         (look_for_casts): Returns cast types.
7317         (check_call): Returns void.
7318         (okay_pointer_operation): Use support of pointer plus index,
7319         pointer plus constant and allow all multiplications.
7320
7321 2007-03-11  Richard Guenther  <rguenther@suse.de>
7322
7323         PR tree-optimization/31115
7324         * tree-vrp.c (extract_range_from_binary_expr): Make sure
7325         the shift count is positive and non-anti-range for RSHIFT_EXPR.
7326         A shift count of zero is not special as with *_DIV_EXPR.
7327         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
7328         direction.
7329
7330 2007-03-11  Ian Lance Taylor  <iant@google.com>
7331
7332         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
7333         the *_DIV_EXPR codes correctly with overflow infinities.
7334
7335 2007-03-11  Ira Rosen  <irar@il.ibm.com>
7336
7337         * tree-data-ref.c (analyze_offset): Add a return value (bool) to
7338         indicate success/failure of the analysis. Add negation to subtrahend
7339         in case of subtraction. Fail if both operands contain constants.
7340         (create_data_ref): Fail if analyze_offset fails.
7341
7342 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
7343
7344         * config/i386/i386.md (frndintxf2): Rename to ...
7345         (rintxf2): ... this. Remove expander having same name.
7346         (rintsf2, rintdf2): Implement using SSEMODEF macro.
7347         (roundsf2, rounddf2): Ditto.
7348         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
7349         (lround<mode>di2, lround<mode>si2): Ditto.
7350
7351 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
7352
7353         * lower-subreg.c: Include except.h.
7354         (decompose_multiword_subregs): Verify that the only control flow
7355         insns we can split are loads to multi-words pseudos.
7356         Handle breaking such blocks after splitting, instead of calling
7357         find_many_sub_basic_blocks.
7358
7359         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
7360         on the new basic block.  Add a lengthy comment explaining why we
7361         thought this was necessary.
7362         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
7363
7364 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
7365
7366         PR c++/30924
7367         * tree.c (walk_type_fields): Recurse into the element type of
7368         ARRAY_TYPEs if there is a pointer set.
7369
7370 2007-03-10  Dirk Mueller  <dmueller@suse.de>
7371
7372         * c-common.c (warn_logical_operator): Fix condition.
7373
7374 2007-03-10  Tobias Schl�ter  <tobi@gcc.gnu.org>
7375
7376         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
7377         quotation mark.
7378         * config/darwin.c (machopic_select_section): Remove superfluous
7379         argument in call to categorize_decl_for_section.  Remove unused
7380         variable shlib.
7381
7382 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
7383
7384         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
7385         defined.
7386         * configure: Regenerate.
7387
7388 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
7389
7390         PR target/31101
7391         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
7392         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
7393         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
7394         Add LABEL_NUSES to emitted label.
7395         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
7396         branch probability value to emitted jump insn.
7397         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
7398         Do not check life information and do not re-arrange input operands
7399         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
7400
7401 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7402
7403         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
7404         the change of decode_asm_operands.
7405
7406 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
7407
7408         * mode-switching.c (create_pre_exit): Skip blockage insn.
7409
7410 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
7411
7412         * tree-pass.h (TODO_update_smt_usage): Remove.
7413         Update all users.
7414         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
7415         argument SOME.
7416         Update all users.
7417
7418 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7419
7420         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
7421         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
7422         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
7423         SOM target.
7424
7425 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
7426
7427         * gcc.c: Document %{, in big comment at top.
7428         (input_suffix_matches): Remove special handling for .s and
7429         .S.
7430         (input_spec_matches): New.
7431         (handle_braces): Handle %{,.
7432         (validate_switches): ',' indicates a value which is not a switch.
7433         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
7434         to detect assembler input.
7435         * config/i386/sol2.h (CPP_SPEC): Likewise.
7436         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
7437         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
7438         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
7439         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
7440         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
7441         -m64 causes deployment target to default to 10.5.
7442         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
7443
7444 2007-03-09  Richard Henderson  <rth@redhat.com>
7445
7446         PR target/26090
7447         * target.h (targetm.asm.out.reloc_rw_mask): New.
7448         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
7449         (TARGET_ASM_OUT): Use it.
7450         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
7451         * varasm.c (categorize_decl_for_section): Remove shlib argument;
7452         use the new reloc_rw_mask target hook instead.
7453         (default_section_type_flags_1): Merge into...
7454         (default_section_type_flags): ... here.
7455         (decl_readonly_section_1): Merge into...
7456         (decl_readonly_section): ... here.
7457         (default_elf_select_section_1): Merge into...
7458         (default_elf_select_section): ... here.
7459         (default_unique_section_1): Merge into...
7460         (default_unique_section): ... here.
7461         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
7462         (default_select_rtx_section): Use it.
7463         (default_elf_select_rtx_section): Likewise.
7464         * output.h: Update to match.
7465         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
7466         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
7467         (TARGET_ASM_RELOC_RW_MASK): New.
7468         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
7469         to categorize_decl_for_section.
7470         (x86_64_elf_unique_section): Likewise.
7471         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
7472         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
7473         (TARGET_ASM_RELOC_RW_MASK): New.
7474         * config/ia64/ia64.c (ia64_rwreloc_select_section,
7475         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
7476         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
7477         (TARGET_RWRELOC): Remove.
7478         (ia64_section_type_flags): Adjust call to default_section_type_flags.
7479         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
7480         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
7481         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
7482         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
7483         (rs6000_xcoff_select_section): Use decl_readonly_section.
7484         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
7485         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
7486         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
7487         (TARGET_SECTION_TYPE_FLAGS): Remove.
7488         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
7489
7490 2007-03-09  Roger Sayle  <roger@eyesopen.com>
7491
7492         * fold-const.c (fold_comparison): Remove compile-time evaluation of
7493         complex constant equality/inequality comparisons for here.
7494         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
7495         known at compile-time or can be simplified to a scalar comparison.
7496         (fold_relational_const): Move compile-time evaluation of complex
7497         constant equality/inequality comparisons to here.
7498
7499 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7500
7501         PR rtl-optimization/30643
7502         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
7503         dest_addr_elt.
7504         (fold_rtx): Recurse, like before 2006-11-03.
7505
7506 2007-03-09  DJ Delorie  <dj@redhat.com>
7507
7508         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
7509         m32c-pragma.o.
7510
7511 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
7512
7513         PR tree-optimization/30375
7514         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
7515         LHS of statements is not the same.
7516         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
7517
7518 2007-03-09  Chao-ying Fu  <fu@mips.com>
7519
7520         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
7521         REV 2.
7522         * doc/invoke.texi (-mdspr2): Document new option.
7523         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
7524         New unspec for DSP REV 2.
7525         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
7526         these instructions are extended in DSP REV 2.
7527         (mips-dspr2.md): Include.
7528         * config/mips/mips.opt (mdspr2): New option.
7529         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
7530         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
7531         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
7532         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
7533         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
7534         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
7535         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
7536         and 2 builtins.
7537         (bdesc_map): Add one field of unsupported_target_flags.
7538         (bdesc_arrays):  Update entries to have extra fields.  Add
7539         dsp_32only_bdesc.
7540         (mips_init_builtins): Initialize new function types.
7541         Check unsupported_target_fileds to filter out builtins.
7542         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
7543         TARGET_DSPR2.
7544         (ASM_SPEC): Pass mdspr2 to the assembler.
7545         * config/mips/mips-dspr2.md: New file.
7546
7547 2007-03-09  Sa Liu  <saliu@de.ibm.com>
7548
7549         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
7550
7551 2007-03-09  Ian Lance Taylor  <iant@google.com>
7552
7553         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
7554         argument) like -Wstrict-overflow=2.
7555         * doc/invoke.texi (Warning Options): Update documentation.
7556
7557 2007-03-09  Dirk Mueller  <dmueller@suse.de>
7558
7559         PR c++/17946
7560         * doc/invoke.texi (-Wlogical-op): Document.
7561         * common.opt (-Wlogical-op): New.
7562         * c-common.h (warn_logical_operator): Declare.
7563         * c-common.c (warn_logical_operator): Define.
7564         * c-typeck.c (parser_build_binary_op): Call
7565         warn_logical_operator.
7566
7567 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7568
7569         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
7570         * final.c (final_scan_insn): Test for non-"" file name.
7571
7572 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
7573
7574         * doc/loop.texi: Document the Omega linear constraints solver.
7575         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
7576         omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
7577         omega-hash-table-size, omega-max-keys, and
7578         omega-eliminate-redundant-constraints.
7579         * tree-pass.h (pass_check_data_deps): Declared.
7580         * omega.c: New.
7581         * omega.h: New.
7582         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
7583         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
7584         pass_check_data_deps): New.
7585         * tree-data-ref.c (init_data_ref): Remove declaration.
7586         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
7587         (analyze_array): Renamed init_array_ref, move up initializations.
7588         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
7589         Removed arguments that are set to NULL.
7590         (analyze_indirect_ref): Correct indentation, correct call to
7591         init_pointer_ref.
7592         (object_analysis): Call init_array_ref instead of analyze_array.
7593         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
7594         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
7595         of DR_ACCESS_FNS_ADDR.
7596         (init_omega_eq_with_af, omega_extract_distance_vectors,
7597         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
7598         ddr_consistent_p): New.
7599         (compute_affine_dependence): Check consistency of ddrs when
7600         flag_check_data_deps is passed.
7601         (analyze_all_data_dependences): Uncomment.
7602         (tree_check_data_deps): New.
7603         * tree-data-ref.h: Include omega.h.
7604         (DR_ACCESS_FNS_ADDR): Removed.
7605         (data_dependence_relation): Add inner_loop.
7606         (DDR_INNER_LOOP): New.
7607         * common.opt (fcheck-data-deps): New.
7608         * tree-flow.h (tree_check_data_deps): Declare.
7609         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
7610         (OBJS-common): Depend on omega.o.
7611         (omega.o): Define.
7612         * passes.c (pass_check_data_deps): Scheduled.
7613         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
7614         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
7615         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
7616         PARAM_VECT_MAX_VERSION_CHECKS,
7617         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
7618
7619 2007-03-09  Richard Guenther  <rguenther@suse.de>
7620
7621         PR tree-optimization/30904
7622         PR middle-end/31058
7623         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
7624         the same way as *_DIV_EXPR.
7625
7626 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7627
7628         * recog.c (decode_asm_operands): No mixed declarations and code.
7629
7630 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
7631
7632         * rtl.def (ASM_INPUT): Add location.
7633         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
7634         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
7635         (decode_asm_operands): Add loc operand.
7636         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
7637         * stmt.c (expand_asm): Rename to...
7638         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
7639         gen_rtx_ASM_INPUT_loc.
7640         (expand_asm_expr): Adjust.
7641         * recog.c (decode_asm_operands): Add loc operand.
7642         (check_asm_operands, extract_insn): Adjust.
7643         * reload1.c (maybe_fix_stack_asms): Likewise.
7644         * final.c (asm_insn_count): Likewise.
7645         (final_scan_insn): Output # line before and after asm.
7646
7647 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
7648
7649         * tree-ssa-structalias.c (variable_info): Remove
7650         finished_solution.
7651         (new_var_info): Ditto.
7652         (shared_bitmap_info_t): New structure.
7653         (shared_bitmap_table): New variable.
7654         (shared_bitmap_hash): New function.
7655         (shared_bitmap_eq): Ditto
7656         (shared_bitmap_lookup): Ditto.
7657         (shared_bitmap_add): Ditto.
7658         (merge_smts_into): Change to take bitmap directly.
7659         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
7660         (init_alias_vars): Init shared bitmap hashtable.
7661         (delete_points_to_sets): Delete shared bitmap hashtable.
7662         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
7663         is_aliased removal as a change that was still necessary was
7664         deleted.
7665
7666 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
7667
7668         * config/i386/i386.h (override_options): Conditionally disable
7669         x86_sahf for 64bit targets only.
7670
7671 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7672
7673         PR C/31072
7674         * c-decl.c (merge_decls): Don't call make_var_volatile.
7675         * varasm.c (make_var_volatile): Remove.
7676         * output.h (make_var_volatile): Remove.
7677
7678 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
7679
7680         PR tree-optimization/31085
7681         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
7682
7683 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7684
7685         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
7686         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
7687         ATTR_CONST_NOTHROW_LIST.
7688
7689         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
7690         FIX_TRUNC_EXPR.
7691
7692 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
7693
7694         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
7695
7696 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
7697
7698         PR 31013
7699         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
7700         is declared.
7701         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
7702         passed, use shared libgcc.
7703
7704 2007-03-08  Roger Sayle  <roger@eyesopen.com>
7705
7706         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
7707         instead of calling build2 with a GIMPLE_MODIFY_STMT.
7708         (honor_protect_cleanup_actions, lower_try_finally_switch):
7709         Likewise.
7710         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
7711         ifc_temp_var): Likewise.
7712         * tree-inline.c (setup_one_parameter): Likewise.
7713         * tree-mudflap.c (mf_decl_cache_locals,
7714         mf_build_check_statement_for): Likewise.
7715         * tree-nested.c (init_tmp_var, save_tmp_var,
7716         finalize_nesting_tree_1): Likewise.
7717         * tree-outof-ssa.c (insert_copy_on_edge,
7718         insert_backedge_copies): Likewise.
7719         * tree-profile.c (tree_gen_edge_profiler,
7720         tree_gen_ic_profiler): Likewise.
7721         * tree-scalar-evolution.c (scev_const_prop): Likewise.
7722         * tree-sra.c (sra_build_assignment): Likewise.
7723         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
7724         * tree-ssa-math-opts.c (insert_reciprocals,
7725         execute_cse_sincos_1): Likewise.
7726         * tree-tailcall.c (adjust_accumulator_values,
7727         adjust_return_value): Likewise.
7728         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
7729         * tree-vect-transform.c (vect_create_data_ref_ptr,
7730         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
7731         vect_create_epilog_for_reduction, vectorizable_reduction,
7732         vectorizable_call, vectorizable_conversion,
7733         vectorizable_assignment, vectorizable_operation,
7734         vectorizable_type_demotion, vect_gen_widened_results_half,
7735         vect_permute_store_chain, vectorizable_store,
7736         vect_setup_realignment, vect_permute_load_chain,
7737         vectorizable_load, vectorizable_condition,
7738         vect_create_cond_for_align_checks): Likewise.
7739         * tree-vrp.c (build_assert_expr_for): Likewise.
7740
7741 2007-03-08  Ian Lance Taylor  <iant@google.com>
7742
7743         * tree-vrp.c: Include "intl.h".
7744         (usable_range_p): New static function.
7745         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
7746         overflowed values, juts set *strict_overflow_p.
7747         (compare_values): Only return -2 if one of the operands is not a
7748         constant.
7749         (compare_ranges): Call usable_range_p.
7750         (compare_range_with_value): Likewise.
7751         (vrp_evaluate_conditional_warnv): Rename from
7752         vrp_evaluate_conditional.  Make static.  Change all callers.
7753         (vrp_evaluate_conditional): New function.
7754         (simplify_div_or_mod_using_ranges): Issue warning about reliance
7755         on signed overflow.
7756         (simplify_abs_using_ranges): Likewise.
7757         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
7758         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
7759         within_stmt parameter.
7760         * tree-ssa-propagate.c (fold_predicate_in): Update call to
7761         vrp_evaluate_conditional.
7762         * tree-ssa-threadedge.c
7763         (record_temporary_equivalences_from_stmts_at_dest): Change
7764         simplify parameter to take a second tree parameter.
7765         (simplify_control_stmt_condition): Likewise.
7766         (thread_across_edge): Likewise.
7767         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
7768         (thread_across_edge): Likewise.
7769         * Makefile.in (tree-vrp.o): Depend upon intl.h.
7770
7771 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
7772
7773         * config/i386/i386.h (TARGET_SAHF): New define.
7774         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
7775         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
7776         (x86_sahf): New global variable.
7777         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
7778         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
7779         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
7780         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
7781         for 64-bit.
7782         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
7783         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
7784         when expanding fcomi/sahf based tests.
7785         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
7786         expanding sahf based alternative. Emit sahf based sequence when
7787         optimizing for code size.
7788         * config/i386/i386.md (x86_sahf_1): Do not disable for
7789         TARGET_64BIT, enable for TARGET_SAHF.
7790
7791 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
7792
7793         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
7794         spurious whitespace from error message.
7795
7796 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
7797
7798         PR c++/30852
7799         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
7800
7801 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
7802
7803         * c-decl.c (grokdeclarator): Disable warnings for anonymous
7804         bitfields.
7805         * tree-sra.c (instantiate_element): Propagate disabled warnings
7806         from the element itself to the created variable.
7807
7808 2007-03-07  Richard Henderson  <rth@redhat.com>
7809
7810         PR target/30848
7811         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
7812         silently fix up the stack in the case of a missing register.
7813
7814 2007-03-07  Paul Brook  <paul@codesourcery.com>
7815
7816         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
7817
7818 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
7819
7820         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
7821         New.
7822         (phase1_vrs): Use them.
7823         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
7824         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
7825         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
7826         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
7827         __gnu_Unwind_Restore_WMMXC if required.
7828         (_Unwind_VRS_Pop): Implement iWMMXt support.
7829         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
7830         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
7831         gnu_Unwind_Save_WMMXC): Define.
7832
7833 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
7834
7835         * config/vxworks.h (vxworks_override_options): Declare.
7836         (VXWORKS_OVERRIDE_OPTIONS): Use it.
7837         * config/vxworks.c: Include target.h and toplev.h.
7838         (vxworks_override_options): New function.
7839         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
7840
7841 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
7842
7843         * config/s390/s390.c (override_options): Don't emit an error when
7844         -mstack-size is used without providing -mstack-guard.
7845         (s390_emit_prologue): Choose stack_guard value automatically if not
7846         provided via command line.
7847         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
7848
7849 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
7850
7851         * config/i386/i386.c (output_set_got): Add a GOT initialization
7852         sequence for VxWorks PIC.
7853         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
7854         around labels as well as symbols.  Use gotoff_operand instead
7855         of local_symbolic_operand.
7856         (legitimize_pic_address): Use gotoff_operand instead of
7857         local_symbolic_operand.  Use @GOT accesses for labels as
7858         well as symbols.
7859         (ix86_output_addr_diff_elt): Use PC-relative rather than
7860         GP-relative offsets for VxWorks PIC.
7861         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
7862         no_new_pseudos.  Check whether the returned register is op0.
7863         * config/i386/i386.md (tablejump): Use PC-relative rather than
7864         GP-relative offsets for VxWorks PIC.
7865         * config/i386/predicates.md (gotoff_operand): New predicate.
7866
7867 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7868
7869         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
7870         before defining.
7871         * config/vxworks-dummy.h: New file.
7872         * config/i386/i386.h: Include it.
7873
7874 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
7875
7876         * dwarf2out.c (is_inlined_entry_point): New
7877         (add_high_low_attributes): Emit DW_AT_entry_pc along with
7878         DW_AT_ranges if the first subblock is the entry point.
7879
7880 2007-03-06  David Daney  <ddaney@avtrex.com>
7881
7882         * doc/install.texi (mips-*-*): Change recommended binutils
7883         version.
7884
7885 2007-03-06  Anatoly Sokolov <aesok@post.ru>
7886
7887         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
7888         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162
7889         devices.
7890         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
7891         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
7892
7893 2007-03-06  Jan Hubicka  <jh@suse.cz>
7894
7895         * errors.h (warning, error, fatal, internal_error): Mark as cold.
7896         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
7897         are hot.
7898         (probably_cold_bb_p): Cold functions are cold.
7899         (probably_never_executed_bb_p): Cold functions are cold.
7900         (tree_bb_level_predictions): Predict calls to cold functions as not
7901         taken.
7902         (compute_function_frequency): Check hot/cold attributes.
7903         * function.h (function_frequency): Update comments.
7904         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
7905         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
7906         (c_common_att): Add cold and hot.
7907
7908         * doc/extend.texi (hot,cold attributes): Document.
7909
7910 2007-03-06  Andrew Haley  <aph@redhat.com>
7911
7912         * function.c (expand_function_end): Move blockage to just after we
7913         emit the label for the naked return from the function.
7914
7915 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
7916
7917         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
7918         before redefining.
7919
7920 2007-03-06  Jan Hubicka  <jh@suse.cz>
7921
7922         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
7923         loaded for constant large models.  Non-large 64bit PIC can do.
7924         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
7925         * cmodel.h: Add LARGE PIC.
7926         * i386.md (UNSPEC_PLTOFF): New.
7927         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
7928         needed.
7929         (*call_1_rex64): Disable for large models.
7930         (*call_1_rex64_large): New.
7931         (*call_value_1_rex64): Disable for large models.
7932         (*call_value_1_rex64_large): New.
7933         (set_rip_rex4): New.
7934         (set_got_offset_rex64): New.
7935         * predicates.md (constant_call_address_operand): For large model
7936         constant calls are not possible.
7937         * i386-protos.h (construct_plt_address): Declare.
7938         * i386.c (override_options): Accept large models.
7939         (ix86_expand_prologue): Expand large PIC GOT pointer load.
7940         (legitimate_constant_p): Add new UNSPECs.
7941         (legitimate_pic_operand_p): Likewise.
7942         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
7943         (legitimize_pic_address): Do easy RIP relative way for TLS only for
7944         non-large model.
7945         (output_pic_addr_const): Add PLTOFF.
7946         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
7947         (ix86_expand_move): Legitimize pic address when in PIC mode.
7948         (construct_plt_address): New function.
7949         (ix86_expand_call): Offload the address to register and use GOT pointer
7950         for large model.
7951         * invoke.texi (mcmodel=large): Update documentation.
7952
7953 2007-03-06  Richard Henderson  <rth@redhat.com>
7954
7955         * config/i386/i386.c (x86_use_leave, x86_push_memory,
7956         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
7957         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
7958         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
7959         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
7960         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
7961         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix,
7962         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
7963         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
7964         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
7965         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7966         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
7967         x86_sse_partial_reg_dependency, x86_sse_split_regs,
7968         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
7969         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
7970         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
7971         x86_schedule, x86_use_bt, x86_pad_returns,
7972         x86_use_xchgb): Merge into ...
7973         (ix86_tune_features): ... here.  New array.
7974         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
7975         x86_bswap): Merge into ...
7976         (ix86_arch_features): ... here.  New array.
7977         (x86_3dnow_a): Remove.
7978         (x86_accumulate_outgoing_args): Make static.
7979         (x86_arch_always_fancy_math_387): Make static.
7980         (ix86_tune_mask, ix86_arch_mask): Move ...
7981         (override_options): ... to local variables here.  Apply the
7982         appropriate mask to each element of ix86_arch_features and
7983         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
7984         as were done in the old macros.
7985         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
7986         * config/i386/i386.h (x86_use_leave, x86_push_memory,
7987         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
7988         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
7989         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
7990         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
7991         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
7992         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
7993         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
7994         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
7995         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
7996         x86_partial_reg_dependency, x86_memory_mismatch_stall,
7997         x86_accumulate_outgoing_args, x86_prologue_using_move,
7998         x86_epilogue_using_move, x86_decompose_lea,
7999         x86_arch_always_fancy_math_387, x86_shift1,
8000         x86_sse_partial_reg_dependency, x86_sse_split_regs,
8001         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
8002         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
8003         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
8004         x86_use_incdec, x86_pad_returns, x86_bswap,
8005         x86_partial_flag_reg_stall): Remove.
8006         (enum ix86_tune_indices): New.
8007         (ix86_tune_features): New.
8008         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
8009         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
8010         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
8011         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
8012         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
8013         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
8014         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
8015         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
8016         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
8017         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
8018         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
8019         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
8020         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
8021         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
8022         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
8023         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
8024         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
8025         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
8026         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
8027         TARGET_EXT_80387_CONSTANTS): Use it.
8028         (enum ix86_arch_indices): New.
8029         (ix86_arch_features): New.
8030         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
8031         TARGET_BSWAP): Use it.
8032         (ix86_tune_mask, ix86_arch_mask): Remove.
8033
8034 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
8035
8036         PR bootstrap/31020
8037         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
8038         Define using $${sysroot_headers_suffix}.
8039         * configure: Regenerate.
8040         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
8041         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
8042         defined.
8043         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
8044         * gcc.c (print_sysroot_headers_suffix): New.
8045         (option_map): Include --print-sysroot-headers-suffix.
8046         (display_help): Mention -print-sysroot-headers-suffix.
8047         (process_command): Handle -print-sysroot-headers-suffix.
8048         (do_spec_1): Append multilib directory to include-fixed path if
8049         sysroot suffixes in use.
8050         (main): Handle -print-sysroot-headers-suffix.
8051         * Makefile.in (start.encap): Don't depend on xlimits.h
8052         (xlimits.h): Remove.
8053         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
8054         limits.h for each multilib in fixinc_list.
8055         (fixinc_list, s-fixinc_list): New.
8056         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
8057         generate them for each multilib in fixinc_list.
8058         (stmp-fixproto): Use include-fixed.  Run fixproto for each
8059         multilib in fixinc_list.
8060         (mostlyclean): Don't remove xlimits.h.
8061         (clean): Remove include-fixed.
8062         (real-install-headers-tar, real-install-headers-cpio,
8063         real-install-headers-cp): Don't copy include, only include-fixed.
8064         (install-mkheaders): Depend on fixinc_list.  Don't depend on
8065         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
8066         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
8067         SYSTEM_HEADER_DIR setting in mkheaders.conf.
8068
8069 2007-03-06  Jan Hubicka  <jh@suse.cz>
8070
8071         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
8072         NANs easilly.
8073
8074 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8075
8076         * configure.ac: Allow tm_file to contain build-directory files.
8077         * configure: Regenerate.
8078         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
8079         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
8080         * config/m68k/print-sysroot-suffix.sh: New file.
8081
8082 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8083
8084         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
8085         of pic_offset_table_rtx if reload_completed.
8086         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
8087         PIC_OFFSET_TABLE_REGNUM.
8088         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
8089         return true.
8090         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
8091         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
8092
8093 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8094
8095         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
8096         functions that call eh_return.
8097
8098 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8099
8100         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
8101         functions that need a constant pool.
8102
8103 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8104
8105         PR target/28181
8106         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
8107         (m68k_preferred_reload_class): Likewise.
8108         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
8109         (SECONDARY_RELOAD_CLASS): Define.
8110         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
8111         (LIMIT_RELOAD_CLASS): Delete.
8112         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
8113         registers from storing bytes.
8114         (m68k_secondary_reload_class): New function.
8115         (m68k_preferred_reload_class): Likewise.
8116
8117 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8118
8119         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
8120         leaf functions.
8121         (m68k_expand_prologue): Likewise.
8122
8123 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8124
8125         * config/m68k/m68k-protos.h (output_sibcall): Declare.
8126         (mips_expand_epilogue): Add a bool parameter.
8127         (m68k_legitimize_sibcall_address): Declare.
8128         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
8129         (m68k_expand_epilogue): Add a parameter to select between sibling
8130         and normal epilogues.  Only generate a return for the latter.
8131         (m68k_ok_for_sibcall_p): New function.
8132         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
8133         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
8134         (sibcall_value, *sibcall_value): Likewise.
8135         (*call, *call_value): Require !SIBLING_CALL_P.
8136         (epilogue): Update call to m68k_expand_epilogue.
8137         (sibcall_epilogue): New pattern.
8138         * config/m68k/predicates.md (const_call_operand): Say that this
8139         predicate applies to sibling calls too.
8140         (sibcall_operand): New predicate.
8141
8142 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8143
8144         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
8145         alternatives as movsi_cf.
8146         (movsf_cf_hard): Add commentary.
8147
8148 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
8149             Richard Sandiford  <richard@codesourcery.com>
8150
8151         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
8152         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
8153         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
8154         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
8155         as being live on exit from an interrupt function.
8156         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
8157         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
8158         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
8159         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
8160         (m68k_interrupt_function_p): Globalize.
8161         (m68k_compute_frame_layout): Remove reverse mask code.
8162         (m68k_emit_movem, m68k_set_frame_related): New functions.
8163         (m68k_output_function_prologue): Delete in favor of...
8164         (m68k_expand_prologue): ...this new function.
8165         (m68k_output_function_epilogue): Delete in favor of...
8166         (m68k_expand_epilogue): ...this new function.
8167         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
8168         functions.
8169         (print_operand): Handle %?.
8170         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
8171         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
8172         (prologue, epilogue): New patterns.
8173         (return): Turn into a define_expand.
8174         (*return): New pattern, derived from old "return" pattern.  Use rte
8175         rather than rts for interrupt functions.  Only use rtd if the pop
8176         count is nonzero.
8177         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
8178         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
8179         (link, *link, unlink, *unlink, load_got): Likewise.
8180
8181 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
8182
8183         PR target/23482
8184         PR target/17114
8185         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
8186         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
8187         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
8188         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
8189         and m68k_matches_u_p.
8190         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
8191         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
8192         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
8193         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
8194         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
8195         (REG_STRICT_P): New macro.
8196         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
8197         PCREL_GENERAL_OPERAND_OK.
8198         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
8199         m68k_legitimate_base_reg_p.
8200         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
8201         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
8202         (PIC_CASE_VECTOR_ADDRESS): Update comment.
8203         * config/m68k/m68k.c (m68k_address): New structure.
8204         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
8205         (m68k_decompose_index, m68k_legitimate_constant_address_p)
8206         (m68k_jump_table_ref_p, m68k_decompose_address)
8207         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
8208         (m68k_matches_u_p): New functions.
8209         (print_operand_address): Rewrite to use m68k_decompose_index.
8210
8211 2007-03-05  David Taylor  <dtaylor@emc.com>
8212
8213         * gcc.c: Correct copyright date in --version output.
8214
8215 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8216
8217         * pa.md: In unamed move patterns, disparge copies between general
8218         and floating point registers using '?' modifier.  Don't include 'f'
8219         constraint for register preferences in DImode, SImode, HImode and
8220         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
8221         Remove constraints for copies between general and floating registers
8222         in soft-float DFmode pattern.
8223         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
8224         floating register.
8225         (movsf): Likewise.
8226
8227 2007-03-05  Mike Stump  <mrs@apple.com>
8228
8229         * c-common.c (targetcm): Add.
8230         * c-opts.c (c_common_handle_option): Handle language specific
8231         target options.
8232         * opts.c (handle_option): Verify language for target options, if
8233         any are given.
8234         * opth-gen.awk: Add CL_LANG_ALL.
8235         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
8236         (TARGETCM_INITIALIZER): Add.
8237         * target.h (struct gcc_targetcm): Add.
8238         (targetcm): Add.
8239         * targhooks.c (default_handle_c_option): Add.
8240         * targhooks.h (default_handle_c_option): Add.
8241         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
8242
8243         * config/darwin.opt (iframework): Add.
8244         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
8245         * config/darwin-c.c (handle_c_option): Add.
8246         (TARGET_HANDLE_C_OPTION): Add.
8247         (targetcm): Add.
8248         * doc/invoke.texi (Darwin Options): Add -iframework.
8249
8250 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8251
8252         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
8253         conversion.
8254
8255 2007-03-05  Ian Lance Taylor  <iant@google.com>
8256
8257         * c.opt (fgnu89-inline): New option.
8258         * c-opts.c (c_common_post_options): Set default value for
8259         flag_gnu89_inline.
8260         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
8261         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
8262         inline functions.
8263         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
8264         (grokdeclarator, start_function): Likewise.
8265         * c-cppbuiltin.c (c_cpp_builtins): Define either
8266         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
8267         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
8268         (C Dialect Options): Document -fgnu89-inline.
8269         * doc/extend.texi (Function Attributes): Explain what the
8270         gnu_inline attribute does.
8271         * doc/cpp.texi (Common Predefined Macros): Document
8272         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
8273
8274 2007-03-05  Ian Lance Taylor  <iant@google.com>
8275
8276         PR tree-optimization/31034
8277         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
8278         half-range if the other side is an overflow infinity.
8279
8280 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
8281
8282         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
8283         (bfin*-linux-uclibc*): New configuration.
8284         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
8285         defining.
8286         * config/bfin/linux.h: New file.
8287         * config/bfin/libgcc-bfin.ver: New file.
8288         * config/bfin/t-bfin-uclinux: New file.
8289         * config/bfin/t-bfin-linux: New file.
8290         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
8291         (TARGET_OS_CPP_BUILTINS): New macro.
8292
8293 2007-03-05  Richard Guenther  <rguenther@suse.de>
8294
8295         * fold-const.c (fold_binary): Remove duplicate folding
8296         of comparison of non-null ADDR_EXPR against null.
8297
8298 2007-03-05  Richard Guenther  <rguenther@suse.de>
8299             Dorit Nuzman  <dorit@il.ibm.com>
8300
8301         PR tree-optimization/26420
8302         * tree-vectorizer.c (vectorize_loops): Bail out early if there
8303         are no loops in the function.  Only print the number of
8304         vectorized loops if it is greater than zero or we are supposed
8305         to print information about unvectorized loops.
8306
8307 2007-03-05  Revital Eres  <eres@il.ibm.com>
8308
8309         * gcc.dg/var-expand1.c: New test.
8310         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
8311         when an accumulator is expanded.
8312
8313 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8314
8315         PR other/30465
8316         * c-common.c (convert_and_check): Don't give warnings for
8317         conversion if 'expr' already overflowed.
8318
8319 2007-03-04  Roger Sayle  <roger@eyesopen.com>
8320
8321         PR middle-end/30744
8322         * fold-const.c (fold_comparison): Enforce type consistency when
8323         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
8324
8325 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
8326
8327         * tree-ssa-address.c (create_mem_ref): Do not put an expression
8328         containing a cast to the base of TARGET_MEM_REF.
8329
8330 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
8331
8332         * tree.c (tree_contains_struct_check_failed): Remove spurious
8333         whitespace from error message.
8334
8335 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
8336
8337         PR target/30406
8338         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
8339         instead of precision.
8340
8341 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
8342             Nathan Sidwell  <nathan@codesourcery.com>
8343
8344         * emit-rtl.c (find_auto_inc): New.
8345         (try_split): recreate REG_INC notes,
8346         Use regular for loops rather than whiles.
8347
8348 2007-03-03  Andreas Schwab  <schwab@suse.de>
8349
8350         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
8351         * configure: Regenerate.
8352
8353 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8354
8355         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
8356         flag_rounding_math, not flag_unsafe_math_optimizations.
8357
8358         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
8359         fold_build2.
8360         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
8361         alpha_fold_vector_minmax): Likewise.
8362         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
8363         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
8364
8365 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8366
8367         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
8368         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
8369         if the lhs has side-effects.
8370         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
8371
8372 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8373
8374         * config/i386/i386.h (TUNEMASK): Remove define.
8375         (ARCHMASK): Remove define.
8376         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
8377          Use ix86_arch_mask variable instead of ARCHMASK.
8378         * config/i386/i386.c (override_options): Ditto.
8379         (standard_80387_constant_p): Ditto.
8380
8381 2007-03-02  Ian Lance Taylor  <iant@google.com>
8382
8383         Used signed infinities in VRP.
8384         * tree-vrp.c (uses_overflow_infinity): New static function.
8385         (supports_overflow_infinity): New static function.
8386         (make_overflow_infinity): New static function.
8387         (negative_overflow_infinity): New static function.
8388         (positive_overflow_infinity): New static function.
8389         (is_negative_overflow_infinity): New static function.
8390         (is_positive_overflow_infinity): New static function.
8391         (is_overflow_infinity): New static function.
8392         (overflow_infinity_range_p): New static function.
8393         (compare_values_warnv): New function split out of compare_values.
8394         (compare_value): Call it.
8395         (set_value_range_to_nonnegative): Add overflow_infinity
8396         parameter.  Change caller.
8397         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
8398         Change callers.
8399         (vrp_expr_computes_nonzero): Likewise.
8400         (compare_ranges, compare_range_with_value): Likewise.
8401         (compare_name_with_value, compare_names): Likewise.
8402         (vrp_evaluate_conditional): Likewise.
8403         (set_value_range): Handle infinity
8404         (vrp_operand_equal_p, operand_less_p): Likewise.
8405         (extract_range_from_assert): Likewise.
8406         (vrp_int_const_binop): Likewise.
8407         (extract_range_from_binary_expr): Likewise.
8408         (extract_range_from_unary_expr): Likewise.
8409         (extract_range_from_comparison): Likewise.
8410         (extract_range_from_expr): Likewise.
8411         (dump_value_range): Likewise.
8412         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
8413         (test_for_singularity): Likewise.
8414         (vrp_int_const_binop): Remove inline qualifier.
8415         (adjust_range_with_scev): Add comment.
8416         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
8417
8418 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
8419
8420         * tree-ssa-structalias.c (could_have_pointers): Tidy.
8421         (get_constraint_for): Likewise.
8422         (do_structure_copy): Likewise.
8423         (find_func_aliases): Fix references to MODIFY_EXPR.
8424         (intra_create_variable_infos): Tidy.
8425         * tree-ssa-operands.c (add_virtual_operand): Add argument
8426         IS_CALL_SITE.
8427         When adding members of alias sets, if IS_CALL_SITE is true and
8428         the symbol is not call-clobbered, skip it.
8429         Adjust all callers.
8430
8431 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
8432
8433         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
8434         entry by means of emit_insn_at_entry.
8435
8436 2007-03-02  Richard Henderson  <rth@redhat.com>
8437
8438         * expr.h (promoted_input_arg): Remove decl.
8439         * function.c (promoted_input_arg): Merge into ...
8440         * combine.c (setup_incoming_promotions): ... only caller.
8441         Rearrange to avoid double loop.
8442
8443 2007-03-02  Ben Elliston  <bje@au.ibm.com>
8444             Peter Bergner  <bergner@vnet.ibm.com>
8445             Janis Johnson  <janis187@us.ibm.com>
8446
8447         * config/rs6000/dfp.md: New file.
8448         * config/rs6000/rs6000.md: Include dfp.md.
8449         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
8450         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
8451         and TDmode decimal float modes in FP registers.
8452         (num_insns_constant): Likewise.
8453         (rs6000_legitimate_offset_address_p): Likewise.
8454         (rs6000_legitimize_address): Likewise.
8455         (rs6000_legitimize_reload_address): Likewise.
8456         (rs6000_legitimate_address): Likewise.
8457         (rs6000_emit_move): Likewise.
8458         (function_arg_boundary): Likewise.
8459         (function_arg_advance): Likewise.
8460         (rs6000_darwin64_record_arg_recurse): Likewise.
8461         (function_arg): Likewise.
8462         (rs6000_gimplify_va_arg): Likewise.
8463         (rs6000_split_multireg_move): Likewise.
8464         (rs6000_output_function_epilogue): Likewise.
8465         (rs6000_output_function_epilogue): Likewise.
8466         (rs6000_register_move_cost): Likewise.
8467         (rs6000_function_value): Likewise.
8468         (rs6000_libcall_value): Likewise.
8469
8470 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
8471
8472         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
8473
8474 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
8475
8476         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
8477         Use $MULTIDIR to choose between the kernel and RTP headers,
8478         and use $WIND_BASE and $WIND_USR to locate them.
8479
8480 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8481
8482         * config/i386/i386.c (override_options): Put initialization of
8483         ix86_tune_mask and ix86_arch_mask to the correct place.
8484
8485 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
8486             Michael Meissner  <michael.meissner@amd.com>
8487
8488         PR target/31019
8489         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
8490         (ARCHMASK): Define.
8491         (TARGET_CMOVE): Use ARCHMASK.
8492         (TARGET_CMPXCHG): Ditto.
8493         (TARGET_CMPXCHG8B): Ditto.
8494         (TARGET_XADD): Ditto.
8495         (TARGET_BSWAP): Ditto.
8496         * config/i386/i386.c (ix86_tune_mask): New global variable.
8497         (ix86_arch_mask): Ditto.
8498         (override_options): Initialize ix86_tune_mask and
8499         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
8500         target_flags.
8501
8502 2007-03-02  Ben Elliston  <bje@au.ibm.com>
8503
8504         PR 30992
8505         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
8506
8507 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
8508
8509         * target.h (init_dwarf_reg_sizes_extra): New target hook.
8510         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
8511         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
8512         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
8513         hook.
8514         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
8515         rs6000_init_dwarf_reg_sizes_extra): New.
8516         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
8517         SPE register high parts.
8518
8519 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
8520
8521         * Makefile.in: Add install-pdf target as
8522         copied from automake v1.10 rules.
8523         * configure.ac: Add install-pdf to target list.
8524         * configure: Regenerate.
8525
8526 2007-03-01  Paul Brook  <paul@codesourcery.com>
8527
8528         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
8529         modes to LDRD for DImode.
8530         (output_move_double): Fixup out of range ldrd/strd.
8531         (vfp_secondary_reload_class): Rename...
8532         (coproc_secondary_reload_class): ... to this.  Add wb argument.
8533         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
8534         coproc_secondary_reload_class for CLASS_IWMMXT.
8535         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
8536         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
8537
8538 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
8539
8540         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
8541         factor by the estimated number of iterations.
8542         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
8543         prefetch latency.
8544
8545         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
8546         decode_caches_intel, detect_caches_intel): New functions.
8547         (host_detect_local_cpu): Use detect_caches_amd and
8548         detect_caches_intel.
8549
8550 2007-03-01  Richard Henderson  <rth@redhat.com>
8551
8552         * expr.c (emit_move_complex_push): Export.
8553         (emit_move_complex_parts): Split out from ...
8554         (emit_move_complex): ... here.
8555         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
8556         * config/i386/i386.md (movcdi): New.
8557
8558 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
8559
8560         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
8561         size of mode1 to check for tieable modes in MMX case.
8562
8563 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
8564
8565         * Makefile.in (rtlanal.o): Depend on tree.h.
8566         * rtl.h (offset_within_section_p, split_const): Declare.
8567         * rtlanal.c: Include tree.h.
8568         (offset_within_block_p): New function, taken from
8569         mips_offset_within_object_p.
8570         (split_const): New function, taken from mips_split_const.
8571         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
8572         Declare.
8573         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
8574         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
8575         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
8576         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
8577         (m68k_illegitimate_symbolic_constant_p): New function.
8578         * config/m68k/m68k.md (movsi): Remove misleading predicates.
8579         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
8580         symbolic constant that might be outside the symbol's section,
8581         move the symbol first and then add the offset.
8582         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
8583         Override.
8584         * config/mips/mips.c (mips_split_const): Delete.
8585         (mips_offset_within_object_p): Delete.
8586         (mips_symbolic_constant_p): Use offset_within_section_p and
8587         split_const instead of mips_offset_within_object_p and
8588         mips_split_const.
8589         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
8590         (mips_legitimize_const_move, print_operand_reloc)
8591         (mips_dangerous_for_la25_p): Use split_const instead of
8592         mips_split_const.
8593
8594 2007-02-28  Eric Christopher  <echristo@apple.com>
8595
8596         * Makefile.in (install-include-dir): Don't rm -rf include.
8597
8598 2007-02-28  Richard Guenther  <rguenther@suse.de>
8599
8600         PR middle-end/30364
8601         * fold-const.c (fold_binary): Do not associate expressions
8602         with more than one variable for integer types that do not wrap.
8603
8604 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
8605
8606         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
8607         Delete, and replace with...
8608         (fold_builtin_call_array): This.  Update callers to use it.
8609         * fold-const.c (fold_build_call_list): Delete, and replace with...
8610         (fold_build_call_array): This.
8611         (fold_build_call_list_initializer): Delete, and replace with...
8612         (fold_build_call_array_initializer): This.
8613         * tree.h: Update declarations to reflect above changes.
8614
8615         * c-typeck.c (build_function_call): Store converted arguments
8616         in a stack-allocated array instead of building a list.
8617         (convert_arguments): Store arguments in the array passed in as an
8618         argument, and return the actual number of arguments.
8619         * c-format.c: (check_function_format): Pass arguments in an
8620         array instead of a list.
8621         * c-common.c (check_function_nonnull): Likewise.
8622         (check_function_sentinel): Likewise.
8623         (check_function_arguments): Likewise.
8624         * c-common.h: Update declarations to reflect above changes.
8625
8626 2007-02-28  Jan Hubicka  <jh@suse.cz>
8627
8628         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
8629         PRED_NEGATIVE_RETURN): Update outcomes.
8630
8631 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
8632
8633         * calls.c (emit_library_call_value_1): Handle partial registers
8634         correctly when building up CALL_INSN_FUNCTION_USAGE.
8635
8636 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8637
8638         * pa/predicates.md (move_src_operand): Allow zero for mode.
8639         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
8640         move pattern.
8641
8642 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
8643
8644         PR target/30970
8645         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
8646         *movv2df_internal): Enable pattern only for valid operand
8647         combinations.
8648         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
8649         tie only 128bit modes. For MMX registers, tie only 64bit modes.
8650
8651 2007-02-27  Mike Stump  <mrs@apple.com>
8652
8653         * config/darwin-crt3.c: Avoid compilation when compiling for a
8654         kext multilib.
8655
8656 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
8657
8658         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
8659         FIXED_INCLUDE_DIR.
8660         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
8661         for fixed headers and limits.h.
8662         (install-include-dir, install-headers-tar, install-headers-cpio,
8663         install-headers-cp, real-install-headers-tar,
8664         real-install-headers-cpio, real-install-headers-cp): Handle
8665         include-fixed as well as include.
8666         (install-mkheaders): Don't install files that go only in include
8667         not include-fixed.
8668         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
8669         from GCC_INCLUDE_DIR.
8670         * gcc.c (process_command): Remove special -BstageN/ handling.
8671         (do_spec_1): Add include-fixed directories.
8672
8673 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8674
8675         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
8676         _smulsi3_highpart.
8677         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
8678         New functions.
8679         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
8680         patterns.
8681
8682 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
8683
8684         * c-common.c (get_priority): Add check for
8685         SUPPORTS_INIT_PRIORITY.
8686
8687 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8688
8689         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
8690
8691         * config/bfin/bfin.c: Include "cfglayout.h".
8692         (MAX_LSETUP_DISTANCE): New macro.
8693         (struct loop_info): New members incoming, incoming_src and
8694         incoming_dest.  Delete member predecessor.
8695         (length_for_loop): New function.
8696         (bfin_optimize_loop): Handle more different loop structures.
8697         (bfin_discover_loop): Rework detection of predecessor blocks by
8698         examining incoming edges.
8699         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
8700         bfin_reorg_loops.
8701         (bfin_reorder_loops): New function.
8702         (bfin_reorg_loops): Use these three new functions.
8703
8704         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
8705         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
8706         (CONSTRAINT_LEN): Add entry for 'q'.
8707         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
8708         Add 'q' constraints.
8709         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
8710         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
8711
8712         * config/bfin/bfin.md (add_with_carry): New pattern.
8713         (s_or_u, su_optab, su_modifier): New code macros/attrs.
8714         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
8715         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
8716         support unsigned multiplies too.  Removed incorrect commutativity from
8717         operand 1 constraint where appropriate.
8718         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
8719         patterns.
8720         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
8721         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
8722         New patterns.
8723         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
8724         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
8725         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
8726         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
8727         usmulhisi_hh_huh): New patterns.
8728
8729         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
8730         lshifthi3): Fix output template to use half reg for operand 2.
8731
8732         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
8733         instead of R2.
8734
8735         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
8736
8737 2007-02-27  Andreas Schwab  <schwab@suse.de>
8738
8739         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
8740
8741 2007-02-27  Jan Hubicka  <jh@suse.cz>
8742
8743         * predict.c (last_basic_block_p): Remove.
8744         (tree_estimate_probability): Update return heuristic for commonized
8745         return blocks.
8746
8747 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
8748
8749         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
8750
8751 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
8752
8753         * doc/include/gcc-common.texi (versionsubtitle): New macro.
8754         * doc/cpp.texi: Standardize title page.
8755         * doc/cppinternals.texi: Likewise.
8756         * doc/gcc.texi: Standardize title page, remove version number
8757         from copyright page.
8758         * doc/gccint.texi: Likewise.
8759         * doc/install.texi: Standardize title page, add table of
8760         contents.
8761
8762 2007-02-26  Jan Hubicka  <jh@suse.cz>
8763
8764         * predict.def: Set outcomes according to more recent results.
8765         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
8766         Remove dead predictors.
8767         * predict.c (return_prediction): Fix pasto.
8768
8769 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
8770
8771         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
8772         change; avoid a memory leak when returning early.
8773
8774 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
8775
8776         * c-decl.c (static_ctors): Move to c-common.c.
8777         (static_dtors): Likewise.
8778         (finish_function): Use c_record_cdtor_fn.
8779         (build_cdtor): Move to c-common.c.
8780         (c_write_global_declarations): Use c_build_cdtor_fns.
8781         * c-common.h (static_ctors): Declare.
8782         (static_dtors): Likewise.
8783         (c_record_cdtor_fn): Likewise.
8784         (c_build_cdtor_fns): Likewise.
8785         * c-common.c (static_ctors): New variable.
8786         (static_dtors): Likewise.
8787         (c_record_cdtor_fn): New function.
8788         (build_cdtor): Move from c-decl.c
8789         (c_build_cdtor_fns): New function.
8790
8791         * output.h (assemble_addr_to_section): Declare.
8792         (get_cdtor_priority_section): Likewise.
8793         * varasm.c (assemble_addr_to_section): New function.
8794         (get_cdtor_priority_section): Likewise.
8795         (default_named_section_asm_out_destructor): Use them.
8796         (destor_dtor_section_asm_out_destructor): Likewise.
8797         (default_named_section_asm_out_constructor): Likewise.
8798         (default_ctor_section_asm_out_constructor): Likewise.
8799         * config.gcc (*-*-vxworks*): Include vxworks.o.
8800         * config/t-vxworks (vxworks.o): New target.
8801         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
8802         (TARGET_ASM_CONSTRUCTOR): Define.
8803         (TARGET_ASM_DESTRUCTOR): Likewise.
8804         (vxworks_asm_out_constructor): Declare.
8805         (vxworks_asm_out_destructor): Likewise.
8806
8807         * c-common.c (get_priority): Check that we have not just an
8808         INTEGER_CST, but an integer constant with integeral type.
8809
8810 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
8811
8812         PR tree-optimization/30938
8813         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
8814         use &dt[nargs-1] instead of &dt[nargs] in the call to
8815         vect_is_simple_use().
8816
8817 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
8818
8819         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
8820         from register elimination as PRE_MODIFY / POST_MODIFY increments.
8821         Do not attempt to handle MEM inside auto-inc expressions.
8822         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
8823         of a register modified by an auto-inc expression.  However, do handle
8824         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
8825         (elimination_effects): Prohibit elimination of a register modified
8826         by an auto-inc expression.  Disable register elimination rules whose
8827         target register is modified by an auto-inc expression with variable
8828         increment.
8829
8830 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
8831
8832         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
8833         off-by-one error.
8834         (array_at_struct_end_p): New function.
8835         (idx_infer_loop_bounds): Use it.
8836         (estimate_numbers_of_iterations_loop): Export.
8837         * predict.c (predict_loops): Use estimated_loop_iterations_int.
8838         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
8839         (tree_estimate_probability): Call record_loop_exits.
8840         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
8841         (estimated_loop_iterations, estimated_loop_iterations_int,
8842         estimated_loop_iterations_tree): New functions.
8843         (analyze_siv_subscript_cst_affine,
8844         compute_overlap_steps_for_affine_1_2,
8845         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
8846         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
8847         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
8848         (PRED_LOOP_ITERATIONS_GUESSED): New.
8849         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
8850         * cfgloop.h (estimate_numbers_of_iterations_loop,
8851         estimated_loop_iterations_int): Declare.
8852
8853 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
8854
8855         * doc/extend.texi: Document optional priority argument to
8856         constructors and destructors.
8857         * tree.c (init_priority_for_decl): Adjust GTY markers.
8858         (init_ttree): Use priority-info hash functions for
8859         init_priority_for_decl.
8860         (tree_map_eq): Rename to ...
8861         (tree_map_base_eq): ... this.
8862         (tree_map_marked_p): Rename to ...
8863         (tree_map_base_marked_p): ... this.
8864         (tree_map_base_hash): New function.
8865         (decl_init_priority_lookup): Rework.
8866         (decl_fini_priority_lookup): New function.
8867         (decl_priority_info): New function.
8868         (decl_init_priority_insert): Use it.
8869         (decl_fini_priority_insert): Likewise.
8870         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
8871         hierarchy.
8872         (decl_restrict_base_insert): Likewise.
8873         (decl_debug_expr_insert): Likewise.
8874         (decl_value_expr_lookup): Likewise.
8875         (decl_value_expr_insert): Likewise.
8876         * tree.h (priority_type): New type.
8877         (decl_init_priority_lookup): Use priority_type.
8878         (decl_fini_priority_lookup): New function.
8879         (decl_init_priority_insert): Use priority_type.
8880         (decl_fini_priority_insert): New function.
8881         (DECL_HAS_INIT_PRIORITY): Tweak comments.
8882         (DECL_INIT_PRIORITY): Likewise.
8883         (SET_DECL_INIT_PRIORITY): Add comment.
8884         (DECL_FINI_PRIORITY): New macro.
8885         (SET_DECL_FINI_PRIORITY): Likewise.
8886         (DEFAULT_INIT_PRIORITY): Document.
8887         (MAX_INIT_PRIORITY): Likewise.
8888         (MAX_RESERVED_INIT_PRIORITY): Likewise.
8889         (tree_map_base): New type.
8890         (tree_map_base_eq): New function.
8891         (tree_map_base_hash): Likewise.
8892         (tree_map_base_marked_p): Likewise.
8893         (tree_map): Inherit from tree_map_base.
8894         (tree_map_eq): Make it a macro.
8895         (tree_map_marked_p): Likewise.
8896         (tree_int_map): Inherit from tree_map_base.
8897         (tree_int_map_eq): Make it a macro.
8898         (tree_int_map_hash): Likewise.
8899         (tree_int_map_marked_p): Likewise.
8900         (tree_priority_map): New type.
8901         (tree_priority_map_eq): New macro.
8902         (tree_priority_map_hash): Likewise.
8903         (tree_priority_map_marked_p): Likewise.
8904         * varasm.c (emults_decl): Adjust for refactoring of tree_map
8905         hierarchy.
8906         (emutls_common_1): Likewise.
8907         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
8908         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
8909         of tree_map hierarchy.
8910         * tree-cfg.c (move_stmt_r): Likewise.
8911         (new_label_mapper): Likewise.
8912         * c-tree.h (c_expand_body): Move to ...
8913         * c-common.h (c_expand_body): ... here.
8914         * c-decl.c (c_expand_body): Move to ...
8915         * c-common.c (c_expand_body): ... here.
8916         (c_common_attribute_table): Allow 1 argument for the constructor
8917         and destructor attributes.
8918         (get_priority): New function.
8919         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
8920         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
8921
8922 2007-02-24  Jan Hubicka  <jh@suse.cz>
8923
8924         PR middle-end/30509
8925         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
8926
8927 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
8928             Jan Hubicka  <jh@suse.cz>
8929
8930         PR target/30778
8931         * i386.c (counter_mode): New function.
8932         (expand_set_or_movmem_via_loop): Use it.
8933         (expand_movmem_epilogue): Likewise; fix pasto.
8934         (ix86_expand_movmem): Do emit guard even for constant counts.
8935         (ix86_expand_setmem): Likewise.
8936
8937 2007-02-25  Nick Clifton  <nickc@redhat.com>
8938
8939         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
8940         (JUMP_TABLES_IN_TEXT_SECTION): Define.
8941
8942 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
8943
8944         PR target/30770
8945         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
8946         count argument with 0x10, not with 0x16.
8947         (expand_setmem_epilogue): Ditto.
8948
8949 2007-02-24  Mike Stump  <mrs@apple.com>
8950
8951         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
8952         symbols.
8953
8954 2007-02-24  Richard Guenther  <rguenther@suse.de>
8955
8956         PR middle-end/30951
8957         * fold-const.c (fold_binary): Fold x +- CST op x for
8958         EQ_EXPR and NE_EXPR.
8959
8960 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
8961
8962         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
8963
8964 2007-02-24  Jan Hubicka  <jh@suse.cz>
8965
8966         * cgraphunit.c (decide_is_function_needed): Honor
8967         -fkeep-inline-functions.
8968
8969 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8970
8971         * builtins.c (fold_builtin_modf): New.
8972         (fold_builtin_2): Use it.
8973
8974 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
8975
8976         * loop-iv.c (implies_p): Detect additional cases where A implies B.
8977         (determine_max_iter): Take additional LOOP arg; all callers changed.
8978         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
8979         one using simplifications.
8980         (simplify_using_initial_values): Return if the expression becomes
8981         invalid due to altered regs.
8982
8983 2007-02-23  DJ Delorie  <dj@redhat.com>
8984
8985         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
8986
8987 2007-02-23  Mike Stump  <mrs@apple.com>
8988
8989         * tlink.c (scan_linker_output): Parse linker messages from
8990         darwin9's linker better.
8991
8992 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
8993
8994         PR debug/29614
8995         * varpool.c (varpool_assemble_pending_decls):  Set
8996         varpool_last_needed_node to null.
8997
8998 2007-02-23  DJ Delorie  <dj@redhat.com>
8999
9000         * config/i386/i386.c (ix86_data_alignment): Don't specify an
9001         alignment bigger than the object file can handle.
9002
9003 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
9004
9005         PR target/30825
9006         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
9007         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
9008         (*movsf_1): Penalize MMX moves.
9009
9010 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
9011
9012         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
9013         2^32-1 or more times unless flag_unsafe_loop_optimizations.
9014
9015         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
9016
9017 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9018
9019         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
9020         (fold_builtin_1): Use them.
9021         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
9022         BUILT_IN_SIGNIFICAND.
9023
9024 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
9025
9026         * config/i386/i386.c (bdesc_1arg): Initialize
9027         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
9028         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
9029         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
9030         and IX86_BUILTIN_MOVSLDUP.
9031
9032 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
9033
9034         PR rtl-optimization/30841
9035         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
9036
9037 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9038
9039         * builtins.c (fold_builtin_frexp): New.
9040         (fold_builtin_2): Use it.
9041
9042 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
9043
9044         * doc/invoke.texi (Spec Files): Document getenv spec function.
9045
9046         * gcc.c (getenv_spec_function): New function.
9047         (static_spec_functions): Add it.
9048         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
9049         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
9050         header files.
9051
9052 2007-02-22  Michael Matz  <matz@suse.de
9053
9054         PR c++/29433
9055         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
9056         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
9057
9058 2007-02-22  Ian Lance Taylor  <iant@google.com>
9059
9060         PR debug/30898
9061         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
9062         (mem_loc_descriptor): Call it.
9063
9064 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
9065             Ira Rosen  <irar@il.ibm.com>
9066
9067         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
9068
9069 2007-02-22  Ira Rosen  <irar@il.ibm.com>
9070
9071         PR tree-optimization/30843
9072         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
9073         stores only after all the group is vectorized.
9074
9075 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
9076
9077         PR tree-optimization/30858
9078         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
9079         in the reduction cycle have a single use in the loop.
9080         * tree-vectorizer.h (relevant): Add documentation.
9081
9082 2007-02-20  Mike Stump  <mrs@apple.com>
9083
9084         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
9085         * configure: Regenerate.
9086
9087 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
9088
9089         Change the defaults of some parameters and options.
9090         * config/spu/spu-protos.h (spu_optimization_options): Declare.
9091         * config/spu/spu.c (spu_optimization_options): Add.
9092         (spu_override_options): Change params in spu_optimization_options.
9093         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
9094
9095         Register 127 is only 16 byte aligned when used as a frame pointer.
9096         * config/spu/spu-protos.h (spu_init_expanders): Declare.
9097         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
9098         HARD_FRAME_POINTER_REGNUM.
9099         (spu_legitimate_address):  Use regno_aligned_for_reload.
9100         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
9101         aligned when frame_pointer_needed is true.
9102         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
9103         to 8 bits.
9104         * config/spu/spu.h (INIT_EXPANDERS): Define.
9105
9106         Make sure shift and rotate instructions have valid immediate operands.
9107         * config/spu/predicates.md (spu_shift_operand): Remove.
9108         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
9109         * config/spu/constraints.md (W, O): Extend range.
9110         * config/spu/spu.md (umask, nmask): Define.
9111         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
9112         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
9113         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
9114         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
9115         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
9116         (lshr<mode>3_reg):  Fix rtl description.
9117
9118         Make sure mulhisi immediate operands are valid.
9119         * config/spu/predicates.md (imm_K_operand): Add.
9120         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
9121
9122         Generate constants using fsmbi and andi.
9123         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
9124         (print_operand, spu_split_immediate, classify_immediate,
9125         fsmbi_const_p): Handle IC_FSMBI2.
9126
9127         Correctly handle a CONST_VECTOR containing symbols.
9128         * config/spu/spu.c (print_operand): Handle HIGH correctly.
9129         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
9130         (immediate_load_p): Allow symbols that use 2 instructions to create.
9131         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
9132         with symbols when flag_pic is set.
9133         (const_vector_immediate_p): New.
9134         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
9135         accept a CONST_VECTOR with symbols.
9136         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
9137         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
9138         correctly.
9139         * config/spu/spu.md (high, low): Delete.
9140         (low_<mode>): Define.
9141
9142         Remove INTRmode and INTR_REGNUM, which didn't work.
9143         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
9144         of INTR_REGNUM.
9145         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
9146         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
9147         peephole2 pattern): Don't use INTR or 131.
9148         (movintrcc): Delete.
9149         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
9150         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
9151         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
9152         (UNSPEC_SET_INTR): Add.
9153         * config/spu/spu-modes.def (INTR): Remove.
9154
9155         More accurate warnings about run-time relocations.
9156         * config/spu/spu.c (reloc_diagnostic): Test in_section.
9157
9158         Correctly warn about immediate arguments to specific intrinsics.
9159         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
9160         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
9161         the instruction predicate.
9162
9163         Fix tree check errors with latest update.
9164         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
9165         CALL_EXPR_ARG.
9166         (spu_expand_builtin): Use CALL_EXPR_FN.
9167
9168         Add missing specific intrinsics.
9169         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
9170         si_bislede.
9171         * config/spu/spu_internals.h: Ditto.
9172
9173         Fix incorrect operand modifiers.
9174         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
9175         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
9176
9177         Optimize one case of zero_extend of a vec_select.
9178         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
9179
9180         Accept any immediate for hbr.
9181         * config/spu/spu.md (hbr):  Change s constraints to i.
9182
9183 2007-02-21  Paul Brook  <paul@codesourcery.com>
9184
9185         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
9186         condexec_count when skipping USE and CLOBBER.
9187
9188 2007-02-21  Nick Clifton  <nickc@redhat.com>
9189
9190         * common.opt (Warray-bounds): Add Warning attribute.
9191         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
9192         Likewise.
9193         (fsized-zeroes): Add Optimization attribute.
9194         (fsplit-wide-types, ftree-scev-cprop): Likewise.
9195         * c.opt (Wc++0x-compat): Add Warning attribute.
9196
9197 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
9198
9199         PR middle-end/30761
9200         * reload1.c (eliminate_regs_in_insn): In the single_set special
9201         case, attempt to re-recognize the insn before falling back to
9202         having reload fix it up.
9203
9204 2007-02-20  Eric Christopher  <echristo@gmail.com>
9205
9206         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
9207         Rewrite accordingly.
9208         (frv_read_iacc_argument): Ditto.
9209         (frv_expand_set_builtin): Take a call instead of arglist, update for
9210         above changes.
9211         (frv_expand_unop_builtin): Ditto.
9212         (frv_expand_binop_builtin): Ditto.
9213         (frv_expand_cut_builtin): Ditto.
9214         (frv_expand_binopimm_builtin): Ditto.
9215         (frv_expand_voidbinop_builtin): Ditto.
9216         (frv_expand_int_void2arg): Ditto.
9217         (frv_expand_prefetches): Ditto.
9218         (frv_expand_voidtriop_builtin): Ditto.
9219         (frv_expand_voidaccop_builtin): Ditto.
9220         (frv_expand_load_builtin): Ditto.
9221         (frv_expand_store_builtin): Ditto.
9222         (frv_expand_mdpackh_builtin): Ditto.
9223         (frv_expand_mclracc_builtin): Ditto.
9224         (frv_expand_mrdacc_builtin): Ditto.
9225         (frv_expand_mwtacc_builtin): Ditto.
9226         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
9227         calls for above.
9228
9229 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
9230
9231         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
9232         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
9233         cmpb instruction.
9234         (HAVE_GAS_DFP): Check for assembler support of decimal floating
9235         point instructions.
9236         * configure: Regenerate.
9237         * config.in: Regenerate.
9238         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
9239         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
9240         masks to power6 and power6x and to POWERPC_MASKS.
9241         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
9242         _ARCH_PWR6.
9243         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
9244         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
9245         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
9246         Access PROTOTYPE as variable, not mask.
9247
9248 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
9249
9250         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
9251         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
9252         * combine.c (adjust_for_new_dest): Use it.
9253         * postreload.c (reload_combine): Likewise.
9254
9255 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
9256
9257         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
9258         notes on an insn with multiple sets, even if single_set returns
9259         non-NULL for that insn.
9260
9261 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9262
9263         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
9264         scalbn and scalbln.
9265
9266 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
9267
9268         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
9269         if user didn't pass it.
9270         * config/i386/darwin.h (CC1_SPEC): Likewise.
9271         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
9272         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
9273         -mmacosx-version-min.
9274
9275 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9276             Uros Bizjak  <ubizjak@gmail.com>
9277
9278         * optabs.h (enum optab_index): Add new OTI_scalb.
9279         (scalb_optab): Define corresponding macro.
9280         * optabs.c (init_optabs): Initialize scalb_optab.
9281         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
9282         patterns.
9283         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
9284         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
9285         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
9286         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
9287         flag_unsafe_math_optimizations is set.
9288
9289         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
9290         to implement scalbf, scalb and scalbl built-ins as inline x87
9291         intrinsics.
9292
9293 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9294             DJ Delorie <dj@redhat.com>
9295
9296         PR other/30824
9297         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
9298         (diagnostic_report_diagnostic): ... here, and turn them into real
9299         errors. If warnings are inhibited, no need to do anything.
9300
9301 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
9302
9303         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
9304         better code generation.
9305
9306 2007-02-20  Ben Elliston  <bje@au.ibm.com>
9307
9308         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
9309
9310 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
9311
9312         * config/alpha/alpha.c, config/alpha/alpha.md,
9313         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
9314         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
9315         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
9316         config/arm/lib1funcs.asm: Follow spelling conventions.
9317
9318         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
9319         config/fr30/fr30.md, config/i386/i386.h,
9320         config/iq2000/iq2000.h, config/iq2000/predicates.md,
9321         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
9322         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
9323         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
9324         config/rs6000/altivec.md, config/rs6000/rs6000.c,
9325         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
9326         config/sparc/sparc.c, config/sparc/sparc.h,
9327         config/sparc/sparc.md, config/spu/constraints.md,
9328         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
9329         conventions.
9330
9331 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
9332
9333         PR target/29943
9334         * varasm.c (use_blocks_for_decl_p): Return false for decls with
9335         alias attribute.
9336
9337 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
9338
9339         * doc/invoke.texi (-ftree-lrs): Remove.
9340
9341 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
9342
9343         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
9344         NULL.
9345
9346 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
9347
9348         * config/ia64/ia64.c (ia64_expand_builtin): Use the
9349         new CALL_EXPR_FN macro for retrieving the function
9350         declaration of the input expression.
9351
9352 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
9353
9354         * c.opt (Waddress): New.
9355         * common.opt (Walways-true): Delete.
9356         (Wstring-literal-comparison): Delete.
9357         * doc/invoke.texi (Warning Options): Delete -Walways-true and
9358         -Wstring-literal-comparison. Add -Waddress.
9359         (Waddress): New.
9360         (Walways-true): Delete.
9361         (Wstring-literal-comparison): Delete.
9362         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
9363         consistently instead of -Walways-true in example.
9364         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
9365         * c-typeck.c (parser_build_binary_op): Replace
9366         -Wstring-literal-comparison and -Walways-true with -Waddress.
9367         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
9368         with -Waddress.
9369
9370 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
9371
9372         * tree-cfg.c (dump_function_to_file): Be prepared for functions
9373         without DECL_STRUCT_FUNCTION initialized.
9374
9375 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
9376
9377         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
9378         due to calls to functions taking pointers as parameters.
9379
9380 2007-02-19  Richard Henderson  <rth@redhat.com>
9381
9382         PR debug/29558
9383         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
9384         in memory.
9385
9386 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
9387
9388         * config/s390/s390.c (s390_call_saved_register_used,
9389         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
9390         accessed to the new scheme.
9391
9392 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
9393
9394         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
9395         (cris_print_index, cris_print_operand, cris_print_operand_address)
9396         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
9397         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
9398         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
9399         GET_CODE () == xxx.
9400         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
9401         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
9402         GO_IF_LEGITIMATE_ADDRESS): Ditto.
9403         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
9404         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
9405         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
9406         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
9407         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
9408         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
9409         (uminsi3, call, call_value): Ditto.
9410         (define_split: indir_to_reg_split, unnamed): Ditto.
9411
9412 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
9413
9414         PR tree-optimization/30975
9415         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
9416         wrong assert.
9417
9418 2007-02-18  Eric Christopher  <echristo@gmail.com>
9419
9420         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
9421         Remove use of arglist.
9422         (mips_expand_builtin): Remove use of arglist, pass in expr.
9423         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
9424         (mips_expand_builtin_movtf): Ditto.
9425         (mips_expand_builtin_compare): Ditto.
9426
9427 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
9428
9429         * tree-sra.c (sra_build_assignment): Replace assertion
9430         checking with a comment explaining why it can't be done.
9431
9432 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
9433
9434         PR middle-end/30833
9435         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
9436         during CALL_EXPR representation conversion.
9437         * tree-ssa-propagate.c (set_rhs): Likewise.
9438
9439 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
9440
9441         * tree-sra.c (sra_build_assignment): Disable assertion checking
9442         for now.
9443
9444 2007-02-18  Roger Sayle  <roger@eyesopen.com>
9445
9446         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
9447         instead of calling build2 with a GIMPLE_MODIFY_STMT.
9448         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
9449         Likewise.
9450         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
9451         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
9452         gimplify_init_ctor_eval_range, gimple_push_cleanup,
9453         gimplify_omp_for, gimplify_omp_atomic_pipeline,
9454         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
9455         force_gimple_operand): Likewise.
9456         * ipa-cp.c (constant_val_insert): Likewise.
9457         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
9458         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
9459         perfect_nestify): Likewise.
9460         * langhooks.c (lhd_omp_assignment): Likewise.
9461         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
9462         lower_copyprivate_clauses, lower_send_clauses,
9463         lower_send_shared_vars, expand_parallel_call,
9464         expand_omp_for_generic, expand_omp_for_static_nochunk,
9465         expand_omp_for_static_chunk, expand_omp_sections,
9466         lower_omp_single_copy, lower_omp_for_lastprivate,
9467         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
9468         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
9469         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
9470         Likewise.
9471
9472 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
9473
9474         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
9475         config/sh/sh.md: Follow spelling conventions.
9476
9477         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
9478         config/frv/predicates.md: Follow spelling conventions.
9479
9480         * config/m68k/linux-unwind.h: Fix a comment typo.
9481         * target.h: Follow spelling conventions.
9482
9483 2007-02-18  Roger Sayle  <roger@eyesopen.com>
9484
9485         PR rtl-optimization/28173
9486         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
9487         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
9488         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
9489         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
9490         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
9491
9492 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9493
9494         * builtins.c (fold_builtin_load_exponent): New.
9495         (fold_builtin_2): Use it.
9496
9497 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
9498
9499         PR rtl-optimization/30773
9500         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
9501         if we fail to attach a REG_EQUIV note.
9502
9503 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
9504             Roger Sayle  <roger@eyesopen.com>
9505
9506         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
9507
9508 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
9509
9510         * calls.c (initialize_argument_information): Pass original EXP
9511         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
9512         code to split complex arguments here, as part of initializing the
9513         ARGS array.
9514         (expand_call): Remove code that builds a list of arguments and
9515         inserts implicit arguments into it.  Instead, just count how many
9516         implicit arguments there will be so we can determine the size of
9517         the ARGS array, and let initialize_argument_information do the work.
9518         (split_complex_values): Delete unused function.
9519
9520 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
9521
9522         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
9523
9524 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
9525
9526         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
9527         for arg pointer based indexed addressing.
9528
9529 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
9530
9531         * config/ia64/ia64.h, config/ia64/ia64.md,
9532         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
9533         spelling conventions.
9534
9535 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9536
9537         * config/m68k/m68k.c (split_di): New.
9538         * config/m68k/m68k-protos.h: Declare split_di.
9539         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
9540           Improve predicate handling and split constant shifts.
9541
9542 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9543
9544         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
9545         parameter for register bitfield operations, general predicates
9546         cleanup
9547
9548 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
9549
9550         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
9551         * config/m68k/linux-unwind.h: New file.
9552
9553 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
9554
9555         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
9556         config/i386/athlon.md, config/ia64/ia64.md,
9557         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
9558         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
9559         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
9560         tree-ssa-loop-niter.c, tree-vect-analyze.c,
9561         tree-vect-transform.c: Fix comment typos.
9562
9563 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
9564
9565         * sched-deps.c (find_insn_list): Remove.
9566         * sched-int.h: Remove the prototype for find_insn_list.
9567
9568 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
9569
9570         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
9571         to linker.
9572         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
9573         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
9574         darwin_rs6000_override_options.
9575         (C_COMMON_OVERRIDE_OPTIONS): Expect
9576         darwin_macosx_version_min to be non-NULL always.
9577         (TARGET_C99_FUNCTIONS): Likewise.
9578         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
9579         (DARWIN_MINVERSION_SPEC): New.
9580         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
9581         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
9582         to cc1*.
9583         (DARWIN_MINVERSION_SPEC): New.
9584         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
9585         value.
9586         * config/darwin-c.c (darwin_cpp_builtins): Expect
9587         darwin_macosx_version_min to be non-NULL always.
9588
9589         * config/rs6000/rs6000.c: Clean up trailing whitespace.
9590
9591 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
9592
9593         * config/i386/i386.h (x86_use_xchgb): New.
9594         (TARGET_USE_XCHGB): New macro.
9595         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
9596         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
9597         Split after reload into bswaphi for shifts of 8.
9598         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
9599         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
9600         or when optimizing for size.
9601
9602 2007-02-16  Richard Guenther  <rguenther@suse.de>
9603             Christian Bruel  <christian.bruel@st.com>
9604
9605         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
9606         DECLs but prefer SSA_NAMEs over DECLs.
9607
9608 2007-02-16  Richard Guenther  <rguenther@suse.de>
9609
9610         * tree-flow-inline.h (single_imm_use_p): Remove.
9611         (zero_imm_uses_p): Likewise.
9612         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
9613         instead of single_imm_use_p.
9614         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
9615         zero_imm_uses_p.
9616
9617 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
9618
9619         PR other/27843
9620         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
9621         nested double- and backquotes.
9622
9623 2007-02-15  Roger Sayle  <roger@eyesopen.com>
9624
9625         PR middle-end/30391
9626         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
9627         should be unreachable.
9628         (build2_stat): Allow construction of MODIFY_EXPR at any time.
9629         For the time being redirect GIMPLE_MODIFY_STMT to the new
9630         (renamed) build_gimple_modify_stmt_stat.
9631         (build2_gimple_stat): Rename to...
9632         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
9633         Always build a GIMPLE_MODIFY_STMT node.
9634         * tree.h (build2_gimple, build2_gimple_stat): Delete.
9635         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
9636         declarations.
9637
9638         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
9639         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
9640         * tree-complex.c (set_component_ssa_name, expand_complex_move,
9641         expand_complex_div_wide): Likewise.
9642         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
9643         * tree-ssa-loop-im.c (schedule_sm): Likewise.
9644         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
9645         * tree-ssa-loop-manip.c (create_iv): Likewise.
9646         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
9647         abs_replacement): Likewise.
9648         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
9649         realify_fake_stores): Likewise.
9650
9651         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
9652         node rather than a GIMPLE_MODIFY_STMT node.
9653         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
9654         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
9655         Likewise.
9656         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
9657         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
9658         GIMPLE_MODIFY_STMT.
9659
9660 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9661
9662         PR middle-end/30433
9663         * fold-const.c (fold_comparison): Add back the
9664         folding of constant complex comparisions.
9665
9666 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
9667
9668         PR middle-end/30729
9669         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
9670         effects unknown to this function, return early.
9671
9672 2007-02-15  Ian Lance Taylor  <iant@google.com>
9673
9674         * lower-subreg.c (move_eh_region_note): New static function.
9675         (resolve_simple_move): Call it.
9676         (decompose_multiword_subregs): Track blocks for which we resolve a
9677         simple move which is also a control flow insn.  Pass them to
9678         find_many_sub_basic_blocks.
9679         (pass_lower_subreg): Add TODO_verify_flow.
9680         (pass_lower_subreg2): Likewise.
9681
9682 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9683             Brooks Moses  <brooks.moses@codesourcery.com>
9684             Lee Millward  <lee.millward@codesourcery.com>
9685
9686         * tree.h (enum tree_code_class): Add tcc_vl_exp.
9687         (VL_EXP_CLASS_P): New.
9688         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
9689         TREE_CODE_LENGTH.
9690         (TREE_OPERAND_CHECK_CODE): Likewise.
9691         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
9692         (TREE_RTL_OPERAND_CHECK): Likewise.
9693         (tree_operand_check_failed): Make second parameter the whole tree
9694         instead of its code.  Fixed callers.
9695         (VL_EXP_CHECK): New.
9696         (TREE_OPERAND_LENGTH): New.
9697         (VL_EXP_OPERAND_LENGTH): New.
9698         (CALL_EXPR_FN): New.
9699         (CALL_EXPR_STATIC_CHAIN): New.
9700         (CALL_EXPR_ARGS): New.
9701         (CALL_EXPR_ARG): New.
9702         (call_expr_nargs): New.
9703         (CALL_EXPR_ARGP): New.
9704         (build_nt_call_list): Declare.
9705         (build_vl_exp_stat): Declare.
9706         (build_vl_exp): New.
9707         (build_call_list): Declare.
9708         (build_call_nary): Declare.
9709         (build_call_valist): Declare.
9710         (build_call_array): Declare.
9711         (call_expr_arg): Declare.
9712         (call_expr_argp): Declare.
9713         (call_expr_arglist): Declare.
9714         (fold_build_call_list): Declare.
9715         (fold_build_call_list_initializer): Declare.
9716         (fold_call_expr): Declare to replace fold_builtin.
9717         (fold_builtin_fputs): Update to agree with modified definition.
9718         (fold_builtin_strcpy): Likewise.
9719         (fold_builtin_strncpy): Likewise.
9720         (fold_builtin_memory_chk): Likewise.
9721         (fold_builtin_stxcpy_chk): Likewise.
9722         (fold_builtin_strncpy_chk): Likewise.
9723         (fold_builtin_next_arg): Likewise.
9724         (fold_build_call_expr): Declare.
9725         (fold_builtin_call_list): Declare.
9726         (fold_builtin_call_valist): Declare.
9727         (build_call_expr): Declare.
9728         (validate_arglist): Update to agree with modified definition.
9729         (tree_operand_length): New.
9730         (call_expr_arg_iterator): New.
9731         (init_call_expr_arg_iterator): New.
9732         (next_call_expr_arg): New.
9733         (first_call_expr_arg): New.
9734         (more_call_expr_args_p): New.
9735         (FOR_EACH_CALL_EXPR_ARG): New.
9736
9737         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
9738         and tcc_gimple_stmt.
9739         (tree_code_size): Update documentation.  Use sizeof (tree) rather
9740         than sizeof (char *).
9741         (tree_size): Likewise.  Add case for tcc_vl_exp.
9742         (tree_node_structure): Add case for tcc_vl_exp.
9743         (contains_placeholder_p): Likewise.
9744         (substitute_in_expr): Likewise.
9745         (substitute_placeholder_in_expr): Likewise.
9746         (stabilize_reference_1): Likewise.
9747         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
9748         to diagnose breakage of this interface for constructing CALL_EXPRs.
9749         (build_nt): Add similar assertion here.
9750         (build_nt_call_list): New.
9751         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
9752         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
9753         TREE_CODE_LENGTH.
9754         (get_callee_fndecl): Use new CALL_EXPR accessors.
9755         (tree_operand_check_failed): Change parameters to pass entire node
9756         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
9757         (process_call_operands): New.
9758         (build_vl_exp_stat): New.
9759         (build_call_list): New.
9760         (build_call_nary): New.
9761         (build_call_valist): New.
9762         (build_call_array): New.
9763         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9764         (call_expr_arglist): New.
9765
9766         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
9767         tcc_vl_exp instead of a fixed-size tcc_expression.
9768
9769         * doc/c-tree.texi (CALL_EXPR): Document new representation and
9770         accessors for CALL_EXPRs.
9771         (AGGR_INIT_EXPR): Likewise.
9772
9773 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9774             Brooks Moses  <brooks.moses@codesourcery.com>
9775             Lee Millward  <lee.millward@codesourcery.com>
9776
9777         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
9778         (expand_builtin_nonlocal_goto): Change parameter to be entire
9779         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
9780         (expand_builtin_prefetch): Likewise.
9781         (expand_builtin_classify_type): Likewise.
9782         (mathfn_built_in): Return NULL_TREE instead of 0.
9783         (expand_errno_check): Use new CALL_EXPR accessors.
9784         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
9785         Return NULL_RTX instead of 0.
9786         (expand_builtin_mathfn_2): Likewise.
9787         (expand_builtin_mathfn_3): Likewise.
9788         (expand_builtin_interclass_mathfn): Likewise.
9789         (expand_builtin_sincos): Likewise.
9790         (expand_builtin_cexpi): Likewise.
9791         (expand_builtin_int_roundingfn): Likewise.
9792         (expand_builtin_int_roundingfn_2): Likewise.
9793         (expand_builtin_pow): Likewise.
9794         (expand_builtin_powi): Likewise.
9795         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
9796         of arglist, fixing callers appropriately.  Use new CALL_EXPR
9797         accessors and constructors.  Return NULL_RTX instead of 0.
9798         (expand_builtin_strstr): Likewise.
9799         (expand_builtin_strchr): Likewise.
9800         (expand_builtin_strrchr): Likewise.
9801         (expand_builtin_strpbrk): Likewise.
9802         (expand_builtin_memcpy): Likewise.
9803         (expand_builtin_mempcpy): Likewise.
9804         (expand_builtin_mempcpy_args): New.
9805         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
9806         (expand_builtin_memmove_args): New.
9807         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
9808         (expand_movstr): Likewise.
9809         (expand_builtin_strcpy): Likewise.
9810         (expand_builtin_strcpy_args): New.
9811         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
9812         (expand_builtin_strncpy): Likewise.
9813         (expand_builtin_memset): Likewise.
9814         (expand_builtin_memset_args): New.
9815         (expand_builtin_bzero): Similarly to expand_builtin_memset.
9816         (expand_builtin_memcmp): Likewise.
9817         (expand_builtin_strcmp): Likewise.
9818         (expand_builtin_strncmp): Likewise.
9819         (expand_builtin_strcat): Likewise.
9820         (expand_builtin_strncat): Likewise.
9821         (expand_builtin_strspn): Likewise.
9822         (expand_builtin_strcspn): Likewise.
9823         (expand_builtin_args_info): Likewise.
9824         (expand_builtin_va_start): Likewise.
9825         (gimplify_va_arg_expr): Likewise.
9826         (expand_builtin_va_end): Likewise.
9827         (expand_builtin_va_copy): Likewise.
9828         (expand_builtin_frame_address): Likewise.
9829         (expand_builtin_alloca): Likewise.
9830         (expand_builtin_bswap): Likewise.
9831         (expand_builtin_unop): Likewise.
9832         (expand_builtin_fputs): Likewise.
9833         (expand_builtin_expect): Likewise.
9834         (expand_builtin_fabs): Likewise.
9835         (expand_builtin_copysign): Likewise.
9836         (expand_builtin_printf): Likewise.
9837         (expand_builtin_fprintf): Likewise.
9838         (expand_builtin_sprintf): Likewise.
9839         (expand_builtin_init_trampoline): Likewise.
9840         (expand_builtin_signbit): Likewise.
9841         (expand_builtin_fork_or_exec): Likewise.
9842         (expand_builtin_sync_operation): Likewise.
9843         (expand_builtin_compare_and_swap): Likewise.
9844         (expand_builtin_lock_test_and_set): Likewise.
9845         (expand_builtin_lock_release): Likewise.
9846         (expand_builtin): Likewise.
9847         (builtin_mathfn_code): Likewise.
9848
9849         (fold_builtin_constant_p): Pass call arguments individually instead
9850         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9851         accessors and constructors.  Return NULL_TREE instead of 0.
9852         (fold_builtin_expect): Likewise.
9853         (fold_builtin_classify_type): Likewise.
9854         (fold_builtin_strlen): Likewise.
9855         (fold_builtin_nan): Likewise.
9856         (integer_valued_real_p): Likewise.
9857         (fold_trunc_transparent_mathfn): Likewise.
9858         (fold_fixed_mathfn): Likewise.
9859         (fold_builtin_cabs): Likewise.
9860         (fold_builtin_sqrt): Likewise.
9861         (fold_builtin_cbrt): Likewise.
9862         (fold_builtin_cos): Likewise.
9863         (fold_builtin_cosh): Likewise.
9864         (fold_builtin_tan): Likewise.
9865         (fold_builtin_sincos): Likewise.
9866         (fold_builtin_cexp): Likewise.
9867         (fold_builtin_trunc): Likewise.
9868         (fold_builtin_floor): Likewise.
9869         (fold_builtin_ceil): Likewise.
9870         (fold_builtin_round): Likewise.
9871         (fold_builtin_int_roundingfn): Likewise.
9872         (fold_builtin_bitop): Likewise.
9873         (fold_builtin_bswap): Likewise.
9874         (fold_builtin_logarithm): Likewise.
9875         (fold_builtin_hypot): Likewise.
9876         (fold_builtin_pow): Likewise.
9877         (fold_builtin_powi): Likewise.
9878         (fold_builtin_exponent): Likewise.
9879         (fold_builtin_memset): Likewise.
9880         (fold_builtin_bzero): Likewise.
9881         (fold_builtin_memory_op): Likewise.
9882         (fold_builtin_bcopy): Deleted; call site changed to invoke
9883         fold_builtin_memory_op directly.
9884         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
9885         (fold_builtin_strncpy): Likewise.
9886         (fold_builtin_memcmp): Likewise.
9887         (fold_builtin_strcmp): Likewise.
9888         (fold_builtin_strncmp): Likewise.
9889         (fold_builtin_signbit): Likewise.
9890         (fold_builtin_copysign): Likewise.
9891         (fold_builtin_isascii): Likewise.
9892         (fold_builtin_toascii): Likewise.
9893         (fold_builtin_isdigit): Likewise.
9894         (fold_builtin_fabs): Likewise.
9895         (fold_builtin_abs): Likewise.
9896         (fold_builtin_fmin_fmax): Likewise.
9897         (fold_builtin_carg): Likewise.
9898         (fold_builtin_classify): Likewise.
9899         (fold_builtin_unordered_cmp): Likewise.
9900
9901         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
9902         New functions split out from fold_builtin_1.
9903         (fold_builtin_n): New.
9904         (fold_builtin_varargs): New.
9905         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
9906         instead.
9907         (fold_call_expr): New.
9908         (build_function_call_expr): Rewrite to use new helper function.
9909         (fold_builtin_call_list): New.
9910         (build_call_expr): New.
9911         (fold_builtin_call_valist): New.
9912         (rewrite_call_expr): New.
9913         (validate_arg): New.
9914         (validate_arglist): Change parameter to be entire CALL_EXPR instead
9915         of an arglist.  Change return type to bool.  Use new CALL_EXPR
9916         accessors.
9917
9918         (fold_builtin_strstr):  Pass call arguments individually instead
9919         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9920         accessors and constructors.  Return NULL_TREE instead of 0.
9921         (fold_builtin_strchr): Likewise.
9922         (fold_builtin_strrchr): Likewise.
9923         (fold_builtin_strpbrk): Likewise.
9924         (fold_builtin_strcat): Likewise.
9925         (fold_builtin_strncat): Likewise.
9926         (fold_builtin_strspn): Likewise.
9927         (fold_builtin_strcspn): Likewise.
9928         (fold_builtin_fputs): Likewise.
9929         (fold_builtin_next_arg): Likewise.
9930         (fold_builtin_sprintf): Likewise.
9931
9932         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
9933         NULL_RTX instead of 0.
9934         (expand_builtin_memory_chk): Likewise.
9935         (maybe_emit_chk_warning): Likewise.
9936         (maybe_emit_sprintf_chk_warning): Likewise.
9937
9938         (fold_builtin_object_size): Pass call arguments individually instead
9939         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
9940         accessors and constructors.  Return NULL_TREE instead of 0.
9941         (fold_builtin_memory_chk): Likewise.
9942         (fold_builtin_stxcpy_chk): Likewise.
9943         (fold_builtin_strncpy_chk): Likewise.
9944         (fold_builtin_strcat_chk): Likewise.
9945         (fold_builtin_strcat_chk): Likewise.
9946         (fold_builtin_strncat_chk): Likewise.
9947         (fold_builtin_sprintf_chk): Likewise.
9948         (fold_builtin_snprintf_chk): Likewise.
9949         (fold_builtin_printf): Likewise.
9950         (fold_builtin_vprintf): Likewise.
9951
9952         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
9953         constructors.
9954         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
9955         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9956         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
9957         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
9958         (fold_unary): Likewise.
9959         (fold_binary): Likewise.
9960         (fold_ternary): Remove CALL_EXPR case, since they are no longer
9961         ternary expressions.
9962         (fold): Add logic for tcc_vl_exp.
9963         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
9964         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9965         (fold_build3_stat): Add assertion to flag broken interface for
9966         constructing CALL_EXPRs.
9967         (fold_build_call_list): New.
9968         (fold_build_call_list_initializer): New.
9969         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
9970         constructors.
9971         (fold_strip_sign_ops): Likewise.
9972
9973 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
9974             Brooks Moses  <brooks.moses@codesourcery.com>
9975             Lee Millward  <lee.millward@codesourcery.com>
9976
9977         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
9978         accessors and dump arguments explicitly.
9979
9980         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
9981         TREE_CODE_LENGTH.
9982         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
9983         explicitly.
9984         (print_call_name): Use new CALL_EXPR accessors.
9985
9986         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
9987         CALL_EXPR arguments explicitly instead of as a list.  Use
9988         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
9989
9990         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
9991         (vrp_visit_stmt): Likewise.
9992
9993         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
9994         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
9995         TREE_CODE_LENGTH.
9996         (force_move_till_expr): Likewise.
9997
9998         * targhooks.c (default_external_stack_protect_fail): Use
9999         build_call_expr instead of build_function_call_expr.
10000         (default_hidden_stack_protect_fail): Likewise.
10001
10002         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
10003         build the call.
10004
10005         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
10006         and walk arguments explicitly.
10007
10008         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
10009         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10010         (expand_simple_operations): Likewise.
10011         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
10012
10013         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
10014         of TREE_CODE_LENGTH.
10015         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
10016
10017         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
10018         instead of TREE_CODE_LENGTH.
10019
10020         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
10021         (tree_ic_transform): Likewise.
10022         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
10023         parameter instead of arglist.  Fix callers.
10024         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
10025         (tree_stringops_transform): Likewise.
10026         (tree_indirect_call_to_profile): Likewise.
10027         (tree_stringops_values_to_profile): Likewise.
10028
10029         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
10030         (eliminate_tail_call): Likewise.
10031
10032         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
10033
10034         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
10035         Use TREE_OPERAND_LENGTH and generalize to handle any number of
10036         operands.
10037         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
10038
10039         * omp-low.c (build_omp_barrier): Use build_call_expr.
10040         (lower_rec_input_clauses): Likewise.
10041         (lower_reduction_clauses): Likewise.
10042         (expand_parallel_call): Likewise.
10043         (maybe_catch_exception): Likewise.
10044         (expand_omp_for_generic): Likewise.
10045         (expand_omp_for_static_nochunk): Likewise.
10046         (expand_omp_sections): Likewise.
10047         (lower_omp_single_simple): Likewise.
10048         (lower_omp_single_copy): Likewise.
10049         (lower_omp_master): Likewise.
10050         (lower_omp_ordered): Likewise.
10051         (lower_omp_critical): Likewise.
10052
10053         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
10054         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
10055
10056         * tree-gimple.c (is_gimple_call_addr): Fix doc.
10057         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
10058         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
10059
10060         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
10061         and generalize to handle any number of operands.
10062         (chrec_contains_undetermined): Likewise.
10063         (tree_contains_chrecs): Likewise.
10064         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
10065
10066         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
10067
10068         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
10069         fold_call_expr instead of fold_builtin.
10070         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
10071         match declarations there.
10072         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
10073         updates.
10074
10075         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
10076         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10077
10078         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
10079         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
10080
10081         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
10082         accessors.
10083
10084         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
10085         (execute_cse_sincos): Use new CALL_EXPR accessors.
10086
10087         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
10088
10089         * gimple-low.c (lower_function_body): Use build_call_expr.
10090         (lower_builtin_setjmp): Likewise.
10091
10092         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
10093         (set_storage_via_libcall): Likewise.
10094         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
10095         instead of TREE_CODE_LENGTH.
10096         (expand_expr_real_1): Use new CALL_EXPR accessors.
10097
10098         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
10099         generalize to handle any number of operands.
10100         (TB_parent_eq): Likewise.
10101
10102         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
10103         (strip_builtin_expect): Likewise.
10104
10105         * function.c (gimplify_parameters): Use build_call_expr.
10106
10107         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
10108         instead of TREE_CODE_LENGTH.
10109
10110         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
10111         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
10112
10113         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
10114         iterators.
10115
10116         * gimplify.c (build_stack_save_restore): Use build_call_expr.
10117         (gimplify_decl_expr): Likewise.
10118         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
10119         Use new CALL_EXPR iterators.
10120         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
10121         (gimplify_modify_expr_to_memset): Likewise.
10122         (gimplify_variable_sized_compare): Likewise.
10123         (gimplify_omp_atomic_fetch_op): Likewise.
10124         (gimplify_omp_atomic_pipeline): Likewise.
10125         (gimplify_omp_atomic_mutex): Likewise.
10126         (gimplify_function_tree): Likewise.
10127
10128         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
10129         (call_expr_flags): Likewise.
10130         (expand_call): Likewise.
10131
10132         * except.c (expand_builtin_eh_return_data_regno): Pass entire
10133         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
10134         accessors.
10135
10136         * coverage.c (create_coverage): Use build_call_expr.
10137
10138         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
10139         (temp_call_expr_obstack): New.
10140         (pool_copy_list): Delete.
10141         (temp_copy_call_expr): New.
10142         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
10143         CALL_EXPR accessors.  Get rid of special goo for copying argument
10144         lists and use temp_copy_call_expr instead.
10145         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
10146         CALL_EXPR accessors.
10147         (create_expression_by_pieces): Likewise.  Use build_call_array
10148         to construct the result instead of fold_build3.
10149         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
10150         dealing with argument lists.
10151         (init_pre): Remove references to expression_node_pool and
10152         list_node_pool.  Init temp_call_expr_obstack instead.
10153         (fini_pre): Remove references to expression_node_pool and
10154         list_node_pool.
10155
10156         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
10157         and walk arguments explicitly instead of as a list.
10158
10159         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
10160         (mx_register_decls): Likewise.
10161         (mudflap_register_call): Likewise.
10162         (mudflap_finish_file): Likewise.
10163
10164         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
10165         (ipa_callsite_compute_param): Likewise.
10166
10167         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
10168         accessors and constructor.
10169
10170         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
10171         accessors and constructor.
10172         (convert_tramp_reference): Likewise.
10173         (convert_call_expr): Likewise.
10174         (finalize_nesting_tree_1): Likewise.
10175
10176         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
10177         accessors.
10178
10179         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
10180
10181         * tree-inline.c (initialize_inlined_parameters): Pass entire
10182         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
10183         accessors.
10184         (estimate_num_insns_1): Use new CALL_EXPR accessors.
10185         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
10186
10187         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
10188         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10189         (vectorizable_reduction): Likewise.
10190         (vectorizable_call): Use new CALL_EXPR iterators.
10191         (vectorizable_conversion): Use build_call_expr.
10192         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
10193         (vect_gen_widened_results_half): Use build_call_expr.
10194         (vect_setup_realignment): Likewise.
10195         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
10196
10197         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
10198         (pass_through_call): Likewise.
10199         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
10200         fold_builtin.
10201
10202         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
10203         (tree_gen_pow2_profiler): Likewise.
10204         (tree_gen_one_value_profiler): Likewise.
10205         (tree_gen_ic_func_profiler): Likewise.
10206         (tree_gen_average_profiler): Likewise.
10207         (tree_gen_ior_profiler): Likewise.
10208
10209         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
10210         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
10211         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
10212
10213         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
10214         of TREE_CODE_LENGTH.
10215
10216         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
10217         of TREE_CODE_LENGTH.
10218
10219         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
10220         constructor.
10221         (convert_to_integer): Likewise.
10222
10223         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
10224         accessors.
10225
10226 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10227             Brooks Moses  <brooks.moses@codesourcery.com>
10228             Lee Millward  <lee.millward@codesourcery.com>
10229
10230         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
10231         accessors.
10232         * config/frv/frv.c (frv_expand_builtin): Likewise.
10233         * config/s390/s390.c (s390_expand_builtin): Likewise.
10234
10235         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
10236         (sparc_expand_builtin): Use new CALL_EXPR accessors.
10237
10238         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
10239         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
10240         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
10241         (ix86_expand_store_builtin): Likewise.
10242         (ix86_expand_unop_builtin): Likewise.
10243         (ix86_expand_unop1_builtin): Likewise.
10244         (ix86_expand_sse_compare): Likewise.
10245         (ix86_expand_sse_comi): Likewise.
10246         (ix86_expand_vec_init_builtin): Likewise.
10247         (ix86_expand_vec_ext_builtin): Likewise.
10248         (ix86_expand_vec_set_builtin): Likewise.
10249         (ix86_expand_builtin): Use new CALL_EXPR accessors.
10250
10251         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
10252         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
10253
10254         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
10255         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
10256         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
10257
10258         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
10259         build_call_expr.
10260         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
10261         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
10262         arglist.  Use new CALL_EXPR accessors.  Fix callers.
10263         (altivec_expand_abs_builtin): Likewise.
10264         (rs6000_expand_binop_builtin): Likewise.
10265         (altivec_expand_predicate_builtin): Likewise.
10266         (altivec_expand_lv_builtin): Likewise.
10267         (spe_expand_stv_builtin): Likewise.
10268         (altivec_expand_stv_builtin): Likewise.
10269         (rs6000_expand_ternop_builtin): Likewise.
10270         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
10271         (altivec_expand_st_builtin): Likewise.
10272         (altivec_expand_dst_builtin): Likewise.
10273         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
10274         arglist.  Use new CALL_EXPR accessors.  Fix callers.
10275         (altivec_expand_vec_set_builtin): Likewise.
10276         (altivec_expand_vec_ext_builtin): Likewise.
10277         (altivec_expand_builtin): Use new CALL_EXPR accessors.
10278         (spe_expand_builtin): Likewise.
10279         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
10280         arglist.  Use new CALL_EXPR accessors.  Fix callers.
10281         (spe_expand_evsel_builtin): Likewise.
10282         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
10283         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
10284
10285         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
10286         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
10287         (arm_expand_unop_builtin): Likewise.
10288         (arm_expand_builtin): Use new CALL_EXPR accessors.
10289
10290         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
10291         accessors.
10292
10293         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
10294         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
10295         (bfin_expand_unop_builtin): Likewise.
10296         (bfin_expand_builtin): Use new CALL_EXPR accessors.
10297
10298 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
10299             Brooks Moses  <brooks.moses@codesourcery.com>
10300             Lee Millward  <lee.millward@codesourcery.com>
10301
10302         * c-semantics.c (build_stmt): Add internal diagnostic check.
10303
10304         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
10305         accessors.  Print arguments explicitly instead of as a list.
10306
10307         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
10308
10309         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
10310         (c_finish_omp_flish): Likewise.
10311
10312         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
10313         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
10314         instead of TREE_CODE_LENGTH.
10315         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
10316         (c_warn_unused_result): Likewise.
10317
10318 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10319
10320         PR c/26494
10321         * doc/invoke.texi (Warning Options): Remove
10322         -Werror-implicit-function-declaration.
10323         (Wimplicit-function-declaration): Update description.
10324         * opts.c (common_handle_option): Move handling of -Werror=* to...
10325         (enable_warning_as_error): ...here.
10326         * opts.h (enable_warning_as_error): Declare.
10327         * c-decl.c (implicit_decl_warning): Unless
10328         -Wno-implicit-function-declaration is given, emit a pedwarn if
10329         -std=c99 or emit a warning if -Wimplicit-function-declaration.
10330         * c.opt (Wimplicit-function-declaration): Replace
10331         mesg_implicit_function_declaration with
10332         warn_implicit_function_declaration.
10333         * c-opts.c (c_common_handle_option):
10334         -Werror-implicit-function-declaration is exactly equal as
10335         -Werror=implicit-function-declaration.
10336         (set_Wimplicit): Replace mesg_implicit_function_declaration with
10337         warn_implicit_function_declaration.
10338         (c_common_post_options): -Wimplict-function-declaration is enabled
10339         by default by -std=c99, otherwise is disabled by default.
10340         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
10341
10342 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
10343
10344         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
10345         DECL on the rhs to a DECL on the lhs for debug info purposes if the
10346         former is ignored but not the latter.
10347
10348 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
10349
10350         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
10351         is made and the reference doesn't use the alias set of its type,
10352         do not create the temporary using that type.
10353
10354 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
10355
10356         * jump.c: Remove prototypes for delete_computation and
10357         delete_prior_computation.
10358
10359 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
10360
10361         * jump.c (get_label_after): Delete.
10362         (get_label_before, delete_computation, delete_jump,
10363         delete_prior_computation, follow_jumps): Move...
10364         * reorg.c (delete_computation, delete_prior_computation): ... here...
10365         (get_label_before, delete_jump): ... making these static ...
10366         (follow_jumps): ... and simplifying this since it only runs after
10367         reload.
10368         * rtl.h (get_label_after, get_label_before, delete_jump,
10369         follow_jumps): Delete prototypes.
10370
10371 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
10372
10373         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
10374
10375 2007-02-15  Nick Clifton  <nickc@redhat.com>
10376
10377         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
10378         order to prevent it from being munged by the target.
10379
10380 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
10381
10382         * config/i386/i386.md: Remove misleading comment.
10383
10384 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10385
10386         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
10387         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
10388         invalid patterns.
10389
10390 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10391
10392         * tree-sra.c (instantiate_missing_elements): Canonicalize
10393         bit-field types.
10394         (sra_build_assignment): New.
10395         (generate_copy_inout, generate_element_copy,
10396         generate_element_zero, generate_one_element_init): Use it.
10397
10398 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10399
10400         * tree-sra.c (instantiate_missing_elements): Canonicalize
10401         bit-field types.
10402         (sra_build_assignment): New.
10403         (generate_copy_inout, generate_element_copy,
10404         generate_element_zero, generate_one_element_init): Use it.
10405
10406 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
10407
10408         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
10409         limbo die nodes.
10410
10411 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
10412
10413         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
10414         types as aggregates not scalars.
10415         * function.c (assign_stack_temp_for_type): Likewise.
10416
10417 2007-02-14  Roger Sayle  <roger@eyesopen.com>
10418             Zdenek Dvorak  <dvorakz@suse.cz>
10419
10420         * tree-dump.c (dump_switch_p_1): Require exact match of the option
10421         name.
10422
10423 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
10424
10425         * passes.c (next_pass_1): Clear the next field of the copied
10426         pass structure.
10427
10428 2007-02-14  Richard Henderson  <rth@redhat.com>
10429
10430         * tree-sra.c (early_sra): New.
10431         (decl_can_be_decomposed_p): Deny va_list if early_sra.
10432         (tree_sra_early, pass_sra_early): New.
10433         * tree-pass.h (pass_sra_early): Declare.
10434         * passes.c (init_optimization_passes): Use it.
10435
10436 2007-02-14  Richard Guenther  <rguenther@suse.de>
10437
10438         * flags.h (issue_strict_overflow_warning): Convert to a macro.
10439
10440 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
10441
10442          PR tree-optimization/30771
10443         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
10444         also phi nodes.
10445         (vect_analyze_operations): Induction phis can now be marked as
10446         used_in_loop.
10447         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
10448         Update documentation accordingly.
10449
10450 2007-02-14  Nick Clifton  <nickc@redhat.com>
10451
10452         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
10453         most 3 arguments are supported.
10454         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
10455
10456 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
10457
10458         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
10459         Ensure dst->current is valid.
10460
10461 2007-02-13  Paul Brook  <paul@codesourcery.com>
10462
10463         * config.gcc: Add arm*-*-uclinux-*eabi.
10464         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
10465         (SUBTARGET_EXTRA_LINK_SPEC): Define.
10466         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
10467         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
10468         (LINK_SPEC): Define.
10469         (LIB_SPEC): Define.
10470         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
10471         register.
10472         * config/arm/uclinux-eabi.h: New file.
10473         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
10474         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
10475         based targets.
10476
10477 2007-02-13  Ian Lance Taylor  <iant@google.com>
10478
10479         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
10480         * flags.h (warn_strict_overflow): Declare.
10481         (enum warn_strict_overflow_code): Define.
10482         (issue_strict_overflow_warning): New static inline function.
10483         * opts.c (warn_strict_overflow): New variable.
10484         (common_handle_option): Handle OPT_Wstrict_overflow and
10485         OPT_Wstrict_overflow_.
10486         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
10487         OPT_Wall.
10488         * fold-const.c: Include intl.h.
10489         (fold_deferring_overflow_warnings): New static variable.
10490         (fold_deferred_overflow_warning): New static variable.
10491         (fold_deferred_overflow_code): New static variable.
10492         (fold_defer_overflow_warnings): New function.
10493         (fold_undefer_overflow_warnings): New function.
10494         (fold_undefer_and_ignore_overflow_warnings): New function.
10495         (fold_deferring_overflow_warnings_p): New function.
10496         (fold_overflow_warning): New static function.
10497         (make_range): Add strict_overflow_p parameter.  Change all
10498         callers.
10499         (extract_muldiv, extract_muldiv_1): Likewise.
10500         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
10501         tree_expr_nonnegative_p.
10502         (fold_negate_expr): Call fold_overflow_warning.
10503         (fold_range_test): Likewise.
10504         (fold_comparison): Likewise.
10505         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
10506         instead of tree_expr_nonnegative_p.
10507         (tree_expr_nonnegative_warnv_p): Rename from
10508         tree_expr_nonnegative_p, add strict_overflow_p parameter.
10509         (tree_expr_nonnegative_p): New function.
10510         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
10511         strict_overflow_p parameter.
10512         (tree_expr_nonzero_p): New function.
10513         * passes.c (verify_interpass_invariants): New static function.
10514         (execute_one_pass): Call it.
10515         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
10516         warnings.
10517         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
10518         (estimate_numbers_of_iterations): Likewise.
10519         (scev_probably_wraps_p): Likewise.
10520         * tree-ssa-ccp.c: Include "toplev.h".
10521         (evaluate_stmt): Defer fold overflow warnings until we know we are
10522         going to optimize.
10523         (struct fold_stmt_r_data): Add stmt field.
10524         (fold_stmt_r): Defer fold overflow warnings until we know we
10525         optimized.
10526         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
10527         (fold_stmt_inplace): Likewise.
10528         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
10529         (cleanup_control_expr_graph): Defer fold overflow warnings until
10530         we know we are going to optimize.
10531         * tree-cfg.c (fold_cond_expr_cond): Likewise.
10532         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
10533         Likewise.
10534         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
10535         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
10536         * tree-ssa-loop-manip.c (create_iv): Likewise.
10537         * c-typeck.c (build_conditional_expr): Likewise.
10538         (build_binary_op): Likewise.
10539         * tree-vrp.c (vrp_expr_computes_nonzero): Call
10540         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
10541         (extract_range_from_unary_expr): Likewise.
10542         * simplify-rtx.c (simplify_const_relational_operation): Warn when
10543         assuming that signed overflow does not occur.
10544         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
10545         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
10546         (fold_defer_overflow_warnings): Declare.
10547         (fold_undefer_overflow_warnings): Declare.
10548         (fold_undefer_and_ignore_overflow_warnings): Declare.
10549         (fold_deferring_overflow_warnings_p): Declare.
10550         (tree_expr_nonzero_warnv_p): Declare.
10551         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
10552         of warning options.
10553         (Warning Options): Document -Wstrict-overflow.
10554         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
10555         (tree-ssa-ccp.o): Likewise.
10556         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
10557         (fold-const.o): Depend on intl.h.
10558
10559 2007-02-13  Ian Lance Taylor  <iant@google.com>
10560
10561         PR middle-end/30751
10562         * lower-subreg.c (resolve_simple_move): Decompose subregs in
10563         addresses.
10564
10565 2007-02-13  Stuart Hastings  <stuart@apple.com>
10566
10567         * config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
10568
10569 2007-02-13  Richard Henderson  <rth@redhat.com>
10570
10571         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
10572         handled_component_p before looking for the indirect_ref.
10573
10574 2007-02-13  Richard Henderson  <rth@redhat.com>
10575
10576         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
10577         remove flags clobber.
10578         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
10579         (bswaphi_lowpart): New.
10580         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
10581         remove TARGET_BSWAP test.  Delete expander of the same name.
10582
10583         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
10584         (expand_unop): Use them.
10585
10586 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
10587
10588         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
10589         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
10590         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
10591         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
10592         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
10593         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
10594         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
10595         assembler dialect choice from asm templates.
10596
10597 2007-02-12  Richard Henderson  <rth@redhat.com>
10598
10599         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
10600         (fixuns_trunc<SSEMODEF>si2): Use it.
10601         * config/i386/sse.md (vec_setv4sf_0): Export.
10602         * config/i386/i386.c (ix86_build_const_vector): Export.
10603         (ix86_split_convert_uns_si_sse): Rename from
10604         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
10605         * config/i386/i386-protos.h: Update.
10606
10607 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10608
10609         PR c/29521
10610         * c-typeck.c (c_finish_return): Improve warning message.
10611
10612 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10613
10614         * alias.c (find_symbolic_term): Delete unused function.
10615
10616 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
10617
10618         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
10619         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
10620         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
10621
10622 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
10623
10624         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
10625         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
10626         the function, temporarily point the debug interface to the null one.
10627
10628 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
10629
10630         * dwarf2out.c (round_up_to_align): New static function.
10631         (field_byte_offset): Use it to round the offset.
10632
10633 2007-02-12  Richard Henderson  <rth@redhat.com>
10634
10635         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
10636         (inswl_const): Export.
10637
10638 2007-02-12  Richard Henderson  <rth@redhat.com>
10639
10640         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
10641         result mode of the libcall, convert back to outmode.
10642
10643 2007-02-12  Roger Sayle  <roger@eyesopen.com>
10644
10645         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
10646         (bswapdi2): New define_expand to implement 32-bit implementation.
10647
10648 2007-02-12  Nick Clifton  <nickc@redhat.com>
10649
10650         * doc/invoke.texi (Overall Options): Document --help=.
10651         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
10652         (cc1_options): Pass --help= on to cc1.
10653         (display_help): Add description of --help=.
10654         (process_command): Add code to handle --help=.  Allow translated
10655         --help and --target-help switches to be passed on to compiler
10656         sub-process.
10657         (main): Remove unused if statement.
10658         * opts.c (columns): Remove.
10659         (LEFT_COLUMN): Define.
10660         (wrap_help): Add columns argument.
10661         (print_filtered_help): Change parameters to be an include bitmask,
10662         an exclude bitmask, an any bitmask and the column width.  Move the
10663         code to display the params list here.  Add code to display the
10664         status of options rather than their descriptions if the quiet flag
10665         is not active.
10666         (print_specific_help): Change parameters to be an include bitmask,
10667         an exclude bitmask and an any bitmask.  Move code to look up the
10668         column width here.  Decide upon the title for an options listing.
10669         (common_handle_options): Add code to handle --help=.  Adapt code
10670         for --help and --target-help to use the revised form of the
10671         print_specific_help function.
10672         (print_help): Delete.
10673         (print_param_help): Delete.
10674         (print_switch): Delete.
10675         * opts.h (cl_lang_count): Add prototype.
10676         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
10677         CL_MAX_OPTION_CLASS): New defines.
10678         * optc-gen.awk: Add construction of cl_lang_count.
10679         * c.opt: Add Warning attribute to warning options and Optimization
10680         attribute to optimization options.
10681         * common.opt: Likewise.
10682         Add --help=.
10683         Add -fhelp and -ftarget-help as aliases for the transformed --help
10684         and --target-help options.
10685         * opt-functions.awk: Add code to handle Warning and Optimization
10686         attributes.
10687
10688 2007-02-12  Richard Henderson  <rth@redhat.com>
10689
10690         * config/alpha/constraints.md: New file.
10691         * config/alpha/alpha.c: Include tm-constrs.h.
10692         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
10693         alpha_extra_constraint): Remove.
10694         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
10695         * config/alpha/alpha-protos.h: Update.
10696         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
10697         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
10698         (EXTRA_CONSTRAINT): Remove.
10699         * config/alpha/alpha.md: Include constraints.md.
10700         (adddi splitter): Use satisfies_constraint_*.
10701         * config/alpha/predicates.md (add_operand): Likewise.
10702         (sext_add_operand, addition_operation): Likewise.
10703
10704 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
10705
10706         PR tree-optimization/29145
10707         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
10708         in our handling of restrict qualified pointers.
10709
10710 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10711
10712         PR middle-end/7651
10713         * doc/invoke.texi (Wunused-value): Update description.
10714         (Wextra): Delete item.
10715         * opts.c (set_Wextra): Don't use the value of Wextra to set the
10716         value of Wunused-value.
10717         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
10718         (c_finish_stmt_expr): Don't check extra_warnings.
10719         (emit_side_effect_warnings): The caller is responsible to check
10720         warn_unused_value.
10721
10722 2007-02-11  Roger Sayle  <roger@eyesopen.com>
10723             Matt Thomas  <matt@3am-software.com>
10724
10725         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
10726
10727 2007-02-11  Roger Sayle  <roger@eyesopen.com>
10728
10729         * simplify-rtx.c (simplify_relational_operation_1): Optimize
10730         comparisons of POPCOUNT against zero.
10731         (simplify_const_relational_operation): Likewise.
10732
10733 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10734
10735         * doc/invoke.texi (Wextra): Delete outdated paragraph.
10736
10737 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10738
10739         * dwarf2out.c (root_type): Delete unused function.
10740
10741 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10742
10743         * genattrtab.c (contained_in_p): Delete unused function.
10744         (write_expr_attr_cache): Likewise.
10745
10746 2007-02-11  Jan Hubicka  <jh@suse.cz>
10747
10748         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
10749         previous patch.
10750
10751 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
10752
10753         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
10754         to add the REG_EQ* note.
10755         * see.c (see_merge_one_use_extension): Likewise.
10756         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
10757         turn REG_EQUAL notes into REG_EQUIV notes if the target
10758         register may have more than one set.
10759         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
10760         * gcse.c (try_replace_reg): Likewise.
10761         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
10762         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
10763         more than one REG_EQUIV note.
10764         * reload1.c (gen_reload): Use set_unique_reg_note.
10765
10766 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
10767
10768         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
10769         (ix86_builtin_conversion): New function.
10770
10771 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
10772
10773         PR target/29487
10774         * tree.h (DECL_REPLACEABLE_P): New macro.
10775         * except.c (set_nothrow_function_flags): Likewise.
10776
10777 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
10778             Ira Rosen  <irar@il.ibm.com>
10779             Dorit Nuzman  <dorit@il.ibm.com>
10780
10781         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
10782         * targhooks.c (default_builtin_vectorized_conversion): New.
10783         * targhooks.h (default_builtin_vectorized_function): New declaration.
10784         * target.h (struct vectorize): Add builtin_conversion field.
10785         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
10786         stmt_vec_info_type value.
10787         (vectorizable_conversion): New declaration.
10788         * tree-vect-analyze.c (vect_analyze_operations): Add
10789         vectorizable_conversion call.
10790         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
10791         * tree-vect-transform.c (vectorizable_conversion): New function.
10792         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
10793         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
10794         mode.
10795         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
10796         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
10797         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
10798         or ALTIVEC_BUILTIN_VCFSX.
10799
10800 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
10801
10802         PR target/30634
10803         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
10804         CONST_DOUBLE and operand 0 is a hard register.
10805         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
10806         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
10807         is a hard floating-point register.
10808
10809 2007-02-10  Richard Henderson  <rth@redhat.com>
10810             Jakub Jelinek  <jakub@redhat.com>
10811             Alexandre Oliva  <aoliva@redhat.com>
10812
10813         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
10814         * builtin-types.def (BT_WORD): Make unsigned.
10815         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
10816         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
10817         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
10818         * c-decl.c (grokdeclarator): Don't error if !have_tls.
10819         * c-parser.c (c_parser_omp_threadprivate): Likewise.
10820         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
10821         emulated tls.
10822         * expr.c (emutls_var_address): New.
10823         (expand_expr_real_1): Expand emulated tls.
10824         (expand_expr_addr_expr_1): Likewise.
10825         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
10826         * output.h (emutls_finish): Declare.
10827         * toplev.c (compile_file): Call it.
10828         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
10829         address before wrapping in CONST.
10830         * varasm.c (emutls_htab, emutls_object_type): New.
10831         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
10832         (get_emutls_object_name, get_emutls_object_type): New.
10833         (get_emutls_init_templ_addr, emutls_decl): New.
10834         (emutls_common_1, emutls_finish): New.
10835         (assemble_variable): When emulating tls, swap decls; generate
10836         constructor for the emutls objects.
10837         (do_assemble_alias): When emulating tls, swap decl and target name.
10838         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
10839         for emulated tls.
10840         * varpool.c (decide_is_variable_needed): Look at force_output.
10841         Recurse for emulated tls.
10842         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
10843         with decide_is_variable_needed.
10844         * emutls.c: New file.
10845         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
10846         tls_object for real tls.
10847
10848 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
10849
10850         PR rtl-optimization/29599
10851         * reload1.c (eliminate_regs_in_insn): Take the destination
10852         mode into account when computing the offset.
10853
10854 2007-02-09  Stuart Hastings  <stuart@apple.com>
10855             Richard Henderson  <rth@redhat.com>
10856
10857         * config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
10858         * config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
10859         * config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
10860         fixuns_truncdfhi2): New.
10861         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
10862         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
10863         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
10864         (floatunssidf2): Allow nonimmediate source.
10865         * config/i386/sse.md (movdi_to_sse): New.
10866         (vec_concatv2di): Drop '*'.
10867         * config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
10868         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
10869         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
10870         New.
10871         * config/i386/i386.c (ix86_expand_convert_uns_si_sse,
10872         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
10873         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
10874         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
10875         (ix86_build_signbit_mask): Fix decl of v, refactor to call
10876         ix86_build_const_vector.
10877         (x86_emit_floatuns): Rewrite.
10878
10879 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
10880
10881         * genautomata.c (longest_path_length): Delete unused function.
10882         (struct state): Delete unused longest_path_length.
10883         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
10884         (get_free_state): Delete unused.
10885
10886 2007-02-09  Jan Hubicka  <jh@suse.cz>
10887
10888         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
10889         * doc/invoke.texi (inline-unit-growth): Update default value.
10890
10891         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
10892         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
10893         (rebuild_cgraph_edges): Likewise.
10894         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
10895         (dump_cgraph_node): Dump frequencies.
10896         (cgraph_clone_edge): Add frequency scales.
10897         (cgraph_clone_node): Add freuqnecy.
10898         * cgraph.h (cgraph_edge): Add freuqnecy argument.
10899         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
10900         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
10901         * tree-pass.h (TODO_rebuild_frequencies): New constant.
10902         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
10903         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
10904         (save_inline_function_body): Likewise.
10905         * ipa-inline.c: inluce rtl.h
10906         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
10907         (cgraph_edge_badness): Use frequencies.
10908         (cgraph_decide_recursive_inlining): Update clonning.
10909         (cgraph_decide_inlining_of_small_function): Dump frequency.
10910         * predict.c (estimate_bb_frequencies): Export.
10911         * predict.h (estimate_bb_frequencies): Declare.
10912         * tree-inline.c (copy_bb): Watch overflows.
10913         (expand_call_inline): Update call of cgraph_create_edge.
10914         (optimize_inline_calls): Use TODO flags to update frequnecies.
10915         * passes.h: Include predict.h
10916         (init_optimization_passes): Move profile ahead.
10917         (execute_function_todo): Handle TODO_rebuild_frequencies.
10918
10919 2007-02-09  Roger Sayle  <roger@eyesopen.com>
10920
10921         * config/alpha/alpha.c (emit_insxl): Force the first operand of
10922         the insbl or inswl pattern into a register.
10923
10924 2007-02-09  Roger Sayle  <roger@eyesopen.com>
10925
10926         * config/ia64/ia64.md (bswapdi2): New define_insn.
10927
10928 2007-02-09  Richard Henderson  <rth@redhat.com>
10929
10930         * config/i386/constraints.md (Ym): New constraint.
10931         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
10932         (movdi_1_rex64): Split sse and xmm general register moves from
10933         memory move alternatives.  Use conditional register constraints.
10934         (movsf_1, movdf_integer): Likewise.
10935         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
10936         (movdf_integer_rex64): New.
10937         (pushsf_rex64): Fix output constraints.
10938         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
10939         (sse2_stored): Likewise.
10940         (sse2_storeq_rex64): New.
10941         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
10942         amd and not generic.
10943         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
10944         for optimize_size.  Remove SF/DFmode hack.
10945
10946 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
10947
10948         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
10949         (bit_SSE4a): New.
10950
10951 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
10952             Richard Sandiford  <richard@codesourcery.com>
10953
10954         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
10955         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
10956         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
10957         m68k/t-mlib to tmake_file.
10958         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
10959         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
10960         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
10961         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
10962         variable is not empty, add t-$m68k_arch_family to tmake_file.
10963         Add t-mlibs to tmake_file.
10964         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
10965         * config/m68k/t-cf: New file.
10966         * config/m68k/t-m68k: Likewise.
10967         * config/m68k/t-mlibs: Likewise.
10968         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10969         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10970         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
10971         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10972         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
10973         Delete.
10974         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
10975         (INSTALL_LIBGCC): Delete.
10976         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
10977         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10978         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10979         (M68K_MLIB_CPU): Define.
10980         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
10981         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
10982         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
10983
10984 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
10985             Richard Guenther  <rguenther@suse.de>
10986
10987         PR middle-end/23361
10988         * fold-const.c (fold_comparison): Handle obfuscated comparisons
10989         against INT_MIN/INT_MAX.
10990         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
10991         file if a loop is removed.
10992
10993 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
10994
10995         * calls.c (store_one_arg): Pass correct alignment to
10996         emit_push_insn for non-BLKmode values.
10997         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
10998         unaligned stack slot via a suitably aligned slot.
10999
11000 2007-02-08  DJ Delorie  <dj@redhat.com>
11001
11002         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
11003         warnings.
11004         (legal_subregs): Use unsigned char, make const.
11005         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
11006
11007 2007-02-08  Paul Brook  <paul@codesourcery.com>
11008
11009         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
11010         special interworking needed.
11011
11012 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
11013
11014         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
11015         conditional to __SSE2__.
11016         (Entries below should have been added to first ChangeLog
11017         entry for amdfam10 dated 2007-02-05)
11018         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
11019         defined.
11020         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
11021         defined.
11022         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
11023         defined.
11024
11025 2007-02-08  DJ Delorie  <dj@redhat.com>
11026
11027         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
11028         * config/m32c/m32c.c (legal_subregs): New.
11029         (m32c_illegal_subreg_p): New.
11030         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
11031         unsupported subregs of hard regs.
11032
11033 2007-02-08  Jan Hubicka  <jh@suse.cz>
11034
11035         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
11036         the same one; always update histograms.
11037
11038 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
11039
11040         * passes.c (init_optimization_passes): Tidy comment.
11041
11042 2007-02-08  Roger Sayle  <roger@eyesopen.com>
11043
11044         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
11045         strip zero_extend, bswap and rotates from POCOUNT's argument.
11046         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
11047         zero_extend and rotates from PARITY's argument.
11048         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
11049         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
11050         of an integer constant at compile-time.
11051
11052 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
11053
11054         PR 30562
11055         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
11056         Update all users.
11057         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
11058         users.
11059         (init_alias_info):
11060         * tree-ssa-live.c (remove_unused_locals): Do not remove
11061         TREE_ADDRESSABLE variables.
11062         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
11063         * tree-ssa-operands.c (add_virtual_operand): Remove argument
11064         FOR_CLOBBER.  Update all users.
11065         If VAR has an associated alias set, add a virtual operand for
11066         it if no alias is found to conflict with the memory reference.
11067
11068 2007-02-07  Jan Hubicka  <jh@suse.cz>
11069             Robert Kidd <rkidd@crhc.uiuc.edu>
11070
11071         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
11072
11073 2007-02-07  Ian Lance Taylor  <iant@google.com>
11074
11075         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
11076
11077 2007-02-07  Roger Sayle  <roger@eyesopen.com>
11078
11079         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
11080         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
11081         tablejumpdi, movsi_to_cr_one): Remove constraints from
11082         define_expand's match_operands.
11083
11084 2007-02-07  Roger Sayle  <roger@eyesopen.com>
11085
11086         * global.c (compute_regsets): Move declatation of "i" inside of
11087         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
11088
11089 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
11090
11091         PR c++/30703
11092         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
11093         of INDIRECT_REF <RESULT_DECL>.
11094
11095         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
11096
11097 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
11098             Kaz Kojima  <kkojima@gcc.gnu.org>
11099
11100         PR target/29746
11101         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
11102         properly.
11103         (sh_initialize_trampoline): Add parentheses to avoid a warning.
11104
11105 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
11106
11107         * doc/loop.texi: Document possibility not to perform disambiguation
11108         of loops with multiple latches.
11109         * cfgloopmanip.c (alp_enum_p): Removed.
11110         (add_loop): Handle subloops.  Use get_loop_body_with_size.
11111         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
11112         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
11113         the new forwarder block.
11114         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
11115         Handle the case latch is NULL.
11116         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
11117         when marking loop exits.
11118         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
11119         be modified.
11120         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
11121         disambiguate_loops_with_multiple_latches.
11122         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
11123         before fix_loop_structure.
11124         * cfgloop.c: Include pointer-set.h and output.h.
11125         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
11126         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
11127         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
11128         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
11129         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
11130         disambiguate_multiple_latches, get_loop_body_with_size,
11131         disambiguate_loops_with_multiple_latches): New functions.
11132         (flow_loop_dump): Dump multiple latch edges.
11133         (flow_loop_nodes_find): Handle loops with multiple latches.
11134         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
11135         (glb_enum_p): Modified.
11136         (get_loop_body): Use get_loop_body_with_size.
11137         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
11138         (AVOID_CFG_MODIFICATIONS): New constant.
11139         (disambiguate_loops_with_multiple_latches, add_loop,
11140         get_loop_body_with_size): Declare.
11141         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
11142
11143 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
11144
11145         PR inline-asm/28686
11146         * global.c (compute_regsets): New function.
11147         (global_alloc): Refactored ELIMINABLE_REGSET
11148         and NO_GLOBAL_ALLOC_REGS computation out.
11149         (rest_of_handle_global_alloc): Call compute_regsets()
11150         for non-optimizing case.
11151
11152 2007-02-06  Richard Henderson  <rth@redhat.com>
11153
11154         * config/i386/constraints.md (Y2): Rename from Y.
11155         (Yi): New constraint.
11156         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
11157         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
11158         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
11159         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
11160         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
11161         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
11162         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
11163         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
11164         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
11165         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
11166         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
11167         vec_extractv2si_1): Change Y constraints to Y2.
11168         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
11169         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
11170         Change Y constraints to Y2.
11171         (sse2_loadld): Change Y constraints to x.
11172
11173 2007-02-06  Roger Sayle  <roger@eyesopen.com>
11174
11175         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
11176         (parity<mode>2): New define_expand using rs6000_emit_parity.
11177         * config/rs6000/rs6000.c (rs6000_emit_popcount,
11178         rs6000_emit_parity): New functions.
11179         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
11180         rs6000_emit_parity): Prototype here.
11181
11182 2007-02-06  Ian Lance Taylor  <iant@google.com>
11183
11184         * lower-subreg.c (simple_move_operand): Reject CONST.
11185         (resolve_clobber): Call validate_change rather than directly
11186         assigning to XEXP (pat, 0).
11187
11188 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
11189
11190         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
11191         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
11192         (tree-cfg.o): Remove hashtab.h dependency.
11193
11194         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
11195         (struct ivopts_data): Change niters to pointer_map_t.
11196         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
11197         (niter_for_exit): Create pointer_map on demand.  Change for
11198         pointer_map API.
11199         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
11200         (free_loop_data): Destroy data->niters if created and reset field.
11201         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
11202         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
11203
11204         * tree-ssa-reassoc.c: Include pointer-set.h.
11205         (bb_rank): Change to long *.
11206         (operand_rank): Change to pointer_map_t.
11207         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
11208         (insert_operand_rank): Accept long.
11209         (operand_entry_hash, operand_entry_eq): Remove.
11210         (get_rank): Return long.  Adjust for changes above.
11211         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
11212         and operand_rank.
11213         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
11214
11215         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
11216         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
11217         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
11218         is not NULL.
11219         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
11220         directly since it cannot be NULL.
11221         (get_vi_for_tree): Rewrite for pointer_map API.
11222         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
11223         (init_alias_vars): Create vi_for_tree as pointer_map.
11224         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
11225
11226         * tree-cfg.c: Don't include hashtab.h.
11227         (edge_to_cases): Declare as pointer_map.
11228         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
11229         Delete.
11230         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
11231         (start_recording_case_labels): Create edge_to_cases as pointer_map.
11232         (end_recoding_case_labels): Cleanup edge_to_cases manually before
11233         destroying it.
11234         (record_switch_edge): Delete.
11235         (get_cases_for_edge): Adjust for pointer_map API, inline
11236         record_switch_edge (rewritten for new API), remove goto.
11237
11238 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
11239
11240         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
11241         * tree-nested.c: Include pointer-set.h.
11242         (var_map_elt, var_map_eq, var_map_hash): Delete.
11243         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
11244         to pointer_map_t's.
11245         (nesting_info_bitmap_obstack): New.
11246         (lookup_field_for_decl): Adjust for pointer_map API.
11247         (lookup_tramp_for_decl): Adjust for pointer_map API.
11248         (get_nonlocal_debug_decl): Adjust for pointer_map API.
11249         (get_local_debug_decl): Adjust for pointer_map API.
11250         (convert_nl_goto_reference): Adjust for pointer_map API.
11251         (convert_nl_goto_receiver): Adjust for pointer_map API.
11252         (create_nesting_tree): Create outside GGC space.  Create bitmap on
11253         the new obstack.  Create field_map and var_map as pointer_maps.
11254         (free_nesting_tree): Adjust for changes to create_nesting_tree.
11255         (root): Delete.
11256         (lower_nested_functions): Move root here, no need to NULL it.
11257         Initialize and release the obstack.
11258
11259 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
11260
11261         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
11262         Remove prototypes and make them non-static.
11263         (struct tree_int_map): Remove.
11264         * tree.h (struct tree_int_map): Move here, turning TO into an
11265         unsigned int.
11266         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
11267
11268         * tree.h (TREE_COMPLEXITY): Remove.
11269         (struct tree_exp): Remove complexity field.
11270         * tree.c (build1_stat): Don't set it.
11271
11272 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
11273             Victor Kaplansky  <victork@il.ibm.com>
11274
11275         * tree-vectorizer.c (vect_is_simple_use): Support induction.
11276         (vect_is_simple_reduction): Support reduction with induction as
11277         one of the operands.
11278         (vect_is_simple_iv_evolution): Fix formatting.
11279         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
11280         formatting.  Don't mark induction phis for vectorization.
11281         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
11282         * tree-vect-transform.c (get_initial_def_for_induction): New function.
11283         (vect_get_vec_def_for_operand): Support induction.
11284         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
11285         induction case.
11286         (vectorizable_reduction): Support reduction with induction as one of
11287         the operands.
11288         (vectorizable_type_demotion): Use def-type of stmt argument rather
11289         than dummy def-type.
11290
11291         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
11292         flag_tree_scev_cprop.
11293         * common.opt (tree-scev-cprop): New flag.
11294
11295         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
11296         call to vect_get_new_vect_var.
11297
11298 2007-02-06  Ira Rosen  <irar@il.ibm.com>
11299
11300         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
11301         vectype is not NULL.
11302         (vect_pattern_recog_1): Likewise.
11303
11304 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11305
11306         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
11307         (fold_negate_expr): Likewise.
11308
11309 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
11310
11311         PR debug/30189
11312         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
11313         even if cv-qualification is the same.
11314
11315 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
11316
11317         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
11318         __enable_execute_stack on completion.
11319
11320 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11321
11322         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
11323         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
11324         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
11325         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
11326         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
11327         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
11328         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
11329         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
11330
11331 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11332
11333         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
11334         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
11335         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
11336         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
11337         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
11338         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
11339         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
11340         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
11341         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
11342         umuldi3_highpart_rex64, umulsi3_highpart_insn,
11343         umulsi3_highpart_zext, smuldi3_highpart_rex64,
11344         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
11345         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
11346         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
11347         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
11348         sqrtextenddfxf2_i387): Added amdfam10_decode.
11349
11350         * config/i386/athlon.md (athlon_idirect_amdfam10,
11351         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
11352         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
11353         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
11354         athlon_ivector_store_amdfam10): New define_insn_reservation.
11355         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
11356         amdfam10.
11357
11358 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11359
11360         * config/i386/athlon.md (athlon_call_amdfam10,
11361         athlon_pop_amdfam10, athlon_lea_amdfam10): New
11362         define_insn_reservation.
11363         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
11364         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
11365         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
11366
11367 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11368
11369         * config/i386/athlon.md (athlon_sseld_amdfam10,
11370         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
11371         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
11372
11373 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11374
11375         * config/i386/athlon.md (athlon_sseins_amdfam10): New
11376         define_insn_reservation.
11377         * config/i386/i386.md (sseins): Added sseins to define_attr type
11378         and define_attr unit.
11379         * config/i386/sse.md: Set type attribute to sseins for insertq
11380         and insertqi.
11381
11382 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11383
11384         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
11385         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
11386         ssecomi_load_amdfam10, ssecomi_amdfam10,
11387         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
11388         define_insn_reservation.
11389         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
11390
11391 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11392
11393         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
11394         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
11395         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
11396         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
11397         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
11398         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
11399         define_insn_reservation.
11400
11401         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
11402         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
11403         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
11404         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
11405         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
11406
11407 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11408
11409         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
11410         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
11411         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
11412         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
11413         athlon_ssemul_load_k8): Added amdfam10.
11414
11415 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11416
11417         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
11418         (x86_sse_unaligned_move_optimal): New variable.
11419
11420         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
11421         m_AMDFAM10.
11422         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
11423         for unaligned vector SSE double/single precision loads for AMDFAM10.
11424
11425 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11426
11427         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
11428         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
11429         Define TARGET_CPU_DEFAULT_amdfam10.
11430         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
11431         (processor_type): Add PROCESSOR_AMDFAM10.
11432
11433         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
11434         processor_type in config/i386/i386.h.
11435         Enable imul peepholes for TARGET_AMDFAM10.
11436
11437         * config.gcc: Add support for --with-cpu option for amdfam10.
11438
11439         * config/i386/i386.c (amdfam10_cost): New variable.
11440         (m_AMDFAM10): New macro.
11441         (m_ATHLON_K8_AMDFAM10): New macro.
11442         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
11443         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
11444         x86_promote_QImode, x86_integer_DFmode_moves,
11445         x86_partial_reg_dependency, x86_memory_mismatch_stall,
11446         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
11447         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
11448         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
11449         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
11450         Enable/disable for amdfam10.
11451         (override_options): Add amdfam10_cost to processor_target_table.
11452         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
11453         processor_alias_table.
11454         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
11455         (ix86_adjust_cost): Add code for amdfam10.
11456
11457 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
11458
11459         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
11460         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
11461         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
11462         * config/i386/i386.h: Add builtin definition for SSE4A.
11463         * config/i386/i386.md: Add support for ABM instructions
11464         (popcnt and lzcnt).
11465         * config/i386/sse.md: Add support for SSE4A instructions
11466         (movntss, movntsd, extrq, insertq).
11467         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
11468         Add -march=amdfam10 flag.
11469         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
11470         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
11471         and amdfam10.
11472         * doc/extend.texi: Add documentation for SSE4A builtins.
11473
11474 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
11475
11476         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
11477
11478 2007-02-05  Richard Guenther  <rguenther@suse.de>
11479
11480         * tree-vectorizer.h (vectorizable_function): Add argument type
11481         argument, change return type.
11482         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
11483         * tree-vect-transform.c (vectorizable_function): Handle extra
11484         argument, return vectorized function decl.
11485         (build_vectorized_function_call): Remove.
11486         (vectorizable_call): Handle calls with result and argument types
11487         differing.  Handle loop vectorization factor correctly.
11488         * targhooks.c (default_builtin_vectorized_function): Adjust for
11489         extra argument.
11490         * targhooks.h (default_builtin_vectorized_function): Likewise.
11491         * target.h (builtin_vectorized_function): Add argument type
11492         argument.
11493         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
11494         extra argument, allow vectorizing of lrintf.
11495         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
11496         documentation of target hook.
11497
11498 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
11499
11500         PR target/30665
11501         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
11502         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
11503         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
11504
11505 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11506
11507         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
11508         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
11509         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
11510         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
11511         before canonicalizing sincos to cexpi.
11512         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
11513
11514 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11515
11516         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
11517         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
11518         (alpha_init_builtins): Use alpha_add_builtins to process tables.
11519
11520 2007-02-05  Roger Sayle  <roger@eyesopen.com>
11521
11522         * mips-tfile.c (initialize_init_file): Correct endianness test.
11523
11524 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
11525
11526         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
11527         the 'y' constraint.
11528
11529 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
11530
11531         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
11532         saves in a PARALLEL before the register assignments.
11533
11534 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
11535
11536         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
11537         DWARF_FRAME_RETURN_COLUMN to be a general register.
11538         * dwarf2out.c (init_return_column_size): New function, split from...
11539         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
11540         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
11541         to be nongeneral registers.
11542         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
11543         integer registers.
11544         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
11545         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
11546
11547 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
11548
11549         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
11550
11551 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
11552
11553         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
11554         (remove_path): Use can_remove_branch_p and remove_branch instead
11555         of loop_delete_branch_edge.
11556         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
11557         (tree_transform_and_unroll_loop): Remove dead branches immediately.
11558         Update profile using scale_dominated_blocks_in_loop.
11559         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
11560         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
11561         (can_remove_branch_p, remove_branch): Declare.
11562         * tree-cfg.c (tree_can_remove_branch_p): New function.
11563         (tree_cfg_hooks): Add tree_can_remove_branch_p.
11564         * cfgrtl.c (rtl_can_remove_branch_p): New function.
11565         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
11566
11567 2007-02-05  Jan Hubicka  <jh@suse.cz>
11568
11569         PR middle-end/30696
11570         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
11571         nodes in cgraph, don't remove offline copy of the function.
11572
11573 2007-02-04  Jan Hubicka  <jh@suse.cz>
11574
11575         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
11576         vectors might cause maybe_lookup_element_for_expr to be called
11577         on non-sra-candidate.
11578
11579 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11580
11581         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
11582         config/bfin/bfin.md, config/bfin/predicates.md: Follow
11583         spelling conventions.
11584
11585 2007-02-04  Richard Guenther  <rguenther@suse.de>
11586
11587         PR middle-end/30636
11588         * fold-const.c (try_move_mult_to_index): Make sure to not
11589         overflow one dimension of a multi-dimensional array access.
11590
11591 2007-02-04  Jan Hubicka  <jh@suse.cz>
11592
11593         * passes.c (init_optimization_passes): Reindent.
11594
11595 2007-02-04  Jan Hubicka  <jh@suse.cz>
11596             Eric Botcazou  <ebotcazou@adacore.com>
11597
11598         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
11599         (execute_fixup_cfg): Break out the abnormal goto code.
11600         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
11601         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
11602         (optimize_inline_calls): Call make_nonlocal_label_edges.
11603
11604 2007-02-04  Jan Hubicka  <jh@suse.cz>
11605
11606         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
11607         true when something was changed.
11608         (rename_ssa_copies): When something was changed, do
11609         TODO_remove_unused_locals.
11610         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
11611         add TODO_remove_unused_locals when instruction was removed.
11612
11613 2007-02-04  Jan Hubicka  <jh@suse.cz>
11614
11615         * ipa-inline.c (try_inline): Improve debug output; work on already
11616         inline edges too.
11617         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
11618         call try_inline for already inlined edges too when flattening;
11619         inline also functions that make callee growth but overall unit size
11620         reduce.
11621
11622 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11623
11624         * config/m32c/bitops.md, config/m32c/jump.md,
11625         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
11626         config/m32r/m32r.h, config/m32r/m32r.md,
11627         config/m32r/predicates.md, config/m68hc11/larith.asm,
11628         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
11629         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
11630         config/mips/mips-protos.h, config/mips/mips.c,
11631         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
11632         config/mn10300/mn10300.h, config/mn10300/predicates.md,
11633         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
11634         spelling conventions.
11635
11636         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
11637         Follow spelling conventions.
11638
11639 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
11640
11641         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
11642         warn about C++0x compatibility.
11643
11644 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
11645
11646         * config/h8300/h8300.c, config/h8300/h8300.h,
11647         config/h8300/h8300.md: Follow spelling conventions.
11648
11649 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
11650
11651         PR middle-end/30667
11652         * combine.c (try_combine): Do not substitute source operand
11653         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
11654
11655 2007-02-03  Jan Hubicka  <jh@suse.cz>
11656
11657         PR gcov-profile/30650
11658         * value-prof.c (stringop_block_profile): Fix handling of size counter;
11659         do not divide by zero for never executed counters.
11660         (tree_find_values_to_profile): Fix counters.
11661         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
11662
11663 2007-02-03  Ian Lance Taylor  <iant@google.com>
11664
11665         * lower-subreg.c (simple_move_operand): New static function,
11666         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
11667         operands.
11668         (simple_move): Call simple_move_operand.
11669         (find_decomposable_subregs): Add special handling of MEMs.
11670         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
11671         meaning of return value.  If we see a hard register, test whether
11672         it can store a word_mode value.  Change all callers.
11673
11674 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
11675
11676         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
11677         ftrapv insns and expanders.
11678         (subdi3): Change define_expand operand 1 to arith11_operand, and
11679         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
11680         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
11681         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
11682         respectively.
11683
11684         PR middle-end/30174
11685         * varasm.c (notice_global_symbol): Treat global objects as weak when
11686         flag_shlib is true.
11687
11688 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11689
11690         * emit-rtl.c (dconstpi): Delete.
11691         (dconstsqrt2): New.
11692         (init_emit_once): Delete dconstpi and init dconstsqrt2.
11693         * real.h (dconstpi): Delete.
11694         (dconstsqrt2): New.
11695         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
11696         (fold_builtin_hypot): Likewise.
11697
11698 2007-02-03  Tom Tromey  <tromey@redhat.com>
11699
11700         PR driver/30246
11701         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
11702         -gcoff3, -gxcoff3, -gvms3 implies -dD.
11703
11704 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
11705
11706         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
11707         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
11708         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
11709         config/rs6000/cell.md, config/rs6000/darwin.h,
11710         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
11711         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
11712         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
11713         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
11714         typos.  Follow spelling conventions.
11715         * doc/invoke.texi: Follow spelling conventions.
11716
11717 2007-02-03  Roger Sayle  <roger@eyesopen.com>
11718
11719         * simplify-rtx.c (simplify_relational_operation_1): Implement some
11720         canonicalization transformations that attempt to simplify integer
11721         constant comparisons to become comparisons against zero.
11722
11723 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11724
11725         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
11726         fabs(x)*sqrt(2).
11727         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
11728         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
11729
11730 2007-02-02  Mike Stump  <mrs@apple.com>
11731
11732         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
11733         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
11734         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
11735         generate a branch island.
11736
11737 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
11738
11739         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
11740         (xtensa_legitimate_address_p): New.
11741         (xtensa_legitimize_address): New.
11742         (xtensa_output_addr_const_extra): New.
11743         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
11744         (BASE_REG_P): New.
11745         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
11746         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
11747         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
11748         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
11749         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
11750         (xtensa_legitimize_address): New.
11751         (xtensa_output_addr_const_extra): New.
11752
11753 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
11754
11755         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
11756
11757 2007-02-02  Ian Lance Taylor  <iant@google.com>
11758
11759         * expmed.c (expand_divmod): Add comment.
11760
11761 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
11762
11763         * emit-rtl.c (renumber_insns): Remove.
11764         * flags.h: Remove the extern for flag_renumber_insns.
11765         * rtl.h: Remove the prototype for renumber_insns.
11766         * toplev.c (flag_renumber_insns): Remove.
11767
11768 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
11769
11770         Revert for x86 darwin:
11771         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
11772
11773         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
11774         code before the following patch under TARGET_MACHO.
11775         (ix86_function_value_regno_p): Likewise.
11776
11777 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11778
11779         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
11780         COMPLEX_EXPR.
11781
11782 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11783
11784         PR target/29682
11785         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
11786         general or fp registers.  Add comments.
11787         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
11788
11789 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
11790
11791         * pointer-set.c (insert_aux): Only return insertion slot.
11792         (pointer_set_insert): Adjust.
11793         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
11794         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
11795         pointer_map_traverse): New.
11796         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
11797         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
11798         pointer_map_contains, pointer_map_traverse): Declare.
11799
11800 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
11801
11802         PR middle-end/30473
11803         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
11804         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
11805
11806 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
11807
11808         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
11809
11810         (struct _dep): New type.
11811         (dep_t): New typedef.
11812         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
11813         (DEP_STATUS): New access macro.  The macro with the same name was
11814         renamed to DEP_LINK_STATUS.
11815         (dep_init): Declare function
11816
11817         (struct _dep_link): New type.
11818         (dep_link_t): New typedef.
11819         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
11820         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
11821         (DEP_LINK_STATUS): New macro.
11822         (debug_dep_links): New debug function.
11823
11824         (struct _deps_list): New type.
11825         (deps_list_t): New typedef.
11826         (DEPS_LIST_FIRST): New access macro.
11827         (FOR_EACH_DEP_LINK): New cycle macro.
11828         (create_deps_list, free_deps_list, delete_deps_list): Declare
11829         functions.
11830         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
11831         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
11832         (copy_deps_list_change_con): Ditto.
11833
11834         (move_dep_link): Declare function.
11835
11836         (struct _dep_node): New type.
11837         (dep_node_t): New typedef.
11838         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
11839
11840         (struct haifa_insn_data.back_deps): New field to hold backward
11841         dependencies of the insn.
11842         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
11843         to deps_list_t.
11844         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
11845         Change its type to deps_list_t.
11846         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
11847         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
11848         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
11849
11850         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
11851
11852         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
11853
11854         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
11855         all callers.
11856         (dep_cost): Declare.
11857
11858         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
11859         (ds_to_dk, dk_to_ds): New functions.
11860
11861         (init_dep_1): New static function.
11862         (init_dep): New function.
11863         (copy_dep): New static function.
11864
11865         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
11866         functions.
11867         (detach_dep_link): New static function.
11868         (move_dep_link): New function.
11869
11870         (dep_links_consistent_p, dump_dep_links): New static functions.
11871         (debug_dep_links): New debugging function.
11872
11873         (deps_obstack, dl_obstack, dn_obstack): New static variables.
11874
11875         (alloc_deps_list, init_deps_list): New static functions.
11876         (create_deps_list): New function.
11877         (clear_deps_list): New static function.
11878         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
11879         (deps_list_consistent_p, dump_deps_list): New static functions.
11880         (debug_deps_list): New function.
11881         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
11882         functions.
11883         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
11884
11885         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
11886         use new scheduler dependencies lists.
11887         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
11888         (sched_analyze): Ditto.  Initialize dependencies lists.
11889         (add_forw_dep, compute_forward_dependences): Update to use new
11890         scheduler dependencies lists.
11891
11892         (init_dependency_caches): Init deps_obstack.
11893         (free_dependency_caches): Free deps_obstack.
11894
11895         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
11896         new scheduler dependencies lists.
11897         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
11898         (add_back_forw_dep, delete_back_forw_dep): Ditto.
11899
11900         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
11901         Update to use new scheduler dependencies lists.
11902         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
11903         (debug_dependencies): Ditto.
11904         (schedule_region): Update comments.
11905
11906         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
11907         scheduler dependencies lists.
11908         (schedule_ebb): Update comments.
11909
11910         * rtl.def (DEPS_LIST): Remove.
11911
11912         * lists.c (unused_deps_list): Remove.
11913         (free_list): Update assertions.
11914
11915         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
11916         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
11917
11918         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
11919         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
11920
11921         * haifa-sched.c (comments): Update.
11922         (insn_cost1): Remove.  Inline the code into insn_cost ().
11923         (insn_cost): Update to use new scheduler dependencies lists.  Move
11924         processing of the dependency cost to dep_cost ().
11925         (dep_cost): New function.  Use it instead of insn_cost () when
11926         evaluating cost of the dependency.  Use compatible interface to
11927         interact with the target.
11928         (priority): Update to use new scheduler dependencies lists.
11929         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
11930         with greater number of insns that depend on the insn.
11931         (schedule_insn): Update to use new scheduler dependencies lists.  Add
11932         code to free backward dependencies lists.  Inline and optimize code
11933         from resolve_dep () - see PR28071.
11934         (ok_for_early_queue_removal): Update to use new scheduler dependencies
11935         lists.  Update call to targetm.sched.is_costly_dependence hook.
11936
11937         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
11938         scheduler dependencies lists.
11939
11940         (resolve_dep): Remove.  Move the logic to schedule_insn ().
11941         (init_h_i_d): Initialize dependencies lists.
11942
11943         (process_insn_depend_be_in_spec): Rename to
11944         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
11945         dependencies lists.
11946         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
11947         Update to use new scheduler dependencies lists.
11948         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
11949
11950         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
11951         new scheduler dependencies lists.
11952         (build_intra_loop_deps): Ditto.
11953
11954         * target.h (struct _dep): Declare to use in
11955         gcc_target.sched.is_costly_dependence.
11956         (struct gcc_target.sched.adjust_cost): Fix typo.
11957         (struct gcc_target.sched.is_costly_dependence): Change signature to use
11958         single dep_t parameter instead of an equivalent triad.
11959         (struct gcc_target.sched.adjust_cost_2): Remove.
11960
11961         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
11962
11963         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
11964
11965         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
11966         documentation.
11967         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
11968
11969         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
11970         (REG_DEP_TRUE): Document.
11971
11972         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
11973         Change signature to correspond to the targetm.sched.adjust_cost hook.
11974         Update use in TARGET_SCHED_ADJUST_COST_2.
11975         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
11976         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
11977         new scheduler dependencies lists.
11978         (ia64_gen_check): Ditto.
11979
11980         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
11981         dependencies lists.
11982
11983         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
11984         signature to correspond to the targetm.sched.is_costly_dependence hook.
11985         (is_costly_group): Update to use new scheduler dependencies lists.
11986
11987         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
11988         instead of INSN_COST () macro.
11989
11990 2007-02-01  Ian Lance Taylor  <iant@google.com>
11991
11992         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
11993
11994 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
11995
11996         * pa.md (tp_load): Correct mfctl instruction syntax.
11997
11998 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
11999
12000         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
12001         altivec_padding_size calculation on AIX.  Improve comment, add
12002         assert to verify that it's right.
12003
12004         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
12005         64-bit.
12006
12007 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
12008
12009         PR inline-asm/28686
12010         * global.c (global_alloc): Add mising initialization of
12011         ELIMINABLE_REGSET.
12012
12013 2007-02-01  Roger Sayle  <roger@eyesopen.com>
12014
12015         * alias.c (init_alias_analysis): Correct whitespace.
12016         * bb-reorder.c (fix_edges_for_rarely_executed_code,
12017         partition_hot_cold_basic_blocks): Likewise.
12018         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
12019         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
12020         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
12021         fold_builtin_snprintf_chk, fold_builtin_printf,
12022         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
12023         do_mpfr_arg3, do_mpfr_sincos): Likewise.
12024         * cfgcleanup.c (cleanup_cfg): Likewise.
12025         * cfgexpand.c (tree_expand_cfg): Likewise.
12026         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
12027         * function.c (get_next_funcdef_no): Likewise.
12028         * gengtype.c (main): Likewise.
12029         * genmodes.c (main): Likewise.
12030         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
12031         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
12032         * ifcvt.c (noce_emit_move_insn): Likewise.
12033         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
12034         Likewise.
12035         * stor-layout.c (get_best_mode): Likewise.
12036         * tree-ssa-loop-niter.c (get_val_for): Likewise.
12037         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
12038         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
12039         perform_var_substitution, solve_graph): Likewise.
12040         * tree-vrp.c (vrp_finalize): Likewise.
12041
12042 2007-02-01  Ian Lance Taylor  <iant@google.com>
12043
12044         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
12045         high part of a paradoxical subreg, return a constant zero.
12046
12047 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
12048
12049         * toplev.c (lang_dependent_init): Call init_set_costs.
12050         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
12051
12052 2007-02-01  Richard Guenther  <rguenther@suse.de>
12053
12054         PR middle-end/30656
12055         * fold-const.c (fold_negate_expr): Allow negating a
12056         constant if overflow does not change.
12057
12058 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12059
12060         * doc/c-tree.texi (Expression trees): Improve markup.
12061         * doc/tm.texi (Register Classes, Addressing Modes)
12062         (Floating Point): Fix spacing after abbreviations.  Fix some
12063         typos.
12064
12065 2007-02-01  Ben Elliston  <bje@au.ibm.com>
12066
12067         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
12068         * doc/contrib.texi: Likewise.
12069         * doc/install.texi: Likewise.
12070
12071 2007-01-31  Richard Henderson  <rth@redhat.com>
12072             Ian Lance Taylor  <iant@google.com>
12073
12074         * lower-subreg.c: New file.
12075         * rtl.def (CONCATN): Define.
12076         * passes.c (init_optimization_passes): Add pass_lower_subreg and
12077         pass_lower_subreg2.
12078         * emit-rtl.c (update_reg_offset): New static function, broken out
12079         of gen_rtx_REG_offset.
12080         (gen_rtx_REG_offset): Call update_reg_offset.
12081         (gen_reg_rtx_offset): New function.
12082         * regclass.c: Revert patch of 2006-03-05, restoring
12083         reg_scan_update.
12084         (clear_reg_info_regno): New function.
12085         * dwarf2out.c (concatn_loc_descriptor): New static function.
12086         (loc_descriptor): Handle CONCATN.
12087         * common.opt (fsplit_wide_types): New option.
12088         * opts.c (decode_options): Set flag_split_wide_types when
12089         optimizing.
12090         * timevar.def (TV_LOWER_SUBREG): Define.
12091         * rtl.h (gen_reg_rtx_offset): Declare.
12092         (reg_scan_update): Declare.
12093         * regs.h (clear_reg_info_regno): Declare.
12094         * tree-pass.h (pass_lower_subreg): Declare.
12095         (pass_lower_subreg2): Declare.
12096         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
12097         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
12098         -fsplit-wide-types.
12099         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
12100         * Makefile.in (OBJS-common): Add lower-subreg.o.
12101         (lower-subreg.o): New target.
12102
12103 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
12104
12105         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
12106
12107 2007-01-31  Anatoly Sokolov <aesok@post.ru>
12108
12109         PR target/19087
12110         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
12111
12112 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12113
12114         PR middle-end/29335
12115         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
12116
12117 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
12118
12119         * cfgloop.h: Include vec-prim.h.
12120         (enum li_flags): Remove LI_ONLY_OLD.
12121         (loop_iterator): Changed.
12122         (fel_next, fel_init): Iterate over loop tree.
12123         (FOR_EACH_LOOP_BREAK): New macro.
12124         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
12125         FOR_EACH_LOOP.
12126         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
12127         * modulo-sched.c (sms_schedule): Ditto.
12128         * tree-vectorizer.c (vectorize_loops): Ditto.
12129         * doc/loop.texi: Update information on loop numbering and behavior of
12130         FOR_EACH_LOOP wrto new loops.
12131         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
12132         add_to_evolution_1): Test nestedness of loops instead of comparing
12133         their numbers.
12134         * tree-chrec.c (chrec_fold_plus_poly_poly,
12135         chrec_fold_multiply_poly_poly, chrec_evaluate,
12136         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
12137         reset_evolution_in_loop): Ditto.
12138         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
12139
12140 2007-01-31  Dirk Mueller  <dmueller@suse.de>
12141
12142         * c-common.c (warn_about_parentheses): Separate warning about
12143         un-parenthized sequence of comparison operators from the one
12144         which is supposed to warn about x <= y <= z.
12145
12146 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
12147
12148         * optabs.h (enum optab_index): Add new OTI_isinf.
12149         (isinf_optab): Define corresponding macro.
12150         * optabs.c (init_optabs): Initialize isinf_optab.
12151         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
12152         patterns.
12153         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
12154         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
12155         using isinf_optab.
12156         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
12157         expand_builtin_interclass_mathfn.
12158         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
12159         * config/i386/i386.md (UNSPEC_FXAM): New constant.
12160         (fxam<mode>2_i387): New insn pattern.
12161         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
12162         built-in functions as x87 inline asm.
12163
12164 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
12165
12166         * config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
12167
12168 2007-01-30  Eric Christopher  <echristo@apple.com>
12169
12170         * config.gcc: Add geode.
12171
12172 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
12173
12174         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
12175         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
12176         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
12177         value-prof.c: Fix comment typos.
12178
12179 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12180
12181         PR c++/24745
12182         * doc/invoke.texi (Wpointer-arith): Document warning.
12183
12184 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
12185
12186         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
12187         the list of discrepancies from the draft TR.
12188
12189 2007-01-30  Dirk Mueller  <dmueller@suse.de>
12190
12191         PR c++/30601
12192         * doc/invoke.texi (-Wreturn-type): Update description to
12193         match new behavior.
12194
12195 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
12196
12197         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
12198
12199 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
12200
12201         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
12202         to handle optabs that operate on floating point input argument and
12203         output to integer output.
12204         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
12205         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
12206         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
12207         expand_builtin_interclass_mathfn ().
12208         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
12209         (ilogbsi2): Remove.
12210         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
12211         ilogbl built-in functions as x87 intrinsics.
12212
12213 2007-01-30  Richard Guenther  <rguenther@suse.de>
12214
12215         PR middle-end/27657
12216         * dwarf2out.c (reference_to_unused): Query varpool if the
12217         variable was output.
12218
12219 2007-01-30  Richard Guenther  <rguenther@suse.de>
12220
12221         PR middle-end/30313
12222         * passes.c (execute_one_pass): Reset in_gimple_form to not
12223         confuse non-unit-at-a-time mode.
12224
12225 2007-01-29  Roger Sayle  <roger@eyesopen.com>
12226             Richard Guenther  <rguenther@suse.de>
12227
12228         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
12229         avoid undefined behaviour on overflow.  Use force_fit_type_double
12230         to construct the constant with the specified TREE_OVERFLOW.
12231
12232 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
12233
12234         * config/dfp-bit.c: Add parameterized support for fp exceptions.
12235         * config/dfp-bit.h: Ditto.
12236
12237 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12238
12239         * c-decl.c (pop_scope): Replace warnings with call to
12240         warn_for_unused_label.
12241         * c-common.h (warn_for_unused_label): Declare.
12242         * c-common.c (warn_for_unused_label): Define.
12243
12244 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
12245
12246         * tree-optimize.c (update_inlined_to_pointers): Delete unused
12247         function.
12248
12249 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
12250
12251         * Makefile.in (USER_H): Remove decfloat.h.
12252         * ginclude/decfloat.h: Delete, moving contents to ...
12253         * ginclude/float.h: Add support for decimal floating point,
12254         guarded by __STDC_WANT_DEC_FP__.
12255
12256 2007-01-29  Mike Stump  <mrs@apple.com>
12257
12258         * doc/gccint.texi (Top): Rename Loop Representation to Loop
12259         Analysis and Representation to resolve case insensitive conflict.
12260         * doc/loop.texi (Loop Analysis and Representation): Likewise.
12261
12262 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
12263
12264         * tree.h (struct tree_memory_tag): Add aliases member.
12265         (MTAG_ALIASES): New macro.
12266         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
12267         (add_may_alias): Remove pointer-set. Update for may_aliases being
12268         a bitmap.
12269         (mark_aliases_call_clobbered): Update for may_aliases being a
12270         bitmap.
12271         (compute_tag_properties): Ditto.
12272         (create_partition_for): Ditto.
12273         (compute_memory_partitions): Ditto.
12274         (dump_may_aliases_for): Ditto.
12275         (is_aliased_with): Ditto.
12276         (add_may_alias_for_new_tag): Ditto.
12277         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
12278         (compute_is_aliased): New function.
12279         (compute_may_aliases): Call compute_is_aliased).
12280         (init_alias_info): Initialize alias_bitmap_obstack.
12281         (union_alias_set_into): New function.
12282         (compute_flow_sensitive_aliasing): Use union_aliases_into.
12283         (have_common_aliases_p): Rewrite to take two bitmaps and use
12284         intersection.
12285         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
12286         Update for bitmaps.
12287         (finalize_ref_all_pointers): Update for add_may_alias changes.
12288         (new_type_alias): Ditto.
12289         * tree-flow-inline.h (may_aliases): Return a bitmap.
12290         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
12291         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
12292         may_aliases being a bitmap.
12293         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
12294         may_aliases now returns a bitmap.
12295         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
12296         being a bitmap.
12297         * tree-ssa-operands.c (add_virtual_operand): Update for
12298         may_aliases being a bitmap.
12299
12300 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
12301
12302         PR tree-optimization/30630
12303         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
12304         variable as changed.
12305
12306 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
12307
12308         PR c++/28266
12309         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
12310         expanded only once even if an error occurs.
12311
12312 2007-01-29  Ben Elliston  <bje@au.ibm.com>
12313
12314         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
12315         (__gcov_average_profiler): Likewise.
12316         (__gcov_ior_profiler): Likewise.
12317         (__gcov_merge_ior): Likewise.
12318
12319 2007-01-28  Jan Hubicka  <jh@suse.cz>
12320
12321         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
12322         * value-prof.c (stringop_block_profile): Likewise.
12323
12324 2007-01-28  Jan Hubicka  <jh@suse.cz>
12325
12326         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
12327         variant handling histograms; add wrapper.
12328         (clear_storage_via_libcall): Export.
12329         (emit_block_move_hints): Break out from ...; add histograms.
12330         (emit_block_move): ... this one.
12331         (clear_storage_hints): Break out from ...; add histograms.
12332         (clear_storage): ... this one.
12333         (set_storage_via_memset): Handle histogram.
12334         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
12335         (clear_storage_hints, clear_storage_via_libcall): Declare.
12336         (set_storage_via_setmem): Update prototype.
12337         * doc/md.texi (movmem, setmem): Document new arguments.
12338
12339         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
12340         new histograms.
12341         (stringop_block_profile): New global function.
12342         (tree_stringops_values_to_profile): Profile block size and alignment.
12343         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
12344         HIST_TYPE_IOR.
12345         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
12346         (stringop_block_profile): Declare.
12347         * builtins.c: Include value-prof.h.
12348         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
12349         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
12350         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
12351         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
12352         * profile.c (instrument_values): Add new counters.
12353         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
12354         calls.
12355         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
12356         (tree_init_edge_profiler): Build new profilers.
12357         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
12358         (pass_tree_profile): Add dump.
12359         (tree_profile_hooks): Update.
12360         * Makefile.in (LIBGCOV): Add new constants.
12361         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
12362         __gcov_ior_profiler): New.
12363         * i386.md (movmem/setmem expanders): Add new optional arguments.
12364
12365 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
12366
12367         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
12368
12369 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
12370
12371         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
12372         (tree_unswitch_single_loop): Pass eni_size_weights to
12373         tree_num_loop_insns.
12374         * tree-ssa-loop-manip.c: Include tree-inline.h.
12375         (can_unroll_loop_p): Pass eni_size_weights to
12376         tree_num_loop_insns.
12377         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
12378         Pass eni_size_weights to estimate_num_insns.
12379         * tree.h (init_inline_once): Export.
12380         * toplev.c (backend_init): Call init_inline_once.
12381         * cgraphunit.c (cgraph_process_new_functions,
12382         cgraph_analyze_function): Pass eni_inlining_weights to
12383         estimate_num_insns.
12384         * ipa-inline.c (compute_inline_parameters): Ditto.
12385         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
12386         to estimate_num_insns.
12387         (try_unroll_loop_completely): Pass eni_size_weights to
12388         tree_num_loop_insns.
12389         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
12390         ot estimate_num_insns.
12391         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
12392         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
12393         * tree-inline.c (eni_inlining_weights, eni_size_weights,
12394         eni_time_weights): New variables.
12395         (init_inline_once): Initialize them.
12396         (struct eni_data): Mew.
12397         (estimate_num_insns_1, estimate_num_insns): Use weights.
12398         * tree-inline.h (struct eni_weights_d): New.
12399         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
12400         (estimate_num_insns): Declaration changed.
12401         * cfgloop.h (tree_num_loop_insns): Declaration changed.
12402         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
12403         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
12404
12405 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
12406
12407         * tree-data-ref.c (conflict_fn): Assert that the number of affine
12408         relations in the conflict function is valid.
12409
12410 2007-01-27  Ian Lance Taylor  <iant@google.com>
12411
12412         * common.opt: Add fstrict-overflow.
12413         * opts.c (decode_options): Set flag_strict_overflow if -O2.
12414         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
12415         (TYPE_OVERFLOW_UNDEFINED): Define.
12416         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
12417         Replace all uses.
12418         * tree.h (TYPE_TRAP_SIGNED): Don't define.
12419         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
12420         (fold_negate_expr): Likewise.
12421         (make_range): Likewise.
12422         (extract_muldiv_1): Likewise.
12423         (maybe_canonicalize_comparison): Likewise.
12424         (fold_comparison): Likewise.
12425         (fold_binary): Likewise.
12426         (tree_expr_nonnegative_p): Likewise.
12427         (tree_expr_nonzero_p): Likewise.
12428         * tree-vrp.c (compare_values): Likewise.
12429         (extract_range_from_binary_expr): Likewise.
12430         (extract_range_from_unary_expr): Likewise.
12431         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
12432         Likewise.
12433         (nowrap_type_p): Likewise.
12434         * tree-scalar-evolution.c (simple_iv): Likewise.
12435         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
12436         (build_range_check): Likewise.
12437         (extract_muldiv_1): Likewise.
12438         (fold_comparison): Likewise.
12439         * tree-vrp.c (vrp_int_const_binop): Likewise.
12440         (extract_range_from_unary_expr): Likewise.
12441         * convert.c (convert_to_integer): Likewise.
12442         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
12443         (fold_comparison): Likewise.
12444         (fold_binary): Likewise.
12445         * optabs.c (optab_for_tree_code): Likewise.
12446         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
12447         * simplify-rtx.c (simplify_const_relational_operation): Check
12448         flag_strict_overflow and flag_trapv.
12449         (simplify_const_relational_operation): Likewise.
12450         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
12451         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
12452         -fstrict-overflow.
12453
12454 2007-01-27  Roger Sayle  <roger@eyesopen.com>
12455
12456         * tree.c (tree_fold_gcd): Delete.
12457         * tree.h (tree_fold_gcd): Remove prototype.
12458         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
12459         test whether one constant integer is a multiple of another.  Instead
12460         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
12461         * fold-const.c (multiple_of_p):  We've determined both TOP and
12462         BOTTOM are integer constants so we can call int_const_binop directly
12463         instead of the more generic const_binop.
12464
12465 2007-01-27  Roger Sayle  <roger@eyesopen.com>
12466
12467         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
12468         1*X check that the constant hasn't overflowed, to preserve the
12469         TREE_OVERFLOW bit.
12470         (round_up): Provide an efficient implementation when rouding-up an
12471         INTEGER_CST to a power-of-two.
12472
12473 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
12474
12475         * doc/sourcebuild.texi: Add comma for clarity.
12476         * doc/extend.texi: Fix some typos.
12477         * doc/passes.texi: Likewise.
12478         * doc/cppinternals.texi: Likewise.
12479         * doc/c-tree.texi: Likewise.
12480         * doc/tree-ssa.texi: Likewise.
12481         * doc/install.texi: Likewise.
12482
12483 2007-01-27  Jan Hubicka  <jh@suse.cz>
12484
12485         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
12486         (pass_sra): Do not require alias information.
12487         * passes.c (init_optimization_passes): Add SRA
12488
12489 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
12490
12491         * tracer.c (rest_of_handle_tracer): We already cleaned
12492         up the CFG in tracer() so don't do it here again.
12493         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
12494         cleanup_cfg here, either.  And don't call renumber_insns.
12495
12496         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
12497         and BB_HEAD are in the insn stream here.  Instead make sure
12498         that BB_INSN is valid on all insns.  Also, do check here that
12499         there are no pending branch predictions...
12500         (rtl_verify_flow_info): ...instead of doing it here.  Checks
12501         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
12502         here.
12503
12504 2007-01-26  Roger Sayle  <roger@eyesopen.com>
12505
12506         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
12507         function to simplify/factorize operand order canonicalization.
12508         (ix86_fixup_binary_operands): Reorganize using the above function.
12509         (ix86_binary_operator_ok): Likewise.
12510
12511 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
12512
12513         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
12514         file scope from optimize_attrs.
12515         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
12516         up search.
12517         (optimize_attrs): Clear insn_code_values after freeing it.
12518
12519 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
12520
12521         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
12522         a parts.base assignment.
12523
12524 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
12525
12526         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
12527         (compute_subscript_distance, initialize_data_dependence_relation,
12528         finalize_ddr_dependent, analyze_ziv_subscript,
12529         analyze_siv_subscript_cst_affine,
12530         compute_overlap_steps_for_affine_univar,
12531         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
12532         analyze_siv_subscript, analyze_miv_subscript,
12533         analyze_overlapping_iterations, subscript_dependence_tester_1,
12534         compute_self_dependence, free_dependence_relation): Work
12535         with affine_fn instead of chrecs.
12536         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
12537         common_affine_function, affine_function_base,
12538         affine_function_constant_p, affine_fn_op, affine_fn_plus,
12539         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
12540         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
12541         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
12542         (all_chrecs_equal_p): Removed.
12543         * tree-data-ref.h (affine_fn, conflict_function): New types.
12544         (struct subscript): Change type of conflicting_iterations_in_a
12545         and conflicting_iterations_in_b.
12546
12547 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
12548
12549         PR other/30182
12550         * config/pa/pa.h (TARGET_HPUX_11): New.
12551         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
12552         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
12553
12554 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
12555         Richard Guenther  <rguenther@suse.de>
12556
12557         * tree-ssa-structalias.c (solve_graph): Handle case
12558         we merged the variable to another.
12559
12560 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12561
12562         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
12563         functions.
12564
12565         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
12566         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
12567
12568 2007-01-25  DJ Delorie  <dj@redhat.com>
12569
12570         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
12571         allow changes to modes which don't fit in those registers.
12572
12573         * reload1.c (choose_reload_regs): Check for invalid subregs before
12574         computing their locations, not after.
12575
12576 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
12577
12578         PR 25127
12579         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
12580         save Altivec registers in an eh_return function.
12581         (compute_vrsave_mask): Likewise.
12582         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
12583         for saving Altivec registers.
12584         (rs6000_emit_prologue): Don't allocate stack twice in
12585         eh_return function.  Correct expected value of altivec_save_offset
12586         when using save_world.  Describe save of R0 to stack when using
12587         save_world.  Describe stack pointer adjustment when using
12588         save_world.  Remove duplicated eh_return parameter register saving.
12589         Update sp_offset variable after save_world.
12590         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
12591         darwin-world.asm.
12592         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
12593         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
12594         implies Altivec.
12595
12596 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
12597
12598         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
12599
12600 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
12601
12602         PR other/30182
12603         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
12604         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
12605
12606 2007-01-25  Richard Guenther  <rguenther@suse.de>
12607
12608         * doc/invoke.texi (-Wcoverage-mismatch): Document.
12609         * common.opt (-Wcoverage-mismatch): New warning option.
12610         * coverage.c (get_coverage_counts): Ignore coverage mismatch
12611         if -Wcoverage-mismatch is given.
12612
12613 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
12614
12615         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
12616         (ipcp_driver): Change to static definition.
12617         Add dumping of the ifunctions.
12618         (constant_val_insert): Remove unused parameter. Support for SSA.
12619         (ipcp_propagate_const): Support for SSA.
12620         (ipcp_profile_bb_print): Print only analyzed nodes.
12621         (ipcp_replace_map_create): Remove support for Fortran constant
12622         for now.
12623         * ipa-prop.c (ipa_method_modify_stmt,
12624         ipa_callsite_compute_param): Support for SSA.
12625         * ipa-prop.h (ipcp_driver): Remove declaration.
12626         (IS_VALID_TREE_MAP_INDEX): Add define.
12627
12628 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
12629
12630         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
12631
12632 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12633
12634         PR middle-end/30447
12635         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
12636         constant argument to cabs and do it without checking for
12637         -funsafe-math-optimizations.
12638
12639 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
12640
12641         * c-common.h (RID_FIRST_CXX0X): New.
12642         (RID_LAST_CXX0X): New.
12643         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
12644         by -Wall.
12645         * c.opt (Wc++0x-compat): New.
12646         * doc/invoke.texi (-Wc++0x-compat): Document.
12647
12648 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12649
12650         * builtins.c (fold_builtin_carg): New.
12651         (fold_builtin_1): Use it.
12652
12653 2007-01-24  Jan Hubicka  <jh@suse.cz>
12654
12655         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
12656
12657         * ipa-inline.c (initial_insns, max_insns): Delete.
12658         (compute_max_insns): New function.
12659         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
12660         of insns as base for code growth.
12661         (cgraph_decide_inlining): Make initial_insns local; do not compute
12662         max_insns.
12663         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
12664         * doc/invoke.texi (inline-unit-growth): Update docs.
12665
12666 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
12667
12668         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
12669         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
12670         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
12671         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
12672         for CPUs that have PTA_CX16 set.
12673
12674         PR middle-end/27416
12675         * gimplify.c (omp_check_private): New function.
12676         (gimplify_scan_omp_clauses): Use it for
12677         firstprivate/lastprivate/reduction.
12678
12679         PR middle-end/30494
12680         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
12681         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
12682
12683         PR middle-end/30421
12684         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
12685         If lower_lastprivate_clauses emits some statements, append them
12686         to dlist rather than body_p and to body_p append an initializer.
12687         (lower_omp_for): Adjust caller.
12688
12689 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
12690
12691         * target.h (globalize_decl_name): New.
12692         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
12693         * output.h (default_globalize_decl_name): New.
12694         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
12695         globalize_label.
12696         (globalize_decl): Ditto.
12697         (default_globalize_decl_name): New.
12698         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
12699         (ia64_handle_version_id_attribute): New.
12700         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
12701         (ia64_asm_output_external): Use globalize_decl_name instead
12702         of globalize_label.
12703         * doc/extend.texi (version_id): New pragma.
12704         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
12705
12706 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12707
12708         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
12709         _uleb128_t and _Unwind_SWord with _sleb128_t.
12710         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
12711         uw_frame_state_for, uw_update_context_1): Likewise.
12712         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
12713         * unwind-pe.h (read_uleb128, read_sleb128,
12714         read_encoded_value_with_base): Likewise.
12715         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
12716
12717 2007-01-24  Richard Guenther  <rguenther@suse.de>
12718
12719         * builtins.c (expand_builtin_cexpi): Get the fndecl
12720         for cexp in the correct way.
12721
12722 2007-01-24  Jan Hubicka  <jh@suse.cz>
12723
12724         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
12725
12726 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
12727
12728         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
12729         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
12730         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
12731         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
12732         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
12733         __SIZEOF_PTRDIFF_T__.
12734         * doc/cpp.texi: Documentation for the new builtin macros added.
12735
12736 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
12737
12738         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
12739         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
12740         instead of operands[2] to avoid access past the end of array.
12741
12742 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
12743
12744         * reload1.c (emit_reload_insns): Pass the reload register
12745         for a non-spill output reload through forget_old_reloads_1.
12746
12747 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
12748
12749         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
12750         _SOFT_DOUBLE if doubles use software floating-point.
12751         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
12752         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
12753         * config/rs6000/darwin-ldouble.c: Also compile functions for
12754         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
12755         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
12756         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
12757         commented-out long double override.
12758         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
12759         * config/rs6000/eabispe.h: Likewise.
12760         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
12761         long double for non-SPE.
12762         (rs6000_handle_option): Likewise.
12763         (invalid_e500_subreg): Disallow more subregs involding DImode,
12764         DFmode, TImode or TFmode.
12765         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
12766         E500 double.
12767         (legitimate_lo_sum_address_p): Also check for TFmode for E500
12768         double.
12769         (rs6000_legitimize_address): Also handle TFmode for E500 double.
12770         (rs6000_legitimize_reload_address): Also handle TFmode for E500
12771         double.
12772         (rs6000_legitimate_address): Also check for TFmode for E500
12773         double.
12774         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
12775         (spe_build_register_parallel): Handle TFmode and TCmode.
12776         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
12777         double.
12778         (function_arg): Handle TFmode and TCmode for E500 double.
12779         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
12780         in general.
12781         (print_operand): Handle TFmode and TImode for %y.
12782         (rs6000_generate_compare): Handle TFmode comparisons for E500
12783         double.
12784         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
12785         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
12786         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
12787         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
12788         TFmode for E500 double.
12789         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
12790         (floatsidf2): Enable for E500 double.
12791         (movtf_softfloat): Use rs6000_nonimmediate_operand.
12792         (extenddftf2): Change to extenddftf2_fprs.
12793         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
12794         depending on TARGET_E500_DOUBLE.
12795         (extendsftf2): Enable for E500 double.
12796         (trunctfdf2): Enable for E500 double.
12797         (trunctfsf2): Change to trunctfsf2_fprs.
12798         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
12799         depending on TARGET_E500_DOUBLE.
12800         (floatsitf2): Enable for E500 double.
12801         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
12802         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
12803         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
12804         (negtf2): Change to negtf2_internal.
12805         (negtf2): New expander.
12806         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
12807         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
12808         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
12809         (movdi_internal32): Use rs6000_nonimmediate_operand.
12810         (unnamed splitter): Likewise.
12811         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
12812         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
12813         (SPE64TF, DITI): New mode macros.
12814         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
12815         modes.
12816         (frob_tf_ti): New.
12817         (frob_<mode>_di_2): New.
12818         (frob_tf_di_8_2): New.
12819         (frob_di_df): Change to frob_di_<mode>; allow more modes.
12820         (frob_ti_tf): New.
12821         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
12822         more modes.
12823         (frob_ti_<mode>_8_2): New.
12824         (frob_ti_tf_2): New.
12825         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
12826         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
12827         TFmode.
12828         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
12829         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
12830         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
12831         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
12832         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
12833         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
12834         tsttflt_gp): New.
12835
12836 2007-01-23  Ian Lance Taylor  <iant@google.com>
12837
12838         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
12839         insn-*.o first.
12840         (OBJS-archive): Reformat, alphabetize.
12841         (OBJS): Change out_object_file to OBJS-md.
12842
12843 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
12844
12845         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
12846         JUMP_P and CALL_P predicates where applicable.
12847         * config/i386/i386.c: Ditto.
12848         * config/i386/i386.md: Ditto.
12849         * config/i386/mmx.md: Ditto.
12850         * config/i386/predicates.md: Ditto.
12851
12852 2007-01-22  Andreas Schwab  <schwab@suse.de>
12853
12854         * config/m68k/m68k.h: Fix comment.
12855
12856 2007-01-22  Jan Hubicka  <jh@suse.cz>
12857
12858         * passes.c (init_optimization_passes): Do not rerun
12859         pass_early_warn_uninitialized.
12860
12861 2007-01-22  Richard Guenther  <rguenther@suse.de>
12862
12863         PR tree-optimization/30038
12864         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
12865         function.
12866         (execute_cse_sincos_1): Likewise.
12867         (execute_cse_sincos): Likewise.
12868         (gate_cse_sincos): Likewise.
12869         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
12870         the cexpi() canonicalization of sincos().
12871         * tree-pass.h (pass_cse_sincos): Declare.
12872         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
12873
12874 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
12875
12876         PR rtl-optimization/29329
12877         * combine.c (replaced_rhs_insn): Rename to i2mod.
12878         (replaced_rhs_value): Rename to i2mod_new_rhs.
12879         (i2mod_old_rhs): New global variable.
12880         (combine_instructions): Adjust for above change.  Save a copy of
12881         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
12882         note are substituted in the second instruction.
12883         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
12884         ditch the note if it pertains to the second eliminated register
12885         and this register is mentioned in i2mod_old_rhs.
12886
12887         Revert:
12888         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
12889
12890         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
12891         the insn to which the note was originally attached.
12892
12893 2007-01-21  Jan Hubicka  <jh@suse.cz>
12894
12895         * ipa-inline.c (inlining_mode): Comment, move up.
12896         (cgraph_decide_inlining_incrementally): Do not perform inlining
12897         itself; fix handling of flattening of self recursive functions.
12898         (cgraph_find_cycles): Remove.
12899         (cgraph_flatten_node): Remove.
12900         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
12901         (try_inline): New function.
12902         (cgraph_early_inlining): Update call of
12903         cgraph_decide_inlining_incrementally.  Apply inlining here.
12904         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
12905
12906 2007-01-21  Dirk Mueller  <dmueller@suse.de>
12907
12908         PR bootstrap/30511
12909         * tree-vrp.c (check_array_bounds): do not warn
12910         about ADDR_EXPR's of ARRAY_REF's which are immediately
12911         used in binary expressions.
12912
12913 2007-01-21  Ira Rosen  <irar@il.ibm.com>
12914
12915         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
12916         read_write_dep and macros for its access.
12917         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
12918         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
12919         argument, call vect_check_interleaving for every independent pair of
12920         data-refs. Mark loads that access the same memory location as a store
12921         in the loop.
12922         (vect_check_dependences): Remove.
12923         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
12924         call, fix the call to vect_analyze_data_ref_dependence.
12925         (vect_analyze_data_ref_access): For statements that access the same
12926         data-ref, check that they are not stores; for loads, check that there
12927         is no store that access the same location.
12928
12929 2007-01-20  Roger Sayle  <roger@eyesopen.com>
12930             Joseph Myers  <joseph@codesourcery.com>
12931
12932         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
12933         (-fdump-rtl-stack): Likewise.
12934         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
12935         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
12936         (-mpt-fixed): Use @minus{} for minus sign.
12937         (Using Precompiled Headers): Fix under/overfull hbox.
12938
12939 2007-01-20  Jan Hubicka  <jh@suse.cz>
12940
12941         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
12942         place within annotation.
12943
12944 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
12945
12946         * pa.c (output_move_double): Change array size of xoperands to 4.
12947
12948 2007-01-20  Jan Hubicka  <jh@suse.cz>
12949
12950         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
12951         as temporary.
12952
12953 2007-01-19  Ian Lance Taylor  <iant@google.com>
12954
12955         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
12956         constant to unsigned HOST_WIDE_INT before negating.
12957
12958 2007-01-19  Ian Lance Taylor  <iant@google.com>
12959
12960         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
12961         to unsigned.
12962         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
12963         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
12964         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
12965         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
12966         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
12967         (realloc_vdef, realloc_vuse): Change second parameter to
12968         unsigned.
12969         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
12970         fields to unsigned.
12971         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
12972         unsigned. Change x and lim locals to unsigned.
12973         (realloc_vdef, realloc_vuse): Change num_elem parameter to
12974         unsigned.
12975         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
12976         (copy_virtual_operands): Change i and n locals to unsigned.
12977
12978 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
12979
12980         PR middle-end/29335
12981         * builtins.c (fold_builtin_1): Handle builtin fdim.
12982
12983 2007-01-20  Jan Hubicka  <jh@suse.cz>
12984
12985         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
12986         * tree-ssa-structalias.c (compute_points_to_sets): Do call
12987         init_alias_heapvars.
12988         (init_alias_heapvars): Initialize only when not already initialized.
12989         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
12990
12991 2007-01-19  Roger Sayle  <roger@eyesopen.com>
12992
12993         * common.opt (fsigned-zeros): New command line option.
12994         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
12995         of flag_unsafe_math_optimizations.
12996         * opts.c (set_fast_math_flags): The -ffast-math command line option
12997         implies -fno-signed-zeros.
12998         (fast_math_flags_set_p): Likewise.
12999
13000         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
13001         the documentation of -ffast-math appropriately.  Wrap long lines.
13002
13003 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
13004
13005         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
13006         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
13007
13008 2007-01-19  Tomas Bily  <tbily@suse.cz>
13009
13010         * cgraphunit.c (cgraph_finalize_function): Updating of pid
13011         * tree-profile.c:
13012         (tree_init_ic_make_global_vars): New function
13013         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
13014         (tree_gen_ic_profiler): New function
13015         (tree_gen_ic_func_profiler): New function
13016         (tree_profiling): Added calling of tree_gen_ic_func_profiler
13017         (tree_profile_hooks): Added hook for indirec/virtual calls
13018         * value-prof.c (tree_find_values_to_profile): New case for
13019         indirect calls
13020         (tree_values_to_profile): Call for determining indirect/virtual
13021         counters
13022         (tree_indirect_call_to_profile): New function
13023         (tree_ic_transform): New function
13024         (tree_ic): New function
13025         (find_func_by_pid): New function
13026         (init_pid_map): New function
13027         (tree_value_profile_transformations): Added check for
13028         indirect/virtual call transformation
13029         * value-prof.h (enum hist_type): New counter type for
13030         indirect/virtual calls
13031         (profile_hooks): Added new hook for profiling indirect/virtual
13032         calls
13033         * profile.c (instrument_values): New case for indirect/virtual
13034         call added
13035         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
13036         (GCOV_COUNTER_V_INDIR): New counter type
13037         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
13038         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
13039         call added
13040         * cgraph.c: Definition of cgraph_max_pid
13041         (cgraph_create_node): Default init of pid attribute
13042         * cgraph.h: Declaration of cgraph_max_pid
13043         (struct cgraph_node): Added pid attribute
13044         * libgcov.c (__gcov_indirect_call_profiler): New function
13045         (__gcov_one_value_profiler_body): New function
13046         (__gcov_one_value_profiler): Body was moved to
13047         __gcov_one_value_profiler_body and calls it
13048
13049 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
13050
13051         * doc/gty.texi (Options): Document the mark_hook option to GTY.
13052         * gengtype.c (write_types_data, write_func_for_structure,
13053         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
13054         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
13055         (walk_type, write_func_for_structure): Generate the mark_hook if
13056         needed.
13057
13058 2007-01-19  Jan Hubicka  <jh@suse.cz>
13059
13060         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
13061         'early' argument take inlining mode argument specifying whether to
13062         inline for size/speeed or all functions; add support for flattening;
13063         improve dumpting.
13064         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
13065
13066 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
13067
13068         PR c++/17947
13069         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
13070         the name of the declared identifier.
13071
13072 2007-01-19  Dirk Mueller  <dmueller@suse.de>
13073
13074         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
13075         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
13076         duplicate evaluation.
13077
13078 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
13079
13080         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
13081         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
13082         to XFMode, use acosxf2 and truncate result to requested mode.
13083         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
13084         (asin<mode>2): Similarly, with asin expanders.
13085         (*fscalexf4_i387): Rename from *fscalexf4.
13086         (expNcorexf3): New expander.
13087         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
13088         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
13089         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
13090         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
13091         patterns for SSE math.
13092         (exp10<mode>2): Similarly, with exp10 expanders.
13093         (exp2<mode>2): Similarly, with exp2 expanders.
13094         (expm1<mode>2): Similarly, with expm1 expanders.
13095         (ldexp<mode>3): Similarly, with ldexp expanders.
13096         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
13097         Use gen_truncxf<mode>2_i387_noop to truncate result.
13098
13099 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13100
13101         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
13102         for ColdFire targets.
13103
13104 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
13105             Richard Sandiford  <richard@codesourcery.com>
13106
13107         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
13108         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
13109         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
13110         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
13111         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
13112         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
13113
13114 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13115
13116         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
13117         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
13118         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
13119         (*adddi_dilshr32_cf): New pattern.
13120         (adddi3, subdi3): Remove first alternatives.
13121
13122 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13123
13124         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
13125         implemented using move.l, do not use its cc result for floating-point
13126         comparisons.
13127
13128 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13129
13130         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
13131         from accepting 's' constraints if flag_pic.
13132
13133 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13134
13135         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
13136         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
13137         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
13138         condition from TARGET_68881 to TARGET_HARD_FLOAT.
13139
13140 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
13141
13142         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
13143         ColdFire alternatives.
13144         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
13145         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
13146         architectures that support ff1 instruction.
13147
13148 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13149             Julian Brown  <julian@codesourcery.com>
13150
13151         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
13152         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
13153         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
13154         Add commentary.
13155
13156 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
13157
13158         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
13159         and return a bool.
13160         (output_move_const_into_data_reg, output_move_simode_const): Delete.
13161         * config/m68k/m68k.c (const_method, const_int_cost): Take a
13162         HOST_WIDE_INT instead of an rtx.
13163         (m68k_rtx_costs): Update call accordingly.
13164         (output_move_const_into_data_reg): Likewise.  Fix formatting.
13165         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
13166         Return a bool.
13167         (output_move_simode_const): Update calls after above changes.
13168         Rework to use automatic variables and predicates like MEM_P.
13169         * config/m68k/m68k.md (pushexthisi_const): Update call to
13170         valid_mov3q_const.
13171
13172 2007-01-19  Dirk Mueller  <dmueller@suse.de>
13173
13174         * tree-ssa-alias.c (perform_var_substitution): Fix typo
13175         in dump_flags test.
13176
13177 2007-01-19  Richard Guenther  <rguenther@suse.de>
13178
13179         * builtins.c (expand_builtin_cexpi): Fall back to expanding
13180         via cexp in case sincos is not available.
13181
13182 2007-01-19  Richard Guenther  <rguenther@suse.de>
13183
13184         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
13185         * defaults.h (TARGET_HAS_SINCOS): Default to off.
13186         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
13187         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
13188         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
13189         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
13190         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
13191         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
13192
13193 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
13194
13195         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
13196         New insn patterns.
13197         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
13198         (atan2xf3): Directly generate RTL pattern.
13199         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
13200         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
13201         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13202         disable patterns for SSE math.
13203         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
13204         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
13205         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13206         disable patterns for SSE math.
13207
13208 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
13209
13210         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
13211
13212 2007-01-18  Roger Sayle  <roger@eyesopen.com>
13213
13214         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
13215         VIEW_CONVERT_EXPR to the same type as it's operand.
13216
13217 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
13218
13219         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
13220         configured for long double 128.
13221
13222 2007-01-18  Mike Stump  <mrs@apple.com>
13223
13224         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
13225         error.
13226
13227 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
13228
13229         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
13230         type correct.
13231
13232 2007-01-18  Jan Hubicka  <jh@suse.cz>
13233
13234         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
13235         greater than NUM_VOP_FREE_BUCKETS.
13236
13237 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
13238
13239         * tree-ssa-structalias.c: Update comments.
13240         (ptabitmap_obstack): Removed.
13241         (pta_obstack): New.
13242         (oldpta_obstack): Ditto.
13243         (stats): Add a few members.
13244         (struct variable_info): Remove node, complex, address_taken, and
13245         indirect_target members. Add oldsolution member.
13246         (new_var_info): Do not initialize removed members.
13247         (constraint_expr_type): Remove INCLUDES.
13248         (constraint_graph): Add size, implicit_preds, rep,
13249         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
13250         (FIRST_REF_NODE): New macro.
13251         (LAST_REF_NODE): Ditto.
13252         (FIRST_ADDR_NODE): Ditto.
13253         (find): New function.
13254         (unite): Ditto.
13255         (dump_constraint): Do not handle INCLUDES.
13256         (insert_into_complex): Do not insert duplicate constraints.
13257         (condense_varmap_nodes): Renamed and rewritten into ...
13258         (merge_node_constraints): This. Also fix bug in handling of
13259         offseted copy constraints.
13260         (clear_edges_for_node): No longer need to deal with preds at all,
13261         or removing associated preds/succs.
13262         (merge_graph_nodes): Deal with indirect_cycles.
13263         Don't deal with predecessors.
13264         (add_implicit_graph_edge): New function.
13265         (add_pred_graph_edge): Ditto.
13266         (add_graph_edge): Don't deal with predecessors.
13267         (build_constraint_graph): Removed.
13268         (build_pred_graph): New function.
13269         (build_succ_graph): Ditto.
13270         (struct scc_info): Removed in_component. Added roots, dfs, and
13271         node_mapping. Remove visited_index, unification_queue.
13272         (scc_visit): Deal with union-find we do now.
13273         Deal with cycles with REF nodes.
13274         (collapse_nodes): Renamed and rewritten to ...
13275         (unify_nodes): This.
13276         (process_unification_queue): Removed.
13277         (topo_visit): Cleanup
13278         (do_da_constraint): Use find.
13279         (do_sd_constraint): Ditto.
13280         (do_ds_constraint): Ditto.
13281         (do_complex_constraint): Ditto.
13282         (init_scc_info): Update for removed and added members.
13283         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
13284         (find_indirect_cycles): This.
13285         (equivalence_class): New variable.
13286         (label_visit): New function.
13287         (perform_variable_substitution): Rewritten.
13288         (free_var_substitution_info): New function.
13289         (find_equivalent_node): Ditto.
13290         (move_complex_constraints): Ditto.
13291         (eliminate_indirect_cycles): Ditto.
13292         (solve_graph): Only propagate changed bits.
13293         Use indirect cycle elimination.
13294         Use find.
13295         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
13296         (tree_id_eq): Renamed to ...
13297         (tree_vi_eq): This. Update for member change
13298         (insert_id_for_tree): Renamed and rewritten to ...
13299         (insert_vi_for_tree): This.
13300         (lookup_id_for_tree): Renamed and rewritten to ...
13301         (lookup_vi_for_tree): This.
13302         (get_id_for_tree): Renamed and rewritten to ...
13303         (get_vi_for_tree): Ditto.
13304         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
13305         (process_constraint): Don't handle INCLUDES.
13306         Remove special ADDRESSOF case.
13307         (find_func_aliases): Rewrite to use vi functions instead of id
13308         ones.
13309         (create_function_info_for): Ditto.
13310         (create_variable_info_for): Ditto.
13311         (intra_create_variable_infos): Ditto.
13312         (merge_smts_into): Ditto.
13313         (find_what_p_points_to): Ditto.
13314         (init_base_vars): Ditto.
13315         (init_alias_vars): Ditto.
13316         (remove_preds_and_fake_succs): New function.
13317         (dump_sa_points_to_info): Dump new stats.
13318         (dump_solution_for_var): Use find.
13319         (set_used_smts): Fix formatting.
13320         (compute_points_to_sets): Updated for new functions.
13321         (ipa_pta_execute): Ditto.
13322
13323 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13324             Richard Sandiford  <richard@codesourcery.com>
13325
13326         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
13327         parallels.
13328         * calls.c (expand_call): If the return value is a PARALLEL,
13329         extract its first member.
13330         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
13331         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
13332         use FUNCTION_EXTRA_EPILOGUE.
13333         (m68k_function_value): Return a PARALLEL if the return value
13334         is of a pointer type.
13335         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
13336         (FUNCTION_EXTRA_EPILOGUE): Remove.
13337         * config/m68k/m68k.md (D0_REG): New constant.
13338
13339 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13340
13341         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
13342         output a NOP for empty epilogues.
13343
13344 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13345
13346         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
13347         before function.  Extend register save check to include all
13348         registers, not just integer ones.
13349
13350 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13351
13352         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
13353         (m68k_use_return_insn): ...this.
13354         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
13355         * config/m68k/m68k.c (use_return_insn): Rename to...
13356         (m68k_use_return_insn): ...this.
13357         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
13358         of USE_RETURN_INSN.
13359
13360 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13361
13362         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
13363         nearest even, fix denormal rounding overflow.
13364
13365 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13366
13367         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
13368         f%$smove and f%$move.
13369         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
13370         (extendsfdf2_cf): Use fdmove instead of f%&move.
13371         (truncdfsf2_cf): Use fsmove instead of f%$smove.
13372         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
13373
13374 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13375
13376         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
13377         GPR<-GPR moves.
13378
13379 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13380
13381         * real.h (real_format): Add a canonical_nan_lsbs_set field.
13382         (coldfire_single_format): Declare.
13383         (coldfire_double_format): Likewise.
13384         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
13385         of qnan_msb_set to determine the lower bits of a canonical
13386         NaN significand.
13387         (encode_ieee_double): Likewise.
13388         (encode_ieee_quad): Likewise.
13389         (ieee_single_format): Initialize canonical_nan_lsbs_set.
13390         (mips_single_format): Likewise.
13391         (ieee_double_format): Likewise.
13392         (mips_double_format): Likewise.
13393         (ieee_extended_motorola_format): Likewise.
13394         (ieee_extended_intel_96_format): Likewise.
13395         (ieee_extended_intel_128_format): Likewise.
13396         (ieee_extended_intel_96_round_53_format): Likewise.
13397         (ibm_extended_format): Likewise.
13398         (mips_extended_format): Likewise.
13399         (ieee_quad_format): Likewise.
13400         (mips_quad_format): Likewise.
13401         (vax_f_format): Likewise.
13402         (vax_d_format): Likewise.
13403         (vax_g_format): Likewise.
13404         (i370_single_format): Likewise.
13405         (i370_double_format): Likewise.
13406         (decimal_single_format): Likewise.
13407         (decimal_double_format): Likewise.
13408         (decimal_quad_format): Likewise.
13409         (c4x_single_format): Likewise.
13410         (c4x_extended_format): Likewise.
13411         (real_internal_format): Likewise.
13412         (coldfire_single_format): New real_format.
13413         (coldfire_double_format): Likewise.
13414         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
13415         canonical_nan_lsbs_set.
13416         (pdp11_d_format): Likewise.
13417         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
13418         if TARGET_COLDFIRE_CPU.
13419
13420 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13421
13422         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
13423         (output_call, m68k_legitimize_call_address): Declare.
13424         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
13425         parenthesees.  Add support for a 'W' constraint.
13426         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
13427         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
13428         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
13429         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
13430         variables.
13431         (override_options): Initialize them.  Do not set flag_no_function_cse
13432         for TARGET_ID_SHARED_LIBRARY.
13433         (m68k_output_pic_call): Delete.
13434         (m68k_legitimize_call_address): New function.
13435         (print_operand): Remove the %o prefix.  Handle the %p prefix.
13436         (output_call): New function.
13437         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
13438         target address from the GOT if symbolic jumps are not allowed.
13439         * config/m68k/m68k.md (call, general_operand): Do not set
13440         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
13441         Merge separate flag_pic and !flag_pic define_insns into...
13442         (*call, *call_value): ...these new patterns.  Match the address
13443         rather than the containing MEM and require it to be a call_operand.
13444         Use output_call to generate the asm template.
13445         * config/m68k/predicates.md (const_call_operand): New predicate.
13446         (call_operand): Likewise.
13447
13448 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13449
13450         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
13451         (STACK_GROWS_DOWNWARD): Define to 1.
13452         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
13453         comments, emphasizing that these values are only defaults.
13454         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
13455         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
13456
13457 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13458
13459         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
13460
13461 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
13462             Richard Sandiford  <richard@codesourcery.com>
13463
13464         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
13465         (FP_REGNO_P): New macros.
13466         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
13467         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
13468         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
13469         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
13470
13471 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13472
13473         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13474         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
13475         to $tmake_file.
13476         * config/m68k/t-floatlib: New file, extracting common code from...
13477         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
13478         * config/m68k/t-uclinux: Here.
13479         * config/m68k/fpgnulib.c: Do not compile extendeed precision
13480         routines on ColdFire targets.
13481
13482 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
13483
13484         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
13485         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
13486         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
13487         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
13488         explicitly set MOTOROLA to 1.
13489         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
13490
13491 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13492             Nathan Sidwell  <nathan@codesourcery.com>
13493
13494         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
13495         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
13496         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
13497         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
13498         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
13499         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
13500         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
13501         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
13502         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
13503         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
13504         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
13505         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
13506         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
13507         (DBX_REGISTER_NUMBER): Delete.
13508         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
13509         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
13510         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
13511
13512 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13513
13514         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
13515         * config/flat.h: New file.
13516         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
13517         OBJECT_FORMAT_FLAT.
13518         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
13519         indirect references for -msep-data or -mid-shared-library.
13520         Do not use PC-relative code addresses either.
13521         * config/m68k/m68k.c (override_options): Restrict -fPIC error
13522         to -mpcrel.
13523         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
13524         for shared libraries and crt1.o for executables.  Use crti.o and
13525         crtbegin.o.
13526         (ENDFILE_SPEC): Use crtend.o and crtn.o.
13527         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
13528         Do not add -elf2flt or -shared-lib-id options here.
13529         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
13530         Pass -shared-lib-id if -mid-shared-library, taking the library
13531         identifier from -mshared-library-id if given, otherwise
13532         defaulting to 0.
13533         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
13534         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
13535         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
13536         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
13537         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
13538         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
13539         and crtend.o.
13540         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
13541         jump sequence for ISA A and ISA A+.
13542         (PICJUMP): Likewise.
13543
13544 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13545
13546         * config.gcc (m68k-*-uclinux*): Base the port on the common
13547         and m68k GNU/Linux files rather than on the generic ELF ones.
13548         * config/m68k/uclinux.h (TARGET_VERSION): Override.
13549         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
13550
13551 2007-01-18  Julian Brown  <julian@codesourcery.com>
13552             Richard Sandiford  <richard@codesourcery.com>
13553
13554         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
13555         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
13556         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
13557         before redefining.
13558         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
13559         80 unconditionally.
13560         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
13561
13562 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
13563
13564         * doc/install.texi: Document m68k-uclinuxoldabi.
13565         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
13566         * config/m68k/uclinux-oldabi.h: New file, copied from
13567         config/m68k/uclinux.h.
13568
13569 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
13570
13571         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
13572         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
13573         (m32r_compute_frame_size): Use unsigned for regno.
13574         (m32r_reload_lr): Use gen_frame_mem.
13575         (pop): New.
13576         (m32r_output_function_epilogue): Don't output the function epilogue
13577         textually here.
13578         (m32r_expand_epilogue): New.
13579         (direct_return): Return false if the function has the interrupt
13580         attribute.
13581         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
13582         * config/m32r/m32r.md (epilogue): New expander.
13583         (return_lr, return_rte): New insns.
13584         (return): Make it expander.
13585         (return_normal): New expander.
13586
13587 2007-01-18  Josh Conner  <jconner@apple.com>
13588
13589         PR target/30485
13590         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
13591         support for UNLE, UNLT, UNGE, and UNGT.
13592
13593 2007-01-18  Jan Hubicka  <jh@suse.cz>
13594
13595         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
13596         * tree-tailcall (add_virtual_phis): Likewise.
13597         (optimize_tail_call): Return TODOs.
13598         (execute_tail_calls): Return TODOs.
13599         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
13600         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
13601         changed.
13602         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
13603         Cleanup cfg using TODO.
13604         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
13605         * passes.c (execute_function_todo): When cleanup did something, remove
13606         unused locals.
13607         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
13608         (make_edges): Don't cleanup_cfg.
13609
13610 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
13611
13612         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
13613         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
13614         operate on the top of stack.
13615         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
13616         register handling of instructions that output to the second
13617         stack slot.
13618         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
13619         (move_for_stack_reg): Special-case check for dead destination
13620         stack slot for constant load of 1.0 inside UNSPEC_TAN.
13621
13622         * config/i386/i386.md (UNSPEC_TAN): New constant.
13623         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
13624         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
13625         to correctly model move of constant 1.0 to top stack slot.
13626         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
13627         (unnamed peephole2 pattern): Remove corresponding peephole2
13628         pattern that optimizes tan insn and loading of constant 1.0.
13629         (tanxf2): Use fptanxf4_i387.
13630         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
13631         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
13632         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
13633         disable patterns for SSE math.
13634         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
13635         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
13636
13637 2007-01-18  Dirk Mueller  <dmueller@suse.de>
13638             Richard Guenther <rguenther@suse.de>
13639
13640         PR diagnostic/8268
13641         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
13642         * common.opt (Warray-bounds): Add new warning option.
13643         * c-opts.c (c_common_handle_option): Define -Warray-bounds
13644         if -Wall is given.
13645         * Makefile.in: make tree-vrp.o depend on toplev.h
13646         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
13647         is enabled.
13648         (check_array_refs, check_array_bounds, check_array_ref): New.
13649
13650 2007-01-18  Jan Hubicka  <jh@suse.cz>
13651
13652         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
13653         (execute_ssa_ccp): Return flags conditionally.
13654         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
13655         changed.
13656         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
13657
13658 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
13659
13660         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
13661         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
13662
13663         * Makefile.c (GTFILES): Add cfglayout.h.
13664         * gengtype.c (open_base_files): Likewise.
13665         * cfglayout.c (cfg_layout_function_footer,
13666         cfg_layout_function_header) Reindent to make gengtype happy.
13667         * cfglayout.h (cfg_layout_function_footer,
13668         cfg_layout_function_header): Add GTY(()) marker.
13669
13670         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
13671
13672 2007-01-18  Ben Elliston  <bje@au.ibm.com>
13673
13674         * genautomata.c (write_automata): Include xstrerror output in the
13675         error message if writing the DFA description file fails.
13676
13677 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
13678
13679         * config/mips/mips-protos.h (mips_output_external): Make it
13680         return void.
13681         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
13682         * config/mips/mips.c (irix_output_external_libcall): Likewise.
13683         (extern_list): Likewise.
13684         (extern_head): Likewise.
13685         (TARGET_ASM_FILE_END): Likewise.
13686         (mips_file_end): Likewise.
13687         (mips_output_external): Rewritten.
13688
13689 2007-01-18  Ben Elliston  <bje@au.ibm.com>
13690
13691         * genpreds.c (write_insn_preds_c): Only write out the function
13692         body for regclass_for_constraint if we have register constraints.
13693
13694 2007-01-17  Tom Tromey  <tromey@redhat.com>
13695
13696         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
13697         * doc/install.texi (Testing): Use sourceware.org.
13698         (Binaries): Likewise.
13699         (Specific): Likewise.
13700         * doc/contrib.texi (Contributors): Use sourceware.org.
13701
13702 2007-01-17  Anatoly Sokolov <aesok@post.ru>
13703
13704         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
13705         (AVR_ENHANCED): Rename to ...
13706         (AVR_HAVE_MUL): ... new.
13707         (avr_enhanced_p): Rename to ...
13708         (avr_have_mul_p): ... new.
13709         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
13710         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
13711         * config/avr/avr.c (avr_enhanced_p): Rename to ...
13712         (avr_have_mul_p): ... new.
13713         (base_arch_s): Rename 'enhanced' to 'have_mul'.
13714         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
13715         'avr_enhanced_p' and 'enhanced'.
13716         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
13717         AVR_HAVE_MUL instead of AVR_ENHANCED.
13718         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
13719         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
13720         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
13721         instead of AVR_ENHANCED.
13722         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
13723         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
13724         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
13725
13726 2007-01-17  Ian Lance Taylor  <iant@google.com>
13727
13728         * vec.h (VEC_reserve_exact): Define.
13729         (vec_gc_p_reserve_exact): Declare.
13730         (vec_gc_o_reserve_exact): Declare.
13731         (vec_heap_p_reserve_exact): Declare.
13732         (vec_heap_o_reserve_exact): Declare.
13733         (VEC_OP (T,A,reserve_exact)): New static inline function, three
13734         versions.
13735         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
13736         negative parameter.
13737         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
13738         (VEC_OP (T,A,copy)) [all versions]: Likewise.
13739         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
13740         * vec.c (calculate_allocation): Add exact parameter.  Change all
13741         callers.
13742         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
13743         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
13744         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
13745         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
13746         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
13747         (vec_heap_p_reserve_exact): New function.
13748         (vec_heap_o_reserve_exact): New function.
13749
13750 2007-01-17  Jan Hubicka  <jh@suse.cz>
13751
13752         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
13753
13754 2007-01-17  Eric Christopher  <echristo@apple.com>
13755
13756         * config.gcc: Support core2 processor.
13757
13758 2007-01-16  Jan Hubicka  <jh@suse.cz>
13759
13760         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
13761         the names, just unlink the chain so we don't crash on dangling pointers
13762         to dead SSA names.
13763
13764 2007-01-16  Jan Hubicka  <jh@suse.cz>
13765
13766         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
13767         * tree-pass.h: Reorder to make IPA passes appear toegher.
13768         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
13769         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
13770         parameters, do not call early inliner.
13771         * ipa-inline.c: Update comments.  Include tree-flow.h
13772         (cgraph_decide_inlining): Do not compute inlining parameters.
13773         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
13774         be called with function context set up.
13775         (pass_ipa_inline): Remove unreachable functions before pass.
13776         (cgraph_early_inlining): Simplify assuming to be called from the
13777         PM as local pass.
13778         (pass_early_inline): New pass.
13779         (cgraph_gate_ipa_early_inlining): New gate.
13780         (pass_ipa_early_inline): Turn into simple wrapper.
13781         (compute_inline_parameters): New function.
13782         (gate_inline_passes): New gate.
13783         (pass_inline_parameters): New pass.
13784         (apply_inline): Move here from tree-optimize.c
13785         (pass_apply_inline): New pass.
13786         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
13787         transforming.
13788         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
13789         doing them by hand.
13790         (tree_function_versioning): Do not allocate dummy struct function.
13791         * tree-inline.h (optimize_inline_calls): Update prototype.
13792         * tree-optimize.c (execute_fixup_cfg): Export.
13793         (pass_fixup_cfg): Remove
13794         (tree_rest_of_compilation): Do not apply inlines.
13795         * tree-flow.h (execute_fixup_cfg): Declare.
13796         * Makefile.in (gt-passes.c): New.
13797         * passes.c: Include gt-passes.h
13798         (init_optimization_passes): New passes.
13799         (nnodes, order): New static vars.
13800         (do_per_function_toporder): New function.
13801         (execute_one_pass): Dump current pass here.
13802         (execute_ipa_pass_list): Don't dump current pass here.
13803
13804 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
13805
13806         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
13807         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
13808
13809 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
13810
13811         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
13812         (strong_alias): Define.
13813         (__gcc_qmul): Provide non-FMA for soft-float.
13814         (__gcc_qdiv): Same.
13815         (__gcc_qneg): New.
13816         (__gcc_qeq): New.
13817         (__gcc_qle): New.
13818         (__gcc_qge): New.
13819         (__gcc_qunord): New.
13820         (__gcc_stoq): New.
13821         (__gcc_dtoq): New.
13822         (__gcc_qtos): New.
13823         (__gcc_qtod): New.
13824         (__gcc_qtoi): New.
13825         (__gcc_qtou): New.
13826         (__gcc_itoq): New.
13827         (__gcc_utoq): New.
13828         (fmsub): New.
13829         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
13830         soft-float functions.
13831         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
13832         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
13833         about long double soft float.
13834
13835 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
13836             Tehila Meyzels  <tehila@il.ibm.com>
13837
13838         * tree-vectorizer.h (is_pattern_stmt_p): New.
13839         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
13840         formatting (tabs instead of spaces). Cleanup and clarify setting
13841         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
13842         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
13843         (vectorizable_type_demotion): Check that types are integral.
13844         (vectorizable_type_promotion): Likewise.
13845         (vectorizable_store): Fix typo.  Eliminate new-line at end of
13846         comments.
13847
13848 2007-01-16  Jan Hubicka  <jh@suse.cz>
13849
13850         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
13851         cgraph edges too.
13852
13853 2007-01-15  Eric Christopher  <echristo@apple.com>
13854
13855         * ifcvt.c: Include vec.h, vecprim.h.
13856         (check_cond_move_block): New argument regs.
13857         Reorganize. Add registers used to regs.
13858         (cond_move_process_if_block): Use regs set above as
13859         loop bounds.
13860
13861 2007-01-15  Eric Christopher  <echristo@apple.com>
13862
13863         * config/darwin.h: Update copyright.
13864         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
13865         (LINK_COMMAND_SPEC): Add -u.
13866         (LINK_SPEC): Fix umbrella for above.
13867
13868 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
13869
13870         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
13871         glibc CVS.
13872
13873 2007-01-15  Tom Tromey  <tromey@redhat.com>
13874
13875         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
13876         * doc/install.texi (Testing): Don't mention jacks.
13877         (Configuration): Document --enable-java-maintainer-mode.  Move
13878         --with-java-home to libgcj-specific section.  Document
13879         --with-ecj-jar.
13880         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
13881
13882 2007-01-15  Jan Hubicka  <jh@suse.cz>
13883
13884         * tree-ssa-dce.c (DCE_TODOs): New.
13885         (propagate_necessity): Return if something changed.
13886         (eliminate_unnecessary_stmts): Likewise.
13887         (perform_tree_ssa_dce): Return TODO flags when needed.
13888         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
13889
13890 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
13891
13892         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
13893         (fyl2x_extend<mode>xf3_i387): New insn pattern.
13894         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
13895         patterns using X87MODEF12 mode macro.  Extend operand 1
13896         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
13897         (log10<mode>2): Ditto.
13898         (log2<mode>2): Ditto.
13899         (log1p<mode>2): Ditto.
13900         (logb<mode>2): Ditto.
13901         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
13902         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
13903         (*fxtractxf3_i387): Rename from *fxtractxf3.
13904         (fxtract_extend<mode>xf3_i387): New insn pattern.
13905         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
13906         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
13907         and gen_fyl2xxf3_i387().
13908
13909 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
13910
13911         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
13912         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
13913         get_loop_exit_edges.  Changed return type to bool.
13914         * cfgloop.h (fix_loop_placement): Declaration removed.
13915
13916 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
13917
13918         * param.h (MIN_VECT_LOOP_BOUND): New.
13919         * params.def (MIN_VECT_LOOP_BOUND): New.
13920         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
13921         argument - minimum threshold for number of iterations.
13922         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
13923         argument to declaration.
13924         * tree-vect-analyze.c (vect_analyze_operations): Check value of
13925         MIN_VECT_LOOP_BOUND.
13926         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
13927         slpeel_tree_peel_loop_to_edge with additional argument.
13928         (vect_do_peeling_for_alignment): Likewise.
13929         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
13930
13931 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
13932
13933         PR target/30413
13934         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
13935         operands of size 1.
13936
13937 2007-01-14  Jan Hubicka  <jh@suse.cz>
13938
13939         * tree-dfa.c (remove_referenced_var): New function.
13940         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
13941         prune referenced vars list too.
13942         * tree-flow.h (remove_referenced_var): Declare.
13943
13944 2007-01-14  Jan Hubicka  <jh@suse.cz>
13945
13946         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
13947         separately.
13948         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
13949         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
13950         * except.h (verify_eh_throw_table_statements): Kill prototype.
13951         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
13952         into call exrepssions.
13953         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
13954         eh trhow verifier.
13955         * tree-cfg.c: Include pointer-set.h.
13956         (verify_node_sharing): Work on pointer set.
13957         (verify_eh_throw_stmt_node): New.
13958         (verify_stmts): Use pointers sets, verify throw_stmt.
13959
13960 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
13961
13962         * ipa-reference.c (analyze_function): Consider also addresses taken
13963         in phi nodes.
13964
13965 2007-01-12  Roger Sayle  <roger@eyesopen.com>
13966
13967         * c-typeck.c (null_pointer_constant_p): Replace use of
13968         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13969         (build_c_cast): Likewise.
13970
13971 2007-01-12  Roger Sayle  <roger@eyesopen.com>
13972
13973         * tree.h (force_fit_type_double): Remove unused final argument.
13974         * c-common.c (constant_expression_warning): Replace use of
13975         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
13976         (convert_and_check): Likewise.
13977         (shorten_compare): Update call to force_fit_type_double.
13978         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
13979         * convert.c (convert_to_pointer): Update call to
13980         force_fit_type_double.
13981         * fold-const.c (force_fit_type_double): Remove overflowed_const
13982         argument.
13983         (int_const_binop, fold_convert_const_int_from_int,
13984         fold_convert_const_int_from_real, fold_div_compare,
13985         fold_sign_changed_comparison, fold_unary, fold_negate_const,
13986         fold_abs_const, fold_not_const): Remove the final argument from
13987         calls to force_fit_type_double.
13988
13989 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
13990
13991         * configure.ac: Set insn to "nop" for spu-*-* also.
13992         * configure: Regenerate.
13993
13994 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
13995
13996         * builtins.def : Add BUILT_IN_FREE.
13997
13998 2007-01-12  Jan Hubicka  <jh@suse.cz>
13999
14000         PR tree-optimization/30443
14001         * tree-inline.c (tree_function_versioning): Do not optimize when
14002         cloning for inlining.
14003
14004 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
14005
14006         * doc/loop.texi: Document recording of loop exits.
14007         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
14008         (update_single_exits_after_duplication,
14009         update_single_exit_for_duplicated_loop,
14010         update_single_exit_for_duplicated_loops): Removed.
14011         (duplicate_loop_to_header_edge): Do not call
14012         update_single_exits_after_duplication and
14013         update_single_exit_for_duplicated_loops.
14014         (loop_version): Do not update single_exit information.
14015         (fix_loop_structure): Use record_loop_exits instead of
14016         mark_single_exit_loops.
14017         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
14018         the lists of loop exits.
14019         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
14020         split_edge, merge_blocks): Update the lists of loop exits.
14021         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
14022         loop_optimizer_init.
14023         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
14024         of mark_single_exit_loops.
14025         (loop_optimizer_finalize): Call release_recorded_exits.
14026         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
14027         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
14028         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
14029         update single exit information.
14030         * lambda-code.c (perfect_nestify): Ditto.
14031         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
14032         (mark_single_exit_loops): Removed.
14033         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
14034         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
14035         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
14036         functions.
14037         (get_loop_exit_edges, single_exit): Use recorded exit lists.
14038         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
14039         (verify_loop_structure): Verify consistency of the exit lists.
14040         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
14041         (set_single_exit): Removed.
14042         * cfgloop.h (struct loop_exit): New function.
14043         (struct loop): single_exit_ field replaced by exits field.
14044         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
14045         (struct loops): Added exits hash.
14046         (mark_single_exit_loops, set_single_exit): Declaration removed.
14047         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
14048
14049 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14050
14051         * doc/invoke.texi: Avoid use of @headitem.
14052
14053 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14054
14055         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
14056
14057 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14058
14059         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
14060         list of targets.
14061
14062 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14063             Richard Sandiford  <richard@codesourcery.com>
14064
14065         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
14066         * config/m68k/m68k.opt: Resort options.
14067         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
14068
14069 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14070             Richard Sandiford  <richard@codesourcery.com>
14071
14072         * doc/invoke.texi: Document the macros that are defined by
14073         m68k's -mtune and -mhard-float options.
14074         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
14075         (m68k_cpp_cpu_family): Likewise.
14076         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
14077         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
14078         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
14079         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
14080         (m68k_cpp_cpu_family): Likewise.
14081
14082 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14083
14084         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
14085         macros besides mc68000 as tuning macros.  Use a switch statement
14086         to set them and mcpu32.
14087
14088 2007-01-12  Julian Brown  <julian@codesourcery.com>
14089
14090         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
14091         (TARGET_68040_ONLY): Rename to...
14092         (TARGET_68040): ...this.
14093         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
14094         * config/m68k/m68k.md: Likewise.
14095
14096 2007-01-12  Julian Brown  <julian@codesourcery.com>
14097             Nathan Sidwell  <nathan@codesourcery.com>
14098             Richard Sandiford  <richard@codesourcery.com>
14099
14100         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
14101         the -mcpu= argument associated with the --with-cpu setting.
14102         Define M68K_DEFAULT_TUNE to the default -mtune= option,
14103         if different from the one implied by the -mcpu setting.
14104         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
14105         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
14106         * doc/invoke.texi: Mention ColdFire in the introduction to the
14107         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
14108         -mno-div and -mhard-float options.  Make -m68881 a synonym for
14109         -mhard-float.  Document the previously-undocumented -m5206e,
14110         -m528x, -m5307 and -m5407 options.  Tweak the existing option
14111         documentation for consistency.
14112         * doc/install.texi: Mention new --with-cpu arguments.
14113         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
14114         default CPU if neither -mcpu nor -march are specified.
14115         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
14116         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
14117         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
14118         using m68k_tune to decide between families that implement the
14119         same ISA.  Use m68k_tune to set __mcfv4e__.
14120         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
14121         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
14122         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
14123         (FL_ISA_C, FL_ISA_MMU): New macros.
14124         (MASK_COLDFIRE): Delete.
14125         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
14126         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
14127         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
14128         (TARGET_HARD_FLOAT): Do not define here.
14129         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
14130         (TUNE_68000): New macro.
14131         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
14132         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
14133         (TUNE_CFV2): Redefine in terms of m68k_tune.
14134         (uarch_type, target_device, fpu_type): New enums.
14135         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
14136         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
14137         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
14138         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
14139         (FL_FOR_isa_c): New macros.
14140         (m68k_isa): New enum.
14141         (m68k_target_selection): New structure.
14142         (all_devices, all_isas, all_microarchs): New tables.
14143         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
14144         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
14145         (MASK_ALL_CPU_BITS): Delete.
14146         (m68k_find_selection): New function.
14147         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
14148         Map the legacy target options to a combination of the new ones.
14149         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
14150         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
14151         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
14152         settings.
14153         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
14154         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
14155         properties.
14156         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
14157         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
14158         * config/m68k/m68k-devices.def: New file.
14159
14160 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14161             Nathan Sidwell  <nathan@codesourcery.com>
14162
14163         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
14164         (SUBTARGET_EXTRA_SPECS): New macros.
14165         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
14166         use %(asm_cpu_spec) instead.
14167         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
14168         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
14169         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
14170         (EXTRA_SPECS): Rename to...
14171         (SUBTARGET_EXTRA_SPECS): ...this.
14172
14173 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
14174             Richard Sandiford  <richard@codesourcery.com>
14175             Julian Brown  <julian@codesourcery.com>
14176
14177         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
14178         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
14179         to the configuration's default CPU.
14180         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
14181         Remove default masks.
14182         (m680[012]0-*-*): Set the default with_cpu to the first part of
14183         the target name.
14184         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
14185         (m68k*-*-linux): Extend the --with-cpu handling to...
14186         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
14187         and m68010.  Don't set target_cpu_default2.
14188         * doc/install.texi: Document --with-cpu for m68k.
14189         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
14190         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
14191         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
14192         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
14193         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
14194         (ASM_SPEC): Remove use of %(asm_cpu_default).
14195         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
14196         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
14197         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
14198         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
14199         __HAVE_FPU__ if TARGET_HARD_FLOAT.
14200         (TARGET_DEFAULT): Delete.
14201         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
14202         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
14203         (CPP_CPU_SPEC): Delete.
14204         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
14205         the appropriate string.
14206         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
14207         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
14208         (ASM_SPEC): Don't use %(asm_default_spec).
14209         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
14210         TARGET_DEFAULT and add MASK_68881.
14211         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
14212
14213 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14214
14215         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
14216         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
14217         MASK_68010 alongside MASK_68020.
14218         * doc/invoke.texi: Document -m68010.
14219         * config/m68k/m68k.opt (m68010): New.
14220         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
14221         if TUNE_68010.
14222         (TUNE_68010): New macro.
14223         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
14224         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
14225         (M68K_CPU_m68332): Add MASK_68010.
14226         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
14227         fallback definition.
14228         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
14229         defines.
14230         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
14231         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
14232         to all entries that use MASK_68020.
14233         (output_move_simode_const, output_move_himode, output_move_qimode)
14234         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
14235         instead of TARGET_68020 to select clr behavior.  Remove comment
14236         about there being no TARGET_68010.
14237         * config/m68k/m68k.md: Likewise throughout.
14238
14239 2007-01-12  Julian Brown  <julian@codesourcery.com>
14240
14241         * config/m68k/m68k.h (TARGET_ISAB): New macro.
14242         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
14243         * config/m68k/m68k.md: Likewise.
14244
14245 2007-01-12  Julian Brown  <julian@codesourcery.com>
14246
14247         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
14248         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
14249
14250 2007-01-12  Julian Brown  <julian@codesourcery.com>
14251
14252         * config/m68k/m68k.h (TUNE_68040_60): New macro.
14253         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
14254         * config/m68k/m68k.md: Likewise.
14255
14256 2007-01-12  Julian Brown  <julian@codesourcery.com>
14257             Richard Sandiford  <richard@codesourcery.com>
14258
14259         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
14260         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
14261         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
14262         TARGET_CPU32.
14263         (TARGET_CPU32): Rename to...
14264         (TUNE_CPU32): ...this.
14265         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
14266         (TUNE_CFV2): New macros.
14267         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
14268         remove conditions that are implied by TARGET_68020.
14269         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
14270         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
14271         (m68k_output_function_epilogue): Likewise.
14272         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
14273         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
14274         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
14275         non-68000 timings.  Refactor multiplication and division costs.
14276         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
14277         TUNE_CPU32 instead of TARGET_CPU32.
14278         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
14279         and TUNE_68060 instead of TARGET_68060.
14280         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
14281         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
14282         TARGET_CPU32.
14283         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
14284         && !TARGET_COLDFIRE" to choose between moveq and clr.
14285         Likewise in the unnamed movsf pattern.
14286         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
14287         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
14288         ashiftrt pattern.
14289
14290 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
14291
14292         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
14293         of tabbing before backslashes.
14294
14295 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
14296
14297         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
14298         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
14299         (ASM_OUTPUT_INTERNAL_LABEL): Define.
14300
14301 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
14302
14303         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
14304         find_interesting_uses_cond.
14305         (find_interesting_uses_cond): Use extract_cond_operands.
14306         (rewrite_use_compare): Use extract_cond_operands and
14307         force_gimple_operand_bsi.  Do not call update_stmt.
14308         (determine_use_iv_cost_condition): Use extract_cond_operands.
14309         Return cheaper of using original bound and changing the exit bound.
14310
14311 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
14312
14313         PR tree-optimization/29516
14314         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
14315         most_expensive_mult_to_index, addr_to_parts,
14316         create_mem_ref, maybe_fold_tmr): Make the type of
14317         fields of TARGET_MEM_REF sizetype.
14318         (move_fixed_address_to_symbol, move_pointer_to_base):
14319         New functions.
14320         * tree.def (TARGET_MEM_REF): Add comment on types of
14321         the operands.
14322
14323 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
14324
14325         * c-common.c (vector_types_convertible_p): Treat opaque types as
14326         always convertible if they have the same size, but not otherwise.
14327
14328 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
14329
14330         * ifcvt.c (struct noce_if_info): Add comments to the fields.
14331         Remove the b_unconditional field.
14332         (noce_try_sign_mask): Do not look at b_unconditional.
14333         (noce_process_if_block): Do not use merge_if_blocks.  Update
14334         the CFG here.  Do not set b_unconditional.
14335         (cond_move_process_if_block): Likewise.
14336         (find_cond_trap): Likewise.
14337         (check_cond_move_block): Require simple jump insns at the end
14338         of the basic block.
14339
14340 2007-01-11  Jan Hubicka  <jh@suse.cz>
14341
14342         PR tree-optimization/1046
14343         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
14344         when alias info is not ready.
14345         (pass_tail_recursion): Do not require aliasing.
14346         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
14347         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
14348         * tree-ssa-copy.c (pass_copy_prop): Likewise.
14349         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
14350         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
14351         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
14352         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
14353         before inlining.
14354         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
14355         When aliasing is not build, mark statement as volatile.
14356
14357 2007-01-11  Tom Tromey  <tromey@redhat.com>
14358
14359         PR preprocessor/15185, PR preprocessor/20989:
14360         * doc/cppopts.texi <-MT>: Update description of algorithm for
14361         computing default target.
14362         <-M, -MD>: Reword "basename" text.
14363
14364 2007-01-11  Roger Sayle  <roger@eyesopen.com>
14365
14366         * builtins.c (expand_builtin_pow, expand_builtin_powi,
14367         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
14368         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
14369         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
14370         fold_builtin_bswap, real_constp, fold_builtin_pow,
14371         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
14372         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
14373         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
14374         * convert.c (convert_to_pointer): Likewise.
14375         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
14376         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
14377         const_binop, fold_convert_const_int_from_int,
14378         fold_convert_const_int_from_real,
14379         fold_convert_const_real_from_real, sign_bit_p,
14380         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
14381         fold_sign_changed_comparison, fold_unary, fold_comparison,
14382         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
14383         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
14384         * print-tree.c (print_node_brief, print_node): Likewise.
14385         * stor-layout.c (place_field, layout_type): Likewise.
14386         * tree-chrec.c (keep_cast): Likewise.
14387         * tree.c (build_vector, build_real, build_real_from_int_cst,
14388         build_complex): Likewise.
14389
14390 2007-01-11  Roger Sayle  <roger@eyesopen.com>
14391
14392         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
14393         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
14394
14395 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
14396
14397         * configure.ac (strict1_warn): Rename to strict_warn.
14398         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
14399         cc_set_by_configure, quoted_cc_set_by_configure,
14400         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
14401         all_boot_languages, all_stagestuff): Remove.
14402         (target_list): Remove bootstrap targets.
14403         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
14404         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
14405         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
14406         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
14407         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
14408         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
14409         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
14410         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
14411         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
14412         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
14413         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
14414         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
14415         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
14416         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
14417         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
14418         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
14419         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
14420         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
14421         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
14422         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
14423         (mostlyclean): Adjust.
14424         (clean, distclean): Don't mention bootstrap stuff.
14425         * configure: Regenerate.
14426         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
14427         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
14428         treelang/config-lang.in (stagestuff): Remove.
14429         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
14430         stageprofile, stagefeedback, stagestuff): Remove mention.
14431
14432 2007-01-11  Nick Clifton  <nickc@redhat.com>
14433
14434         * config/mcore/predicates.md (mcore_general_movesrc_operand):
14435         Accept CONSTs.
14436         (mcore_general_movdst_operand): Do not accept CONST_INTs.
14437         (mcore_arith_K_S_operand): Run the test for the S constraint not
14438         the test for the M constraint.
14439         (mcore_addsub_operand): Do not accept integer values that are
14440         larger than 32 bits.
14441         * config/mcore/mcore.md: Remove unused constraints from split.
14442         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
14443         (addsi3): Likewise.
14444         (allocate_stack): Likewise.
14445         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
14446         operands to 32 bits.
14447         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
14448         INTVAL.
14449         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
14450         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
14451         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
14452         mcore_output_bclri, mcore_output_andn, output_inline_const,
14453         mcore_output_move, mcore_output_movedouble): Likewise.
14454         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
14455         (output_inline_const): Likewise.
14456         (output_inline_const): Fix format strings used in sprintf
14457         statements.
14458         * config/mcore/mcore-protos.h: Update prototypes for changed
14459         functions in mcore.c.
14460         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
14461         HOST_WIDE_INT and not int.
14462         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
14463         CONST_OK_FOR_N): Likewise.
14464         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
14465         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
14466         an INTVAL.
14467
14468 2007-01-10  Jan Hubicka  <jh@suse.cz>
14469
14470         * tree-vrp.c (remove_range_assertions): Release defs.
14471         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
14472         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
14473
14474 2007-01-10  Paul Brook  <paul@codesourcery.com>
14475
14476         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
14477         * config/arm/arm.md (mulsi3subsi): New insn.
14478
14479 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
14480
14481         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
14482         (tree_transform_and_unroll_loop): New.
14483         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
14484         Declare.
14485
14486 2007-01-10  Robert Kennedy <jimbob@google.com>
14487
14488         * fold-const.c (fold_comparison): Fold comparisons like (x *
14489         1000 < 0) to (x < 0).
14490
14491 2007-01-10  Ian Lance Taylor  <iant@google.com>
14492
14493         * tree-pretty-print.c (dump_generic_node): Print parentheses when
14494         operands have the same priority.
14495
14496 2007-01-10  Tom Tromey  <tromey@redhat.com>
14497
14498         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
14499         (fold_binary): Likewise.
14500         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
14501         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
14502         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
14503         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
14504         * langhooks.h (struct lang_hooks): Removed field
14505         'can_use_bit_fields_p'.
14506
14507 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
14508
14509         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
14510
14511 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
14512
14513         * function.c (get_last_funcdef_no): New function.
14514         * function.h (get_last_funcdef_no): Declare.
14515         * tree-inline.c (initialize_cfun): Add initialization.
14516         (tree_function_versioning): Cleanup.
14517
14518 2007-01-10  Jan Hubicka  <jh@suse.cz>
14519
14520         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
14521         PHIs.
14522
14523 2007-01-10  Sa Liu  <saliu@de.ibm.com>
14524             Ben Elliston  <bje@au.ibm.com>
14525
14526         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
14527         for SAVE_NONLOCAL and Pmode for any other save level.
14528         * spu-protos.h (spu_restore_stack_block): Declare.
14529         * spu.md (save_stack_block): Remove.
14530         (restore_stack_block): Call spu_restore_stack_block.
14531         * spu.c (spu_restore_stack_block): New function.
14532         (spu_expand_epilogue): Remove old comment.
14533
14534 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
14535
14536         PR tree-optimization/30322
14537         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
14538         (cand_value_at): Return the value as aff_tree.
14539         (may_eliminate_iv): Convert the bound from aff_tree to tree.
14540         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
14541         aff_combination_mult): New functions.
14542         (aff_combination_add): Use aff_combination_add_cst.
14543         (aff_combination_convert): Allow conversions to a wider type.
14544         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
14545         * tree-affine.h (aff_combination_mult): Declare.
14546
14547 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
14548
14549         * doc/tm.texi: Update documentation to reflect reality of exec
14550         and start file search behaviours. Update copyright year.
14551         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
14552         header file directories.
14553
14554 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
14555
14556         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
14557         (*cosxf2): Rename to cosxf2_i387.
14558         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
14559         using X87MODEF12 mode macro. Rename patterns to
14560         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
14561         for SSE math.
14562         (*cosdf2, *cossf2): Ditto.
14563         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
14564         to match extended input operands.
14565         (sincos<mode>3): New expander.
14566         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
14567         insn patterns and corresponding splitters.
14568
14569 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
14570
14571         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
14572         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
14573
14574 2007-01-09  Nicolas Pitre  <nico@cam.org>
14575
14576         PR target/30173
14577         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
14578
14579 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
14580
14581         * target.h (struct gcc_target): New field library_rtti_comdat.
14582         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
14583         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
14584         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
14585         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
14586
14587 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
14588
14589         * doc/invoke.texi (Optimize Options): Correct description of -O0.
14590
14591 2007-01-08  Richard Guenther  <rguenther@suse.de>
14592
14593         * tree.h (force_fit_type_double): Export.
14594         (force_fit_type): Remove.
14595         * fold-const.c (force_fit_type_double): New function.
14596         (force_fit_type): Remove.
14597         (int_const_binop): Use it.
14598         (fold_convert_const_int_from_int): Likewise.
14599         (fold_convert_const_int_from_real): Likewise.
14600         (fold_div_compare): Likewise.
14601         (fold_sign_changed_comparison): Likewise.
14602         (fold_unary): Likewise.
14603         (fold_negate_const): Likewise.
14604         (fold_abs_const): Likewise.
14605         (fold_not_const): Likewise.
14606         * c-common.c (shorten_compare): Use force_fit_type_double.
14607         * convert.c (convert_to_pointer): Likewise.
14608
14609 2007-01-08  Richard Guenther  <rguenther@suse.de>
14610
14611         * tree.h (build_int_cst_wide_type): Export.
14612         * tree.c (build_int_cst_wide_type): New function.
14613         (build_int_cst_wide): Fix comment.
14614         * builtins.c (fold_builtin_object_size): Use build_int_cst
14615         to build -1 or 0 of the correct type.  Use fit_double_type
14616         to check for overflow.
14617         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
14618         to build the mask.
14619         (decode_field_reference): Likewise.
14620         (all_ones_mask_p): Likewise.
14621         (native_interpret_int): Use build_int_cst_wide_type.
14622         (fold_binary): Use build_int_cst_type to build an all-ones
14623         value.
14624         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
14625
14626 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
14627
14628         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
14629
14630 2007-01-09  Ben Elliston  <bje@au.ibm.com>
14631
14632         * genautomata.c (STATS_OPTION): New option.
14633         (stats_flag): New flag.
14634         (gen_automata_option): Handle it.
14635         (initiate_automaton_gen): Ditto.
14636         (write_automata): Output statistics only if stats_flag is
14637         set. Likewise, output time statistics only if time_flag is set.
14638         * doc/md.texi (Processor pipeline description): Document new flag.
14639
14640 2007-01-08  Richard Guenther  <rguenther@suse.de>
14641
14642         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
14643         * tree.c (build_int_cst_type): Likewise.
14644         (size_in_bytes): Don't call force_fit_type on the result.
14645         (int_fits_type_p): Use fit_double_type.
14646         * fold-const.c (fit_double_type): New function.
14647         (force_fit_type): Use it.
14648         * tree.h (fit_double_type): Export.
14649
14650 2007-01-08  Jan Hubicka  <jh@suse.cz>
14651
14652         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
14653         * ipa.c (function_and_variable_visibility): Fix return type.
14654
14655 2007-01-08  Richard Guenther  <rguenther@suse.de>
14656
14657         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
14658         of offset to build the index.
14659         * tree-pretty-print.c (dump_generic_node): Don't build negated
14660         const just for printing.
14661         * c-pretty-print.c (pp_c_integer_constant): Likewise.
14662         * builtins.c (fold_builtin_int_roundingfn): Check if result
14663         fits the type by using force_fit_type and comparing the result.
14664         * predict.c (predict_loops): Use compare_tree_int for comparison.
14665         * tree.c (build_int_cst): Fall back to integer_type_node for
14666         NULL_TREE type.
14667         (build_int_cst_wide): Assert type is non-null.
14668
14669 2007-01-08  Roberto Costa  <roberto.costa@st.com>
14670
14671         * tree-vrp.c (extract_range_from_cond_expr): New.
14672         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
14673         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
14674         as expressions.
14675         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
14676         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
14677         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
14678         used as expressions.
14679         * tree-object-size.c (cond_expr_object_size): New.
14680         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
14681
14682 2007-01-08  Jan Hubicka  <jh@suse.cz>
14683
14684         * tree-ssa-forwprop.c (forward_propagate_into_cond,
14685         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
14686         statement.
14687
14688 2007-01-08  Richard Guenther  <rguenther@suse.de>
14689
14690         PR tree-optimization/23603
14691         * tree-vrp.c (set_value_range_to_truthvalue): New function.
14692         (extract_range_from_binary): Fall back to truthvalue instead of
14693         varying for TRUTH_*_EXPR.
14694         (extract_range_from_comparison): Fall back to truthvalue instead of
14695         varying.
14696         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
14697         if all visited PHI values were constant.
14698
14699 2007-01-08  Jan Hubicka  <jh@suse.cz>
14700
14701         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
14702         (cgraph_analyze_function): break out from ...
14703         (cgraph_finalize_compilation_unit): ... here.
14704         (cgraph_expand_function): Remove forgoten commented out line.
14705         (cgraph_optimize): Analyze functions.
14706
14707 2007-01-08  Jan Hubicka  <jh@suse.cz>
14708
14709         * tree-pas.h (TODO_remove_function): New flag.
14710         (TODO_update*): Renumber.
14711         (pass_ipa_increase_alignment,
14712         pass_ipa_function_and_variable_visibility): New passes.
14713         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
14714         (cgraph_function_and_variable_visibility): Move to ipa.c
14715         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
14716         cgraph_increase_alignment.
14717         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
14718         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
14719         calling tree-inline.
14720         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
14721         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
14722         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
14723         (gate_increase_alignment): New function.
14724         (pass_ipa_increase_alignment): New pass.
14725         * ipa.c: Inline tree-pass.h and timevar.h
14726         (function_and_variable_visibility): Move here from cgraphunit.c
14727         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
14728         * passes.c (init_optimization_passes): Add the two new passes.
14729         (execute_todo): Handle cgraph_remove_functions.
14730
14731 2007-01-08  Nick Clifton  <nickc@redhat.com>
14732
14733         * config/frv/predicates.md (reg_or_0_operand): Accept
14734         CONST_DOUBLEs.
14735
14736 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
14737
14738         * config/bfin/rtems.h, config/bfin/t-rtems: New.
14739         * config.gcc: Add bfin*-rtems*.
14740
14741 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
14742
14743         * c.opt: Add -flax-vector-conversions.
14744         * c-typeck.c (convert_for_assignment): Pass flag to
14745         vector_types_convertible_p to allow emission of note.
14746         (digest_init): Likewise.
14747         * c-opts.c: Handle -flax-vector-conversions.
14748         * c-common.c (flag_lax_vector_conversions): New.
14749         (vector_types_convertible_p): Unless -flax-vector conversions
14750         has been passed, disallow conversions between vectors with
14751         differing numbers of subparts and/or element types.  If such
14752         a conversion is disallowed, possibly emit a note on the first
14753         occasion only to inform the user of -flax-vector-conversions.
14754         The new last argument specifies this.
14755         * c-common.h (flag_lax_vector_conversions): New.
14756         (vector_types_convertible_p): Add extra argument.
14757         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
14758         char_type_node for V*QI type vectors.
14759         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
14760         Update to satisfy new typechecking rules.
14761         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
14762         C and C++ variants.
14763         * doc/invoke.texi (C Dialect Options): Document
14764         -flax-vector-conversions.
14765
14766 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
14767
14768         PR tree-optimization/29877
14769         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
14770         a register variable on the RHS to not be replaceable.
14771
14772 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
14773         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
14774         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
14775         const_simm15, const_pow2, const_npow2): Added.
14776         * config/score/misc.md (insv, extv, extzv, movmemsi,
14777         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
14778         * config/score/score.c (score_address_cost, score_select_cc_mode):
14779         Added.
14780         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
14781         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
14782         Update score_print_operand.
14783         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
14784         Adjust register allocate order and update some macro define.
14785         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
14786         mdx_block_move_straight, mdx_block_move_loop_head,
14787         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
14788         mdx_block_move): Added.
14789         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
14790         mdp_limm): Updated and fix some bug and typo.
14791         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
14792         (movsf, movdf, doloop_end): Added.
14793
14794 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
14795
14796         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
14797         config/arm/thumb2.md: Fix comment typos.
14798         * doc/extend.texi: Fix a typo.
14799
14800 2007-01-07  Eric Christopher  <echristo@apple.com>
14801
14802         * configure.ac: Check for __stack_chk_fail for darwin.
14803         * configure: Regenerate.
14804
14805 2007-01-07  Richard Guenther  <rguenther@suse.de>
14806
14807         * tree-vrp.c (extract_range_from_assert): CSE calls to
14808         compare_values where possible.
14809         (extract_range_from_unary_expr): Likewise.
14810
14811 2007-01-07  Anatoly Sokolov <aesok@post.ru>
14812
14813         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
14814         * config/avr/avr.c (call_insn_operand): Delete function.
14815         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
14816         instead of register number. Use predicates.
14817         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
14818         call_insn_operand): Add.
14819
14820 2007-01-06  Jan Hubicka  <jh@suse.cz>
14821
14822         * tree-pass.h (pass_build_cgraph_edges): Declare.
14823         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
14824         (visited_nodes): Remove.
14825         (cgraph_create_edges): Move to cgraphbuild.c; rename to
14826         build_cgrpah_edges; make visited_nodes local.
14827         (cgraph_process_new_functions): DO not call initialize_inline_failed.
14828         (record_references_in_initializer): Move to cgraphbuild.c
14829         (initialize_inline_failed, rebuild_cgraph_edges,
14830         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
14831         (verify_cgraph_node): Make visited_nodes local.
14832         (cgraph_analyze_function): Do not call cgraph_create_edges and
14833         initialize_inline_failed.
14834         (cgraph_expand_function): Do not call cgraph_lower_function;
14835         assert that function is already lowered.
14836         * Makefile.in (cgraphbuild.o): New.
14837         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
14838         at the end of lowering passes.
14839
14840 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
14841
14842         * ifcvt.c (cond_move_convert_if_block): New function, code
14843         factored out from...
14844         (cond_move_process_if_block): ...here.  Call the new function
14845         on the THEN and ELSE blocks.
14846         (merge_if_block): Do not copy global_live_at_end, merge_blocks
14847         already takes care of this.
14848
14849 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14850
14851         PR c/19978
14852         * tree.h (TREE_OVERFLOW_P): New.
14853         * c-typeck.c (parser_build_unary_op): Warn only if result
14854         overflowed and operands did not.
14855         (parser_build_binary_op): Likewise.
14856         (convert_for_assignment): Remove redundant overflow_warning.
14857         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
14858
14859 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
14860
14861         * c-typeck.c (store_init_value): Split over two lines to follow
14862         the GNU coding style.
14863
14864 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
14865
14866         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
14867         __GXX_EXPERIMENTAL_CXX0X__.
14868         * doc/cpp.texi: Same.
14869
14870 2007-01-05  Richard Guenther  <rguenther@suse.de>
14871
14872         PR middle-end/27826
14873         * tree.c (get_narrower): Do not construct COMPONENT_REFs
14874         with mismatched types.  Instead explicitly build a
14875         conversion NOP_EXPR.
14876
14877 2007-01-05  Ian Lance Taylor  <iant@google.com>
14878
14879         * c-common.c (decl_with_nonnull_addr_p): New function.
14880         (c_common_truthvalue_conversion): Call it.
14881         * c-typeck.c (build_binary_op): Likewise.
14882         * c-common.h (decl_with_nonnull_addr_p): Declare.
14883
14884 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
14885
14886         PR c/30360
14887         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
14888         denom against 0.0.
14889
14890 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
14891
14892         * doc/install.texi (Final install): Document the fact that
14893         the GNAT runtime should not be stripped.
14894
14895 2007-01-04  Jan Hubicka  <jh@suse.cz>
14896
14897         * tree-inline.c (fold_marked_statements): Update operand caches
14898         and EH after folding
14899
14900 2007-01-04  Ian Lance Taylor  <iant@google.com>
14901
14902         * c-common.c (check_function_nonnull): Whitespace fix.
14903
14904 2007-01-04  Jan Hubicka  <jh@suse.cz>
14905
14906         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
14907         comitted older version of patch.
14908         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
14909         function, celanup cfg and collect garbage.
14910
14911 2007-01-04  Mike Stump  <mrs@apple.com>
14912
14913         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
14914         (clean): Likewise.
14915
14916 2007-01-04  Eric Christopher  <echristo@apple.com>
14917
14918         * libgcc2.c (__bswapsi2): Use SItype.
14919         (__bswapdi2): Use DItype.
14920         * libgcc2.h: Update for above.
14921
14922 2007-01-04  Paul Brook  <paul@codesourcery.com>
14923
14924         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
14925         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
14926         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
14927         umulsidi3, umulsidi3adddi, smulsi3_highpart,
14928         umulsi3_highpart): Make conditional on !arm_arch6.
14929         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
14930         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
14931         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
14932         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
14933         umulsi3_highpart_v6): New insns.
14934
14935 2007-01-04  Roger Sayle  <roger@eyesopen.com>
14936
14937         * fold-const.c (fold_convert): When casting an expression to void,
14938         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
14939         have a type.  Instead of attempting to build a NOP_EXPR, return
14940         these "special" trees directly.
14941
14942 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
14943
14944         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
14945         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
14946         rs6000_cost->fp not 0 as adjustment for outer NEG.
14947
14948 2007-01-04  Jan Hubicka  <jh@suse.cz>
14949
14950         * cgraph.c (cgraph_release_function_body): New function.
14951         (cgraph_remove_node): Use it.
14952         * cgraph.h (cgraph_release_function_body): Declare.
14953         * cgraphunit.c (cgraph_expand_function): Use it.
14954         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
14955         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
14956         is initialized and while compilation of other function is running.
14957         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
14958         statement CFG annotations from here to ...
14959         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
14960
14961 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
14962
14963         * cfgloop.h (enum li_flags): Make the constants powers of two.
14964
14965 2007-01-04  Jan Hubicka  <jh@suse.cz>
14966
14967         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
14968         set.
14969         (fold_marked_statements): New function.
14970         (optimize_inline_calls, tree_function_versioning): Fold new statements.
14971         * tree-inline.h (copy_body_data): Add statements_to_fold.
14972
14973 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
14974
14975         * config.gcc: Mention libgcc/config.host.
14976         * Makefile.in: Update comments mentioning libgcc.
14977         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
14978         (all.cross, start.encap, rest.encap, rest.cross): Update
14979         dependencies for libgcc move.
14980         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
14981         (clean-target, clean-target-libgcc): Delete.
14982         (srcdirify, GCC_EXTRA_PARTS): New macros.
14983         (libgcc-support, libgcc.mvars): New rules.
14984         (distclean): Remove mention of mklibgcc.
14985         (install): Don't reference INSTALL_LIBGCC.
14986         (install-common): Don't reference EXTRA_PARTS.
14987         (install-libgcc, install-multilib): Delete rules.
14988         * mklibgcc.in: Delete file.
14989         * doc/configfiles.texi: Don't mention mklibgcc.
14990
14991         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
14992         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
14993         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
14994         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
14995         (mklibgcc, ldblspecs): Likewise.
14996
14997         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
14998         (posixpre.def): Use $(T).
14999         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
15000         (SHLIB_SRC, SHLIB_INSTALL): Delete.
15001         (SHLIB_LINK): Make dummy.
15002         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
15003
15004         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
15005
15006         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
15007         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
15008         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
15009         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
15010
15011         * configure.ac (all_outputs): Remove mklibgcc.
15012         * configure: Regenerated.
15013
15014 2007-01-03  Josh Conner  <jconner@apple.com>
15015
15016         PR middle-end/29683
15017         * calls.c (compute_argument_addresses): Set stack and stack_slot
15018         for partial args, too.
15019         (store_one_arg): Use locate.size.constant for the size when
15020         generating a save_area.
15021
15022 2007-01-03  Robert Kennedy <jimbob@google.com>
15023
15024         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
15025         whose definitions are deleted due to basic block merging.
15026
15027 2007-01-03  Paul Brook  <paul@codesourcery.com>
15028
15029         PR target/16634
15030         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
15031         functions.
15032         (use_return_insn): Return 0 for Thumb interrupt functions.
15033         (print_multi_reg): Add rfe argument for IRQ returns.
15034         (arm_output_epilogue): Pop interrupt return address directly into PC.
15035         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
15036
15037 2007-01-03  Paul Brook  <paul@codesourcery.com>
15038
15039         Merge from sourcerygxx-4_1.
15040         * config/arm/thumb2.md: New file.
15041         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
15042         Thumb-2.
15043         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
15044         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
15045         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
15046         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
15047         tables.
15048         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
15049         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
15050         comptibility.
15051         * config/arm/ieee754-sf.S: Ditto.
15052         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
15053         (thumb1_base_register_rtx_p): ... to this.
15054         (thumb_index_register_rtx_p): Rename...
15055         (thumb1_index_register_rtx_p): ... to this.
15056         (thumb_output_function_prologue): Rename...
15057         (thumb1_output_function_prologue): ... to this.
15058         (thumb_legitimate_address_p): Rename...
15059         (thumb1_legitimate_address_p): ... to this.
15060         (thumb_rtx_costs): Rename...
15061         (thumb1_rtx_costs): ... to this.
15062         (thumb_compute_save_reg_mask): Rename...
15063         (thumb1_compute_save_reg_mask): ... to this.
15064         (thumb_final_prescan_insn): Rename...
15065         (thumb1_final_prescan_insn): ... to this.
15066         (thumb_expand_epilogue): Rename...
15067         (thumb1_expand_epilogue): ... to this.
15068         (arm_unwind_emit_stm): Rename...
15069         (arm_unwind_emit_sequence): ... to this.
15070         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
15071         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
15072         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
15073         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
15074         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
15075         thumb2_output_casesi): New functions.
15076         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
15077         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
15078         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
15079         THUMB2_WORK_REGS): Define.
15080         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
15081         arm_condexec_mask, arm_condexec_masklen)): New variables.
15082         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
15083         (arm_override_options): Check new CPU capabilities.
15084         Set new architecture flag variables.
15085         (arm_isr_value): Handle v7m interrupt functions.
15086         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
15087         Thumb-2.
15088         (const_ok_for_arm): Handle Thumb-2 constants.
15089         (arm_gen_constant): Ditto.  Use movw when available.
15090         (arm_function_ok_for_sibcall): Return false for v7m interrupt
15091         functions.
15092         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
15093         (thumb_find_work_register, arm_load_pic_register,
15094         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
15095         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
15096         print_multi_reg, output_mov_long_double_fpa_from_arm,
15097         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
15098         output_mov_double_fpa_from_arm, output_move_double,
15099         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
15100         output_return_instruction, arm_output_function_prologue,
15101         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
15102         arm_output_mi_thunk, thumb_set_return_address): Ditto.
15103         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
15104         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
15105         (arithmetic_instr, shift_op): Use arm_shift_nmem.
15106         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
15107         '!' and 'L'.
15108         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
15109         (thumb_expand_prologue): Use thumb_set_frame_pointer.
15110         (arm_file_start): Output directive for unified syntax.
15111         (arm_unwind_emit_set): Handle stack alignment instruction.
15112         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
15113         Add v6t2, v7, v7a, v7r and v7m.
15114         (RETLDM): Add Thumb-2 code.
15115         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
15116         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
15117         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
15118         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
15119         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
15120         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
15121         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
15122         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
15123         ADJUST_INSN_LENGTH): Define.
15124         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
15125         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
15126         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
15127         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
15128         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
15129         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
15130         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
15131         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
15132         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
15133         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
15134         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
15135         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
15136         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
15137         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
15138         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
15139         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
15140         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
15141         cortex-m3.
15142         * config/arm/arm-tune.md: Regenerate.
15143         * config/arm/arm-protos.h: Update prototypes.
15144         * config/arm/vfp.md: Enable patterns for Thumb-2.
15145         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
15146         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
15147         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
15148         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
15149         * config/arm/libunwind.S: Add Thumb-2 code.
15150         * config/arm/constraints.md: Update include Thumb-2.
15151         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
15152         * config/arm/ieee754-df.S: Ditto.
15153         * config/arm/bpabi.S: Ditto.
15154         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
15155         * config/arm/predicates.md (low_register_operand,
15156         low_reg_or_int_operand, thumb_16bit_operator): New.
15157         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
15158         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
15159         * config/arm/t-arm-elf: Add armv7 multilib.
15160         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
15161         Include thumb2.md.
15162         (UNSPEC_STACK_ALIGN, ce_count): New.
15163         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
15164         arm_zero_extendsidi2, arm_zero_extendqidi2): New
15165         insns/expanders.
15166         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
15167         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
15168         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
15169         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
15170         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
15171         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
15172         insns.
15173         * doc/extend.texi: Document ARMv7-M interrupt functions.
15174         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
15175
15176 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
15177
15178         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
15179         (struct _Unwind_Context): Rename args_size to flags, remove
15180         signal_frame field, add a new args_size field and version field.
15181         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
15182         _Unwind_IsExtendedContext): New inline functions.
15183         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
15184         Assume by_value array is only present if _Unwind_IsExtendedContext.
15185         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
15186         _Unwind_IsSignalFrame.
15187         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
15188         (uw_update_context_1): Use _Unwind_SetSignalFrame.
15189         (uw_init_context_1): Initialize context->flags to
15190         EXTENDED_CONTEXT_BIT.
15191         * config/rs6000/linux-unwind.h (frob_update_context): Use
15192         _Unwind_SetSignalFrame.
15193
15194 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
15195
15196         PR middle-end/30353
15197         * gimplify.c (gimplify_modify_expr_complex_part): Move below
15198         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
15199         the value.
15200
15201 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
15202
15203         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
15204         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
15205         RET, AT_SP): Remove.
15206         * config/i386/i386.md (*sse_prologue_save_insn): Use return
15207         instead of RET.
15208
15209         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
15210         * cfgbuild.c (find_basic_blocks): Likewise.
15211         * cfgrtl.c (rtl_create_basic_block): Likewise.
15212         * function.c (temp_slots_at_level): Likewise.
15213         * reg-stack.c (stack_regs_mentioned): Likewise.
15214         * regclass.c (allocate_reg_info): Likewise.
15215         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
15216         set_bb_for_stmt, move_block_to_fn): Likewise.
15217         * tree-complex.c (tree_lower_complex): Likewise.
15218         * vec.h (VEC_safe_grow_cleared): New.
15219
15220         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
15221
15222 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
15223
15224         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
15225         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
15226         to loop_version.
15227         * cfgloopmanip.c (scale_loop_frequencies): Export.
15228         (loopify): Scale the frequencies by prescribed coefficients.
15229         (set_zero_probability): New function.
15230         (duplicate_loop_to_header_edge): Improve updating of frequencies.
15231         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
15232         and frequencies according to arguments.
15233         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
15234         correctly.
15235         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
15236         * modulo-sched.c (sms_schedule): Set probabilities for entering
15237         versioned loop correctly.
15238         * tree-vect-transform.c (vect_transform_loop): Ditto.
15239         * cfgloop.h (loopify, loop_version): Declaration changed.
15240         (scale_loop_frequencies): Declared.
15241
15242 2007-01-02  Jan Hubicka  <jh@suse.cz>
15243
15244         * cgraph.c: Include tree-flow.h
15245         (cgraph_add_new-function): Handle IPA_SSA mode; execute
15246         early_local_passes.
15247         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
15248         * tree-pass.h (pass_all_early_optimizations): Declare.
15249         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
15250         early_local_passes.
15251         (cgraph_analyze_function): Do early_local_passes.
15252         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
15253         Do not add referenced vars.
15254         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
15255         SSA form.
15256         (gate_all_early_local_passes): New gate.
15257         (pass_early_local_passes): Use new gate.
15258         (execute_early_local_optimizations): New functions.
15259         (gate_all_early_optimizations): New gate.
15260         (pass_all_early_optimizations): New pass.
15261         (execute_free_datastructures): Free SSA only when initialized.
15262         (gate_init_datastructures): Init only when optimizing.
15263         (tree_lowering_passes): Do early local passes when called late.
15264         * tree-profile.c (do_tree_profiling): Don't profile functions added
15265         late.
15266         (do_early_tree_profiling, pass_early_tree_profile): Kill.
15267         * tree-cfg.c (update_modified_stmts): Do not update when operands are
15268         not active.
15269         * passes.c (init_optimizations_passes): Reorder so we go into SSA
15270         during early_local_passes.
15271         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
15272
15273
15274 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
15275
15276         * Makefile.in: Update copyright year.
15277
15278 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
15279
15280         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
15281         in $(lang_checks) and check-consistency targets.
15282
15283 2007-01-02  Jan Hubicka  <jh@suse.cz>
15284
15285         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
15286         Do not add referenced vars.
15287         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
15288         are not active.
15289         * passes.c (init_optimization_passes): Put mudflap_2 after
15290         free_datastructures.
15291
15292 2007-01-02  Jan Hubicka  <jh@suse.cz>
15293
15294         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
15295         Set NOTHROW flag on call statements proved to be nothrow.
15296         Update statement of local calls so new pure/const functions are
15297         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
15298         goto receivers.
15299         (tree_rest_of_compilation): Register hooks and initialize bitmap
15300         early. Do not set after_inlining flag.
15301
15302 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
15303
15304         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
15305         HOST_BITS_PER_LONGLONG
15306
15307 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
15308
15309         PR c/19977
15310         * c-typeck.c (store_init_value): Don't emit pedantic overflow
15311         warning for non-static initializers.
15312
15313 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
15314
15315         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
15316         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
15317         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
15318         Always use set_unique_reg_note to add REG_EQUAL notes.
15319
15320 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
15321
15322         Revert:
15323         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
15324
15325         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
15326         * cfgbuild.c (find_basic_blocks): Likewise.
15327         * cfgrtl.c (rtl_create_basic_block): Likewise.
15328         * function.c (temp_slots_at_level): Likewise.
15329         * reg-stack.c (stack_regs_mentioned): Likewise.
15330         * regclass.c (allocate_reg_info): Likewise.
15331         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
15332         set_bb_for_stmt, move_block_to_fn): Likewise.
15333         * tree-complex.c (tree_lower_complex): Likewise.
15334         * vec.h (VEC_safe_grow_cleared): New.
15335
15336 2007-01-02  Ian Lance Taylor  <iant@google.com>
15337
15338         * c-common.c (c_common_truthvalue_conversion): When warning about
15339         using an assignment as a truth value, set TREE_NO_WARNING.
15340
15341 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
15342
15343         PR middle-end/7651
15344         * c.opt (Wold-style-declaration): New.
15345         * doc/invoke.texi (C-only Warning Options): New.
15346         (Wold-style-declaration): Document it.
15347         (Wextra): Enabled by -Wextra.
15348         * c-opts.c (c_common_post_options): Enabled by -Wextra.
15349         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
15350         -Wold-style-declaration.
15351
15352 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
15353
15354         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
15355         * cfgbuild.c (find_basic_blocks): Likewise.
15356         * cfgrtl.c (rtl_create_basic_block): Likewise.
15357         * function.c (temp_slots_at_level): Likewise.
15358         * reg-stack.c (stack_regs_mentioned): Likewise.
15359         * regclass.c (allocate_reg_info): Likewise.
15360         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
15361         set_bb_for_stmt, move_block_to_fn): Likewise.
15362         * tree-complex.c (tree_lower_complex): Likewise.
15363         * vec.h (VEC_safe_grow_cleared): New.
15364
15365 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
15366
15367         * c-common.c (c_common_nodes_and_builtins): Since variants of
15368         void_type_node get built before it is given a name, we need to
15369         give those variants the name, too.
15370         (complete_array_type): We need to work with the canonical main
15371         type of the array, from which we will build the qualified version.
15372         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
15373         * print-tree.c (print_node): Display canonical type information
15374         for each type.
15375         * stor-layout.c (layout_type): When we don't know the
15376         alignment of a type for which we're building an array, we end up
15377         guessing wrong, so make the type require structural equality.
15378         * tree.c (make_node_stat): When we build a new type, it is its
15379         own canonical type.
15380         (build_type_attribute_qual_variant): When building an attribute
15381         variant, its canonical type is the non-attribute variant. However,
15382         if the attributes are target-dependent and they differ, we need to
15383         use structural equality checks for this type.
15384         (build_qualified_type): A qualified type is not equivalent to its
15385         unqualified variant; set the canonical type appropriately.
15386         (build_distinct_type_copy): When building a distinct type from
15387         another type, the new type is its own canonical type.
15388         (build_variant_type_copy): When building a new type variant, we
15389         assume that it is equivalent to the original type.
15390         (build_pointer_type_for_mode): When building a pointer type, also
15391         build a canonical type pointer.
15392         (build_reference_type_for_mode): When building a reference type,
15393         also build a canonical type reference.
15394         (build_index_type): When we can't hash an index type (e.g.,
15395         because its maximum value is negative), the index type requires
15396         structural equality tests.
15397         (build_array_type): Build the canonical form of an array type.
15398         (build_function_type): Function types require structural equality,
15399         because they contain default arguments, attributes, etc.
15400         (build_method_type_directly): Ditto for method types.
15401         (build_offset_type): Build the canonical offset type.
15402         (build_complex_type): Build the canonical vector type.
15403         (make_vector_type): Build the canonical vector type.
15404         * tree.h (TYPE_CANONICAL): New.
15405         (TYPE_STRUCTURAL_EQUALITY_P): New.
15406         (SET_TYPE_STRUCTURAL_EQUALITY): New.
15407         (struct tree_type): Added "canonical" field.
15408         * params.h (VERIFY_CANONICAL_TYPES): New.
15409         * doc/c-tree.texi (TYPE_CANONICAL): Document.
15410         (TYPE_STRUCTURAL_EQUALITY_P): Document.
15411         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
15412         * doc/invoke.texi (verify-canonical-types): Document --param
15413         parameter for verifying canonical types.
15414
15415 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15416
15417         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
15418         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
15419         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
15420         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
15421         tm_file.
15422         * config/rs6000/e500.h: New.
15423         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
15424         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
15425         Remove.
15426         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
15427         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
15428         TARGET_E500_DOUBLE): Remove.
15429         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
15430         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
15431         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
15432         * config/rs6000/rs6000.c (rs6000_override_options): Use
15433         CHECK_E500_OPTIONS.
15434
15435 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15436
15437         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
15438         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
15439         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
15440         rs6000_emit_cmove): Don't check TARGET_E500.
15441         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
15442         sordered): Don't check TARGET_E500.
15443
15444 2007-01-01  Eric Christopher  <echristo@apple.com>
15445
15446         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
15447         HARD_REGISTER_NUM_P.
15448
15449 2007-01-01  Roger Sayle  <roger@eyesopen.com>
15450
15451         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
15452         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
15453         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
15454         eq/ne Y".
15455
15456 2007-01-01  Mike Stump  <mrs@apple.com>
15457
15458         * configure.ac: Remove support for building with Apple's gcc-3.1.
15459
15460 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
15461
15462         PR middle-end/30311
15463         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
15464         REG is a hard register.  Do not modify REG before calling
15465         subreg_nregs.
15466         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
15467         multiple of the size of YMODE for certain lowpart cases.
15468
15469 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15470
15471         PR middle-end/30253
15472         * gimplify (voidify_wrapper_expr): Update for
15473         GIMPLE_MODIFY_STMT.
15474
15475 2007-01-01  Andreas Schwab  <schwab@suse.de>
15476
15477         PR target/29166
15478         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
15479         save of BR0 in extra_spill_size instead of spill_size.
15480         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
15481         area.
15482         (ia64_expand_epilogue): Restore BR0 from its new location.
15483
15484 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15485
15486         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
15487         Use a temporary variable if the left hand side is not a gimple
15488         register.
15489
15490 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
15491
15492         * gimplify.c (gimplify_return_expr): Make the temporary variable
15493         for the return expression, a gimple register variable.
15494
15495 2007-01-01  Jan Hubicka  <jh@suse.cz>
15496
15497         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
15498         INSN_LIST.
15499
15500 2007-01-01  Mike Stump  <mrs@apple.com>
15501
15502         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
15503         .literal16.
15504         * config/darwin.c (machopic_select_rtx_section): Use
15505         HAVE_GAS_LITERAL16.
15506         (darwin_mergeable_constant_section): Likewise.
15507         * configure: Regenerate.
15508         * config.in: Regenerate.
15509
15510 2007-01-01  Jan Hubicka  <jh@suse.cz>
15511             Andrew Pinski  <pinskia@gmail.com>
15512
15513         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
15514         before starting IPA passes.