OSDN Git Service

Add BID decimal support
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-03-23  Michael Meissner  <michael.meissner@amd.com>
2             H.J. Lu  <hongjiu.lu@intel.com>
3
4         * config/dfp-bit.h (DPD_BID_NAME): New macro to give either the
5         DPD or BID name.
6         (name macros): Use DPD_BID_NAME to convert names properly.
7
8         * optabs.c (DECIMAL_PREFIX): Prefix string to use for the current
9         decimal floating point format.
10         (init_floating_libfuncs): Change decimal functions so that they
11         have a "bid_" prefix if the decimal system uses the BID format,
12         and "dpd_" prefix if the decimal system uses the DPD format.
13         (init_interclass_conv_libfuncs): Ditto.
14         (init_intraclass_conv_libfuncs): Ditto.
15
16         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
17         using the BID format.
18
19         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
20         whether we are using the BID decimal format.
21         * configure: Regenerate.
22
23         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
24         the compiler has decimal floating point enabled.  Define
25         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
26         instead of DPD.
27
28         * config.in (ENABLE_DECIMAL_BID_FORMAT): New macro to say we are
29         using the BID format.
30
31         * configure.ac (ENABLE_DECIMAL_BID_FORMAT): Set to 1/0 to say
32         whether we are using the BID decimal format.
33         * configure: Regenerate.
34
35         * c-cppbuiltin.c (c_cpp_builtins): Define __STDC_WANT_DEC_FP__ if
36         the compiler has decimal floating point enabled.  Define
37         __DECIMAL_BID_FORMAT__ if BID decimal floating point is used
38         instead of DPD.
39
40         * doc/install.texi (--enable-decimal-float): Document BID and DPD
41         options, and that it is enabled for i386/x86_64 systems.
42
43         * Makefile.in (enable_decimal_float): New.
44         (DECNUMFMT): New.
45         (DECNUMINC): Add  -I$(DECNUMFMT).
46         (DECNUM_H): Mov decimal32.h, decimal64.h and decimal128.h
47         to $(DECNUMFMT) from $(DECNUM).
48
49         * configure.ac: Support * --enable-decimal-float={no,yes,bid,dpd}.
50         Substitute enable_decimal_float.
51         * configure: Regenerated.
52
53         PR other/30529
54         * config/dfp-bit.c (__dec_byte_swap): Use uint32_t instead of
55         unsigned long.
56
57         * configure.ac: Enable decimal float for x86_64-*-linux*.
58         * configure: Regenerated.
59
60         PR other/30530
61         * dfp.c (decimal_real_arithmetic): Use decimal128FlipSign and
62         decimal128ClearSign to flip and clear the sign bit in decimal128.
63         (decimal_real_maxval): Set decimal128SetSign to set the sign
64         bit in decimal128.
65
66 2007-03-23  Ian Lance Taylor  <iant@google.com>
67
68         * fold-const.c (fold_binary): Correct warning for X - c >= X.
69
70 2007-03-23  Ian Lance Taylor  <iant@google.com>
71
72         * tree-dump.c (dump_files): Correct comment.
73
74 2007-03-23  Ian Lance Taylor  <iant@google.com>
75
76         * tree-vrp.c (operand_less_p): Ignore fold overflow warnings.
77
78 2007-03-23  Steven Bosscher  <steven@gcc.gnu.org>
79
80         * tracer.c (tracer): Don't take FLAGS argument.  Assert we are
81         in cfglayout mode.  Don't go into and out of cfglayout mode.
82         Link the blocks in the order of the constructed traces.
83         (rest_of_handle_tracer): Adjust call to tracer.
84         * loop-init.c (rtl_loop_init): Assert we are in cfglayout mode.
85         Don't go into cfglayout mode.
86         (rtl_loop_done): Don't go out of cfglayout mode.
87         * cfglayout.c (relink_block_chain): New function, split out from...
88         (fixup_reorder_chain): ...here.  Remove redundant checking.
89         (cfg_layout_finalize): Don't clear the header, footer, and aux
90         fields here, move the code to do so to relink_block_chain.  Likewise
91         for free_original_copy_tables.
92         * rtl.h (tracer): Update prototype.
93         * bb-reorder.c (reorder_basic_blocks): Don't take FLAGS argument.
94         Assert we are in cfglayout mode.  Don't go into and out of cfglayout
95         mode.  Use relink_block_chain to serialize the CFG according to the
96         new basic block order.  Move targetm.cannot_modify_jumps_p check from
97         here...
98         (gate_handle_reorder_blocks): ...to here.
99         (duplicate_computed_gotos): Move targetm.cannot_modify_jumps_p check
100         from here...
101         (gate_duplicate_computed_gotos): ...to here.
102         (rest_of_handle_reorder_blocks): Don't see if anything has changed,
103         something always changes when going into and out of cfglayout mode.
104         Perform an expensive cfg cleanup while going into cfglayout mode.
105         Always update liveness information on HAVE_conditional_execution
106         targets.  Reserialize the basic blocks and go out of cfglayout mode.
107         * reg-stack.c: Include cfglayout.h.
108         (rest_of_handle_stack_regs): Go into and out of cfglayout mode around
109         the call to reorder_basic_blocks.
110         * basic-block.h (reorder_basic_blocks): Update prototype.
111         (relink_block_chain): New prototype.
112         * passes.c (pass_outof_cfg_layout_mode): Move after cse2.
113
114 2007-03-23  Joseph Myers  <joseph@codesourcery.com>
115
116         * config/mips/mips.md (type, hazard, *movdi_32bit,
117         *movdi_gp32_fp64, *movdi_64bit, *movsi_internal, movcc,
118         *movhi_internal, *movqi_internal, *movsf_hardfloat,
119         *movdf_hardfloat_64bit, *movdf_hardfloat_32bit, *movdf_softfloat,
120         movv2sf_hardfloat_64bit, load_df_low, load_df_high, store_df_high,
121         mthc1, mfhc1): Change xfer instruction type to mfc and mtc, as
122         applicable.
123         (movcc): Change first xfer to multi.
124         * config/mips/24k.md, config/mips/4100.md, config/mips/4300.md,
125         config/mips/5000.md, config/mips/5400.md, config/mips/5500.md,
126         config/mips/5k.md, config/mips/7000.md, config/mips/9000.md,
127         config/mips/generic.md: Change reservations using "xfer" to use
128         "mfc,mtc".
129         * config/mips/sb1.md (ir_sb1_mtxfer): Use "mtc" instead of
130         using match_operand.
131         (ir_sb1_mfxfer): Use "mfc" instead of using match_operand.
132         * config/mips/sr71k.md (ir_sr70_xfer_from): Use "mfc" instead of
133         examining mode.
134         (ir_sr70_xfer_to): Use "mtc" instead of examining mode.
135
136 2007-03-22  Richard Henderson  <rth@redhat.com>
137
138         * config/i386/i386.c: Remove unnecessary function declarations.
139         Move targetm definition, and all related macros, to the end of
140         the file.  Resort some functions to put definitions before uses.
141         (ix86_attribute_table): Make static.  Move to end of file.
142         (ix86_gimplify_va_arg): Make static.
143
144 2007-03-22  Richard Henderson  <rth@redhat.com>
145
146         * config/i386/i386.c (ix86_function_regparm): Early exit for 64-bit;
147         don't increase local_regparm with force_align_arg_pointer check.
148         (ix86_function_sseregparm): Assert 32-bit.
149         (type_has_variadic_args_p): New.
150         (ix86_return_pops_args): Early exit for 64-bit.  Reindent; use
151         type_has_variadic_args_p.
152         (ix86_function_arg_regno_p): Use == 0 instead of ! test for eax.
153         (init_cumulative_args): Remove TARGET_DEBUG_ARG.  Remove zero_cum;
154         use memset instead.  Do maybe_vaarg check first; skip attribute
155         tests if true; skip attribute tests for 64-bit.
156         (construct_container): Remove TARGET_DEBUG_ARG.
157         (function_arg_advance_32, function_arg_advance_64): Split out ...
158         (function_arg_advance): ... from here.
159         (function_arg_32, function_arg_64): Split out ...
160         (function_arg): ... from here.
161         (ix86_pass_by_reference): Tidy.
162         (ix86_function_value_regno_p): Rearrange w/ switch on regno.
163         (function_value_32): New, from parts of ix86_function_value
164         and ix86_value_regno.
165         (function_value_64): New, from parts of ix86_function_value
166         and ix86_libcall_value.
167         (ix86_function_value_1): New.
168         (ix86_function_value, ix86_libcall_value): Use it.
169         (return_in_memory_32, return_in_memory_64): Split out ...
170         (ix86_return_in_memory): ... from here.
171         (ix86_struct_value_rtx): Skip for 64-bit.
172         (ix86_libcall_value, ix86_value_regno): Remove.
173         (setup_incoming_varargs_64): Split out ...
174         (ix86_setup_incoming_varargs): ... from here.
175         (ix86_va_start): Remove TARGET_DEBUG_ARG.
176         (legitimate_address_p, legitimize_address): Remove TARGET_DEBUG_ADDR.
177         * config/i386/i386-protos.h (ix86_function_value): Remove.
178         * config/i386/i386.opt (TARGET_DEBUG_ADDR, TARGET_DEBUG_ARG): Remove.
179
180 2007-03-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
181
182         PR other/23572
183         * c-lex.c (interpret_float): On overflow, emit pedantic warning if
184         infinities not supported, otherwise emit warning if -Woverflow. On
185         underflow, emit warning if -Woverflow.
186         * real.c (real_from_string): Return -1 if underflow, +1 if overflow
187         and 0 otherwise.
188         * real.h (real_from_string): Update declaration
189         
190 2007-03-22  Kai Tietz  <kai.tietz@onevision.com>
191             Richard Henderson  <rth@redhat.com>
192
193         * defaults.h (OUTGOING_REG_PARM_STACK_SPACE): Provide default.
194         * calls.c (compute_argument_block_size, expand_call,
195         emit_library_call_value_1): Don't ifdef OUTGOING_REG_PARM_STACK_SPACE.
196         * expr.c (block_move_libcall_safe_for_call_parm): Likewise.
197         * function.c (STACK_DYNAMIC_OFFSET): Likewise.
198         * doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Update.
199         * config/alpha/unicosmk.h, config/bfin/bfin.h, config/iq2000/iq2000.h,
200         config/mips/mips.h, config/mn10300/mn10300.h, config/mt/mt.h,
201         config/pa/pa.h, config/rs6000/rs6000.h, config/score/score.h,
202         config/spu/spu.h, config/v850/v850.h (OUTGOING_REG_PARM_STACK_SPACE):
203         Set to 1.
204
205 2007-03-22  Joseph Myers  <joseph@codesourcery.com>
206
207         * c-incpath.c (add_sysroot_to_chain): New.
208         (merge_include_chains): Add sysroot argument.  Call
209         add_sysroot_to_chain if sysrooted.
210         (register_include_chains): Update call to merge_include_chains.
211         * doc/cppopts.texi: Document use of '=' in include directory
212         arguments.
213
214 2007-03-22  Uros Bizjak  <ubizjak@gmail.com>
215
216         * config/i386/i386.md (cmp<mode>): Rename from cmpsf and cmpdf.
217         Macroize expander using SSEMODEF mode macro.  Use SSE_FLOAT_MODE_P.
218         (*cmpfp_<mode>): Rename from *cmpfp_sf and *cmpfp_df. Macroize
219         insn pattern using X87MODEF12 mode macro.
220         
221 2007-03-21  Seongbae Park <seongbae.park@gmail.com>
222
223         * regmove.c (regmove_optimize): Use reg_mentioned_p
224         instead of reg_overlap_mentioned_p for DST.
225
226 2007-03-21  Mike Stump  <mrs@apple.com>
227
228         * c.opt: Fixup for Objective-C/C++.
229
230 2007-03-21  Steve Ellcey  <sje@cup.hp.com>
231
232         * explow.c (convert_memory_address): Fold memory reference when
233         POINTERS_EXTEND_UNSIGNED < 0
234
235 2007-03-21  Richard Henderson  <rth@redhat.com>
236
237         PR target/31245
238         * config/i386/emmintrin.h (__m128i, __m128d): Mark may_alias.
239         * config/i386/mmintrin.h (__m64): Likewise.
240         * config/i386/xmmintrin.h (__m128): Likewise.
241
242 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
243
244         * config/vxworks.h (VXWORKS_ADDITIONAL_CPP_SPEC): Remove -D options.
245         (VXWORKS_OS_CPP_BUILTINS): Define.
246         * config/i386/vxworks.h (VXWORKS_CPU_DEFINE): Fold into...
247         (TARGET_OS_CPP_BUILTINS): ...here.  Use VXWORKS_OS_CPP_BUILTINS.
248
249 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
250
251         * rtl.h (constant_pool_reference_p): Delete.
252         (find_constant_src): Declare.
253         * rtlanal.c (find_constant_src): New function.
254         * simplify-rtx.c (constant_pool_reference_p): Delete.
255         * config/i386/i386.md: Use find_constant_src instead of
256         constant_pool_reference_p/avoid_constant_pool_reference pairs.
257
258 2007-03-21  Richard Sandiford  <richard@codesourcery.com>
259
260         * doc/invoke.texi (-fpie, -fPIE): Document __pie__ and __PIE__.
261         * c-cppbuiltin.c (c_cpp_builtins): Define them.
262
263 2007-03-20  Mark Mitchell  <mark@codesourcery.com>
264
265         * config/arm/elf.h (TARGET_ASM_DESTRUCTOR): Define.
266         * config/arm/arm.c (arm_elf_asm_cdtor): New function.
267         (arm_elf_asm_constructor): Use it.
268         (arm_elf_asm_destructor): New function.
269
270 2007-03-20  Bernd Schmidt  <bernd.schmidt@analog.com>
271
272         * jump.c (mark_jump_label): Treat SEQUENCE specially.
273
274 2007-03-20  Nathan Sidwell  <nathan@codesourcery.com>
275
276         * config/vxlib.c (tls_delete_hook): Use TCB for kernel tasks.
277
278 2007-03-19  Andrew Haley  <aph@redhat.com>
279
280         PR tree-optimization/31264
281         * tree-vrp.c (register_edge_assert_for_1): Don't look though
282         VIEW_CONVERT_EXPRs.
283
284 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
285
286         PR rtl-optimization/30907
287         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
288         (fwprop_init): Always call loop_optimizer_initialize.
289         (fwprop_done): Always call loop_optimizer_finalize.
290         (fwprop): We always have loop info now.
291         (gate_fwprop_addr): Remove.
292         (pass_fwprop_addr): Use gate_fwprop as gate.
293
294         PR rtl-optimization/30841
295         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
296         df_chain_alloc): Call df_reorganize_refs unconditionally.
297         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
298         refs_organized to refs_organized_size.
299         (df_ref_create_structure): Use refs_organized_size instead of
300         bitmap_size if refs had been organized, and keep refs_organized_size
301         up-to-date.
302         * df.h (struct df_ref_info): Change refs_organized to
303         refs_organized_size.
304         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
305         bitmap_size.
306
307 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
308
309         * except.c (output_function_exception_table): Do not reference the
310         EH personality routine for functions that do not require an
311         exception table.
312
313 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
314
315         PR c/30762
316         * c-typeck.c (convert_for_assignment): Call comptypes for
317         RECORD_TYPE or UNION_TYPE.
318
319         PR inline-asm/30505
320         * reload1.c (reload): Do invalid ASM checking after
321         cleanup_subreg_operands.
322
323 2007-03-19  Jeff Law  <law@redhat.com>
324
325         * tree-cfg.c (find_taken_edge): Tighten conditions for
326         optimizing computed gotos.
327
328 2007-03-19  Michael Matz  <matz@suse.de>
329
330         * builtins.c (expand_builtin_sync_operation,
331         expand_builtin_compare_and_swap,
332         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
333         correctly.
334
335         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
336         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
337         for operand 3.
338
339 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
340
341         * doc/tm.texi: Add brackets around the return type of
342         TARGET_SECONDARY_RELOAD.
343
344 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
345         Richard Guenther  <rguenther@suse.de>
346
347         PR tree-optimization/31254
348         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
349         Use handled_component_p () where appropriate.  Continue
350         propagating into the rhs if we propagated into an INDIRECT_REF
351         on the lhs.
352
353 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
354
355         * config/s390/s390.md (op_type attribute): RRR instruction type added.
356         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
357         (xde, xdee): Mode attributes adjusted to support DFP modes.
358         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
359         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
360         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3", 
361         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
362         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
363         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
364         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP 
365         numbers.
366         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
367         "movsf"): Insn definitions removed.
368         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
369         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
370         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
371         definitions added.
372         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
373         "reload_in<mode>", "reload_out<mode>"): Expander added.
374         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
375         Expander removed.
376
377 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
378
379         * config/s390/s390.md: Only non-functional changes.  Renamed
380         FPR mode macro to BFP all over the file.
381
382 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
383
384         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
385         (op_type attribute): RRF instruction type added.
386         (fT0): New mode attribute.
387         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
388         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
389         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
390         no secondary memory is needed when moving DFmode values between GPRs
391         and FPRs.
392
393 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
394
395         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
396         inverted and documentation adjusted.
397         ("mhard-dfp", "msoft-dfp"): New options.
398         * config/s390/s390.c (s390_handle_arch_option): New architecture
399         switch: z9-ec.
400         (override_options): Sanity checks for the new options added.
401         * config.gcc: New architecture switch: z9-ec.
402         * config/s390/s390.h (processor_flags): PF_DFP added.
403         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
404         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
405         when the bit is NOT set so remove it from the defaults.
406
407 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
408
409         * genemit.c (main): Print include statement for dfp.h.
410         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
411         is not available.
412
413 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
414
415         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
416
417 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
418
419         PR target/31022
420         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
421         instead of PATTERN.
422
423 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
424
425         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
426         attr_length_call, output_call, output_indirect_call): Cleanup
427         formatting of targetm calls.
428
429 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
430
431         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
432
433 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
434
435         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
436         reservation, bypass and anti-bypass descriptions for these instructions.
437         Update move patterns.
438         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
439         TYPE_FPSTORE.
440         
441 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
442
443         * tree-vect-transform.c (get_initial_def_for_induction): Replace
444         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
445         (get_initial_def_for_reduction): Likewise.
446
447 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
448
449         Fix PR tree-optimization/29922
450         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
451         (get_representative): Removed.
452         (value_dies_in_block_x): Update for rvuse removal.
453         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
454         (compute_antic_aux): Handle when PHI nodes appear in
455         non-single-successors. 
456         (dump_bitmap_of_names): Removed.
457         (compute_antic_safe): Renamed and removed rvuse calculation.
458         Calculate only antic safe.
459         (insert_into_preds_of_block): Remove assert.
460         (execute_pre): Update for renamed functions.
461         (defer_or_phi_translate_block): New function.
462         
463 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
464
465         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
466         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
467         typos.
468         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
469         Follow spelling conventions.
470
471         * tree-data-ref.h: Remove the prototype for analyze_array.
472
473 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
474
475         PR tree-optimization/31041
476         * tree-vect-transform.c (get_initial_def_for_induction): Call
477         force_gimple_operand.
478         
479 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
480   
481         * ipa-type-escape.c (look_for_casts) : Revert code to use
482         handled_component_p due to ada test a-numaux.adb.
483
484 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
485
486         * final.c (final_scan_insn): Alter the condition of a
487         conditional trap if we have nonstandard CC.
488
489 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
490
491         * configure.ac: Remove excess quoting from asm line 0 test.
492         * configure: Rebuilt.
493
494 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
495
496         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
497         * c-common.c (convert_and_check): Move warning logic to...
498         (warnings_for_convert_and_check): ...here. Define.
499         * c-common.h (warnings_for_convert_and_check): Declare.
500         
501 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
502
503         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
504         (output_call): Likewise.
505
506 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
507
508         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
509
510 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
511
512         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
513
514 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
515
516         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
517         opteron, athlon-64 and athlon-fx processor_alias_table entries.
518
519 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
520
521         PR tree-optimization/31183
522         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops): 
523         Use double_int instead of unsigned int for representing access_strides.
524         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
525
526 2007-03-16  Richard Guenther  <rguenther@suse.de>
527
528         PR tree-optimization/31146
529         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
530         to allow recursion of forward_propagate_addr_expr.
531         (forward_propagate_addr_into_variable_array_index): Likewise.
532         (forward_propagate_addr_expr): Likewise.
533         (tree_ssa_forward_propagate_single_use_vars): Likewise.
534         (forward_propagate_addr_expr_1): Recurse on simple copies
535         instead of propagating into them.  Do so for useless conversions
536         as well.
537         (forward_propagate_addr_expr): Clean up unused statements after
538         recursion.
539
540 2007-03-16  Richard Guenther  <rguenther@suse.de>
541
542         * builtins.c (expand_builtin_cexpi): Use the right argument
543         for the expansion via cexp.
544
545 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
546
547         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
548         * configure: Rebuilt.
549
550 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
551
552         PR debug/29906
553         * dwarf2out.c (force_type_die): Adjust comment.
554         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
555
556 2007-03-15  DJ Delorie  <dj@redhat.com>
557
558         * config/frv/predicates.md (minmax_operator): Don't check operands
559         here.
560
561 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
562
563         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
564         Update constant estimates of number of iterations.
565         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
566         argument renamed to "realistic".
567         (compute_estimated_nb_iterations): Removed.
568         (record_niter_bound): New function.
569         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
570         call record_nonwrapping_iv with upper = false.
571         (infer_loop_bounds_from_signedness): Pass upper argument to
572         record_nonwrapping_iv.
573         (estimate_numbers_of_iterations_loop): Do not call
574         compute_estimated_nb_iterations.  Record estimate based on profile
575         information.  Initialize the constant estimates of number of
576         iterations.
577         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
578         estimates.
579         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
580         number of iterations is too small.
581         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
582         (EST_NOT_AVAILABLE): Removed.
583         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
584         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
585         fields.
586
587 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
588
589         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
590         Handle NE_EXPR guards.
591
592 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
593
594         PR c++/24924
595         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
596         Set also -pedantic-errors by default for the  preprocessor unless
597         -fpermissive is given.
598         
599 2007-03-15  Richard Guenther  <rguenther@suse.de>
600
601         PR middle-end/29719
602         PR middle-end/31161
603         * builtins.c (expand_builtin_cexpi): As a fallback if we
604         don't have builtins for sincos or cexp create a function
605         declaration for cexp and expand to a call to that.
606         (expand_builtin_int_roundingfn): Always fall
607         back to floor/ceil and its variants even if they may be
608         not available.
609
610 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
611
612         PR middle-end/31159
613         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
614         jump tables, move the call to delete_dead_jumptables from here...
615         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
616         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
617         don't allow merging of blocks that try_redirect_by_replacing_jump
618         also does not handle when not optimizing.
619
620 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
621             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
622
623         * config/i386/i386.md (x86_sahf_1): Correctly handle
624         HAVE_AS_IX86_SAHF.
625
626 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
627
628         PR target/31167
629         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
630         x86_64_general_operand as operand[2] predicate.  Remove "iF"
631         from operand constraints and use "e" constraint instead.
632         (*subti3_1, *subti3_1 splitter): Ditto.
633         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
634         operand[1] predicate.
635
636 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
637
638         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
639         arrays, multiply the access strides by the size of the sub-array.
640         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
641
642 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
643
644         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
645         the configured assembler supports the sahf mnemonic.
646         * configure: Regenerate.
647         * config.in: Regenerate.
648
649         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
650         emit "sahf" or ".byte\t0x9e" as asm template.
651
652 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
653
654         PR 31018
655         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
656         option to replace hard coded TARGET_xxx in md file.
657         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
658         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
659         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
660         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
661         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
662         (X86_TUNE_NOT_VECTORMODE): Ditto.
663         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
664         (TUNE_AVOID_VECTOR_DECODE): Ditto.
665         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
666         (TUNE_SLOW_IMUL_IMM8): Ditto.
667         (TUNE_MOVE_M1_VIA_OR): Ditto.
668         (TUNE_NOT_UNPAIRABLE): Ditto.
669         (TUNE_NOT_VECTORMODE): Ditto.
670         
671         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
672         options.
673
674         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
675         tuning options instead of hard coded TARGET_xxx.
676         (fix ssemode peephole2's): Ditto.
677         (imul peephole2's): Ditto.
678         (movsi_or): Ditto.
679         (movdi_or_rex64): Ditto.
680         (move peephole2): Ditto.
681         (not peephole2's): Ditto.
682
683 2007-03-14  Dirk Mueller  <dmueller@suse.de>
684
685         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
686         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
687         * c-parser.c (c_parser_if_body): Always add an empty statement in case
688         of empty body.
689         * c-parser.c (c_parser_do_statement): Warn about empty body in
690         do/while statement.
691         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
692         * doc/invoke.texi (-Wempty-body): Update documentation.
693
694 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
695
696         PR c/21438
697         * c-common.h (warn_for_div_by_zero): Declare.
698         * c-common.c (warn_for_div_by_zero): Define.
699         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
700         warning.
701
702 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
703
704         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
705         to PREFIX and STANDARD_PREFIX.
706
707 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
708             Phil Edwards  <phil@codesourcery.com>
709
710         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
711         (__gthread_once_t): Remove busy field for RTPs.
712         (__GTHREAD_ONCE_INIT): Update accordingly.
713
714 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
715
716         * doc/invoke.texi: Document VxWorks options.
717
718 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
719
720         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
721
722 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
723
724         PR tree-optimization/30590
725         * tree-nrv.c (tree_nrv): Check for the partial update of the
726         return value.
727
728 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
729
730         * flags.h (flag_random_seed): Remove declaration, in favor of...
731         * toplev.h (get_random_seed, set_random_seed): ... these.
732         * tree.c (get_file_function_name): Use the former.
733         * opts.c (common_handle_option): Use the latter.
734         * toplev.c
735
736 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
737
738         PR middle-end/31127
739         * cse.c (cse_find_path): Do not bail out if a basic block that
740         we already visited now becomes part of a path that starts at a
741         different basic block.  Just disallow this, to make sure we
742         visit each basic block at most once.
743
744 2007-03-13  Jan Hubicka  <jh@suse.cz>
745
746         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
747         when profile esitmate is present, calls with very low frequency are
748         cold.
749
750 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
751
752         PR tree-optimization/30730
753         PR tree-optimization/26900
754         * tree-ssa-loop-niter.c: Include gmp.h.
755         (bounds): New type.
756         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
757         split_to_var_and_offset, determine_value_range,
758         bound_difference_of_offsetted_base, refine_bounds_using_guard,
759         bound_difference, bounds_add, bounds_negate,
760         number_of_iterations_ne_max, dump_affine_iv): New functions.
761         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
762         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
763         difference of initial and final value of control iv to validate
764         results.
765         (number_of_iterations_cond): Add loop parameter.  Determine bounds
766         on the difference of the extremes of the control iv.  Add dumps.
767         (expand_simple_operations): Handle phi nodes.
768         (simplify_using_initial_conditions): Do not record used conditions.
769         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
770         Do not set additional_info.
771         (implies_nonnegative_p, implies_ge_p): Removed.
772         (derive_constant_upper_bound): Do not use parameter `additional'.
773         (record_estimate): Parameter `additional' removed.  Parameter
774         `i_bound' added.  Do not call derive_constant_upper_bound.
775         (record_nonwrapping_iv): Use derive_constant_upper_bound to
776         bound the number of iterations estimate.
777         (estimate_numbers_of_iterations_loop): Pass the estimate from
778         the number of iterations analysis to record_estimate.
779         * tree.h (multiple_of_p): Declare.
780         * tree-scalar-evolution.c (expression_expensive_p): Removed.
781         (scev_const_prop): Do not check expression_expensive_p.
782         * fold-const.c (multiple_of_p): Exported.
783         * double-int.c (double_int_mask): Exported.
784         * double-int.h (double_int_mask): Declare.
785         * tree-flow.h (struct tree_niter_desc): Removed additional_info
786         field.  Added max field.
787
788 2007-03-13  David Taylor  <taylor@candd.org>
789
790         PR driver/12448:
791         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
792         default -MQ.
793
794 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
795
796         PR target/31123
797         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
798         two unamed patterns.
799         
800 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
801
802         * config/i386/i386.opt (mcx16, msahf): New options.
803         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
804         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
805
806         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
807         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
808         Output -mcx16 and -msahf options when corresponding bit is set.
809
810         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
811         and -msahf options.
812
813 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
814
815         * configure.ac: Test for assembler tolerance to # 0 "".
816         * configure, config.in: Rebuilt.
817         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
818
819 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
820
821         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
822
823         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
824         (handle_syscall): Handle direct system calls.
825         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
826
827 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
828
829         * doc/invoke.texi: Fix cpp.info cross-reference.
830         * doc/passes.texi: Fix gcc.info cross-reference.
831
832 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
833
834         PR tree-optimization/30835
835         * lambda-code.c (can_convert_to_perfect_nest): Check whether
836         bb_for_stmt is not NULL before accessing it.
837
838 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
839
840         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
841         some multilibs.
842
843 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
844
845         PR 30635
846         * doc/install.texi: Document --enable-stage1-languages
847
848 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
849
850         * tree-pass.h (pass_into_cfg_layout_mode,
851         pass_outof_cfg_layout_mode): Declare.
852         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
853         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
854         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
855         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
856
857 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
858
859         * c-decl.c (warn_variable_length_array): New function.
860         Refactored from grokdeclarator to handle warn_vla
861         and handle unnamed array case.
862         (grokdeclarator): Refactored VLA warning case.
863         * c.opt (Wvla): New flag.
864         * doc/invoke.texi (Wvla): New warning.
865
866 2007-03-12  Richard Henderson  <rth@redhat.com>
867
868         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
869         (TARGET_SECTION_TYPE_FLAGS): New.
870
871 2007-03-12  Richard Henderson  <rth@redhat.com>
872
873         * config/darwin.c (machopic_reloc_rw_mask): New.
874         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
875         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
876
877 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
878
879         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
880         * cppdefault.h (cpp_PREFIX): Document.
881         (cpp_PREFIX_len): Likewise.
882         (cpp_EXEC_PREFIX): New variable.
883         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
884         * c-incpath.c (add_standard_paths): Correct logic for relocating
885         paths within prefix.
886
887 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
888
889         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
890         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
891         mode macro.
892         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
893         fix_truncdfdi_sse using SSEMODEF mode macro.
894         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
895         fix_truncdfsi_sse using SSEMODEF mode macro.
896         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
897         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
898
899 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
900
901         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
902         elfos.h to tm_file.
903
904 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
905   
906         * tree.h : Add multiple_of_p declaration.
907         * fold-const.c (multiple_of_p): Make multiple_of_p public. 
908         * ipa-type-escape.c (results_of_malloc): Redundant.
909         (visited_stmts): New. Visited stmt for walk_use_def_chains.
910         (cast_type): Extended with new members.
911         (check_cast): Returns cast_type.
912         (cast): New structure for data of walk_use_def_chains.
913         (is_malloc_result, is_cast_from_non_pointer_1,
914         is_cast_from_non_pointer, 
915         is_array_access_through_pointer_and_index): New functions.
916         (look_for_casts): Returns cast types.
917         (check_call): Returns void.
918         (okay_pointer_operation): Use support of pointer plus index,
919         pointer plus constant and allow all multiplications.
920         
921 2007-03-11  Richard Guenther  <rguenther@suse.de>
922
923         PR tree-optimization/31115
924         * tree-vrp.c (extract_range_from_binary_expr): Make sure
925         the shift count is positive and non-anti-range for RSHIFT_EXPR.
926         A shift count of zero is not special as with *_DIV_EXPR.
927         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
928         direction.
929
930 2007-03-11  Ian Lance Taylor  <iant@google.com>
931
932         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
933         the *_DIV_EXPR codes correctly with overflow infinities.
934
935 2007-03-11  Ira Rosen  <irar@il.ibm.com>
936
937         * tree-data-ref.c (analyze_offset): Add a return value (bool) to 
938         indicate success/failure of the analysis. Add negation to subtrahend
939         in case of subtraction. Fail if both operands contain constants.
940         (create_data_ref): Fail if analyze_offset fails.
941
942 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
943
944         * config/i386/i386.md (frndintxf2): Rename to ...
945         (rintxf2): ... this. Remove expander having same name.
946         (rintsf2, rintdf2): Implement using SSEMODEF macro.
947         (roundsf2, rounddf2): Ditto.
948         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
949         (lround<mode>di2, lround<mode>si2): Ditto.
950
951 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
952
953         * lower-subreg.c: Include except.h.
954         (decompose_multiword_subregs): Verify that the only control flow
955         insns we can split are loads to multi-words pseudos.
956         Handle breaking such blocks after splitting, instead of calling
957         find_many_sub_basic_blocks.
958
959         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
960         on the new basic block.  Add a lengthy comment explaining why we
961         thought this was necessary.
962         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
963
964 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
965
966         PR c++/30924
967         * tree.c (walk_type_fields): Recurse into the element type of
968         ARRAY_TYPEs if there is a pointer set.
969
970 2007-03-10  Dirk Mueller  <dmueller@suse.de>
971
972         * c-common.c (warn_logical_operator): Fix condition.
973
974 2007-03-10  Tobias Schlüter  <tobi@gcc.gnu.org>
975
976         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
977         quotation mark.
978         * config/darwin.c (machopic_select_section): Remove superfluous
979         argument in call to categorize_decl_for_section.  Remove unused
980         variable shlib.
981
982 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
983
984         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
985         defined.
986         * configure: Regenerate.
987
988 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
989
990         PR target/31101
991         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
992         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
993         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
994         Add LABEL_NUSES to emitted label.
995         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
996         branch probability value to emitted jump insn.
997         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
998         Do not check life information and do not re-arrange input operands
999         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
1000
1001 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1002
1003         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
1004         the change of decode_asm_operands.
1005
1006 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
1007
1008         * mode-switching.c (create_pre_exit): Skip blockage insn.
1009
1010 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
1011
1012         * tree-pass.h (TODO_update_smt_usage): Remove.
1013         Update all users.
1014         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
1015         argument SOME.
1016         Update all users.
1017
1018 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1019
1020         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
1021         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
1022         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
1023         SOM target.
1024
1025 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
1026
1027         * gcc.c: Document %{, in big comment at top.
1028         (input_suffix_matches): Remove special handling for .s and
1029         .S.
1030         (input_spec_matches): New.
1031         (handle_braces): Handle %{,.
1032         (validate_switches): ',' indicates a value which is not a switch.
1033         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
1034         to detect assembler input.
1035         * config/i386/sol2.h (CPP_SPEC): Likewise.
1036         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
1037         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
1038         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
1039         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
1040         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
1041         -m64 causes deployment target to default to 10.5.
1042         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
1043
1044 2007-03-09  Richard Henderson  <rth@redhat.com>
1045
1046         PR target/26090
1047         * target.h (targetm.asm.out.reloc_rw_mask): New.
1048         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
1049         (TARGET_ASM_OUT): Use it.
1050         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
1051         * varasm.c (categorize_decl_for_section): Remove shlib argument;
1052         use the new reloc_rw_mask target hook instead.
1053         (default_section_type_flags_1): Merge into...
1054         (default_section_type_flags): ... here.
1055         (decl_readonly_section_1): Merge into...
1056         (decl_readonly_section): ... here.
1057         (default_elf_select_section_1): Merge into...
1058         (default_elf_select_section): ... here.
1059         (default_unique_section_1): Merge into...
1060         (default_unique_section): ... here.
1061         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
1062         (default_select_rtx_section): Use it.
1063         (default_elf_select_rtx_section): Likewise.
1064         * output.h: Update to match.
1065         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
1066         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
1067         (TARGET_ASM_RELOC_RW_MASK): New.
1068         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
1069         to categorize_decl_for_section.
1070         (x86_64_elf_unique_section): Likewise.
1071         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
1072         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
1073         (TARGET_ASM_RELOC_RW_MASK): New.
1074         * config/ia64/ia64.c (ia64_rwreloc_select_section,
1075         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
1076         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
1077         (TARGET_RWRELOC): Remove.
1078         (ia64_section_type_flags): Adjust call to default_section_type_flags.
1079         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
1080         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
1081         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
1082         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
1083         (rs6000_xcoff_select_section): Use decl_readonly_section.
1084         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
1085         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
1086         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
1087         (TARGET_SECTION_TYPE_FLAGS): Remove.
1088         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
1089
1090 2007-03-09  Roger Sayle  <roger@eyesopen.com>
1091
1092         * fold-const.c (fold_comparison): Remove compile-time evaluation of
1093         complex constant equality/inequality comparisons for here.
1094         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
1095         known at compile-time or can be simplified to a scalar comparison.
1096         (fold_relational_const): Move compile-time evaluation of complex
1097         constant equality/inequality comparisons to here.
1098
1099 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
1100
1101         PR rtl-optimization/30643
1102         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
1103         dest_addr_elt.
1104         (fold_rtx): Recurse, like before 2006-11-03.
1105
1106 2007-03-09  DJ Delorie  <dj@redhat.com>
1107
1108         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
1109         m32c-pragma.o.
1110
1111 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
1112
1113         PR tree-optimization/30375
1114         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
1115         LHS of statements is not the same.
1116         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
1117
1118 2007-03-09  Chao-ying Fu  <fu@mips.com>
1119
1120         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
1121         REV 2.
1122         * doc/invoke.texi (-mdspr2): Document new option.
1123         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
1124         New unspec for DSP REV 2.
1125         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
1126         these instructions are extended in DSP REV 2.
1127         (mips-dspr2.md): Include.
1128         * config/mips/mips.opt (mdspr2): New option.
1129         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
1130         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
1131         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
1132         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
1133         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
1134         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
1135         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
1136         and 2 builtins.
1137         (bdesc_map): Add one field of unsupported_target_flags.
1138         (bdesc_arrays):  Update entries to have extra fields.  Add
1139         dsp_32only_bdesc.
1140         (mips_init_builtins): Initialize new function types.
1141         Check unsupported_target_fileds to filter out builtins.
1142         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
1143         TARGET_DSPR2.
1144         (ASM_SPEC): Pass mdspr2 to the assembler.
1145         * config/mips/mips-dspr2.md: New file.
1146
1147 2007-03-09  Sa Liu  <saliu@de.ibm.com>
1148
1149         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
1150
1151 2007-03-09  Ian Lance Taylor  <iant@google.com>
1152
1153         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
1154         argument) like -Wstrict-overflow=2.
1155         * doc/invoke.texi (Warning Options): Update documentation.
1156
1157 2007-03-09  Dirk Mueller  <dmueller@suse.de>
1158
1159         PR c++/17946
1160         * doc/invoke.texi (-Wlogical-op): Document.
1161         * common.opt (-Wlogical-op): New.
1162         * c-common.h (warn_logical_operator): Declare.
1163         * c-common.c (warn_logical_operator): Define.
1164         * c-typeck.c (parser_build_binary_op): Call
1165         warn_logical_operator.
1166
1167 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
1168
1169         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
1170         * final.c (final_scan_insn): Test for non-"" file name.
1171
1172 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
1173
1174         * doc/loop.texi: Document the Omega linear constraints solver.
1175         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
1176         omega-max-geqs, omega-max-eqs, omega-max-wild-cards, 
1177         omega-hash-table-size, omega-max-keys, and 
1178         omega-eliminate-redundant-constraints.
1179         * tree-pass.h (pass_check_data_deps): Declared.
1180         * omega.c: New.
1181         * omega.h: New.
1182         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
1183         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps, 
1184         pass_check_data_deps): New.
1185         * tree-data-ref.c (init_data_ref): Remove declaration.
1186         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
1187         (analyze_array): Renamed init_array_ref, move up initializations.
1188         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
1189         Removed arguments that are set to NULL.
1190         (analyze_indirect_ref): Correct indentation, correct call to 
1191         init_pointer_ref.
1192         (object_analysis): Call init_array_ref instead of analyze_array.
1193         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
1194         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
1195         of DR_ACCESS_FNS_ADDR.
1196         (init_omega_eq_with_af, omega_extract_distance_vectors, 
1197         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
1198         ddr_consistent_p): New.
1199         (compute_affine_dependence): Check consistency of ddrs when 
1200         flag_check_data_deps is passed.
1201         (analyze_all_data_dependences): Uncomment.
1202         (tree_check_data_deps): New.
1203         * tree-data-ref.h: Include omega.h.
1204         (DR_ACCESS_FNS_ADDR): Removed.
1205         (data_dependence_relation): Add inner_loop.
1206         (DDR_INNER_LOOP): New.
1207         * common.opt (fcheck-data-deps): New.
1208         * tree-flow.h (tree_check_data_deps): Declare.
1209         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
1210         (OBJS-common): Depend on omega.o.
1211         (omega.o): Define.
1212         * passes.c (pass_check_data_deps): Scheduled.
1213         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS, 
1214         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
1215         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
1216         PARAM_VECT_MAX_VERSION_CHECKS,
1217         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
1218
1219 2007-03-09  Richard Guenther  <rguenther@suse.de>
1220
1221         PR tree-optimization/30904
1222         PR middle-end/31058
1223         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
1224         the same way as *_DIV_EXPR.
1225
1226 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
1227
1228         * recog.c (decode_asm_operands): No mixed declarations and code.
1229
1230 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
1231
1232         * rtl.def (ASM_INPUT): Add location.
1233         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
1234         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
1235         (decode_asm_operands): Add loc operand.
1236         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
1237         * stmt.c (expand_asm): Rename to...
1238         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
1239         gen_rtx_ASM_INPUT_loc.
1240         (expand_asm_expr): Adjust.
1241         * recog.c (decode_asm_operands): Add loc operand.
1242         (check_asm_operands, extract_insn): Adjust.
1243         * reload1.c (maybe_fix_stack_asms): Likewise.
1244         * final.c (asm_insn_count): Likewise.
1245         (final_scan_insn): Output # line before and after asm.
1246
1247 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
1248
1249         * tree-ssa-structalias.c (variable_info): Remove
1250         finished_solution.
1251         (new_var_info): Ditto.
1252         (shared_bitmap_info_t): New structure.
1253         (shared_bitmap_table): New variable.
1254         (shared_bitmap_hash): New function.
1255         (shared_bitmap_eq): Ditto
1256         (shared_bitmap_lookup): Ditto.
1257         (shared_bitmap_add): Ditto.
1258         (merge_smts_into): Change to take bitmap directly.
1259         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
1260         (init_alias_vars): Init shared bitmap hashtable.
1261         (delete_points_to_sets): Delete shared bitmap hashtable.
1262         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
1263         is_aliased removal as a change that was still necessary was
1264         deleted.
1265
1266 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
1267
1268         * config/i386/i386.h (override_options): Conditionally disable
1269         x86_sahf for 64bit targets only.
1270
1271 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
1272
1273         PR C/31072
1274         * c-decl.c (merge_decls): Don't call make_var_volatile.
1275         * varasm.c (make_var_volatile): Remove.
1276         * output.h (make_var_volatile): Remove.
1277
1278 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
1279
1280         PR tree-optimization/31085
1281         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
1282
1283 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1284
1285         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
1286         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
1287         ATTR_CONST_NOTHROW_LIST.
1288         
1289         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
1290         FIX_TRUNC_EXPR.
1291
1292 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
1293
1294         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
1295
1296 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
1297
1298         PR 31013
1299         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
1300         is declared.
1301         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
1302         passed, use shared libgcc.
1303
1304 2007-03-08  Roger Sayle  <roger@eyesopen.com>
1305
1306         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
1307         instead of calling build2 with a GIMPLE_MODIFY_STMT.
1308         (honor_protect_cleanup_actions, lower_try_finally_switch):
1309         Likewise.
1310         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
1311         ifc_temp_var): Likewise.
1312         * tree-inline.c (setup_one_parameter): Likewise.
1313         * tree-mudflap.c (mf_decl_cache_locals,
1314         mf_build_check_statement_for): Likewise.
1315         * tree-nested.c (init_tmp_var, save_tmp_var,
1316         finalize_nesting_tree_1): Likewise.
1317         * tree-outof-ssa.c (insert_copy_on_edge,
1318         insert_backedge_copies): Likewise.
1319         * tree-profile.c (tree_gen_edge_profiler,
1320         tree_gen_ic_profiler): Likewise.
1321         * tree-scalar-evolution.c (scev_const_prop): Likewise.
1322         * tree-sra.c (sra_build_assignment): Likewise.
1323         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
1324         * tree-ssa-math-opts.c (insert_reciprocals,
1325         execute_cse_sincos_1): Likewise.
1326         * tree-tailcall.c (adjust_accumulator_values,
1327         adjust_return_value): Likewise.
1328         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
1329         * tree-vect-transform.c (vect_create_data_ref_ptr,
1330         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
1331         vect_create_epilog_for_reduction, vectorizable_reduction,
1332         vectorizable_call, vectorizable_conversion,
1333         vectorizable_assignment, vectorizable_operation,
1334         vectorizable_type_demotion, vect_gen_widened_results_half,
1335         vect_permute_store_chain, vectorizable_store,
1336         vect_setup_realignment, vect_permute_load_chain,
1337         vectorizable_load, vectorizable_condition,
1338         vect_create_cond_for_align_checks): Likewise.
1339         * tree-vrp.c (build_assert_expr_for): Likewise.
1340
1341 2007-03-08  Ian Lance Taylor  <iant@google.com>
1342
1343         * tree-vrp.c: Include "intl.h".
1344         (usable_range_p): New static function.
1345         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
1346         overflowed values, juts set *strict_overflow_p.
1347         (compare_values): Only return -2 if one of the operands is not a
1348         constant.
1349         (compare_ranges): Call usable_range_p.
1350         (compare_range_with_value): Likewise.
1351         (vrp_evaluate_conditional_warnv): Rename from
1352         vrp_evaluate_conditional.  Make static.  Change all callers.
1353         (vrp_evaluate_conditional): New function.
1354         (simplify_div_or_mod_using_ranges): Issue warning about reliance
1355         on signed overflow.
1356         (simplify_abs_using_ranges): Likewise.
1357         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
1358         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
1359         within_stmt parameter.
1360         * tree-ssa-propagate.c (fold_predicate_in): Update call to
1361         vrp_evaluate_conditional.
1362         * tree-ssa-threadedge.c
1363         (record_temporary_equivalences_from_stmts_at_dest): Change
1364         simplify parameter to take a second tree parameter.
1365         (simplify_control_stmt_condition): Likewise.
1366         (thread_across_edge): Likewise.
1367         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
1368         (thread_across_edge): Likewise.
1369         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
1370
1371 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
1372
1373         * config/i386/i386.h (TARGET_SAHF): New define.
1374         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
1375         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
1376         (x86_sahf): New global variable.
1377         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
1378         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
1379         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
1380         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
1381         for 64-bit.
1382         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
1383         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
1384         when expanding fcomi/sahf based tests.
1385         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
1386         expanding sahf based alternative. Emit sahf based sequence when
1387         optimizing for code size.
1388         * config/i386/i386.md (x86_sahf_1): Do not disable for
1389         TARGET_64BIT, enable for TARGET_SAHF. 
1390
1391 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
1392
1393         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
1394         spurious whitespace from error message.
1395
1396 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
1397
1398         PR c++/30852
1399         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
1400
1401 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
1402
1403         * c-decl.c (grokdeclarator): Disable warnings for anonymous
1404         bitfields.
1405         * tree-sra.c (instantiate_element): Propagate disabled warnings
1406         from the element itself to the created variable.
1407
1408 2007-03-07  Richard Henderson  <rth@redhat.com>
1409
1410         PR target/30848
1411         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
1412         silently fix up the stack in the case of a missing register.
1413
1414 2007-03-07  Paul Brook  <paul@codesourcery.com>
1415
1416         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
1417
1418 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
1419
1420         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
1421         New.
1422         (phase1_vrs): Use them.
1423         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
1424         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
1425         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
1426         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
1427         __gnu_Unwind_Restore_WMMXC if required.
1428         (_Unwind_VRS_Pop): Implement iWMMXt support.
1429         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
1430         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
1431         gnu_Unwind_Save_WMMXC): Define.
1432
1433 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
1434
1435         * config/vxworks.h (vxworks_override_options): Declare.
1436         (VXWORKS_OVERRIDE_OPTIONS): Use it.
1437         * config/vxworks.c: Include target.h and toplev.h.
1438         (vxworks_override_options): New function.
1439         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
1440
1441 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1442
1443         * config/s390/s390.c (override_options): Don't emit an error when
1444         -mstack-size is used without providing -mstack-guard.
1445         (s390_emit_prologue): Choose stack_guard value automatically if not
1446         provided via command line.
1447         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
1448
1449 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
1450
1451         * config/i386/i386.c (output_set_got): Add a GOT initialization
1452         sequence for VxWorks PIC.
1453         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
1454         around labels as well as symbols.  Use gotoff_operand instead
1455         of local_symbolic_operand.
1456         (legitimize_pic_address): Use gotoff_operand instead of
1457         local_symbolic_operand.  Use @GOT accesses for labels as
1458         well as symbols.
1459         (ix86_output_addr_diff_elt): Use PC-relative rather than
1460         GP-relative offsets for VxWorks PIC.
1461         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
1462         no_new_pseudos.  Check whether the returned register is op0.
1463         * config/i386/i386.md (tablejump): Use PC-relative rather than
1464         GP-relative offsets for VxWorks PIC.
1465         * config/i386/predicates.md (gotoff_operand): New predicate.
1466
1467 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1468
1469         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
1470         before defining.
1471         * config/vxworks-dummy.h: New file.
1472         * config/i386/i386.h: Include it.
1473
1474 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
1475
1476         * dwarf2out.c (is_inlined_entry_point): New
1477         (add_high_low_attributes): Emit DW_AT_entry_pc along with
1478         DW_AT_ranges if the first subblock is the entry point.
1479
1480 2007-03-06  David Daney  <ddaney@avtrex.com>
1481
1482         * doc/install.texi (mips-*-*): Change recommended binutils
1483         version.
1484
1485 2007-03-06  Anatoly Sokolov <aesok@post.ru>
1486
1487         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
1488         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162 
1489         devices.
1490         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1491         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1492
1493 2007-03-06  Jan Hubicka  <jh@suse.cz>
1494
1495         * errors.h (warning, error, fatal, internal_error): Mark as cold.
1496         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
1497         are hot.
1498         (probably_cold_bb_p): Cold functions are cold.
1499         (probably_never_executed_bb_p): Cold functions are cold.
1500         (tree_bb_level_predictions): Predict calls to cold functions as not
1501         taken.
1502         (compute_function_frequency): Check hot/cold attributes.
1503         * function.h (function_frequency): Update comments.
1504         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
1505         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
1506         (c_common_att): Add cold and hot.
1507
1508         * doc/extend.texi (hot,cold attributes): Document.
1509
1510 2007-03-06  Andrew Haley  <aph@redhat.com>
1511
1512         * function.c (expand_function_end): Move blockage to just after we
1513         emit the label for the naked return from the function.
1514
1515 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1516
1517         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
1518         before redefining.
1519
1520 2007-03-06  Jan Hubicka  <jh@suse.cz>
1521
1522         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
1523         loaded for constant large models.  Non-large 64bit PIC can do.
1524         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
1525         * cmodel.h: Add LARGE PIC.
1526         * i386.md (UNSPEC_PLTOFF): New.
1527         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
1528         needed.
1529         (*call_1_rex64): Disable for large models.
1530         (*call_1_rex64_large): New.
1531         (*call_value_1_rex64): Disable for large models.
1532         (*call_value_1_rex64_large): New.
1533         (set_rip_rex4): New.
1534         (set_got_offset_rex64): New.
1535         * predicates.md (constant_call_address_operand): For large model
1536         constant calls are not possible.
1537         * i386-protos.h (construct_plt_address): Declare.
1538         * i386.c (override_options): Accept large models.
1539         (ix86_expand_prologue): Expand large PIC GOT pointer load.
1540         (legitimate_constant_p): Add new UNSPECs.
1541         (legitimate_pic_operand_p): Likewise.
1542         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
1543         (legitimize_pic_address): Do easy RIP relative way for TLS only for
1544         non-large model.
1545         (output_pic_addr_const): Add PLTOFF.
1546         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
1547         (ix86_expand_move): Legitimize pic address when in PIC mode.
1548         (construct_plt_address): New function.
1549         (ix86_expand_call): Offload the address to register and use GOT pointer
1550         for large model.
1551         * invoke.texi (mcmodel=large): Update documentation.
1552
1553 2007-03-06  Richard Henderson  <rth@redhat.com>
1554
1555         * config/i386/i386.c (x86_use_leave, x86_push_memory,
1556         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
1557         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
1558         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
1559         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
1560         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
1561         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix, 
1562         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
1563         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
1564         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, 
1565         x86_partial_reg_dependency, x86_memory_mismatch_stall, 
1566         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
1567         x86_sse_partial_reg_dependency, x86_sse_split_regs, 
1568         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
1569         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
1570         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
1571         x86_schedule, x86_use_bt, x86_pad_returns,
1572         x86_use_xchgb): Merge into ...
1573         (ix86_tune_features): ... here.  New array.
1574         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
1575         x86_bswap): Merge into ...
1576         (ix86_arch_features): ... here.  New array.
1577         (x86_3dnow_a): Remove.
1578         (x86_accumulate_outgoing_args): Make static.
1579         (x86_arch_always_fancy_math_387): Make static.
1580         (ix86_tune_mask, ix86_arch_mask): Move ...
1581         (override_options): ... to local variables here.  Apply the
1582         appropriate mask to each element of ix86_arch_features and
1583         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
1584         as were done in the old macros.
1585         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
1586         * config/i386/i386.h (x86_use_leave, x86_push_memory,
1587         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
1588         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
1589         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
1590         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
1591         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
1592         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
1593         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
1594         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
1595         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
1596         x86_partial_reg_dependency, x86_memory_mismatch_stall,
1597         x86_accumulate_outgoing_args, x86_prologue_using_move,
1598         x86_epilogue_using_move, x86_decompose_lea,
1599         x86_arch_always_fancy_math_387, x86_shift1,
1600         x86_sse_partial_reg_dependency, x86_sse_split_regs,
1601         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,        
1602         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
1603         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
1604         x86_use_incdec, x86_pad_returns, x86_bswap,
1605         x86_partial_flag_reg_stall): Remove.
1606         (enum ix86_tune_indices): New.
1607         (ix86_tune_features): New.
1608         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
1609         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
1610         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
1611         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
1612         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
1613         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
1614         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
1615         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
1616         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
1617         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
1618         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
1619         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
1620         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
1621         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
1622         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
1623         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
1624         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
1625         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
1626         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
1627         TARGET_EXT_80387_CONSTANTS): Use it.
1628         (enum ix86_arch_indices): New.
1629         (ix86_arch_features): New.
1630         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
1631         TARGET_BSWAP): Use it.
1632         (ix86_tune_mask, ix86_arch_mask): Remove.
1633
1634 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
1635
1636         PR bootstrap/31020
1637         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
1638         Define using $${sysroot_headers_suffix}.
1639         * configure: Regenerate.
1640         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
1641         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
1642         defined.
1643         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
1644         * gcc.c (print_sysroot_headers_suffix): New.
1645         (option_map): Include --print-sysroot-headers-suffix.
1646         (display_help): Mention -print-sysroot-headers-suffix.
1647         (process_command): Handle -print-sysroot-headers-suffix.
1648         (do_spec_1): Append multilib directory to include-fixed path if
1649         sysroot suffixes in use.
1650         (main): Handle -print-sysroot-headers-suffix.
1651         * Makefile.in (start.encap): Don't depend on xlimits.h
1652         (xlimits.h): Remove.
1653         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
1654         limits.h for each multilib in fixinc_list.
1655         (fixinc_list, s-fixinc_list): New.
1656         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
1657         generate them for each multilib in fixinc_list.
1658         (stmp-fixproto): Use include-fixed.  Run fixproto for each
1659         multilib in fixinc_list.
1660         (mostlyclean): Don't remove xlimits.h.
1661         (clean): Remove include-fixed.
1662         (real-install-headers-tar, real-install-headers-cpio,
1663         real-install-headers-cp): Don't copy include, only include-fixed.
1664         (install-mkheaders): Depend on fixinc_list.  Don't depend on
1665         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
1666         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
1667         SYSTEM_HEADER_DIR setting in mkheaders.conf.
1668
1669 2007-03-06  Jan Hubicka  <jh@suse.cz>
1670
1671         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
1672         NANs easilly.
1673
1674 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1675
1676         * configure.ac: Allow tm_file to contain build-directory files.
1677         * configure: Regenerate.
1678         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
1679         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
1680         * config/m68k/print-sysroot-suffix.sh: New file.
1681
1682 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1683
1684         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
1685         of pic_offset_table_rtx if reload_completed.
1686         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
1687         PIC_OFFSET_TABLE_REGNUM.
1688         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
1689         return true.
1690         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
1691         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
1692
1693 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1694
1695         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
1696         functions that call eh_return.
1697
1698 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1699
1700         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
1701         functions that need a constant pool.
1702
1703 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1704
1705         PR target/28181
1706         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
1707         (m68k_preferred_reload_class): Likewise.
1708         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
1709         (SECONDARY_RELOAD_CLASS): Define.
1710         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
1711         (LIMIT_RELOAD_CLASS): Delete.
1712         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
1713         registers from storing bytes.
1714         (m68k_secondary_reload_class): New function.
1715         (m68k_preferred_reload_class): Likewise.
1716
1717 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1718
1719         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
1720         leaf functions.
1721         (m68k_expand_prologue): Likewise.
1722
1723 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1724
1725         * config/m68k/m68k-protos.h (output_sibcall): Declare.
1726         (mips_expand_epilogue): Add a bool parameter.
1727         (m68k_legitimize_sibcall_address): Declare.
1728         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1729         (m68k_expand_epilogue): Add a parameter to select between sibling
1730         and normal epilogues.  Only generate a return for the latter.
1731         (m68k_ok_for_sibcall_p): New function.
1732         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
1733         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
1734         (sibcall_value, *sibcall_value): Likewise.
1735         (*call, *call_value): Require !SIBLING_CALL_P.
1736         (epilogue): Update call to m68k_expand_epilogue.
1737         (sibcall_epilogue): New pattern.
1738         * config/m68k/predicates.md (const_call_operand): Say that this
1739         predicate applies to sibling calls too.
1740         (sibcall_operand): New predicate.
1741
1742 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1743
1744         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
1745         alternatives as movsi_cf.
1746         (movsf_cf_hard): Add commentary.
1747
1748 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
1749             Richard Sandiford  <richard@codesourcery.com>
1750
1751         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
1752         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
1753         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
1754         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
1755         as being live on exit from an interrupt function.
1756         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
1757         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
1758         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
1759         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
1760         (m68k_interrupt_function_p): Globalize.
1761         (m68k_compute_frame_layout): Remove reverse mask code.
1762         (m68k_emit_movem, m68k_set_frame_related): New functions.
1763         (m68k_output_function_prologue): Delete in favor of...
1764         (m68k_expand_prologue): ...this new function.
1765         (m68k_output_function_epilogue): Delete in favor of...
1766         (m68k_expand_epilogue): ...this new function.
1767         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
1768         functions.
1769         (print_operand): Handle %?.
1770         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
1771         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
1772         (prologue, epilogue): New patterns.
1773         (return): Turn into a define_expand.
1774         (*return): New pattern, derived from old "return" pattern.  Use rte
1775         rather than rts for interrupt functions.  Only use rtd if the pop
1776         count is nonzero.
1777         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
1778         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
1779         (link, *link, unlink, *unlink, load_got): Likewise.
1780
1781 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1782
1783         PR target/23482
1784         PR target/17114
1785         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
1786         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
1787         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
1788         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
1789         and m68k_matches_u_p.
1790         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
1791         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
1792         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
1793         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
1794         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
1795         (REG_STRICT_P): New macro.
1796         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
1797         PCREL_GENERAL_OPERAND_OK.
1798         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
1799         m68k_legitimate_base_reg_p.
1800         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
1801         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
1802         (PIC_CASE_VECTOR_ADDRESS): Update comment.
1803         * config/m68k/m68k.c (m68k_address): New structure.
1804         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
1805         (m68k_decompose_index, m68k_legitimate_constant_address_p)
1806         (m68k_jump_table_ref_p, m68k_decompose_address)
1807         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
1808         (m68k_matches_u_p): New functions.
1809         (print_operand_address): Rewrite to use m68k_decompose_index.
1810
1811 2007-03-05  David Taylor  <dtaylor@emc.com>
1812
1813         * gcc.c: Correct copyright date in --version output.
1814
1815 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1816
1817         * pa.md: In unamed move patterns, disparge copies between general
1818         and floating point registers using '?' modifier.  Don't include 'f'
1819         constraint for register preferences in DImode, SImode, HImode and
1820         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
1821         Remove constraints for copies between general and floating registers
1822         in soft-float DFmode pattern.
1823         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
1824         floating register.
1825         (movsf): Likewise. 
1826
1827 2007-03-05  Mike Stump  <mrs@apple.com>
1828
1829         * c-common.c (targetcm): Add.
1830         * c-opts.c (c_common_handle_option): Handle language specific
1831         target options.
1832         * opts.c (handle_option): Verify language for target options, if
1833         any are given.
1834         * opth-gen.awk: Add CL_LANG_ALL.
1835         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
1836         (TARGETCM_INITIALIZER): Add.
1837         * target.h (struct gcc_targetcm): Add.
1838         (targetcm): Add.
1839         * targhooks.c (default_handle_c_option): Add.
1840         * targhooks.h (default_handle_c_option): Add.
1841         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
1842
1843         * config/darwin.opt (iframework): Add.
1844         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
1845         * config/darwin-c.c (handle_c_option): Add.
1846         (TARGET_HANDLE_C_OPTION): Add.
1847         (targetcm): Add.
1848         * doc/invoke.texi (Darwin Options): Add -iframework.
1849
1850 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1851
1852         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
1853         conversion.
1854
1855 2007-03-05  Ian Lance Taylor  <iant@google.com>
1856
1857         * c.opt (fgnu89-inline): New option.
1858         * c-opts.c (c_common_post_options): Set default value for
1859         flag_gnu89_inline.
1860         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
1861         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
1862         inline functions.
1863         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
1864         (grokdeclarator, start_function): Likewise.
1865         * c-cppbuiltin.c (c_cpp_builtins): Define either
1866         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
1867         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
1868         (C Dialect Options): Document -fgnu89-inline.
1869         * doc/extend.texi (Function Attributes): Explain what the
1870         gnu_inline attribute does.
1871         * doc/cpp.texi (Common Predefined Macros): Document
1872         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1873
1874 2007-03-05  Ian Lance Taylor  <iant@google.com>
1875
1876         PR tree-optimization/31034
1877         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
1878         half-range if the other side is an overflow infinity.
1879
1880 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
1881
1882         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
1883         (bfin*-linux-uclibc*): New configuration.
1884         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
1885         defining.
1886         * config/bfin/linux.h: New file.
1887         * config/bfin/libgcc-bfin.ver: New file.
1888         * config/bfin/t-bfin-uclinux: New file.
1889         * config/bfin/t-bfin-linux: New file.
1890         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
1891         (TARGET_OS_CPP_BUILTINS): New macro.
1892
1893 2007-03-05  Richard Guenther  <rguenther@suse.de>
1894
1895         * fold-const.c (fold_binary): Remove duplicate folding
1896         of comparison of non-null ADDR_EXPR against null.
1897
1898 2007-03-05  Richard Guenther  <rguenther@suse.de>
1899             Dorit Nuzman  <dorit@il.ibm.com>
1900
1901         PR tree-optimization/26420
1902         * tree-vectorizer.c (vectorize_loops): Bail out early if there
1903         are no loops in the function.  Only print the number of
1904         vectorized loops if it is greater than zero or we are supposed
1905         to print information about unvectorized loops.
1906
1907 2007-03-05  Revital Eres  <eres@il.ibm.com>
1908
1909         * gcc.dg/var-expand1.c: New test.
1910         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
1911         when an accumulator is expanded.
1912
1913 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1914
1915         PR other/30465
1916         * c-common.c (convert_and_check): Don't give warnings for
1917         conversion if 'expr' already overflowed.
1918         
1919 2007-03-04  Roger Sayle  <roger@eyesopen.com>
1920
1921         PR middle-end/30744
1922         * fold-const.c (fold_comparison): Enforce type consistency when
1923         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
1924
1925 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
1926
1927         * tree-ssa-address.c (create_mem_ref): Do not put an expression
1928         containing a cast to the base of TARGET_MEM_REF.
1929
1930 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
1931
1932         * tree.c (tree_contains_struct_check_failed): Remove spurious
1933         whitespace from error message.
1934
1935 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
1936
1937         PR target/30406
1938         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
1939         instead of precision.
1940
1941 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
1942             Nathan Sidwell  <nathan@codesourcery.com>
1943
1944         * emit-rtl.c (find_auto_inc): New.
1945         (try_split): recreate REG_INC notes,
1946         Use regular for loops rather than whiles.
1947
1948 2007-03-03  Andreas Schwab  <schwab@suse.de>
1949
1950         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
1951         * configure: Regenerate.
1952
1953 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1954
1955         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
1956         flag_rounding_math, not flag_unsafe_math_optimizations.
1957
1958         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
1959         fold_build2.
1960         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
1961         alpha_fold_vector_minmax): Likewise.
1962         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
1963         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
1964
1965 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1966
1967         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
1968         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
1969         if the lhs has side-effects.
1970         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
1971
1972 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1973
1974         * config/i386/i386.h (TUNEMASK): Remove define.
1975         (ARCHMASK): Remove define.
1976         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
1977          Use ix86_arch_mask variable instead of ARCHMASK.
1978         * config/i386/i386.c (override_options): Ditto.
1979         (standard_80387_constant_p): Ditto.
1980
1981 2007-03-02  Ian Lance Taylor  <iant@google.com>
1982
1983         Used signed infinities in VRP.
1984         * tree-vrp.c (uses_overflow_infinity): New static function.
1985         (supports_overflow_infinity): New static function.
1986         (make_overflow_infinity): New static function.
1987         (negative_overflow_infinity): New static function.
1988         (positive_overflow_infinity): New static function.
1989         (is_negative_overflow_infinity): New static function.
1990         (is_positive_overflow_infinity): New static function.
1991         (is_overflow_infinity): New static function.
1992         (overflow_infinity_range_p): New static function.
1993         (compare_values_warnv): New function split out of compare_values.
1994         (compare_value): Call it.
1995         (set_value_range_to_nonnegative): Add overflow_infinity
1996         parameter.  Change caller.
1997         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
1998         Change callers.
1999         (vrp_expr_computes_nonzero): Likewise.
2000         (compare_ranges, compare_range_with_value): Likewise.
2001         (compare_name_with_value, compare_names): Likewise.
2002         (vrp_evaluate_conditional): Likewise.
2003         (set_value_range): Handle infinity
2004         (vrp_operand_equal_p, operand_less_p): Likewise.
2005         (extract_range_from_assert): Likewise.
2006         (vrp_int_const_binop): Likewise.
2007         (extract_range_from_binary_expr): Likewise.
2008         (extract_range_from_unary_expr): Likewise.
2009         (extract_range_from_comparison): Likewise.
2010         (extract_range_from_expr): Likewise.
2011         (dump_value_range): Likewise.
2012         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
2013         (test_for_singularity): Likewise.
2014         (vrp_int_const_binop): Remove inline qualifier.
2015         (adjust_range_with_scev): Add comment.
2016         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
2017
2018 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
2019
2020         * tree-ssa-structalias.c (could_have_pointers): Tidy.
2021         (get_constraint_for): Likewise.
2022         (do_structure_copy): Likewise.
2023         (find_func_aliases): Fix references to MODIFY_EXPR.
2024         (intra_create_variable_infos): Tidy.
2025         * tree-ssa-operands.c (add_virtual_operand): Add argument
2026         IS_CALL_SITE.
2027         When adding members of alias sets, if IS_CALL_SITE is true and
2028         the symbol is not call-clobbered, skip it.
2029         Adjust all callers.
2030
2031 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
2032
2033         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
2034         entry by means of emit_insn_at_entry.
2035
2036 2007-03-02  Richard Henderson  <rth@redhat.com>
2037
2038         * expr.h (promoted_input_arg): Remove decl.
2039         * function.c (promoted_input_arg): Merge into ...
2040         * combine.c (setup_incoming_promotions): ... only caller.
2041         Rearrange to avoid double loop.
2042
2043 2007-03-02  Ben Elliston  <bje@au.ibm.com>
2044             Peter Bergner  <bergner@vnet.ibm.com>
2045             Janis Johnson  <janis187@us.ibm.com>
2046
2047         * config/rs6000/dfp.md: New file.
2048         * config/rs6000/rs6000.md: Include dfp.md.
2049         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
2050         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
2051         and TDmode decimal float modes in FP registers.
2052         (num_insns_constant): Likewise.
2053         (rs6000_legitimate_offset_address_p): Likewise.
2054         (rs6000_legitimize_address): Likewise.
2055         (rs6000_legitimize_reload_address): Likewise.
2056         (rs6000_legitimate_address): Likewise.
2057         (rs6000_emit_move): Likewise.
2058         (function_arg_boundary): Likewise.
2059         (function_arg_advance): Likewise.
2060         (rs6000_darwin64_record_arg_recurse): Likewise.
2061         (function_arg): Likewise.
2062         (rs6000_gimplify_va_arg): Likewise.
2063         (rs6000_split_multireg_move): Likewise.
2064         (rs6000_output_function_epilogue): Likewise.
2065         (rs6000_output_function_epilogue): Likewise.
2066         (rs6000_register_move_cost): Likewise.
2067         (rs6000_function_value): Likewise.
2068         (rs6000_libcall_value): Likewise.
2069
2070 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
2071
2072         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
2073
2074 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
2075
2076         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
2077         Use $MULTIDIR to choose between the kernel and RTP headers,
2078         and use $WIND_BASE and $WIND_USR to locate them.
2079
2080 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
2081
2082         * config/i386/i386.c (override_options): Put initialization of
2083         ix86_tune_mask and ix86_arch_mask to the correct place.
2084
2085 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
2086             Michael Meissner  <michael.meissner@amd.com>
2087
2088         PR target/31019
2089         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
2090         (ARCHMASK): Define.
2091         (TARGET_CMOVE): Use ARCHMASK.
2092         (TARGET_CMPXCHG): Ditto.
2093         (TARGET_CMPXCHG8B): Ditto.
2094         (TARGET_XADD): Ditto.
2095         (TARGET_BSWAP): Ditto.
2096         * config/i386/i386.c (ix86_tune_mask): New global variable.
2097         (ix86_arch_mask): Ditto.
2098         (override_options): Initialize ix86_tune_mask and
2099         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
2100         target_flags.
2101
2102 2007-03-02  Ben Elliston  <bje@au.ibm.com>
2103
2104         PR 30992
2105         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
2106
2107 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
2108
2109         * target.h (init_dwarf_reg_sizes_extra): New target hook.
2110         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
2111         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
2112         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
2113         hook.
2114         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
2115         rs6000_init_dwarf_reg_sizes_extra): New.
2116         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
2117         SPE register high parts.
2118
2119 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2120
2121         * Makefile.in: Add install-pdf target as
2122         copied from automake v1.10 rules.
2123         * configure.ac: Add install-pdf to target list.
2124         * configure: Regenerate.
2125
2126 2007-03-01  Paul Brook  <paul@codesourcery.com>
2127
2128         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
2129         modes to LDRD for DImode.
2130         (output_move_double): Fixup out of range ldrd/strd.
2131         (vfp_secondary_reload_class): Rename...
2132         (coproc_secondary_reload_class): ... to this.  Add wb argument.
2133         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
2134         coproc_secondary_reload_class for CLASS_IWMMXT.
2135         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
2136         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
2137
2138 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
2139
2140         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
2141         factor by the estimated number of iterations.
2142         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
2143         prefetch latency.
2144
2145         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
2146         decode_caches_intel, detect_caches_intel): New functions.
2147         (host_detect_local_cpu): Use detect_caches_amd and
2148         detect_caches_intel.
2149
2150 2007-03-01  Richard Henderson  <rth@redhat.com>
2151
2152         * expr.c (emit_move_complex_push): Export.
2153         (emit_move_complex_parts): Split out from ...
2154         (emit_move_complex): ... here.
2155         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
2156         * config/i386/i386.md (movcdi): New.
2157
2158 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
2159
2160         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
2161         size of mode1 to check for tieable modes in MMX case.
2162
2163 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
2164
2165         * Makefile.in (rtlanal.o): Depend on tree.h.
2166         * rtl.h (offset_within_section_p, split_const): Declare.
2167         * rtlanal.c: Include tree.h.
2168         (offset_within_block_p): New function, taken from
2169         mips_offset_within_object_p.
2170         (split_const): New function, taken from mips_split_const.
2171         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
2172         Declare.
2173         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
2174         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
2175         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
2176         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
2177         (m68k_illegitimate_symbolic_constant_p): New function.
2178         * config/m68k/m68k.md (movsi): Remove misleading predicates.
2179         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
2180         symbolic constant that might be outside the symbol's section,
2181         move the symbol first and then add the offset.
2182         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
2183         Override.
2184         * config/mips/mips.c (mips_split_const): Delete.
2185         (mips_offset_within_object_p): Delete.
2186         (mips_symbolic_constant_p): Use offset_within_section_p and
2187         split_const instead of mips_offset_within_object_p and
2188         mips_split_const.
2189         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
2190         (mips_legitimize_const_move, print_operand_reloc)
2191         (mips_dangerous_for_la25_p): Use split_const instead of
2192         mips_split_const.
2193
2194 2007-02-28  Eric Christopher  <echristo@apple.com>
2195
2196         * Makefile.in (install-include-dir): Don't rm -rf include.
2197
2198 2007-02-28  Richard Guenther  <rguenther@suse.de>
2199
2200         PR middle-end/30364
2201         * fold-const.c (fold_binary): Do not associate expressions
2202         with more than one variable for integer types that do not wrap.
2203
2204 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
2205
2206         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
2207         Delete, and replace with...
2208         (fold_builtin_call_array): This.  Update callers to use it.
2209         * fold-const.c (fold_build_call_list): Delete, and replace with...
2210         (fold_build_call_array): This.
2211         (fold_build_call_list_initializer): Delete, and replace with...
2212         (fold_build_call_array_initializer): This.
2213         * tree.h: Update declarations to reflect above changes.
2214
2215         * c-typeck.c (build_function_call): Store converted arguments
2216         in a stack-allocated array instead of building a list.
2217         (convert_arguments): Store arguments in the array passed in as an
2218         argument, and return the actual number of arguments.
2219         * c-format.c: (check_function_format): Pass arguments in an
2220         array instead of a list.
2221         * c-common.c (check_function_nonnull): Likewise.
2222         (check_function_sentinel): Likewise.
2223         (check_function_arguments): Likewise.
2224         * c-common.h: Update declarations to reflect above changes.
2225
2226 2007-02-28  Jan Hubicka  <jh@suse.cz>
2227
2228         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
2229         PRED_NEGATIVE_RETURN): Update outcomes.
2230
2231 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
2232
2233         * calls.c (emit_library_call_value_1): Handle partial registers
2234         correctly when building up CALL_INSN_FUNCTION_USAGE.
2235
2236 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2237
2238         * pa/predicates.md (move_src_operand): Allow zero for mode.
2239         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
2240         move pattern.
2241
2242 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
2243
2244         PR target/30970
2245         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
2246         *movv2df_internal): Enable pattern only for valid operand
2247         combinations.
2248         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
2249         tie only 128bit modes. For MMX registers, tie only 64bit modes.
2250
2251 2007-02-27  Mike Stump  <mrs@apple.com>
2252
2253         * config/darwin-crt3.c: Avoid compilation when compiling for a
2254         kext multilib.
2255
2256 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
2257
2258         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
2259         FIXED_INCLUDE_DIR.
2260         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
2261         for fixed headers and limits.h.
2262         (install-include-dir, install-headers-tar, install-headers-cpio,
2263         install-headers-cp, real-install-headers-tar,
2264         real-install-headers-cpio, real-install-headers-cp): Handle
2265         include-fixed as well as include.
2266         (install-mkheaders): Don't install files that go only in include
2267         not include-fixed.
2268         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
2269         from GCC_INCLUDE_DIR.
2270         * gcc.c (process_command): Remove special -BstageN/ handling.
2271         (do_spec_1): Add include-fixed directories.
2272
2273 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2274
2275         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
2276         _smulsi3_highpart.
2277         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
2278         New functions.
2279         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
2280         patterns.
2281
2282 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
2283
2284         * c-common.c (get_priority): Add check for
2285         SUPPORTS_INIT_PRIORITY.
2286
2287 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2288
2289         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
2290
2291         * config/bfin/bfin.c: Include "cfglayout.h".
2292         (MAX_LSETUP_DISTANCE): New macro.
2293         (struct loop_info): New members incoming, incoming_src and
2294         incoming_dest.  Delete member predecessor.
2295         (length_for_loop): New function.
2296         (bfin_optimize_loop): Handle more different loop structures.
2297         (bfin_discover_loop): Rework detection of predecessor blocks by
2298         examining incoming edges.
2299         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
2300         bfin_reorg_loops.
2301         (bfin_reorder_loops): New function.
2302         (bfin_reorg_loops): Use these three new functions.
2303
2304         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
2305         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
2306         (CONSTRAINT_LEN): Add entry for 'q'.
2307         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
2308         Add 'q' constraints.
2309         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
2310         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
2311
2312         * config/bfin/bfin.md (add_with_carry): New pattern.
2313         (s_or_u, su_optab, su_modifier): New code macros/attrs.
2314         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
2315         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
2316         support unsigned multiplies too.  Removed incorrect commutativity from
2317         operand 1 constraint where appropriate.
2318         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
2319         patterns.
2320         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
2321         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
2322         New patterns.
2323         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
2324         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
2325         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
2326         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
2327         usmulhisi_hh_huh): New patterns.
2328
2329         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
2330         lshifthi3): Fix output template to use half reg for operand 2.
2331
2332         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
2333         instead of R2.
2334
2335         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
2336
2337 2007-02-27  Andreas Schwab  <schwab@suse.de>
2338
2339         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
2340
2341 2007-02-27  Jan Hubicka  <jh@suse.cz>
2342
2343         * predict.c (last_basic_block_p): Remove.
2344         (tree_estimate_probability): Update return heuristic for commonized
2345         return blocks.
2346
2347 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
2348
2349         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
2350
2351 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
2352
2353         * doc/include/gcc-common.texi (versionsubtitle): New macro.
2354         * doc/cpp.texi: Standardize title page.
2355         * doc/cppinternals.texi: Likewise.
2356         * doc/gcc.texi: Standardize title page, remove version number
2357         from copyright page.
2358         * doc/gccint.texi: Likewise.
2359         * doc/install.texi: Standardize title page, add table of
2360         contents.
2361
2362 2007-02-26  Jan Hubicka  <jh@suse.cz>
2363
2364         * predict.def: Set outcomes according to more recent results.
2365         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
2366         Remove dead predictors.
2367         * predict.c (return_prediction): Fix pasto.
2368
2369 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2370
2371         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
2372         change; avoid a memory leak when returning early.
2373
2374 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
2375
2376         * c-decl.c (static_ctors): Move to c-common.c.
2377         (static_dtors): Likewise.
2378         (finish_function): Use c_record_cdtor_fn.
2379         (build_cdtor): Move to c-common.c.
2380         (c_write_global_declarations): Use c_build_cdtor_fns.
2381         * c-common.h (static_ctors): Declare.
2382         (static_dtors): Likewise.
2383         (c_record_cdtor_fn): Likewise.
2384         (c_build_cdtor_fns): Likewise.
2385         * c-common.c (static_ctors): New variable.
2386         (static_dtors): Likewise.
2387         (c_record_cdtor_fn): New function.
2388         (build_cdtor): Move from c-decl.c
2389         (c_build_cdtor_fns): New function.
2390
2391         * output.h (assemble_addr_to_section): Declare.
2392         (get_cdtor_priority_section): Likewise.
2393         * varasm.c (assemble_addr_to_section): New function.
2394         (get_cdtor_priority_section): Likewise.
2395         (default_named_section_asm_out_destructor): Use them.
2396         (destor_dtor_section_asm_out_destructor): Likewise.
2397         (default_named_section_asm_out_constructor): Likewise.
2398         (default_ctor_section_asm_out_constructor): Likewise.
2399         * config.gcc (*-*-vxworks*): Include vxworks.o.
2400         * config/t-vxworks (vxworks.o): New target.
2401         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
2402         (TARGET_ASM_CONSTRUCTOR): Define.
2403         (TARGET_ASM_DESTRUCTOR): Likewise.
2404         (vxworks_asm_out_constructor): Declare.
2405         (vxworks_asm_out_destructor): Likewise.
2406
2407         * c-common.c (get_priority): Check that we have not just an
2408         INTEGER_CST, but an integer constant with integeral type.
2409
2410 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
2411
2412         PR tree-optimization/30938
2413         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
2414         use &dt[nargs-1] instead of &dt[nargs] in the call to
2415         vect_is_simple_use().
2416
2417 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
2418
2419         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
2420         from register elimination as PRE_MODIFY / POST_MODIFY increments.
2421         Do not attempt to handle MEM inside auto-inc expressions.
2422         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
2423         of a register modified by an auto-inc expression.  However, do handle
2424         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
2425         (elimination_effects): Prohibit elimination of a register modified
2426         by an auto-inc expression.  Disable register elimination rules whose
2427         target register is modified by an auto-inc expression with variable
2428         increment.
2429
2430 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
2431
2432         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
2433         off-by-one error.
2434         (array_at_struct_end_p): New function.
2435         (idx_infer_loop_bounds): Use it.
2436         (estimate_numbers_of_iterations_loop): Export.
2437         * predict.c (predict_loops): Use estimated_loop_iterations_int.
2438         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
2439         (tree_estimate_probability): Call record_loop_exits.
2440         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
2441         (estimated_loop_iterations, estimated_loop_iterations_int,
2442         estimated_loop_iterations_tree): New functions.
2443         (analyze_siv_subscript_cst_affine,
2444         compute_overlap_steps_for_affine_1_2,
2445         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
2446         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
2447         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
2448         (PRED_LOOP_ITERATIONS_GUESSED): New.
2449         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
2450         * cfgloop.h (estimate_numbers_of_iterations_loop,
2451         estimated_loop_iterations_int): Declare.
2452
2453 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
2454
2455         * doc/extend.texi: Document optional priority argument to
2456         constructors and destructors.
2457         * tree.c (init_priority_for_decl): Adjust GTY markers.
2458         (init_ttree): Use priority-info hash functions for
2459         init_priority_for_decl.
2460         (tree_map_eq): Rename to ...
2461         (tree_map_base_eq): ... this.
2462         (tree_map_marked_p): Rename to ...
2463         (tree_map_base_marked_p): ... this.
2464         (tree_map_base_hash): New function.
2465         (decl_init_priority_lookup): Rework.
2466         (decl_fini_priority_lookup): New function.
2467         (decl_priority_info): New function.
2468         (decl_init_priority_insert): Use it.
2469         (decl_fini_priority_insert): Likewise.
2470         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
2471         hierarchy.
2472         (decl_restrict_base_insert): Likewise.
2473         (decl_debug_expr_insert): Likewise.
2474         (decl_value_expr_lookup): Likewise.
2475         (decl_value_expr_insert): Likewise.
2476         * tree.h (priority_type): New type.
2477         (decl_init_priority_lookup): Use priority_type.
2478         (decl_fini_priority_lookup): New function.
2479         (decl_init_priority_insert): Use priority_type.
2480         (decl_fini_priority_insert): New function.
2481         (DECL_HAS_INIT_PRIORITY): Tweak comments.
2482         (DECL_INIT_PRIORITY): Likewise.
2483         (SET_DECL_INIT_PRIORITY): Add comment.
2484         (DECL_FINI_PRIORITY): New macro.
2485         (SET_DECL_FINI_PRIORITY): Likewise.
2486         (DEFAULT_INIT_PRIORITY): Document.
2487         (MAX_INIT_PRIORITY): Likewise.
2488         (MAX_RESERVED_INIT_PRIORITY): Likewise.
2489         (tree_map_base): New type.
2490         (tree_map_base_eq): New function.
2491         (tree_map_base_hash): Likewise.
2492         (tree_map_base_marked_p): Likewise.
2493         (tree_map): Inherit from tree_map_base.
2494         (tree_map_eq): Make it a macro.
2495         (tree_map_marked_p): Likewise.
2496         (tree_int_map): Inherit from tree_map_base.
2497         (tree_int_map_eq): Make it a macro.
2498         (tree_int_map_hash): Likewise.
2499         (tree_int_map_marked_p): Likewise.
2500         (tree_priority_map): New type.
2501         (tree_priority_map_eq): New macro.
2502         (tree_priority_map_hash): Likewise.
2503         (tree_priority_map_marked_p): Likewise.
2504         * varasm.c (emults_decl): Adjust for refactoring of tree_map
2505         hierarchy.
2506         (emutls_common_1): Likewise.
2507         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
2508         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
2509         of tree_map hierarchy.
2510         * tree-cfg.c (move_stmt_r): Likewise.
2511         (new_label_mapper): Likewise.
2512         * c-tree.h (c_expand_body): Move to ...
2513         * c-common.h (c_expand_body): ... here.
2514         * c-decl.c (c_expand_body): Move to ...
2515         * c-common.c (c_expand_body): ... here.
2516         (c_common_attribute_table): Allow 1 argument for the constructor
2517         and destructor attributes.
2518         (get_priority): New function.
2519         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
2520         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
2521
2522 2007-02-24  Jan Hubicka  <jh@suse.cz>
2523
2524         PR middle-end/30509
2525         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
2526
2527 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
2528             Jan Hubicka  <jh@suse.cz>
2529
2530         PR target/30778
2531         * i386.c (counter_mode): New function.
2532         (expand_set_or_movmem_via_loop): Use it.
2533         (expand_movmem_epilogue): Likewise; fix pasto.
2534         (ix86_expand_movmem): Do emit guard even for constant counts.
2535         (ix86_expand_setmem): Likewise.
2536
2537 2007-02-25  Nick Clifton  <nickc@redhat.com>
2538
2539         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
2540         (JUMP_TABLES_IN_TEXT_SECTION): Define.
2541
2542 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
2543
2544         PR target/30770
2545         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
2546         count argument with 0x10, not with 0x16.
2547         (expand_setmem_epilogue): Ditto.
2548
2549 2007-02-24  Mike Stump  <mrs@apple.com>
2550
2551         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
2552         symbols.
2553
2554 2007-02-24  Richard Guenther  <rguenther@suse.de>
2555
2556         PR middle-end/30951
2557         * fold-const.c (fold_binary): Fold x +- CST op x for
2558         EQ_EXPR and NE_EXPR.
2559
2560 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2561
2562         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
2563
2564 2007-02-24  Jan Hubicka  <jh@suse.cz>
2565
2566         * cgraphunit.c (decide_is_function_needed): Honor
2567         -fkeep-inline-functions.
2568
2569 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2570
2571         * builtins.c (fold_builtin_modf): New.
2572         (fold_builtin_2): Use it.
2573
2574 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
2575
2576         * loop-iv.c (implies_p): Detect additional cases where A implies B.
2577         (determine_max_iter): Take additional LOOP arg; all callers changed.
2578         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
2579         one using simplifications.
2580         (simplify_using_initial_values): Return if the expression becomes
2581         invalid due to altered regs.
2582
2583 2007-02-23  DJ Delorie  <dj@redhat.com>
2584
2585         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
2586
2587 2007-02-23  Mike Stump  <mrs@apple.com>
2588
2589         * tlink.c (scan_linker_output): Parse linker messages from
2590         darwin9's linker better.
2591
2592 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
2593
2594         PR debug/29614
2595         * varpool.c (varpool_assemble_pending_decls):  Set
2596         varpool_last_needed_node to null.
2597
2598 2007-02-23  DJ Delorie  <dj@redhat.com>
2599
2600         * config/i386/i386.c (ix86_data_alignment): Don't specify an
2601         alignment bigger than the object file can handle.
2602
2603 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
2604
2605         PR target/30825
2606         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
2607         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
2608         (*movsf_1): Penalize MMX moves.
2609
2610 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2611
2612         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
2613         2^32-1 or more times unless flag_unsafe_loop_optimizations.
2614
2615         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
2616
2617 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2618
2619         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
2620         (fold_builtin_1): Use them.
2621         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2622         BUILT_IN_SIGNIFICAND.
2623
2624 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
2625
2626         * config/i386/i386.c (bdesc_1arg): Initialize
2627         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
2628         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
2629         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
2630         and IX86_BUILTIN_MOVSLDUP.
2631
2632 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
2633
2634         PR rtl-optimization/30841
2635         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
2636
2637 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2638
2639         * builtins.c (fold_builtin_frexp): New.
2640         (fold_builtin_2): Use it.
2641
2642 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
2643
2644         * doc/invoke.texi (Spec Files): Document getenv spec function.
2645
2646         * gcc.c (getenv_spec_function): New function.
2647         (static_spec_functions): Add it.
2648         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
2649         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
2650         header files.
2651
2652 2007-02-22  Michael Matz  <matz@suse.de
2653
2654         PR c++/29433
2655         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
2656         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
2657
2658 2007-02-22  Ian Lance Taylor  <iant@google.com>
2659
2660         PR debug/30898
2661         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
2662         (mem_loc_descriptor): Call it.
2663
2664 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
2665             Ira Rosen  <irar@il.ibm.com>
2666
2667         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
2668
2669 2007-02-22  Ira Rosen  <irar@il.ibm.com>
2670
2671         PR tree-optimization/30843
2672         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
2673         stores only after all the group is vectorized.
2674
2675 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
2676
2677         PR tree-optimization/30858
2678         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
2679         in the reduction cycle have a single use in the loop.
2680         * tree-vectorizer.h (relevant): Add documentation.
2681
2682 2007-02-20  Mike Stump  <mrs@apple.com>
2683
2684         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
2685         * configure: Regenerate.
2686
2687 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2688
2689         Change the defaults of some parameters and options.
2690         * config/spu/spu-protos.h (spu_optimization_options): Declare.
2691         * config/spu/spu.c (spu_optimization_options): Add.
2692         (spu_override_options): Change params in spu_optimization_options.
2693         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
2694
2695         Register 127 is only 16 byte aligned when used as a frame pointer.
2696         * config/spu/spu-protos.h (spu_init_expanders): Declare.
2697         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
2698         HARD_FRAME_POINTER_REGNUM.
2699         (spu_legitimate_address):  Use regno_aligned_for_reload.
2700         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
2701         aligned when frame_pointer_needed is true.
2702         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
2703         to 8 bits.
2704         * config/spu/spu.h (INIT_EXPANDERS): Define.
2705
2706         Make sure shift and rotate instructions have valid immediate operands.
2707         * config/spu/predicates.md (spu_shift_operand): Remove.
2708         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
2709         * config/spu/constraints.md (W, O): Extend range.
2710         * config/spu/spu.md (umask, nmask): Define.
2711         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
2712         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
2713         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
2714         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
2715         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
2716         (lshr<mode>3_reg):  Fix rtl description.
2717
2718         Make sure mulhisi immediate operands are valid.
2719         * config/spu/predicates.md (imm_K_operand): Add.
2720         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
2721
2722         Generate constants using fsmbi and andi.
2723         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
2724         (print_operand, spu_split_immediate, classify_immediate,
2725         fsmbi_const_p): Handle IC_FSMBI2.
2726
2727         Correctly handle a CONST_VECTOR containing symbols.
2728         * config/spu/spu.c (print_operand): Handle HIGH correctly.
2729         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
2730         (immediate_load_p): Allow symbols that use 2 instructions to create.
2731         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
2732         with symbols when flag_pic is set.
2733         (const_vector_immediate_p): New.
2734         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
2735         accept a CONST_VECTOR with symbols.
2736         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
2737         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
2738         correctly.
2739         * config/spu/spu.md (high, low): Delete.
2740         (low_<mode>): Define.
2741
2742         Remove INTRmode and INTR_REGNUM, which didn't work.
2743         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
2744         of INTR_REGNUM.
2745         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
2746         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
2747         peephole2 pattern): Don't use INTR or 131.
2748         (movintrcc): Delete.
2749         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
2750         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
2751         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
2752         (UNSPEC_SET_INTR): Add.
2753         * config/spu/spu-modes.def (INTR): Remove.
2754
2755         More accurate warnings about run-time relocations.
2756         * config/spu/spu.c (reloc_diagnostic): Test in_section.
2757
2758         Correctly warn about immediate arguments to specific intrinsics.
2759         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
2760         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
2761         the instruction predicate.
2762
2763         Fix tree check errors with latest update.
2764         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
2765         CALL_EXPR_ARG.
2766         (spu_expand_builtin): Use CALL_EXPR_FN.
2767
2768         Add missing specific intrinsics.
2769         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
2770         si_bislede.
2771         * config/spu/spu_internals.h: Ditto.
2772
2773         Fix incorrect operand modifiers.
2774         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
2775         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
2776
2777         Optimize one case of zero_extend of a vec_select.
2778         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
2779
2780         Accept any immediate for hbr.
2781         * config/spu/spu.md (hbr):  Change s constraints to i.
2782
2783 2007-02-21  Paul Brook  <paul@codesourcery.com>
2784
2785         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
2786         condexec_count when skipping USE and CLOBBER.
2787
2788 2007-02-21  Nick Clifton  <nickc@redhat.com>
2789
2790         * common.opt (Warray-bounds): Add Warning attribute.
2791         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
2792         Likewise.
2793         (fsized-zeroes): Add Optimization attribute.
2794         (fsplit-wide-types, ftree-scev-cprop): Likewise.
2795         * c.opt (Wc++0x-compat): Add Warning attribute.
2796
2797 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
2798
2799         PR middle-end/30761
2800         * reload1.c (eliminate_regs_in_insn): In the single_set special
2801         case, attempt to re-recognize the insn before falling back to
2802         having reload fix it up.
2803
2804 2007-02-20  Eric Christopher  <echristo@gmail.com>
2805
2806         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
2807         Rewrite accordingly.
2808         (frv_read_iacc_argument): Ditto.
2809         (frv_expand_set_builtin): Take a call instead of arglist, update for
2810         above changes.
2811         (frv_expand_unop_builtin): Ditto.
2812         (frv_expand_binop_builtin): Ditto.
2813         (frv_expand_cut_builtin): Ditto.
2814         (frv_expand_binopimm_builtin): Ditto.
2815         (frv_expand_voidbinop_builtin): Ditto.
2816         (frv_expand_int_void2arg): Ditto.
2817         (frv_expand_prefetches): Ditto.
2818         (frv_expand_voidtriop_builtin): Ditto.
2819         (frv_expand_voidaccop_builtin): Ditto.
2820         (frv_expand_load_builtin): Ditto.
2821         (frv_expand_store_builtin): Ditto.
2822         (frv_expand_mdpackh_builtin): Ditto.
2823         (frv_expand_mclracc_builtin): Ditto.
2824         (frv_expand_mrdacc_builtin): Ditto.
2825         (frv_expand_mwtacc_builtin): Ditto.
2826         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
2827         calls for above.
2828
2829 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
2830
2831         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
2832         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
2833         cmpb instruction.
2834         (HAVE_GAS_DFP): Check for assembler support of decimal floating
2835         point instructions.
2836         * configure: Regenerate.
2837         * config.in: Regenerate.
2838         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
2839         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
2840         masks to power6 and power6x and to POWERPC_MASKS.
2841         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2842         _ARCH_PWR6.
2843         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
2844         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
2845         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
2846         Access PROTOTYPE as variable, not mask.
2847
2848 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
2849
2850         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
2851         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
2852         * combine.c (adjust_for_new_dest): Use it.
2853         * postreload.c (reload_combine): Likewise.
2854
2855 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
2856
2857         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
2858         notes on an insn with multiple sets, even if single_set returns
2859         non-NULL for that insn.
2860
2861 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2862
2863         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
2864         scalbn and scalbln.
2865
2866 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
2867
2868         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
2869         if user didn't pass it.
2870         * config/i386/darwin.h (CC1_SPEC): Likewise.
2871         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
2872         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
2873         -mmacosx-version-min.
2874
2875 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2876             Uros Bizjak  <ubizjak@gmail.com>
2877
2878         * optabs.h (enum optab_index): Add new OTI_scalb.
2879         (scalb_optab): Define corresponding macro.
2880         * optabs.c (init_optabs): Initialize scalb_optab.
2881         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
2882         patterns.
2883         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
2884         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
2885         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
2886         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
2887         flag_unsafe_math_optimizations is set.
2888
2889         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
2890         to implement scalbf, scalb and scalbl built-ins as inline x87
2891         intrinsics.
2892
2893 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2894             DJ Delorie <dj@redhat.com>
2895
2896         PR other/30824
2897         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
2898         (diagnostic_report_diagnostic): ... here, and turn them into real
2899         errors. If warnings are inhibited, no need to do anything.
2900
2901 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
2902
2903         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
2904         better code generation.
2905
2906 2007-02-20  Ben Elliston  <bje@au.ibm.com>
2907
2908         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
2909
2910 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
2911
2912         * config/alpha/alpha.c, config/alpha/alpha.md,
2913         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
2914         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
2915         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
2916         config/arm/lib1funcs.asm: Follow spelling conventions.
2917
2918         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
2919         config/fr30/fr30.md, config/i386/i386.h,
2920         config/iq2000/iq2000.h, config/iq2000/predicates.md,
2921         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
2922         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
2923         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
2924         config/rs6000/altivec.md, config/rs6000/rs6000.c,
2925         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
2926         config/sparc/sparc.c, config/sparc/sparc.h,
2927         config/sparc/sparc.md, config/spu/constraints.md,
2928         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
2929         conventions.
2930
2931 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
2932
2933         PR target/29943
2934         * varasm.c (use_blocks_for_decl_p): Return false for decls with
2935         alias attribute.
2936
2937 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
2938
2939         * doc/invoke.texi (-ftree-lrs): Remove.
2940
2941 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
2942
2943         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
2944         NULL.
2945
2946 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
2947
2948         * config/ia64/ia64.c (ia64_expand_builtin): Use the
2949         new CALL_EXPR_FN macro for retrieving the function
2950         declaration of the input expression.
2951
2952 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2953
2954         * c.opt (Waddress): New.
2955         * common.opt (Walways-true): Delete.
2956         (Wstring-literal-comparison): Delete.
2957         * doc/invoke.texi (Warning Options): Delete -Walways-true and
2958         -Wstring-literal-comparison. Add -Waddress.
2959         (Waddress): New.
2960         (Walways-true): Delete.
2961         (Wstring-literal-comparison): Delete.
2962         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
2963         consistently instead of -Walways-true in example.
2964         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
2965         * c-typeck.c (parser_build_binary_op): Replace
2966         -Wstring-literal-comparison and -Walways-true with -Waddress.
2967         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
2968         with -Waddress.
2969
2970 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2971
2972         * tree-cfg.c (dump_function_to_file): Be prepared for functions
2973         without DECL_STRUCT_FUNCTION initialized.
2974
2975 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2976
2977         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
2978         due to calls to functions taking pointers as parameters.
2979
2980 2007-02-19  Richard Henderson  <rth@redhat.com>
2981
2982         PR debug/29558
2983         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
2984         in memory.
2985
2986 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2987
2988         * config/s390/s390.c (s390_call_saved_register_used,
2989         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
2990         accessed to the new scheme.
2991
2992 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2993
2994         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
2995         (cris_print_index, cris_print_operand, cris_print_operand_address)
2996         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
2997         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
2998         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
2999         GET_CODE () == xxx.
3000         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
3001         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
3002         GO_IF_LEGITIMATE_ADDRESS): Ditto.
3003         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
3004         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
3005         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
3006         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
3007         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
3008         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
3009         (uminsi3, call, call_value): Ditto.
3010         (define_split: indir_to_reg_split, unnamed): Ditto.
3011
3012 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
3013
3014         PR tree-optimization/30975
3015         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
3016         wrong assert.
3017
3018 2007-02-18  Eric Christopher  <echristo@gmail.com>
3019
3020         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
3021         Remove use of arglist.
3022         (mips_expand_builtin): Remove use of arglist, pass in expr.
3023         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
3024         (mips_expand_builtin_movtf): Ditto.
3025         (mips_expand_builtin_compare): Ditto.
3026
3027 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
3028
3029         * tree-sra.c (sra_build_assignment): Replace assertion
3030         checking with a comment explaining why it can't be done.
3031
3032 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
3033
3034         PR middle-end/30833
3035         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
3036         during CALL_EXPR representation conversion.
3037         * tree-ssa-propagate.c (set_rhs): Likewise.
3038
3039 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
3040
3041         * tree-sra.c (sra_build_assignment): Disable assertion checking
3042         for now.
3043
3044 2007-02-18  Roger Sayle  <roger@eyesopen.com>
3045
3046         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
3047         instead of calling build2 with a GIMPLE_MODIFY_STMT.
3048         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
3049         Likewise.
3050         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
3051         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
3052         gimplify_init_ctor_eval_range, gimple_push_cleanup,
3053         gimplify_omp_for, gimplify_omp_atomic_pipeline,
3054         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
3055         force_gimple_operand): Likewise.
3056         * ipa-cp.c (constant_val_insert): Likewise.
3057         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
3058         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
3059         perfect_nestify): Likewise.
3060         * langhooks.c (lhd_omp_assignment): Likewise.
3061         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
3062         lower_copyprivate_clauses, lower_send_clauses,
3063         lower_send_shared_vars, expand_parallel_call,
3064         expand_omp_for_generic, expand_omp_for_static_nochunk,
3065         expand_omp_for_static_chunk, expand_omp_sections,
3066         lower_omp_single_copy, lower_omp_for_lastprivate,
3067         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
3068         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
3069         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
3070         Likewise.
3071
3072 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
3073
3074         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
3075         config/sh/sh.md: Follow spelling conventions.
3076
3077         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
3078         config/frv/predicates.md: Follow spelling conventions.
3079
3080         * config/m68k/linux-unwind.h: Fix a comment typo.
3081         * target.h: Follow spelling conventions.
3082
3083 2007-02-18  Roger Sayle  <roger@eyesopen.com>
3084
3085         PR rtl-optimization/28173
3086         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
3087         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
3088         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
3089         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
3090         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
3091
3092 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3093
3094         * builtins.c (fold_builtin_load_exponent): New.
3095         (fold_builtin_2): Use it.
3096
3097 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
3098
3099         PR rtl-optimization/30773
3100         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
3101         if we fail to attach a REG_EQUIV note.
3102
3103 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
3104             Roger Sayle  <roger@eyesopen.com>
3105
3106         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
3107
3108 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
3109
3110         * calls.c (initialize_argument_information): Pass original EXP
3111         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
3112         code to split complex arguments here, as part of initializing the
3113         ARGS array.
3114         (expand_call): Remove code that builds a list of arguments and
3115         inserts implicit arguments into it.  Instead, just count how many
3116         implicit arguments there will be so we can determine the size of
3117         the ARGS array, and let initialize_argument_information do the work.
3118         (split_complex_values): Delete unused function.
3119
3120 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
3121
3122         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
3123
3124 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
3125
3126         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
3127         for arg pointer based indexed addressing.
3128
3129 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
3130
3131         * config/ia64/ia64.h, config/ia64/ia64.md,
3132         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
3133         spelling conventions.
3134
3135 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
3136
3137         * config/m68k/m68k.c (split_di): New.
3138         * config/m68k/m68k-protos.h: Declare split_di.
3139         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
3140           Improve predicate handling and split constant shifts.
3141
3142 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
3143
3144         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
3145         parameter for register bitfield operations, general predicates
3146         cleanup
3147
3148 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
3149
3150         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
3151         * config/m68k/linux-unwind.h: New file.
3152
3153 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
3154
3155         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
3156         config/i386/athlon.md, config/ia64/ia64.md,
3157         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
3158         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
3159         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
3160         tree-ssa-loop-niter.c, tree-vect-analyze.c,
3161         tree-vect-transform.c: Fix comment typos.
3162
3163 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
3164
3165         * sched-deps.c (find_insn_list): Remove.
3166         * sched-int.h: Remove the prototype for find_insn_list.
3167
3168 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
3169
3170         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
3171         to linker.
3172         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
3173         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
3174         darwin_rs6000_override_options.
3175         (C_COMMON_OVERRIDE_OPTIONS): Expect
3176         darwin_macosx_version_min to be non-NULL always.
3177         (TARGET_C99_FUNCTIONS): Likewise.
3178         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
3179         (DARWIN_MINVERSION_SPEC): New.
3180         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
3181         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
3182         to cc1*.
3183         (DARWIN_MINVERSION_SPEC): New.
3184         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
3185         value.
3186         * config/darwin-c.c (darwin_cpp_builtins): Expect
3187         darwin_macosx_version_min to be non-NULL always.
3188
3189         * config/rs6000/rs6000.c: Clean up trailing whitespace.
3190
3191 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
3192
3193         * config/i386/i386.h (x86_use_xchgb): New.
3194         (TARGET_USE_XCHGB): New macro.
3195         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
3196         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
3197         Split after reload into bswaphi for shifts of 8.
3198         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
3199         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
3200         or when optimizing for size.
3201
3202 2007-02-16  Richard Guenther  <rguenther@suse.de>
3203             Christian Bruel  <christian.bruel@st.com>
3204
3205         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
3206         DECLs but prefer SSA_NAMEs over DECLs.
3207
3208 2007-02-16  Richard Guenther  <rguenther@suse.de>
3209
3210         * tree-flow-inline.h (single_imm_use_p): Remove.
3211         (zero_imm_uses_p): Likewise.
3212         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
3213         instead of single_imm_use_p.
3214         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
3215         zero_imm_uses_p.
3216
3217 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
3218
3219         PR other/27843
3220         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
3221         nested double- and backquotes.
3222
3223 2007-02-15  Roger Sayle  <roger@eyesopen.com>
3224
3225         PR middle-end/30391
3226         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
3227         should be unreachable.
3228         (build2_stat): Allow construction of MODIFY_EXPR at any time.
3229         For the time being redirect GIMPLE_MODIFY_STMT to the new
3230         (renamed) build_gimple_modify_stmt_stat.
3231         (build2_gimple_stat): Rename to...
3232         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
3233         Always build a GIMPLE_MODIFY_STMT node.
3234         * tree.h (build2_gimple, build2_gimple_stat): Delete.
3235         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
3236         declarations.
3237
3238         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
3239         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
3240         * tree-complex.c (set_component_ssa_name, expand_complex_move,
3241         expand_complex_div_wide): Likewise.
3242         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
3243         * tree-ssa-loop-im.c (schedule_sm): Likewise.
3244         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
3245         * tree-ssa-loop-manip.c (create_iv): Likewise.
3246         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
3247         abs_replacement): Likewise.
3248         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
3249         realify_fake_stores): Likewise.
3250
3251         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
3252         node rather than a GIMPLE_MODIFY_STMT node.
3253         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
3254         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
3255         Likewise.
3256         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
3257         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
3258         GIMPLE_MODIFY_STMT.
3259
3260 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3261
3262         PR middle-end/30433
3263         * fold-const.c (fold_comparison): Add back the
3264         folding of constant complex comparisions.
3265
3266 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
3267
3268         PR middle-end/30729
3269         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
3270         effects unknown to this function, return early.
3271
3272 2007-02-15  Ian Lance Taylor  <iant@google.com>
3273
3274         * lower-subreg.c (move_eh_region_note): New static function.
3275         (resolve_simple_move): Call it.
3276         (decompose_multiword_subregs): Track blocks for which we resolve a
3277         simple move which is also a control flow insn.  Pass them to
3278         find_many_sub_basic_blocks.
3279         (pass_lower_subreg): Add TODO_verify_flow.
3280         (pass_lower_subreg2): Likewise.
3281
3282 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3283             Brooks Moses  <brooks.moses@codesourcery.com>
3284             Lee Millward  <lee.millward@codesourcery.com>
3285
3286         * tree.h (enum tree_code_class): Add tcc_vl_exp.
3287         (VL_EXP_CLASS_P): New.
3288         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
3289         TREE_CODE_LENGTH.
3290         (TREE_OPERAND_CHECK_CODE): Likewise.
3291         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
3292         (TREE_RTL_OPERAND_CHECK): Likewise.
3293         (tree_operand_check_failed): Make second parameter the whole tree
3294         instead of its code.  Fixed callers.
3295         (VL_EXP_CHECK): New.
3296         (TREE_OPERAND_LENGTH): New.
3297         (VL_EXP_OPERAND_LENGTH): New.
3298         (CALL_EXPR_FN): New.
3299         (CALL_EXPR_STATIC_CHAIN): New.
3300         (CALL_EXPR_ARGS): New.
3301         (CALL_EXPR_ARG): New.
3302         (call_expr_nargs): New.
3303         (CALL_EXPR_ARGP): New.
3304         (build_nt_call_list): Declare.
3305         (build_vl_exp_stat): Declare.
3306         (build_vl_exp): New.
3307         (build_call_list): Declare.
3308         (build_call_nary): Declare.
3309         (build_call_valist): Declare.
3310         (build_call_array): Declare.
3311         (call_expr_arg): Declare.
3312         (call_expr_argp): Declare.
3313         (call_expr_arglist): Declare.
3314         (fold_build_call_list): Declare.
3315         (fold_build_call_list_initializer): Declare.
3316         (fold_call_expr): Declare to replace fold_builtin.
3317         (fold_builtin_fputs): Update to agree with modified definition.
3318         (fold_builtin_strcpy): Likewise.
3319         (fold_builtin_strncpy): Likewise.
3320         (fold_builtin_memory_chk): Likewise.
3321         (fold_builtin_stxcpy_chk): Likewise.
3322         (fold_builtin_strncpy_chk): Likewise.
3323         (fold_builtin_next_arg): Likewise.
3324         (fold_build_call_expr): Declare.
3325         (fold_builtin_call_list): Declare.
3326         (fold_builtin_call_valist): Declare.
3327         (build_call_expr): Declare.
3328         (validate_arglist): Update to agree with modified definition.
3329         (tree_operand_length): New.
3330         (call_expr_arg_iterator): New.
3331         (init_call_expr_arg_iterator): New.
3332         (next_call_expr_arg): New.
3333         (first_call_expr_arg): New.
3334         (more_call_expr_args_p): New.
3335         (FOR_EACH_CALL_EXPR_ARG): New.
3336
3337         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
3338         and tcc_gimple_stmt.
3339         (tree_code_size): Update documentation.  Use sizeof (tree) rather
3340         than sizeof (char *).
3341         (tree_size): Likewise.  Add case for tcc_vl_exp.
3342         (tree_node_structure): Add case for tcc_vl_exp.
3343         (contains_placeholder_p): Likewise.
3344         (substitute_in_expr): Likewise.
3345         (substitute_placeholder_in_expr): Likewise.
3346         (stabilize_reference_1): Likewise.
3347         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
3348         to diagnose breakage of this interface for constructing CALL_EXPRs.
3349         (build_nt): Add similar assertion here.
3350         (build_nt_call_list): New.
3351         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
3352         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
3353         TREE_CODE_LENGTH.
3354         (get_callee_fndecl): Use new CALL_EXPR accessors.
3355         (tree_operand_check_failed): Change parameters to pass entire node
3356         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
3357         (process_call_operands): New.
3358         (build_vl_exp_stat): New.
3359         (build_call_list): New.
3360         (build_call_nary): New.
3361         (build_call_valist): New.
3362         (build_call_array): New.
3363         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3364         (call_expr_arglist): New.
3365
3366         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
3367         tcc_vl_exp instead of a fixed-size tcc_expression.
3368
3369         * doc/c-tree.texi (CALL_EXPR): Document new representation and
3370         accessors for CALL_EXPRs.
3371         (AGGR_INIT_EXPR): Likewise.
3372
3373 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3374             Brooks Moses  <brooks.moses@codesourcery.com>
3375             Lee Millward  <lee.millward@codesourcery.com>
3376
3377         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
3378         (expand_builtin_nonlocal_goto): Change parameter to be entire
3379         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
3380         (expand_builtin_prefetch): Likewise.
3381         (expand_builtin_classify_type): Likewise.
3382         (mathfn_built_in): Return NULL_TREE instead of 0.
3383         (expand_errno_check): Use new CALL_EXPR accessors.
3384         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
3385         Return NULL_RTX instead of 0.
3386         (expand_builtin_mathfn_2): Likewise.
3387         (expand_builtin_mathfn_3): Likewise.
3388         (expand_builtin_interclass_mathfn): Likewise.
3389         (expand_builtin_sincos): Likewise.
3390         (expand_builtin_cexpi): Likewise.
3391         (expand_builtin_int_roundingfn): Likewise.
3392         (expand_builtin_int_roundingfn_2): Likewise.
3393         (expand_builtin_pow): Likewise.
3394         (expand_builtin_powi): Likewise.
3395         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
3396         of arglist, fixing callers appropriately.  Use new CALL_EXPR
3397         accessors and constructors.  Return NULL_RTX instead of 0.
3398         (expand_builtin_strstr): Likewise.
3399         (expand_builtin_strchr): Likewise.
3400         (expand_builtin_strrchr): Likewise.
3401         (expand_builtin_strpbrk): Likewise.
3402         (expand_builtin_memcpy): Likewise.
3403         (expand_builtin_mempcpy): Likewise.
3404         (expand_builtin_mempcpy_args): New.
3405         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
3406         (expand_builtin_memmove_args): New.
3407         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
3408         (expand_movstr): Likewise.
3409         (expand_builtin_strcpy): Likewise.
3410         (expand_builtin_strcpy_args): New.
3411         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
3412         (expand_builtin_strncpy): Likewise.
3413         (expand_builtin_memset): Likewise.
3414         (expand_builtin_memset_args): New.
3415         (expand_builtin_bzero): Similarly to expand_builtin_memset.
3416         (expand_builtin_memcmp): Likewise.
3417         (expand_builtin_strcmp): Likewise.
3418         (expand_builtin_strncmp): Likewise.
3419         (expand_builtin_strcat): Likewise.
3420         (expand_builtin_strncat): Likewise.
3421         (expand_builtin_strspn): Likewise.
3422         (expand_builtin_strcspn): Likewise.
3423         (expand_builtin_args_info): Likewise.
3424         (expand_builtin_va_start): Likewise.
3425         (gimplify_va_arg_expr): Likewise.
3426         (expand_builtin_va_end): Likewise.
3427         (expand_builtin_va_copy): Likewise.
3428         (expand_builtin_frame_address): Likewise.
3429         (expand_builtin_alloca): Likewise.
3430         (expand_builtin_bswap): Likewise.
3431         (expand_builtin_unop): Likewise.
3432         (expand_builtin_fputs): Likewise.
3433         (expand_builtin_expect): Likewise.
3434         (expand_builtin_fabs): Likewise.
3435         (expand_builtin_copysign): Likewise.
3436         (expand_builtin_printf): Likewise.
3437         (expand_builtin_fprintf): Likewise.
3438         (expand_builtin_sprintf): Likewise.
3439         (expand_builtin_init_trampoline): Likewise.
3440         (expand_builtin_signbit): Likewise.
3441         (expand_builtin_fork_or_exec): Likewise.
3442         (expand_builtin_sync_operation): Likewise.
3443         (expand_builtin_compare_and_swap): Likewise.
3444         (expand_builtin_lock_test_and_set): Likewise.
3445         (expand_builtin_lock_release): Likewise.
3446         (expand_builtin): Likewise.
3447         (builtin_mathfn_code): Likewise.
3448
3449         (fold_builtin_constant_p): Pass call arguments individually instead
3450         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
3451         accessors and constructors.  Return NULL_TREE instead of 0.
3452         (fold_builtin_expect): Likewise.
3453         (fold_builtin_classify_type): Likewise.
3454         (fold_builtin_strlen): Likewise.
3455         (fold_builtin_nan): Likewise.
3456         (integer_valued_real_p): Likewise.
3457         (fold_trunc_transparent_mathfn): Likewise.
3458         (fold_fixed_mathfn): Likewise.
3459         (fold_builtin_cabs): Likewise.
3460         (fold_builtin_sqrt): Likewise.
3461         (fold_builtin_cbrt): Likewise.
3462         (fold_builtin_cos): Likewise.
3463         (fold_builtin_cosh): Likewise.
3464         (fold_builtin_tan): Likewise.
3465         (fold_builtin_sincos): Likewise.
3466         (fold_builtin_cexp): Likewise.
3467         (fold_builtin_trunc): Likewise.
3468         (fold_builtin_floor): Likewise.
3469         (fold_builtin_ceil): Likewise.
3470         (fold_builtin_round): Likewise.
3471         (fold_builtin_int_roundingfn): Likewise.
3472         (fold_builtin_bitop): Likewise.
3473         (fold_builtin_bswap): Likewise.
3474         (fold_builtin_logarithm): Likewise.
3475         (fold_builtin_hypot): Likewise.
3476         (fold_builtin_pow): Likewise.
3477         (fold_builtin_powi): Likewise.
3478         (fold_builtin_exponent): Likewise.
3479         (fold_builtin_memset): Likewise.
3480         (fold_builtin_bzero): Likewise.
3481         (fold_builtin_memory_op): Likewise.
3482         (fold_builtin_bcopy): Deleted; call site changed to invoke
3483         fold_builtin_memory_op directly.
3484         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
3485         (fold_builtin_strncpy): Likewise.
3486         (fold_builtin_memcmp): Likewise.
3487         (fold_builtin_strcmp): Likewise.
3488         (fold_builtin_strncmp): Likewise.
3489         (fold_builtin_signbit): Likewise.
3490         (fold_builtin_copysign): Likewise.
3491         (fold_builtin_isascii): Likewise.
3492         (fold_builtin_toascii): Likewise.
3493         (fold_builtin_isdigit): Likewise.
3494         (fold_builtin_fabs): Likewise.
3495         (fold_builtin_abs): Likewise.
3496         (fold_builtin_fmin_fmax): Likewise.
3497         (fold_builtin_carg): Likewise.
3498         (fold_builtin_classify): Likewise.
3499         (fold_builtin_unordered_cmp): Likewise.
3500
3501         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
3502         New functions split out from fold_builtin_1.
3503         (fold_builtin_n): New.
3504         (fold_builtin_varargs): New.
3505         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
3506         instead.
3507         (fold_call_expr): New.
3508         (build_function_call_expr): Rewrite to use new helper function.
3509         (fold_builtin_call_list): New.
3510         (build_call_expr): New.
3511         (fold_builtin_call_valist): New.
3512         (rewrite_call_expr): New.
3513         (validate_arg): New.
3514         (validate_arglist): Change parameter to be entire CALL_EXPR instead
3515         of an arglist.  Change return type to bool.  Use new CALL_EXPR
3516         accessors.
3517
3518         (fold_builtin_strstr):  Pass call arguments individually instead
3519         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
3520         accessors and constructors.  Return NULL_TREE instead of 0.
3521         (fold_builtin_strchr): Likewise.
3522         (fold_builtin_strrchr): Likewise.
3523         (fold_builtin_strpbrk): Likewise.
3524         (fold_builtin_strcat): Likewise.
3525         (fold_builtin_strncat): Likewise.
3526         (fold_builtin_strspn): Likewise.
3527         (fold_builtin_strcspn): Likewise.
3528         (fold_builtin_fputs): Likewise.
3529         (fold_builtin_next_arg): Likewise.
3530         (fold_builtin_sprintf): Likewise.
3531
3532         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
3533         NULL_RTX instead of 0.
3534         (expand_builtin_memory_chk): Likewise.
3535         (maybe_emit_chk_warning): Likewise.
3536         (maybe_emit_sprintf_chk_warning): Likewise.
3537
3538         (fold_builtin_object_size): Pass call arguments individually instead
3539         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
3540         accessors and constructors.  Return NULL_TREE instead of 0.
3541         (fold_builtin_memory_chk): Likewise.
3542         (fold_builtin_stxcpy_chk): Likewise.
3543         (fold_builtin_strncpy_chk): Likewise.
3544         (fold_builtin_strcat_chk): Likewise.
3545         (fold_builtin_strcat_chk): Likewise.
3546         (fold_builtin_strncat_chk): Likewise.
3547         (fold_builtin_sprintf_chk): Likewise.
3548         (fold_builtin_snprintf_chk): Likewise.
3549         (fold_builtin_printf): Likewise.
3550         (fold_builtin_vprintf): Likewise.
3551
3552         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
3553         constructors.
3554         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
3555         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3556         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
3557         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
3558         (fold_unary): Likewise.
3559         (fold_binary): Likewise.
3560         (fold_ternary): Remove CALL_EXPR case, since they are no longer
3561         ternary expressions.
3562         (fold): Add logic for tcc_vl_exp.
3563         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
3564         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3565         (fold_build3_stat): Add assertion to flag broken interface for
3566         constructing CALL_EXPRs.
3567         (fold_build_call_list): New.
3568         (fold_build_call_list_initializer): New.
3569         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
3570         constructors.
3571         (fold_strip_sign_ops): Likewise.
3572
3573 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3574             Brooks Moses  <brooks.moses@codesourcery.com>
3575             Lee Millward  <lee.millward@codesourcery.com>
3576
3577         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
3578         accessors and dump arguments explicitly.
3579
3580         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
3581         TREE_CODE_LENGTH.
3582         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
3583         explicitly.
3584         (print_call_name): Use new CALL_EXPR accessors.
3585
3586         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
3587         CALL_EXPR arguments explicitly instead of as a list.  Use
3588         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3589
3590         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
3591         (vrp_visit_stmt): Likewise.
3592
3593         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
3594         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
3595         TREE_CODE_LENGTH.
3596         (force_move_till_expr): Likewise.
3597
3598         * targhooks.c (default_external_stack_protect_fail): Use
3599         build_call_expr instead of build_function_call_expr.
3600         (default_hidden_stack_protect_fail): Likewise.
3601
3602         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
3603         build the call.
3604
3605         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
3606         and walk arguments explicitly.
3607
3608         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
3609         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3610         (expand_simple_operations): Likewise.
3611         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
3612
3613         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
3614         of TREE_CODE_LENGTH.
3615         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
3616
3617         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
3618         instead of TREE_CODE_LENGTH.
3619
3620         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
3621         (tree_ic_transform): Likewise.
3622         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
3623         parameter instead of arglist.  Fix callers.
3624         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
3625         (tree_stringops_transform): Likewise.
3626         (tree_indirect_call_to_profile): Likewise.
3627         (tree_stringops_values_to_profile): Likewise.
3628
3629         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
3630         (eliminate_tail_call): Likewise.
3631
3632         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
3633
3634         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
3635         Use TREE_OPERAND_LENGTH and generalize to handle any number of
3636         operands.
3637         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
3638
3639         * omp-low.c (build_omp_barrier): Use build_call_expr.
3640         (lower_rec_input_clauses): Likewise.
3641         (lower_reduction_clauses): Likewise.
3642         (expand_parallel_call): Likewise.
3643         (maybe_catch_exception): Likewise.
3644         (expand_omp_for_generic): Likewise.
3645         (expand_omp_for_static_nochunk): Likewise.
3646         (expand_omp_sections): Likewise.
3647         (lower_omp_single_simple): Likewise.
3648         (lower_omp_single_copy): Likewise.
3649         (lower_omp_master): Likewise.
3650         (lower_omp_ordered): Likewise.
3651         (lower_omp_critical): Likewise.
3652
3653         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
3654         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
3655
3656         * tree-gimple.c (is_gimple_call_addr): Fix doc.
3657         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
3658         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
3659
3660         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
3661         and generalize to handle any number of operands.
3662         (chrec_contains_undetermined): Likewise.
3663         (tree_contains_chrecs): Likewise.
3664         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
3665
3666         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
3667
3668         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
3669         fold_call_expr instead of fold_builtin.
3670         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
3671         match declarations there.
3672         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
3673         updates.
3674
3675         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
3676         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3677
3678         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
3679         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
3680
3681         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
3682         accessors.
3683
3684         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
3685         (execute_cse_sincos): Use new CALL_EXPR accessors.
3686
3687         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
3688
3689         * gimple-low.c (lower_function_body): Use build_call_expr.
3690         (lower_builtin_setjmp): Likewise.
3691
3692         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
3693         (set_storage_via_libcall): Likewise.
3694         (safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
3695         instead of TREE_CODE_LENGTH.
3696         (expand_expr_real_1): Use new CALL_EXPR accessors.
3697
3698         * tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
3699         generalize to handle any number of operands.
3700         (TB_parent_eq): Likewise.
3701
3702         * predict.c (expr_expected_value): Use new CALL_EXPR accessors.
3703         (strip_builtin_expect): Likewise.
3704
3705         * function.c (gimplify_parameters): Use build_call_expr.
3706
3707         * tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
3708         instead of TREE_CODE_LENGTH.
3709
3710         * ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
3711         (scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
3712
3713         * tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
3714         iterators.
3715
3716         * gimplify.c (build_stack_save_restore): Use build_call_expr.
3717         (gimplify_decl_expr): Likewise.
3718         (gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
3719         Use new CALL_EXPR iterators.
3720         (gimplify_modify_expr_to_memcpy): Use build_call_expr.
3721         (gimplify_modify_expr_to_memset): Likewise.
3722         (gimplify_variable_sized_compare): Likewise.
3723         (gimplify_omp_atomic_fetch_op): Likewise.
3724         (gimplify_omp_atomic_pipeline): Likewise.
3725         (gimplify_omp_atomic_mutex): Likewise.
3726         (gimplify_function_tree): Likewise.
3727
3728         * calls.c (alloca_call_p): Use new CALL_EXPR accessors.
3729         (call_expr_flags): Likewise.
3730         (expand_call): Likewise.
3731
3732         * except.c (expand_builtin_eh_return_data_regno): Pass entire
3733         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
3734         accessors.
3735
3736         * coverage.c (create_coverage): Use build_call_expr.
3737
3738         * tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
3739         (temp_call_expr_obstack): New.
3740         (pool_copy_list): Delete.
3741         (temp_copy_call_expr): New.
3742         (phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
3743         CALL_EXPR accessors.  Get rid of special goo for copying argument
3744         lists and use temp_copy_call_expr instead.
3745         (valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
3746         CALL_EXPR accessors.
3747         (create_expression_by_pieces): Likewise.  Use build_call_array
3748         to construct the result instead of fold_build3.
3749         (create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
3750         dealing with argument lists.
3751         (init_pre): Remove references to expression_node_pool and
3752         list_node_pool.  Init temp_call_expr_obstack instead.
3753         (fini_pre): Remove references to expression_node_pool and
3754         list_node_pool.
3755
3756         * tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
3757         and walk arguments explicitly instead of as a list.
3758
3759         * tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
3760         (mx_register_decls): Likewise.
3761         (mudflap_register_call): Likewise.
3762         (mudflap_finish_file): Likewise.
3763
3764         * ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
3765         (ipa_callsite_compute_param): Likewise.
3766
3767         * tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
3768         accessors and constructor.
3769
3770         * tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
3771         accessors and constructor.
3772         (convert_tramp_reference): Likewise.
3773         (convert_call_expr): Likewise.
3774         (finalize_nesting_tree_1): Likewise.
3775
3776         * tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
3777         accessors.
3778
3779         * tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
3780
3781         * tree-inline.c (initialize_inlined_parameters): Pass entire
3782         CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
3783         accessors.
3784         (estimate_num_insns_1): Use new CALL_EXPR accessors.
3785         (expand_call_inline): Tidy up call to initialize_inlined_parameters.
3786
3787         * tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
3788         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3789         (vectorizable_reduction): Likewise.
3790         (vectorizable_call): Use new CALL_EXPR iterators.
3791         (vectorizable_conversion): Use build_call_expr.
3792         (vectorizable_operation): Use TREE_OPERAND_LENGTH.
3793         (vect_gen_widened_results_half): Use build_call_expr.
3794         (vect_setup_realignment): Likewise.
3795         (vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
3796
3797         * tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
3798         (pass_through_call): Likewise.
3799         (compute_object_sizes): Likewise.  Use fold_call_expr instead of
3800         fold_builtin.
3801
3802         * tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
3803         (tree_gen_pow2_profiler): Likewise.
3804         (tree_gen_one_value_profiler): Likewise.
3805         (tree_gen_ic_func_profiler): Likewise.
3806         (tree_gen_average_profiler): Likewise.
3807         (tree_gen_ior_profiler): Likewise.
3808
3809         * tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
3810         (find_func_aliases): Use new CALL_EXPR accessors.  Add case
3811         tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3812
3813         * tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
3814         of TREE_CODE_LENGTH.
3815
3816         * stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
3817         of TREE_CODE_LENGTH.
3818
3819         * convert.c (convert_to_real): Use new CALL_EXPR accessors and
3820         constructor.
3821         (convert_to_integer): Likewise.
3822
3823         * tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
3824         accessors.
3825
3826 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3827             Brooks Moses  <brooks.moses@codesourcery.com>
3828             Lee Millward  <lee.millward@codesourcery.com>
3829
3830         * config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
3831         accessors.
3832         * config/frv/frv.c (frv_expand_builtin): Likewise.
3833         * config/s390/s390.c (s390_expand_builtin): Likewise.
3834
3835         * config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
3836         (sparc_expand_builtin): Use new CALL_EXPR accessors.
3837
3838         * config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
3839         (ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
3840         instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
3841         (ix86_expand_store_builtin): Likewise.
3842         (ix86_expand_unop_builtin): Likewise.
3843         (ix86_expand_unop1_builtin): Likewise.
3844         (ix86_expand_sse_compare): Likewise.
3845         (ix86_expand_sse_comi): Likewise.
3846         (ix86_expand_vec_init_builtin): Likewise.
3847         (ix86_expand_vec_ext_builtin): Likewise.
3848         (ix86_expand_vec_set_builtin): Likewise.
3849         (ix86_expand_builtin): Use new CALL_EXPR accessors.
3850
3851         * config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
3852         * config/c4x/c4x.c (c4x_expand_builtin): Likewise.
3853
3854         * config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
3855         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
3856         (iq2000_expand_builtin): Use new CALL_EXPR accessors.
3857
3858         * config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
3859         build_call_expr.
3860         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
3861         (rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
3862         arglist.  Use new CALL_EXPR accessors.  Fix callers.
3863         (altivec_expand_abs_builtin): Likewise.
3864         (rs6000_expand_binop_builtin): Likewise.
3865         (altivec_expand_predicate_builtin): Likewise.
3866         (altivec_expand_lv_builtin): Likewise.
3867         (spe_expand_stv_builtin): Likewise.
3868         (altivec_expand_stv_builtin): Likewise.
3869         (rs6000_expand_ternop_builtin): Likewise.
3870         (altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
3871         (altivec_expand_st_builtin): Likewise.
3872         (altivec_expand_dst_builtin): Likewise.
3873         (altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
3874         arglist.  Use new CALL_EXPR accessors.  Fix callers.
3875         (altivec_expand_vec_set_builtin): Likewise.
3876         (altivec_expand_vec_ext_builtin): Likewise.
3877         (altivec_expand_builtin): Use new CALL_EXPR accessors.
3878         (spe_expand_builtin): Likewise.
3879         (spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
3880         arglist.  Use new CALL_EXPR accessors.  Fix callers.
3881         (spe_expand_evsel_builtin): Likewise.
3882         (rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
3883         FCFSX cases must construct whole new CALL_EXPR, not just arglist.
3884
3885         * config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
3886         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
3887         (arm_expand_unop_builtin): Likewise.
3888         (arm_expand_builtin): Use new CALL_EXPR accessors.
3889
3890         * config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
3891         accessors.
3892
3893         * config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
3894         instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
3895         (bfin_expand_unop_builtin): Likewise.
3896         (bfin_expand_builtin): Use new CALL_EXPR accessors.
3897
3898 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3899             Brooks Moses  <brooks.moses@codesourcery.com>
3900             Lee Millward  <lee.millward@codesourcery.com>
3901
3902         * c-semantics.c (build_stmt): Add internal diagnostic check.
3903
3904         * c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
3905         accessors.  Print arguments explicitly instead of as a list.
3906
3907         * c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
3908
3909         * c-omp.c (c_finish_omp_barrier): Use build_call_expr.
3910         (c_finish_omp_flish): Likewise.
3911
3912         * c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
3913         arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
3914         instead of TREE_CODE_LENGTH.
3915         (check_function_arguments_recurse): Use new CALL_EXPR accessors.
3916         (c_warn_unused_result): Likewise.
3917
3918 2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
3919
3920         PR c/26494
3921         * doc/invoke.texi (Warning Options): Remove
3922         -Werror-implicit-function-declaration.
3923         (Wimplicit-function-declaration): Update description.
3924         * opts.c (common_handle_option): Move handling of -Werror=* to...
3925         (enable_warning_as_error): ...here.
3926         * opts.h (enable_warning_as_error): Declare.
3927         * c-decl.c (implicit_decl_warning): Unless
3928         -Wno-implicit-function-declaration is given, emit a pedwarn if
3929         -std=c99 or emit a warning if -Wimplicit-function-declaration.
3930         * c.opt (Wimplicit-function-declaration): Replace
3931         mesg_implicit_function_declaration with
3932         warn_implicit_function_declaration.
3933         * c-opts.c (c_common_handle_option):
3934         -Werror-implicit-function-declaration is exactly equal as
3935         -Werror=implicit-function-declaration.
3936         (set_Wimplicit): Replace mesg_implicit_function_declaration with
3937         warn_implicit_function_declaration.
3938         (c_common_post_options): -Wimplict-function-declaration is enabled
3939         by default by -std=c99, otherwise is disabled by default.
3940         * c-objc-common.c (c_objc_common_init): Remove flawed logic.
3941
3942 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
3943
3944         * gimplify.c (gimplify_modify_expr): During gimplification, attach a
3945         DECL on the rhs to a DECL on the lhs for debug info purposes if the
3946         former is ignored but not the latter.
3947
3948 2007-02-15  Eric Botcazou  <ebotcazou@adacore.com>
3949
3950         * expr.c (expand_expr_real_1) <normal_inner_ref>: If a temporary
3951         is made and the reference doesn't use the alias set of its type,
3952         do not create the temporary using that type.
3953
3954 2007-02-15  Aldy Hernandez  <aldyh@redhat.com>
3955
3956         * jump.c: Remove prototypes for delete_computation and
3957         delete_prior_computation.
3958
3959 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
3960
3961         * jump.c (get_label_after): Delete.
3962         (get_label_before, delete_computation, delete_jump,
3963         delete_prior_computation, follow_jumps): Move...
3964         * reorg.c (delete_computation, delete_prior_computation): ... here...
3965         (get_label_before, delete_jump): ... making these static ...
3966         (follow_jumps): ... and simplifying this since it only runs after
3967         reload.
3968         * rtl.h (get_label_after, get_label_before, delete_jump,
3969         follow_jumps): Delete prototypes.
3970
3971 2007-02-15  Paolo Bonzini  <bonzini@gnu.org>
3972
3973         * caller-save.c (save_call_clobbered_regs): Do not process sibcalls.
3974
3975 2007-02-15  Nick Clifton  <nickc@redhat.com>
3976
3977         * varasm.c (default_asm_output_anchor): Prepend * to . symbol in
3978         order to prevent it from being munged by the target.
3979
3980 2007-02-15  Uros Bizjak  <ubizjak@gmail.com>
3981
3982         * config/i386/i386.md: Remove misleading comment.
3983
3984 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3985
3986         * config/frv/frv.md (reload_incc, reload_outcc, reload_incc_uns,
3987         reload_outcc_uns, reload_incc_nz, reload_outcc_nz): Remove
3988         invalid patterns.
3989
3990 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3991
3992         * tree-sra.c (instantiate_missing_elements): Canonicalize
3993         bit-field types.
3994         (sra_build_assignment): New.
3995         (generate_copy_inout, generate_element_copy,
3996         generate_element_zero, generate_one_element_init): Use it.
3997
3998 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
3999
4000         * tree-sra.c (instantiate_missing_elements): Canonicalize
4001         bit-field types.
4002         (sra_build_assignment): New.
4003         (generate_copy_inout, generate_element_copy,
4004         generate_element_zero, generate_one_element_init): Use it.
4005
4006 2007-02-15  Alexandre Oliva  <aoliva@redhat.com>
4007
4008         * dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
4009         limbo die nodes.
4010
4011 2007-02-14  Joseph Myers  <joseph@codesourcery.com>
4012
4013         * emit-rtl.c (set_mem_attributes_minus_bitpos): Treat complex
4014         types as aggregates not scalars.
4015         * function.c (assign_stack_temp_for_type): Likewise.
4016
4017 2007-02-14  Roger Sayle  <roger@eyesopen.com>
4018             Zdenek Dvorak  <dvorakz@suse.cz>
4019
4020         * tree-dump.c (dump_switch_p_1): Require exact match of the option
4021         name.
4022
4023 2007-02-14  Zdenek Dvorak  <dvorakz@suse.cz>
4024
4025         * passes.c (next_pass_1): Clear the next field of the copied
4026         pass structure.
4027
4028 2007-02-14  Richard Henderson  <rth@redhat.com>
4029
4030         * tree-sra.c (early_sra): New.
4031         (decl_can_be_decomposed_p): Deny va_list if early_sra.
4032         (tree_sra_early, pass_sra_early): New.
4033         * tree-pass.h (pass_sra_early): Declare.
4034         * passes.c (init_optimization_passes): Use it.
4035
4036 2007-02-14  Richard Guenther  <rguenther@suse.de>
4037
4038         * flags.h (issue_strict_overflow_warning): Convert to a macro.
4039
4040 2007-02-14  Dorit Nuzman  <dorit@il.ibm.com>
4041
4042          PR tree-optimization/30771
4043         * tree-vect-analyze.c (vect_determine_vectorization_factor): Traverse
4044         also phi nodes.
4045         (vect_analyze_operations): Induction phis can now be marked as
4046         used_in_loop.
4047         (vect_mark_stmts_to_be_vectorized): No special treatment for phis.
4048         Update documentation accordingly.
4049
4050 2007-02-14  Nick Clifton  <nickc@redhat.com>
4051
4052         * builtin-types.def (DEF_FUNCTION_TYPE_x): Do not imply that at
4053         most 3 arguments are supported.
4054         (DEF_FUNCTION_TYPE_VAR_5): Fix typo in its description.
4055
4056 2007-02-13  Seongbae Park <seongbae.park@gmail.com>
4057
4058         * bitmap.c (bitmap_and, bitmap_and_compl, bitmap_xor):
4059         Ensure dst->current is valid.
4060
4061 2007-02-13  Paul Brook  <paul@codesourcery.com>
4062
4063         * config.gcc: Add arm*-*-uclinux-*eabi.
4064         * config/arm/uclinux-elf.h (TARGET_OS_CPP_BUILTINS): Define.
4065         (SUBTARGET_EXTRA_LINK_SPEC): Define.
4066         (STARTFILE_SPEC, ENDFILE_SPEC): Remove broken -shared handling.
4067         (LINK_GCC_C_SEQUENCE_SPEC): Undef.
4068         (LINK_SPEC): Define.
4069         (LIB_SPEC): Define.
4070         * config/arm/arm.c (arm_override_options): Use r9 as EABI PIC
4071         register.
4072         * config/arm/uclinux-eabi.h: New file.
4073         * config/arm/linux-eabi.h (WCHAR_TYPE): Remove.
4074         * config/arm/linux-gas.h (WCHAR_TYPE): Use unsigned long on AAPCS
4075         based targets.
4076
4077 2007-02-13  Ian Lance Taylor  <iant@google.com>
4078
4079         * common.opt: Add Wstrict-overflow and Wstrict-overflow=.
4080         * flags.h (warn_strict_overflow): Declare.
4081         (enum warn_strict_overflow_code): Define.
4082         (issue_strict_overflow_warning): New static inline function.
4083         * opts.c (warn_strict_overflow): New variable.
4084         (common_handle_option): Handle OPT_Wstrict_overflow and
4085         OPT_Wstrict_overflow_.
4086         * c-opts.c (c_common_handle_option): Set warn_strict_overflow for
4087         OPT_Wall.
4088         * fold-const.c: Include intl.h.
4089         (fold_deferring_overflow_warnings): New static variable.
4090         (fold_deferred_overflow_warning): New static variable.
4091         (fold_deferred_overflow_code): New static variable.
4092         (fold_defer_overflow_warnings): New function.
4093         (fold_undefer_overflow_warnings): New function.
4094         (fold_undefer_and_ignore_overflow_warnings): New function.
4095         (fold_deferring_overflow_warnings_p): New function.
4096         (fold_overflow_warning): New static function.
4097         (make_range): Add strict_overflow_p parameter.  Change all
4098         callers.
4099         (extract_muldiv, extract_muldiv_1): Likewise.
4100         (fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
4101         tree_expr_nonnegative_p.
4102         (fold_negate_expr): Call fold_overflow_warning.
4103         (fold_range_test): Likewise.
4104         (fold_comparison): Likewise.
4105         (fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
4106         instead of tree_expr_nonnegative_p.
4107         (tree_expr_nonnegative_warnv_p): Rename from
4108         tree_expr_nonnegative_p, add strict_overflow_p parameter.
4109         (tree_expr_nonnegative_p): New function.
4110         (tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
4111         strict_overflow_p parameter.
4112         (tree_expr_nonzero_p): New function.
4113         * passes.c (verify_interpass_invariants): New static function.
4114         (execute_one_pass): Call it.
4115         * tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
4116         warnings.
4117         (number_of_iterations_exit, loop_niter_by_eval): Likewise.
4118         (estimate_numbers_of_iterations): Likewise.
4119         (scev_probably_wraps_p): Likewise.
4120         * tree-ssa-ccp.c: Include "toplev.h".
4121         (evaluate_stmt): Defer fold overflow warnings until we know we are
4122         going to optimize.
4123         (struct fold_stmt_r_data): Add stmt field.
4124         (fold_stmt_r): Defer fold overflow warnings until we know we
4125         optimized.
4126         (fold_stmt): Initialize stmt field of fold_stmt_r_data.
4127         (fold_stmt_inplace): Likewise.
4128         * tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
4129         (cleanup_control_expr_graph): Defer fold overflow warnings until
4130         we know we are going to optimize.
4131         * tree-cfg.c (fold_cond_expr_cond): Likewise.
4132         * tree-ssa-threadedge.c (simplify_control_stmt_condition):
4133         Likewise.
4134         * tree-vrp.c (vrp_expr_computes_nonnegative): Call
4135         tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
4136         * tree-ssa-loop-manip.c (create_iv): Likewise.
4137         * c-typeck.c (build_conditional_expr): Likewise.
4138         (build_binary_op): Likewise.
4139         * tree-vrp.c (vrp_expr_computes_nonzero): Call
4140         tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
4141         (extract_range_from_unary_expr): Likewise.
4142         * simplify-rtx.c (simplify_const_relational_operation): Warn when
4143         assuming that signed overflow does not occur.
4144         * c-common.c (pointer_int_sum): Ignore fold overflow warnings.
4145         * tree.h (tree_expr_nonnegative_warnv_p): Declare.
4146         (fold_defer_overflow_warnings): Declare.
4147         (fold_undefer_overflow_warnings): Declare.
4148         (fold_undefer_and_ignore_overflow_warnings): Declare.
4149         (fold_deferring_overflow_warnings_p): Declare.
4150         (tree_expr_nonzero_warnv_p): Declare.
4151         * doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
4152         of warning options.
4153         (Warning Options): Document -Wstrict-overflow.
4154         * Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
4155         (tree-ssa-ccp.o): Likewise.
4156         (tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
4157         (fold-const.o): Depend on intl.h.
4158
4159 2007-02-13  Ian Lance Taylor  <iant@google.com>
4160
4161         PR middle-end/30751
4162         * lower-subreg.c (resolve_simple_move): Decompose subregs in
4163         addresses.
4164
4165 2007-02-13  Stuart Hastings  <stuart@apple.com>
4166
4167         * gcc/config/i386/i386.md (fixuns_truncdfhi2): Require SSE2.
4168
4169 2007-02-13  Richard Henderson  <rth@redhat.com>
4170
4171         * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
4172         handled_component_p before looking for the indirect_ref.
4173
4174 2007-02-13  Richard Henderson  <rth@redhat.com>
4175
4176         * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
4177         remove flags clobber.
4178         (bswapsi2): New expander, emit code for !TARGET_BSWAP.
4179         (bswaphi_lowpart): New.
4180         (bswapdi2): Rename from bswapdi2_rex, remove flags clobber,
4181         remove TARGET_BSWAP test.  Delete expander of the same name.
4182
4183         * optabs.c (widen_bswap, expand_doubleword_bswap): New.
4184         (expand_unop): Use them.
4185
4186 2007-02-13  Uros Bizjak  <ubizjak@gmail.com>
4187
4188         * config/i386/i386.md (cmpdi_ccno_1_rex64, *cmpsi_ccno_1,
4189         *cmphi_ccno_1, *cmpqi_ccno_1, *movsi_xor, *movstricthi_xor,
4190         *movstrictqi_xor, *movdi_xor_rex64, *ashldi3_1_rex64,
4191         *ashldi3_cmp_rex64, *ashldi3_cconly_rex64, ashlsi3, *ashlsi3_1_zext,
4192         *ashlsi3_cmp, *ashlsi3_cconly, *ashlsi3_cmp_zext, *ashlhi3_1_lea,
4193         *ashlhi3_1, *ashlhi3_cmp, *ashlhi3_cconly, *ashlqi3_1_lea,
4194         *ashlqi3_1, *ashlqi3_cmp, *ashlqi3_cconly): Remove equivalent
4195         assembler dialect choice from asm templates.
4196
4197 2007-02-12  Richard Henderson  <rth@redhat.com>
4198
4199         * config/i386/i386.md (fixuns_trunc<SSEMODEF>si_1): New insn.
4200         (fixuns_trunc<SSEMODEF>si2): Use it.
4201         * config/i386/sse.md (vec_setv4sf_0): Export.
4202         * config/i386/i386.c (ix86_build_const_vector): Export.
4203         (ix86_split_convert_uns_si_sse): Rename from
4204         ix86_expand_convert_uns_si_sse and rewrite as a splitter.
4205         * config/i386/i386-protos.h: Update.
4206
4207 2007-02-13  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4208
4209         PR c/29521
4210         * c-typeck.c (c_finish_return): Improve warning message.
4211
4212 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4213
4214         * alias.c (find_symbolic_term): Delete unused function.
4215
4216 2007-02-12  Uros Bizjak  <ubizjak@gmail.com>
4217
4218         * config/i386/i386.md (paritydi2, paritysi2): New expanders.
4219         (paritydi2_cmp, paritydi2_cmp): New insn and split patterns.
4220         (*parityhi2_cmp, *parityqi2_cmp): New insn patterns.
4221
4222 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
4223
4224         * tree.h (DECL_IGNORED_P): Document further effect for FUNCTION_DECL.
4225         * cgraphunit.c (cgraph_expand_function): If DECL_IGNORED_P is set on
4226         the function, temporarily point the debug interface to the null one.
4227
4228 2007-02-12  Eric Botcazou  <ebotcazou@adacore.com>
4229
4230         * dwarf2out.c (round_up_to_align): New static function.
4231         (field_byte_offset): Use it to round the offset.
4232
4233 2007-02-12  Richard Henderson  <rth@redhat.com>
4234
4235         * config/alpha/alpha.md (bswapsi2, bswapdi2): New.
4236         (inswl_const): Export.
4237
4238 2007-02-12  Richard Henderson  <rth@redhat.com>
4239
4240         * calls.c (emit_library_call_value_1): If PROMOTE_MODE modifed the
4241         result mode of the libcall, convert back to outmode.
4242
4243 2007-02-12  Roger Sayle  <roger@eyesopen.com>
4244
4245         * config/i386/i386.md (*bswapdi2_rex): Renamed from bswapdi2.
4246         (bswapdi2): New define_expand to implement 32-bit implementation.
4247
4248 2007-02-12  Nick Clifton  <nickc@redhat.com>
4249
4250         * doc/invoke.texi (Overall Options): Document --help=.
4251         * gcc.c (target_help_flag): Rename to print_subprocess_flag.
4252         (cc1_options): Pass --help= on to cc1.
4253         (display_help): Add description of --help=.
4254         (process_command): Add code to handle --help=.  Allow translated
4255         --help and --target-help switches to be passed on to compiler
4256         sub-process.
4257         (main): Remove unused if statement.
4258         * opts.c (columns): Remove.
4259         (LEFT_COLUMN): Define.
4260         (wrap_help): Add columns argument.
4261         (print_filtered_help): Change parameters to be an include bitmask,
4262         an exclude bitmask, an any bitmask and the column width.  Move the
4263         code to display the params list here.  Add code to display the
4264         status of options rather than their descriptions if the quiet flag
4265         is not active.
4266         (print_specific_help): Change parameters to be an include bitmask,
4267         an exclude bitmask and an any bitmask.  Move code to look up the
4268         column width here.  Decide upon the title for an options listing.
4269         (common_handle_options): Add code to handle --help=.  Adapt code
4270         for --help and --target-help to use the revised form of the
4271         print_specific_help function.
4272         (print_help): Delete.
4273         (print_param_help): Delete.
4274         (print_switch): Delete.
4275         * opts.h (cl_lang_count): Add prototype.
4276         (CL_PARAMS, CL_WARNING, CL_OPTIMIZATION, CL_MIN_OPTION_CLASS,
4277         CL_MAX_OPTION_CLASS): New defines.
4278         * optc-gen.awk: Add construction of cl_lang_count.
4279         * c.opt: Add Warning attribute to warning options and Optimization
4280         attribute to optimization options.
4281         * common.opt: Likewise.
4282         Add --help=.
4283         Add -fhelp and -ftarget-help as aliases for the transformed --help
4284         and --target-help options.
4285         * opt-functions.awk: Add code to handle Warning and Optimization
4286         attributes.
4287
4288 2007-02-12  Richard Henderson  <rth@redhat.com>
4289
4290         * config/alpha/constraints.md: New file.
4291         * config/alpha/alpha.c: Include tm-constrs.h.
4292         (alpha_const_ok_for_letter_p, alpha_const_double_ok_for_letter_p,
4293         alpha_extra_constraint): Remove.
4294         (alpha_emit_conditional_branch): Use satisfies_constraint_*.
4295         * config/alpha/alpha-protos.h: Update.
4296         * config/alpha/alpha.h (REG_CLASS_FROM_LETTER): Remove.
4297         (CONST_OK_FOR_LETTER_P, CONST_DOUBLE_OK_FOR_LETTER_P): Remove.
4298         (EXTRA_CONSTRAINT): Remove.
4299         * config/alpha/alpha.md: Include constraints.md.
4300         (adddi splitter): Use satisfies_constraint_*.
4301         * config/alpha/predicates.md (add_operand): Likewise.
4302         (sext_add_operand, addition_operation): Likewise.
4303
4304 2007-02-12  Dorit Nuzman  <dorit@il.ibm.com>
4305
4306         PR tree-optimization/29145
4307         * tree-data-ref.c (base_addr_differ_p): Make us more conservative
4308         in our handling of restrict qualified pointers.
4309
4310 2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4311
4312         PR middle-end/7651
4313         * doc/invoke.texi (Wunused-value): Update description.
4314         (Wextra): Delete item.
4315         * opts.c (set_Wextra): Don't use the value of Wextra to set the
4316         value of Wunused-value.
4317         * c-typeck.c (c_process_expr_stmt): Don't check extra_warnings.
4318         (c_finish_stmt_expr): Don't check extra_warnings.
4319         (emit_side_effect_warnings): The caller is responsible to check
4320         warn_unused_value.
4321
4322 2007-02-11  Roger Sayle  <roger@eyesopen.com>
4323             Matt Thomas  <matt@3am-software.com>
4324
4325         * simplify-rtx.c (simplify_relational_operation_1): Correct typo.
4326
4327 2007-02-11  Roger Sayle  <roger@eyesopen.com>
4328
4329         * simplify-rtx.c (simplify_relational_operation_1): Optimize
4330         comparisons of POPCOUNT against zero.
4331         (simplify_const_relational_operation): Likewise.
4332
4333 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4334
4335         * doc/invoke.texi (Wextra): Delete outdated paragraph.
4336
4337 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4338
4339         * dwarf2out.c (root_type): Delete unused function.
4340
4341 2007-02-11  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4342
4343         * genattrtab.c (contained_in_p): Delete unused function.
4344         (write_expr_attr_cache): Likewise.
4345
4346 2007-02-11  Jan Hubicka  <jh@suse.cz>
4347
4348         * ipa-inline.c (cgraph_edge_badness): Add "else" missing in the
4349         previous patch.
4350
4351 2007-02-11  Steven Bosscher  <steven@gcc.gnu.org>
4352
4353         * fwprop.c (try_fwprop_subst): Use set_unique_reg_note
4354         to add the REG_EQ* note.
4355         * see.c (see_merge_one_use_extension): Likewise.
4356         * local-alloc.c (update_equiv_regs): Likewise.  Also don't
4357         turn REG_EQUAL notes into REG_EQUIV notes if the target
4358         register may have more than one set.
4359         * function.c (assign_parm_setup_reg): Use set_unique_reg_note.
4360         * gcse.c (try_replace_reg): Likewise.
4361         * alias.c (init_alias_analysis): Use find_reg_equal_equiv_note.
4362         * calls.c (fixup_tail_calls): Likewise.  Abort if there is
4363         more than one REG_EQUIV note.
4364         * reload1.c (gen_reload): Use set_unique_reg_note.
4365
4366 2007-02-11  Uros Bizjak  <ubizjak@gmail.com>
4367
4368         * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_CONVERSION): Define.
4369         (ix86_builtin_conversion): New function.
4370
4371 2007-02-06  Mark Mitchell  <mark@codesourcery.com>
4372
4373         PR target/29487
4374         * tree.h (DECL_REPLACEABLE_P): New macro.
4375         * except.c (set_nothrow_function_flags): Likewise.
4376
4377 2007-02-11  Tehila Meyzels  <tehila@il.ibm.com>
4378             Ira Rosen  <irar@il.ibm.com>
4379             Dorit Nuzman  <dorit@il.ibm.com>
4380
4381         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_CONVERSION): New target hook.
4382         * targhooks.c (default_builtin_vectorized_conversion): New.
4383         * targhooks.h (default_builtin_vectorized_function): New declaration.
4384         * target.h (struct vectorize): Add builtin_conversion field.
4385         * tree-vectorizer.h (type_conversion_vec_info_type): New enum
4386         stmt_vec_info_type value.
4387         (vectorizable_conversion): New declaration.
4388         * tree-vect-analyze.c (vect_analyze_operations): Add
4389         vectorizable_conversion call.
4390         * target-def.h (TARGET_VECTORIZE_BUILTIN_CONVERSION): New.
4391         * tree-vect-transform.c (vectorizable_conversion): New function.
4392         (vect_transform_stmt): Add case for type_conversion_vec_info_type.
4393         * tree-vect-generic.c (expand_vector_operations_1): Consider correct
4394         mode.
4395         * config/rs6000/rs6000.c (rs6000_builtin_conversion): New.
4396         (TARGET_VECTORIZE_BUILTIN_CONVERSION): Defined.
4397         (rs6000_expand_builtin): Add handling a case of ALTIVEC_BUILTIN_VCFUX
4398         or ALTIVEC_BUILTIN_VCFSX.
4399
4400 2007-02-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4401
4402         PR target/30634
4403         * pa.md (movdf): For 64-bit target, fail if operand 1 is a non-zero
4404         CONST_DOUBLE and operand 0 is a hard register.
4405         (movdi): For 64-bit target, remove code to force CONST_DOUBLE to
4406         memory.  Fail if operand 1 is a non-zero CONST_INT and operand 0
4407         is a hard floating-point register.
4408
4409 2007-02-10  Richard Henderson  <rth@redhat.com>
4410             Jakub Jelinek  <jakub@redhat.com>
4411             Alexandre Oliva  <aoliva@redhat.com>
4412
4413         * Makefile.in (libgcc-support, libgcc.mvars): Add emutls.c.
4414         * builtin-types.def (BT_WORD): Make unsigned.
4415         (BT_FN_VOID_PTR_WORD_WORD_PTR): New.
4416         * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS): New.
4417         (BUILT_IN_EMUTLS_REGISTER_COMMON): New.
4418         * c-decl.c (grokdeclarator): Don't error if !have_tls.
4419         * c-parser.c (c_parser_omp_threadprivate): Likewise.
4420         * dwarf2out.c (loc_descriptor_from_tree_1): Don't do anything for
4421         emulated tls.
4422         * expr.c (emutls_var_address): New.
4423         (expand_expr_real_1): Expand emulated tls.
4424         (expand_expr_addr_expr_1): Likewise.
4425         * libgcc-std.ver: Add __emutls_get_address, __emutls_register_common.
4426         * output.h (emutls_finish): Declare.
4427         * toplev.c (compile_file): Call it.
4428         * tree-ssa-address.c (gen_addr_rtx): Check for const-ness of the
4429         address before wrapping in CONST.
4430         * varasm.c (emutls_htab, emutls_object_type): New.
4431         (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): New.
4432         (get_emutls_object_name, get_emutls_object_type): New.
4433         (get_emutls_init_templ_addr, emutls_decl): New.
4434         (emutls_common_1, emutls_finish): New.
4435         (assemble_variable): When emulating tls, swap decls; generate
4436         constructor for the emutls objects.
4437         (do_assemble_alias): When emulating tls, swap decl and target name.
4438         (default_encode_section_info): Don't add SYMBOL_FLAG_TLS_SHIFT
4439         for emulated tls.
4440         * varpool.c (decide_is_variable_needed): Look at force_output.
4441         Recurse for emulated tls.
4442         (cgraph_varpool_remove_unreferenced_decls): Remove checks redundant
4443         with decide_is_variable_needed.
4444         * emutls.c: New file.
4445         * config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Only emit
4446         tls_object for real tls.
4447
4448 2007-02-10  Kaz Kojima  <kkojima@gcc.gnu.org>
4449
4450         PR rtl-optimization/29599
4451         * reload1.c (eliminate_regs_in_insn): Take the destination
4452         mode into account when computing the offset.
4453
4454 2007-02-09  Stuart Hastings  <stuart@apple.com>
4455             Richard Henderson  <rth@redhat.com>
4456
4457         * gcc/config/i386/i386.h (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
4458         * gcc/config/i386/darwin.h: (TARGET_KEEPS_VECTOR_ALIGNED_STACK): New.
4459         * gcc/config/i386/i386.md (fixuns_trunc<mode>si2, fixuns_truncsfhi2,
4460         fixuns_truncdfhi2): New.
4461         (fix_truncsfdi_sse): Call ix86_expand_convert_sign_didf_sse.
4462         (floatunsdidf2): Call ix86_expand_convert_uns_didf_sse.
4463         (floatunssisf2): Add call to ix86_expand_convert_uns_sisf_sse.
4464         (floatunssidf2): Allow nonimmediate source.
4465         * gcc/config/i386/sse.md (movdi_to_sse): New.
4466         (vec_concatv2di): Drop '*'.
4467         * gcc/config/i386/i386-protos.h (ix86_expand_convert_uns_si_sse,
4468         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
4469         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse):
4470         New.
4471         * gcc/config/i386/i386.c (ix86_expand_convert_uns_si_sse,
4472         ix86_expand_convert_uns_didf_sse, ix86_expand_convert_uns_sidf_sse,
4473         ix86_expand_convert_uns_sisf_sse, ix86_expand_convert_sign_didf_sse,
4474         ix86_build_const_vector, ix86_expand_vector_init_one_nonzero): New.
4475         (ix86_build_signbit_mask): Fix decl of v, refactor to call
4476         ix86_build_const_vector.
4477         (x86_emit_floatuns): Rewrite.
4478
4479 2007-02-10  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
4480
4481         * genautomata.c (longest_path_length): Delete unused function.
4482         (struct state): Delete unused longest_path_length.
4483         (UNDEFINED_LONGEST_PATH_LENGTH): Delete unused macro.
4484         (get_free_state): Delete unused.
4485
4486 2007-02-09  Jan Hubicka  <jh@suse.cz>
4487
4488         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 30.
4489         * doc/invoke.texi (inline-unit-growth): Update default value.
4490
4491         * Makefile.in (passes.o, ipa-inline.o): Add dependencies.
4492         * cgraphbuild.c (build_cgraph_edges): Compute frequencies.
4493         (rebuild_cgraph_edges): Likewise.
4494         * cgraph.c (cgraph_set_call_stmt): Add new argument frequency.
4495         (dump_cgraph_node): Dump frequencies.
4496         (cgraph_clone_edge): Add frequency scales.
4497         (cgraph_clone_node): Add freuqnecy.
4498         * cgraph.h (cgraph_edge): Add freuqnecy argument.
4499         (CGRAPH_FREQ_BASE, CGRAPH_FREQ_MAX): New constants.
4500         (cgraph_create_edge, cgraph_clone_edge, cgraph_clone_node): Update.
4501         * tree-pass.h (TODO_rebuild_frequencies): New constant.
4502         * cgraphunit.c (verify_cgraph_node): Verify frequencies.
4503         (cgraph_copy_node_for_versioning): Update call of cgraph_clone_edge.
4504         (save_inline_function_body): Likewise.
4505         * ipa-inline.c: inluce rtl.h
4506         (cgraph_clone_inlined_nods): Update call of cgraph_clone_node.
4507         (cgraph_edge_badness): Use frequencies.
4508         (cgraph_decide_recursive_inlining): Update clonning.
4509         (cgraph_decide_inlining_of_small_function): Dump frequency.
4510         * predict.c (estimate_bb_frequencies): Export.
4511         * predict.h (estimate_bb_frequencies): Declare.
4512         * tree-inline.c (copy_bb): Watch overflows.
4513         (expand_call_inline): Update call of cgraph_create_edge.
4514         (optimize_inline_calls): Use TODO flags to update frequnecies.
4515         * passes.h: Include predict.h
4516         (init_optimization_passes): Move profile ahead.
4517         (execute_function_todo): Handle TODO_rebuild_frequencies.
4518
4519 2007-02-09  Roger Sayle  <roger@eyesopen.com>
4520
4521         * config/alpha/alpha.c (emit_insxl): Force the first operand of
4522         the insbl or inswl pattern into a register.
4523
4524 2007-02-09  Roger Sayle  <roger@eyesopen.com>
4525
4526         * config/ia64/ia64.md (bswapdi2): New define_insn.
4527
4528 2007-02-09  Richard Henderson  <rth@redhat.com>
4529
4530         * config/i386/constraints.md (Ym): New constraint.
4531         * config/i386/i386.md (movsi_1): Change Y2 to Yi constraints.
4532         (movdi_1_rex64): Split sse and xmm general register moves from
4533         memory move alternatives.  Use conditional register constraints.
4534         (movsf_1, movdf_integer): Likewise.
4535         (zero_extendsidi2_32, zero_extendsidi2_rex64): Likewise.
4536         (movdf_integer_rex64): New.
4537         (pushsf_rex64): Fix output constraints.
4538         * config/i386/sse.md (sse2_loadld): Split rm alternative, use Yi.
4539         (sse2_stored): Likewise.
4540         (sse2_storeq_rex64): New.
4541         * config/i386/i386.c (x86_inter_unit_moves): Enable for not
4542         amd and not generic.
4543         (ix86_secondary_memory_needed): Don't bypass TARGET_INTER_UNIT_MOVES
4544         for optimize_size.  Remove SF/DFmode hack.
4545
4546 2007-02-09  Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
4547
4548         * config/i386/driver-i386.c: Turn on -mtune=native for AMDFAM10.
4549         (bit_SSE4a): New.
4550
4551 2007-02-09  Nathan Sidwell  <nathan@codesourcery.com>
4552             Richard Sandiford  <richard@codesourcery.com>
4553
4554         * config.gcc (m68010-*-netbsdelf*, m68k*-*-netbsdelf*)
4555         (m68k*-*-openbsd*, m68k-*-linux*): Set default_cf_cpu.
4556         (m68k-*-aout*, m68k-*-coff*, m68k-*-uclinux*, m68k-*-rtems*): Add
4557         m68k/t-mlib to tmake_file.
4558         (m68020-*-elf*, m68k-*-elf*): Likewise.  Add t-m68kbare as well.
4559         (m68k*-*-*): Use --with-arch to pick a default for --with-cpu.
4560         (m680[012]0-*-*, m68k*-*-*): Add support for --with-arch.
4561         Allow it to be cf or m68k.  Set m68k_arch_family.  If that
4562         variable is not empty, add t-$m68k_arch_family to tmake_file.
4563         Add t-mlibs to tmake_file.
4564         * doc/install.texi: Document --with-arch=m68k and --with-arch=cf.
4565         * config/m68k/t-cf: New file.
4566         * config/m68k/t-m68k: Likewise.
4567         * config/m68k/t-mlibs: Likewise.
4568         * config/m68k/t-m68kbare (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4569         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
4570         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
4571         * config/m68k/t-m68kelf (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4572         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS, LIBGCC, INSTALL_LIBGCC):
4573         Delete.
4574         * config/m68k/t-openbsd (MULTILIB_OPTIONS, LIBGCC): Delete.
4575         (INSTALL_LIBGCC): Delete.
4576         (M68K_MLIB_DIRNAMES, M68K_MLIB_OPTIONS): Define.
4577         * config/m68k/t-rtems (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4578         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
4579         (M68K_MLIB_CPU): Define.
4580         * config/m68k/t-uclinux (MULTILIB_OPTIONS, MULTILIB_DIRNAMES)
4581         (MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Delete.
4582         (M68K_MLIB_CPU, M68K_MLIB_OPTIONS, M68K_MLIB_DIRNAMES): Define.
4583
4584 2007-02-09  Zdenek Dvorak  <dvorakz@suse.cz>
4585             Richard Guenther  <rguenther@suse.de>
4586
4587         PR middle-end/23361
4588         * fold-const.c (fold_comparison): Handle obfuscated comparisons
4589         against INT_MIN/INT_MAX.
4590         * tree-ssa-loop-ivcanon.c (remove_empty_loop): Print to dump
4591         file if a loop is removed.
4592
4593 2007-02-09  Joseph Myers  <joseph@codesourcery.com>
4594
4595         * calls.c (store_one_arg): Pass correct alignment to
4596         emit_push_insn for non-BLKmode values.
4597         * expr.c (emit_push_insn): If STRICT_ALIGNMENT, copy to an
4598         unaligned stack slot via a suitably aligned slot.
4599
4600 2007-02-08  DJ Delorie  <dj@redhat.com>
4601
4602         * config/m32c/m32c.c (m32c_unpend_compare): Add default to silence
4603         warnings.
4604         (legal_subregs): Use unsigned char, make const.
4605         (m32c_illegal_subreg_p): Use ARRAY_SIZE.  Delete unused variables.
4606
4607 2007-02-08  Paul Brook  <paul@codesourcery.com>
4608
4609         * config/arm/lib1funcs.asm (RETLDM): Pop directly into PC when no
4610         special interworking needed.
4611
4612 2007-02-08  Harsha Jagasia  <harsha.jagasia@amd.com>
4613
4614         * config/i386/xmmintrin.h: Make inclusion of emmintrin.h
4615         conditional to __SSE2__.
4616         (Entries below should have been added to first ChangeLog
4617         entry for amdfam10 dated 2007-02-05)
4618         * config/i386/emmintrin.h: Generate #error if __SSE2__ is not
4619         defined.
4620         * config/i386/pmmintrin.h: Generate #error if __SSE3__ is not
4621         defined.
4622         * config/i386/tmmintrin.h: Generate #error if __SSSE3__ is not
4623         defined.
4624
4625 2007-02-08  DJ Delorie  <dj@redhat.com>
4626
4627         * config/m32c/m32c-protos.h (m32c_illegal_subreg_p): New.
4628         * config/m32c/m32c.c (legal_subregs): New.
4629         (m32c_illegal_subreg_p): New.
4630         * config/m32c/predicates.md (m32c_any_operand): Use it to reject
4631         unsupported subregs of hard regs.
4632
4633 2007-02-08  Jan Hubicka  <jh@suse.cz>
4634
4635         * tree-cfg.c (bsi_replace): Shortcut when replacing the statement with
4636         the same one; always update histograms.
4637
4638 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
4639
4640         * passes.c (init_optimization_passes): Tidy comment.
4641
4642 2007-02-08  Roger Sayle  <roger@eyesopen.com>
4643
4644         * simplify-rtx.c (simplify_unary_operation_1) <POPCOUNT>: We can
4645         strip zero_extend, bswap and rotates from POCOUNT's argument.
4646         <PARITY>: Likewise, we can strip not, bswap, sign_extend,
4647         zero_extend and rotates from PARITY's argument.
4648         <BSWAP>: A byte-swap followed by a byte-swap is an identity.
4649         (simplify_const_unary_operation) <BSWAP>: Evaluate the byte-swap
4650         of an integer constant at compile-time.
4651
4652 2007-02-08  Diego Novillo  <dnovillo@redhat.com>
4653
4654         PR 30562
4655         * tree-flow.h (struct var_ann_d): Remove field 'is_used'.
4656         Update all users.
4657         * tree-ssa-alias.c (compute_is_aliased): Remove.  Update all
4658         users.
4659         (init_alias_info):
4660         * tree-ssa-live.c (remove_unused_locals): Do not remove
4661         TREE_ADDRESSABLE variables.
4662         * tree-ssa-structalias.c (compute_points_to_sets): Tidy.
4663         * tree-ssa-operands.c (add_virtual_operand): Remove argument
4664         FOR_CLOBBER.  Update all users.
4665         If VAR has an associated alias set, add a virtual operand for
4666         it if no alias is found to conflict with the memory reference.
4667
4668 2007-02-07  Jan Hubicka  <jh@suse.cz>
4669             Robert Kidd <rkidd@crhc.uiuc.edu>
4670
4671         * value-prof.c (visit_hist, free_hist): Return 1 instead of 0.
4672
4673 2007-02-07  Ian Lance Taylor  <iant@google.com>
4674
4675         * lower-subreg.c (simple_move): Reject PARTIAL_INT modes.
4676
4677 2007-02-07  Roger Sayle  <roger@eyesopen.com>
4678
4679         * config/rs6000/rs6000.md (ctz<mode>2, ffs<mode>2, popcount<mode>2,
4680         parity<mode>2, smulsi3_highpart, abstf2_internal, allocate_stack,
4681         tablejumpdi, movsi_to_cr_one): Remove constraints from
4682         define_expand's match_operands.
4683
4684 2007-02-07  Roger Sayle  <roger@eyesopen.com>
4685
4686         * global.c (compute_regsets): Move declatation of "i" inside of
4687         #ifdef ELIMINABLE_REGS to avoid unused variable bootstrap failure.
4688
4689 2007-02-07  Jakub Jelinek  <jakub@redhat.com>
4690
4691         PR c++/30703
4692         * gimplify.c (gimplify_scan_omp_clauses): Remove special casing
4693         of INDIRECT_REF <RESULT_DECL>.
4694
4695         * config/i386/i386.c (override_options): Set PTA_SSSE3 for core2.
4696
4697 2007-02-06  J"orn Rennecke  <joern.rennecke@arc.com>
4698             Kaz Kojima  <kkojima@gcc.gnu.org>
4699
4700         PR target/29746
4701         * config/sh/sh.c (expand_cbranchdi4): Use scratch register
4702         properly.
4703         (sh_initialize_trampoline): Add parentheses to avoid a warning.
4704
4705 2007-02-06  Zdenek Dvorak <dvorakz@suse.cz>
4706
4707         * doc/loop.texi: Document possibility not to perform disambiguation
4708         of loops with multiple latches.
4709         * cfgloopmanip.c (alp_enum_p): Removed.
4710         (add_loop): Handle subloops.  Use get_loop_body_with_size.
4711         (create_preheader): Do not allow ENTRY_BLOCK_PTR to be preheader.
4712         * cfghooks.c (redirect_edge_and_branch_force): Set dominator for
4713         the new forwarder block.
4714         (make_forwarder_block): Only call new_bb_cbk if it is not NULL.
4715         Handle the case latch is NULL.
4716         * tree-ssa-dom.c (tree_ssa_dominator_optimize): Avoid cfg modifications
4717         when marking loop exits.
4718         * ifcvt.c (if_convert): Ditto.  Mark loop exits even if cfg cannot
4719         be modified.
4720         * loop-init.c (loop_optimizer_init): Do not modify cfg.  Call
4721         disambiguate_loops_with_multiple_latches.
4722         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Calculate dominators
4723         before fix_loop_structure.
4724         * cfgloop.c: Include pointer-set.h and output.h.
4725         (canonicalize_loop_headers, HEADER_BLOCK, LATCH_EDGE,
4726         update_latch_info, mfb_keep_just, mfb_keep_nonlatch): Removed.
4727         (get_loop_latch_edges, find_subloop_latch_edge_by_profile,
4728         find_subloop_latch_edge_by_ivs, find_subloop_latch_edge,
4729         mfb_redirect_edges_in_set, form_subloop, merge_latch_edges,
4730         disambiguate_multiple_latches, get_loop_body_with_size,
4731         disambiguate_loops_with_multiple_latches): New functions.
4732         (flow_loop_dump): Dump multiple latch edges.
4733         (flow_loop_nodes_find): Handle loops with multiple latches.
4734         (flow_loops_find): Ditto. Do not call canonicalize_loop_headers.
4735         (glb_enum_p): Modified.
4736         (get_loop_body): Use get_loop_body_with_size.
4737         * cfgloop.h (LOOPS_HAVE_RECORDED_EXITS): New flag.
4738         (AVOID_CFG_MODIFICATIONS): New constant.
4739         (disambiguate_loops_with_multiple_latches, add_loop,
4740         get_loop_body_with_size): Declare.
4741         * Makefile.in (cfgloop.o): Add pointer-set.h and output.h.
4742
4743 2007-02-06  Seongbae Park <seongbae.park@gmail.com>
4744
4745         PR inline-asm/28686
4746         * global.c (compute_regsets): New function.
4747         (global_alloc): Refactored ELIMINABLE_REGSET
4748         and NO_GLOBAL_ALLOC_REGS computation out.
4749         (rest_of_handle_global_alloc): Call compute_regsets()
4750         for non-optimizing case.
4751
4752 2007-02-06  Richard Henderson  <rth@redhat.com>
4753
4754         * config/i386/constraints.md (Y2): Rename from Y.
4755         (Yi): New constraint.
4756         * config/i386/i386.md (movsi_1, movdi_2, pushdf_nointeger,
4757         pushdf_integer, movdf_nointeger, movdf_integer, zero_extendsidi2_32,
4758         zero_extendsidi2_rex64, truncxfdf2_mixed): Change Y constraints to Y2.
4759         (extendsfdf2_mixed, extendsfdf2_sse, truncdfsf_fast_mixed,
4760         truncdfsf_fast_sse, truncdfsf_mixed, fix_truncdfdi_sse,
4761         fix_truncdfsi_sse, floatsidf2_mixed, floatsidf2_sse,
4762         floatdidf2_mixed, floatdidf2_sse, absnegdf2_mixed,
4763         absnegdf2_sse, sse_setccdf, fop_df_comm_mixed, fop_df_comm_sse,
4764         fop_df_1_mixed, fop_df_1_sse): Change Y constraints to x.
4765         * config/i386/mmx.md (mov<MMXMODEI>_internal_rex64,
4766         mov<MMXMODEI>_internal, movv2sf_internal_rex64, movv2sf_internal,
4767         vec_extractv2si_1): Change Y constraints to Y2.
4768         * config/i386/sse.md (vec_setv4sf_0, vec_concatv2df, vec_dupv4si,
4769         vec_dupv2di, sse2_concatv2si, vec_concatv4si_1, vec_concatv2di):
4770         Change Y constraints to Y2.
4771         (sse2_loadld): Change Y constraints to x.
4772
4773 2007-02-06  Roger Sayle  <roger@eyesopen.com>
4774
4775         * config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
4776         (parity<mode>2): New define_expand using rs6000_emit_parity.
4777         * config/rs6000/rs6000.c (rs6000_emit_popcount,
4778         rs6000_emit_parity): New functions.
4779         * config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
4780         rs6000_emit_parity): Prototype here.
4781
4782 2007-02-06  Ian Lance Taylor  <iant@google.com>
4783
4784         * lower-subreg.c (simple_move_operand): Reject CONST.
4785         (resolve_clobber): Call validate_change rather than directly
4786         assigning to XEXP (pat, 0).
4787
4788 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
4789
4790         * Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
4791         (tree-ssa-reassoc.o): Add pointer-set.h dependency.
4792         (tree-cfg.o): Remove hashtab.h dependency.
4793
4794         * tree-ssa-loop-ivopts.c: Include pointer-set.h.
4795         (struct ivopts_data): Change niters to pointer_map_t.
4796         (struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
4797         (niter_for_exit): Create pointer_map on demand.  Change for
4798         pointer_map API.
4799         (tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
4800         (free_loop_data): Destroy data->niters if created and reset field.
4801         (tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
4802         (tree_ssa_iv_optimize_loop): Check for presence of stale data.
4803
4804         * tree-ssa-reassoc.c: Include pointer-set.h.
4805         (bb_rank): Change to long *.
4806         (operand_rank): Change to pointer_map_t.
4807         (find_operand_rank): Return long, -1 if not found.  Declare as inline.
4808         (insert_operand_rank): Accept long.
4809         (operand_entry_hash, operand_entry_eq): Remove.
4810         (get_rank): Return long.  Adjust for changes above.
4811         (init_reassoc): Change rank type to long.  Adjust creation of bb_rank
4812         and operand_rank.
4813         (fini_reassoc): Delete operand_rank with pointer_map_destroy.
4814
4815         * tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
4816         (struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
4817         (insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
4818         is not NULL.
4819         (lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
4820         directly since it cannot be NULL.
4821         (get_vi_for_tree): Rewrite for pointer_map API.
4822         (find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
4823         (init_alias_vars): Create vi_for_tree as pointer_map.
4824         (delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.
4825
4826         * tree-cfg.c: Don't include hashtab.h.
4827         (edge_to_cases): Declare as pointer_map.
4828         (struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
4829         Delete.
4830         (edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
4831         (start_recording_case_labels): Create edge_to_cases as pointer_map.
4832         (end_recoding_case_labels): Cleanup edge_to_cases manually before
4833         destroying it.
4834         (record_switch_edge): Delete.
4835         (get_cases_for_edge): Adjust for pointer_map API, inline
4836         record_switch_edge (rewritten for new API), remove goto.
4837
4838 2006-02-06  Paolo Bonzini  <bonzini@gnu.org>
4839
4840         * Makefile.in (tree-nested.o): Add pointer-set.h dependency.
4841         * tree-nested.c: Include pointer-set.h.
4842         (var_map_elt, var_map_eq, var_map_hash): Delete.
4843         (struct nesting_info): Remove GTY marker.  Change the two htab_t's
4844         to pointer_map_t's.
4845         (nesting_info_bitmap_obstack): New.
4846         (lookup_field_for_decl): Adjust for pointer_map API.
4847         (lookup_tramp_for_decl): Adjust for pointer_map API.
4848         (get_nonlocal_debug_decl): Adjust for pointer_map API.
4849         (get_local_debug_decl): Adjust for pointer_map API.
4850         (convert_nl_goto_reference): Adjust for pointer_map API.
4851         (convert_nl_goto_receiver): Adjust for pointer_map API.
4852         (create_nesting_tree): Create outside GGC space.  Create bitmap on
4853         the new obstack.  Create field_map and var_map as pointer_maps.
4854         (free_nesting_tree): Adjust for changes to create_nesting_tree.
4855         (root): Delete.
4856         (lower_nested_functions): Move root here, no need to NULL it.
4857         Initialize and release the obstack.
4858
4859 2007-02-06  Paolo Bonzini  <bonzini@gnu.org>
4860
4861         * tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
4862         Remove prototypes and make them non-static.
4863         (struct tree_int_map): Remove.
4864         * tree.h (struct tree_int_map): Move here, turning TO into an
4865         unsigned int.
4866         (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.
4867
4868         * tree.h (TREE_COMPLEXITY): Remove.
4869         (struct tree_exp): Remove complexity field.
4870         * tree.c (build1_stat): Don't set it.
4871
4872 2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
4873             Victor Kaplansky  <victork@il.ibm.com>
4874
4875         * tree-vectorizer.c (vect_is_simple_use): Support induction.
4876         (vect_is_simple_reduction): Support reduction with induction as
4877         one of the operands.
4878         (vect_is_simple_iv_evolution): Fix formatting.
4879         * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
4880         formatting.  Don't mark induction phis for vectorization.
4881         (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
4882         * tree-vect-transform.c (get_initial_def_for_induction): New function.
4883         (vect_get_vec_def_for_operand): Support induction.
4884         (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
4885         induction case.
4886         (vectorizable_reduction): Support reduction with induction as one of
4887         the operands.
4888         (vectorizable_type_demotion): Use def-type of stmt argument rather
4889         than dummy def-type.
4890
4891         * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
4892         flag_tree_scev_cprop.
4893         * common.opt (tree-scev-cprop): New flag.
4894
4895         * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
4896         call to vect_get_new_vect_var.
4897
4898 2007-02-06  Ira Rosen  <irar@il.ibm.com>
4899
4900         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
4901         vectype is not NULL.
4902         (vect_pattern_recog_1): Likewise.
4903
4904 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4905
4906         * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
4907         (fold_negate_expr): Likewise.
4908
4909 2007-02-05  Alexandre Oliva  <aoliva@redhat.com>
4910
4911         PR debug/30189
4912         * dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
4913         even if cv-qualification is the same.
4914
4915 2007-02-05  Geoffrey Keating  <geoffk@apple.com>
4916
4917         * config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
4918         __enable_execute_stack on completion.
4919
4920 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4921
4922         * config/i386/athlon.md (athlon_fldxf_k8, athlon_fld_k8,
4923         athlon_fstxf_k8, athlon_fst_k8, athlon_fist, athlon_fmov,
4924         athlon_fadd_load, athlon_fadd_load_k8, athlon_fadd, athlon_fmul,
4925         athlon_fmul_load, athlon_fmul_load_k8, athlon_fsgn,
4926         athlon_fdiv_load, athlon_fdiv_load_k8, athlon_fdiv_k8,
4927         athlon_fpspc_load, athlon_fpspc, athlon_fcmov_load,
4928         athlon_fcmov_load_k8, athlon_fcmov_k8, athlon_fcomi_load_k8,
4929         athlon_fcomi, athlon_fcom_load_k8, athlon_fcom): Added amdfam10.
4930
4931 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4932
4933         * config/i386/i386.md (x86_sahf_1, cmpfp_i_mixed, cmpfp_i_sse,
4934         cmpfp_i_i387, cmpfp_iu_mixed, cmpfp_iu_sse, cmpfp_iu_387,
4935         swapsi, swaphi_1, swapqi_1, swapdi_rex64, fix_truncsfdi_sse,
4936         fix_truncdfdi_sse, fix_truncsfsi_sse, fix_truncdfsi_sse,
4937         x86_fldcw_1, floatsisf2_mixed, floatsisf2_sse, floatdisf2_mixed,
4938         floatdisf2_sse, floatsidf2_mixed, floatsidf2_sse,
4939         floatdidf2_mixed, floatdidf2_sse, muldi3_1_rex64, mulsi3_1,
4940         mulsi3_1_zext, mulhi3_1, mulqi3_1, umulqihi3_1, mulqihi3_insn,
4941         umulditi3_insn, umulsidi3_insn, mulditi3_insn, mulsidi3_insn,
4942         umuldi3_highpart_rex64, umulsi3_highpart_insn,
4943         umulsi3_highpart_zext, smuldi3_highpart_rex64,
4944         smulsi3_highpart_insn, smulsi3_highpart_zext, x86_64_shld,
4945         x86_shld_1, x86_64_shrd, sqrtsf2_mixed, sqrtsf2_sse,
4946         sqrtsf2_i387, sqrtdf2_mixed, sqrtdf2_sse, sqrtdf2_i387,
4947         sqrtextendsfdf2_i387, sqrtxf2, sqrtextendsfxf2_i387,
4948         sqrtextenddfxf2_i387): Added amdfam10_decode.
4949
4950         * config/i386/athlon.md (athlon_idirect_amdfam10,
4951         athlon_ivector_amdfam10, athlon_idirect_load_amdfam10,
4952         athlon_ivector_load_amdfam10, athlon_idirect_both_amdfam10,
4953         athlon_ivector_both_amdfam10, athlon_idirect_store_amdfam10,
4954         athlon_ivector_store_amdfam10): New define_insn_reservation.
4955         (athlon_idirect_loadmov, athlon_idirect_movstore): Added
4956         amdfam10.
4957
4958 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4959
4960         * config/i386/athlon.md (athlon_call_amdfam10,
4961         athlon_pop_amdfam10, athlon_lea_amdfam10): New
4962         define_insn_reservation.
4963         (athlon_branch, athlon_push, athlon_leave_k8, athlon_imul_k8,
4964         athlon_imul_k8_DI, athlon_imul_mem_k8, athlon_imul_mem_k8_DI,
4965         athlon_idiv, athlon_idiv_mem, athlon_str): Added amdfam10.
4966
4967 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4968
4969         * config/i386/athlon.md (athlon_sseld_amdfam10,
4970         athlon_mmxld_amdfam10, athlon_ssest_amdfam10,
4971         athlon_mmxssest_short_amdfam10): New define_insn_reservation.
4972
4973 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4974
4975         * config/i386/athlon.md (athlon_sseins_amdfam10): New
4976         define_insn_reservation.
4977         * config/i386/i386.md (sseins): Added sseins to define_attr type
4978         and define_attr unit.
4979         * config/i386/sse.md: Set type attribute to sseins for insertq
4980         and insertqi.
4981
4982 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4983
4984         * config/i386/athlon.md (sselog_load_amdfam10, sselog_amdfam10,
4985         ssecmpvector_load_amdfam10, ssecmpvector_amdfam10,
4986         ssecomi_load_amdfam10, ssecomi_amdfam10,
4987         sseaddvector_load_amdfam10, sseaddvector_amdfam10): New
4988         define_insn_reservation.
4989         (ssecmp_load_k8, ssecmp, sseadd_load_k8, seadd): Added amdfam10.
4990
4991 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
4992
4993         * config/i386/athlon.md (cvtss2sd_load_amdfam10,
4994         cvtss2sd_amdfam10, cvtps2pd_load_amdfam10, cvtps2pd_amdfam10,
4995         cvtsi2sd_load_amdfam10, cvtsi2ss_load_amdfam10,
4996         cvtsi2sd_amdfam10, cvtsi2ss_amdfam10, cvtsd2ss_load_amdfam10,
4997         cvtsd2ss_amdfam10, cvtpd2ps_load_amdfam10, cvtpd2ps_amdfam10,
4998         cvtsX2si_load_amdfam10, cvtsX2si_amdfam10): New
4999         define_insn_reservation.
5000
5001         * config/i386/sse.md (cvtsi2ss, cvtsi2ssq, cvtss2si,
5002         cvtss2siq, cvttss2si, cvttss2siq, cvtsi2sd, cvtsi2sdq,
5003         cvtsd2si, cvtsd2siq, cvttsd2si, cvttsd2siq,
5004         cvtpd2dq, cvttpd2dq, cvtsd2ss, cvtss2sd,
5005         cvtpd2ps, cvtps2pd): Added amdfam10_decode attribute.
5006
5007 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
5008
5009         * config/i386/athlon.md (athlon_ssedivvector_amdfam10,
5010         athlon_ssedivvector_load_amdfam10, athlon_ssemulvector_amdfam10,
5011         athlon_ssemulvector_load_amdfam10): New define_insn_reservation.
5012         (athlon_ssediv, athlon_ssediv_load_k8, athlon_ssemul,
5013         athlon_ssemul_load_k8): Added amdfam10.
5014
5015 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
5016
5017         * config/i386/i386.h (TARGET_SSE_UNALIGNED_MOVE_OPTIMAL): New macro.
5018         (x86_sse_unaligned_move_optimal): New variable.
5019
5020         * config/i386/i386.c (x86_sse_unaligned_move_optimal): Enable for
5021         m_AMDFAM10.
5022         (ix86_expand_vector_move_misalign): Add code to generate movupd/movups
5023         for unaligned vector SSE double/single precision loads for AMDFAM10.
5024
5025 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
5026
5027         * config/i386/i386.h (TARGET_AMDFAM10): New macro.
5028         (TARGET_CPU_CPP_BUILTINS): Add code for amdfam10.
5029         Define TARGET_CPU_DEFAULT_amdfam10.
5030         (TARGET_CPU_DEFAULT_NAMES): Add amdfam10.
5031         (processor_type): Add PROCESSOR_AMDFAM10.
5032
5033         * config/i386/i386.md: Add amdfam10 as a new cpu attribute to match
5034         processor_type in config/i386/i386.h.
5035         Enable imul peepholes for TARGET_AMDFAM10.
5036
5037         * config.gcc: Add support for --with-cpu option for amdfam10.
5038
5039         * config/i386/i386.c (amdfam10_cost): New variable.
5040         (m_AMDFAM10): New macro.
5041         (m_ATHLON_K8_AMDFAM10): New macro.
5042         (x86_use_leave, x86_push_memory, x86_movx, x86_unroll_strlen,
5043         x86_cmove, x86_3dnow_a, x86_deep_branch, x86_use_simode_fiop,
5044         x86_promote_QImode, x86_integer_DFmode_moves,
5045         x86_partial_reg_dependency, x86_memory_mismatch_stall,
5046         x86_accumulate_outgoing_args, x86_arch_always_fancy_math_387,
5047         x86_sse_partial_reg_dependency, x86_sse_typeless_stores,
5048         x86_use_ffreep, x86_use_incdec, x86_four_jump_limit,
5049         x86_schedule, x86_use_bt, x86_cmpxchg16b, x86_pad_returns):
5050         Enable/disable for amdfam10.
5051         (override_options): Add amdfam10_cost to processor_target_table.
5052         Set up PROCESSOR_AMDFAM10 for amdfam10 entry in
5053         processor_alias_table.
5054         (ix86_issue_rate): Add PROCESSOR_AMDFAM10.
5055         (ix86_adjust_cost): Add code for amdfam10.
5056
5057 2007-02-05  Harsha Jagasia  <harsha.jagasia@amd.com>
5058
5059         * config/i386/i386.opt: Add new Advanced Bit Manipulation (-mabm)
5060         instruction set feature flag. Add new (-mpopcnt) flag for popcnt
5061         instruction. Add new SSE4A (-msse4a) instruction set feature flag.
5062         * config/i386/i386.h: Add builtin definition for SSE4A.
5063         * config/i386/i386.md: Add support for ABM instructions
5064         (popcnt and lzcnt).
5065         * config/i386/sse.md: Add support for SSE4A instructions
5066         (movntss, movntsd, extrq, insertq).
5067         * config/i386/i386.c: Add support for ABM and SSE4A builtins.
5068         Add -march=amdfam10 flag.
5069         * config/i386/ammintrin.h: Add support for SSE4A intrinsics.
5070         * doc/invoke.texi: Add documentation on flags for sse4a, abm, popcnt
5071         and amdfam10.
5072         * doc/extend.texi: Add documentation for SSE4A builtins.
5073
5074 2007-02-05  Bob Wilson  <bob.wilson@acm.org>
5075
5076         * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
5077
5078 2007-02-05  Richard Guenther  <rguenther@suse.de>
5079
5080         * tree-vectorizer.h (vectorizable_function): Add argument type
5081         argument, change return type.
5082         * tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
5083         * tree-vect-transform.c (vectorizable_function): Handle extra
5084         argument, return vectorized function decl.
5085         (build_vectorized_function_call): Remove.
5086         (vectorizable_call): Handle calls with result and argument types
5087         differing.  Handle loop vectorization factor correctly.
5088         * targhooks.c (default_builtin_vectorized_function): Adjust for
5089         extra argument.
5090         * targhooks.h (default_builtin_vectorized_function): Likewise.
5091         * target.h (builtin_vectorized_function): Add argument type
5092         argument.
5093         * config/i386/i386.c (ix86_builtin_vectorized_function): Handle
5094         extra argument, allow vectorizing of lrintf.
5095         * doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
5096         documentation of target hook.
5097
5098 2007-02-05  Hans-Peter Nilsson  <hp@axis.com>
5099
5100         PR target/30665
5101         * config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
5102         ("*andhi_clear", andu (casesi+45)): For size-changed operand where
5103         memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.
5104
5105 2007-02-05  Roger Sayle  <roger@eyesopen.com>
5106
5107         * fold-const.c (fold_unary) <REAL_PART>: Test for availability of
5108         BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
5109         <IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
5110         * builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
5111         before canonicalizing sincos to cexpi.
5112         (fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.
5113
5114 2007-02-05  Roger Sayle  <roger@eyesopen.com>
5115
5116         * config/alpha/alpha.c (alpha_add_builtins): New Helper function.
5117         Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
5118         (alpha_init_builtins): Use alpha_add_builtins to process tables.
5119
5120 2007-02-05  Roger Sayle  <roger@eyesopen.com>
5121
5122         * mips-tfile.c (initialize_init_file): Correct endianness test.
5123
5124 2007-02-05  Kazu Hirata  <kazu@codesourcery.com>
5125
5126         * config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
5127         the 'y' constraint.
5128
5129 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
5130
5131         * dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
5132         saves in a PARALLEL before the register assignments.
5133
5134 2007-02-05  Richard Sandiford  <richard@codesourcery.com>
5135
5136         * doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
5137         DWARF_FRAME_RETURN_COLUMN to be a general register.
5138         * dwarf2out.c (init_return_column_size): New function, split from...
5139         (expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
5140         DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
5141         to be nongeneral registers.
5142         * config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
5143         integer registers.
5144         (DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
5145         (DWARF_ALT_FRAME_RETURN_COLUMN): Define.
5146
5147 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
5148
5149         * cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
5150
5151 2007-02-04  Zdenek Dvorak <dvorakz@suse.cz>
5152
5153         * cfgloopmanip.c (loop_delete_branch_edge): Removed.
5154         (remove_path): Use can_remove_branch_p and remove_branch instead
5155         of loop_delete_branch_edge.
5156         * tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
5157         (tree_transform_and_unroll_loop): Remove dead branches immediately.
5158         Update profile using scale_dominated_blocks_in_loop.
5159         * cfghooks.c (can_remove_branch_p, remove_branch): New functions.
5160         * cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
5161         (can_remove_branch_p, remove_branch): Declare.
5162         * tree-cfg.c (tree_can_remove_branch_p): New function.
5163         (tree_cfg_hooks): Add tree_can_remove_branch_p.
5164         * cfgrtl.c (rtl_can_remove_branch_p): New function.
5165         (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
5166
5167 2007-02-05  Jan Hubicka  <jh@suse.cz>
5168
5169         PR middle-end/30696
5170         * ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
5171         nodes in cgraph, don't remove offline copy of the function.
5172
5173 2007-02-04  Jan Hubicka  <jh@suse.cz>
5174
5175         * tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
5176         vectors might cause maybe_lookup_element_for_expr to be called
5177         on non-sra-candidate.
5178
5179 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
5180
5181         * config/bfin/bfin-modes.def, config/bfin/bfin.c,
5182         config/bfin/bfin.md, config/bfin/predicates.md: Follow
5183         spelling conventions.
5184
5185 2007-02-04  Richard Guenther  <rguenther@suse.de>
5186
5187         PR middle-end/30636
5188         * fold-const.c (try_move_mult_to_index): Make sure to not
5189         overflow one dimension of a multi-dimensional array access.
5190
5191 2007-02-04  Jan Hubicka  <jh@suse.cz>
5192
5193         * passes.c (init_optimization_passes): Reindent.
5194
5195 2007-02-04  Jan Hubicka  <jh@suse.cz>
5196             Eric Botcazou  <ebotcazou@adacore.com>
5197
5198         * tree-optimize.c (has_abnormal_outgoing_edge_p): Move to...
5199         (execute_fixup_cfg): Break out the abnormal goto code.
5200         * tree-inline.c (has_abnormal_outgoing_edge_p): ...here.
5201         (make_nonlocal_label_edges): Move here from execute_fixup_cfg.
5202         (optimize_inline_calls): Call make_nonlocal_label_edges.
5203
5204 2007-02-04  Jan Hubicka  <jh@suse.cz>
5205
5206         * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Return
5207         true when something was changed.
5208         (rename_ssa_copies): When something was changed, do
5209         TODO_remove_unused_locals.
5210         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
5211         add TODO_remove_unused_locals when instruction was removed.
5212
5213 2007-02-04  Jan Hubicka  <jh@suse.cz>
5214
5215         * ipa-inline.c (try_inline): Improve debug output; work on already
5216         inline edges too.
5217         (cgraph_decide_inlining_incrementally): Indent; improve debug output;
5218         call try_inline for already inlined edges too when flattening;
5219         inline also functions that make callee growth but overall unit size
5220         reduce.
5221
5222 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
5223
5224         * config/m32c/bitops.md, config/m32c/jump.md,
5225         config/m32c/m32c.c, config/m32c/m32c.h, config/m32r/m32r.c,
5226         config/m32r/m32r.h, config/m32r/m32r.md,
5227         config/m32r/predicates.md, config/m68hc11/larith.asm,
5228         config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
5229         config/m68k/m68k.h, config/mcore/mcore.md, config/mips/4k.md,
5230         config/mips/mips-protos.h, config/mips/mips.c,
5231         config/mips/mips.h, config/mips/mips.md, config/mips/mips16.S,
5232         config/mn10300/mn10300.h, config/mn10300/predicates.md,
5233         config/mt/mt.c, config/mt/mt.h, config/mt/mt.md: Follow
5234         spelling conventions.
5235
5236         * config/v850/v850.c, config/v850/v850.h, config/v850/v850.md:
5237         Follow spelling conventions.
5238
5239 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
5240
5241         * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
5242         warn about C++0x compatibility.
5243
5244 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
5245
5246         * config/h8300/h8300.c, config/h8300/h8300.h,
5247         config/h8300/h8300.md: Follow spelling conventions.
5248
5249 2007-02-03  Uros Bizjak  <ubizjak@gmail.com>
5250
5251         PR middle-end/30667
5252         * combine.c (try_combine): Do not substitute source operand
5253         with constants wider than 2 * HOST_BITS_PER_WIDE_INT.
5254
5255 2007-02-03  Jan Hubicka  <jh@suse.cz>
5256
5257         PR gcov-profile/30650
5258         * value-prof.c (stringop_block_profile): Fix handling of size counter;
5259         do not divide by zero for never executed counters.
5260         (tree_find_values_to_profile): Fix counters.
5261         * gcov-ui.h (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): Fix comments.
5262
5263 2007-02-03  Ian Lance Taylor  <iant@google.com>
5264
5265         * lower-subreg.c (simple_move_operand): New static function,
5266         broken out of simple_move.  Reject LABEL_REF, SYMBOL_REF, and HIGH
5267         operands.
5268         (simple_move): Call simple_move_operand.
5269         (find_decomposable_subregs): Add special handling of MEMs.
5270         (can_decompose_p): Rename from cannot_decompose_p.  Reverse
5271         meaning of return value.  If we see a hard register, test whether
5272         it can store a word_mode value.  Change all callers.
5273
5274 2007-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5275
5276         * pa.md (addvdi3, addvsi3, subvdi3, subvsi3, negvdi2, negvsi2): New
5277         ftrapv insns and expanders.
5278         (subdi3): Change define_expand operand 1 to arith11_operand, and
5279         operand 2 to reg_or_0_operand.  Change constraints of 64-bit insn
5280         pattern to handle reg_or_0 operands.  Revise 32-bit insn pattern to
5281         handle 11-bit constants and reg_or_0 operands in operands 1 and 2,
5282         respectively.
5283
5284         PR middle-end/30174
5285         * varasm.c (notice_global_symbol): Treat global objects as weak when
5286         flag_shlib is true.
5287
5288 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5289
5290         * emit-rtl.c (dconstpi): Delete.
5291         (dconstsqrt2): New.
5292         (init_emit_once): Delete dconstpi and init dconstsqrt2.
5293         * real.h (dconstpi): Delete.
5294         (dconstsqrt2): New.
5295         * builtins.c (fold_builtin_cabs): Use dconstsqrt2.
5296         (fold_builtin_hypot): Likewise.
5297
5298 2007-02-03  Tom Tromey  <tromey@redhat.com>
5299
5300         PR driver/30246
5301         * gcc.c (cpp_unique_options): Any of -ggdb3, -gstabs3,
5302         -gcoff3, -gxcoff3, -gvms3 implies -dD.
5303
5304 2007-02-03  Kazu Hirata  <kazu@codesourcery.com>
5305
5306         * c-decl.c, config/avr/avr.c, config/avr/avr.h,
5307         config/m68k/m68k.c, config/m68k/netbsd-elf.h,
5308         config/mn10300/mn10300.c, config/pdp11/pdp11.h,
5309         config/rs6000/cell.md, config/rs6000/darwin.h,
5310         config/sh/sh.md, config/sh/sh4-300.md, config/spu/spu.c,
5311         config/spu/spu.md, cselib.c, expr.c, haifa-sched.c, hwint.h,
5312         jump.c, reload.c, sched-deps.c, sched-int.h, tree-inline.c,
5313         tree-profile.c, tree-ssa-live.h, tree-vrp.c: Fix comment
5314         typos.  Follow spelling conventions.
5315         * doc/invoke.texi: Follow spelling conventions.
5316
5317 2007-02-03  Roger Sayle  <roger@eyesopen.com>
5318
5319         * simplify-rtx.c (simplify_relational_operation_1): Implement some
5320         canonicalization transformations that attempt to simplify integer
5321         constant comparisons to become comparisons against zero.
5322
5323 2007-02-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5324
5325         * builtins.c (fold_builtin_cabs): Fold cabs(x+xi) into
5326         fabs(x)*sqrt(2).
5327         * fold-const.c (fold_binary): Fix comment typos.  Fold complex
5328         (x,0)-(0,y) into (x,-y).  Likewise (0,y)-(x,0) into (-x,y).
5329
5330 2007-02-02  Mike Stump  <mrs@apple.com>
5331
5332         * config/darwin9.h (DARWIN_LINKER_GENERATES_ISLANDS): Add.
5333         * config/rs6000/rs6000.c (DARWIN_GENERATE_ISLANDS): Add.
5334         (output_call): Use DARWIN_GENERATE_ISLANDS to decide when to
5335         generate a branch island.
5336
5337 2007-02-02  Bob Wilson  <bob.wilson@acm.org>
5338
5339         * config/xtensa/xtensa.c (smalloffset_mem_p): Use BASE_REG_P.
5340         (xtensa_legitimate_address_p): New.
5341         (xtensa_legitimize_address): New.
5342         (xtensa_output_addr_const_extra): New.
5343         * config/xtensa/xtensa.h (REG_OK_STRICT_FLAG): Define.
5344         (BASE_REG_P): New.
5345         (REG_OK_FOR_BASE_P): Use BASE_REG_P.
5346         (GO_IF_LEGITIMATE_ADDRESS): Move code to xtensa_legitimate_address_p.
5347         (LEGITIMIZE_ADDRESS): Move code to xtensa_legitimize_address.
5348         (OUTPUT_ADDR_CONST_EXTRA): Move code to xtensa_output_addr_const_extra.
5349         * config/xtensa/xtensa-protos.h (xtensa_legitimate_address_p): New.
5350         (xtensa_legitimize_address): New.
5351         (xtensa_output_addr_const_extra): New.
5352
5353 2007-02-02  Steve Ellcey  <sje@cup.hp.com>
5354
5355         * config/ia64/ia64.c (ia64_print_operand): Fix compare strings.
5356
5357 2007-02-02  Ian Lance Taylor  <iant@google.com>
5358
5359         * expmed.c (expand_divmod): Add comment.
5360
5361 2007-02-02  Kazu Hirata  <kazu@codesourcery.com>
5362
5363         * emit-rtl.c (renumber_insns): Remove.
5364         * flags.h: Remove the extern for flag_renumber_insns.
5365         * rtl.h: Remove the prototype for renumber_insns.
5366         * toplev.c (flag_renumber_insns): Remove.
5367
5368 2007-02-02  Hui-May Chang  <hm.chang@apple.com>
5369
5370         Revert for x86 darwin:
5371         2005-06-19  Uros Bizjak  <uros@kss-loka.si>
5372
5373         * config/i386/i386.c (ix86_function_arg_regno_p): Put back the
5374         code before the following patch under TARGET_MACHO.
5375         (ix86_function_value_regno_p): Likewise.
5376
5377 2007-02-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5378
5379         * fold-const.c (negate_expr_p, fold_negate_expr): Handle
5380         COMPLEX_EXPR.
5381
5382 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5383
5384         PR target/29682
5385         * config/ia64/ia64.c (ia64_speculate_insn): Restrict to memory loads to
5386         general or fp registers.  Add comments.
5387         * config/ia64/ia64.md (reg_pred_prefix): Add comment.
5388
5389 2007-02-02  Paolo Bonzini  <bonzini@gnu.org>
5390
5391         * pointer-set.c (insert_aux): Only return insertion slot.
5392         (pointer_set_insert): Adjust.
5393         (pointer_set_traverse, struct pointer_map_t, pointer_map_create,
5394         pointer_map_destroy, pointer_map_insert, pointer_map_contains,
5395         pointer_map_traverse): New.
5396         * pointer-set.h (pointer_set_traverse, struct pointer_map_t,
5397         pointer_map_create,  pointer_map_destroy, pointer_map_insert,
5398         pointer_map_contains, pointer_map_traverse): Declare.
5399
5400 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
5401
5402         PR middle-end/30473
5403         * builtins.c (fold_builtin_sprintf): Do not attempt to optimize
5404         sprintf (str, "%s").  Do not optimize sprintf (str, "nopercent", p++).
5405
5406 2007-02-02  Maxim Kuvyrkov  <mkuvyrkov@ispras.ru>
5407
5408         * sched-int.h (ds_to_dk, dk_to_ds): Declare functions.
5409
5410         (struct _dep): New type.
5411         (dep_t): New typedef.
5412         (DEP_PRO, DEP_CON, DEP_KIND): New access macros.
5413         (DEP_STATUS): New access macro.  The macro with the same name was
5414         renamed to DEP_LINK_STATUS.
5415         (dep_init): Declare function
5416
5417         (struct _dep_link): New type.
5418         (dep_link_t): New typedef.
5419         (DEP_LINK_NODE, DEP_LINK_NEXT, DEP_LINK_PREV_NEXTP): New access macros.
5420         (DEP_LINK_DEP, DEP_LINK_PRO, DEP_LINK_CON, DEP_LINK_KIND): New macros.
5421         (DEP_LINK_STATUS): New macro.
5422         (debug_dep_links): New debug function.
5423
5424         (struct _deps_list): New type.
5425         (deps_list_t): New typedef.
5426         (DEPS_LIST_FIRST): New access macro.
5427         (FOR_EACH_DEP_LINK): New cycle macro.
5428         (create_deps_list, free_deps_list, delete_deps_list): Declare
5429         functions.
5430         (deps_list_empty_p, debug_deps_list, add_back_dep_to_deps_list): Ditto.
5431         (find_link_by_pro_in_deps_list, find_link_by_con_in_deps_list): Ditto.
5432         (copy_deps_list_change_con): Ditto.
5433
5434         (move_dep_link): Declare function.
5435
5436         (struct _dep_node): New type.
5437         (dep_node_t): New typedef.
5438         (DEP_NODE_BACK, DEP_NODE_DEP, DEP_NODE_FORW): New access macros.
5439
5440         (struct haifa_insn_data.back_deps): New field to hold backward
5441         dependencies of the insn.
5442         (struct haifa_insn_data.depend): Rename to forw_deps.  Change its type
5443         to deps_list_t.
5444         (struct haifa_insn_data.resolved_deps): Rename to resolved_back_deps.
5445         Change its type to deps_list_t.
5446         (INSN_BACK_DEPS): New access macro to use instead of LOG_LINKS.
5447         (INSN_DEPEND): Rename to INSN_FORW_DEPS.
5448         (RESOLVED_DEPS): Rename to INSN_RESOLVED_BACK_DEPS.
5449
5450         (INSN_COST): Move to haifa-sched.c.  Use insn_cost () instead.
5451
5452         (DEP_STATUS): Rename to DEP_LINK_STATUS.  Fix typo in the comment.
5453
5454         (add_forw_dep, delete_back_forw_dep, insn_cost): Update declaration and
5455         all callers.
5456         (dep_cost): Declare.
5457
5458         * sched-deps.c (CHECK): New macro to (en/dis)able sanity checks.
5459         (ds_to_dk, dk_to_ds): New functions.
5460
5461         (init_dep_1): New static function.
5462         (init_dep): New function.
5463         (copy_dep): New static function.
5464
5465         (dep_link_consistent_p, attach_dep_link, add_to_deps_list): New static
5466         functions.
5467         (detach_dep_link): New static function.
5468         (move_dep_link): New function.
5469
5470         (dep_links_consistent_p, dump_dep_links): New static functions.
5471         (debug_dep_links): New debugging function.
5472
5473         (deps_obstack, dl_obstack, dn_obstack): New static variables.
5474
5475         (alloc_deps_list, init_deps_list): New static functions.
5476         (create_deps_list): New function.
5477         (clear_deps_list): New static function.
5478         (free_deps_list, delete_deps_list, deps_list_empty_p): New functions.
5479         (deps_list_consistent_p, dump_deps_list): New static functions.
5480         (debug_deps_list): New function.
5481         (add_back_dep_to_deps_list, find_link_by_pro_in_deps_list): New
5482         functions.
5483         (find_link_by_con_in_deps_list, copy_deps_list_change_con): Ditto.
5484
5485         (maybe_add_or_update_back_dep_1, add_or_update_back_dep_1): Update to
5486         use new scheduler dependencies lists.
5487         (add_back_dep, delete_all_dependences, fixup_sched_groups): Ditto.
5488         (sched_analyze): Ditto.  Initialize dependencies lists.
5489         (add_forw_dep, compute_forward_dependences): Update to use new
5490         scheduler dependencies lists.
5491
5492         (init_dependency_caches): Init deps_obstack.
5493         (free_dependency_caches): Free deps_obstack.
5494
5495         (adjust_add_sorted_back_dep, adjust_back_add_forw_dep): Update to use
5496         new scheduler dependencies lists.
5497         (delete_forw_dep, add_or_update_back_forw_dep): Ditto.
5498         (add_back_forw_dep, delete_back_forw_dep): Ditto.
5499
5500         * sched-rgn.c (set_spec_fed, find_conditional_protection, is_pfree):
5501         Update to use new scheduler dependencies lists.
5502         (is_conditionally_protected, is_prisky, add_branch_dependences): Ditto.
5503         (debug_dependencies): Ditto.
5504         (schedule_region): Update comments.
5505
5506         * sched-ebb.c (earliest_block_with_similiar_load): Update to use new
5507         scheduler dependencies lists.
5508         (schedule_ebb): Update comments.
5509
5510         * rtl.def (DEPS_LIST): Remove.
5511
5512         * lists.c (unused_deps_list): Remove.
5513         (free_list): Update assertions.
5514
5515         (alloc_DEPS_LIST, free_DEPS_LIST_list, free_DEPS_LIST_node): Remove.
5516         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
5517
5518         * rtl.h (free_DEPS_LIST_list, alloc_DEPS_LIST): Remove declarations.
5519         (remove_free_DEPS_LIST_elem, copy_DEPS_LIST_list): Ditto.
5520
5521         * haifa-sched.c (comments): Update.
5522         (insn_cost1): Remove.  Inline the code into insn_cost ().
5523         (insn_cost): Update to use new scheduler dependencies lists.  Move
5524         processing of the dependency cost to dep_cost ().
5525         (dep_cost): New function.  Use it instead of insn_cost () when
5526         evaluating cost of the dependency.  Use compatible interface to
5527         interact with the target.
5528         (priority): Update to use new scheduler dependencies lists.
5529         (rank_for_schedule): Ditto.  Optimize heuristic that prefers the insn
5530         with greater number of insns that depend on the insn.
5531         (schedule_insn): Update to use new scheduler dependencies lists.  Add
5532         code to free backward dependencies lists.  Inline and optimize code
5533         from resolve_dep () - see PR28071.
5534         (ok_for_early_queue_removal): Update to use new scheduler dependencies
5535         lists.  Update call to targetm.sched.is_costly_dependence hook.
5536
5537         (fix_inter_tick, try_ready, fix_tick_ready): Update to use new
5538         scheduler dependencies lists.
5539
5540         (resolve_dep): Remove.  Move the logic to schedule_insn ().
5541         (init_h_i_d): Initialize dependencies lists.
5542
5543         (process_insn_depend_be_in_spec): Rename to
5544         process_insn_forw_deps_be_in_spec.  Update to use new scheduler
5545         dependencies lists.
5546         (add_to_speculative_block, create_check_block_twin, fix_recovery_deps):
5547         Update to use new scheduler dependencies lists.
5548         (clear_priorities, calc_priorities, add_jump_dependencies): Ditto.
5549
5550         * ddg.c (create_ddg_dependence, create_ddg_dep_no_link): Update to use
5551         new scheduler dependencies lists.
5552         (build_intra_loop_deps): Ditto.
5553
5554         * target.h (struct _dep): Declare to use in
5555         gcc_target.sched.is_costly_dependence.
5556         (struct gcc_target.sched.adjust_cost): Fix typo.
5557         (struct gcc_target.sched.is_costly_dependence): Change signature to use
5558         single dep_t parameter instead of an equivalent triad.
5559         (struct gcc_target.sched.adjust_cost_2): Remove.
5560
5561         * target-def.h (TARGET_SCHED_ADJUST_COST_2): Remove.
5562
5563         * reg-notes.def (DEP_TRUE, DEP_OUTPUT, DEP_ANTI): Update comments.
5564
5565         * doc/tm.texi (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Update
5566         documentation.
5567         (TARGET_SCHED_ADJUST_COST_2): Remove documentation.
5568
5569         * doc/rtl.texi (LOG_LINKS): Remove part about instruction scheduler.
5570         (REG_DEP_TRUE): Document.
5571
5572         * config/ia64/ia64.c (ia64_adjust_cost_2): Rename to ia64_adjust_cost.
5573         Change signature to correspond to the targetm.sched.adjust_cost hook.
5574         Update use in TARGET_SCHED_ADJUST_COST_2.
5575         (TARGET_SCHED_ADJUST_COST_2): Rename to TARGET_SCHED_ADJUST_COST.
5576         (ia64_dependencies_evaluation_hook, ia64_dfa_new_cycle): Update to use
5577         new scheduler dependencies lists.
5578         (ia64_gen_check): Ditto.
5579
5580         * config/mips/mips.c (vr4130_swap_insns_p): Update to use new scheduler
5581         dependencies lists.
5582
5583         * config/rs6000/rs6000.c (rs6000_is_costly_dependence): Change
5584         signature to correspond to the targetm.sched.is_costly_dependence hook.
5585         (is_costly_group): Update to use new scheduler dependencies lists.
5586
5587         * config/spu/spu.c (spu_sched_adjust_cost): Use insn_cost () function
5588         instead of INSN_COST () macro.
5589
5590 2007-02-01  Ian Lance Taylor  <iant@google.com>
5591
5592         * lower-subreg.c (resolve_clobber): Handle a subreg of a concatn.
5593
5594 2007-02-01  Guy Martin  <gmsoft@gentoo.org>
5595
5596         * pa.md (tp_load): Correct mfctl instruction syntax.
5597
5598 2007-02-01  Geoffrey Keating  <geoffk@apple.com>
5599
5600         * config/rs6000/rs6000.c (rs6000_stack_info): Correct
5601         altivec_padding_size calculation on AIX.  Improve comment, add
5602         assert to verify that it's right.
5603
5604         * config/rs6000/darwin.h (MD_UNWIND_SUPPORT): Don't define for
5605         64-bit.
5606
5607 2007-2-01  Seongbae Park  <seongbae.park@gmail.com>
5608
5609         PR inline-asm/28686
5610         * global.c (global_alloc): Add mising initialization of
5611         ELIMINABLE_REGSET.
5612
5613 2007-02-01  Roger Sayle  <roger@eyesopen.com>
5614
5615         * alias.c (init_alias_analysis): Correct whitespace.
5616         * bb-reorder.c (fix_edges_for_rarely_executed_code,
5617         partition_hot_cold_basic_blocks): Likewise.
5618         * builtins.c (expand_builtin_printf, expand_builtin_fprintf,
5619         expand_builtin_sprintf, fold_builtin_carg, fold_builtin_sprintf,
5620         maybe_emit_sprintf_chk_warning, fold_builtin_sprintf_chk,
5621         fold_builtin_snprintf_chk, fold_builtin_printf,
5622         fold_builtin_fprintf, do_mpfr_ckconv, do_mpfr_arg1, do_mpfr_arg2,
5623         do_mpfr_arg3, do_mpfr_sincos): Likewise.
5624         * cfgcleanup.c (cleanup_cfg): Likewise.
5625         * cfgexpand.c (tree_expand_cfg): Likewise.
5626         * fold-const.c (fold_binary) <RDIV_EXPR>: Likewise.
5627         * function.c (get_next_funcdef_no): Likewise.
5628         * gengtype.c (main): Likewise.
5629         * genmodes.c (main): Likewise.
5630         * gcse.c (bypass_conditional_jumps, print_ldst_list): Likewise.
5631         * haifa-sched.c (schedule_block, extend_h_i_d): Likewise.
5632         * ifcvt.c (noce_emit_move_insn): Likewise.
5633         * modulo-sched.c (generate_prolog_epilog, sms_schedule_by_order):
5634         Likewise.
5635         * stor-layout.c (get_best_mode): Likewise.
5636         * tree-ssa-loop-niter.c (get_val_for): Likewise.
5637         * tree-ssa-structalias.c (get_varinfo, get_varinfo_fc,
5638         scc_visit, do_ds_constraint, do_complex_constraint, label_visit,
5639         perform_var_substitution, solve_graph): Likewise.
5640         * tree-vrp.c (vrp_finalize): Likewise.
5641
5642 2007-02-01  Ian Lance Taylor  <iant@google.com>
5643
5644         * lower-subreg.c (simplify_gen_subreg_concatn): If we ask for the
5645         high part of a paradoxical subreg, return a constant zero.
5646
5647 2007-02-01  Zdenek Dvorak <dvorakz@suse.cz>
5648
5649         * toplev.c (lang_dependent_init): Call init_set_costs.
5650         * loop-init.c (loop_optimizer_init): Do not call init_set_costs.
5651
5652 2007-02-01  Richard Guenther  <rguenther@suse.de>
5653
5654         PR middle-end/30656
5655         * fold-const.c (fold_negate_expr): Allow negating a
5656         constant if overflow does not change.
5657
5658 2007-02-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
5659
5660         * doc/c-tree.texi (Expression trees): Improve markup.
5661         * doc/tm.texi (Register Classes, Addressing Modes)
5662         (Floating Point): Fix spacing after abbreviations.  Fix some
5663         typos.
5664
5665 2007-02-01  Ben Elliston  <bje@au.ibm.com>
5666
5667         * doc/invoke.texi: Replace "bugfix" with "bug fix" throughout.
5668         * doc/contrib.texi: Likewise.
5669         * doc/install.texi: Likewise.
5670
5671 2007-01-31  Richard Henderson  <rth@redhat.com>
5672             Ian Lance Taylor  <iant@google.com>
5673
5674         * lower-subreg.c: New file.
5675         * rtl.def (CONCATN): Define.
5676         * passes.c (init_optimization_passes): Add pass_lower_subreg and
5677         pass_lower_subreg2.
5678         * emit-rtl.c (update_reg_offset): New static function, broken out
5679         of gen_rtx_REG_offset.
5680         (gen_rtx_REG_offset): Call update_reg_offset.
5681         (gen_reg_rtx_offset): New function.
5682         * regclass.c: Revert patch of 2006-03-05, restoring
5683         reg_scan_update.
5684         (clear_reg_info_regno): New function.
5685         * dwarf2out.c (concatn_loc_descriptor): New static function.
5686         (loc_descriptor): Handle CONCATN.
5687         * common.opt (fsplit_wide_types): New option.
5688         * opts.c (decode_options): Set flag_split_wide_types when
5689         optimizing.
5690         * timevar.def (TV_LOWER_SUBREG): Define.
5691         * rtl.h (gen_reg_rtx_offset): Declare.
5692         (reg_scan_update): Declare.
5693         * regs.h (clear_reg_info_regno): Declare.
5694         * tree-pass.h (pass_lower_subreg): Declare.
5695         (pass_lower_subreg2): Declare.
5696         * doc/invoke.texi (Option Summary): List -fno-split-wide-types.
5697         (Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
5698         -fsplit-wide-types.
5699         * doc/rtl.texi (Regs and Memory): Document concat and concatn.
5700         * Makefile.in (OBJS-common): Add lower-subreg.o.
5701         (lower-subreg.o): New target.
5702
5703 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
5704
5705         * config/sh/sh.h (HAVE_SECONDARY_RELOADS): Remove.
5706
5707 2007-01-31  Anatoly Sokolov <aesok@post.ru>
5708
5709         PR target/19087
5710         * config/avr/avr.c (DWARF2_ADDR_SIZE): Define.
5711
5712 2007-01-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5713
5714         PR middle-end/29335
5715         * builtins.c (fold_builtin_sqrt): Use MPFR for constant args.
5716
5717 2007-01-31  Zdenek Dvorak <dvorakz@suse.cz>
5718
5719         * cfgloop.h: Include vec-prim.h.
5720         (enum li_flags): Remove LI_ONLY_OLD.
5721         (loop_iterator): Changed.
5722         (fel_next, fel_init): Iterate over loop tree.
5723         (FOR_EACH_LOOP_BREAK): New macro.
5724         * loop-unswitch.c (unswitch_loops): Do not pass LI_ONLY_OLD to
5725         FOR_EACH_LOOP.
5726         * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Ditto.
5727         * modulo-sched.c (sms_schedule): Ditto.
5728         * tree-vectorizer.c (vectorize_loops): Ditto.
5729         * doc/loop.texi: Update information on loop numbering and behavior of
5730         FOR_EACH_LOOP wrto new loops.
5731         * tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
5732         add_to_evolution_1): Test nestedness of loops instead of comparing
5733         their numbers.
5734         * tree-chrec.c (chrec_fold_plus_poly_poly,
5735         chrec_fold_multiply_poly_poly, chrec_evaluate,
5736         hide_evolution_in_other_loops_than_loop, chrec_component_in_loop_num,
5737         reset_evolution_in_loop): Ditto.
5738         * Makefile.in (CFGLOOP_H): Add vecprim.h dependency.
5739
5740 2007-01-31  Dirk Mueller  <dmueller@suse.de>
5741
5742         * c-common.c (warn_about_parentheses): Separate warning about
5743         un-parenthized sequence of comparison operators from the one
5744         which is supposed to warn about x <= y <= z.
5745
5746 2007-01-31  Uros Bizjak  <ubizjak@gmail.com>
5747
5748         * optabs.h (enum optab_index): Add new OTI_isinf.
5749         (isinf_optab): Define corresponding macro.
5750         * optabs.c (init_optabs): Initialize isinf_optab.
5751         * genopinit.c (optabs): Implement isinf_optab using isinf?f2
5752         patterns.
5753         * builtins.c (mathfn_built_in): Handle BUILT_IN_ISINF{,F,L}.
5754         (expand_builtin_interclass_mathfn): Expand BUILT_IN_ISINF{,F,L}
5755         using isinf_optab.
5756         (expand_builtin): Expand BUILT_IN_ISINF{,F,L} using
5757         expand_builtin_interclass_mathfn.
5758         * reg_stack.c (subst_stack_regs_pat): Handle UNSPEC_FXAM.
5759         * config/i386/i386.md (UNSPEC_FXAM): New constant.
5760         (fxam<mode>2_i387): New insn pattern.
5761         (isinf<mode>2) New expander to implement isinf, isinff and isinfl
5762         built-in functions as x87 inline asm.
5763
5764 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
5765
5766         * gcc/config/arm/unwind-arm.h (_sleb128_t, _uleb128_t): New.
5767
5768 2007-01-30  Eric Christopher  <echristo@apple.com>
5769
5770         * config.gcc: Add geode.
5771
5772 2007-01-31  Kazu Hirata  <kazu@codesourcery.com>
5773
5774         * cgraphunit.c, config/arm/arm.c, config/m68k/m68k.c,
5775         ipa-inline.c, tree-profile.c, tree-ssa-live.c,
5776         tree-ssa-math-opts.c, tree-ssanames.c, tree-vect-analyze.c,
5777         value-prof.c: Fix comment typos.
5778
5779 2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5780
5781         PR c++/24745
5782         * doc/invoke.texi (Wpointer-arith): Document warning.
5783
5784 2007-01-30  Janis Johnson  <janis187@us.ibm.com>
5785
5786         * doc/extend.texi (Decimal Floating Types): Remove decfloat.h from
5787         the list of discrepancies from the draft TR.
5788
5789 2007-01-30  Dirk Mueller  <dmueller@suse.de>
5790
5791         PR c++/30601
5792         * doc/invoke.texi (-Wreturn-type): Update description to
5793         match new behavior.
5794
5795 2007-01-30  Richard Sandiford  <richard@codesourcery.com>
5796
5797         * cfgrtl.c (try_redirect_by_replacing_jump): Check only_sets_cc0_p.
5798
5799 2007-01-30  Uros Bizjak  <ubizjak@gmail.com>
5800
5801         * builtins.c (expand_builtin_int_interclass_roundingfn): New function
5802         to handle optabs that operate on floating point input argument and
5803         output to integer output.
5804         (expand_builtin_mathfn) [BUILT_IN_ILOGB]: Move from here ...
5805         (expand_builtin_interclass_mathfn) [BUILT_IN_ILOGB]: ... to here.
5806         (expand_builtin): Expand BUILT_IN_ILOGB{,F,L} using
5807         expand_builtin_interclass_mathfn ().
5808         * config/i386/i386.md (fxtractxf3_i387): Rename from *fxtractxf3_i387.
5809         (ilogbsi2): Remove.
5810         (ilogbxf2, ilogb<mode>2): New expanders to implement ilogb, ilogbf and
5811         ilogbl built-in functions as x87 intrinsics.
5812
5813 2007-01-30  Richard Guenther  <rguenther@suse.de>
5814
5815         PR middle-end/27657
5816         * dwarf2out.c (reference_to_unused): Query varpool if the
5817         variable was output.
5818
5819 2007-01-30  Richard Guenther  <rguenther@suse.de>
5820
5821         PR middle-end/30313
5822         * passes.c (execute_one_pass): Reset in_gimple_form to not
5823         confuse non-unit-at-a-time mode.
5824
5825 2007-01-29  Roger Sayle  <roger@eyesopen.com>
5826             Richard Guenther  <rguenther@suse.de>
5827
5828         * fold-const.c (round_up): Make HIGH an unsigned HOST_WIDE_INT to
5829         avoid undefined behaviour on overflow.  Use force_fit_type_double
5830         to construct the constant with the specified TREE_OVERFLOW.
5831
5832 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
5833
5834         * config/dfp-bit.c: Add parameterized support for fp exceptions.
5835         * config/dfp-bit.h: Ditto.
5836
5837 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5838
5839         * c-decl.c (pop_scope): Replace warnings with call to
5840         warn_for_unused_label.
5841         * c-common.h (warn_for_unused_label): Declare.
5842         * c-common.c (warn_for_unused_label): Define.
5843
5844 2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
5845
5846         * tree-optimize.c (update_inlined_to_pointers): Delete unused
5847         function.
5848
5849 2007-01-29  Janis Johnson  <janis187@us.ibm.com>
5850
5851         * Makefile.in (USER_H): Remove decfloat.h.
5852         * ginclude/decfloat.h: Delete, moving contents to ...
5853         * ginclude/float.h: Add support for decimal floating point,
5854         guarded by __STDC_WANT_DEC_FP__.
5855
5856 2007-01-29  Mike Stump  <mrs@apple.com>
5857
5858         * doc/gccint.texi (Top): Rename Loop Representation to Loop
5859         Analysis and Representation to resolve case insensitive conflict.
5860         * doc/loop.texi (Loop Analysis and Representation): Likewise.
5861
5862 2007-01-28  Daniel Berlin  <dberlin@dberlin.org>
5863
5864         * tree.h (struct tree_memory_tag): Add aliases member.
5865         (MTAG_ALIASES): New macro.
5866         * tree-ssa-alias.c (alias_bitmap_obstack): New variable.
5867         (add_may_alias): Remove pointer-set. Update for may_aliases being
5868         a bitmap.
5869         (mark_aliases_call_clobbered): Update for may_aliases being a
5870         bitmap.
5871         (compute_tag_properties): Ditto.
5872         (create_partition_for): Ditto.
5873         (compute_memory_partitions): Ditto.
5874         (dump_may_aliases_for): Ditto.
5875         (is_aliased_with): Ditto.
5876         (add_may_alias_for_new_tag): Ditto.
5877         (rewrite_alias_set_for): Rewrite for may_aliases being a bitmap.
5878         (compute_is_aliased): New function.
5879         (compute_may_aliases): Call compute_is_aliased).
5880         (init_alias_info): Initialize alias_bitmap_obstack.
5881         (union_alias_set_into): New function.
5882         (compute_flow_sensitive_aliasing): Use union_aliases_into.
5883         (have_common_aliases_p): Rewrite to take two bitmaps and use
5884         intersection.
5885         (compute_flow_insensitive_aliasing): Stop using pointer-sets.
5886         Update for bitmaps.
5887         (finalize_ref_all_pointers): Update for add_may_alias changes.
5888         (new_type_alias): Ditto.
5889         * tree-flow-inline.h (may_aliases): Return a bitmap.
5890         * tree-dfa.c (dump_variable): Check for MTAG_P'ness.
5891         * tree-ssa.c (verify_flow_insensitive_alias_info): Update for
5892         may_aliases being a bitmap.
5893         * tree-flow.h (struct var_ann_d): Remove may_aliases member.
5894         may_aliases now returns a bitmap.
5895         * tree-ssa-structalias.c (merge_smts_into): Update for may_aliases
5896         being a bitmap.
5897         * tree-ssa-operands.c (add_virtual_operand): Update for
5898         may_aliases being a bitmap.
5899
5900 2007-01-29  Daniel Berlin  <dberlin@dberlin.org>
5901
5902         PR tree-optimization/30630
5903         * tree-ssa-structalias.c (do_complex_constraint): Mark correct
5904         variable as changed.
5905
5906 2007-01-29  Simon Martin  <simartin@users.sourceforge.net>
5907
5908         PR c++/28266
5909         * gimplify.c (gimplify_target_expr): Make sure that the TARGET_EXPR is
5910         expanded only once even if an error occurs.
5911
5912 2007-01-29  Ben Elliston  <bje@au.ibm.com>
5913
5914         * gcov-io.h (__gcov_indirect_call_profiler): Declare.
5915         (__gcov_average_profiler): Likewise.
5916         (__gcov_ior_profiler): Likewise.
5917         (__gcov_merge_ior): Likewise.
5918
5919 2007-01-28  Jan Hubicka  <jh@suse.cz>
5920
5921         * builtins.c (expand_builtin_memset): Fix typo in my last patch.
5922         * value-prof.c (stringop_block_profile): Likewise.
5923
5924 2007-01-28  Jan Hubicka  <jh@suse.cz>
5925
5926         * expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
5927         variant handling histograms; add wrapper.
5928         (clear_storage_via_libcall): Export.
5929         (emit_block_move_hints): Break out from ...; add histograms.
5930         (emit_block_move): ... this one.
5931         (clear_storage_hints): Break out from ...; add histograms.
5932         (clear_storage): ... this one.
5933         (set_storage_via_memset): Handle histogram.
5934         * expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
5935         (clear_storage_hints, clear_storage_via_libcall): Declare.
5936         (set_storage_via_setmem): Update prototype.
5937         * doc/md.texi (movmem, setmem): Document new arguments.
5938
5939         * value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
5940         new histograms.
5941         (stringop_block_profile): New global function.
5942         (tree_stringops_values_to_profile): Profile block size and alignment.
5943         * value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
5944         HIST_TYPE_IOR.
5945         (struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
5946         (stringop_block_profile): Declare.
5947         * builtins.c: Include value-prof.h.
5948         (expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
5949         * gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
5950         (GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
5951         (GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
5952         * profile.c (instrument_values): Add new counters.
5953         * cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
5954         calls.
5955         * tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
5956         (tree_init_edge_profiler): Build new profilers.
5957         (tree_gen_average_profiler, tree_gen_ior_profiler): New.
5958         (pass_tree_profile): Add dump.
5959         (tree_profile_hooks): Update.
5960         * Makefile.in (LIBGCOV): Add new constants.
5961         * libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
5962         __gcov_ior_profiler): New.
5963         * i386.md (movmem/setmem expanders): Add new optional arguments.
5964
5965 2007-01-28  David Edelsohn  <edelsohn@gnu.org>
5966
5967         * doc/md.texi (Standard Pattern Names): Document blockage pattern.
5968
5969 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
5970
5971         * tree-ssa-loop-unswitch.c: Include tree-inline.h.
5972         (tree_unswitch_single_loop): Pass eni_size_weights to
5973         tree_num_loop_insns.
5974         * tree-ssa-loop-manip.c: Include tree-inline.h.
5975         (can_unroll_loop_p): Pass eni_size_weights to
5976         tree_num_loop_insns.
5977         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p):
5978         Pass eni_size_weights to estimate_num_insns.
5979         * tree.h (init_inline_once): Export.
5980         * toplev.c (backend_init): Call init_inline_once.
5981         * cgraphunit.c (cgraph_process_new_functions,
5982         cgraph_analyze_function): Pass eni_inlining_weights to
5983         estimate_num_insns.
5984         * ipa-inline.c (compute_inline_parameters): Ditto.
5985         * tree-ssa-loop-ivcanon.c (tree_num_loop_insns): Pass weights
5986         to estimate_num_insns.
5987         (try_unroll_loop_completely): Pass eni_size_weights to
5988         tree_num_loop_insns.
5989         * tree-eh.c (decide_copy_try_finally): Pass eni_size_weights
5990         ot estimate_num_insns.
5991         * tree-ssa-loop-prefetch.c: Include tree-inline.h.
5992         (loop_prefetch_arrays): Pass eni_time_weights to tree_num_loop_insns.
5993         * tree-inline.c (eni_inlining_weights, eni_size_weights,
5994         eni_time_weights): New variables.
5995         (init_inline_once): Initialize them.
5996         (struct eni_data): Mew.
5997         (estimate_num_insns_1, estimate_num_insns): Use weights.
5998         * tree-inline.h (struct eni_weights_d): New.
5999         (eni_inlining_weights, eni_size_weights, eni_time_weights): Declare.
6000         (estimate_num_insns): Declaration changed.
6001         * cfgloop.h (tree_num_loop_insns): Declaration changed.
6002         * Makefile.in (tree-ssa-loop-unswitch.o, tree-ssa-loop-prefetch.o,
6003         tree-ssa-loop-manip.o): Add TREE_INLINE_H dependency.
6004
6005 2007-01-28  Zdenek Dvorak <dvorakz@suse.cz>
6006
6007         * tree-data-ref.c (conflict_fn): Assert that the number of affine
6008         relations in the conflict function is valid.
6009
6010 2007-01-27  Ian Lance Taylor  <iant@google.com>
6011
6012         * common.opt: Add fstrict-overflow.
6013         * opts.c (decode_options): Set flag_strict_overflow if -O2.
6014         * flags.h (TYPE_OVERFLOW_WRAPS): Define.
6015         (TYPE_OVERFLOW_UNDEFINED): Define.
6016         (TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
6017         Replace all uses.
6018         * tree.h (TYPE_TRAP_SIGNED): Don't define.
6019         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
6020         (fold_negate_expr): Likewise.
6021         (make_range): Likewise.
6022         (extract_muldiv_1): Likewise.
6023         (maybe_canonicalize_comparison): Likewise.
6024         (fold_comparison): Likewise.
6025         (fold_binary): Likewise.
6026         (tree_expr_nonnegative_p): Likewise.
6027         (tree_expr_nonzero_p): Likewise.
6028         * tree-vrp.c (compare_values): Likewise.
6029         (extract_range_from_binary_expr): Likewise.
6030         (extract_range_from_unary_expr): Likewise.
6031         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
6032         Likewise.
6033         (nowrap_type_p): Likewise.
6034         * tree-scalar-evolution.c (simple_iv): Likewise.
6035         * fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
6036         (build_range_check): Likewise.
6037         (extract_muldiv_1): Likewise.
6038         (fold_comparison): Likewise.
6039         * tree-vrp.c (vrp_int_const_binop): Likewise.
6040         (extract_range_from_unary_expr): Likewise.
6041         * convert.c (convert_to_integer): Likewise.
6042         * fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
6043         (fold_comparison): Likewise.
6044         (fold_binary): Likewise.
6045         * optabs.c (optab_for_tree_code): Likewise.
6046         * tree-vectorizer.c (vect_is_simple_reduction): Likewise.
6047         * simplify-rtx.c (simplify_const_relational_operation): Check
6048         flag_strict_overflow and flag_trapv.
6049         (simplify_const_relational_operation): Likewise.
6050         * doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
6051         (Optimize Options): Add -fstrict-overflow to -O2 list.  Document
6052         -fstrict-overflow.
6053
6054 2007-01-27  Roger Sayle  <roger@eyesopen.com>
6055
6056         * tree.c (tree_fold_gcd): Delete.
6057         * tree.h (tree_fold_gcd): Remove prototype.
6058         * tree-data-ref.c (tree_fold_divides_p): Don't use tree_fold_gcd to
6059         test whether one constant integer is a multiple of another.  Instead
6060         call int_const_binop with TRUNC_MOD_EXPR and test for a zero result.
6061         * fold-const.c (multiple_of_p):  We've determined both TOP and
6062         BOTTOM are integer constants so we can call int_const_binop directly
6063         instead of the more generic const_binop.
6064
6065 2007-01-27  Roger Sayle  <roger@eyesopen.com>
6066
6067         * fold-const.c (size_binop): In the fast-paths for X+0, 0+X, X-0 and
6068         1*X check that the constant hasn't overflowed, to preserve the
6069         TREE_OVERFLOW bit.
6070         (round_up): Provide an efficient implementation when rouding-up an
6071         INTEGER_CST to a power-of-two.
6072
6073 2007-01-28  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
6074
6075         * doc/sourcebuild.texi: Add comma for clarity.
6076         * doc/extend.texi: Fix some typos.
6077         * doc/passes.texi: Likewise.
6078         * doc/cppinternals.texi: Likewise.
6079         * doc/c-tree.texi: Likewise.
6080         * doc/tree-ssa.texi: Likewise.
6081         * doc/install.texi: Likewise.
6082
6083 2007-01-27  Jan Hubicka  <jh@suse.cz>
6084
6085         * tree-sra.c (sra_walk_function): Don't rely on aliases being build.
6086         (pass_sra): Do not require alias information.
6087         * passes.c (init_optimization_passes): Add SRA
6088
6089 2007-01-27  Steven Bosscher  <steven@gcc.gnu.org>
6090
6091         * tracer.c (rest_of_handle_tracer): We already cleaned
6092         up the CFG in tracer() so don't do it here again.
6093         * cfgcleanup.c (rest_of_handle_jump2): Don't repeat
6094         cleanup_cfg here, either.  And don't call renumber_insns.
6095
6096         * cfgrtl.c (rtl_verify_flow_info_1): Don't verify that BB_END
6097         and BB_HEAD are in the insn stream here.  Instead make sure
6098         that BB_INSN is valid on all insns.  Also, do check here that
6099         there are no pending branch predictions...
6100         (rtl_verify_flow_info): ...instead of doing it here.  Checks
6101         for BB_END and BB_HEAD moved from rtl_verify_flow_info_1 to
6102         here.
6103
6104 2007-01-26  Roger Sayle  <roger@eyesopen.com>
6105
6106         * config/i386/i386.c (ix86_swap_binary_operands_p): New helper
6107         function to simplify/factorize operand order canonicalization.
6108         (ix86_fixup_binary_operands): Reorganize using the above function.
6109         (ix86_binary_operator_ok): Likewise.
6110
6111 2007-01-27  Jakub Jelinek  <jakub@redhat.com>
6112
6113         * genattrtab.c (struct attr_value_list, insn_code_values): Move to
6114         file scope from optimize_attrs.
6115         (simplify_test_exp): If insn_code_values is not NULL, use it to speed
6116         up search.
6117         (optimize_attrs): Clear insn_code_values after freeing it.
6118
6119 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
6120
6121         * tree-ssa-address.c (create_mem_ref): Remove ", bsi" from
6122         a parts.base assignment.
6123
6124 2007-01-26  Zdenek Dvorak <dvorakz@suse.cz>
6125
6126         * tree-data-ref.c (dump_subscript): Use dump_conflict_function.
6127         (compute_subscript_distance, initialize_data_dependence_relation,
6128         finalize_ddr_dependent, analyze_ziv_subscript,
6129         analyze_siv_subscript_cst_affine,
6130         compute_overlap_steps_for_affine_univar,
6131         compute_overlap_steps_for_affine_1_2, analyze_subscript_affine_affine,
6132         analyze_siv_subscript, analyze_miv_subscript,
6133         analyze_overlapping_iterations, subscript_dependence_tester_1,
6134         compute_self_dependence, free_dependence_relation): Work
6135         with affine_fn instead of chrecs.
6136         (dump_affine_function, dump_conflict_function, affine_function_equal_p,
6137         common_affine_function, affine_function_base,
6138         affine_function_constant_p, affine_fn_op, affine_fn_plus,
6139         affine_fn_minus, affine_fn_free, conflict_fn_not_known,
6140         conflict_fn_no_dependence, free_conflict_function, free_subscripts,
6141         conflict_fn, affine_fn_cst, affine_fn_univar): New functions.
6142         (all_chrecs_equal_p): Removed.
6143         * tree-data-ref.h (affine_fn, conflict_function): New types.
6144         (struct subscript): Change type of conflicting_iterations_in_a
6145         and conflicting_iterations_in_b.
6146
6147 2007-01-26  Steve Ellcey  <sje@cup.hp.com>
6148
6149         PR other/30182
6150         * config/pa/pa.h (TARGET_HPUX_11): New.
6151         * config/pa/pa-hpux11.h (TARGET_HPUX_11): New.
6152         * config/pa/pa.c (pa_init_builtins): Use TARGET_HPUX_11.
6153
6154 2007-01-26  Daniel Berlin  <dberlin@dberlin.org>
6155         Richard Guenther  <rguenther@suse.de>
6156
6157         * tree-ssa-structalias.c (solve_graph): Handle case
6158         we merged the variable to another.
6159
6160 2007-01-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6161
6162         * builtins.c (fold_builtin_1): Treat ccos and ccosh as 'even'
6163         functions.
6164
6165         * fold-const.c (negate_mathfn_p): Treat casin, casinh, catan,
6166         catanh, cproj, csin, csinh, ctan and ctanh as 'odd' functions.
6167
6168 2007-01-25  DJ Delorie  <dj@redhat.com>
6169
6170         * config/m32c/m32c.c (m32c_cannot_change_mode_class): We don't
6171         allow changes to modes which don't fit in those registers.
6172
6173         * reload1.c (choose_reload_regs): Check for invalid subregs before
6174         computing their locations, not after.
6175
6176 2007-01-25  Geoffrey Keating  <geoffk@apple.com>
6177
6178         PR 25127
6179         * config/rs6000/rs6000.c (first_altivec_reg_to_save): On Darwin,
6180         save Altivec registers in an eh_return function.
6181         (compute_vrsave_mask): Likewise.
6182         (rs6000_stack_info): Correct AIX/Darwin stack alignment computation
6183         for saving Altivec registers.
6184         (rs6000_emit_prologue): Don't allocate stack twice in
6185         eh_return function.  Correct expected value of altivec_save_offset
6186         when using save_world.  Describe save of R0 to stack when using
6187         save_world.  Describe stack pointer adjustment when using
6188         save_world.  Remove duplicated eh_return parameter register saving.
6189         Update sp_offset variable after save_world.
6190         * config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA): Remove
6191         darwin-world.asm.
6192         (LIB2FUNCS_EXTRA): Add darwin-world.asm.
6193         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): -m64
6194         implies Altivec.
6195
6196 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
6197
6198         * config.gcc (ia64*-*-hpux*): Make posix threads the default.
6199
6200 2007-01-25  Steve Ellcey  <sje@cup.hp.com>
6201
6202         PR other/30182
6203         * config/pa/pa.c (pa_init_builtins): Set asm names for finite routines.
6204         * config/ia64/ia64.c (ia64_init_builtins):  Ditto.
6205
6206 2007-01-25  Richard Guenther  <rguenther@suse.de>
6207
6208         * doc/invoke.texi (-Wcoverage-mismatch): Document.
6209         * common.opt (-Wcoverage-mismatch): New warning option.
6210         * coverage.c (get_coverage_counts): Ignore coverage mismatch
6211         if -Wcoverage-mismatch is given.
6212
6213 2007-01-25  Razya Ladelsky  <razya@il.ibm.com>
6214
6215         * ipa-cp.c (ipcp_insert_stage, ipcp_driver): Support for SSA.
6216         (ipcp_driver): Change to static definition.
6217         Add dumping of the ifunctions.
6218         (constant_val_insert): Remove unused parameter. Support for SSA.
6219         (ipcp_propagate_const): Support for SSA.
6220         (ipcp_profile_bb_print): Print only analyzed nodes.
6221         (ipcp_replace_map_create): Remove support for Fortran constant
6222         for now.
6223         * ipa-prop.c (ipa_method_modify_stmt,
6224         ipa_callsite_compute_param): Support for SSA.
6225         * ipa-prop.h (ipcp_driver): Remove declaration.
6226         (IS_VALID_TREE_MAP_INDEX): Add define.
6227
6228 2007-01-24  Geoffrey Keating  <geoffk@apple.com>
6229
6230         * unwind-dw2.c (execute_stack_op): Handle DW_OP_swap.
6231
6232 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6233
6234         PR middle-end/30447
6235         * builtins.c (fold_builtin_cabs): Use MPFR to evaluate a
6236         constant argument to cabs and do it without checking for
6237         -funsafe-math-optimizations.
6238
6239 2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
6240
6241         * c-common.h (RID_FIRST_CXX0X): New.
6242         (RID_LAST_CXX0X): New.
6243         * c-opts.c (c_common_handle_option): -Wc++0x-compat is triggered
6244         by -Wall.
6245         * c.opt (Wc++0x-compat): New.
6246         * doc/invoke.texi (-Wc++0x-compat): Document.
6247
6248 2007-01-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6249
6250         * builtins.c (fold_builtin_carg): New.
6251         (fold_builtin_1): Use it.
6252
6253 2007-01-24  Jan Hubicka  <jh@suse.cz>
6254
6255         * ipa-inline.c (cgraph_decide_inlining): Initialize initial_insns.
6256
6257         * ipa-inline.c (initial_insns, max_insns): Delete.
6258         (compute_max_insns): New function.
6259         (cgraph_decide_inlining_of_small_function): Use it; take minimal amount
6260         of insns as base for code growth.
6261         (cgraph_decide_inlining): Make initial_insns local; do not compute
6262         max_insns.
6263         * params.def (PARAM_INLINE_UNIT_GROWTH): Set to 60.
6264         * doc/invoke.texi (inline-unit-growth): Update docs.
6265
6266 2007-01-24  Jakub Jelinek  <jakub@redhat.com>
6267
6268         * config/i386/i386.h (x86_cmpxchg16b): Remove const.
6269         (TARGET_CMPXCHG16B): Define to x86_cmpxchg16b.
6270         * config/i386/i386.c (x86_cmpxchg16b): Remove const.
6271         (override_options): Add PTA_CX16 flag.  Set x86_cmpxchg16b
6272         for CPUs that have PTA_CX16 set.
6273
6274         PR middle-end/27416
6275         * gimplify.c (omp_check_private): New function.
6276         (gimplify_scan_omp_clauses): Use it for
6277         firstprivate/lastprivate/reduction.
6278
6279         PR middle-end/30494
6280         * gimplify.c (omp_add_variable): Don't call omp_notice_variable
6281         on TYPE_SIZE_UNIT for GOVD_LOCAL VLAs.
6282
6283         PR middle-end/30421
6284         * omp-low.c (lower_omp_for_lastprivate): Add dlist argument.
6285         If lower_lastprivate_clauses emits some statements, append them
6286         to dlist rather than body_p and to body_p append an initializer.
6287         (lower_omp_for): Adjust caller.
6288
6289 2007-01-24  Steve Ellcey  <sje@cup.hp.com>
6290
6291         * target.h (globalize_decl_name): New.
6292         * target-def.h (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
6293         * output.h (default_globalize_decl_name): New.
6294         * varasm.c (asm_output_bss): Use globalize_decl_name instead of
6295         globalize_label.
6296         (globalize_decl): Ditto.
6297         (default_globalize_decl_name): New.
6298         * config/ia64/ia64.c (ia64_globalize_decl_name): New.
6299         (ia64_handle_version_id_attribute): New.
6300         (TARGET_ASM_GLOBALIZE_DECL_NAME): New.
6301         (ia64_asm_output_external): Use globalize_decl_name instead
6302         of globalize_label.
6303         * doc/extend.texi (version_id): New pragma.
6304         * doc/tm.texi (ARGET_ASM_GLOBALIZE_DECL_NAME): New target hook.
6305
6306 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6307
6308         * unwind-dw2-fde.c (get_cie_encoding): Replaced _Unwind_Word with
6309         _uleb128_t and _Unwind_SWord with _sleb128_t.
6310         * unwind-dw2.c (extract_cie_info, execute_stack_op, execute_cfa_program,
6311         uw_frame_state_for, uw_update_context_1): Likewise.
6312         * unwind-c.c (parse_lsda_header, PERSONALITY_FUNCTION): Likewise.
6313         * unwind-pe.h (read_uleb128, read_sleb128,
6314         read_encoded_value_with_base): Likewise.
6315         * unwind-generic.h: Define _sleb128_t and _uleb128_t types.
6316
6317 2007-01-24  Richard Guenther  <rguenther@suse.de>
6318
6319         * builtins.c (expand_builtin_cexpi): Get the fndecl
6320         for cexp in the correct way.
6321
6322 2007-01-24  Jan Hubicka  <jh@suse.cz>
6323
6324         * tree-ssa-dce.c (eliminate_unnecesary_stmts): Remove dead LHS of calls.
6325
6326 2007-01-24  Andreas Krebbel  <krebbel1@de.ibm.com>
6327
6328         * c-cppbuiltin.c (builtin_define_type_sizeof): New function.
6329         (c_cpp_builtins): New builtin macros: __SIZEOF_INT__, __SIZEOF_LONG__,
6330         __SIZEOF_LONG_LONG__, __SIZEOF_SHORT__, __SIZEOF_POINTER__,
6331         __SIZEOF_FLOAT__, __SIZEOF_DOUBLE__, __SIZEOF_LONG_DOUBLE__,
6332         __SIZEOF_SIZE_T__, __SIZEOF_WCHAR_T__, __SIZEOF_WINT_T__ and
6333         __SIZEOF_PTRDIFF_T__.
6334         * doc/cpp.texi: Documentation for the new builtin macros added.
6335
6336 2007-01-24  Uros Bizjak  <ubizjak@gmail.com>
6337
6338         * config/i386/i386.md (tanxf2, tan<mode>2, atan<mode>2, log<mode>2,
6339         log10<mode>2, log2<mode>2, expxf2, exp10xf2, exp2xf2): Use op2
6340         instead of operands[2] to avoid access past the end of array.
6341
6342 2007-01-24  Richard Sandiford  <richard@codesourcery.com>
6343
6344         * reload1.c (emit_reload_insns): Pass the reload register
6345         for a non-spill output reload through forget_old_reloads_1.
6346
6347 2007-01-23  Joseph Myers  <joseph@codesourcery.com>
6348
6349         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
6350         _SOFT_DOUBLE if doubles use software floating-point.
6351         * config/rs6000/libgcc-ppc-glibc.ver: Export additional long
6352         double functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
6353         * config/rs6000/darwin-ldouble.c: Also compile functions for
6354         hard-float without FPRs.  Use fmsub function for all __NO_FPRS__
6355         cases.  Compile extra functions if _SOFT_DOUBLE, not _SOFT_FLOAT.
6356         * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Remove
6357         commented-out long double override.
6358         (CPP_LONGDOUBLE_DEFAULT_SPEC): Likewise.
6359         * config/rs6000/eabispe.h: Likewise.
6360         * config/rs6000/rs6000.c (rs6000_override_options): Don't override
6361         long double for non-SPE.
6362         (rs6000_handle_option): Likewise.
6363         (invalid_e500_subreg): Disallow more subregs involding DImode,
6364         DFmode, TImode or TFmode.
6365         (rs6000_legitimate_offset_address_p): Check TFmode offsets for
6366         E500 double.
6367         (legitimate_lo_sum_address_p): Also check for TFmode for E500
6368         double.
6369         (rs6000_legitimize_address): Also handle TFmode for E500 double.
6370         (rs6000_legitimize_reload_address): Also handle TFmode for E500
6371         double.
6372         (rs6000_legitimate_address): Also check for TFmode for E500
6373         double.
6374         (rs6000_emit_move): Use DFmode subregs of TFmode for E500 double.
6375         (spe_build_register_parallel): Handle TFmode and TCmode.
6376         (rs6000_spe_function_arg): Handle TFmode and TCmode for E500
6377         double.
6378         (function_arg): Handle TFmode and TCmode for E500 double.
6379         (rs6000_init_libfuncs): Initialize extra libfuncs for soft double
6380         in general.
6381         (print_operand): Handle TFmode and TImode for %y.
6382         (rs6000_generate_compare): Handle TFmode comparisons for E500
6383         double.
6384         (spe_func_has_64bit_regs_p): Check for TFmode for E500 double.
6385         (rs6000_function_value): Handle TFmode and TCmode for E500 double.
6386         (rs6000_libcall_value): Handle TFmode and TCmode for E500 double.
6387         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Check for
6388         TFmode for E500 double.
6389         * config/rs6000/rs6000.md (FP): Allow TF for E500 double.
6390         (floatsidf2): Enable for E500 double.
6391         (movtf_softfloat): Use rs6000_nonimmediate_operand.
6392         (extenddftf2): Change to extenddftf2_fprs.
6393         (extenddftf2): Call gen_spe_extenddftf2 or gen_extenddftf2_fprs
6394         depending on TARGET_E500_DOUBLE.
6395         (extendsftf2): Enable for E500 double.
6396         (trunctfdf2): Enable for E500 double.
6397         (trunctfsf2): Change to trunctfsf2_fprs.
6398         (trunctfsf2): Call gen_spe_trunctfsf2 or gen_trunctfsf2_fprs
6399         depending on TARGET_E500_DOUBLE.
6400         (floatsitf2): Enable for E500 double.
6401         (fix_trunctfsi2): Change to fix_trunctfsi2_fprs.
6402         (fix_trunctfsi2): Call gen_spe_fix_trunctfsi2 or
6403         gen_fix_trunctfsi2_fprs depending on TARGET_E500_DOUBLE.
6404         (negtf2): Change to negtf2_internal.
6405         (negtf2): New expander.
6406         (abstf2): Enable for E500 double.  Call gen_spe_abstf2_tst,
6407         gen_spe_abstf2_cmp or gen_abstf2_internal depending on
6408         TARGET_E500_DOUBLE and flag_unsafe_math_optimizations.
6409         (movdi_internal32): Use rs6000_nonimmediate_operand.
6410         (unnamed splitter): Likewise.
6411         * config/rs6000/spe.md (CMPTFEQ_GPR, TSTTFEQ_GPR, CMPTFGT_GPR,
6412         TSTTFGT_GPR, CMPTFLT_GPR, TSTTFLT_GPR): New unspecs.
6413         (SPE64TF, DITI): New mode macros.
6414         (frob_df_di): Change to frob_<SPE64:mode>_<DITI:mode>; allow more
6415         modes.
6416         (frob_tf_ti): New.
6417         (frob_<mode>_di_2): New.
6418         (frob_tf_di_8_2): New.
6419         (frob_di_df): Change to frob_di_<mode>; allow more modes.
6420         (frob_ti_tf): New.
6421         (frob_di_df_2): Change to frob_<DITI:mode>_<SPE64:mode>_2; allow
6422         more modes.
6423         (frob_ti_<mode>_8_2): New.
6424         (frob_ti_tf_2): New.
6425         (mov_si<mode>_e500_subreg0, mov_si<mode>_e500_subreg0_2,
6426         mov_si<mode>_e500_subreg4, mov_si<mode>_e500_subreg4_2): Allow
6427         TFmode.
6428         (mov_sitf_e500_subreg8, mov_sitf_e500_subreg8_2,
6429         mov_sitf_e500_subreg12, mov_sitf_e500_subreg12_2): New.
6430         (spe_trunctfdf2_internal1, spe_trunctfsf2, spe_extenddftf2,
6431         spe_fix_trunctfsi2, spe_fix_trunctfsi2_internal,
6432         spe_negtf2_internal, spe_abstf2_cmp, spe_abstf2_tst): New.
6433         (cmptfeq_gpr, tsttfeq_gpr, cmptfgt_gpr, tsttfgt_gpr, cmptflt_gpr,
6434         tsttflt_gp): New.
6435
6436 2007-01-23  Ian Lance Taylor  <iant@google.com>
6437
6438         * Makefile.in (OBJS-common): Reformat, alphabetize, but put
6439         insn-*.o first.
6440         (OBJS-archive): Reformat, alphabetize.
6441         (OBJS): Change out_object_file to OBJS-md.
6442
6443 2007-01-23  Uros Bizjak  <ubizjak@gmail.com>
6444
6445         * config/i386/i386.md: Use REG_P, MEM_P, CONST_INT_P, LABEL_P,
6446         JUMP_P and CALL_P predicates where applicable.
6447         * config/i386/i386.c: Ditto.
6448         * config/i386/i386.md: Ditto.
6449         * config/i386/mmx.md: Ditto.
6450         * config/i386/predicates.md: Ditto.
6451
6452 2007-01-22  Andreas Schwab  <schwab@suse.de>
6453
6454         * config/m68k/m68k.h: Fix comment.
6455
6456 2007-01-22  Jan Hubicka  <jh@suse.cz>
6457
6458         * passes.c (init_optimization_passes): Do not rerun
6459         pass_early_warn_uninitialized.
6460
6461 2007-01-22  Richard Guenther  <rguenther@suse.de>
6462
6463         PR tree-optimization/30038
6464         * tree-ssa-math-opts.c (maybe_record_sincos): New static helper
6465         function.
6466         (execute_cse_sincos_1): Likewise.
6467         (execute_cse_sincos): Likewise.
6468         (gate_cse_sincos): Likewise.
6469         (pass_cse_sincos): New pass CSEing sin() and cos() calls using
6470         the cexpi() canonicalization of sincos().
6471         * tree-pass.h (pass_cse_sincos): Declare.
6472         * passes.c (init_optimization_passes): New pass pas_cse_sincos.
6473
6474 2007-01-21  Eric Botcazou  <ebotcazou@libertysurf.fr>
6475
6476         PR rtl-optimization/29329
6477         * combine.c (replaced_rhs_insn): Rename to i2mod.
6478         (replaced_rhs_value): Rename to i2mod_new_rhs.
6479         (i2mod_old_rhs): New global variable.
6480         (combine_instructions): Adjust for above change.  Save a copy of
6481         the old RHS into i2mod_old_rhs when the contents of a REG_EQUAL
6482         note are substituted in the second instruction.
6483         (distribute_notes) <REG_DEAD>: Adjust for above change.  Do not
6484         ditch the note if it pertains to the second eliminated register
6485         and this register is mentioned in i2mod_old_rhs.
6486
6487         Revert:
6488         2006-09-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
6489
6490         * combine.c (distribute_notes) <REG_DEAD>: Do not consider SETs past
6491         the insn to which the note was originally attached.
6492
6493 2007-01-21  Jan Hubicka  <jh@suse.cz>
6494
6495         * ipa-inline.c (inlining_mode): Comment, move up.
6496         (cgraph_decide_inlining_incrementally): Do not perform inlining
6497         itself; fix handling of flattening of self recursive functions.
6498         (cgraph_find_cycles): Remove.
6499         (cgraph_flatten_node): Remove.
6500         (cgraph_decide_inlining): Use incremental inliner to handle flattening.
6501         (try_inline): New function.
6502         (cgraph_early_inlining): Update call of
6503         cgraph_decide_inlining_incrementally.  Apply inlining here.
6504         (apply_inline): Update call of cgraph_decide_inlining_incrementally.
6505
6506 2007-01-21  Dirk Mueller  <dmueller@suse.de>
6507
6508         PR bootstrap/30511
6509         * tree-vrp.c (check_array_bounds): do not warn
6510         about ADDR_EXPR's of ARRAY_REF's which are immediately
6511         used in binary expressions.
6512
6513 2007-01-21  Ira Rosen  <irar@il.ibm.com>
6514
6515         * tree-vectorizer.h (struct _stmt_vec_info): Add new field
6516         read_write_dep and macros for its access.
6517         * tree-vectorizer.c (new_stmt_vec_info): Initialize the new field.
6518         * tree-vect-analyze.c (vect_analyze_data_ref_dependence): Remove
6519         argument, call vect_check_interleaving for every independent pair of
6520         data-refs. Mark loads that access the same memory location as a store
6521         in the loop.
6522         (vect_check_dependences): Remove.
6523         (vect_analyze_data_ref_dependences): Remove  vect_check_dependences
6524         call, fix the call to vect_analyze_data_ref_dependence.
6525         (vect_analyze_data_ref_access): For statements that access the same
6526         data-ref, check that they are not stores; for loads, check that there
6527         is no store that access the same location.
6528
6529 2007-01-20  Roger Sayle  <roger@eyesopen.com>
6530             Joseph Myers  <joseph@codesourcery.com>
6531
6532         * doc/invoke.texi (-fdump-rtl-combine): Fix under/overfull hbox.
6533         (-fdump-rtl-stack): Likewise.
6534         (-fno-signed-zeros): Use @minus{} for a minus sign.  Correct typo.
6535         (-mcheck-zero-division, -mcpu): Fix under/overfull hbox.
6536         (-mpt-fixed): Use @minus{} for minus sign.
6537         (Using Precompiled Headers): Fix under/overfull hbox.
6538
6539 2007-01-20  Jan Hubicka  <jh@suse.cz>
6540
6541         * tree-flow.h (struct stmt_ann_d): Move references_memory to proper
6542         place within annotation.
6543
6544 2007-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
6545
6546         * pa.c (output_move_double): Change array size of xoperands to 4.
6547
6548 2007-01-20  Jan Hubicka  <jh@suse.cz>
6549
6550         * tree-tailcall.c (adjust_return_value): Do not use RESULT_DECL
6551         as temporary.
6552
6553 2007-01-19  Ian Lance Taylor  <iant@google.com>
6554
6555         * expmed.c (expand_divmod) [TRUNC_MOD_EXPR, TRUNC_DIV_EXPR]: Cast
6556         constant to unsigned HOST_WIDE_INT before negating.
6557
6558 2007-01-19  Ian Lance Taylor  <iant@google.com>
6559
6560         * tree-ssa-operands.h (struct vuse_vec_d): Change num_vuse field
6561         to unsigned.
6562         (VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Use unsigned comparison.
6563         (VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
6564         (SET_VUSE_VECT_ELEMENT) [ENABLE_CHECKING]: Likewise.
6565         (SET_VUSE_ELEMENT_VAR) [ENABLE_CHECKING]: Likewise.
6566         (SET_VUSE_ELEMENT_PTR) [ENABLE_CHECKING]: Likewise.
6567         (realloc_vdef, realloc_vuse): Change second parameter to
6568         unsigned.
6569         (ssa_operand_iterator_d): Change vuse_index and mayuse_index
6570         fields to unsigned.
6571         * tree-ssa-operands.c (realloc_vop): Change num_elem parameter to
6572         unsigned. Change x and lim locals to unsigned.
6573         (realloc_vdef, realloc_vuse): Change num_elem parameter to
6574         unsigned.
6575         (finalize_ssa_vuse_ops): Change old_i local to unsigned.
6576         (copy_virtual_operands): Change i and n locals to unsigned.
6577
6578 2007-01-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6579
6580         PR middle-end/29335
6581         * builtins.c (fold_builtin_1): Handle builtin fdim.
6582
6583 2007-01-20  Jan Hubicka  <jh@suse.cz>
6584
6585         * tree-ssa.c (init_tree_ssa): Do not call init_alias_heapvars.
6586         * tree-ssa-structalias.c (compute_points_to_sets): Do call
6587         init_alias_heapvars.
6588         (init_alias_heapvars): Initialize only when not already initialized.
6589         (delete_alias_heapvars): Set heapvar_for_stmt to NULL.
6590
6591 2007-01-19  Roger Sayle  <roger@eyesopen.com>
6592
6593         * common.opt (fsigned-zeros): New command line option.
6594         * flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
6595         of flag_unsafe_math_optimizations.
6596         * opts.c (set_fast_math_flags): The -ffast-math command line option
6597         implies -fno-signed-zeros.
6598         (fast_math_flags_set_p): Likewise.
6599
6600         * doc/invoke.texi: Document new -fno-signed-zeros option, and update
6601         the documentation of -ffast-math appropriately.  Wrap long lines.
6602
6603 2007-01-19  Steve Ellcey  <sje@cup.hp.com>
6604
6605         * system.h (ASM_MAKE_LABEL_LINKONCE): Poison.
6606         * varasm.c (globalize_decl): Remove ASM_MAKE_LABEL_LINKONCE ifdef.
6607
6608 2007-01-19  Tomas Bily  <tbily@suse.cz>
6609
6610         * cgraphunit.c (cgraph_finalize_function): Updating of pid
6611         * tree-profile.c:
6612         (tree_init_ic_make_global_vars): New function
6613         (tree_init_edge_profiler): call of tree_init_ic_make_global_vars
6614         (tree_gen_ic_profiler): New function
6615         (tree_gen_ic_func_profiler): New function
6616         (tree_profiling): Added calling of tree_gen_ic_func_profiler
6617         (tree_profile_hooks): Added hook for indirec/virtual calls
6618         * value-prof.c (tree_find_values_to_profile): New case for
6619         indirect calls
6620         (tree_values_to_profile): Call for determining indirect/virtual
6621         counters
6622         (tree_indirect_call_to_profile): New function
6623         (tree_ic_transform): New function
6624         (tree_ic): New function
6625         (find_func_by_pid): New function
6626         (init_pid_map): New function
6627         (tree_value_profile_transformations): Added check for
6628         indirect/virtual call transformation
6629         * value-prof.h (enum hist_type): New counter type for
6630         indirect/virtual calls
6631         (profile_hooks): Added new hook for profiling indirect/virtual
6632         calls
6633         * profile.c (instrument_values): New case for indirect/virtual
6634         call added
6635         * gcov-io.h (GCOV_LAST_VALUE_COUNTER): Changed to 6
6636         (GCOV_COUNTER_V_INDIR): New counter type
6637         (GCOV_COUNTER_NAMES): New name of counter "indirect" added
6638         (GCOV_MERGE_FUNCTIONS): New merge function for indirect/virtual
6639         call added
6640         * cgraph.c: Definition of cgraph_max_pid
6641         (cgraph_create_node): Default init of pid attribute
6642         * cgraph.h: Declaration of cgraph_max_pid
6643         (struct cgraph_node): Added pid attribute
6644         * libgcov.c (__gcov_indirect_call_profiler): New function
6645         (__gcov_one_value_profiler_body): New function
6646         (__gcov_one_value_profiler): Body was moved to
6647         __gcov_one_value_profiler_body and calls it
6648
6649 2007-01-19  Basile Starynkevitch  <basile@starynkevitch.net>
6650
6651         * doc/gty.texi (Options): Document the mark_hook option to GTY.
6652         * gengtype.c (write_types_data, write_func_for_structure,
6653         write_types, ggc_wtd, pch_wtd): Add skip_hooks to
6654         write_types_data, ggc_wtd, pch_wtd for processing mark_hook.
6655         (walk_type, write_func_for_structure): Generate the mark_hook if
6656         needed.
6657
6658 2007-01-19  Jan Hubicka  <jh@suse.cz>
6659
6660         * ipa-inline.c (cgraph_decide_inlining_incrementally): Instead of
6661         'early' argument take inlining mode argument specifying whether to
6662         inline for size/speeed or all functions; add support for flattening;
6663         improve dumpting.
6664         (cgraph_early_inlining): Update call of decide_inlining_incrementally.
6665
6666 2007-01-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
6667
6668         PR c++/17947
6669         * toplev.c (warn_deprecated_use): Use %qD instead of %qs to print
6670         the name of the declared identifier.
6671
6672 2007-01-19  Dirk Mueller  <dmueller@suse.de>
6673
6674         * config/i386.h (CONDITIONAL_REGISTER_USAGE): Store
6675         result of PIC_OFFSET_TABLE_REGNUM in temporary variable to avoid
6676         duplicate evaluation.
6677
6678 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
6679
6680         * config/i386/i386.md (acos<mode>2): Rename from acossf2 and acosdf2.
6681         Macroize expander using X87MODEF12 mode macro.  Extend operand 1
6682         to XFMode, use acosxf2 and truncate result to requested mode.
6683         Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
6684         (asin<mode>2): Similarly, with asin expanders.
6685         (*fscalexf4_i387): Rename from *fscalexf4.
6686         (expNcorexf3): New expander.
6687         (expxf2, exp10xf2, exp2xf2): Use expNcorexf3 expander.
6688         (exp<mode>2): Rename from expsf2 and expdf2. Macroize expander using
6689         X87MODEF12 mode macro.  Extend operand 1 to XFMode, use expxf2 and
6690         truncate result to requested mode. Use SSE_FLOAT_MODE_P to disable
6691         patterns for SSE math.
6692         (exp10<mode>2): Similarly, with exp10 expanders.
6693         (exp2<mode>2): Similarly, with exp2 expanders.
6694         (expm1<mode>2): Similarly, with expm1 expanders.
6695         (ldexp<mode>3): Similarly, with ldexp expanders.
6696         (log<mode>2, log10<mode>2, log2<mode>2, log1p<mode>2, logb<mode>2):
6697         Use gen_truncxf<mode>2_i387_noop to truncate result.
6698
6699 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6700
6701         * config/m68k/m68k.h (PREFERRED_STACK_BOUNDARY): Define to 32
6702         for ColdFire targets.
6703
6704 2007-01-19  Nathan Sidwell  <nathan@codesourcery.com>
6705             Richard Sandiford  <richard@codesourcery.com>
6706
6707         * config/m68k/m68k.h (M68K_STATIC_CHAIN_REG_NAME): New macro.
6708         (INITIALIZE_TRAMPOLINE): Use STATIC_CHAIN_REGNUM.
6709         (__transfer_from_trampoline): Use M68K_STATIC_CHAIN_REG_NAME.
6710         * config/m68k/m68kelf.h (STATIC_CHAIN_REGNUM): Override.
6711         (M68K_STATIC_CHAIN_REG_NAME): Likewise.
6712         * config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
6713
6714 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6715
6716         * config/m68k/m68k.md (adddi_dilshr32): Rename to...
6717         (*adddi_dilshr32): ...this.  Fix formatting.  Remove commented-out
6718         non-canonical pattern.  Restrict to !TARGET_COLDFIRE.
6719         (*adddi_dilshr32_cf): New pattern.
6720         (adddi3, subdi3): Remove first alternatives.
6721
6722 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6723
6724         * config/m68k/m68k.c (notice_update_cc): If an SFmode move is
6725         implemented using move.l, do not use its cc result for floating-point
6726         comparisons.
6727
6728 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6729
6730         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Stop the 'T' constraint
6731         from accepting 's' constraints if flag_pic.
6732
6733 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6734
6735         * config/m68k/m68k.md (bordered, bunordered, buneq, bunge, bungt)
6736         (bunle, bunlt, bltgt, bordered_rev, bunordered_rev, buneq_rev)
6737         (bunge_rev, bungt_rev, bunle_rev, bunlt_rev, bltgt_rev): Change
6738         condition from TARGET_68881 to TARGET_HARD_FLOAT.
6739
6740 2007-01-19  Sandra Loosemore  <sandra@codesourcery.com>
6741
6742         * longlong.h (count_leading_zeros, COUNT_LEADING_ZEROS_0): Add
6743         ColdFire alternatives.
6744         * config/m68k/m68k.h (CLZ_DEFINED_VALUE_AT_ZERO): New macro.
6745         * config/m68k/m68k.md (clzsi2):  Define for ColdFire
6746         architectures that support ff1 instruction.
6747
6748 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6749             Julian Brown  <julian@codesourcery.com>
6750
6751         * config/m68k/m68k.h (CONST_OK_FOR_LETTER_P): Add an 'R' case.
6752         * config/m68k/m68k.md (*movsi_cfv4): Fold into...
6753         (*movsi_cf): ...here.  Remove unnecessary 'R' from 'Rg'.
6754         Add commentary.
6755
6756 2007-01-19  Richard Sandiford  <richard@codesourcery.com>
6757
6758         * config/m68k/m68k-protos.h (valid_mov3q_const): Take a HOST_WIDE_INT
6759         and return a bool.
6760         (output_move_const_into_data_reg, output_move_simode_const): Delete.
6761         * config/m68k/m68k.c (const_method, const_int_cost): Take a
6762         HOST_WIDE_INT instead of an rtx.
6763         (m68k_rtx_costs): Update call accordingly.
6764         (output_move_const_into_data_reg): Likewise.  Fix formatting.
6765         (valid_mov3q_const): Take a HOST_WIDE_INT instead of an rtx.
6766         Return a bool.
6767         (output_move_simode_const): Update calls after above changes.
6768         Rework to use automatic variables and predicates like MEM_P.
6769         * config/m68k/m68k.md (pushexthisi_const): Update call to
6770         valid_mov3q_const.
6771
6772 2007-01-19  Dirk Mueller  <dmueller@suse.de>
6773
6774         * tree-ssa-alias.c (perform_var_substitution): Fix typo
6775         in dump_flags test.
6776
6777 2007-01-19  Richard Guenther  <rguenther@suse.de>
6778
6779         * builtins.c (expand_builtin_cexpi): Fall back to expanding
6780         via cexp in case sincos is not available.
6781
6782 2007-01-19  Richard Guenther  <rguenther@suse.de>
6783
6784         * doc/tm.texi (TARGET_HAS_SINCOS): Document new target macro.
6785         * defaults.h (TARGET_HAS_SINCOS): Default to off.
6786         * config/linux.h (TARGET_HAS_SINCOS): Set to on if we have glibc.
6787         * config/alpha/linux.h (TARGET_HAS_SINCOS): Likewise.
6788         * config/sparc/linux.h (TARGET_HAS_SINCOS): Likewise.
6789         * config/sparc/linux64.h (TARGET_HAS_SINCOS): Likewise.
6790         * config/rs6000/linux.h (TARGET_HAS_SINCOS): Likewise.
6791         * config/rs6000/linux64.h (TARGET_HAS_SINCOS): Likewise.
6792
6793 2007-01-19  Uros Bizjak  <ubizjak@gmail.com>
6794
6795         * config/i386/i386.md (*fpatanxf3_i387, fpatan_extend<mode>xf3_i387):
6796         New insn patterns.
6797         (atan2sf3_1, atan2df3_1, atan2xf3_1): Remove insn patterns.
6798         (atan2xf3): Directly generate RTL pattern.
6799         (atan2<mode>3): Rename from atan2sf3 and atan2df3 and macroize insn
6800         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
6801         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
6802         disable patterns for SSE math.
6803         (atan<mode>2): Rename from atansf2 and atandf2 and macroize insn
6804         patterns using X87MODEF12 mode macro.  Use fpatan_extend<mode>xf3_i387
6805         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
6806         disable patterns for SSE math.
6807
6808 2007-01-19  Alexandre Oliva  <aoliva@redhat.com>
6809
6810         * libgcc-std.ver: Fix typo in %inherit for GCC_4.3.0.
6811
6812 2007-01-18  Roger Sayle  <roger@eyesopen.com>
6813
6814         * fold-const.c (fold_unary) <VIEW_CONVERT_EXPR>: Optimize away a
6815         VIEW_CONVERT_EXPR to the same type as it's operand.
6816
6817 2007-01-18  David Edelsohn  <edelsohn@gnu.org>
6818
6819         * config/rs6000/darwin-ldouble.c: Only build _SOFT_FLOAT if
6820         configured for long double 128.
6821
6822 2007-01-18  Mike Stump  <mrs@apple.com>
6823
6824         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Fix build
6825         error.
6826
6827 2007-01-18  Michael Meissner  <michael.meissner@amd.com>
6828
6829         * i386.c (ix86_compute_frame_layout): Make fprintf's in #if 0 code
6830         type correct.
6831
6832 2007-01-18  Jan Hubicka  <jh@suse.cz>
6833
6834         * tree-ssa-operands.c (vop_free_bucket_size): Never return value
6835         greater than NUM_VOP_FREE_BUCKETS.
6836
6837 2007-01-18  Daniel Berlin  <dberlin@dberlin.org>
6838
6839         * tree-ssa-structalias.c: Update comments.
6840         (ptabitmap_obstack): Removed.
6841         (pta_obstack): New.
6842         (oldpta_obstack): Ditto.
6843         (stats): Add a few members.
6844         (struct variable_info): Remove node, complex, address_taken, and
6845         indirect_target members. Add oldsolution member.
6846         (new_var_info): Do not initialize removed members.
6847         (constraint_expr_type): Remove INCLUDES.
6848         (constraint_graph): Add size, implicit_preds, rep,
6849         indirect_cycles, eq_rep, label, direct_nodes, and complex members.
6850         (FIRST_REF_NODE): New macro.
6851         (LAST_REF_NODE): Ditto.
6852         (FIRST_ADDR_NODE): Ditto.
6853         (find): New function.
6854         (unite): Ditto.
6855         (dump_constraint): Do not handle INCLUDES.
6856         (insert_into_complex): Do not insert duplicate constraints.
6857         (condense_varmap_nodes): Renamed and rewritten into ...
6858         (merge_node_constraints): This. Also fix bug in handling of
6859         offseted copy constraints.
6860         (clear_edges_for_node): No longer need to deal with preds at all,
6861         or removing associated preds/succs.
6862         (merge_graph_nodes): Deal with indirect_cycles.
6863         Don't deal with predecessors.
6864         (add_implicit_graph_edge): New function.
6865         (add_pred_graph_edge): Ditto.
6866         (add_graph_edge): Don't deal with predecessors.
6867         (build_constraint_graph): Removed.
6868         (build_pred_graph): New function.
6869         (build_succ_graph): Ditto.
6870         (struct scc_info): Removed in_component. Added roots, dfs, and
6871         node_mapping. Remove visited_index, unification_queue.
6872         (scc_visit): Deal with union-find we do now.
6873         Deal with cycles with REF nodes.
6874         (collapse_nodes): Renamed and rewritten to ...
6875         (unify_nodes): This.
6876         (process_unification_queue): Removed.
6877         (topo_visit): Cleanup
6878         (do_da_constraint): Use find.
6879         (do_sd_constraint): Ditto.
6880         (do_ds_constraint): Ditto.
6881         (do_complex_constraint): Ditto.
6882         (init_scc_info): Update for removed and added members.
6883         (find_and_collapse_graph_cycles): Renamed and rewritten into ...
6884         (find_indirect_cycles): This.
6885         (equivalence_class): New variable.
6886         (label_visit): New function.
6887         (perform_variable_substitution): Rewritten.
6888         (free_var_substitution_info): New function.
6889         (find_equivalent_node): Ditto.
6890         (move_complex_constraints): Ditto.
6891         (eliminate_indirect_cycles): Ditto.
6892         (solve_graph): Only propagate changed bits.
6893         Use indirect cycle elimination.
6894         Use find.
6895         (tree_id_t): Rename to tree_vi_t, delete id member, add vi member.
6896         (tree_id_eq): Renamed to ...
6897         (tree_vi_eq): This. Update for member change
6898         (insert_id_for_tree): Renamed and rewritten to ...
6899         (insert_vi_for_tree): This.
6900         (lookup_id_for_tree): Renamed and rewritten to ...
6901         (lookup_vi_for_tree): This.
6902         (get_id_for_tree): Renamed and rewritten to ...
6903         (get_vi_for_tree): Ditto.
6904         (get_constraint_exp_from_ssa_var): Update to use get_vi_for_tree.
6905         (process_constraint): Don't handle INCLUDES.
6906         Remove special ADDRESSOF case.
6907         (find_func_aliases): Rewrite to use vi functions instead of id
6908         ones.
6909         (create_function_info_for): Ditto.
6910         (create_variable_info_for): Ditto.
6911         (intra_create_variable_infos): Ditto.
6912         (merge_smts_into): Ditto.
6913         (find_what_p_points_to): Ditto.
6914         (init_base_vars): Ditto.
6915         (init_alias_vars): Ditto.
6916         (remove_preds_and_fake_succs): New function.
6917         (dump_sa_points_to_info): Dump new stats.
6918         (dump_solution_for_var): Use find.
6919         (set_used_smts): Fix formatting.
6920         (compute_points_to_sets): Updated for new functions.
6921         (ipa_pta_execute): Ditto.
6922
6923 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
6924             Richard Sandiford  <richard@codesourcery.com>
6925
6926         * doc/tm.texi (TARGET_FUNCTION_VALUE): Expand documentation of
6927         parallels.
6928         * calls.c (expand_call): If the return value is a PARALLEL,
6929         extract its first member.
6930         * config/m68k/linux.h (FUNCTION_EXTRA_EPILOGUE): Remove.
6931         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
6932         use FUNCTION_EXTRA_EPILOGUE.
6933         (m68k_function_value): Return a PARALLEL if the return value
6934         is of a pointer type.
6935         * config/m68k/netbsd-elf.h (current_function_returns_pointer)
6936         (FUNCTION_EXTRA_EPILOGUE): Remove.
6937         * config/m68k/m68k.md (D0_REG): New constant.
6938
6939 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
6940
6941         * config/m68k/m68k.c (m68k_output_function_epilogue): Don't
6942         output a NOP for empty epilogues.
6943
6944 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
6945
6946         * config/m68k/m68k.c (m68k_use_return_insn): Update comments
6947         before function.  Extend register save check to include all
6948         registers, not just integer ones.
6949
6950 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
6951
6952         * config/m68k/m68k-protos.h (use_return_insn): Rename to...
6953         (m68k_use_return_insn): ...this.
6954         * config/m68k/m68k.h (USE_RETURN_INSN): Delete.
6955         * config/m68k/m68k.c (use_return_insn): Rename to...
6956         (m68k_use_return_insn): ...this.
6957         * config/m68k/m68k.md (return): Use m68k_use_return_insn instead
6958         of USE_RETURN_INSN.
6959
6960 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
6961
6962         * config/m68k/fpgnulib.c (__truncdfsf2): Implement round to
6963         nearest even, fix denormal rounding overflow.
6964
6965 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
6966
6967         * config/m68k/m68k.md (movsf_cf_hard): Use fsmove instead of
6968         f%$smove and f%$move.
6969         (movdf_cf_hard): Use fdmove for cases 0 and 3 and fmove for case 1.
6970         (extendsfdf2_cf): Use fdmove instead of f%&move.
6971         (truncdfsf2_cf): Use fsmove instead of f%$smove.
6972         (add<mode>3_cf, sub<mode>3_cf): Use <FP:prec> instead of <FP:round>.
6973
6974 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
6975
6976         * config/m68k/m68k.md (movdf_cf_hard): Use output_move_double for
6977         GPR<-GPR moves.
6978
6979 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
6980
6981         * real.h (real_format): Add a canonical_nan_lsbs_set field.
6982         (coldfire_single_format): Declare.
6983         (coldfire_double_format): Likewise.
6984         * real.c (encode_ieee_single): Use canonical_nan_lsbs_set instead
6985         of qnan_msb_set to determine the lower bits of a canonical
6986         NaN significand.
6987         (encode_ieee_double): Likewise.
6988         (encode_ieee_quad): Likewise.
6989         (ieee_single_format): Initialize canonical_nan_lsbs_set.
6990         (mips_single_format): Likewise.
6991         (ieee_double_format): Likewise.
6992         (mips_double_format): Likewise.
6993         (ieee_extended_motorola_format): Likewise.
6994         (ieee_extended_intel_96_format): Likewise.
6995         (ieee_extended_intel_128_format): Likewise.
6996         (ieee_extended_intel_96_round_53_format): Likewise.
6997         (ibm_extended_format): Likewise.
6998         (mips_extended_format): Likewise.
6999         (ieee_quad_format): Likewise.
7000         (mips_quad_format): Likewise.
7001         (vax_f_format): Likewise.
7002         (vax_d_format): Likewise.
7003         (vax_g_format): Likewise.
7004         (i370_single_format): Likewise.
7005         (i370_double_format): Likewise.
7006         (decimal_single_format): Likewise.
7007         (decimal_double_format): Likewise.
7008         (decimal_quad_format): Likewise.
7009         (c4x_single_format): Likewise.
7010         (c4x_extended_format): Likewise.
7011         (real_internal_format): Likewise.
7012         (coldfire_single_format): New real_format.
7013         (coldfire_double_format): Likewise.
7014         * config/pdp11/pdp11.c (pdp11_f_format): Initialize
7015         canonical_nan_lsbs_set.
7016         (pdp11_d_format): Likewise.
7017         * config/m68k/m68k.c (override_options): Override REAL_FORMAT_MODE
7018         if TARGET_COLDFIRE_CPU.
7019
7020 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7021
7022         * config/m68k/m68k-protos.h (m68k_output_pic_call): Delete.
7023         (output_call, m68k_legitimize_call_address): Declare.
7024         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Remove unnecessary
7025         parenthesees.  Add support for a 'W' constraint.
7026         (LEGITIMATE_PIC_OPERAND_P): Remove SYMBOL_REF_FLAG handling.
7027         (PRINT_OPERAND_PUNCT_VALID_P): Remove comment about 'o'.
7028         (m68k_symbolic_call, m68k_symbolic_jump): Declare.
7029         * config/m68k/m68k.c (m68k_symbolic_call, m68k_symbolic_jump): New
7030         variables.
7031         (override_options): Initialize them.  Do not set flag_no_function_cse
7032         for TARGET_ID_SHARED_LIBRARY.
7033         (m68k_output_pic_call): Delete.
7034         (m68k_legitimize_call_address): New function.
7035         (print_operand): Remove the %o prefix.  Handle the %p prefix.
7036         (output_call): New function.
7037         (m68k_output_mi_thunk): Use m68k_symbolic_jump.  Always load the
7038         target address from the GOT if symbolic jumps are not allowed.
7039         * config/m68k/m68k.md (call, general_operand): Do not set
7040         SYMBOL_REF_FLAG.  Use m68k_legitimize_call_address instead.
7041         Merge separate flag_pic and !flag_pic define_insns into...
7042         (*call, *call_value): ...these new patterns.  Match the address
7043         rather than the containing MEM and require it to be a call_operand.
7044         Use output_call to generate the asm template.
7045         * config/m68k/predicates.md (const_call_operand): New predicate.
7046         (call_operand): Likewise.
7047
7048 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
7049
7050         * config/m68k/m68k.h (REGISTER_MOVE_COST): Simplify definition.
7051         (STACK_GROWS_DOWNWARD): Define to 1.
7052         (FUNCTION_VALUE, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Equivocate
7053         comments, emphasizing that these values are only defaults.
7054         * config/m68k/linux.h (LINK_SPEC): Fix formatting in #undef.
7055         * config/m68k/m68k.c (const_method): Remove trailing whitespace.
7056
7057 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7058
7059         * config/m68k/m68k.md (cmpsi): Remove outdated flag_pic handling.
7060
7061 2007-01-18  Kazu Hirata  <kazu@codesourcery.com>
7062             Richard Sandiford  <richard@codesourcery.com>
7063
7064         * config/m68k/m68k.h (DATA_REGNO_P, ADDRESS_REGNO_P, INT_REGNO_P)
7065         (FP_REGNO_P): New macros.
7066         (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_DATA_P)
7067         (REGNO_OK_FOR_FP_P, REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Use them.
7068         (EH_RETURN_STACKADJ_RTX): Use A0_REG.
7069         * config/m68k/m68k.c (m68k_regno_mode_ok): Use the new REGNO macros.
7070
7071 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
7072
7073         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
7074         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-rtems*): Add t-floatlib
7075         to $tmake_file.
7076         * config/m68k/t-floatlib: New file, extracting common code from...
7077         * config/m68k/t-m68kbare, config/m68k/t-m68kelf,
7078         * config/m68k/t-uclinux: Here.
7079         * config/m68k/fpgnulib.c: Do not compile extendeed precision
7080         routines on ColdFire targets.
7081
7082 2007-01-18  Nathan Sidwell  <nathan@codesourcery.com>
7083
7084         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
7085         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*)
7086         (m68k-*-uclinuxoldabi, m68k-*-uclinux*, m68k-*-linux*)
7087         (m68k-*-rtems*): Use tm_file rather than m68k/m68k.h and
7088         explicitly set MOTOROLA to 1.
7089         * config/m68k/m68k.h (MOTOROLA): Simplify definition accordingly.
7090
7091 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7092             Nathan Sidwell  <nathan@codesourcery.com>
7093
7094         * config/m68k/m68k.h (PCC_STATIC_STRUCT_RETURN): Delete.
7095         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Add MOTOROLA cases.
7096         * config/m68k/coff.h (REGISTER_PREFIX_MD): Delete.
7097         * config/m68k/m68020-elf.h (LIB_SPEC): Delete.
7098         * config/m68k/m68k-none.h (CC1_SPEC, CPP_SUBTARGET_SPEC): Delete.
7099         * config/m68k/m68kelf.h (IMMEDIATE_PREFIX, REGISTER_PREFIX_MD)
7100         (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Delete.
7101         (NO_DOLLAR_IN_LABEL, PCC_STATIC_STRUCT_RETURN): Don't undefine.
7102         (BSS_ASM_OP, ASM_OUTPUT_SKIP, ASM_OUTPUT_ASCII): Delete.
7103         * config/m68k/m68kemb.h (PCC_STATIC_STRUCT_RETURN): Don't undefine.
7104         * config/m68k/linux.h (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE)
7105         (WCHAR_TYPE_SIZE, TARGET_OBJFMT_CPP_BUILTINS): Delete.
7106         (TARGET_OS_CPP_BUILTINS): Don't define mc68000 and mc68020 here.
7107         (DBX_REGISTER_NUMBER): Delete.
7108         * config/m68k/netbsd-elf.h (IMMEDIATE_PREFIX): Delete.
7109         (PCC_STATIC_STRUCT_RETURN): Don't undefine.
7110         * config/m68k/openbsd.h (PCC_STATIC_STRUCT_RETURN): Define.
7111
7112 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7113
7114         * config.gcc (m68k-*-uclinux*): Add flat.h to $tm_file.
7115         * config/flat.h: New file.
7116         * crtstuff.c (USE_PT_GNU_EH_FRAME): Don't define if
7117         OBJECT_FORMAT_FLAT.
7118         * config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Do not use
7119         indirect references for -msep-data or -mid-shared-library.
7120         Do not use PC-relative code addresses either.
7121         * config/m68k/m68k.c (override_options): Restrict -fPIC error
7122         to -mpcrel.
7123         * config/m68k/uclinux.h (STARTFILE_SPEC): Define.  Use Scrt1.o
7124         for shared libraries and crt1.o for executables.  Use crti.o and
7125         crtbegin.o.
7126         (ENDFILE_SPEC): Use crtend.o and crtn.o.
7127         (LIB_SPEC): Suppress -Rlibc.gdb if -static-libc is given.
7128         Do not add -elf2flt or -shared-lib-id options here.
7129         (LINK_SPEC): Define.  Pass -elf2flt if no -elf2flt option is given.
7130         Pass -shared-lib-id if -mid-shared-library, taking the library
7131         identifier from -mshared-library-id if given, otherwise
7132         defaulting to 0.
7133         (EH_FRAME_IN_DATA_SECTION): Do not undefine.
7134         (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP): Likewise.
7135         (TARGET_OS_CPP_BUILTINS): Define __GXX_MERGED_TYPEINFO_NAMES=0
7136         and __GXX_TYPEINFO_EQUALITY_INLINE=0 if -mid-shared-library.
7137         (DRIVER_SELF_SPECS): Map unadorned PIC options to -msep-data.
7138         * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Add crtbegin.o
7139         and crtend.o.
7140         * config/m68k/lb1sf68.asm (PICCALL): Use an lea and pc-relative
7141         jump sequence for ISA A and ISA A+.
7142         (PICJUMP): Likewise.
7143
7144 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7145
7146         * config.gcc (m68k-*-uclinux*): Base the port on the common
7147         and m68k GNU/Linux files rather than on the generic ELF ones.
7148         * config/m68k/uclinux.h (TARGET_VERSION): Override.
7149         (TARGET_OS_CPP_BUILTINS): Use LINUX_TARGET_OS_CPP_BUILTINS.
7150
7151 2007-01-18  Julian Brown  <julian@codesourcery.com>
7152             Richard Sandiford  <richard@codesourcery.com>
7153
7154         * config/m68k/m68k.h (LONG_DOUBLE_TYPE_SIZE): Make 64-bit on ColdFire.
7155         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
7156         * config/m68k/netbsd-elf.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Undefine
7157         before redefining.
7158         * config/m68k/uclinux-oldabi.h (LONG_DOUBLE_TYPE_SIZE): Redefine to
7159         80 unconditionally.
7160         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Likewise.
7161
7162 2007-01-18  Richard Sandiford  <richard@codesourcery.com>
7163
7164         * doc/install.texi: Document m68k-uclinuxoldabi.
7165         * config.gcc (m68k-*-uclinuxoldabi): New configuration.
7166         * config/m68k/uclinux-oldabi.h: New file, copied from
7167         config/m68k/uclinux.h.
7168
7169 2007-01-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
7170
7171         * config/m32r/m32r-protos.h (m32r_expand_epilogue): Declare it.
7172         * config/m32r/m32r.c (m32r_setup_incoming_varargs): Use gen_frame_mem.
7173         (m32r_compute_frame_size): Use unsigned for regno.
7174         (m32r_reload_lr): Use gen_frame_mem.
7175         (pop): New.
7176         (m32r_output_function_epilogue): Don't output the function epilogue
7177         textually here.
7178         (m32r_expand_epilogue): New.
7179         (direct_return): Return false if the function has the interrupt
7180         attribute.
7181         (m32r_hard_regno_rename_ok): Remove code for the textual epilogue.
7182         * config/m32r/m32r.md (epilogue): New expander.
7183         (return_lr, return_rte): New insns.
7184         (return): Make it expander.
7185         (return_normal): New expander.
7186
7187 2007-01-18  Josh Conner  <jconner@apple.com>
7188
7189         PR target/30485
7190         * config/rs6000/rs6000.c (rs6000_emit_vector_compare): Add
7191         support for UNLE, UNLT, UNGE, and UNGT.
7192
7193 2007-01-18  Jan Hubicka  <jh@suse.cz>
7194
7195         * tree-vrp.c (finalize_jump_threads): Do not call cleanup_cfg by hand.
7196         * tree-tailcall (add_virtual_phis): Likewise.
7197         (optimize_tail_call): Return TODOs.
7198         (execute_tail_calls): Return TODOs.
7199         * tree-ssa-ccp (execute_fold_all_builtins): Do cleanup_cfg via TODO.
7200         * tree-cfgcleanup.c (cleanup_tree_cfg_loop): Return if something
7201         changed.
7202         * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_value):
7203         Cleanup cfg using TODO.
7204         * tree-flow.h (cleanup_tree_cfg_loop): Update prototype.
7205         * passes.c (execute_function_todo): When cleanup did something, remove
7206         unused locals.
7207         * tree-cfg.c (pass_build_cfg): Add cleanup_cfg TODO.
7208         (make_edges): Don't cleanup_cfg.
7209
7210 2007-01-18  Uros Bizjak  <ubizjak@gmail.com>
7211
7212         * reg-stack.c (subst_stack_regs_pat) [UNSPEC_SINCOS_COS,
7213         UNSPEC_XTRACT_FRACT]: Use generic code for instructions that
7214         operate on the top of stack.
7215         [UNSPEC_SINCOS_SIN, UNSPEC_XTRACT_EXP, UNSPEC_TAN]: Rewrite
7216         register handling of instructions that output to the second
7217         stack slot.
7218         [UNSPEC_TAN_ONE, UNSPEC_TAN_TAN]: Remove.
7219         (move_for_stack_reg): Special-case check for dead destination
7220         stack slot for constant load of 1.0 inside UNSPEC_TAN.
7221
7222         * config/i386/i386.md (UNSPEC_TAN): New constant.
7223         (UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): Remove.
7224         (fptanxf4_i387, fptan_extend<mode>xf4_i387): New patterns
7225         to correctly model move of constant 1.0 to top stack slot.
7226         (*tandf3_1, *tansf3_1, *tanxf3_1): Remove insn patterns.
7227         (unnamed peephole2 pattern): Remove corresponding peephole2
7228         pattern that optimizes tan insn and loading of constant 1.0.
7229         (tanxf2): Use fptanxf4_i387.
7230         (tan<mode>2): Rename from tansf2 and tandf2 and macroize insn
7231         patterns using X87MODEF12 mode macro.  Use fptan_extend<mode>xf4_i387
7232         and truncate result to requested mode.  Use SSE_FLOAT_MODE_P to
7233         disable patterns for SSE math.
7234         (sincos<mode>3): Use truncxf<mode>2_i387_noop for truncation.
7235         (fyl2x_extend<mode>xf3_i387): Use X87MODEF12 for operand 1.
7236
7237 2007-01-18  Dirk Mueller  <dmueller@suse.de>
7238             Richard Guenther <rguenther@suse.de>
7239
7240         PR diagnostic/8268
7241         * doc/invoke.texi (Warray-bounds): Document -Warray-bounds.
7242         * common.opt (Warray-bounds): Add new warning option.
7243         * c-opts.c (c_common_handle_option): Define -Warray-bounds
7244         if -Wall is given.
7245         * Makefile.in: make tree-vrp.o depend on toplev.h
7246         * tree-vrp.c (vrp_finalize): Call check_array_refs if -Warray-bounds
7247         is enabled.
7248         (check_array_refs, check_array_bounds, check_array_ref): New.
7249
7250 2007-01-18  Jan Hubicka  <jh@suse.cz>
7251
7252         * tree-ssa-ccp.c (ccp_finalize): Return if something changed.
7253         (execute_ssa_ccp): Return flags conditionally.
7254         * tree-ssa-propagate.c (substitue_and_fold): Return if something was
7255         changed.
7256         * tree-ssa-propagate.h (substitute_and_fold): Update prototype.
7257
7258 2007-01-18  Steven Bosscher  <steven@gcc.gnu.org>
7259
7260         * cfgcleanup.c (cleanup_cfg): Detect cfglayout mode and set
7261         the CLEANUP_CFGLAYOUT flag when in cfglayout mode.
7262
7263         * Makefile.c (GTFILES): Add cfglayout.h.
7264         * gengtype.c (open_base_files): Likewise.
7265         * cfglayout.c (cfg_layout_function_footer,
7266         cfg_layout_function_header) Reindent to make gengtype happy.
7267         * cfglayout.h (cfg_layout_function_footer,
7268         cfg_layout_function_header): Add GTY(()) marker.
7269
7270         * ifcvt.c (noce_try_sign_mask): Make sure INSN_B is non-null.
7271
7272 2007-01-18  Ben Elliston  <bje@au.ibm.com>
7273
7274         * genautomata.c (write_automata): Include xstrerror output in the
7275         error message if writing the DFA description file fails.
7276
7277 2007-01-17  H.J. Lu  <hongjiu.lu@intel.com>
7278
7279         * config/mips/mips-protos.h (mips_output_external): Make it
7280         return void.
7281         * config/mips/iris.h (TARGET_ASM_EXTERNAL_LIBCALL): Removed.
7282         * config/mips/mips.c (irix_output_external_libcall): Likewise.
7283         (extern_list): Likewise.
7284         (extern_head): Likewise.
7285         (TARGET_ASM_FILE_END): Likewise.
7286         (mips_file_end): Likewise.
7287         (mips_output_external): Rewritten.
7288
7289 2007-01-18  Ben Elliston  <bje@au.ibm.com>
7290
7291         * genpreds.c (write_insn_preds_c): Only write out the function
7292         body for regclass_for_constraint if we have register constraints.
7293
7294 2007-01-17  Tom Tromey  <tromey@redhat.com>
7295
7296         * doc/sourcebuild.texi (libgcj Tests): Use sourceware.org.
7297         * doc/install.texi (Testing): Use sourceware.org.
7298         (Binaries): Likewise.
7299         (Specific): Likewise.
7300         * doc/contrib.texi (Contributors): Use sourceware.org.
7301
7302 2007-01-17  Anatoly Sokolov <aesok@post.ru>
7303
7304         * config/avr/avr.h (AVR_HAVE_LPMX): New macro.
7305         (AVR_ENHANCED): Rename to ...
7306         (AVR_HAVE_MUL): ... new.
7307         (avr_enhanced_p): Rename to ...
7308         (avr_have_mul_p): ... new.
7309         (TARGET_CPU_CPP_BUILTINS): Use 'avr_have_mul_p' instead of
7310         'avr_enhanced_p' for "__AVR_ENHANCED__". Define "__AVR_HAVE_MUL__".
7311         * config/avr/avr.c (avr_enhanced_p): Rename to ...
7312         (avr_have_mul_p): ... new.
7313         (base_arch_s): Rename 'enhanced' to 'have_mul'.
7314         (avr_override_options): Use 'avr_have_mul_p' and 'have_mul' instead of
7315         'avr_enhanced_p' and 'enhanced'.
7316         (ashlhi3_out, ashrhi3_out, lshrhi3_out, avr_rtx_costs): Use
7317         AVR_HAVE_MUL instead of AVR_ENHANCED.
7318         * avr.md (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
7319         (mulqi3, *mulqi3_enh, *mulqi3_call, mulqihi3, umulqihi3, mulhi3,
7320         *mulhi3_enh, *mulhi3_call, mulsi3, *mulsi3_call): Use AVR_HAVE_MUL
7321         instead of AVR_ENHANCED.
7322         (*tablejump_enh): Use AVR_HAVE_LPMX instead of AVR_ENHANCED.
7323         * libgcc.S: Use __AVR_HAVE_MUL__ instead of __AVR_ENHANCED__.
7324         (__tablejump__): Use __AVR_HAVE_LPMX__ instead of __AVR_ENHANCED__.
7325
7326 2007-01-17  Ian Lance Taylor  <iant@google.com>
7327
7328         * vec.h (VEC_reserve_exact): Define.
7329         (vec_gc_p_reserve_exact): Declare.
7330         (vec_gc_o_reserve_exact): Declare.
7331         (vec_heap_p_reserve_exact): Declare.
7332         (vec_heap_o_reserve_exact): Declare.
7333         (VEC_OP (T,A,reserve_exact)): New static inline function, three
7334         versions.
7335         (VEC_OP (T,A,reserve)) [all versions]: Remove handling of
7336         negative parameter.
7337         (VEC_OP (T,A,alloc)) [all versions]: Call ...reserve_exact.
7338         (VEC_OP (T,A,copy)) [all versions]: Likewise.
7339         (VEC_OP (T,a,safe_grow)) [all versions]: Likewise.
7340         * vec.c (calculate_allocation): Add exact parameter.  Change all
7341         callers.
7342         (vec_gc_o_reserve_1): New static function, from vec_gc_o_reserve.
7343         (vec_gc_p_reserve, vec_gc_o_reserve): Call vec_gc_o_reserve_1.
7344         (vec_gc_p_reserve_exact, vec_gc_o_reserve_exact): New functions.
7345         (vec_heap_o_reserve_1): New static function, from vec_heap_o_reserve.
7346         (vec_heap_p_reserve, vec_heap_o_reserve): Call vec_heap_o_reserve_1.
7347         (vec_heap_p_reserve_exact): New function.
7348         (vec_heap_o_reserve_exact): New function.
7349
7350 2007-01-17  Jan Hubicka  <jh@suse.cz>
7351
7352         * ipa-type-escape.c (look_for_casts): Revamp using handled_component_p.
7353
7354 2007-01-17  Eric Christopher  <echristo@apple.com>
7355
7356         * config.gcc: Support core2 processor.
7357
7358 2007-01-16  Jan Hubicka  <jh@suse.cz>
7359
7360         * tree-ssanames.c (release_dead_ssa_names): Instead of ggc_freeing
7361         the names, just unlink the chain so we don't crash on dangling pointers
7362         to dead SSA names.
7363
7364 2007-01-16  Jan Hubicka  <jh@suse.cz>
7365
7366         * cgraph.h (cgraph_decide_inlining_incrementally): Kill.
7367         * tree-pass.h: Reorder to make IPA passes appear toegher.
7368         (pass_early_inline, pass_inline_parameters, pass_apply_inline): Declare.
7369         * cgraphunit.c (cgraph_finalize_function): Do not compute inling
7370         parameters, do not call early inliner.
7371         * ipa-inline.c: Update comments.  Include tree-flow.h
7372         (cgraph_decide_inlining): Do not compute inlining parameters.
7373         (cgraph_decide_inlining_incrementally): Return TODOs; assume to
7374         be called with function context set up.
7375         (pass_ipa_inline): Remove unreachable functions before pass.
7376         (cgraph_early_inlining): Simplify assuming to be called from the
7377         PM as local pass.
7378         (pass_early_inline): New pass.
7379         (cgraph_gate_ipa_early_inlining): New gate.
7380         (pass_ipa_early_inline): Turn into simple wrapper.
7381         (compute_inline_parameters): New function.
7382         (gate_inline_passes): New gate.
7383         (pass_inline_parameters): New pass.
7384         (apply_inline): Move here from tree-optimize.c
7385         (pass_apply_inline): New pass.
7386         * ipa.c (cgraph_remove_unreachable_nodes): Verify cgraph after
7387         transforming.
7388         * tree-inline.c (optimize_inline_calls): Return TODOs rather than
7389         doing them by hand.
7390         (tree_function_versioning): Do not allocate dummy struct function.
7391         * tree-inline.h (optimize_inline_calls): Update prototype.
7392         * tree-optimize.c (execute_fixup_cfg): Export.
7393         (pass_fixup_cfg): Remove
7394         (tree_rest_of_compilation): Do not apply inlines.
7395         * tree-flow.h (execute_fixup_cfg): Declare.
7396         * Makefile.in (gt-passes.c): New.
7397         * passes.c: Include gt-passes.h
7398         (init_optimization_passes): New passes.
7399         (nnodes, order): New static vars.
7400         (do_per_function_toporder): New function.
7401         (execute_one_pass): Dump current pass here.
7402         (execute_ipa_pass_list): Don't dump current pass here.
7403
7404 2007-01-16  Janis Johnson  <janis187@us.ibm.com>
7405
7406         * config/dfp-bit.c (dfp_compare_op): Return separate value for NaN.
7407         (DFP_NE, DFP_LE, DFP_GE): Return false for NaN.
7408
7409 2007-01-16  David Edelsohn  <edelsohn@gnu.org>
7410
7411         * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
7412         (strong_alias): Define.
7413         (__gcc_qmul): Provide non-FMA for soft-float.
7414         (__gcc_qdiv): Same.
7415         (__gcc_qneg): New.
7416         (__gcc_qeq): New.
7417         (__gcc_qle): New.
7418         (__gcc_qge): New.
7419         (__gcc_qunord): New.
7420         (__gcc_stoq): New.
7421         (__gcc_dtoq): New.
7422         (__gcc_qtos): New.
7423         (__gcc_qtod): New.
7424         (__gcc_qtoi): New.
7425         (__gcc_qtou): New.
7426         (__gcc_itoq): New.
7427         (__gcc_utoq): New.
7428         (fmsub): New.
7429         * config/rs6000/rs6000.c (rs6000_init_libfuncs): Initialize
7430         soft-float functions.
7431         * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
7432         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
7433         about long double soft float.
7434
7435 2007-01-16  Dorit Nuzman  <dorit@il.ibm.com>
7436             Tehila Meyzels  <tehila@il.ibm.com>
7437
7438         * tree-vectorizer.h (is_pattern_stmt_p): New.
7439         * tree-vect-analyze.c (vect_determine_vectorization_factor): Fix
7440         formatting (tabs instead of spaces). Cleanup and clarify setting
7441         of STMT_VINFO_VECTYPE. Call is_pattern_stmt_p.
7442         * tree-vect-transform.c (vect_get_vec_def_for_operand): Fix typo.
7443         (vectorizable_type_demotion): Check that types are integral.
7444         (vectorizable_type_promotion): Likewise.
7445         (vectorizable_store): Fix typo.  Eliminate new-line at end of
7446         comments.
7447
7448 2007-01-16  Jan Hubicka  <jh@suse.cz>
7449
7450         * tree-ssanames.c (release_dead_ssa_names): Remove invalidated
7451         cgraph edges too.
7452
7453 2007-01-15  Eric Christopher  <echristo@apple.com>
7454
7455         * ifcvt.c: Include vec.h, vecprim.h.
7456         (check_cond_move_block): New argument regs.
7457         Reorganize. Add registers used to regs.
7458         (cond_move_process_if_block): Use regs set above as
7459         loop bounds.
7460
7461 2007-01-15  Eric Christopher  <echristo@apple.com>
7462
7463         * config/darwin.h: Update copyright.
7464         (TARGET_OPTION_TRANSLATE_TABLE): Add umbrella.
7465         (LINK_COMMAND_SPEC): Add -u.
7466         (LINK_SPEC): Fix umbrella for above.
7467
7468 2007-01-15  Joseph S. Myers  <joseph@codesourcery.com>
7469
7470         * config/soft-fp/op-common.h, config/soft-fp/op-4.h: Update from
7471         glibc CVS.
7472
7473 2007-01-15  Tom Tromey  <tromey@redhat.com>
7474
7475         * doc/sourcebuild.texi (libgcj Tests): Don't mention jacks.
7476         * doc/install.texi (Testing): Don't mention jacks.
7477         (Configuration): Document --enable-java-maintainer-mode.  Move
7478         --with-java-home to libgcj-specific section.  Document
7479         --with-ecj-jar.
7480         (Prerequisites): Mention --enable-java-maintainer-mode, ecj1.
7481
7482 2007-01-15  Jan Hubicka  <jh@suse.cz>
7483
7484         * tree-ssa-dce.c (DCE_TODOs): New.
7485         (propagate_necessity): Return if something changed.
7486         (eliminate_unnecessary_stmts): Likewise.
7487         (perform_tree_ssa_dce): Return TODO flags when needed.
7488         (pass_dce, pass_dce_loop, pass_cd_dce): Remove TODO flags.
7489
7490 2007-01-15  Uros Bizjak  <ubizjak@gmail.com>
7491
7492         * config/i386/i386.md (fyl2xxf3_i387): Rename from fyl2x_xf3.
7493         (fyl2x_extend<mode>xf3_i387): New insn pattern.
7494         (log<mode>2): Rename from logsf2 and logdf2 and macroize insn
7495         patterns using X87MODEF12 mode macro.  Extend operand 1
7496         to XFmode. Use SSE_FLOAT_MODE_P to disable patterns for SSE math.
7497         (log10<mode>2): Ditto.
7498         (log2<mode>2): Ditto.
7499         (log1p<mode>2): Ditto.
7500         (logb<mode>2): Ditto.
7501         (fyl2xp1xf3_i387): Rename from fyl2xp1_xf3.
7502         (fyl2xp1_extend<mode>xf3_i387): New insn pattern.
7503         (*fxtractxf3_i387): Rename from *fxtractxf3.
7504         (fxtract_extend<mode>xf3_i387): New insn pattern.
7505         (ilogbsi2): Use match_dup 3, not match_operand:XF 3.
7506         * config/i386/i386.c (ix86_emit_i387_log1p): Use gen_fyl2xp1xf3_i387()
7507         and gen_fyl2xxf3_i387().
7508
7509 2007-01-14  Zdenek Dvorak <dvorakz@suse.cz>
7510
7511         * loop-unswitch.c (unswitch_loop): Do not call fix_loop_placement.
7512         * cfgloopmanip.c (fix_loop_placement): Made static.  Use
7513         get_loop_exit_edges.  Changed return type to bool.
7514         * cfgloop.h (fix_loop_placement): Declaration removed.
7515
7516 2007-01-14  Dorit Nuzman  <dorit@il.ibm.com>
7517
7518         * param.h (MIN_VECT_LOOP_BOUND): New.
7519         * params.def (MIN_VECT_LOOP_BOUND): New.
7520         * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Takes another
7521         argument - minimum threshold for number of iterations.
7522         * tree-vectorizer.h (slpeel_tree_peel_loop_to_edge): Add another
7523         argument to declaration.
7524         * tree-vect-analyze.c (vect_analyze_operations): Check value of
7525         MIN_VECT_LOOP_BOUND.
7526         * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Call
7527         slpeel_tree_peel_loop_to_edge with additional argument.
7528         (vect_do_peeling_for_alignment): Likewise.
7529         * doc/invoke.texi (min-vect-loop-bound): Document new param option.
7530
7531 2007-01-14  Uros Bizjak  <ubizjak@gmail.com>
7532
7533         PR target/30413
7534         * config/i386/i386.c (print_operand) ['z']: Output 'b' for
7535         operands of size 1.
7536
7537 2007-01-14  Jan Hubicka  <jh@suse.cz>
7538
7539         * tree-dfa.c (remove_referenced_var): New function.
7540         * tree-ssa-live.c (remove_unused_locals): Walk referenced vars and
7541         prune referenced vars list too.
7542         * tree-flow.h (remove_referenced_var): Declare.
7543
7544 2007-01-14  Jan Hubicka  <jh@suse.cz>
7545
7546         * tree-eh.c (add_stmt_to_eh_region_fn): Do not add call_exprs
7547         separately.
7548         (remove_stmt_from_eh_region_fn): Do not remove call_exprs.
7549         (verify_eh_throw_stmt_node, verify_eh_throw_table_statements): Kill.
7550         * except.h (verify_eh_throw_table_statements): Kill prototype.
7551         * cfgexpand.c (expand_gimple_basic_block): Propagate Eh regions
7552         into call exrepssions.
7553         * tree-optimize.c (execute_free_cfg_annotatiosn): Do not call
7554         eh trhow verifier.
7555         * tree-cfg.c: Include pointer-set.h.
7556         (verify_node_sharing): Work on pointer set.
7557         (verify_eh_throw_stmt_node): New.
7558         (verify_stmts): Use pointers sets, verify throw_stmt.
7559
7560 2007-01-13  Zdenek Dvorak <dvorakz@suse.cz>
7561
7562         * ipa-reference.c (analyze_function): Consider also addresses taken
7563         in phi nodes.
7564
7565 2007-01-12  Roger Sayle  <roger@eyesopen.com>
7566
7567         * c-typeck.c (null_pointer_constant_p): Replace use of
7568         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
7569         (build_c_cast): Likewise.
7570
7571 2007-01-12  Roger Sayle  <roger@eyesopen.com>
7572
7573         * tree.h (force_fit_type_double): Remove unused final argument.
7574         * c-common.c (constant_expression_warning): Replace use of
7575         TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
7576         (convert_and_check): Likewise.
7577         (shorten_compare): Update call to force_fit_type_double.
7578         (c_common_truthvalue_conversion) <INTEGER_CST>: Use integer_zerop.
7579         * convert.c (convert_to_pointer): Update call to
7580         force_fit_type_double.
7581         * fold-const.c (force_fit_type_double): Remove overflowed_const
7582         argument.
7583         (int_const_binop, fold_convert_const_int_from_int,
7584         fold_convert_const_int_from_real, fold_div_compare,
7585         fold_sign_changed_comparison, fold_unary, fold_negate_const,
7586         fold_abs_const, fold_not_const): Remove the final argument from
7587         calls to force_fit_type_double.
7588
7589 2007-01-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>
7590
7591         * configure.ac: Set insn to "nop" for spu-*-* also.
7592         * configure: Regenerate.
7593
7594 2007-01-12  Olga Golovanevsky  <olga@il.ibm.com>
7595
7596         * builtins.def : Add BUILT_IN_FREE.
7597
7598 2007-01-12  Jan Hubicka  <jh@suse.cz>
7599
7600         PR tree-optimization/30443
7601         * tree-inline.c (tree_function_versioning): Do not optimize when
7602         cloning for inlining.
7603
7604 2007-01-12  Zdenek Dvorak <dvorakz@suse.cz>
7605
7606         * doc/loop.texi: Document recording of loop exits.
7607         * cfgloopmanip.c (loopify, duplicate_loop): Use alloc_loop.
7608         (update_single_exits_after_duplication,
7609         update_single_exit_for_duplicated_loop,
7610         update_single_exit_for_duplicated_loops): Removed.
7611         (duplicate_loop_to_header_edge): Do not call
7612         update_single_exits_after_duplication and
7613         update_single_exit_for_duplicated_loops.
7614         (loop_version): Do not update single_exit information.
7615         (fix_loop_structure): Use record_loop_exits instead of
7616         mark_single_exit_loops.
7617         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update
7618         the lists of loop exits.
7619         * cfghooks.c (redirect_edge_and_branch, redirect_edge_and_branch_force,
7620         split_edge, merge_blocks): Update the lists of loop exits.
7621         * modulo-sched.c (sms_schedule): Pass LOOPS_HAVE_RECORDED_EXITS to
7622         loop_optimizer_init.
7623         * loop-init.c (loop_optimizer_init): Call record_loop_exits instead
7624         of mark_single_exit_loops.
7625         (loop_optimizer_finalize): Call release_recorded_exits.
7626         * tree-ssa-loop.c (tree_loop_optimizer_init): Pass
7627         LOOPS_HAVE_RECORDED_EXITS to loop_optimizer_init.
7628         * tree-vectorizer.c (slpeel_tree_duplicate_loop_to_edge_cfg): Do not
7629         update single exit information.
7630         * lambda-code.c (perfect_nestify): Ditto.
7631         * cfgloop.c (flow_loop_free): Destroy the list of exits of the loop.
7632         (mark_single_exit_loops): Removed.
7633         (alloc_loop, loop_exit_hash, loop_exit_eq, loop_exit_free,
7634         get_exit_descriptions, rescan_loop_exit, record_loop_exits,
7635         dump_recorded_exit, dump_recorded_exits, release_recorded_exits): New
7636         functions.
7637         (get_loop_exit_edges, single_exit): Use recorded exit lists.
7638         (add_bb_to_loop, remove_bb_from_loops): Update the lists of loop exits.
7639         (verify_loop_structure): Verify consistency of the exit lists.
7640         (flow_loops_find): Use alloc_loop.  Initialize exits hash.
7641         (set_single_exit): Removed.
7642         * cfgloop.h (struct loop_exit): New function.
7643         (struct loop): single_exit_ field replaced by exits field.
7644         (LOOPS_HAVE_MARKED_SINGLE_EXITS): Replaced by LOOPS_HAVE_RECORDED_EXITS.
7645         (struct loops): Added exits hash.
7646         (mark_single_exit_loops, set_single_exit): Declaration removed.
7647         (release_recorded_exits, record_loop_exits, rescan_loop_exit): Declare.
7648
7649 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7650
7651         * doc/invoke.texi: Avoid use of @headitem.
7652
7653 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7654
7655         * cse.c (cse_insn): Move HAVE_CC0 code after declarations.
7656
7657 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7658
7659         * doc/install.texi: Fix m68k-*-* anchor and add m68k-*-* to the
7660         list of targets.
7661
7662 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
7663             Richard Sandiford  <richard@codesourcery.com>
7664
7665         * doc/invoke.texi: Document -mno-bitfield, -mno-rtd and -mno-short.
7666         * config/m68k/m68k.opt: Resort options.
7667         (mbitfield, mrtd, mshort): Remove RejectNegative properties.
7668
7669 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
7670             Richard Sandiford  <richard@codesourcery.com>
7671
7672         * doc/invoke.texi: Document the macros that are defined by
7673         m68k's -mtune and -mhard-float options.
7674         * config/m68k/m68k-protos.h (m68k_cpp_cpu_ident) Declare.
7675         (m68k_cpp_cpu_family): Likewise.
7676         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Add a full set
7677         of __ucfv*__ macros.  Define __mcffpu__ if generating code for
7678         ColdFire FPUs.  Define __mcf_cpu_* and __mcf_family_* macros.
7679         * config/m68k/m68k.c (m68k_cpp_cpu_ident): New function.
7680         (m68k_cpp_cpu_family): Likewise.
7681
7682 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7683
7684         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Treat all mc68*
7685         macros besides mc68000 as tuning macros.  Use a switch statement
7686         to set them and mcpu32.
7687
7688 2007-01-12  Julian Brown  <julian@codesourcery.com>
7689
7690         * config/m68k/m68k.h: Use TARGET_68040 instead of TARGET_68040_ONLY.
7691         (TARGET_68040_ONLY): Rename to...
7692         (TARGET_68040): ...this.
7693         * config/m68k/m68k.c: Use TARGET_68040 instead of TARGET_68040_ONLY.
7694         * config/m68k/m68k.md: Likewise.
7695
7696 2007-01-12  Julian Brown  <julian@codesourcery.com>
7697             Nathan Sidwell  <nathan@codesourcery.com>
7698             Richard Sandiford  <richard@codesourcery.com>
7699
7700         * config.gcc (m680[012]0-*-*, m68k*-*-*): Set m68k_cpu_ident to
7701         the -mcpu= argument associated with the --with-cpu setting.
7702         Define M68K_DEFAULT_TUNE to the default -mtune= option,
7703         if different from the one implied by the -mcpu setting.
7704         Accept --with-cpu=FOO if FOO is listed in m68k-devices.def,
7705         using mcpu=FOO as the default CPU option.  Set target_cpu_default2.
7706         * doc/invoke.texi: Mention ColdFire in the introduction to the
7707         m68k options.  Document the new -march, -mcpu, -mtune, -mdiv,
7708         -mno-div and -mhard-float options.  Make -m68881 a synonym for
7709         -mhard-float.  Document the previously-undocumented -m5206e,
7710         -m528x, -m5307 and -m5407 options.  Tweak the existing option
7711         documentation for consistency.
7712         * doc/install.texi: Mention new --with-cpu arguments.
7713         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Only use the
7714         default CPU if neither -mcpu nor -march are specified.
7715         (ASM_CPU_SPEC): Pass down -mcpu and -march options.
7716         (TARGET_CPU_CPP_BUILTINS): Set __mcfisa*__ macros from
7717         TARGET_ISA*.  Set the legacy __mcf*__ cpu macros in the same way,
7718         using m68k_tune to decide between families that implement the
7719         same ISA.  Use m68k_tune to set __mcfv4e__.
7720         (FL_BITFIELD, FL_68881, FL_COLDFIRE, FL_CF_HWDIV, FL_CF_MAC)
7721         (FL_CF_EMAC, FL_CF_EMAC_B, FL_CF_USP, FL_CF_FPU, FL_ISA_68000)
7722         (FL_ISA_68010, FL_ISA_68020, FL_ISA_68040, FL_ISA_A, FL_ISA_B)
7723         (FL_ISA_C, FL_ISA_MMU): New macros.
7724         (MASK_COLDFIRE): Delete.
7725         (TARGET_68010, TARGET_68020, TARGET_68040_ONLY, TARGET_COLDFIRE)
7726         (TARGET_ISAB): Redefine in terms of m68k_cpu_flags.
7727         (TARGET_68881, TARGET_COLDFIRE_FPU): Redefine in terms of m68k_fpu.
7728         (TARGET_HARD_FLOAT): Do not define here.
7729         (TARGET_ISAAPLUS, TARGET_ISAC): New macros.
7730         (TUNE_68000): New macro.
7731         (TUNE_68000_10): Redefine in terms of TUNE_68000 and TUNE_68010.
7732         (TUNE_68010, TUNE_68030, TUNE_68040, TUNE_68060, TUNE_CPU32)
7733         (TUNE_CFV2): Redefine in terms of m68k_tune.
7734         (uarch_type, target_device, fpu_type): New enums.
7735         (m68k_cpu, m68k_tune, m68k_fpu, m68k_cpu_flags): Declare.
7736         * config/m68k/m68k.c (TARGET_DEFAULT): Remove MASK_68881.
7737         (FL_FOR_isa_00, FL_FOR_isa_10, FL_FOR_isa_20, FL_FOR_isa_40)
7738         (FL_FOR_isa_cpu32, FL_FOR_isa_a, FL_FOR_isa_aplus, FL_FOR_isa_b)
7739         (FL_FOR_isa_c): New macros.
7740         (m68k_isa): New enum.
7741         (m68k_target_selection): New structure.
7742         (all_devices, all_isas, all_microarchs): New tables.
7743         (m68k_cpu_entry, m68k_arch_entry, m68k_tune_entry, m68k_cpu)
7744         (m68k_tune, m68k_fpu, m68k_cpu_flags): New variables.
7745         (MASK_ALL_CPU_BITS): Delete.
7746         (m68k_find_selection): New function.
7747         (m68k_handle_option): Handle -mcpu=, -march= and -mtune=.
7748         Map the legacy target options to a combination of the new ones.
7749         (override_options): Set m68k_cpu, m68k_tune, m68k_fpu and
7750         m68k_cpu_flags.  Handle M68K_DEFAULT_TUNE.  Use m68k_cpu_flags
7751         to derive default MASK_BITFIELD, MASK_CF_HWDIV and MASK_HARD_FLOAT
7752         settings.
7753         * config/m68k/m68k.opt (m5200, m5206e, m528x, m5307, m5407, mcfv4e)
7754         (m68010, m68020, m68020-40, m68020-60, m68030, m68040): Remove Mask
7755         properties.
7756         (m68881, msoft-float): Change mask from 68881 to HARD_FLOAT.
7757         (march=, mcpu=, mdiv, mhard-float, mtune=): New options.
7758         * config/m68k/m68k-devices.def: New file.
7759
7760 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7761             Nathan Sidwell  <nathan@codesourcery.com>
7762
7763         * config/m68k/m68k.h (ASM_CPU_SPEC, ASM_SPEC, EXTRA_SPECS)
7764         (SUBTARGET_EXTRA_SPECS): New macros.
7765         * config/m68k/linux.h (ASM_SPEC): Remove CPU flags;
7766         use %(asm_cpu_spec) instead.
7767         * config/m68k/m68k-none.h (ASM_SPEC): Likewise.
7768         * config/m68k/openbsd.h (ASM_SPEC): Likewise.
7769         * config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
7770         (EXTRA_SPECS): Rename to...
7771         (SUBTARGET_EXTRA_SPECS): ...this.
7772
7773 2007-01-12  Nathan Sidwell  <nathan@codesourcery.com>
7774             Richard Sandiford  <richard@codesourcery.com>
7775             Julian Brown  <julian@codesourcery.com>
7776
7777         * config.gcc (m68k-*-aout*, m68k-*-coff*, m68020-*-elf*, m68k-*-elf*)
7778         (m68k-*-uclinux*, m68k-*-linux*, m68k-*-rtems*): Set default_m68k_cpu
7779         to the configuration's default CPU.
7780         (m68010-*-netbsdelf*, m68k*-*-netbsdelf*, m68k*-*-openbsd*): Likewise.
7781         Remove default masks.
7782         (m680[012]0-*-*): Set the default with_cpu to the first part of
7783         the target name.
7784         (m68k*-*-*): Set the default with_cpu to m$default_m68k_cpu.
7785         (m68k*-*-linux): Extend the --with-cpu handling to...
7786         (m680[012]0-*-*, m68k*-*-*): ...these configurations.  Allow m68000
7787         and m68010.  Don't set target_cpu_default2.
7788         * doc/install.texi: Document --with-cpu for m68k.
7789         * config/m68k/m68k.h (OPTION_DEFAULT_SPECS): Define.
7790         * config/m68k/m68k-none.h (TARGET_CPU_DEFAULT, M68K_CPU_m68k)
7791         (M68K_CPU_m68000, M68K_CPU_m68010, M68K_CPU_m68020, M68K_CPU_m68030)
7792         (M68K_CPU_m68040, M68K_CPU_m68302, M68K_CPU_m68332, TARGET_DEFAULT)
7793         (ASM_CPU_DEFAULT_SPEC, CC1_CPU_DEFAULT_SPEC): Delete.
7794         (ASM_SPEC): Remove use of %(asm_cpu_default).
7795         (EXTRA_SPECS, SUBTARGET_EXTRA_SPECS, MULTILIB_DEFAULTS): Delete.
7796         * config/m68k/linux.h (TARGET_DEFAULT): Delete.
7797         (CPP_SPEC): Merge definitions.  Do not handle __HAVE_68881__ here.
7798         * config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define
7799         __HAVE_FPU__ if TARGET_HARD_FLOAT.
7800         (TARGET_DEFAULT): Delete.
7801         (EXTRA_SPECS): Delete cpp_cpu_default_spec, cpp_cpu_spec,
7802         cpp_fpu_spec, asm_default_spec and netbsd_cpp_spec.
7803         (CPP_CPU_SPEC): Delete.
7804         (TARGET_VERSION): Merge definitions, using TARGET_68010 to pick
7805         the appropriate string.
7806         (CPP_CPU_DEFAULT_SPEC, ASM_DEFAULT_SPEC, CPP_FPU_SPEC): Delete.
7807         (CPP_SPEC): Define to NETBSD_CPP_SPEC.
7808         (ASM_SPEC): Don't use %(asm_default_spec).
7809         * config/m68k/m68k.c (TARGET_DEFAULT_TARGET_FLAGS): Remove
7810         TARGET_DEFAULT and add MASK_68881.
7811         * config/m68k/m68k.md: Remove mention of TARGET_DEFAULT from comments.
7812
7813 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7814
7815         * config.gcc (m68010-*-netbsdelf*): Add MASK_68010.
7816         (m68k*-*-netbsdelf*, m68k*-*-openbsd*, m68k*-linux*): Add
7817         MASK_68010 alongside MASK_68020.
7818         * doc/invoke.texi: Document -m68010.
7819         * config/m68k/m68k.opt (m68010): New.
7820         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define mc68010
7821         if TUNE_68010.
7822         (TUNE_68010): New macro.
7823         * config/m68k/m68k-none.h (M68K_CPU_m68k, M68K_CPU_m68010)
7824         (M68K_CPU_m68020, M68K_CPU_m68030, M68K_CPU_m68040)
7825         (M68K_CPU_m68332): Add MASK_68010.
7826         * config/m68k/linux.h (TARGET_DEFAULT): Add MASK_68010 to
7827         fallback definition.
7828         * config/m68k/netbsd-elf.h (CPP_CPU_SPEC): Remove now-redundant
7829         defines.
7830         * config/m68k/m68k.c (MASK_ALL_CPU_BITS): Add MASK_68010.
7831         (m68k_handle_option): Handle OPT_m68010.  Add MASK_68010
7832         to all entries that use MASK_68020.
7833         (output_move_simode_const, output_move_himode, output_move_qimode)
7834         (output_move_stricthi, output_move_strictqi): Use TARGET_68010
7835         instead of TARGET_68020 to select clr behavior.  Remove comment
7836         about there being no TARGET_68010.
7837         * config/m68k/m68k.md: Likewise throughout.
7838
7839 2007-01-12  Julian Brown  <julian@codesourcery.com>
7840
7841         * config/m68k/m68k.h (TARGET_ISAB): New macro.
7842         * config/m68k/m68k.c: Use TARGET_ISAB rather than TARGET_CFV4.
7843         * config/m68k/m68k.md: Likewise.
7844
7845 2007-01-12  Julian Brown  <julian@codesourcery.com>
7846
7847         * config/m68k/m68k.h (LEGITIMATE_INDEX_P, LEGITIMIZE_ADDRESS): Use
7848         TARGET_COLDFIRE_FPU instead of TARGET_CFV4E.
7849
7850 2007-01-12  Julian Brown  <julian@codesourcery.com>
7851
7852         * config/m68k/m68k.h (TUNE_68040_60): New macro.
7853         * config/m68k/m68k.c (standard_68881_constant_p): Use it.
7854         * config/m68k/m68k.md: Likewise.
7855
7856 2007-01-12  Julian Brown  <julian@codesourcery.com>
7857             Richard Sandiford  <richard@codesourcery.com>
7858
7859         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Use TUNE_68030
7860         instead of TARGET_68030, TUNE_68040 instead of TARGET_68040,
7861         TUNE_68060 instead of TARGET_68060 and TUNE_CPU32 instead of
7862         TARGET_CPU32.
7863         (TARGET_CPU32): Rename to...
7864         (TUNE_CPU32): ...this.
7865         (TUNE_68000_10, TUNE_68030, TUNE_68040, TUNE_68060)
7866         (TUNE_CFV2): New macros.
7867         * config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Simplify;
7868         remove conditions that are implied by TARGET_68020.
7869         * config/m68k/m68k.c (m68k_output_function_prologue): Use TUNE_68040
7870         instead of TARGET_68040 and TUNE_CPU32 instead of TARGET_CPU32.
7871         (m68k_output_function_epilogue): Likewise.
7872         (m68k_rtx_costs): Likewise.  Use TUNE_68060 instead of TARGET_68060
7873         and TUNE_CFV2 instead of TARGET_5200.  Use TUNE_68000_10 instead of
7874         "!TARGET_68020 && !TARGET_COLDFIRE" to choose between 68000 and
7875         non-68000 timings.  Refactor multiplication and division costs.
7876         (output_addsi3): Use TUNE_68040 instead of TARGET_68040 and
7877         TUNE_CPU32 instead of TARGET_CPU32.
7878         (standard_68881_constant_p): Use TUNE_68040 instead of TARGET_68040
7879         and TUNE_68060 instead of TARGET_68060.
7880         * config/m68k/m68k.md: Use TUNE_68040 instead of TARGET_68040,
7881         TUNE_68060 instead of TARGET_68060, and TUNE_CPU32 instead of
7882         TARGET_CPU32.
7883         (movsi_const0): Use TUNE_68000_10 rather than "!TARGET_68020
7884         && !TARGET_COLDFIRE" to choose between moveq and clr.
7885         Likewise in the unnamed movsf pattern.
7886         (ashlsi_17_24, lshrsi_17_24): Guard with TUNE_68000_10 rather than
7887         "!TARGET_68020 && !TARGET_COLDFIRE".  Likewise the unnamed
7888         ashiftrt pattern.
7889
7890 2007-01-12  Richard Sandiford  <richard@codesourcery.com>
7891
7892         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Increase amount
7893         of tabbing before backslashes.
7894
7895 2007-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
7896
7897         * pa-linux.h (ASM_OUTPUT_INTERNAL_LABEL): Undefine.
7898         * pa.h (ASM_OUTPUT_LABEL): Output colon when using GAS.
7899         (ASM_OUTPUT_INTERNAL_LABEL): Define.
7900
7901 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
7902
7903         * tree-ssa-loop-ivopts.c (extract_cond_operands): Split from
7904         find_interesting_uses_cond.
7905         (find_interesting_uses_cond): Use extract_cond_operands.
7906         (rewrite_use_compare): Use extract_cond_operands and
7907         force_gimple_operand_bsi.  Do not call update_stmt.
7908         (determine_use_iv_cost_condition): Use extract_cond_operands.
7909         Return cheaper of using original bound and changing the exit bound.
7910
7911 2007-01-11  Zdenek Dvorak <dvorakz@suse.cz>
7912
7913         PR tree-optimization/29516
7914         * tree-ssa-address.c (tree_mem_ref_addr, add_to_parts,
7915         most_expensive_mult_to_index, addr_to_parts,
7916         create_mem_ref, maybe_fold_tmr): Make the type of
7917         fields of TARGET_MEM_REF sizetype.
7918         (move_fixed_address_to_symbol, move_pointer_to_base):
7919         New functions.
7920         * tree.def (TARGET_MEM_REF): Add comment on types of
7921         the operands.
7922
7923 2007-01-11  Joseph Myers  <joseph@codesourcery.com>
7924
7925         * c-common.c (vector_types_convertible_p): Treat opaque types as
7926         always convertible if they have the same size, but not otherwise.
7927
7928 2007-01-11  Steven Bosscher  <steven@gcc.gnu.org>
7929
7930         * ifcvt.c (struct noce_if_info): Add comments to the fields.
7931         Remove the b_unconditional field.
7932         (noce_try_sign_mask): Do not look at b_unconditional.
7933         (noce_process_if_block): Do not use merge_if_blocks.  Update
7934         the CFG here.  Do not set b_unconditional.
7935         (cond_move_process_if_block): Likewise.
7936         (find_cond_trap): Likewise.
7937         (check_cond_move_block): Require simple jump insns at the end
7938         of the basic block.
7939
7940 2007-01-11  Jan Hubicka  <jh@suse.cz>
7941
7942         PR tree-optimization/1046
7943         * tree-tailcall.c (suitable_for_tail_call_opt_p): Use TREE_ADDRESSABLE
7944         when alias info is not ready.
7945         (pass_tail_recursion): Do not require aliasing.
7946         * tree-ssa-copyrename.c (pass_rename_ssa_cop): Likewise.
7947         * tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Likewise.
7948         * tree-ssa-copy.c (pass_copy_prop): Likewise.
7949         * tree-ssa-forwprop.c (pass_forwprop): Likewise.
7950         * tree-ssa-dce.c (pass_dce, pass_dce_loop, pass_cd_dce): Likewise.
7951         * passes.c (init_optimization_passes): Execute rename_ssa_copies,
7952         ccp, forwprop, copy_prop, merge_phi, copy_prop, dce and tail recursion
7953         before inlining.
7954         * tree-ssa-operands.c (add_virtual_operand, get_indirect_ref_operand):
7955         When aliasing is not build, mark statement as volatile.
7956
7957 2007-01-11  Tom Tromey  <tromey@redhat.com>
7958
7959         PR preprocessor/15185, PR preprocessor/20989:
7960         * doc/cppopts.texi <-MT>: Update description of algorithm for
7961         computing default target.
7962         <-M, -MD>: Reword "basename" text.
7963
7964 2007-01-11  Roger Sayle  <roger@eyesopen.com>
7965
7966         * builtins.c (expand_builtin_pow, expand_builtin_powi,
7967         fold_builtin_cabs, fold_builtin_sqrt, fold_builtin_trunc,
7968         fold_builtin_floor, fold_builtin_ceil, fold_builtin_round,
7969         fold_builtin_int_int_roundingfn, fold_builtin_bitop,
7970         fold_builtin_bswap, real_constp, fold_builtin_pow,
7971         fold_builtin_powi, fold_builtin_signbit, fold_builtin_copysign,
7972         do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3, do_mpfr_sincos): Replace
7973         uses of the macro TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
7974         * convert.c (convert_to_pointer): Likewise.
7975         * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.
7976         * fold-const.c (force_fit_type, fold_negate_expr, int_const_binop,
7977         const_binop, fold_convert_const_int_from_int,
7978         fold_convert_const_int_from_real,
7979         fold_convert_const_real_from_real, sign_bit_p,
7980         optimize_minmax_comparison, extract_muldiv_1, fold_div_compare,
7981         fold_sign_changed_comparison, fold_unary, fold_comparison,
7982         fold_binary, multiple_of_p, tree_Expr_non_zero_p,
7983         fold_negate_const, fold_abs_const, fold_not_const): Likewise.
7984         * print-tree.c (print_node_brief, print_node): Likewise.
7985         * stor-layout.c (place_field, layout_type): Likewise.
7986         * tree-chrec.c (keep_cast): Likewise.
7987         * tree.c (build_vector, build_real, build_real_from_int_cst,
7988         build_complex): Likewise.
7989
7990 2007-01-11  Roger Sayle  <roger@eyesopen.com>
7991
7992         * tree.h (TREE_CONSTANT_OVERFLOW): Obsolete.  For the time being,
7993         treat TREE_CONSTANT_OVERFLOW as a synonym of TREE_OVERFLOW.
7994
7995 2007-01-11  Paolo Bonzini  <bonzini@gnu.org>
7996
7997         * configure.ac (strict1_warn): Rename to strict_warn.
7998         (WERROR, --enable-werror, symlink hacks, stage1_cflags,
7999         cc_set_by_configure, quoted_cc_set_by_configure,
8000         stage_prefix_set_by_configure, quoted_stage_prefix_set_by_configure,
8001         all_boot_languages, all_stagestuff): Remove.
8002         (target_list): Remove bootstrap targets.
8003         * Makefile.in (quickstrap): Unconditionally make a synonym of all.
8004         (BOOT_LANGUAGES, STAGE1_CFLAGS, STAGE1_CHECKING,
8005         REMAKEFLAGS, FLAGS_TO_PASS, PREPEND_DOTDOT_TO_RELATIVE_PATHS,
8006         SUBDIR_FLAGS_TO_PASS, WERROR_FLAGS, STRICT2_WARN, LANG_STAGESTUFF,
8007         VOL_FILES, POSTSTAGE1_FLAGS_TO_PASS, STAGE2_FLAGS_TO_PASS,
8008         STAGEPROFILE_FLAGS_TO_PASS, STAGEFEEDBACK_FLAGS_TO_PASS, stage1_build,
8009         stage1_copy, stage2_build, stage2_copy, stageprofile_build,
8010         stageprofile_copy, stage3_build, stage3_copy, stagefeedback_build,
8011         stagefeedback_copy, stage4_build, clean_s1, clean_sw, bootstrap,
8012         bootstrap-lean, bootstrap2, bootstrap2-lean, bootstrap3,
8013         bootstrap3-lean, bootstrap4, bootstrap4-lean, unstage1, unstage2,
8014         unstage3, unstage4, unstageprofile, unstagefeedback, restage, restage2,
8015         restage3, restage4, restageprofile, restagefeedback, bubbleestrap,
8016         cleanstrap, unstrap, restrap, *compare, *compare3, *compare4,
8017         *compare-lean, *compare3-lean, *compare4-lean, stage1-start, stage1,
8018         stage2-start, stage2, stage3-start, stage3, stage4-start, stage4,
8019         stageprofile-start, stageprofile, stagefeedback-start, stagefeedback,
8020         risky-stage1, risky-stage2, risky-stage3, risky-stage4): Remove.
8021         (ORDINARY_FLAGS_TO_PASS): Rename to FLAGS_TO_PASS.
8022         (STAGECOPYSTUFF, STAGEMOVESTUFF): Consolidate into MOSTLYCLEANFILES.
8023         (mostlyclean): Adjust.
8024         (clean, distclean): Don't mention bootstrap stuff.
8025         * configure: Regenerate.
8026         * ada/config-lang.in, cp/config-lang.in, forttran/config-lang.in,
8027         java/config-lang.in, objc/config-lang.in, objcp/config-lang.in,
8028         treelang/config-lang.in (stagestuff): Remove.
8029         * doc/sourcebuild.texi (stage1, stage2, stage3, stage4,
8030         stageprofile, stagefeedback, stagestuff): Remove mention.
8031
8032 2007-01-11  Nick Clifton  <nickc@redhat.com>
8033
8034         * config/mcore/predicates.md (mcore_general_movesrc_operand):
8035         Accept CONSTs.
8036         (mcore_general_movdst_operand): Do not accept CONST_INTs.
8037         (mcore_arith_K_S_operand): Run the test for the S constraint not
8038         the test for the M constraint.
8039         (mcore_addsub_operand): Do not accept integer values that are
8040         larger than 32 bits.
8041         * config/mcore/mcore.md: Remove unused constraints from split.
8042         (andsi3): Use HOST_WIDE_INT instead of int to hold an INTVAL.
8043         (addsi3): Likewise.
8044         (allocate_stack): Likewise.
8045         * config/mcore/mcore.c (mcore_print_operand): Restrict output of P
8046         operands to 32 bits.
8047         (mcore_const_costs): Use HOST_WIDE_INT instead of int to hold an
8048         INTVAL.
8049         (mcore_and_cost, mcore_modify_comparison, const_ok_for_mcore,
8050         mcore_const_ok_for_inline, mcore_const_trick_uses_not,
8051         try_constant_tricks, mcore_num_ones, mcore_num_zeros,
8052         mcore_output_bclri, mcore_output_andn, output_inline_const,
8053         mcore_output_move, mcore_output_movedouble): Likewise.
8054         (mcore_output_cmov): Use CONST_OK_FOR_M and CONST_OK_FOR_N.
8055         (output_inline_const): Likewise.
8056         (output_inline_const): Fix format strings used in sprintf
8057         statements.
8058         * config/mcore/mcore-protos.h: Update prototypes for changed
8059         functions in mcore.c.
8060         * config/mcore/mcore.h (CONST_OK_FOR_I): Cast values to
8061         HOST_WIDE_INT and not int.
8062         (CONST_OK_FOR_J, CONST_OK_FOR_K, CONST_OK_FOR_L, CONST_OK_FOR_M,
8063         CONST_OK_FOR_N): Likewise.
8064         (LEGITIMATE_CONSTANT_P): Also check CONSTANT_P.
8065         (GO_IF_LEGITIMATE_INDEX): Use HOST_WIDE_INT instead of int to hold
8066         an INTVAL.
8067
8068 2007-01-10  Jan Hubicka  <jh@suse.cz>
8069
8070         * tree-vrp.c (remove_range_assertions): Release defs.
8071         * tree-ssa-loop-ivopts.c (rmeove_statement): Likewise.
8072         * tree-ssa-dom.c (remove_stmt_or_phi): Likewise.
8073
8074 2007-01-10  Paul Brook  <paul@codesourcery.com>
8075
8076         * config/arm/arm.c (arm_rtx_costs_1): Handle mutiply-subtract.
8077         * config/arm/arm.md (mulsi3subsi): New insn.
8078
8079 2007-01-10  Zdenek Dvorak <dvorakz@suse.cz>
8080
8081         * tree-ssa-loop-manip.c (tree_unroll_loop): Make it a wrapper over ...
8082         (tree_transform_and_unroll_loop): New.
8083         * tree-flow.h (transform_callback, tree_transform_and_unroll_loop):
8084         Declare.
8085
8086 2007-01-10  Robert Kennedy <jimbob@google.com>
8087
8088         * fold-const.c (fold_comparison): Fold comparisons like (x *
8089         1000 < 0) to (x < 0).
8090
8091 2007-01-10  Ian Lance Taylor  <iant@google.com>
8092
8093         * tree-pretty-print.c (dump_generic_node): Print parentheses when
8094         operands have the same priority.
8095
8096 2007-01-10  Tom Tromey  <tromey@redhat.com>
8097
8098         * fold-const.c (fold_truthop): Don't check can_use_bit_fields_p.
8099         (fold_binary): Likewise.
8100         * langhooks.c (lhd_can_use_bit_fields_p): Removed.
8101         * langhooks-def.h (lhd_can_use_bit_fields_p): Removed.
8102         (LANG_HOOKS_CAN_USE_BIT_FIELDS_P): Removed.
8103         (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CAN_USE_BIT_FIELDS_P.
8104         * langhooks.h (struct lang_hooks): Removed field
8105         'can_use_bit_fields_p'.
8106
8107 2007-01-10  Ralf Corsépius <ralf.corsepius@rtems.org>
8108
8109         * config/bfin/t-bfin, config/bfin/t-bfin-elf: Remove GCC_CFLAGS.
8110
8111 2007-01-10  Razya Ladelsky  <razya@il.ibm.com>
8112
8113         * function.c (get_last_funcdef_no): New function.
8114         * function.h (get_last_funcdef_no): Declare.
8115         * tree-inline.c (initialize_cfun): Add initialization.
8116         (tree_function_versioning): Cleanup.
8117
8118 2007-01-10  Jan Hubicka  <jh@suse.cz>
8119
8120         * tree-inline.c (setup_one_parameter): Do not propagate into abnormal
8121         PHIs.
8122
8123 2007-01-10  Sa Liu  <saliu@de.ibm.com>
8124             Ben Elliston  <bje@au.ibm.com>
8125
8126         * spu.h (STACK_SAVE_AREA): Use VOIDmode for SAVE_FUNCTION, SImode
8127         for SAVE_NONLOCAL and Pmode for any other save level.
8128         * spu-protos.h (spu_restore_stack_block): Declare.
8129         * spu.md (save_stack_block): Remove.
8130         (restore_stack_block): Call spu_restore_stack_block.
8131         * spu.c (spu_restore_stack_block): New function.
8132         (spu_expand_epilogue): Remove old comment.
8133
8134 2007-01-09  Zdenek Dvorak <dvorakz@suse.cz>
8135
8136         PR tree-optimization/30322
8137         * tree-ssa-loop-ivopts.c (fold_affine_expr, iv_value): Removed.
8138         (cand_value_at): Return the value as aff_tree.
8139         (may_eliminate_iv): Convert the bound from aff_tree to tree.
8140         * tree-affine.c (aff_combination_add_cst, aff_combination_add_product,
8141         aff_combination_mult): New functions.
8142         (aff_combination_add): Use aff_combination_add_cst.
8143         (aff_combination_convert): Allow conversions to a wider type.
8144         (tree_to_aff_combination): Handle BIT_NOT_EXPR.
8145         * tree-affine.h (aff_combination_mult): Declare.
8146
8147 2007-01-09  Carlos O'Donell  <carlos@codesourcery.com>
8148
8149         * doc/tm.texi: Update documentation to reflect reality of exec
8150         and start file search behaviours. Update copyright year.
8151         * doc/invoke.texi: Explain how GCC_EXEC_PREFIX is used to find
8152         header file directories.
8153
8154 2007-01-09  Uros Bizjak  <ubizjak@gmail.com>
8155
8156         * config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
8157         (*cosxf2): Rename to cosxf2_i387.
8158         (*sindf2, *sinsf2): Extend operand 1 to XFmode.  Macroize patterns
8159         using X87MODEF12 mode macro. Rename patterns to
8160         *sin_extend<mode>xf2_i387.  Use SSE_FLOAT_MODE_P to disable patterns
8161         for SSE math.
8162         (*cosdf2, *cossf2): Ditto.
8163         (sincosdf3, sincossf3): Ditto.  Rewrite corresponding splitters
8164         to match extended input operands.
8165         (sincos<mode>3): New expander.
8166         (*sinextendsfdf2, *cosextendsfdf2, *sincosextendsfdf3): Remove
8167         insn patterns and corresponding splitters.
8168
8169 2007-01-09  Kaz Kojima  <kkojima@gcc.gnu.org>
8170
8171         * config/sh/t-linux (TARGET_LIBGCC2_CFLAGS): Delete.
8172         (SHLIB_MAPFILES, SHLIB_LINK, SHLIB_INSTALL): Likewise.
8173
8174 2007-01-09  Nicolas Pitre  <nico@cam.org>
8175
8176         PR target/30173
8177         * arm/ieee754-df.S (Lad_s): Also test the low word of X for zero.
8178
8179 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
8180
8181         * target.h (struct gcc_target): New field library_rtti_comdat.
8182         * target-def.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): New.
8183         (TARGET_CXX): Add TARGET_CXX_LIBRARY_RTTI_COMDAT.
8184         * doc/tm.texi (C++ ABI): Document TARGET_CXX_LIBRARY_RTTI_COMDAT.
8185         * config/darwin.h (TARGET_CXX_LIBRARY_RTTI_COMDAT): Define.
8186
8187 2007-01-08  Geoffrey Keating  <geoffk@apple.com>
8188
8189         * doc/invoke.texi (Optimize Options): Correct description of -O0.
8190
8191 2007-01-08  Richard Guenther  <rguenther@suse.de>
8192
8193         * tree.h (force_fit_type_double): Export.
8194         (force_fit_type): Remove.
8195         * fold-const.c (force_fit_type_double): New function.
8196         (force_fit_type): Remove.
8197         (int_const_binop): Use it.
8198         (fold_convert_const_int_from_int): Likewise.
8199         (fold_convert_const_int_from_real): Likewise.
8200         (fold_div_compare): Likewise.
8201         (fold_sign_changed_comparison): Likewise.
8202         (fold_unary): Likewise.
8203         (fold_negate_const): Likewise.
8204         (fold_abs_const): Likewise.
8205         (fold_not_const): Likewise.
8206         * c-common.c (shorten_compare): Use force_fit_type_double.
8207         * convert.c (convert_to_pointer): Likewise.
8208
8209 2007-01-08  Richard Guenther  <rguenther@suse.de>
8210
8211         * tree.h (build_int_cst_wide_type): Export.
8212         * tree.c (build_int_cst_wide_type): New function.
8213         (build_int_cst_wide): Fix comment.
8214         * builtins.c (fold_builtin_object_size): Use build_int_cst
8215         to build -1 or 0 of the correct type.  Use fit_double_type
8216         to check for overflow.
8217         * fold-const.c (optimize_bit_field_compare): Use build_int_cst_type
8218         to build the mask.
8219         (decode_field_reference): Likewise.
8220         (all_ones_mask_p): Likewise.
8221         (native_interpret_int): Use build_int_cst_wide_type.
8222         (fold_binary): Use build_int_cst_type to build an all-ones
8223         value.
8224         * stor-layout.c (set_sizetype): Use build_int_cst_wide_type.
8225
8226 2007-01-08  Daniel Jacobowitz  <dan@codesourcery.com>
8227
8228         * config/pa/t-pa64 (libgcc_stub.a): Use $(T).
8229
8230 2007-01-09  Ben Elliston  <bje@au.ibm.com>
8231
8232         * genautomata.c (STATS_OPTION): New option.
8233         (stats_flag): New flag.
8234         (gen_automata_option): Handle it.
8235         (initiate_automaton_gen): Ditto.
8236         (write_automata): Output statistics only if stats_flag is
8237         set. Likewise, output time statistics only if time_flag is set.
8238         * doc/md.texi (Processor pipeline description): Document new flag.
8239
8240 2007-01-08  Richard Guenther  <rguenther@suse.de>
8241
8242         * builtins.c (fold_builtin_int_roundingfn): Use fit_double_type.
8243         * tree.c (build_int_cst_type): Likewise.
8244         (size_in_bytes): Don't call force_fit_type on the result.
8245         (int_fits_type_p): Use fit_double_type.
8246         * fold-const.c (fit_double_type): New function.
8247         (force_fit_type): Use it.
8248         * tree.h (fit_double_type): Export.
8249
8250 2007-01-08  Jan Hubicka  <jh@suse.cz>
8251
8252         * tree-vectorizer.c (gate_increase_alignment): Fix return type.
8253         * ipa.c (function_and_variable_visibility): Fix return type.
8254
8255 2007-01-08  Richard Guenther  <rguenther@suse.de>
8256
8257         * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use type
8258         of offset to build the index.
8259         * tree-pretty-print.c (dump_generic_node): Don't build negated
8260         const just for printing.
8261         * c-pretty-print.c (pp_c_integer_constant): Likewise.
8262         * builtins.c (fold_builtin_int_roundingfn): Check if result
8263         fits the type by using force_fit_type and comparing the result.
8264         * predict.c (predict_loops): Use compare_tree_int for comparison.
8265         * tree.c (build_int_cst): Fall back to integer_type_node for
8266         NULL_TREE type.
8267         (build_int_cst_wide): Assert type is non-null.
8268
8269 2007-01-08  Roberto Costa  <roberto.costa@st.com>
8270
8271         * tree-vrp.c (extract_range_from_cond_expr): New.
8272         (extract_range_from_expr): Handle COND_EXPR nodes used as expressions.
8273         * tree-ssa-ccp.c (get_maxval_strlen): Handle COND_EXPR nodes used
8274         as expressions.
8275         (fold_stmt): Bug fix, avoid infinite recursion when folding COND_EXPRs.
8276         * tree-ssa-forwprop.c (simplify_cond, forward_propagate_into_cond,
8277         tree_ssa_forward_propagate_single_use_vars): Handle COND_EXPR nodes
8278         used as expressions.
8279         * tree-object-size.c (cond_expr_object_size): New.
8280         (collect_object_sizes_for): Handle COND_EXPR nodes used as expressions.
8281
8282 2007-01-08  Jan Hubicka  <jh@suse.cz>
8283
8284         * tree-ssa-forwprop.c (forward_propagate_into_cond,
8285         tree_ssa_forward_propagate_single_use_va): Release defs of propagated
8286         statement.
8287
8288 2007-01-08  Richard Guenther  <rguenther@suse.de>
8289
8290         PR tree-optimization/23603
8291         * tree-vrp.c (set_value_range_to_truthvalue): New function.
8292         (extract_range_from_binary): Fall back to truthvalue instead of
8293         varying for TRUTH_*_EXPR.
8294         (extract_range_from_comparison): Fall back to truthvalue instead of
8295         varying.
8296         (vrp_visit_phi_node): Don't adjust new range bounds to +INF/-INF
8297         if all visited PHI values were constant.
8298
8299 2007-01-08  Jan Hubicka  <jh@suse.cz>
8300
8301         * cgraphunit.c (cgraph_process_new_functions): Reset reachable flag.
8302         (cgraph_analyze_function): break out from ...
8303         (cgraph_finalize_compilation_unit): ... here.
8304         (cgraph_expand_function): Remove forgoten commented out line.
8305         (cgraph_optimize): Analyze functions.
8306
8307 2007-01-08  Jan Hubicka  <jh@suse.cz>
8308
8309         * tree-pas.h (TODO_remove_function): New flag.
8310         (TODO_update*): Renumber.
8311         (pass_ipa_increase_alignment,
8312         pass_ipa_function_and_variable_visibility): New passes.
8313         * cgraphunit.c (cgraph_increase_alignment): Move to tree-vectorizer.c
8314         (cgraph_function_and_variable_visibility): Move to ipa.c
8315         (cgraph_optimize): Don't call cgraph_function_and_variable_visibility,
8316         cgraph_increase_alignment.
8317         * ipa-inline.c (cgraph_decide_inlining): Don't push timevar.
8318         (cgraph_decide_inlining_incrementally): Push TV_INTEGRATION before
8319         calling tree-inline.
8320         (cgraph_early_inlining): Do not call cgraph_remove_unreachable_nodes.
8321         (pass_ipa_inline, pass_early_ipa_inlining): Set TODO_remove_functions
8322         * tree-vectorizer.c (increase_alignment): Move here from cgraphunit.c
8323         (gate_increase_alignment): New function.
8324         (pass_ipa_increase_alignment): New pass.
8325         * ipa.c: Inline tree-pass.h and timevar.h
8326         (function_and_variable_visibility): Move here from cgraphunit.c
8327         * tree-optimize.c (pass_early_local_passes): Add TODO_remove_functions.
8328         * passes.c (init_optimization_passes): Add the two new passes.
8329         (execute_todo): Handle cgraph_remove_functions.
8330
8331 2007-01-08  Nick Clifton  <nickc@redhat.com>
8332
8333         * config/frv/predicates.md (reg_or_0_operand): Accept
8334         CONST_DOUBLEs.
8335
8336 2007-01-08  Ralf Corsépius <ralf.corsepius@rtems.org>
8337
8338         * config/bfin/rtems.h, config/bfin/t-rtems: New.
8339         * config.gcc: Add bfin*-rtems*.
8340
8341 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
8342
8343         * c.opt: Add -flax-vector-conversions.
8344         * c-typeck.c (convert_for_assignment): Pass flag to
8345         vector_types_convertible_p to allow emission of note.
8346         (digest_init): Likewise.
8347         * c-opts.c: Handle -flax-vector-conversions.
8348         * c-common.c (flag_lax_vector_conversions): New.
8349         (vector_types_convertible_p): Unless -flax-vector conversions
8350         has been passed, disallow conversions between vectors with
8351         differing numbers of subparts and/or element types.  If such
8352         a conversion is disallowed, possibly emit a note on the first
8353         occasion only to inform the user of -flax-vector-conversions.
8354         The new last argument specifies this.
8355         * c-common.h (flag_lax_vector_conversions): New.
8356         (vector_types_convertible_p): Add extra argument.
8357         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
8358         char_type_node for V*QI type vectors.
8359         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
8360         Update to satisfy new typechecking rules.
8361         * config/rs6000/altivec.h (vec_cmple): Use vec_cmpge, for both
8362         C and C++ variants.
8363         * doc/invoke.texi (C Dialect Options): Document
8364         -flax-vector-conversions.
8365
8366 2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
8367
8368         PR tree-optimization/29877
8369         * tree-ssa-ter.c (is_replaceable_p): Deem assignments with
8370         a register variable on the RHS to not be replaceable.
8371
8372 2007-01-08  Chen Liqin  <liqin@sunnorth.com.cn>
8373         * config/score/t-score-elf (MULTILIB_OPTIONS): Change.
8374         * config/score/predicates.md (const_uimm5, sr0_operand, const_simm12,
8375         const_simm15, const_pow2, const_npow2): Added.
8376         * config/score/misc.md (insv, extv, extzv, movmemsi,
8377         move_lbu_a/b, mov_lhu_a/b etc): Added and fix some bug.
8378         * config/score/score.c (score_address_cost, score_select_cc_mode):
8379         Added.
8380         Change CONST_OK_FOR_LETTER_P/EXTRA_CONSTRAINT define.
8381         Update score_rtx_costs for MACRO TARGET_RTX_COSTS.
8382         Update score_print_operand.
8383         * config/score/score.h (DATA_ALIGNMENT, SELECT_CC_MODE): Added.
8384         Adjust register allocate order and update some macro define.
8385         * config/score/score-mdaux.c (mdx_unaligned_load, mdx_unsigned_store,
8386         mdx_block_move_straight, mdx_block_move_loop_head,
8387         mdx_block_move_loop_body, mdx_block_move_loop_foot, mdx_block_move_loop,
8388         mdx_block_move): Added.
8389         (mdx_movsicc, mdp_select_add_imm, mdp_select, mds_zero_extract_andi,
8390         mdp_limm): Updated and fix some bug and typo.
8391         * config/score/score.md (movqi/hi/si, add/sub/zero/ext): Updated.
8392         (movsf, movdf, doloop_end): Added.
8393
8394 2007-01-08  Kazu Hirata  <kazu@codesourcery.com>
8395
8396         * config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
8397         config/arm/thumb2.md: Fix comment typos.
8398         * doc/extend.texi: Fix a typo.
8399
8400 2007-01-07  Eric Christopher  <echristo@apple.com>
8401
8402         * configure.ac: Check for __stack_chk_fail for darwin.
8403         * configure: Regenerate.
8404
8405 2007-01-07  Richard Guenther  <rguenther@suse.de>
8406
8407         * tree-vrp.c (extract_range_from_assert): CSE calls to
8408         compare_values where possible.
8409         (extract_range_from_unary_expr): Likewise.
8410
8411 2007-01-07  Anatoly Sokolov <aesok@post.ru>
8412
8413         * config/avr/avr-protos.h (call_insn_operand): Delete prototype.
8414         * config/avr/avr.c (call_insn_operand): Delete function.
8415         * config/avr/avr.md (*pushqi, *pushhi, *pushsi, *pushsf): Use REG_SP
8416         instead of register number. Use predicates.
8417         * config/avr/predicates.md (const0_operand, reg_or_0_operand,
8418         call_insn_operand): Add.
8419
8420 2007-01-06  Jan Hubicka  <jh@suse.cz>
8421
8422         * tree-pass.h (pass_build_cgraph_edges): Declare.
8423         * cgraphunit.c (record_refernece): Move to cgraphbuild.c
8424         (visited_nodes): Remove.
8425         (cgraph_create_edges): Move to cgraphbuild.c; rename to
8426         build_cgrpah_edges; make visited_nodes local.
8427         (cgraph_process_new_functions): DO not call initialize_inline_failed.
8428         (record_references_in_initializer): Move to cgraphbuild.c
8429         (initialize_inline_failed, rebuild_cgraph_edges,
8430         pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
8431         (verify_cgraph_node): Make visited_nodes local.
8432         (cgraph_analyze_function): Do not call cgraph_create_edges and
8433         initialize_inline_failed.
8434         (cgraph_expand_function): Do not call cgraph_lower_function;
8435         assert that function is already lowered.
8436         * Makefile.in (cgraphbuild.o): New.
8437         * passes.c (init_optimization_passes): Add pass_build_cgraph_edges
8438         at the end of lowering passes.
8439
8440 2007-01-06  Steven Bosscher  <steven@gcc.gnu.org>
8441
8442         * ifcvt.c (cond_move_convert_if_block): New function, code
8443         factored out from...
8444         (cond_move_process_if_block): ...here.  Call the new function
8445         on the THEN and ELSE blocks.
8446         (merge_if_block): Do not copy global_live_at_end, merge_blocks
8447         already takes care of this.
8448
8449 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8450
8451         PR c/19978
8452         * tree.h (TREE_OVERFLOW_P): New.
8453         * c-typeck.c (parser_build_unary_op): Warn only if result
8454         overflowed and operands did not.
8455         (parser_build_binary_op): Likewise.
8456         (convert_for_assignment): Remove redundant overflow_warning.
8457         * c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
8458
8459 2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8460
8461         * c-typeck.c (store_init_value): Split over two lines to follow
8462         the GNU coding style.
8463
8464 2007-01-05  Benjamin Kosnik  <bkoz@redhat.com>
8465
8466         * c-cppbuiltin.c (c_cpp_builtins): __GXX_EXPERIMENTAL_CPP0X__ to
8467         __GXX_EXPERIMENTAL_CXX0X__.
8468         * doc/cpp.texi: Same.
8469
8470 2007-01-05  Richard Guenther  <rguenther@suse.de>
8471
8472         PR middle-end/27826
8473         * tree.c (get_narrower): Do not construct COMPONENT_REFs
8474         with mismatched types.  Instead explicitly build a
8475         conversion NOP_EXPR.
8476
8477 2007-01-05  Ian Lance Taylor  <iant@google.com>
8478
8479         * c-common.c (decl_with_nonnull_addr_p): New function.
8480         (c_common_truthvalue_conversion): Call it.
8481         * c-typeck.c (build_binary_op): Likewise.
8482         * c-common.h (decl_with_nonnull_addr_p): Declare.
8483
8484 2007-01-05  Jakub Jelinek  <jakub@redhat.com>
8485
8486         PR c/30360
8487         * libgcc2.c (__divdc3): Compare c and d against 0.0 instead of
8488         denom against 0.0.
8489
8490 2007-01-05  Joel Brobecker  <brobecker@adacore.com>
8491
8492         * doc/install.texi (Final install): Document the fact that
8493         the GNAT runtime should not be stripped.
8494
8495 2007-01-04  Jan Hubicka  <jh@suse.cz>
8496
8497         * tree-inline.c (fold_marked_statements): Update operand caches
8498         and EH after folding
8499
8500 2007-01-04  Ian Lance Taylor  <iant@google.com>
8501
8502         * c-common.c (check_function_nonnull): Whitespace fix.
8503
8504 2007-01-04  Jan Hubicka  <jh@suse.cz>
8505
8506         * tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
8507         comitted older version of patch.
8508         (pass_fixup_cfg): Add TODOs to verify flow and statements, dump
8509         function, celanup cfg and collect garbage.
8510
8511 2007-01-04  Mike Stump  <mrs@apple.com>
8512
8513         * Makefile.in (mostlyclean): Don't remove libgcc anymore.
8514         (clean): Likewise.
8515
8516 2007-01-04  Eric Christopher  <echristo@apple.com>
8517
8518         * libgcc2.c (__bswapsi2): Use SItype.
8519         (__bswapdi2): Use DItype.
8520         * libgcc2.h: Update for above.
8521
8522 2007-01-04  Paul Brook  <paul@codesourcery.com>
8523
8524         * config/arm/arm.md (arm_mulsi3, thumb_mulsi3, mulsi3_compare0,
8525         mulsi_compare0_scratch, mulsi3addsi, mulsi3addsi_compare0,
8526         mulsi3addsi_compare0_scratch, mulsidi3adddi, mulsidi3,
8527         umulsidi3, umulsidi3adddi, smulsi3_highpart,
8528         umulsi3_highpart): Make conditional on !arm_arch6.
8529         (arm_mulsi3_v6, thumb_mulsi3_v6, mulsi3_compare0_v6,
8530         mulsi_compare0_scratch_v6, mulsi3addsi_v6, mulsi3addsi_compare0_v6,
8531         mulsi3addsi_compare0_scratch_v6, mulsidi3adddi_v6, mulsidi3_v6,
8532         umulsidi3_v6, umulsidi3adddi_v6, smulsi3_highpart_v6,
8533         umulsi3_highpart_v6): New insns.
8534
8535 2007-01-04  Roger Sayle  <roger@eyesopen.com>
8536
8537         * fold-const.c (fold_convert): When casting an expression to void,
8538         fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
8539         have a type.  Instead of attempting to build a NOP_EXPR, return
8540         these "special" trees directly.
8541
8542 2007-01-04  Joseph Myers  <joseph@codesourcery.com>
8543
8544         * config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
8545         MULT inside MINUS as either argument.  Use rs6000_cost->dmul -
8546         rs6000_cost->fp not 0 as adjustment for outer NEG.
8547
8548 2007-01-04  Jan Hubicka  <jh@suse.cz>
8549
8550         * cgraph.c (cgraph_release_function_body): New function.
8551         (cgraph_remove_node): Use it.
8552         * cgraph.h (cgraph_release_function_body): Declare.
8553         * cgraphunit.c (cgraph_expand_function): Use it.
8554         * ipa.c (cgraph_remove_unreahchable_nodes): Use it.
8555         * tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
8556         is initialized and while compilation of other function is running.
8557         * tree-optimize.c (execute_free_cfg_annotations): Move code to clear
8558         statement CFG annotations from here to ...
8559         * tree-cfg.c (delete_tree_cfg_annotations): ... here.
8560
8561 2007-01-04  Zdenek Dvorak <dvorakz@suse.cz>
8562
8563         * cfgloop.h (enum li_flags): Make the constants powers of two.
8564
8565 2007-01-04  Jan Hubicka  <jh@suse.cz>
8566
8567         * tree-inline.c (copy_bb): Insert new statements to statements_to_fold
8568         set.
8569         (fold_marked_statements): New function.
8570         (optimize_inline_calls, tree_function_versioning): Fold new statements.
8571         * tree-inline.h (copy_body_data): Add statements_to_fold.
8572
8573 2007-01-03  Daniel Jacobowitz  <dan@codesourcery.com>
8574
8575         * config.gcc: Mention libgcc/config.host.
8576         * Makefile.in: Update comments mentioning libgcc.
8577         (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
8578         (all.cross, start.encap, rest.encap, rest.cross): Update
8579         dependencies for libgcc move.
8580         (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
8581         (clean-target, clean-target-libgcc): Delete.
8582         (srcdirify, GCC_EXTRA_PARTS): New macros.
8583         (libgcc-support, libgcc.mvars): New rules.
8584         (distclean): Remove mention of mklibgcc.
8585         (install): Don't reference INSTALL_LIBGCC.
8586         (install-common): Don't reference EXTRA_PARTS.
8587         (install-libgcc, install-multilib): Delete rules.
8588         * mklibgcc.in: Delete file.
8589         * doc/configfiles.texi: Don't mention mklibgcc.
8590
8591         * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
8592         * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
8593         * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
8594         * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
8595         (mklibgcc, ldblspecs): Likewise.
8596
8597         * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
8598         (posixpre.def): Use $(T).
8599         (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
8600         (SHLIB_SRC, SHLIB_INSTALL): Delete.
8601         (SHLIB_LINK): Make dummy.
8602         * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
8603
8604         * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
8605
8606         * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
8607         * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
8608         config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
8609         config/rs6000/t-newas, config/sparc/t-elf: Likewise.
8610
8611         * configure.ac (all_outputs): Remove mklibgcc.
8612         * configure: Regenerated.
8613
8614 2007-01-03  Josh Conner  <jconner@apple.com>
8615
8616         PR middle-end/29683
8617         * calls.c (compute_argument_addresses): Set stack and stack_slot
8618         for partial args, too.
8619         (store_one_arg): Use locate.size.constant for the size when
8620         generating a save_area.
8621
8622 2007-01-03  Robert Kennedy <jimbob@google.com>
8623
8624         * tree-cfg.c (tree_merge_blocks): Release SSA_NAME phi results
8625         whose definitions are deleted due to basic block merging.
8626
8627 2007-01-03  Paul Brook  <paul@codesourcery.com>
8628
8629         PR target/16634
8630         * config/arm/arm.c (output_return_instruction): Pop PC in interrupt
8631         functions.
8632         (use_return_insn): Return 0 for Thumb interrupt functions.
8633         (print_multi_reg): Add rfe argument for IRQ returns.
8634         (arm_output_epilogue): Pop interrupt return address directly into PC.
8635         (arm_expand_prologue): Only adjust IRQ return address in Arm mode.
8636
8637 2007-01-03  Paul Brook  <paul@codesourcery.com>
8638
8639         Merge from sourcerygxx-4_1.
8640         * config/arm/thumb2.md: New file.
8641         * config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Return True for
8642         Thumb-2.
8643         * config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Ditto.
8644         * config/arm/aout.h (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
8645         (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump tables.
8646         * config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output Thumb-2 jump
8647         tables.
8648         (ASM_OUTPUT_ADDR_VEC_ELT): Add !Thumb-2 assertion.
8649         * config/arm/ieee754-df.S: Use macros for Thumb-2/Unified asm
8650         comptibility.
8651         * config/arm/ieee754-sf.S: Ditto.
8652         * config/arm/arm.c (thumb_base_register_rtx_p): Rename...
8653         (thumb1_base_register_rtx_p): ... to this.
8654         (thumb_index_register_rtx_p): Rename...
8655         (thumb1_index_register_rtx_p): ... to this.
8656         (thumb_output_function_prologue): Rename...
8657         (thumb1_output_function_prologue): ... to this.
8658         (thumb_legitimate_address_p): Rename...
8659         (thumb1_legitimate_address_p): ... to this.
8660         (thumb_rtx_costs): Rename...
8661         (thumb1_rtx_costs): ... to this.
8662         (thumb_compute_save_reg_mask): Rename...
8663         (thumb1_compute_save_reg_mask): ... to this.
8664         (thumb_final_prescan_insn): Rename...
8665         (thumb1_final_prescan_insn): ... to this.
8666         (thumb_expand_epilogue): Rename...
8667         (thumb1_expand_epilogue): ... to this.
8668         (arm_unwind_emit_stm): Rename...
8669         (arm_unwind_emit_sequence): ... to this.
8670         (thumb2_legitimate_index_p, thumb2_legitimate_address_p,
8671         thumb1_compute_save_reg_mask, arm_dwarf_handle_frame_unspec,
8672         thumb2_index_mul_operand, output_move_vfp, arm_shift_nmem,
8673         arm_save_coproc_regs, thumb_set_frame_pointer, arm_print_condition,
8674         thumb2_final_prescan_insn, thumb2_asm_output_opcode, arm_output_shift,
8675         thumb2_output_casesi): New functions.
8676         (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define.
8677         (FL_THUMB2, FL_NOTM, FL_DIV, FL_FOR_ARCH6T2, FL_FOR_ARCH7,
8678         FL_FOR_ARCH7A, FL_FOR_ARCH7R, FL_FOR_ARCH7M, ARM_LSL_NAME,
8679         THUMB2_WORK_REGS): Define.
8680         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv, arm_condexec_count,
8681         arm_condexec_mask, arm_condexec_masklen)): New variables.
8682         (all_architectures): Add armv6t2, armv7, armv7a, armv7r and armv7m.
8683         (arm_override_options): Check new CPU capabilities.
8684         Set new architecture flag variables.
8685         (arm_isr_value): Handle v7m interrupt functions.
8686         (user_return_insn): Return 0 for v7m interrupt functions.  Handle
8687         Thumb-2.
8688         (const_ok_for_arm): Handle Thumb-2 constants.
8689         (arm_gen_constant): Ditto.  Use movw when available.
8690         (arm_function_ok_for_sibcall): Return false for v7m interrupt
8691         functions.
8692         (legitimize_pic_address, arm_call_tls_get_addr): Handle Thumb-2.
8693         (thumb_find_work_register, arm_load_pic_register,
8694         legitimize_tls_address, arm_address_cost, load_multiple_sequence,
8695         emit_ldm_seq, emit_stm_seq, arm_select_cc_mode, get_jump_table_size,
8696         print_multi_reg, output_mov_long_double_fpa_from_arm,
8697         output_mov_long_double_arm_from_fpa, output_mov_double_fpa_from_arm,
8698         output_mov_double_fpa_from_arm, output_move_double,
8699         arm_compute_save_reg_mask, arm_compute_save_reg0_reg12_mask,
8700         output_return_instruction, arm_output_function_prologue,
8701         arm_output_epilogue, arm_get_frame_offsets, arm_regno_class,
8702         arm_output_mi_thunk, thumb_set_return_address): Ditto.
8703         (arm_expand_prologue): Handle Thumb-2.  Use arm_save_coproc_regs.
8704         (arm_coproc_mem_operand): Allow POST_INC/PRE_DEC.
8705         (arithmetic_instr, shift_op): Use arm_shift_nmem.
8706         (arm_print_operand): Use arm_print_condition.  Handle '(', ')', '.',
8707         '!' and 'L'.
8708         (arm_final_prescan_insn): Use extract_constrain_insn_cached.
8709         (thumb_expand_prologue): Use thumb_set_frame_pointer.
8710         (arm_file_start): Output directive for unified syntax.
8711         (arm_unwind_emit_set): Handle stack alignment instruction.
8712         * config/arm/lib1funcs.asm: Remove default for __ARM_ARCH__.
8713         Add v6t2, v7, v7a, v7r and v7m.
8714         (RETLDM): Add Thumb-2 code.
8715         (do_it, shift1, do_push, do_pop, COND, THUMB_SYNTAX): New macros.
8716         * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __thumb2__.
8717         (TARGET_THUMB1, TARGET_32BIT, TARGET_THUMB2, TARGET_DSP_MULTIPLY,
8718         TARGET_INT_SIMD, TARGET_UNIFIED_ASM, ARM_FT_STACKALIGN, IS_STACKALIGN,
8719         THUMB2_TRAMPOLINE_TEMPLATE, TRAMPOLINE_ADJUST_ADDRESS,
8720         ASM_OUTPUT_OPCODE, THUMB2_GO_IF_LEGITIMATE_ADDRESS,
8721         THUMB2_LEGITIMIZE_ADDRESS, CASE_VECTOR_PC_RELATIVE,
8722         CASE_VECTOR_SHORTEN_MODE, ADDR_VEC_ALIGN, ASM_OUTPUT_CASE_END,
8723         ADJUST_INSN_LENGTH): Define.
8724         (TARGET_REALLY_IWMMXT, TARGET_IWMMXT_ABI, CONDITIONAL_REGISTER_USAGE,
8725         STATIC_CHAIN_REGNUM, HARD_REGNO_NREGS, INDEX_REG_CLASS,
8726         BASE_REG_CLASS, MODE_BASE_REG_CLASS, SMALL_REGISTER_CLASSES,
8727         PREFERRED_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS,
8728         SECONDARY_INPUT_RELOAD_CLASS, LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P,
8729         TRAMPOLINE_SIZE, INITIALIZE_TRAMPOLINE, HAVE_PRE_INCREMENT,
8730         HAVE_POST_DECREMENT, HAVE_PRE_DECREMENT, HAVE_PRE_MODIFY_DISP,
8731         HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_REG, HAVE_POST_MODIFY_REG,
8732         REGNO_MODE_OK_FOR_BASE_P, LEGITIMATE_CONSTANT_P,
8733         REG_MODE_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, GO_IF_LEGITIMATE_ADDRESS,
8734         LEGITIMIZE_ADDRESS, THUMB2_LEGITIMIZE_ADDRESS,
8735         GO_IF_MODE_DEPENDENT_ADDRESS, MEMORY_MOVE_COST, BRANCH_COST,
8736         ASM_APP_OFF, ASM_OUTPUT_CASE_LABEL, ARM_DECLARE_FUNCTION_NAME,
8737         FINAL_PRESCAN_INSN, PRINT_OPERAND_PUNCT_VALID_P,
8738         PRINT_OPERAND_ADDRESS): Adjust for Thumb-2.
8739         (arm_arch_notm, arm_arch_thumb2, arm_arch_hwdiv): New declarations.
8740         * config/arm/arm-cores.def: Add arm1156t2-s, cortex-a8, cortex-r4 and
8741         cortex-m3.
8742         * config/arm/arm-tune.md: Regenerate.
8743         * config/arm/arm-protos.h: Update prototypes.
8744         * config/arm/vfp.md: Enable patterns for Thumb-2.
8745         (arm_movsi_vfp): Add movw alternative.  Use output_move_vfp.
8746         (arm_movdi_vfp, movsf_vfp, movdf_vfp): Use output_move_vfp.
8747         (thumb2_movsi_vfp, thumb2_movdi_vfp, thumb2_movsf_vfp,
8748         thumb2_movdf_vfp, thumb2_movsfcc_vfp, thumb2_movdfcc_vfp): New.
8749         * config/arm/libunwind.S: Add Thumb-2 code.
8750         * config/arm/constraints.md: Update include Thumb-2.
8751         * config/arm/ieee754-sf.S: Add Thumb-2/Unified asm support.
8752         * config/arm/ieee754-df.S: Ditto.
8753         * config/arm/bpabi.S: Ditto.
8754         * config/arm/t-arm (MD_INCLUDES): Add thumb2.md.
8755         * config/arm/predicates.md (low_register_operand,
8756         low_reg_or_int_operand, thumb_16bit_operator): New.
8757         (thumb_cmp_operand, thumb_cmpneg_operand): Rename...
8758         (thumb1_cmp_operand, thumb1_cmpneg_operand): ... to this.
8759         * config/arm/t-arm-elf: Add armv7 multilib.
8760         * config/arm/arm.md: Update patterns for Thumb-2 and Unified asm.
8761         Include thumb2.md.
8762         (UNSPEC_STACK_ALIGN, ce_count): New.
8763         (arm_incscc, arm_decscc, arm_umaxsi3, arm_uminsi3,
8764         arm_zero_extendsidi2, arm_zero_extendqidi2): New
8765         insns/expanders.
8766         * config/arm/fpa.md: Update patterns for Thumb-2 and Unified asm.
8767         (thumb2_movsf_fpa, thumb2_movdf_fpa, thumb2_movxf_fpa,
8768         thumb2_movsfcc_fpa, thumb2_movdfcc_fpa): New insns.
8769         * config/arm/cirrus.md: Update patterns for Thumb-2 and Unified asm.
8770         (cirrus_thumb2_movdi, cirrus_thumb2_movsi_insn,
8771         thumb2_cirrus_movsf_hard_insn, thumb2_cirrus_movdf_hard_insn): New
8772         insns.
8773         * doc/extend.texi: Document ARMv7-M interrupt functions.
8774         * doc/invoke.texi: Document Thumb-2 new cores+architectures.
8775
8776 2007-01-03  Jakub Jelinek  <jakub@redhat.com>
8777
8778         * unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
8779         (struct _Unwind_Context): Rename args_size to flags, remove
8780         signal_frame field, add a new args_size field and version field.
8781         (_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
8782         _Unwind_IsExtendedContext): New inline functions.
8783         (_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
8784         Assume by_value array is only present if _Unwind_IsExtendedContext.
8785         (_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
8786         _Unwind_IsSignalFrame.
8787         (__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
8788         (uw_update_context_1): Use _Unwind_SetSignalFrame.
8789         (uw_init_context_1): Initialize context->flags to
8790         EXTENDED_CONTEXT_BIT.
8791         * config/rs6000/linux-unwind.h (frob_update_context): Use
8792         _Unwind_SetSignalFrame.
8793
8794 2007-01-03  Andrew Pinski  <andrew_pinski@playstation.sony.com>
8795
8796         PR middle-end/30353
8797         * gimplify.c (gimplify_modify_expr_complex_part): Move below
8798         tree_to_gimple_tuple.  Call tree_to_gimple_tuple when we need
8799         the value.
8800
8801 2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
8802
8803         * config/i386/i386.h (NON_STACK_REG_P, REGNO_OK_FOR_SIREG_P,
8804         REGNO_OK_FOR_DIREG_P, REWRITE_ADDRESS, ASM_OPERAND_LETTER,
8805         RET, AT_SP): Remove.
8806         * config/i386/i386.md (*sse_prologue_save_insn): Use return
8807         instead of RET.
8808
8809         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
8810         * cfgbuild.c (find_basic_blocks): Likewise.
8811         * cfgrtl.c (rtl_create_basic_block): Likewise.
8812         * function.c (temp_slots_at_level): Likewise.
8813         * reg-stack.c (stack_regs_mentioned): Likewise.
8814         * regclass.c (allocate_reg_info): Likewise.
8815         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
8816         set_bb_for_stmt, move_block_to_fn): Likewise.
8817         * tree-complex.c (tree_lower_complex): Likewise.
8818         * vec.h (VEC_safe_grow_cleared): New.
8819
8820         * cgraphunit.c, tree-ssa-alias.c: Fix comment typos.
8821
8822 2007-01-03  Zdenek Dvorak <dvorakz@suse.cz>
8823
8824         * loop-unswitch.c (unswitch_loop): Pass probabilities to loopify.
8825         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Pass probabilities
8826         to loop_version.
8827         * cfgloopmanip.c (scale_loop_frequencies): Export.
8828         (loopify): Scale the frequencies by prescribed coefficients.
8829         (set_zero_probability): New function.
8830         (duplicate_loop_to_header_edge): Improve updating of frequencies.
8831         (lv_adjust_loop_entry_edge, loop_version): Set probabilities
8832         and frequencies according to arguments.
8833         * tree-ssa-loop-manip.c (tree_unroll_loop): Set probabilities
8834         correctly.
8835         * cfg.c (scale_bbs_frequencies_int): Allow scaling the frequencies up.
8836         * modulo-sched.c (sms_schedule): Set probabilities for entering
8837         versioned loop correctly.
8838         * tree-vect-transform.c (vect_transform_loop): Ditto.
8839         * cfgloop.h (loopify, loop_version): Declaration changed.
8840         (scale_loop_frequencies): Declared.
8841
8842 2007-01-02  Jan Hubicka  <jh@suse.cz>
8843
8844         * cgraph.c: Include tree-flow.h
8845         (cgraph_add_new-function): Handle IPA_SSA mode; execute
8846         early_local_passes.
8847         * cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
8848         * tree-pass.h (pass_all_early_optimizations): Declare.
8849         * cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
8850         early_local_passes.
8851         (cgraph_analyze_function): Do early_local_passes.
8852         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
8853         Do not add referenced vars.
8854         * tree-optimize.c (gate_all_optimizations): Do not execute when not in
8855         SSA form.
8856         (gate_all_early_local_passes): New gate.
8857         (pass_early_local_passes): Use new gate.
8858         (execute_early_local_optimizations): New functions.
8859         (gate_all_early_optimizations): New gate.
8860         (pass_all_early_optimizations): New pass.
8861         (execute_free_datastructures): Free SSA only when initialized.
8862         (gate_init_datastructures): Init only when optimizing.
8863         (tree_lowering_passes): Do early local passes when called late.
8864         * tree-profile.c (do_tree_profiling): Don't profile functions added
8865         late.
8866         (do_early_tree_profiling, pass_early_tree_profile): Kill.
8867         * tree-cfg.c (update_modified_stmts): Do not update when operands are
8868         not active.
8869         * passes.c (init_optimizations_passes): Reorder so we go into SSA
8870         during early_local_passes.
8871         * Makefile.in (cgraph.o): Add dependency on tree-flow.h.
8872
8873
8874 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
8875
8876         * Makefile.in: Update copyright year.
8877
8878 2007-01-02  Carlos O'Donell  <carlos@codesourcery.com>
8879
8880         * Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
8881         in $(lang_checks) and check-consistency targets.
8882
8883 2007-01-02  Jan Hubicka  <jh@suse.cz>
8884
8885         * tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
8886         Do not add referenced vars.
8887         * tree-cfg.c (update_modified_stmts): Do not update when SSA operands
8888         are not active.
8889         * passes.c (init_optimization_passes): Put mudflap_2 after
8890         free_datastructures.
8891
8892 2007-01-02  Jan Hubicka  <jh@suse.cz>
8893
8894         * tree-optimize (execute_fixup_cfg): Set after_inlining flag.
8895         Set NOTHROW flag on call statements proved to be nothrow.
8896         Update statement of local calls so new pure/const functions are
8897         updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
8898         goto receivers.
8899         (tree_rest_of_compilation): Register hooks and initialize bitmap
8900         early. Do not set after_inlining flag.
8901
8902 2007-01-02  Steve Ellcey  <sje@cup.hp.com>
8903
8904         * sbitmap.c (HOST_BITS_PER_LONG_LONG):  Change to
8905         HOST_BITS_PER_LONGLONG
8906
8907 2007-01-02  Manuel Lopez-Ibanez <manu@gcc.gnu.org>
8908
8909         PR c/19977
8910         * c-typeck.c (store_init_value): Don't emit pedantic overflow
8911         warning for non-static initializers.
8912
8913 2007-01-02  Steven Bosscher  <steven@gcc.gnu.org>
8914
8915         * config/alpha/alpha.md, arm/arm.c, darwin.c, frv/frv.md,
8916         m32r/m32r.c, m32r/m32r.c, mn10300/mn10300.md, pa/pa.c,
8917         rs6000/rs6000.c, s390/s390.md, sh/sh.md, sparc/sparc.c:
8918         Always use set_unique_reg_note to add REG_EQUAL notes.
8919
8920 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
8921
8922         Revert:
8923         2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
8924
8925         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
8926         * cfgbuild.c (find_basic_blocks): Likewise.
8927         * cfgrtl.c (rtl_create_basic_block): Likewise.
8928         * function.c (temp_slots_at_level): Likewise.
8929         * reg-stack.c (stack_regs_mentioned): Likewise.
8930         * regclass.c (allocate_reg_info): Likewise.
8931         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
8932         set_bb_for_stmt, move_block_to_fn): Likewise.
8933         * tree-complex.c (tree_lower_complex): Likewise.
8934         * vec.h (VEC_safe_grow_cleared): New.
8935
8936 2007-01-02  Ian Lance Taylor  <iant@google.com>
8937
8938         * c-common.c (c_common_truthvalue_conversion): When warning about
8939         using an assignment as a truth value, set TREE_NO_WARNING.
8940
8941 2007-01-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
8942
8943         PR middle-end/7651
8944         * c.opt (Wold-style-declaration): New.
8945         * doc/invoke.texi (C-only Warning Options): New.
8946         (Wold-style-declaration): Document it.
8947         (Wextra): Enabled by -Wextra.
8948         * c-opts.c (c_common_post_options): Enabled by -Wextra.
8949         * c-decl.c (declspecs_add_scspec): Replace -Wextra with
8950         -Wold-style-declaration.
8951
8952 2007-01-02  Kazu Hirata  <kazu@codesourcery.com>
8953
8954         * alias.c (init_alias_analysis): Use VEC_safe_grow_cleared.
8955         * cfgbuild.c (find_basic_blocks): Likewise.
8956         * cfgrtl.c (rtl_create_basic_block): Likewise.
8957         * function.c (temp_slots_at_level): Likewise.
8958         * reg-stack.c (stack_regs_mentioned): Likewise.
8959         * regclass.c (allocate_reg_info): Likewise.
8960         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb,
8961         set_bb_for_stmt, move_block_to_fn): Likewise.
8962         * tree-complex.c (tree_lower_complex): Likewise.
8963         * vec.h (VEC_safe_grow_cleared): New.
8964
8965 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
8966
8967         * c-common.c (c_common_nodes_and_builtins): Since variants of
8968         void_type_node get built before it is given a name, we need to
8969         give those variants the name, too.
8970         (complete_array_type): We need to work with the canonical main
8971         type of the array, from which we will build the qualified version.
8972         * params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
8973         * print-tree.c (print_node): Display canonical type information
8974         for each type.
8975         * stor-layout.c (layout_type): When we don't know the
8976         alignment of a type for which we're building an array, we end up
8977         guessing wrong, so make the type require structural equality.
8978         * tree.c (make_node_stat): When we build a new type, it is its
8979         own canonical type.
8980         (build_type_attribute_qual_variant): When building an attribute
8981         variant, its canonical type is the non-attribute variant. However,
8982         if the attributes are target-dependent and they differ, we need to
8983         use structural equality checks for this type.
8984         (build_qualified_type): A qualified type is not equivalent to its
8985         unqualified variant; set the canonical type appropriately.
8986         (build_distinct_type_copy): When building a distinct type from
8987         another type, the new type is its own canonical type.
8988         (build_variant_type_copy): When building a new type variant, we
8989         assume that it is equivalent to the original type.
8990         (build_pointer_type_for_mode): When building a pointer type, also
8991         build a canonical type pointer.
8992         (build_reference_type_for_mode): When building a reference type,
8993         also build a canonical type reference.
8994         (build_index_type): When we can't hash an index type (e.g.,
8995         because its maximum value is negative), the index type requires
8996         structural equality tests.
8997         (build_array_type): Build the canonical form of an array type.
8998         (build_function_type): Function types require structural equality,
8999         because they contain default arguments, attributes, etc.
9000         (build_method_type_directly): Ditto for method types.
9001         (build_offset_type): Build the canonical offset type.
9002         (build_complex_type): Build the canonical vector type.
9003         (make_vector_type): Build the canonical vector type.
9004         * tree.h (TYPE_CANONICAL): New.
9005         (TYPE_STRUCTURAL_EQUALITY_P): New.
9006         (SET_TYPE_STRUCTURAL_EQUALITY): New.
9007         (struct tree_type): Added "canonical" field.
9008         * params.h (VERIFY_CANONICAL_TYPES): New.
9009         * doc/c-tree.texi (TYPE_CANONICAL): Document.
9010         (TYPE_STRUCTURAL_EQUALITY_P): Document.
9011         (SET_TYPE_STRUCTURAL_EQUALITY): Document.
9012         * doc/invoke.texi (verify-canonical-types): Document --param
9013         parameter for verifying canonical types.
9014
9015 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
9016
9017         * config.gcc (powerpc-*-eabispe*, powerpc-*-eabisimaltivec*,
9018         powerpc-*-eabisim*, powerpc-*-eabialtivec*, powerpc-*-eabi*,
9019         powerpc-*-rtems*, powerpc-wrs-vxworks, powerpc-wrs-vxworksae,
9020         powerpcle-*-eabisim*, powerpcle-*-eabi*): Add rs6000/e500.h to
9021         tm_file.
9022         * config/rs6000/e500.h: New.
9023         * config/rs6000/eabi.h (TARGET_SPE_ABI, TARGET_SPE, TARGET_E500,
9024         TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE, TARGET_E500_DOUBLE):
9025         Remove.
9026         * config/rs6000/linuxspe.h (TARGET_SPE_ABI, TARGET_SPE,
9027         TARGET_E500, TARGET_ISEL, TARGET_FPRS, TARGET_E500_SINGLE,
9028         TARGET_E500_DOUBLE): Remove.
9029         * config/rs6000/vxworks.h (TARGET_SPE_ABI, TARGET_SPE,
9030         TARGET_E500, TARGET_ISEL, TARGET_FPRS): Remove.
9031         * config/rs6000/rs6000.h (CHECK_E500_OPTIONS): Define.
9032         * config/rs6000/rs6000.c (rs6000_override_options): Use
9033         CHECK_E500_OPTIONS.
9034
9035 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
9036
9037         * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE ||
9038         TARGET_E500_DOUBLE), not TARGET_E500, for %y.
9039         (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch,
9040         rs6000_emit_cmove): Don't check TARGET_E500.
9041         * config/rs6000/rs6000.md (bunordered, bordered, sunordered,
9042         sordered): Don't check TARGET_E500.
9043
9044 2007-01-01  Eric Christopher  <echristo@apple.com>
9045
9046         * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use
9047         HARD_REGISTER_NUM_P.
9048
9049 2007-01-01  Roger Sayle  <roger@eyesopen.com>
9050
9051         * fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
9052         "X eq/ne (C1^C2)".  Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
9053         has no side-effects.  Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
9054         eq/ne Y".
9055
9056 2007-01-01  Mike Stump  <mrs@apple.com>
9057
9058         * configure.ac: Remove support for building with Apple's gcc-3.1.
9059
9060 2007-01-02  Joseph Myers  <joseph@codesourcery.com>
9061
9062         PR middle-end/30311
9063         * caller-save.c (add_stored_regs): Only handle SUBREGs if inner
9064         REG is a hard register.  Do not modify REG before calling
9065         subreg_nregs.
9066         * rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
9067         multiple of the size of YMODE for certain lowpart cases.
9068
9069 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
9070
9071         PR middle-end/30253
9072         * gimplify (voidify_wrapper_expr): Update for
9073         GIMPLE_MODIFY_STMT.
9074
9075 2007-01-01  Andreas Schwab  <schwab@suse.de>
9076
9077         PR target/29166
9078         * config/ia64/ia64.c (ia64_compute_frame_size): Account space for
9079         save of BR0 in extra_spill_size instead of spill_size.
9080         (ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
9081         area.
9082         (ia64_expand_epilogue): Restore BR0 from its new location.
9083
9084 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
9085
9086         * gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
9087         Use a temporary variable if the left hand side is not a gimple
9088         register.
9089
9090 2007-01-01  Andrew Pinski  <pinskia@gmail.com>
9091
9092         * gimplify.c (gimplify_return_expr): Make the temporary variable
9093         for the return expression, a gimple register variable.
9094
9095 2007-01-01  Jan Hubicka  <jh@suse.cz>
9096
9097         * emit-rtl.c (emit_copy_of_insn_after): Do not call copy_insn_1 for
9098         INSN_LIST.
9099
9100 2007-01-01  Mike Stump  <mrs@apple.com>
9101
9102         * configure.ac (HAVE_GAS_LITERAL16): Add autoconf check for
9103         .literal16.
9104         * config/darwin.c (machopic_select_rtx_section): Use
9105         HAVE_GAS_LITERAL16.
9106         (darwin_mergeable_constant_section): Likewise.
9107         * configure: Regenerate.
9108         * config.in: Regenerate.
9109
9110 2007-01-01  Jan Hubicka  <jh@suse.cz>
9111             Andrew Pinski  <pinskia@gmail.com>
9112
9113         * cgraphunit.c (cgraph_optimize): Call cgraph_add_new_functions
9114         before starting IPA passes.