OSDN Git Service

2007-03-19 Andrew Haley <aph@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2007-03-19  Andrew Haley  <aph@redhat.com>
2
3         PR tree-optimization/31264
4         * tree-vrp.c (register_edge_assert_for_1): Don't look though
5         VIEW_CONVERT_EXPRs.
6
7 2007-03-19  Paolo Bonzini  <bonzini@gnu.org>
8
9         PR rtl-optimization/30907
10         * fwprop.c (forward_propagate_into): Never propagate inside a loop.
11         (fwprop_init): Always call loop_optimizer_initialize.
12         (fwprop_done): Always call loop_optimizer_finalize.
13         (fwprop): We always have loop info now.
14         (gate_fwprop_addr): Remove.
15         (pass_fwprop_addr): Use gate_fwprop as gate.
16
17         PR rtl-optimization/30841
18         * df-problems.c (df_ru_local_compute, df_rd_local_compute,
19         df_chain_alloc): Call df_reorganize_refs unconditionally.
20         * df-scan.c (df_rescan_blocks, df_reorganize_refs): Change
21         refs_organized to refs_organized_size.
22         (df_ref_create_structure): Use refs_organized_size instead of
23         bitmap_size if refs had been organized, and keep refs_organized_size
24         up-to-date.
25         * df.h (struct df_ref_info): Change refs_organized to
26         refs_organized_size.
27         (DF_DEFS_SIZE, DF_USES_SIZE): Use refs_organized_size instead of
28         bitmap_size.
29
30 2007-03-19  Mark Mitchell  <mark@codesourcery.com>
31
32         * except.c (output_function_exception_table): Do not reference the
33         EH personality routine for functions that do not require an
34         exception table.
35
36 2007-03-20  Jakub Jelinek  <jakub@redhat.com>
37
38         PR c/30762
39         * c-typeck.c (convert_for_assignment): Call comptypes for
40         RECORD_TYPE or UNION_TYPE.
41
42         PR inline-asm/30505
43         * reload1.c (reload): Do invalid ASM checking after
44         cleanup_subreg_operands.
45
46 2007-03-19  Jeff Law  <law@redhat.com>
47
48         * tree-cfg.c (find_taken_edge): Tighten conditions for
49         optimizing computed gotos.
50
51 2007-03-19  Michael Matz  <matz@suse.de>
52
53         * builtins.c (expand_builtin_sync_operation,
54         expand_builtin_compare_and_swap,
55         expand_builtin_lock_test_and_set): Care for extending CONST_INTs
56         correctly.
57
58         * config/i386/sync.md (sync_double_compare_and_swapdi_pic,
59         sync_double_compare_and_swap_ccdi_pic): Use "SD" as constraint
60         for operand 3.
61
62 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
63
64         * doc/tm.texi: Add brackets around the return type of
65         TARGET_SECONDARY_RELOAD.
66
67 2007-03-19  Andrew Pinski  <andrew_pinski@playstation.sony.com>
68         Richard Guenther  <rguenther@suse.de>
69
70         PR tree-optimization/31254
71         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
72         Use handled_component_p () where appropriate.  Continue
73         propagating into the rhs if we propagated into an INDIRECT_REF
74         on the lhs.
75
76 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
77
78         * config/s390/s390.md (op_type attribute): RRR instruction type added.
79         (FP, DFP, SD_SF, DD_DF, TD_TF): New mode macros.
80         (xde, xdee): Mode attributes adjusted to support DFP modes.
81         (RRer, f0, op1, Rf, bt, bfp, HALF_TMODE): New mode attributes added.
82         ("cmp<mode>", "*cmp<mode>_css_0", "*cmp<mode>_ccs", TF move splitters,
83         DF move splitters, "floatdi<mode>2", "add<mode>3", "*add<mode>3", 
84         "*add<mode>3_cc", "*add<mode>3_cconly", "sub<mode>3", "*sub<mode>3",
85         "*sub<mode>3_cc", "*sub<mode>3_cconly", "mul<mode>3", "*mul<mode>3",
86         "div<mode>3", "*div<mode>3", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
87         "*negabs<mode>2_nocc", "copysign<mode>3"): Adjusted to support DFP 
88         numbers.
89         ("*movtf_64", "*movtf_31", "*movdf_64dfp", "*movdf_64", "*movdf_31",
90         "movsf"): Insn definitions removed.
91         ("*mov<mode>_64", "*mov<mode>_31", "mov<mode>", "*mov<mode>_64dfp",
92         "*mov<mode>_64", "*mov<mode>_31", "fix_trunc<DFP:mode>di2",
93         "trunctddd2", "truncddsd2", "extendddtd2", "extendsddd2"): Insn
94         definitions added.
95         ("fixuns_truncdddi2", "fixuns_trunctddi2", "mov<mode>",
96         "reload_in<mode>", "reload_out<mode>"): Expander added.
97         ("movtf", "movdf", "reload_outtf", "reload_outdf", "reload_intf"):
98         Expander removed.
99
100 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
101
102         * config/s390/s390.md: Only non-functional changes.  Renamed
103         FPR mode macro to BFP all over the file.
104
105 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
106
107         * config/s390/s390.md (UNSPEC_COPYSIGN): New constant.
108         (op_type attribute): RRF instruction type added.
109         (fT0): New mode attribute.
110         ("*movdi_64dfp", "*movdf_64dfp", "*neg<mode>2_nocc", "*abs<mode>2_nocc",
111         "*negabs<mode>2_nocc", "copysign<mode>3"): Insn definitions added.
112         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Due to a new instruction
113         no secondary memory is needed when moving DFmode values between GPRs
114         and FPRs.
115
116 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
117
118         * config/s390/s390.opt ("mhard-float", "msoft-float"): Bit value
119         inverted and documentation adjusted.
120         ("mhard-dfp", "msoft-dfp"): New options.
121         * config/s390/s390.c (s390_handle_arch_option): New architecture
122         switch: z9-ec.
123         (override_options): Sanity checks for the new options added.
124         * config.gcc: New architecture switch: z9-ec.
125         * config/s390/s390.h (processor_flags): PF_DFP added.
126         (TARGET_CPU_DFP, TARGET_DFP): Macro definitions added.
127         (TARGET_DEFAULT): Due to the s390.opt changes hard float is enabled
128         when the bit is NOT set so remove it from the defaults.
129
130 2007-03-19  Andreas Krebbel  <krebbel1@de.ibm.com>
131
132         * genemit.c (main): Print include statement for dfp.h.
133         * dfp.h (decimal_real_arithmetic): Hide prototype if tree_code enum
134         is not available.
135
136 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
137
138         * config/cris/t-elfmulti (EXTRA_MULTILIB_PARTS): Do not define here.
139
140 2007-03-19  Kaz Kojima  <kkojima@gcc.gnu.org>
141
142         PR target/31022
143         * config/sh/sh.c (sh_adjust_cost): Use the result of single_set
144         instead of PATTERN.
145
146 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
147
148         * pa.c (output_deferred_plabels, output_bb, output_millicode_call,
149         attr_length_call, output_call, output_indirect_call): Cleanup
150         formatting of targetm calls.
151
152 2007-03-19  Hans-Peter Nilsson  <hp@axis.com>
153
154         * config/cris/cris.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
155
156 2007-03-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
157
158         * pa.md: Add fpstore_load and store_fpload instruction types.  Provide
159         reservation, bypass and anti-bypass descriptions for these instructions.
160         Update move patterns.
161         * pa.c (hppa_fpstore_bypass_p): Check for both TYPE_FPSTORE_LOAD and
162         TYPE_FPSTORE.
163         
164 2007-03-18  Dorit Nuzman  <dorit@il.ibm.com>
165
166         * tree-vect-transform.c (get_initial_def_for_induction): Replace
167         GET_MODE_NUNITS with TYPE_VECTOR_SUBPARTS.
168         (get_initial_def_for_reduction): Likewise.
169
170 2007-03-16  Daniel Berlin  <dberlin@dberlin.org>
171
172         Fix PR tree-optimization/29922
173         * tree-ssa-pre.c (bb_bitmap_sets): Remove RVUSE_* members.
174         (get_representative): Removed.
175         (value_dies_in_block_x): Update for rvuse removal.
176         (valid_in_sets): Update for renaming of vuses_dies_in_block_x.
177         (compute_antic_aux): Handle when PHI nodes appear in
178         non-single-successors. 
179         (dump_bitmap_of_names): Removed.
180         (compute_antic_safe): Renamed and removed rvuse calculation.
181         Calculate only antic safe.
182         (insert_into_preds_of_block): Remove assert.
183         (execute_pre): Update for renamed functions.
184         (defer_or_phi_translate_block): New function.
185         
186 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
187
188         * config/arm/arm.c, config/arm/thumb2.md, config/m68k/m68k.c,
189         config/spu/spu.c, omega.h, passes.c, predict.c: Fix comment
190         typos.
191         * doc/cpp.texi, doc/extend.texi, doc/invoke.texi: Fix typos.
192         Follow spelling conventions.
193
194         * tree-data-ref.h: Remove the prototype for analyze_array.
195
196 2007-03-17  Dorit Nuzman  <dorit@il.ibm.com>
197
198         PR tree-optimization/31041
199         * tree-vect-transform.c (get_initial_def_for_induction): Call
200         force_gimple_operand.
201         
202 2007-03-17  Olga Golovanevsky  <olga@il.ibm.com>
203   
204         * ipa-type-escape.c (look_for_casts) : Revert code to use
205         handled_component_p due to ada test a-numaux.adb.
206
207 2007-03-17  Kazu Hirata  <kazu@codesourcery.com>
208
209         * final.c (final_scan_insn): Alter the condition of a
210         conditional trap if we have nonstandard CC.
211
212 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
213
214         * configure.ac: Remove excess quoting from asm line 0 test.
215         * configure: Rebuilt.
216
217 2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
218
219         * doc/invoke.texi (-Wconversion): Document warnings specific to C++.
220         * c-common.c (convert_and_check): Move warning logic to...
221         (warnings_for_convert_and_check): ...here. Define.
222         * c-common.h (warnings_for_convert_and_check): Declare.
223         
224 2007-03-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
225
226         * pa.c (attr_length_call): Partially revert change of 2007-03-09.
227         (output_call): Likewise.
228
229 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
230
231         * config/vxworks.h (SUPPORTS_INIT_PRIORITY): Define.
232
233 2007-03-16  Richard Sandiford  <richard@codesourcery.com>
234
235         * config/vx-common.h (WINT_TYPE, WINT_TYPE_SIZE): Define.
236
237 2007-03-16  Uros Bizjak  <ubizjak@gmail.com>
238
239         * config/i386/i386.c (override_options): Add PTA_NO_SAHF to k8,
240         opteron, athlon-64 and athlon-fx processor_alias_table entries.
241
242 2007-03-16  Sebastian Pop  <sebastian.pop@inria.fr>
243
244         PR tree-optimization/31183
245         * tree-loop-linear.c (gather_interchange_stats, try_interchange_loops): 
246         Use double_int instead of unsigned int for representing access_strides.
247         * testsuite/gcc.dg/tree-ssa/pr31183.c: New.
248
249 2007-03-16  Richard Guenther  <rguenther@suse.de>
250
251         PR tree-optimization/31146
252         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Restructure
253         to allow recursion of forward_propagate_addr_expr.
254         (forward_propagate_addr_into_variable_array_index): Likewise.
255         (forward_propagate_addr_expr): Likewise.
256         (tree_ssa_forward_propagate_single_use_vars): Likewise.
257         (forward_propagate_addr_expr_1): Recurse on simple copies
258         instead of propagating into them.  Do so for useless conversions
259         as well.
260         (forward_propagate_addr_expr): Clean up unused statements after
261         recursion.
262
263 2007-03-16  Richard Guenther  <rguenther@suse.de>
264
265         * builtins.c (expand_builtin_cexpi): Use the right argument
266         for the expansion via cexp.
267
268 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
269
270         * configure.ac: Don't require ELF binutils to tolerate # 0 "".
271         * configure: Rebuilt.
272
273 2007-03-16  Alexandre Oliva  <aoliva@redhat.com>
274
275         PR debug/29906
276         * dwarf2out.c (force_type_die): Adjust comment.
277         (dwarf2out_imported_module_or_decl): Handle base AT_import types.
278
279 2007-03-15  DJ Delorie  <dj@redhat.com>
280
281         * config/frv/predicates.md (minmax_operator): Don't check operands
282         here.
283
284 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
285
286         * tree-ssa-loop-niter.c (record_estimate): Add "upper" argument.
287         Update constant estimates of number of iterations.
288         (record_nonwrapping_iv): Add "upper" argument.  "data_size_bounds_p"
289         argument renamed to "realistic".
290         (compute_estimated_nb_iterations): Removed.
291         (record_niter_bound): New function.
292         (idx_infer_loop_bounds): For possible but unlikely tail arrays,
293         call record_nonwrapping_iv with upper = false.
294         (infer_loop_bounds_from_signedness): Pass upper argument to
295         record_nonwrapping_iv.
296         (estimate_numbers_of_iterations_loop): Do not call
297         compute_estimated_nb_iterations.  Record estimate based on profile
298         information.  Initialize the constant estimates of number of
299         iterations.
300         * tree-data-ref.c (estimated_loop_iterations): Return the recorded
301         estimates.
302         * tree-ssa-loop-prefetch.c (loop_prefetch_arrays): Add dump when
303         number of iterations is too small.
304         * cfgloop.h (struct nb_iter_bound): Remove "realistic" field.
305         (EST_NOT_AVAILABLE): Removed.
306         (struct loop): Replace estimated_nb_iterations by any_upper_bound,
307         nb_iterations_upper_bound, any_estimate and nb_iterations_estimate
308         fields.
309
310 2007-03-15  Zdenek Dvorak  <dvorakz@suse.cz>
311
312         * tree-ssa-loop-niter.c (refine_bounds_using_guard, bound_difference):
313         Handle NE_EXPR guards.
314
315 2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
316
317         PR c++/24924
318         * c-opts.c (c_common_post_options): Handle C++ post-processing here.
319         Set also -pedantic-errors by default for the  preprocessor unless
320         -fpermissive is given.
321         
322 2007-03-15  Richard Guenther  <rguenther@suse.de>
323
324         PR middle-end/29719
325         PR middle-end/31161
326         * builtins.c (expand_builtin_cexpi): As a fallback if we
327         don't have builtins for sincos or cexp create a function
328         declaration for cexp and expand to a call to that.
329         (expand_builtin_int_roundingfn): Always fall
330         back to floor/ceil and its variants even if they may be
331         not available.
332
333 2007-03-15  Steven Bosscher  <steven@gcc.gnu.org>
334
335         PR middle-end/31159
336         * cfglayout.c (fixup_reorder_chain): Postpone deleting dead
337         jump tables, move the call to delete_dead_jumptables from here...
338         (cfg_layout_finalize): ...to here.  But rebuild jump labels first.
339         * cfgrtl.c (cfg_layout_can_merge_blocks_p): When not optimizing,
340         don't allow merging of blocks that try_redirect_by_replacing_jump
341         also does not handle when not optimizing.
342
343 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
344             Francois-Xavier Coudert  <coudert@clipper.ens.fr>
345
346         * config/i386/i386.md (x86_sahf_1): Correctly handle
347         HAVE_AS_IX86_SAHF.
348
349 2007-03-15  Uros Bizjak  <ubizjak@gmail.com>
350
351         PR target/31167
352         * config/i386/i386.md (*addti3_1, *addti3_1 splitter): Use
353         x86_64_general_operand as operand[2] predicate.  Remove "iF"
354         from operand constraints and use "e" constraint instead.
355         (*subti3_1, *subti3_1 splitter): Ditto.
356         (*negti2_1, *negti2_1 splitter): Use nonimmediate_operand as
357         operand[1] predicate.
358
359 2007-03-14  Sebastian Pop  <sebastian.pop@inria.fr>
360
361         * tree-loop-linear.c (gather_interchange_stats): For multidimensional
362         arrays, multiply the access strides by the size of the sub-array.
363         * testsuite/gcc.dg/tree-ssa/ltrans-5.c: New.
364
365 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
366
367         * configure.ac (HAVE_AS_IX86_SAHF): On x86 targets check whether
368         the configured assembler supports the sahf mnemonic.
369         * configure: Regenerate.
370         * config.in: Regenerate.
371
372         * config/i386/i386.md (x86_sahf_1): Depending on HAVE_AS_IX86_SAHF,
373         emit "sahf" or ".byte\t0x9e" as asm template.
374
375 2007-03-14  Michael Meissner  <michael.meissner@amd.com>
376
377         PR 31018
378         * config/i386/i386.h (X86_TUNE_SHORTEN_X87_SSE): New tuning
379         option to replace hard coded TARGET_xxx in md file.
380         (X86_TUNE_AVOID_VECTOR_DECODE): Ditto.
381         (X86_TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
382         (X86_TUNE_SLOW_IMUL_IMM8): Ditto.
383         (X86_TUNE_MOVE_M1_VIA_OR): Ditto.
384         (X86_TUNE_NOT_UNPAIRABLE): Ditto.
385         (X86_TUNE_NOT_VECTORMODE): Ditto.
386         (TUNE_SHORTEN_X87_SSE): Use new tuning option.
387         (TUNE_AVOID_VECTOR_DECODE): Ditto.
388         (TUNE_SLOW_IMUL_IMM32_MEM): Ditto.
389         (TUNE_SLOW_IMUL_IMM8): Ditto.
390         (TUNE_MOVE_M1_VIA_OR): Ditto.
391         (TUNE_NOT_UNPAIRABLE): Ditto.
392         (TUNE_NOT_VECTORMODE): Ditto.
393         
394         * config/i386/i386.c (ix86_tune_features): Fill in new tuning
395         options.
396
397         * config/i386/i386.md (fix_trunc?f?1_sse peephole2): Use new
398         tuning options instead of hard coded TARGET_xxx.
399         (fix ssemode peephole2's): Ditto.
400         (imul peephole2's): Ditto.
401         (movsi_or): Ditto.
402         (movdi_or_rex64): Ditto.
403         (move peephole2): Ditto.
404         (not peephole2's): Ditto.
405
406 2007-03-14  Dirk Mueller  <dmueller@suse.de>
407
408         * c-common.h (empty_body_warning): Rename to empty_if_body_warning.
409         * c-common.c (empty_if_body_warning): Rephrase diagnostic message.
410         * c-parser.c (c_parser_if_body): Always add an empty statement in case
411         of empty body.
412         * c-parser.c (c_parser_do_statement): Warn about empty body in
413         do/while statement.
414         * c-typeck (c_finish_if_stmt): Call empty_if_body_warning.
415         * doc/invoke.texi (-Wempty-body): Update documentation.
416
417 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
418
419         PR c/21438
420         * c-common.h (warn_for_div_by_zero): Declare.
421         * c-common.c (warn_for_div_by_zero): Define.
422         * c-typeck.c (build_binary_op): Call warn_for_div_zero instead of
423         warning.
424
425 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
426
427         * Makefile.in (PREPROCESSOR_DEFINES): Add directory terminators
428         to PREFIX and STANDARD_PREFIX.
429
430 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
431             Phil Edwards  <phil@codesourcery.com>
432
433         * gthr-vxworks.h: Add an extern "C" wrapper for C++.
434         (__gthread_once_t): Remove busy field for RTPs.
435         (__GTHREAD_ONCE_INIT): Update accordingly.
436
437 2007-03-14  Richard Sandiford  <richard@codesourcery.com>
438
439         * doc/invoke.texi: Document VxWorks options.
440
441 2007-03-14  Uros Bizjak  <ubizjak@gmail.com>
442
443         * doc/invoke.texi (i386 and x86-64 Options): Clarify -msahf option.
444
445 2007-03-13  Seongbae Park <seongbae.park@gmail.com>
446
447         PR tree-optimization/30590
448         * tree-nrv.c (tree_nrv): Check for the partial update of the
449         return value.
450
451 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
452
453         * flags.h (flag_random_seed): Remove declaration, in favor of...
454         * toplev.h (get_random_seed, set_random_seed): ... these.
455         * tree.c (get_file_function_name): Use the former.
456         * opts.c (common_handle_option): Use the latter.
457         * toplev.c
458
459 2007-03-13  Steven Bosscher  <steven@gcc.gnu.org>
460
461         PR middle-end/31127
462         * cse.c (cse_find_path): Do not bail out if a basic block that
463         we already visited now becomes part of a path that starts at a
464         different basic block.  Just disallow this, to make sure we
465         visit each basic block at most once.
466
467 2007-03-13  Jan Hubicka  <jh@suse.cz>
468
469         * ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
470         when profile esitmate is present, calls with very low frequency are
471         cold.
472
473 2007-03-13  Zdenek Dvorak  <dvorakz@suse.cz>
474
475         PR tree-optimization/30730
476         PR tree-optimization/26900
477         * tree-ssa-loop-niter.c: Include gmp.h.
478         (bounds): New type.
479         (mpz_set_double_int, get_type_bounds, mpz_to_double_int,
480         split_to_var_and_offset, determine_value_range,
481         bound_difference_of_offsetted_base, refine_bounds_using_guard,
482         bound_difference, bounds_add, bounds_negate,
483         number_of_iterations_ne_max, dump_affine_iv): New functions.
484         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
485         assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
486         difference of initial and final value of control iv to validate
487         results.
488         (number_of_iterations_cond): Add loop parameter.  Determine bounds
489         on the difference of the extremes of the control iv.  Add dumps.
490         (expand_simple_operations): Handle phi nodes.
491         (simplify_using_initial_conditions): Do not record used conditions.
492         (number_of_iterations_exit): Pass loop to number_of_iterations_cond.
493         Do not set additional_info.
494         (implies_nonnegative_p, implies_ge_p): Removed.
495         (derive_constant_upper_bound): Do not use parameter `additional'.
496         (record_estimate): Parameter `additional' removed.  Parameter
497         `i_bound' added.  Do not call derive_constant_upper_bound.
498         (record_nonwrapping_iv): Use derive_constant_upper_bound to
499         bound the number of iterations estimate.
500         (estimate_numbers_of_iterations_loop): Pass the estimate from
501         the number of iterations analysis to record_estimate.
502         * tree.h (multiple_of_p): Declare.
503         * tree-scalar-evolution.c (expression_expensive_p): Removed.
504         (scev_const_prop): Do not check expression_expensive_p.
505         * fold-const.c (multiple_of_p): Exported.
506         * double-int.c (double_int_mask): Exported.
507         * double-int.h (double_int_mask): Declare.
508         * tree-flow.h (struct tree_niter_desc): Removed additional_info
509         field.  Added max field.
510
511 2007-03-13  David Taylor  <taylor@candd.org>
512
513         PR driver/12448:
514         * gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
515         default -MQ.
516
517 2007-03-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
518
519         PR target/31123
520         * pa.md (vdepi_ior): Don't allow zero length deposit.  Likewise for
521         two unamed patterns.
522         
523 2007-03-13  Uros Bizjak  <ubizjak@gmail.com>
524
525         * config/i386/i386.opt (mcx16, msahf): New options.
526         * config/i386/i386.c (x86_cmpxchg16b, x86_sahf): Remove.
527         (ix86_tune_features) [X86_TUNE_USE_SAHF]: Enable for m_GENERIC.
528
529         * config/i386/driver-i386.c (bit_LAHF_LM): New define.
530         (host_detect_local_cpu): Detect cx16 and lahf_lm cpuid bits.
531         Output -mcx16 and -msahf options when corresponding bit is set.
532
533         * doc/invoke.texi (i386 and x86-64 Options): Document -mcx16
534         and -msahf options.
535
536 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
537
538         * configure.ac: Test for assembler tolerance to # 0 "".
539         * configure, config.in: Rebuilt.
540         * final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
541
542 2007-03-13  Geoffrey Keating  <geoffk@apple.com>
543
544         * doc/invoke.texi (Spec Files): Update for '%{,' spec.
545
546         * config/rs6000/darwin-fallback.c: Compile file only on powerpc.
547         (handle_syscall): Handle direct system calls.
548         * config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
549
550 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
551
552         * doc/invoke.texi: Fix cpp.info cross-reference.
553         * doc/passes.texi: Fix gcc.info cross-reference.
554
555 2007-03-12  Zdenek Dvorak  <dvorakz@suse.cz>
556
557         PR tree-optimization/30835
558         * lambda-code.c (can_convert_to_perfect_nest): Check whether
559         bb_for_stmt is not NULL before accessing it.
560
561 2007-03-12  Joseph Myers  <joseph@codesourcery.com>
562
563         * gcc.c (main): Handle target_sysroot_hdrs_suffix being NULL for
564         some multilibs.
565
566 2007-03-12  Brooks Moses  <brooks.moses@codesourcery.com>
567
568         PR 30635
569         * doc/install.texi: Document --enable-stage1-languages
570
571 2007-03-12  Steven Bosscher  <steven@gcc.gnu.org>
572
573         * tree-pass.h (pass_into_cfg_layout_mode,
574         pass_outof_cfg_layout_mode): Declare.
575         * cfglayout.c (into_cfg_layout_mode, outof_cfg_layout_mode,
576         pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode): New.
577         * passes.c (pass_into_cfg_layout_mode): Schedule before jump2.
578         (pass_outof_cfg_layout_mode): Schedule after pass_rtl_ifcvt.
579
580 2007-03-12  Seongbae Park <seongbae.park@gmail.com>
581
582         * c-decl.c (warn_variable_length_array): New function.
583         Refactored from grokdeclarator to handle warn_vla
584         and handle unnamed array case.
585         (grokdeclarator): Refactored VLA warning case.
586         * c.opt (Wvla): New flag.
587         * doc/invoke.texi (Wvla): New warning.
588
589 2007-03-12  Richard Henderson  <rth@redhat.com>
590
591         * config/alpha/alpha.c (alpha_elf_section_type_flags): New.
592         (TARGET_SECTION_TYPE_FLAGS): New.
593
594 2007-03-12  Richard Henderson  <rth@redhat.com>
595
596         * config/darwin.c (machopic_reloc_rw_mask): New.
597         * config/darwin-protos.h (machopic_reloc_rw_mask): Declare.
598         * config/darwin.h (TARGET_ASM_RELOC_RW_MASK): New.
599
600 2007-03-12  Mark Mitchell  <mark@codesourcery.com>
601
602         * cppdefault.c (cpp_EXEC_PREFIX): New variable.
603         * cppdefault.h (cpp_PREFIX): Document.
604         (cpp_PREFIX_len): Likewise.
605         (cpp_EXEC_PREFIX): New variable.
606         * Makefile.in (PREPROCESSOR_DEFINES): Add STANDARD_EXEC_PREFIX.
607         * c-incpath.c (add_standard_paths): Correct logic for relocating
608         paths within prefix.
609
610 2007-03-12  Uros Bizjak  <ubizjak@gmail.com>
611
612         * config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
613         fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
614         mode macro.
615         (fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
616         fix_truncdfdi_sse using SSEMODEF mode macro.
617         (fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
618         fix_truncdfsi_sse using SSEMODEF mode macro.
619         (fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
620         (fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
621
622 2007-03-12  Richard Sandiford  <richard@codesourcery.com>
623
624         * config.gcc (i[4567]86-wrs-vxworks, i[4567]86-wrs-vxworksae): Add
625         elfos.h to tm_file.
626
627 2007-03-12  Olga Golovanevsky  <olga@il.ibm.com>
628   
629         * tree.h : Add multiple_of_p declaration.
630         * fold-const.c (multiple_of_p): Make multiple_of_p public. 
631         * ipa-type-escape.c (results_of_malloc): Redundant.
632         (visited_stmts): New. Visited stmt for walk_use_def_chains.
633         (cast_type): Extended with new members.
634         (check_cast): Returns cast_type.
635         (cast): New structure for data of walk_use_def_chains.
636         (is_malloc_result, is_cast_from_non_pointer_1,
637         is_cast_from_non_pointer, 
638         is_array_access_through_pointer_and_index): New functions.
639         (look_for_casts): Returns cast types.
640         (check_call): Returns void.
641         (okay_pointer_operation): Use support of pointer plus index,
642         pointer plus constant and allow all multiplications.
643         
644 2007-03-11  Richard Guenther  <rguenther@suse.de>
645
646         PR tree-optimization/31115
647         * tree-vrp.c (extract_range_from_binary_expr): Make sure
648         the shift count is positive and non-anti-range for RSHIFT_EXPR.
649         A shift count of zero is not special as with *_DIV_EXPR.
650         (vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
651         direction.
652
653 2007-03-11  Ian Lance Taylor  <iant@google.com>
654
655         * tree-vrp.c (vrp_int_const_binop): Handle PLUS_EXPR and
656         the *_DIV_EXPR codes correctly with overflow infinities.
657
658 2007-03-11  Ira Rosen  <irar@il.ibm.com>
659
660         * tree-data-ref.c (analyze_offset): Add a return value (bool) to 
661         indicate success/failure of the analysis. Add negation to subtrahend
662         in case of subtraction. Fail if both operands contain constants.
663         (create_data_ref): Fail if analyze_offset fails.
664
665 2007-03-11  Uros Bizjak  <ubizjak@gmail.com>
666
667         * config/i386/i386.md (frndintxf2): Rename to ...
668         (rintxf2): ... this. Remove expander having same name.
669         (rintsf2, rintdf2): Implement using SSEMODEF macro.
670         (roundsf2, rounddf2): Ditto.
671         (lrint<mode>di2, lrint<mode>si2): Implement using SSEMODEI24 macro.
672         (lround<mode>di2, lround<mode>si2): Ditto.
673
674 2007-03-11  Steven Bosscher  <steven@gcc.gnu.org>
675
676         * lower-subreg.c: Include except.h.
677         (decompose_multiword_subregs): Verify that the only control flow
678         insns we can split are loads to multi-words pseudos.
679         Handle breaking such blocks after splitting, instead of calling
680         find_many_sub_basic_blocks.
681
682         * loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
683         on the new basic block.  Add a lengthy comment explaining why we
684         thought this was necessary.
685         * cfglayout.c (cfg_layout_finalize): Don't break superblocks.
686
687 2007-03-10  Mark Mitchell  <mark@codesourcery.com>
688
689         PR c++/30924
690         * tree.c (walk_type_fields): Recurse into the element type of
691         ARRAY_TYPEs if there is a pointer set.
692
693 2007-03-10  Dirk Mueller  <dmueller@suse.de>
694
695         * c-common.c (warn_logical_operator): Fix condition.
696
697 2007-03-10  Tobias Schl├╝ter  <tobi@gcc.gnu.org>
698
699         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Add missing
700         quotation mark.
701         * config/darwin.c (machopic_select_section): Remove superfluous
702         argument in call to categorize_decl_for_section.  Remove unused
703         variable shlib.
704
705 2007-03-10  Joseph Myers  <joseph@codesourcery.com>
706
707         * configure.ac (glibc_header_dir): Set using with_build_sysroot if
708         defined.
709         * configure: Regenerate.
710
711 2007-03-10  Uros Bizjak  <ubizjak@gmail.com>
712
713         PR target/31101
714         * config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
715         (fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
716         (fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
717         Add LABEL_NUSES to emitted label.
718         * config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
719         branch probability value to emitted jump insn.
720         * reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
721         Do not check life information and do not re-arrange input operands
722         for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
723
724 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
725
726         * config/sh/sh.c (sh_insn_length_adjustment): Adjust for
727         the change of decode_asm_operands.
728
729 2007-03-10  Kaz Kojima  <kkojima@gcc.gnu.org>
730
731         * mode-switching.c (create_pre_exit): Skip blockage insn.
732
733 2007-03-09  Diego Novillo  <dnovillo@redhat.com>
734
735         * tree-pass.h (TODO_update_smt_usage): Remove.
736         Update all users.
737         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Remove
738         argument SOME.
739         Update all users.
740
741 2007-03-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
742
743         * pa.c (attr_length_call): Revise condition for long pc-relative branch.
744         (output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
745         calls on the SOM target.  Don't use "LONG_PIC_PCREL" call sequence on
746         SOM target.
747
748 2007-03-09  Geoffrey Keating  <geoffk@apple.com>
749
750         * gcc.c: Document %{, in big comment at top.
751         (input_suffix_matches): Remove special handling for .s and
752         .S.
753         (input_spec_matches): New.
754         (handle_braces): Handle %{,.
755         (validate_switches): ',' indicates a value which is not a switch.
756         * config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
757         to detect assembler input.
758         * config/i386/sol2.h (CPP_SPEC): Likewise.
759         * config/rs6000/sysv4.h (ASM_SPEC): Likewise.
760         * config/rs6000/vxworks.h (ASM_SPEC): Likewise.
761         * config/rs6000/lynx.h (ASM_SPEC): Likewise.
762         * config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
763         * config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
764         -m64 causes deployment target to default to 10.5.
765         * config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
766
767 2007-03-09  Richard Henderson  <rth@redhat.com>
768
769         PR target/26090
770         * target.h (targetm.asm.out.reloc_rw_mask): New.
771         * target-def.h (TARGET_ASM_RELOC_RW_MASK): New.
772         (TARGET_ASM_OUT): Use it.
773         * targhooks.c, targhooks.h (default_reloc_rw_mask): New.
774         * varasm.c (categorize_decl_for_section): Remove shlib argument;
775         use the new reloc_rw_mask target hook instead.
776         (default_section_type_flags_1): Merge into...
777         (default_section_type_flags): ... here.
778         (decl_readonly_section_1): Merge into...
779         (decl_readonly_section): ... here.
780         (default_elf_select_section_1): Merge into...
781         (default_elf_select_section): ... here.
782         (default_unique_section_1): Merge into...
783         (default_unique_section): ... here.
784         (compute_reloc_for_rtx_1, compute_reloc_for_rtx): New.
785         (default_select_rtx_section): Use it.
786         (default_elf_select_rtx_section): Likewise.
787         * output.h: Update to match.
788         * doc/tm.texi (TARGET_ASM_RELOC_RW_MASK): New.
789         * config/alpha/alpha.c (alpha_elf_reloc_rw_mask): New.
790         (TARGET_ASM_RELOC_RW_MASK): New.
791         * config/i386/i386.c (x86_64_elf_select_section): Adjust call
792         to categorize_decl_for_section.
793         (x86_64_elf_unique_section): Likewise.
794         * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
795         TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Remove.
796         (TARGET_ASM_RELOC_RW_MASK): New.
797         * config/ia64/ia64.c (ia64_rwreloc_select_section,
798         ia64_rwreloc_unique_section, ia64_rwreloc_select_rtx_section): Remove.
799         (ia64_hpux_reloc_rw_mask, ia64_reloc_rw_mask): New.
800         (TARGET_RWRELOC): Remove.
801         (ia64_section_type_flags): Adjust call to default_section_type_flags.
802         * config/ia64/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
803         * config/rs6000/rs6000.c (rs6000_elf_section_type_flags): Remove.
804         (rs6000_elf_select_section, rs6000_elf_unique_section): Remove.
805         (rs6000_elf_reloc_rw_mask, rs6000_xcoff_reloc_rw_mask): New.
806         (rs6000_xcoff_select_section): Use decl_readonly_section.
807         (rs6000_xcoff_section_type_flags): Use default_section_type_flags.
808         * config/rs6000/sysv4.h (TARGET_ASM_RELOC_RW_MASK): New.
809         (TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): Remove.
810         (TARGET_SECTION_TYPE_FLAGS): Remove.
811         * config/rs6000/xcoff.h (TARGET_ASM_RELOC_RW_MASK): New.
812
813 2007-03-09  Roger Sayle  <roger@eyesopen.com>
814
815         * fold-const.c (fold_comparison): Remove compile-time evaluation of
816         complex constant equality/inequality comparisons for here.
817         (fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
818         known at compile-time or can be simplified to a scalar comparison.
819         (fold_relational_const): Move compile-time evaluation of complex
820         constant equality/inequality comparisons to here.
821
822 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
823
824         PR rtl-optimization/30643
825         * cse.c (cse_insn): Recompute dest_hash after insert_regs for
826         dest_addr_elt.
827         (fold_rtx): Recurse, like before 2006-11-03.
828
829 2007-03-09  DJ Delorie  <dj@redhat.com>
830
831         * config/m32c/t-m32c (m32c-pragma.o): Add TM_H dependency to
832         m32c-pragma.o.
833
834 2007-03-09  Aldy Hernandez  <aldyh@redhat.com>
835
836         PR tree-optimization/30375
837         * tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
838         LHS of statements is not the same.
839         * testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
840
841 2007-03-09  Chao-ying Fu  <fu@mips.com>
842
843         * doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
844         REV 2.
845         * doc/invoke.texi (-mdspr2): Document new option.
846         * config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
847         New unspec for DSP REV 2.
848         (<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
849         these instructions are extended in DSP REV 2.
850         (mips-dspr2.md): Include.
851         * config/mips/mips.opt (mdspr2): New option.
852         * config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
853         MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
854         MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
855         (override_options): Check TARGET_DSPR2 to enable MASK_DSP.
856         (CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
857         (dsp_bdesc): Add DSP REV 2 builtins.  Remove 32-bit only DSP builtins.
858         (dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
859         and 2 builtins.
860         (bdesc_map): Add one field of unsupported_target_flags.
861         (bdesc_arrays):  Update entries to have extra fields.  Add
862         dsp_32only_bdesc.
863         (mips_init_builtins): Initialize new function types.
864         Check unsupported_target_fileds to filter out builtins.
865         * config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
866         TARGET_DSPR2.
867         (ASM_SPEC): Pass mdspr2 to the assembler.
868         * config/mips/mips-dspr2.md: New file.
869
870 2007-03-09  Sa Liu  <saliu@de.ibm.com>
871
872         * config/rs6000/altivec.md: Fix vcond patterns using if_then_else.
873
874 2007-03-09  Ian Lance Taylor  <iant@google.com>
875
876         * opts.c (common_handle_option): Treat -Wstrict-overflow (with no
877         argument) like -Wstrict-overflow=2.
878         * doc/invoke.texi (Warning Options): Update documentation.
879
880 2007-03-09  Dirk Mueller  <dmueller@suse.de>
881
882         PR c++/17946
883         * doc/invoke.texi (-Wlogical-op): Document.
884         * common.opt (-Wlogical-op): New.
885         * c-common.h (warn_logical_operator): Declare.
886         * c-common.c (warn_logical_operator): Define.
887         * c-typeck.c (parser_build_binary_op): Call
888         warn_logical_operator.
889
890 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
891
892         * rtl.h (gen_rtx_ASM_INPUT): Use "" instead of NULL file name.
893         * final.c (final_scan_insn): Test for non-"" file name.
894
895 2007-03-09  Sebastian Pop  <sebastian.pop@inria.fr>
896
897         * doc/loop.texi: Document the Omega linear constraints solver.
898         * doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
899         omega-max-geqs, omega-max-eqs, omega-max-wild-cards, 
900         omega-hash-table-size, omega-max-keys, and 
901         omega-eliminate-redundant-constraints.
902         * tree-pass.h (pass_check_data_deps): Declared.
903         * omega.c: New.
904         * omega.h: New.
905         * timevar.def (TV_CHECK_DATA_DEPS): Declared.
906         * tree-ssa-loop.c (check_data_deps, gate_check_data_deps, 
907         pass_check_data_deps): New.
908         * tree-data-ref.c (init_data_ref): Remove declaration.
909         (dump_data_dependence_relation): Dump DDR_INNER_LOOP.
910         (analyze_array): Renamed init_array_ref, move up initializations.
911         (init_data_ref): Renamed init_pointer_ref.  Moved before its call.
912         Removed arguments that are set to NULL.
913         (analyze_indirect_ref): Correct indentation, correct call to 
914         init_pointer_ref.
915         (object_analysis): Call init_array_ref instead of analyze_array.
916         (initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
917         (access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
918         of DR_ACCESS_FNS_ADDR.
919         (init_omega_eq_with_af, omega_extract_distance_vectors, 
920         omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
921         ddr_consistent_p): New.
922         (compute_affine_dependence): Check consistency of ddrs when 
923         flag_check_data_deps is passed.
924         (analyze_all_data_dependences): Uncomment.
925         (tree_check_data_deps): New.
926         * tree-data-ref.h: Include omega.h.
927         (DR_ACCESS_FNS_ADDR): Removed.
928         (data_dependence_relation): Add inner_loop.
929         (DDR_INNER_LOOP): New.
930         * common.opt (fcheck-data-deps): New.
931         * tree-flow.h (tree_check_data_deps): Declare.
932         * Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
933         (OBJS-common): Depend on omega.o.
934         (omega.o): Define.
935         * passes.c (pass_check_data_deps): Scheduled.
936         * params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS, 
937         PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
938         PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
939         PARAM_VECT_MAX_VERSION_CHECKS,
940         PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
941
942 2007-03-09  Richard Guenther  <rguenther@suse.de>
943
944         PR tree-optimization/30904
945         PR middle-end/31058
946         * tree-vrp.c (extract_range_from_binary_expr): Handle RSHIFT_EXPR
947         the same way as *_DIV_EXPR.
948
949 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
950
951         * recog.c (decode_asm_operands): No mixed declarations and code.
952
953 2007-03-09  Alexandre Oliva  <aoliva@redhat.com>
954
955         * rtl.def (ASM_INPUT): Add location.
956         * rtl.h (ASM_INPUT_SOURCE_LOCATION): New.
957         (ASM_INPUT_SOURCE_FILE, ASM_INPUT_SOURCE_LINE): New.
958         (decode_asm_operands): Add loc operand.
959         (gen_rtx_ASM_INPUT, gen_rtx_ASM_INPUT_loc): Define.
960         * stmt.c (expand_asm): Rename to...
961         (expand_asm_loc): ... this.  Add locus argument.  Pass it on to
962         gen_rtx_ASM_INPUT_loc.
963         (expand_asm_expr): Adjust.
964         * recog.c (decode_asm_operands): Add loc operand.
965         (check_asm_operands, extract_insn): Adjust.
966         * reload1.c (maybe_fix_stack_asms): Likewise.
967         * final.c (asm_insn_count): Likewise.
968         (final_scan_insn): Output # line before and after asm.
969
970 2007-03-09  Daniel Berlin  <dberlin@dberlin.org>
971
972         * tree-ssa-structalias.c (variable_info): Remove
973         finished_solution.
974         (new_var_info): Ditto.
975         (shared_bitmap_info_t): New structure.
976         (shared_bitmap_table): New variable.
977         (shared_bitmap_hash): New function.
978         (shared_bitmap_eq): Ditto
979         (shared_bitmap_lookup): Ditto.
980         (shared_bitmap_add): Ditto.
981         (merge_smts_into): Change to take bitmap directly.
982         (find_what_p_points_to): Rewrite to use shared bitmap hashtable.
983         (init_alias_vars): Init shared bitmap hashtable.
984         (delete_points_to_sets): Delete shared bitmap hashtable.
985         * tree-ssa-operands.c (add_virtual_operand): Partially revert the
986         is_aliased removal as a change that was still necessary was
987         deleted.
988
989 2007-03-09  Uros Bizjak  <ubizjak@gmail.com>
990
991         * config/i386/i386.h (override_options): Conditionally disable
992         x86_sahf for 64bit targets only.
993
994 2007-03-08  Andrew Pinski  <andrew_pinski@playstation.sony.com>
995
996         PR C/31072
997         * c-decl.c (merge_decls): Don't call make_var_volatile.
998         * varasm.c (make_var_volatile): Remove.
999         * output.h (make_var_volatile): Remove.
1000
1001 2007-03-08  Zdenek Dvorak  <dvorakz@suse.cz>
1002
1003         PR tree-optimization/31085
1004         * tree-ssa-address.c (create_mem_ref): Fix test of type of base.
1005
1006 2007-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1007
1008         * builtins.def (lceil, lceilf, lceill, lfloor, lfloorf, lfloorl,
1009         llceil, llceilf, llceill, llfloor, llfloorf, llfloorl): Mark with
1010         ATTR_CONST_NOTHROW_LIST.
1011         
1012         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
1013         FIX_TRUNC_EXPR.
1014
1015 2007-03-08  Diego Novillo  <dnovillo@redhat.com>
1016
1017         * doc/tree-ssa.texi: Remove documentation for V_MUST_DEF.
1018
1019 2007-03-08  Geoffrey Keating  <geoffk@apple.com>
1020
1021         PR 31013
1022         * gccspec.c (lang_specific_driver): Do nothing when NEXT_OBJC_RUNTIME
1023         is declared.
1024         * config/darwin.h (REAL_LIBGCC_SPEC): When -fgnu-runtime is
1025         passed, use shared libgcc.
1026
1027 2007-03-08  Roger Sayle  <roger@eyesopen.com>
1028
1029         * tree-eh.c (do_return_redirection): Call build_gimple_modify_stmt
1030         instead of calling build2 with a GIMPLE_MODIFY_STMT.
1031         (honor_protect_cleanup_actions, lower_try_finally_switch):
1032         Likewise.
1033         * tree-if-conv.c (replace_phi_with_cond_gimple_modify_stmt,
1034         ifc_temp_var): Likewise.
1035         * tree-inline.c (setup_one_parameter): Likewise.
1036         * tree-mudflap.c (mf_decl_cache_locals,
1037         mf_build_check_statement_for): Likewise.
1038         * tree-nested.c (init_tmp_var, save_tmp_var,
1039         finalize_nesting_tree_1): Likewise.
1040         * tree-outof-ssa.c (insert_copy_on_edge,
1041         insert_backedge_copies): Likewise.
1042         * tree-profile.c (tree_gen_edge_profiler,
1043         tree_gen_ic_profiler): Likewise.
1044         * tree-scalar-evolution.c (scev_const_prop): Likewise.
1045         * tree-sra.c (sra_build_assignment): Likewise.
1046         * tree-ssa-loop-im.c (determine_invariantness_stmt): Likewise.
1047         * tree-ssa-math-opts.c (insert_reciprocals,
1048         execute_cse_sincos_1): Likewise.
1049         * tree-tailcall.c (adjust_accumulator_values,
1050         adjust_return_value): Likewise.
1051         * tree-vect-patterns.c (vect_pattern_recog_1): Likewise.
1052         * tree-vect-transform.c (vect_create_data_ref_ptr,
1053         bump_vector_ptr, vect_init_vector, get_initial_def_for_induction,
1054         vect_create_epilog_for_reduction, vectorizable_reduction,
1055         vectorizable_call, vectorizable_conversion,
1056         vectorizable_assignment, vectorizable_operation,
1057         vectorizable_type_demotion, vect_gen_widened_results_half,
1058         vect_permute_store_chain, vectorizable_store,
1059         vect_setup_realignment, vect_permute_load_chain,
1060         vectorizable_load, vectorizable_condition,
1061         vect_create_cond_for_align_checks): Likewise.
1062         * tree-vrp.c (build_assert_expr_for): Likewise.
1063
1064 2007-03-08  Ian Lance Taylor  <iant@google.com>
1065
1066         * tree-vrp.c: Include "intl.h".
1067         (usable_range_p): New static function.
1068         (compare_values_warnv): Don't test TYPE_OVERFLOW_UNDEFINED for
1069         overflowed values, juts set *strict_overflow_p.
1070         (compare_values): Only return -2 if one of the operands is not a
1071         constant.
1072         (compare_ranges): Call usable_range_p.
1073         (compare_range_with_value): Likewise.
1074         (vrp_evaluate_conditional_warnv): Rename from
1075         vrp_evaluate_conditional.  Make static.  Change all callers.
1076         (vrp_evaluate_conditional): New function.
1077         (simplify_div_or_mod_using_ranges): Issue warning about reliance
1078         on signed overflow.
1079         (simplify_abs_using_ranges): Likewise.
1080         (simplify_stmt_for_jump_threading): Add within_stmt parameter.
1081         * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Add
1082         within_stmt parameter.
1083         * tree-ssa-propagate.c (fold_predicate_in): Update call to
1084         vrp_evaluate_conditional.
1085         * tree-ssa-threadedge.c
1086         (record_temporary_equivalences_from_stmts_at_dest): Change
1087         simplify parameter to take a second tree parameter.
1088         (simplify_control_stmt_condition): Likewise.
1089         (thread_across_edge): Likewise.
1090         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
1091         (thread_across_edge): Likewise.
1092         * gcc/Makefile.in (tree-vrp.o): Depend upon intl.h.
1093
1094 2007-03-08  Uros Bizjak  <ubizjak@gmail.com>
1095
1096         * config/i386/i386.h (TARGET_SAHF): New define.
1097         * config/i386/i386.c (ix86_tune_features) [X86_TUNE_USE_SAHF]:
1098         Also enable for m_K8, m_AMDFAM10 and m_CORE2.
1099         (x86_sahf): New global variable.
1100         (override_options): Add PTA_NO_SAHF to pta_flags enum.  Recode
1101         pta_flags masks using shifts.  Add PTA_NO_SAHF to x86_64 and
1102         nocona processor flags.  Set x86_sahf when PTA_NO_SAHF is not set
1103         in processor flags.  Do not unconditionally disable TARGET_USE_SAHF
1104         for 64-bit.
1105         (ix86_fp_comparison_sahf_cost): Return high value for !TARGET_SAHF.
1106         (ix86_expand_fp_compare): Check for TARGET_CMOVE or TARGET_SAHF
1107         when expanding fcomi/sahf based tests.
1108         (ix86_emit_fp_unordered_jump): Check for TARGET_SAHF when
1109         expanding sahf based alternative. Emit sahf based sequence when
1110         optimizing for code size.
1111         * config/i386/i386.md (x86_sahf_1): Do not disable for
1112         TARGET_64BIT, enable for TARGET_SAHF. 
1113
1114 2007-03-08  Martin Michlmayr  <tbm@cyrius.com>
1115
1116         * tree-ssa-coalesce.c (fail_abnormal_edge_coalesce): Remove
1117         spurious whitespace from error message.
1118
1119 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
1120
1121         PR c++/30852
1122         * c-common.c (fold_offsetof_1): Handle COMPOUND_EXPR.
1123
1124 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
1125
1126         * c-decl.c (grokdeclarator): Disable warnings for anonymous
1127         bitfields.
1128         * tree-sra.c (instantiate_element): Propagate disabled warnings
1129         from the element itself to the created variable.
1130
1131 2007-03-07  Richard Henderson  <rth@redhat.com>
1132
1133         PR target/30848
1134         * reg-stack.c (emit_swap_insn): If a malformed asm was seen,
1135         silently fix up the stack in the case of a missing register.
1136
1137 2007-03-07  Paul Brook  <paul@codesourcery.com>
1138
1139         * config/arm/libunwind.S: Add .arch/.object_arch for armv4 builds.
1140
1141 2007-03-07  Joseph Myers  <joseph@codesourcery.com>
1142
1143         * config/arm/unwind-arm.c (struct wmmxd_regs, struct wmmxc_regs):
1144         New.
1145         (phase1_vrs): Use them.
1146         (DEMAND_SAVE_WMMXD, DEMAND_SAVE_WMMXC): New.
1147         (__gnu_Unwind_Save_WMMXD, __gnu_Unwind_Restore_WMMXD,
1148         __gnu_Unwind_Save_WMMXC, __gnu_Unwind_Restore_WMMXC): Declare.
1149         (restore_non_core_regs): Call __gnu_Unwind_Restore_WMMXD and
1150         __gnu_Unwind_Restore_WMMXC if required.
1151         (_Unwind_VRS_Pop): Implement iWMMXt support.
1152         * config/arm/libunwind.S (gnu_Unwind_Restore_WMMXD,
1153         gnu_Unwind_Save_WMMXD, gnu_Unwind_Restore_WMMXC,
1154         gnu_Unwind_Save_WMMXC): Define.
1155
1156 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
1157
1158         * config/vxworks.h (vxworks_override_options): Declare.
1159         (VXWORKS_OVERRIDE_OPTIONS): Use it.
1160         * config/vxworks.c: Include target.h and toplev.h.
1161         (vxworks_override_options): New function.
1162         * config/t-vxworks (vxworks.o): Depend on $(TARGET_H) and toplev.h.
1163
1164 2007-03-07  Andreas Krebbel  <krebbel1@de.ibm.com>
1165
1166         * config/s390/s390.c (override_options): Don't emit an error when
1167         -mstack-size is used without providing -mstack-guard.
1168         (s390_emit_prologue): Choose stack_guard value automatically if not
1169         provided via command line.
1170         * doc/invoke.texi: Adjust description of -mstack-guard and -mstack-size.
1171
1172 2007-03-07  Richard Sandiford  <richard@codesourcery.com>
1173
1174         * config/i386/i386.c (output_set_got): Add a GOT initialization
1175         sequence for VxWorks PIC.
1176         (legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
1177         around labels as well as symbols.  Use gotoff_operand instead
1178         of local_symbolic_operand.
1179         (legitimize_pic_address): Use gotoff_operand instead of
1180         local_symbolic_operand.  Use @GOT accesses for labels as
1181         well as symbols.
1182         (ix86_output_addr_diff_elt): Use PC-relative rather than
1183         GP-relative offsets for VxWorks PIC.
1184         (ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
1185         no_new_pseudos.  Check whether the returned register is op0.
1186         * config/i386/i386.md (tablejump): Use PC-relative rather than
1187         GP-relative offsets for VxWorks PIC.
1188         * config/i386/predicates.md (gotoff_operand): New predicate.
1189
1190 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1191
1192         * config/vxworks.h (VXWORKS_GOTT_BASE, VXWORKS_GOTT_INDEX): Undefine
1193         before defining.
1194         * config/vxworks-dummy.h: New file.
1195         * config/i386/i386.h: Include it.
1196
1197 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
1198
1199         * dwarf2out.c (is_inlined_entry_point): New
1200         (add_high_low_attributes): Emit DW_AT_entry_pc along with
1201         DW_AT_ranges if the first subblock is the entry point.
1202
1203 2007-03-06  David Daney  <ddaney@avtrex.com>
1204
1205         * doc/install.texi (mips-*-*): Change recommended binutils
1206         version.
1207
1208 2007-03-06  Anatoly Sokolov <aesok@post.ru>
1209
1210         * config/avr/avr.c (avr_mcu_types): Add support for ATmega325P,
1211         ATmega3250P, ATmega329P, ATmega3290P, AT90USB82 and AT90USB162 
1212         devices.
1213         * config/avr/avr.h (LINK_SPEC, CRT_BINUTILS_SPECS): (Ditto.).
1214         * config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
1215
1216 2007-03-06  Jan Hubicka  <jh@suse.cz>
1217
1218         * errors.h (warning, error, fatal, internal_error): Mark as cold.
1219         * predict.c (maybe_hot_bb): Cold functions are never hot; hot functions
1220         are hot.
1221         (probably_cold_bb_p): Cold functions are cold.
1222         (probably_never_executed_bb_p): Cold functions are cold.
1223         (tree_bb_level_predictions): Predict calls to cold functions as not
1224         taken.
1225         (compute_function_frequency): Check hot/cold attributes.
1226         * function.h (function_frequency): Update comments.
1227         * predict.def (PRED_COLD_FUNCTION): Predict cold function.
1228         * c-common.c (handle_hot_attribute, handle_cold_attribute): New.
1229         (c_common_att): Add cold and hot.
1230
1231         * doc/extend.texi (hot,cold attributes): Document.
1232
1233 2007-03-06  Andrew Haley  <aph@redhat.com>
1234
1235         * function.c (expand_function_end): Move blockage to just after we
1236         emit the label for the naked return from the function.
1237
1238 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1239
1240         * config/i386/att.h (ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Undefine
1241         before redefining.
1242
1243 2007-03-06  Jan Hubicka  <jh@suse.cz>
1244
1245         * reg-stack.c (reg_to_stack): Large models don't allow NAN to be
1246         loaded for constant large models.  Non-large 64bit PIC can do.
1247         * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit.
1248         * cmodel.h: Add LARGE PIC.
1249         * i386.md (UNSPEC_PLTOFF): New.
1250         (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as
1251         needed.
1252         (*call_1_rex64): Disable for large models.
1253         (*call_1_rex64_large): New.
1254         (*call_value_1_rex64): Disable for large models.
1255         (*call_value_1_rex64_large): New.
1256         (set_rip_rex4): New.
1257         (set_got_offset_rex64): New.
1258         * predicates.md (constant_call_address_operand): For large model
1259         constant calls are not possible.
1260         * i386-protos.h (construct_plt_address): Declare.
1261         * i386.c (override_options): Accept large models.
1262         (ix86_expand_prologue): Expand large PIC GOT pointer load.
1263         (legitimate_constant_p): Add new UNSPECs.
1264         (legitimate_pic_operand_p): Likewise.
1265         (legitimate_pic_address_disp_p): Disallow local symbols for large PICs.
1266         (legitimize_pic_address): Do easy RIP relative way for TLS only for
1267         non-large model.
1268         (output_pic_addr_const): Add PLTOFF.
1269         (ix86_output_addr_diff_elt): Output 64bit tables when needed.
1270         (ix86_expand_move): Legitimize pic address when in PIC mode.
1271         (construct_plt_address): New function.
1272         (ix86_expand_call): Offload the address to register and use GOT pointer
1273         for large model.
1274         * invoke.texi (mcmodel=large): Update documentation.
1275
1276 2007-03-06  Richard Henderson  <rth@redhat.com>
1277
1278         * config/i386/i386.c (x86_use_leave, x86_push_memory,
1279         x86_zero_extend_with_and, x86_movx, x86_double_with_add,
1280         x86_use_bit_test, x86_unroll_strlen, x86_deep_branch,
1281         x86_branch_hints, x86_use_sahf, x86_partial_reg_stall,
1282         x86_partial_flag_reg_stall, x86_use_himode_fiop, x86_use_simode_fiop,
1283         x86_use_mov0, x86_use_cltd, x86_read_modify_write, x86_read_modify,
1284         x86_split_long_moves, x86_promote_QImode, x86_fast_prefix, 
1285         x86_single_stringop, x86_qimode_math, x86_promote_qi_regs,
1286         x86_himode_math, x86_promote_hi_regs, x86_sub_esp_4, x86_sub_esp_8,
1287         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves, 
1288         x86_partial_reg_dependency, x86_memory_mismatch_stall, 
1289         x86_prologue_using_move, x86_epilogue_using_move, x86_shift1,
1290         x86_sse_partial_reg_dependency, x86_sse_split_regs, 
1291         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,
1292         x86_sse_load0_by_pxor, x86_use_ffreep, x86_use_incdec,
1293         x86_inter_unit_moves, x86_ext_80387_constants, x86_four_jump_limit,
1294         x86_schedule, x86_use_bt, x86_pad_returns,
1295         x86_use_xchgb): Merge into ...
1296         (ix86_tune_features): ... here.  New array.
1297         (x86_cmove, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
1298         x86_bswap): Merge into ...
1299         (ix86_arch_features): ... here.  New array.
1300         (x86_3dnow_a): Remove.
1301         (x86_accumulate_outgoing_args): Make static.
1302         (x86_arch_always_fancy_math_387): Make static.
1303         (ix86_tune_mask, ix86_arch_mask): Move ...
1304         (override_options): ... to local variables here.  Apply the
1305         appropriate mask to each element of ix86_arch_features and
1306         ix86_tune_features.  Adjust TARGET_CMOVE and TARGET_USE_SAHF
1307         as were done in the old macros.
1308         (standard_80387_constant_p): Use TARGET_EXT_80387_CONSTANTS.
1309         * config/i386/i386.h (x86_use_leave, x86_push_memory,
1310         x86_zero_extend_with_and, x86_use_bit_test, x86_cmove, x86_deep_branch,
1311         x86_branch_hints, x86_unroll_strlen, x86_double_with_add,
1312         x86_partial_reg_stall, x86_movx, x86_use_himode_fiop,
1313         x86_use_simode_fiop, x86_use_mov0, x86_use_cltd, x86_use_xchgb,
1314         x86_read_modify_write, x86_read_modify, x86_split_long_moves,
1315         x86_promote_QImode, x86_single_stringop, x86_fast_prefix,
1316         x86_himode_math, x86_qimode_math, x86_promote_qi_regs,
1317         x86_promote_hi_regs, x86_integer_DFmode_moves, x86_add_esp_4,
1318         x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8,
1319         x86_partial_reg_dependency, x86_memory_mismatch_stall,
1320         x86_accumulate_outgoing_args, x86_prologue_using_move,
1321         x86_epilogue_using_move, x86_decompose_lea,
1322         x86_arch_always_fancy_math_387, x86_shift1,
1323         x86_sse_partial_reg_dependency, x86_sse_split_regs,
1324         x86_sse_unaligned_move_optimal, x86_sse_typeless_stores,        
1325         x86_sse_load0_by_pxor, x86_use_ffreep, x86_inter_unit_moves,
1326         x86_schedule, x86_use_bt, x86_cmpxchg, x86_cmpxchg8b, x86_xadd,
1327         x86_use_incdec, x86_pad_returns, x86_bswap,
1328         x86_partial_flag_reg_stall): Remove.
1329         (enum ix86_tune_indices): New.
1330         (ix86_tune_features): New.
1331         (TARGET_USE_LEAVE, TARGET_PUSH_MEMORY, TARGET_ZERO_EXTEND_WITH_AND,
1332         TARGET_USE_BIT_TEST, TARGET_UNROLL_STRLEN,
1333         TARGET_DEEP_BRANCH_PREDICTION, TARGET_BRANCH_PREDICTION_HINTS,
1334         TARGET_DOUBLE_WITH_ADD, TARGET_USE_SAHF, TARGET_MOVX,
1335         TARGET_PARTIAL_REG_STALL, TARGET_PARTIAL_FLAG_REG_STALL,
1336         TARGET_USE_HIMODE_FIOP, TARGET_USE_SIMODE_FIOP, TARGET_USE_MOV0,
1337         TARGET_USE_CLTD, TARGET_USE_XCHGB, TARGET_SPLIT_LONG_MOVES,
1338         TARGET_READ_MODIFY_WRITE, TARGET_READ_MODIFY, TARGET_PROMOTE_QImode,
1339         TARGET_FAST_PREFIX, TARGET_SINGLE_STRINGOP, TARGET_QIMODE_MATH,
1340         TARGET_HIMODE_MATH, TARGET_PROMOTE_QI_REGS, TARGET_PROMOTE_HI_REGS,
1341         TARGET_ADD_ESP_4, TARGET_ADD_ESP_8, TARGET_SUB_ESP_4,
1342         TARGET_SUB_ESP_8, TARGET_INTEGER_DFMODE_MOVES,
1343         TARGET_PARTIAL_REG_DEPENDENCY, TARGET_SSE_PARTIAL_REG_DEPENDENCY,
1344         TARGET_SSE_UNALIGNED_MOVE_OPTIMAL, TARGET_SSE_SPLIT_REGS,
1345         TARGET_SSE_TYPELESS_STORES, TARGET_SSE_LOAD0_BY_PXOR,
1346         TARGET_MEMORY_MISMATCH_STALL, TARGET_PROLOGUE_USING_MOVE,
1347         TARGET_EPILOGUE_USING_MOVE, TARGET_SHIFT1, TARGET_USE_FFREEP,
1348         TARGET_INTER_UNIT_MOVES, TARGET_FOUR_JUMP_LIMIT, TARGET_SCHEDULE,
1349         TARGET_USE_BT, TARGET_USE_INCDEC, TARGET_PAD_RETURNS,
1350         TARGET_EXT_80387_CONSTANTS): Use it.
1351         (enum ix86_arch_indices): New.
1352         (ix86_arch_features): New.
1353         (TARGET_CMOVE, TARGET_CMPXCHG, TARGET_CMPXCHG8B, TARGET_XADD,
1354         TARGET_BSWAP): Use it.
1355         (ix86_tune_mask, ix86_arch_mask): Remove.
1356
1357 2007-03-06  Joseph Myers  <joseph@codesourcery.com>
1358
1359         PR bootstrap/31020
1360         * configure.ac (CROSS_SYSTEM_HEADER_DIR, build_system_header_dir):
1361         Define using $${sysroot_headers_suffix}.
1362         * configure: Regenerate.
1363         * cppdefault.c (cpp_include_defaults): Make FIXED_INCLUDE_DIR a
1364         multilib-suffixed directory if SYSROOT_HEADERS_SUFFIX_SPEC
1365         defined.
1366         * doc/invoke.texi (-print-sysroot-headers-suffix): Document.
1367         * gcc.c (print_sysroot_headers_suffix): New.
1368         (option_map): Include --print-sysroot-headers-suffix.
1369         (display_help): Mention -print-sysroot-headers-suffix.
1370         (process_command): Handle -print-sysroot-headers-suffix.
1371         (do_spec_1): Append multilib directory to include-fixed path if
1372         sysroot suffixes in use.
1373         (main): Handle -print-sysroot-headers-suffix.
1374         * Makefile.in (start.encap): Don't depend on xlimits.h
1375         (xlimits.h): Remove.
1376         (stmp-int-hdrs): Don't depend on xlimits.h.  Inline generation of
1377         limits.h for each multilib in fixinc_list.
1378         (fixinc_list, s-fixinc_list): New.
1379         (stmp-fixinc): Depend on fixinc_list.  If not copying headers,
1380         generate them for each multilib in fixinc_list.
1381         (stmp-fixproto): Use include-fixed.  Run fixproto for each
1382         multilib in fixinc_list.
1383         (mostlyclean): Don't remove xlimits.h.
1384         (clean): Remove include-fixed.
1385         (real-install-headers-tar, real-install-headers-cpio,
1386         real-install-headers-cp): Don't copy include, only include-fixed.
1387         (install-mkheaders): Depend on fixinc_list.  Don't depend on
1388         xlimits.h.  Save limits.h files for each multilib in fixinc_list.
1389         Always save mkinstalldirs.  Preserve ${sysroot_headers_suffix} in
1390         SYSTEM_HEADER_DIR setting in mkheaders.conf.
1391
1392 2007-03-06  Jan Hubicka  <jh@suse.cz>
1393
1394         * regstack.c (reg_to_stack): When in 64bit PIC mode, we still can load
1395         NANs easilly.
1396
1397 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1398
1399         * configure.ac: Allow tm_file to contain build-directory files.
1400         * configure: Regenerate.
1401         * config.gcc (m68k-*-uclinux*): Add ./sysroot-suffix.h to tm_file.
1402         * config/m68k/t-uclinux (sysroot-suffix.h): New target.
1403         * config/m68k/print-sysroot-suffix.sh: New file.
1404
1405 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1406
1407         * config/m68k/m68k.h (PIC_OFFSET_TABLE_REGNUM): Use the REGNO
1408         of pic_offset_table_rtx if reload_completed.
1409         (CONDITIONAL_REGISTER_USAGE): Use PIC_REG instead of
1410         PIC_OFFSET_TABLE_REGNUM.
1411         * config/m68k/m68k.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Always
1412         return true.
1413         (m68k_save_reg): Use PIC_REG instead of PIC_OFFSET_TABLE_REGNO.
1414         (m68k_output_mi_thunk): Rewrite to use RTL.  Honor vcall_offset.
1415
1416 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1417
1418         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
1419         functions that call eh_return.
1420
1421 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1422
1423         * config/m68k/m68k.c (m68k_save_reg): Save the PIC register in
1424         functions that need a constant pool.
1425
1426 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1427
1428         PR target/28181
1429         * config/m68k/m68k-protos.h (m68k_secondary_reload_class): Declare.
1430         (m68k_preferred_reload_class): Likewise.
1431         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Remove duplicated comment.
1432         (SECONDARY_RELOAD_CLASS): Define.
1433         (PREFERRED_RELOAD_CLASS): Use m68k_preferred_reload_class.
1434         (LIMIT_RELOAD_CLASS): Delete.
1435         * config/m68k/m68k.c (m68k_regno_mode_ok): Don't prevent address
1436         registers from storing bytes.
1437         (m68k_secondary_reload_class): New function.
1438         (m68k_preferred_reload_class): Likewise.
1439
1440 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1441
1442         * config/m68k/m68k.c (m68k_save_reg): Remove special case for
1443         leaf functions.
1444         (m68k_expand_prologue): Likewise.
1445
1446 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1447
1448         * config/m68k/m68k-protos.h (output_sibcall): Declare.
1449         (mips_expand_epilogue): Add a bool parameter.
1450         (m68k_legitimize_sibcall_address): Declare.
1451         * config/m68k/m68k.c (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
1452         (m68k_expand_epilogue): Add a parameter to select between sibling
1453         and normal epilogues.  Only generate a return for the latter.
1454         (m68k_ok_for_sibcall_p): New function.
1455         (m68k_legitimize_sibcall_address, output_sibcall): New functions.
1456         * config/m68k/m68k.md (sibcall, *sibcall): New patterns.
1457         (sibcall_value, *sibcall_value): Likewise.
1458         (*call, *call_value): Require !SIBLING_CALL_P.
1459         (epilogue): Update call to m68k_expand_epilogue.
1460         (sibcall_epilogue): New pattern.
1461         * config/m68k/predicates.md (const_call_operand): Say that this
1462         predicate applies to sibling calls too.
1463         (sibcall_operand): New predicate.
1464
1465 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1466
1467         * config/m68k/m68k.md (movsf_cf_soft): Provide the same non-mov3q
1468         alternatives as movsi_cf.
1469         (movsf_cf_hard): Add commentary.
1470
1471 2007-03-06  Kazu Hirata  <kazu@codesourcery.com>
1472             Richard Sandiford  <richard@codesourcery.com>
1473
1474         * config/m68k/m68k-protos.h (m68k_interrupt_function_p): Declare.
1475         (m68k_movem_pattern_p, m68k_output_movem): Likewise.
1476         (m68k_expand_prologue, m68k_expand_epilogue): Likewise.
1477         * config/m68k/m68k.h (EPILOGUE_USES): Define.  Treat all registers
1478         as being live on exit from an interrupt function.
1479         (PRINT_OPERAND_PUNCT_VALID_P): Return true for '?'.
1480         * config/m68k/m68k.c (MIN_MOVEM_REGS, MIN_FMOVEM_REGS): New macros.
1481         (m68k_frame): Remove reg_rev_mask and fpu_rev_mask.
1482         (TARGET_ASM_FUNCTION_PROLOGUE, TARGET_ASM_FUNCTION_EPILOGUE): Delete.
1483         (m68k_interrupt_function_p): Globalize.
1484         (m68k_compute_frame_layout): Remove reverse mask code.
1485         (m68k_emit_movem, m68k_set_frame_related): New functions.
1486         (m68k_output_function_prologue): Delete in favor of...
1487         (m68k_expand_prologue): ...this new function.
1488         (m68k_output_function_epilogue): Delete in favor of...
1489         (m68k_expand_epilogue): ...this new function.
1490         (m68k_split_offset, m68k_movem_pattern_p, m68k_output_movem): New
1491         functions.
1492         (print_operand): Handle %?.
1493         * config/m68k/m68k.md (UNSPEC_SIN, UNSPEC_COS): Remove excess space.
1494         (UNSPEC_GOT, A1_REG, PIC_REG, FP0_REG): New constants.
1495         (prologue, epilogue): New patterns.
1496         (return): Turn into a define_expand.
1497         (*return): New pattern, derived from old "return" pattern.  Use rte
1498         rather than rts for interrupt functions.  Only use rtd if the pop
1499         count is nonzero.
1500         (*m68k_store_multiple, *m68k_store_multiple_automod): New patterns.
1501         (*m68k_load_multiple, *m68k_load_multiple_automod): Likewise.
1502         (link, *link, unlink, *unlink, load_got): Likewise.
1503
1504 2007-03-06  Richard Sandiford  <richard@codesourcery.com>
1505
1506         PR target/23482
1507         PR target/17114
1508         * config/m68k/m68k-protos.h (m68k_legitimate_base_reg_p): Declare.
1509         (m68k_legitimate_index_reg_p, m68k_legitimate_address_p): Likewise.
1510         (m68k_matches_q_p, m68k_matches_u_p): Likewise.
1511         * config/m68k/m68k.h (EXTRA_CONSTRAINT): Use m68k_matches_q_p
1512         and m68k_matches_u_p.
1513         (PCREL_GENERAL_OPERAND_OK, LEGITIMATE_BASE_REG_P): Delete.
1514         (INDIRECTABLE_1_ADDRESS_P, GO_IF_NONINDEXED_ADDRESS): Delete.
1515         (GO_IF_INDEXABLE_BASE, GO_IF_INDEXING, GO_IF_INDEXED_ADDRESS): Delete.
1516         (LEGITIMATE_INDEX_REG_P, LEGITIMATE_INDEX_P): Delete.
1517         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Delete.
1518         (REG_STRICT_P): New macro.
1519         (LEGITIMATE_PIC_OPERAND_P): Use REG_STRICT_P rather than
1520         PCREL_GENERAL_OPERAND_OK.
1521         (REG_OK_FOR_BASE_P): Merge definitions.  Use REG_STRICT_P and
1522         m68k_legitimate_base_reg_p.
1523         (REG_MODE_OK_FOR_INDEX_P): Likewise m68k_legitimate_index_reg_p.
1524         (GO_IF_LEGITIMATE_ADDRESS): Likewise m68k_legitimate_address_p.
1525         (PIC_CASE_VECTOR_ADDRESS): Update comment.
1526         * config/m68k/m68k.c (m68k_address): New structure.
1527         (m68k_legitimate_base_reg_p, m68k_legitimate_index_reg_p)
1528         (m68k_decompose_index, m68k_legitimate_constant_address_p)
1529         (m68k_jump_table_ref_p, m68k_decompose_address)
1530         (m68k_legitimate_address_p, m68k_legitimate_mem_p, m68k_matches_q_p)
1531         (m68k_matches_u_p): New functions.
1532         (print_operand_address): Rewrite to use m68k_decompose_index.
1533
1534 2007-03-05  David Taylor  <dtaylor@emc.com>
1535
1536         * gcc.c: Correct copyright date in --version output.
1537
1538 2007-03-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1539
1540         * pa.md: In unamed move patterns, disparge copies between general
1541         and floating point registers using '?' modifier.  Don't include 'f'
1542         constraint for register preferences in DImode, SImode, HImode and
1543         QImode patterns.  Likewise for 'r' in DFmode and SFmode patterns.
1544         Remove constraints for copies between general and floating registers
1545         in soft-float DFmode pattern.
1546         (movdf): Fail if operand1 is a CONST_DOUBLE and operand0 is a hard
1547         floating register.
1548         (movsf): Likewise. 
1549
1550 2007-03-05  Mike Stump  <mrs@apple.com>
1551
1552         * c-common.c (targetcm): Add.
1553         * c-opts.c (c_common_handle_option): Handle language specific
1554         target options.
1555         * opts.c (handle_option): Verify language for target options, if
1556         any are given.
1557         * opth-gen.awk: Add CL_LANG_ALL.
1558         * target-def.h (TARGET_HANDLE_C_OPTION): Add.
1559         (TARGETCM_INITIALIZER): Add.
1560         * target.h (struct gcc_targetcm): Add.
1561         (targetcm): Add.
1562         * targhooks.c (default_handle_c_option): Add.
1563         * targhooks.h (default_handle_c_option): Add.
1564         * doc/tm.texi (TARGET_HANDLE_C_OPTION): Add.
1565
1566         * config/darwin.opt (iframework): Add.
1567         * config/darwin.h (TARGET_HAS_TARGETCM): Add.
1568         * config/darwin-c.c (handle_c_option): Add.
1569         (TARGET_HANDLE_C_OPTION): Add.
1570         (targetcm): Add.
1571         * doc/invoke.texi (Darwin Options): Add -iframework.
1572
1573 2007-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1574
1575         * convert.c (convert_to_integer): Fix nearbyint/rint -> *lrint
1576         conversion.
1577
1578 2007-03-05  Ian Lance Taylor  <iant@google.com>
1579
1580         * c.opt (fgnu89-inline): New option.
1581         * c-opts.c (c_common_post_options): Set default value for
1582         flag_gnu89_inline.
1583         * c-decl.c (WANT_C99_INLINE_SEMANTICS): Remove.
1584         (pop_scope): Check flag_gnu89_inline rather than flag_isoc99 for
1585         inline functions.
1586         (diagnose_mismatched_decls, merge_decls, start_decl): Likewise.
1587         (grokdeclarator, start_function): Likewise.
1588         * c-cppbuiltin.c (c_cpp_builtins): Define either
1589         __GNUC_GNU_INLINE__ or __GNUC_STDC_INLINE__.
1590         * doc/invoke.texi (Option Summary): Mention -fgnu89-inline.
1591         (C Dialect Options): Document -fgnu89-inline.
1592         * doc/extend.texi (Function Attributes): Explain what the
1593         gnu_inline attribute does.
1594         * doc/cpp.texi (Common Predefined Macros): Document
1595         __GNUC_GNU_INLINE__ and __GNUC_STDC_INLINE__.
1596
1597 2007-03-05  Ian Lance Taylor  <iant@google.com>
1598
1599         PR tree-optimization/31034
1600         * tree-vrp.c (extract_range_from_assert): Don't try to handle a
1601         half-range if the other side is an overflow infinity.
1602
1603 2007-03-05  Bernd Schmidt  <bernd.schmidt@analog.com>
1604
1605         * config.gcc (bfin*-uclinux*): Use t-bfin-uclinux.
1606         (bfin*-linux-uclibc*): New configuration.
1607         * config/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Undefined before
1608         defining.
1609         * config/bfin/linux.h: New file.
1610         * config/bfin/libgcc-bfin.ver: New file.
1611         * config/bfin/t-bfin-uclinux: New file.
1612         * config/bfin/t-bfin-linux: New file.
1613         * config/bfin/uclinux.h (LINUX_TARGET_OS_CPP_BUILTINS): New macro.
1614         (TARGET_OS_CPP_BUILTINS): New macro.
1615
1616 2007-03-05  Richard Guenther  <rguenther@suse.de>
1617
1618         * fold-const.c (fold_binary): Remove duplicate folding
1619         of comparison of non-null ADDR_EXPR against null.
1620
1621 2007-03-05  Richard Guenther  <rguenther@suse.de>
1622             Dorit Nuzman  <dorit@il.ibm.com>
1623
1624         PR tree-optimization/26420
1625         * tree-vectorizer.c (vectorize_loops): Bail out early if there
1626         are no loops in the function.  Only print the number of
1627         vectorized loops if it is greater than zero or we are supposed
1628         to print information about unvectorized loops.
1629
1630 2007-03-05  Revital Eres  <eres@il.ibm.com>
1631
1632         * gcc.dg/var-expand1.c: New test.
1633         * loop-unroll.c (analyze_insn_to_expand_var): Add dump info
1634         when an accumulator is expanded.
1635
1636 2007-03-04  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
1637
1638         PR other/30465
1639         * c-common.c (convert_and_check): Don't give warnings for
1640         conversion if 'expr' already overflowed.
1641         
1642 2007-03-04  Roger Sayle  <roger@eyesopen.com>
1643
1644         PR middle-end/30744
1645         * fold-const.c (fold_comparison): Enforce type consistency when
1646         transforming ~X op ~Y to Y op X, and ~X op C to X op' ~C.
1647
1648 2007-03-04  Zdenek Dvorak  <dvorakz@suse.cz>
1649
1650         * tree-ssa-address.c (create_mem_ref): Do not put an expression
1651         containing a cast to the base of TARGET_MEM_REF.
1652
1653 2007-03-04  Martin Michlmayr  <tbm@cyrius.com>
1654
1655         * tree.c (tree_contains_struct_check_failed): Remove spurious
1656         whitespace from error message.
1657
1658 2007-03-04 Andrew Pinski <andrew_pinski@playstation.sony.com>
1659
1660         PR target/30406
1661         * config/rs6000/rs6000.c (rs6000_function_value): Look at bit size
1662         instead of precision.
1663
1664 2007-03-04  Roman Zippel <zippel@linux-m68k.org>
1665             Nathan Sidwell  <nathan@codesourcery.com>
1666
1667         * emit-rtl.c (find_auto_inc): New.
1668         (try_split): recreate REG_INC notes,
1669         Use regular for loops rather than whiles.
1670
1671 2007-03-03  Andreas Schwab  <schwab@suse.de>
1672
1673         * configure.ac (HAVE_AS_REL16): Move test back to correct place.
1674         * configure: Regenerate.
1675
1676 2007-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1677
1678         * builtins.def (ATTR_MATHFN_FPROUNDING): Rely on
1679         flag_rounding_math, not flag_unsafe_math_optimizations.
1680
1681         * c-pretty-print.c (pp_c_direct_abstract_declarator): Use
1682         fold_build2.
1683         * config/alpha/alpha.c (alpha_fold_builtin_zapnot,
1684         alpha_fold_vector_minmax): Likewise.
1685         * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
1686         * config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
1687
1688 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1689
1690         * tree-sra.c (sra_walk_fns) <ldst>: Document new restriction.
1691         (sra_walk_modify_expr) <rhs_elt>: Treat the reference as a use
1692         if the lhs has side-effects.
1693         <lhs_elt>: Treat the reference as a use if the rhs has side-effects.
1694
1695 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1696
1697         * config/i386/i386.h (TUNEMASK): Remove define.
1698         (ARCHMASK): Remove define.
1699         (TARGET_*): Use ix86_tune_mask variable instead of TUNEMASK.
1700          Use ix86_arch_mask variable instead of ARCHMASK.
1701         * config/i386/i386.c (override_options): Ditto.
1702         (standard_80387_constant_p): Ditto.
1703
1704 2007-03-02  Ian Lance Taylor  <iant@google.com>
1705
1706         Used signed infinities in VRP.
1707         * tree-vrp.c (uses_overflow_infinity): New static function.
1708         (supports_overflow_infinity): New static function.
1709         (make_overflow_infinity): New static function.
1710         (negative_overflow_infinity): New static function.
1711         (positive_overflow_infinity): New static function.
1712         (is_negative_overflow_infinity): New static function.
1713         (is_positive_overflow_infinity): New static function.
1714         (is_overflow_infinity): New static function.
1715         (overflow_infinity_range_p): New static function.
1716         (compare_values_warnv): New function split out of compare_values.
1717         (compare_value): Call it.
1718         (set_value_range_to_nonnegative): Add overflow_infinity
1719         parameter.  Change caller.
1720         (vrp_expr_computes_nonnegative): Add strict_overflow_p parameter.
1721         Change callers.
1722         (vrp_expr_computes_nonzero): Likewise.
1723         (compare_ranges, compare_range_with_value): Likewise.
1724         (compare_name_with_value, compare_names): Likewise.
1725         (vrp_evaluate_conditional): Likewise.
1726         (set_value_range): Handle infinity
1727         (vrp_operand_equal_p, operand_less_p): Likewise.
1728         (extract_range_from_assert): Likewise.
1729         (vrp_int_const_binop): Likewise.
1730         (extract_range_from_binary_expr): Likewise.
1731         (extract_range_from_unary_expr): Likewise.
1732         (extract_range_from_comparison): Likewise.
1733         (extract_range_from_expr): Likewise.
1734         (dump_value_range): Likewise.
1735         (vrp_visit_cond_stmt, vrp_visit_phi_node): Likewise.
1736         (test_for_singularity): Likewise.
1737         (vrp_int_const_binop): Remove inline qualifier.
1738         (adjust_range_with_scev): Add comment.
1739         * tree-flow.h (vrp_evaluate_conditional): Update declaration.
1740
1741 2007-03-02  Diego Novillo  <dnovillo@redhat.com>
1742
1743         * tree-ssa-structalias.c (could_have_pointers): Tidy.
1744         (get_constraint_for): Likewise.
1745         (do_structure_copy): Likewise.
1746         (find_func_aliases): Fix references to MODIFY_EXPR.
1747         (intra_create_variable_infos): Tidy.
1748         * tree-ssa-operands.c (add_virtual_operand): Add argument
1749         IS_CALL_SITE.
1750         When adding members of alias sets, if IS_CALL_SITE is true and
1751         the symbol is not call-clobbered, skip it.
1752         Adjust all callers.
1753
1754 2007-03-02  Eric Botcazou  <ebotcazou@adacore.com>
1755
1756         * config/alpha/alpha.c (alpha_gp_save_rtx): Insert the insns at the
1757         entry by means of emit_insn_at_entry.
1758
1759 2007-03-02  Richard Henderson  <rth@redhat.com>
1760
1761         * expr.h (promoted_input_arg): Remove decl.
1762         * function.c (promoted_input_arg): Merge into ...
1763         * combine.c (setup_incoming_promotions): ... only caller.
1764         Rearrange to avoid double loop.
1765
1766 2007-03-02  Ben Elliston  <bje@au.ibm.com>
1767             Peter Bergner  <bergner@vnet.ibm.com>
1768             Janis Johnson  <janis187@us.ibm.com>
1769
1770         * config/rs6000/dfp.md: New file.
1771         * config/rs6000/rs6000.md: Include dfp.md.
1772         (add<mode>3_internal1): Disable for DECIMAL_FLOAT_MODE_P operands.
1773         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Handle DDmode
1774         and TDmode decimal float modes in FP registers.
1775         (num_insns_constant): Likewise.
1776         (rs6000_legitimate_offset_address_p): Likewise.
1777         (rs6000_legitimize_address): Likewise.
1778         (rs6000_legitimize_reload_address): Likewise.
1779         (rs6000_legitimate_address): Likewise.
1780         (rs6000_emit_move): Likewise.
1781         (function_arg_boundary): Likewise.
1782         (function_arg_advance): Likewise.
1783         (rs6000_darwin64_record_arg_recurse): Likewise.
1784         (function_arg): Likewise.
1785         (rs6000_gimplify_va_arg): Likewise.
1786         (rs6000_split_multireg_move): Likewise.
1787         (rs6000_output_function_epilogue): Likewise.
1788         (rs6000_output_function_epilogue): Likewise.
1789         (rs6000_register_move_cost): Likewise.
1790         (rs6000_function_value): Likewise.
1791         (rs6000_libcall_value): Likewise.
1792
1793 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
1794
1795         * config/t-vxworks (LIMITS_H_TEST): Define to true for VxWorks.
1796
1797 2007-03-02  Richard Sandiford  <richard@codesourcery.com>
1798
1799         * config/t-vxworks (LIBGCC2_INCLUDES): Pass -nostdinc.
1800         Use $MULTIDIR to choose between the kernel and RTP headers,
1801         and use $WIND_BASE and $WIND_USR to locate them.
1802
1803 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1804
1805         * config/i386/i386.c (override_options): Put initialization of
1806         ix86_tune_mask and ix86_arch_mask to the correct place.
1807
1808 2007-03-02  Uros Bizjak  <ubizjak@gmail.com>
1809             Michael Meissner  <michael.meissner@amd.com>
1810
1811         PR target/31019
1812         * config/i386/i386.h (TUNEMASK): Redefine to use ix86_tune_mask.
1813         (ARCHMASK): Define.
1814         (TARGET_CMOVE): Use ARCHMASK.
1815         (TARGET_CMPXCHG): Ditto.
1816         (TARGET_CMPXCHG8B): Ditto.
1817         (TARGET_XADD): Ditto.
1818         (TARGET_BSWAP): Ditto.
1819         * config/i386/i386.c (ix86_tune_mask): New global variable.
1820         (ix86_arch_mask): Ditto.
1821         (override_options): Initialize ix86_tune_mask and
1822         ix86_arch_mask. Use ARCHMASK to clear MASK_NO_FANCY_MATH_387 in
1823         target_flags.
1824
1825 2007-03-02  Ben Elliston  <bje@au.ibm.com>
1826
1827         PR 30992
1828         * config/dfp-bit.c (DFP_TO_INT): Initialise qval with "1.".
1829
1830 2007-03-02  Joseph Myers  <joseph@codesourcery.com>
1831
1832         * target.h (init_dwarf_reg_sizes_extra): New target hook.
1833         * target-def.h (TARGET_INIT_DWARF_REG_SIZES_EXTRA): New default.
1834         * doc/tm.texi (TARGET_INIT_DWARF_REG_SIZES_EXTRA): Document.
1835         * dwarf2out.c (expand_builtin_init_dwarf_reg_sizes): Call this
1836         hook.
1837         * config/rs6000/rs6000.c (TARGET_INIT_DWARF_REG_SIZES_EXTRA,
1838         rs6000_init_dwarf_reg_sizes_extra): New.
1839         * config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Support
1840         SPE register high parts.
1841
1842 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
1843
1844         * Makefile.in: Add install-pdf target as
1845         copied from automake v1.10 rules.
1846         * configure.ac: Add install-pdf to target list.
1847         * configure: Regenerate.
1848
1849 2007-03-01  Paul Brook  <paul@codesourcery.com>
1850
1851         * config/arm/arm.c (arm_legitimate_index_p): Limit iWMMXt addressing
1852         modes to LDRD for DImode.
1853         (output_move_double): Fixup out of range ldrd/strd.
1854         (vfp_secondary_reload_class): Rename...
1855         (coproc_secondary_reload_class): ... to this.  Add wb argument.
1856         * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use
1857         coproc_secondary_reload_class for CLASS_IWMMXT.
1858         (SECONDARY_INPUT_RELOAD_CLASS): Ditto.
1859         * arm-protos.h (coproc_secondary_reload_class): Update prototype.
1860
1861 2007-03-01  Zdenek Dvorak  <dvorakz@suse.cz>
1862
1863         * tree-ssa-loop-prefetch.c (determine_unroll_factor):  Bound the unroll
1864         factor by the estimated number of iterations.
1865         (loop_prefetch_arrays): Do not prefetch in loops that iterate less than
1866         prefetch latency.
1867
1868         * config/i386/driver-i386.c (describe_cache, detect_caches_amd,
1869         decode_caches_intel, detect_caches_intel): New functions.
1870         (host_detect_local_cpu): Use detect_caches_amd and
1871         detect_caches_intel.
1872
1873 2007-03-01  Richard Henderson  <rth@redhat.com>
1874
1875         * expr.c (emit_move_complex_push): Export.
1876         (emit_move_complex_parts): Split out from ...
1877         (emit_move_complex): ... here.
1878         * expr.h (emit_move_complex_push, emit_move_complex_parts): Declare.
1879         * config/i386/i386.md (movcdi): New.
1880
1881 2007-03-01  Uros Bizjak  <ubizjak@gmail.com>
1882
1883         * config/i386/i386.c (ix86_modes_tieable_p): Fix typo, use also
1884         size of mode1 to check for tieable modes in MMX case.
1885
1886 2007-03-01  Richard Sandiford  <richard@codesourcery.com>
1887
1888         * Makefile.in (rtlanal.o): Depend on tree.h.
1889         * rtl.h (offset_within_section_p, split_const): Declare.
1890         * rtlanal.c: Include tree.h.
1891         (offset_within_block_p): New function, taken from
1892         mips_offset_within_object_p.
1893         (split_const): New function, taken from mips_split_const.
1894         * config/m68k/m68k-protos.h (m68k_illegitimate_symbolic_constant_p):
1895         Declare.
1896         * config/m68k/m68k.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P): Define.
1897         (CONSTANT_ADDRESS_P): Only accept legitimate constants.
1898         (LEGITIMATE_CONSTANT_P): Check m68k_illegitimate_symbolic_constant_p.
1899         * config/m68k/m68k.c (TARGET_CANNOT_FORCE_CONST_MEM): Define.
1900         (m68k_illegitimate_symbolic_constant_p): New function.
1901         * config/m68k/m68k.md (movsi): Remove misleading predicates.
1902         If M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P and the source is a
1903         symbolic constant that might be outside the symbol's section,
1904         move the symbol first and then add the offset.
1905         * config/m68k/uclinux.h (M68K_OFFSETS_MUST_BE_WITHIN_SECTIONS_P):
1906         Override.
1907         * config/mips/mips.c (mips_split_const): Delete.
1908         (mips_offset_within_object_p): Delete.
1909         (mips_symbolic_constant_p): Use offset_within_section_p and
1910         split_const instead of mips_offset_within_object_p and
1911         mips_split_const.
1912         (mips_cannot_force_const_mem, mips_const_insns, mips_unspec_address)
1913         (mips_legitimize_const_move, print_operand_reloc)
1914         (mips_dangerous_for_la25_p): Use split_const instead of
1915         mips_split_const.
1916
1917 2007-02-28  Eric Christopher  <echristo@apple.com>
1918
1919         * Makefile.in (install-include-dir): Don't rm -rf include.
1920
1921 2007-02-28  Richard Guenther  <rguenther@suse.de>
1922
1923         PR middle-end/30364
1924         * fold-const.c (fold_binary): Do not associate expressions
1925         with more than one variable for integer types that do not wrap.
1926
1927 2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
1928
1929         * builtins.c (fold_builtin_call_list, fold_builtin_call_valist):
1930         Delete, and replace with...
1931         (fold_builtin_call_array): This.  Update callers to use it.
1932         * fold-const.c (fold_build_call_list): Delete, and replace with...
1933         (fold_build_call_array): This.
1934         (fold_build_call_list_initializer): Delete, and replace with...
1935         (fold_build_call_array_initializer): This.
1936         * tree.h: Update declarations to reflect above changes.
1937
1938         * c-typeck.c (build_function_call): Store converted arguments
1939         in a stack-allocated array instead of building a list.
1940         (convert_arguments): Store arguments in the array passed in as an
1941         argument, and return the actual number of arguments.
1942         * c-format.c: (check_function_format): Pass arguments in an
1943         array instead of a list.
1944         * c-common.c (check_function_nonnull): Likewise.
1945         (check_function_sentinel): Likewise.
1946         (check_function_arguments): Likewise.
1947         * c-common.h: Update declarations to reflect above changes.
1948
1949 2007-02-28  Jan Hubicka  <jh@suse.cz>
1950
1951         * predict.def (PRED_TREE_EARLY_RETURN, PRED_CONST_RETURN,
1952         PRED_NEGATIVE_RETURN): Update outcomes.
1953
1954 2007-02-28  Bernd Schmidt  <bernd.schmidt@analog.com>
1955
1956         * calls.c (emit_library_call_value_1): Handle partial registers
1957         correctly when building up CALL_INSN_FUNCTION_USAGE.
1958
1959 2007-02-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1960
1961         * pa/predicates.md (move_src_operand): Allow zero for mode.
1962         * pa/pa.md: Fix constraints for zero CONST_DOUBLE in 64-bit DFmode
1963         move pattern.
1964
1965 2007-02-27  Uros Bizjak  <ubizjak@gmail.com>
1966
1967         PR target/30970
1968         * config/i386/sse.md (*mov<mode>_internal, *movv4sf_internal,
1969         *movv2df_internal): Enable pattern only for valid operand
1970         combinations.
1971         * config/i386/i386.c (ix86_modes_tieable_p): For SSE registers,
1972         tie only 128bit modes. For MMX registers, tie only 64bit modes.
1973
1974 2007-02-27  Mike Stump  <mrs@apple.com>
1975
1976         * config/darwin-crt3.c: Avoid compilation when compiling for a
1977         kext multilib.
1978
1979 2007-02-27  Joseph Myers  <joseph@codesourcery.com>
1980
1981         * Makefile.in (PREPROCESSOR_DEFINES, test-protoize-simple): Define
1982         FIXED_INCLUDE_DIR.
1983         (stmp-int-hdrs, stmp-fixinc, install-headers): Use include-fixed
1984         for fixed headers and limits.h.
1985         (install-include-dir, install-headers-tar, install-headers-cpio,
1986         install-headers-cp, real-install-headers-tar,
1987         real-install-headers-cpio, real-install-headers-cp): Handle
1988         include-fixed as well as include.
1989         (install-mkheaders): Don't install files that go only in include
1990         not include-fixed.
1991         * cppdefault.c (cpp_include_defaults): Separate FIXED_INCLUDE_DIR
1992         from GCC_INCLUDE_DIR.
1993         * gcc.c (process_command): Remove special -BstageN/ handling.
1994         (do_spec_1): Add include-fixed directories.
1995
1996 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
1997
1998         * config/bfin/t-bfin-elf (LIB1ASMFUNCS): Add _umulsi3_highpart and
1999         _smulsi3_highpart.
2000         * config/bfin/lib1funcs.asm (___umulsi3_highpart, ___smulsi3_highpart):
2001         New functions.
2002         * config/bfin/bfin.md (smulsi3_highpart, umulsi3_highpart): New
2003         patterns.
2004
2005 2007-02-27  Mark Mitchell  <mark@codesourcery.com>
2006
2007         * c-common.c (get_priority): Add check for
2008         SUPPORTS_INIT_PRIORITY.
2009
2010 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2011
2012         * config/bfin/bfin.md (doloop_end): FAIL if counter reg isn't SImode.
2013
2014         * config/bfin/bfin.c: Include "cfglayout.h".
2015         (MAX_LSETUP_DISTANCE): New macro.
2016         (struct loop_info): New members incoming, incoming_src and
2017         incoming_dest.  Delete member predecessor.
2018         (length_for_loop): New function.
2019         (bfin_optimize_loop): Handle more different loop structures.
2020         (bfin_discover_loop): Rework detection of predecessor blocks by
2021         examining incoming edges.
2022         (bfin_discover_loops, bfin_free_loops): New functions, broken out of
2023         bfin_reorg_loops.
2024         (bfin_reorder_loops): New function.
2025         (bfin_reorg_loops): Use these three new functions.
2026
2027         * config/bfin/bfin.h (enum reg_class, REG_CLASS_NAMES,
2028         REG_CLASS_CONTENTS): Add D0REGS through D7REGS.
2029         (CONSTRAINT_LEN): Add entry for 'q'.
2030         (REG_CLASS_FROM_CONSTRAINT): Renamed from REG_CLASS_FROM_LETTER.
2031         Add 'q' constraints.
2032         (REGNO_REG_CLASS): For R0 through R7, return corresponding regclass.
2033         (CLASS_LIKELY_SPILLED_P): True for R0, R1 and R2.
2034
2035         * config/bfin/bfin.md (add_with_carry): New pattern.
2036         (s_or_u, su_optab, su_modifier): New code macros/attrs.
2037         (<su_optab>hisi_ll, <su_optab>hisi_lh, <su_optab>hisi_hl,
2038         <su_optab>hisi_hh): Renamed from mulhisi_xx patterns; macroized to
2039         support unsigned multiplies too.  Removed incorrect commutativity from
2040         operand 1 constraint where appropriate.
2041         (usmulhisi_ull, usmulhisi_ulh, usmulhisi_uhl, usmulhisi_uhh): New
2042         patterns.
2043         (<su_optab>hisi_ll_lh, <su_optab>hisi_ll_hl, <su_optab>hisi_ll_hh,
2044         <su_optab>hisi_lh_hl, <su_optab>hisi_lh_hh, <su_optab>hisi_hl_hh):
2045         New patterns.
2046         (usmulhisi_ll_lul, usmulhisi_ll_luh, usmulhisi_ll_hul,
2047         usmulhisi_ll_huh, usmulhisi_lh_lul, usmulhisi_lh_luh, usmulhisi_lh_hul,
2048         usmulhisi_lh_huh, usmulhisi_hl_lul, usmulhisi_hl_luh, usmulhisi_hl_hul,
2049         usmulhisi_hl_huh, usmulhisi_hh_lul, usmulhisi_hh_luh, usmulhisi_hh_hul,
2050         usmulhisi_hh_huh): New patterns.
2051
2052         * config/bfin/bfin.md (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
2053         lshifthi3): Fix output template to use half reg for operand 2.
2054
2055         * config/bfin/bfin.c (bfin_output_mi_thunk): Use R3 as scratch reg
2056         instead of R2.
2057
2058         * config/bfin/bfin.md (rotl16, rotlsi3, rotrsi3): New patterns.
2059
2060 2007-02-27  Andreas Schwab  <schwab@suse.de>
2061
2062         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-common.texi.
2063
2064 2007-02-27  Jan Hubicka  <jh@suse.cz>
2065
2066         * predict.c (last_basic_block_p): Remove.
2067         (tree_estimate_probability): Update return heuristic for commonized
2068         return blocks.
2069
2070 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
2071
2072         * Makefile.in (TEXI_GCCINSTALL_FILES): Add gcc-vers.texi dependency.
2073
2074 2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>
2075
2076         * doc/include/gcc-common.texi (versionsubtitle): New macro.
2077         * doc/cpp.texi: Standardize title page.
2078         * doc/cppinternals.texi: Likewise.
2079         * doc/gcc.texi: Standardize title page, remove version number
2080         from copyright page.
2081         * doc/gccint.texi: Likewise.
2082         * doc/install.texi: Standardize title page, add table of
2083         contents.
2084
2085 2007-02-26  Jan Hubicka  <jh@suse.cz>
2086
2087         * predict.def: Set outcomes according to more recent results.
2088         (PRED_LOOP_CONDITION, PRED_LOOP_PRECONDITIONING, PRED_LOOP_HEADER):
2089         Remove dead predictors.
2090         * predict.c (return_prediction): Fix pasto.
2091
2092 2007-02-27  Bernd Schmidt  <bernd.schmidt@analog.com>
2093
2094         * loop-iv.c (simplify_using_initial_values): Fix oversight in previous
2095         change; avoid a memory leak when returning early.
2096
2097 2007-02-26  Mark Mitchell  <mark@codesourcery.com>
2098
2099         * c-decl.c (static_ctors): Move to c-common.c.
2100         (static_dtors): Likewise.
2101         (finish_function): Use c_record_cdtor_fn.
2102         (build_cdtor): Move to c-common.c.
2103         (c_write_global_declarations): Use c_build_cdtor_fns.
2104         * c-common.h (static_ctors): Declare.
2105         (static_dtors): Likewise.
2106         (c_record_cdtor_fn): Likewise.
2107         (c_build_cdtor_fns): Likewise.
2108         * c-common.c (static_ctors): New variable.
2109         (static_dtors): Likewise.
2110         (c_record_cdtor_fn): New function.
2111         (build_cdtor): Move from c-decl.c
2112         (c_build_cdtor_fns): New function.
2113
2114         * output.h (assemble_addr_to_section): Declare.
2115         (get_cdtor_priority_section): Likewise.
2116         * varasm.c (assemble_addr_to_section): New function.
2117         (get_cdtor_priority_section): Likewise.
2118         (default_named_section_asm_out_destructor): Use them.
2119         (destor_dtor_section_asm_out_destructor): Likewise.
2120         (default_named_section_asm_out_constructor): Likewise.
2121         (default_ctor_section_asm_out_constructor): Likewise.
2122         * config.gcc (*-*-vxworks*): Include vxworks.o.
2123         * config/t-vxworks (vxworks.o): New target.
2124         * config/vxworks.h (ALWAYS_NUMBER_CTORS_SECTIONS): Remove.
2125         (TARGET_ASM_CONSTRUCTOR): Define.
2126         (TARGET_ASM_DESTRUCTOR): Likewise.
2127         (vxworks_asm_out_constructor): Declare.
2128         (vxworks_asm_out_destructor): Likewise.
2129
2130         * c-common.c (get_priority): Check that we have not just an
2131         INTEGER_CST, but an integer constant with integeral type.
2132
2133 2007-02-25  Uros Bizjak  <ubizjak@gmail.com>
2134
2135         PR tree-optimization/30938
2136         * tree-vect-transform.c (vectorizable_call): Fix off-by-one error:
2137         use &dt[nargs-1] instead of &dt[nargs] in the call to
2138         vect_is_simple_use().
2139
2140 2007-02-25  Ulrich Weigand  <uweigand@de.ibm.com>
2141
2142         * reload.c (find_reloads_address_1): Handle PLUS expressions resulting
2143         from register elimination as PRE_MODIFY / POST_MODIFY increments.
2144         Do not attempt to handle MEM inside auto-inc expressions.
2145         * reload1.c (eliminate_regs_1): Do not attempt to handle elimination
2146         of a register modified by an auto-inc expression.  However, do handle
2147         elimination of a register used as PRE_MODIFY / POST_MODIFY increment.
2148         (elimination_effects): Prohibit elimination of a register modified
2149         by an auto-inc expression.  Disable register elimination rules whose
2150         target register is modified by an auto-inc expression with variable
2151         increment.
2152
2153 2007-02-25  Zdenek Dvorak  <dvorakz@suse.cz>
2154
2155         * tree-ssa-loop-niter.c (compute_estimated_nb_iterations): Fix
2156         off-by-one error.
2157         (array_at_struct_end_p): New function.
2158         (idx_infer_loop_bounds): Use it.
2159         (estimate_numbers_of_iterations_loop): Export.
2160         * predict.c (predict_loops): Use estimated_loop_iterations_int.
2161         Do not use PRED_LOOP_EXIT on exits predicted by # of iterations.
2162         (tree_estimate_probability): Call record_loop_exits.
2163         * tree-data-ref.c (get_number_of_iters_for_loop): Replaced by ...
2164         (estimated_loop_iterations, estimated_loop_iterations_int,
2165         estimated_loop_iterations_tree): New functions.
2166         (analyze_siv_subscript_cst_affine,
2167         compute_overlap_steps_for_affine_1_2,
2168         analyze_subscript_affine_affine): Use estimated_loop_iterations_int.
2169         (analyze_miv_subscript): Use estimated_loop_iterations_tree.
2170         * predict.def (PRED_LOOP_ITERATIONS): Update comment.
2171         (PRED_LOOP_ITERATIONS_GUESSED): New.
2172         * cfgloop.c (record_loop_exits): Do nothing if there are no loops.
2173         * cfgloop.h (estimate_numbers_of_iterations_loop,
2174         estimated_loop_iterations_int): Declare.
2175
2176 2007-02-25  Mark Mitchell  <mark@codesourcery.com>
2177
2178         * doc/extend.texi: Document optional priority argument to
2179         constructors and destructors.
2180         * tree.c (init_priority_for_decl): Adjust GTY markers.
2181         (init_ttree): Use priority-info hash functions for
2182         init_priority_for_decl.
2183         (tree_map_eq): Rename to ...
2184         (tree_map_base_eq): ... this.
2185         (tree_map_marked_p): Rename to ...
2186         (tree_map_base_marked_p): ... this.
2187         (tree_map_base_hash): New function.
2188         (decl_init_priority_lookup): Rework.
2189         (decl_fini_priority_lookup): New function.
2190         (decl_priority_info): New function.
2191         (decl_init_priority_insert): Use it.
2192         (decl_fini_priority_insert): Likewise.
2193         (decl_restrict_base_lookup): Adjust for refactoring of tree_map
2194         hierarchy.
2195         (decl_restrict_base_insert): Likewise.
2196         (decl_debug_expr_insert): Likewise.
2197         (decl_value_expr_lookup): Likewise.
2198         (decl_value_expr_insert): Likewise.
2199         * tree.h (priority_type): New type.
2200         (decl_init_priority_lookup): Use priority_type.
2201         (decl_fini_priority_lookup): New function.
2202         (decl_init_priority_insert): Use priority_type.
2203         (decl_fini_priority_insert): New function.
2204         (DECL_HAS_INIT_PRIORITY): Tweak comments.
2205         (DECL_INIT_PRIORITY): Likewise.
2206         (SET_DECL_INIT_PRIORITY): Add comment.
2207         (DECL_FINI_PRIORITY): New macro.
2208         (SET_DECL_FINI_PRIORITY): Likewise.
2209         (DEFAULT_INIT_PRIORITY): Document.
2210         (MAX_INIT_PRIORITY): Likewise.
2211         (MAX_RESERVED_INIT_PRIORITY): Likewise.
2212         (tree_map_base): New type.
2213         (tree_map_base_eq): New function.
2214         (tree_map_base_hash): Likewise.
2215         (tree_map_base_marked_p): Likewise.
2216         (tree_map): Inherit from tree_map_base.
2217         (tree_map_eq): Make it a macro.
2218         (tree_map_marked_p): Likewise.
2219         (tree_int_map): Inherit from tree_map_base.
2220         (tree_int_map_eq): Make it a macro.
2221         (tree_int_map_hash): Likewise.
2222         (tree_int_map_marked_p): Likewise.
2223         (tree_priority_map): New type.
2224         (tree_priority_map_eq): New macro.
2225         (tree_priority_map_hash): Likewise.
2226         (tree_priority_map_marked_p): Likewise.
2227         * varasm.c (emults_decl): Adjust for refactoring of tree_map
2228         hierarchy.
2229         (emutls_common_1): Likewise.
2230         * lambda-code.c (replace_uses_equiv_to_x_with_y): Likewise.
2231         * tree-ssa-structalias.c (heapvar_lookup): Adjust for refactoring
2232         of tree_map hierarchy.
2233         * tree-cfg.c (move_stmt_r): Likewise.
2234         (new_label_mapper): Likewise.
2235         * c-tree.h (c_expand_body): Move to ...
2236         * c-common.h (c_expand_body): ... here.
2237         * c-decl.c (c_expand_body): Move to ...
2238         * c-common.c (c_expand_body): ... here.
2239         (c_common_attribute_table): Allow 1 argument for the constructor
2240         and destructor attributes.
2241         (get_priority): New function.
2242         (handle_constructor_attribute): Set DECL_INIT_PRIORITY.
2243         (handle_destructor_attribute): Set DECL_FINI_PRIORITY.
2244
2245 2007-02-24  Jan Hubicka  <jh@suse.cz>
2246
2247         PR middle-end/30509
2248         * tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
2249
2250 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
2251             Jan Hubicka  <jh@suse.cz>
2252
2253         PR target/30778
2254         * i386.c (counter_mode): New function.
2255         (expand_set_or_movmem_via_loop): Use it.
2256         (expand_movmem_epilogue): Likewise; fix pasto.
2257         (ix86_expand_movmem): Do emit guard even for constant counts.
2258         (ix86_expand_setmem): Likewise.
2259
2260 2007-02-25  Nick Clifton  <nickc@redhat.com>
2261
2262         * config/frv/frv.h (ASM_OUTPUT_CASE_LABEL): Delete.
2263         (JUMP_TABLES_IN_TEXT_SECTION): Define.
2264
2265 2007-02-24  Uros Bizjak  <ubizjak@gmail.com>
2266
2267         PR target/30770
2268         * config/i386/i386.md (expand_movmem_epilogue): Fix typo, mask
2269         count argument with 0x10, not with 0x16.
2270         (expand_setmem_epilogue): Ditto.
2271
2272 2007-02-24  Mike Stump  <mrs@apple.com>
2273
2274         * config/i386/i386.c (output_pic_addr_const): Stubify optimized
2275         symbols.
2276
2277 2007-02-24  Richard Guenther  <rguenther@suse.de>
2278
2279         PR middle-end/30951
2280         * fold-const.c (fold_binary): Fold x +- CST op x for
2281         EQ_EXPR and NE_EXPR.
2282
2283 2007-02-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2284
2285         * pa.md (muldi3): Force subregs to registers in 64-bit expander.
2286
2287 2007-02-24  Jan Hubicka  <jh@suse.cz>
2288
2289         * cgraphunit.c (decide_is_function_needed): Honor
2290         -fkeep-inline-functions.
2291
2292 2007-02-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2293
2294         * builtins.c (fold_builtin_modf): New.
2295         (fold_builtin_2): Use it.
2296
2297 2007-02-24  Bernd Schmidt  <bernd.schmidt@analog.com>
2298
2299         * loop-iv.c (implies_p): Detect additional cases where A implies B.
2300         (determine_max_iter): Take additional LOOP arg; all callers changed.
2301         Lose broken logic dealing with PLUS.  Try to limit the upper bound by
2302         one using simplifications.
2303         (simplify_using_initial_values): Return if the expression becomes
2304         invalid due to altered regs.
2305
2306 2007-02-23  DJ Delorie  <dj@redhat.com>
2307
2308         * doc/tm.h (BIGGEST_ALIGNMENT): Clarify the purpose of this macro.
2309
2310 2007-02-23  Mike Stump  <mrs@apple.com>
2311
2312         * tlink.c (scan_linker_output): Parse linker messages from
2313         darwin9's linker better.
2314
2315 2007-02-23  Steve Ellcey  <sje@cup.hp.com>
2316
2317         PR debug/29614
2318         * varpool.c (varpool_assemble_pending_decls):  Set
2319         varpool_last_needed_node to null.
2320
2321 2007-02-23  DJ Delorie  <dj@redhat.com>
2322
2323         * config/i386/i386.c (ix86_data_alignment): Don't specify an
2324         alignment bigger than the object file can handle.
2325
2326 2007-02-23  Uros Bizjak  <ubizjak@gmail.com>
2327
2328         PR target/30825
2329         * config/i386/i386.md (*movdi_1_rex64, zero_extendsidi2_32,
2330         zero_extendsidi2_rex64): Penalize MMX register<->memory moves.
2331         (*movsf_1): Penalize MMX moves.
2332
2333 2007-02-23  Bernd Schmidt  <bernd.schmidt@analog.com>
2334
2335         * config/bfin/bfin.md (doloop_end): Fail for loops that can iterate
2336         2^32-1 or more times unless flag_unsafe_loop_optimizations.
2337
2338         * loop-iv.c (determine_max_iter): Moved in front of its sole user.
2339
2340 2007-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2341
2342         * builtins.c (fold_builtin_logb, fold_builtin_significand): New.
2343         (fold_builtin_1): Use them.
2344         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle
2345         BUILT_IN_SIGNIFICAND.
2346
2347 2007-02-23  H.J. Lu  <hongjiu.lu@intel.com>
2348
2349         * config/i386/i386.c (bdesc_1arg): Initialize
2350         IX86_BUILTIN_MOVSHDUP and IX86_BUILTIN_MOVSLDUP with
2351         "__builtin_ia32_movshdup" and "__builtin_ia32_movsldup".
2352         (ix86_init_mmx_sse_builtins): Remove IX86_BUILTIN_MOVSHDUP
2353         and IX86_BUILTIN_MOVSLDUP.
2354
2355 2007-02-22  Paolo Bonzini  <bonzini@gnu.org>
2356
2357         PR rtl-optimization/30841
2358         * fwprop.c (propagate_rtx_1): Accept a VOIDmode replacement address.
2359
2360 2007-02-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2361
2362         * builtins.c (fold_builtin_frexp): New.
2363         (fold_builtin_2): Use it.
2364
2365 2007-02-22  Mark Mitchell  <mark@codesourcery.com>
2366
2367         * doc/invoke.texi (Spec Files): Document getenv spec function.
2368
2369         * gcc.c (getenv_spec_function): New function.
2370         (static_spec_functions): Add it.
2371         * config/vxworks.h (VXWORKS_TARGET_DIR): Remove.
2372         (VXWORKS_ADDITIONAL_CPP_SPEC): Use getenv to find the VxWorks
2373         header files.
2374
2375 2007-02-22  Michael Matz  <matz@suse.de
2376
2377         PR c++/29433
2378         * dwarf2out.c (add_AT_string): Call ggc_strdup once per string.
2379         (type_tag): Use lang_hooks.dwarf_name instead of DECL_NAME.
2380
2381 2007-02-22  Ian Lance Taylor  <iant@google.com>
2382
2383         PR debug/30898
2384         * dwarf2out.c (concatn_mem_loc_descriptor): New static function.
2385         (mem_loc_descriptor): Call it.
2386
2387 2007-02-22  Zdenek Dvorak  <dvorakz@suse.cz>
2388             Ira Rosen  <irar@il.ibm.com>
2389
2390         * tree-data-ref.c (ptr_ptr_may_alias_p): Take alias sets into account.
2391
2392 2007-02-22  Ira Rosen  <irar@il.ibm.com>
2393
2394         PR tree-optimization/30843
2395         * tree-vect-transform.c (vect_transform_loop): Remove strided scalar
2396         stores only after all the group is vectorized.
2397
2398 2007-02-22  Dorit Nuzman  <dorit@il.ibm.com>
2399
2400         PR tree-optimization/30858
2401         * tree-vectorizer.c (vect_is_simple_reduction): Check that the stmts
2402         in the reduction cycle have a single use in the loop.
2403         * tree-vectorizer.h (relevant): Add documentation.
2404
2405 2007-02-20  Mike Stump  <mrs@apple.com>
2406
2407         * configure.ac (powerpc*-*-darwin*): #include <sys/cdefs.h>.
2408         * configure: Regenerate.
2409
2410 2007-02-21  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
2411
2412         Change the defaults of some parameters and options.
2413         * config/spu/spu-protos.h (spu_optimization_options): Declare.
2414         * config/spu/spu.c (spu_optimization_options): Add.
2415         (spu_override_options): Change params in spu_optimization_options.
2416         * config/spu/spu.h (OPTIMIZATION_OPTIONS): Define.
2417
2418         Register 127 is only 16 byte aligned when used as a frame pointer.
2419         * config/spu/spu-protos.h (spu_init_expanders): Declare.
2420         * config/spu/spu.c (spu_expand_prologue): Set REGNO_POINTER_ALIGN for
2421         HARD_FRAME_POINTER_REGNUM.
2422         (spu_legitimate_address):  Use regno_aligned_for_reload.
2423         (regno_aligned_for_load):  HARD_FRAME_POINTER_REGNUM is only 16 byte
2424         aligned when frame_pointer_needed is true.
2425         (spu_init_expanders): New.  Set alignment of HARD_FRAME_POINTER_REGNUM
2426         to 8 bits.
2427         * config/spu/spu.h (INIT_EXPANDERS): Define.
2428
2429         Make sure shift and rotate instructions have valid immediate operands.
2430         * config/spu/predicates.md (spu_shift_operand): Remove.
2431         * config/spu/spu.c (print_operand): Add [efghEFGH] modifiers.
2432         * config/spu/constraints.md (W, O): Extend range.
2433         * config/spu/spu.md (umask, nmask): Define.
2434         (ashl<mode>3, ashldi3, ashlti3_imm, shlqbybi_ti, shlqbi_ti, shlqby_ti,
2435         lshr<mode>3, rotm_<mode>, lshr<mode>3_imm, rotqmbybi_<mode>,
2436         rotqmbi_<mode>, rotqmby_<mode>, ashr<mode>3, rotma_<mode>,
2437         rotl<mode>3, rotlti3, rotqbybi_ti, rotqby_ti, rotqbi_ti): Use
2438         spu_nonmem_operand instead of spu_shift_operands.  Use new modifiers.
2439         (lshr<mode>3_reg):  Fix rtl description.
2440
2441         Make sure mulhisi immediate operands are valid.
2442         * config/spu/predicates.md (imm_K_operand): Add.
2443         * config/spu/spu.md (mulhisi3_imm, umulhisi3_imm): Use imm_K_operand.
2444
2445         Generate constants using fsmbi and andi.
2446         * config/spu/spu.c (enum immediate_class): Add IC_FSMBI2.
2447         (print_operand, spu_split_immediate, classify_immediate,
2448         fsmbi_const_p): Handle IC_FSMBI2.
2449
2450         Correctly handle a CONST_VECTOR containing symbols.
2451         * config/spu/spu.c (print_operand): Handle HIGH correctly.
2452         (spu_split_immediate): Split CONST_VECTORs with -mlarge-mem.
2453         (immediate_load_p): Allow symbols that use 2 instructions to create.
2454         (classify_immediate, spu_builtin_splats):  Don't accept a CONST_VECTOR
2455         with symbols when flag_pic is set.
2456         (const_vector_immediate_p): New.
2457         (logical_immediate_p, iohl_immediate_p, arith_immediate_p): Don't
2458         accept a CONST_VECTOR with symbols.
2459         (spu_legitimate_constant_p): Use const_vector_immediate_p.  Don't
2460         accept a CONST_VECTOR with symbols when flag_pic is set.  Handle HIGH
2461         correctly.
2462         * config/spu/spu.md (high, low): Delete.
2463         (low_<mode>): Define.
2464
2465         Remove INTRmode and INTR_REGNUM, which didn't work.
2466         * config/spu/spu.c (spu_conditional_register_usage): Remove reference
2467         of INTR_REGNUM.
2468         * config/spu/spu-builtins.md (spu_idisable, spu_ienable, set_intr,
2469         set_intr_pic, set_intr_cc, set_intr_cc_pic, set_intr_return, unnamed
2470         peephole2 pattern): Don't use INTR or 131.
2471         (movintrcc): Delete.
2472         * config/spu/spu.h (FIRST_PSEUDO_REGISTER, FIXED_REGISTERS,
2473         CALL_USED_REGISTERS, REGISTER_NAMES, INTR_REGNUM): Remove INTR_REGNUM.
2474         * config/spu/spu.md (UNSPEC_IDISABLE, UNSPEC_IENABLE): Remove.
2475         (UNSPEC_SET_INTR): Add.
2476         * config/spu/spu-modes.def (INTR): Remove.
2477
2478         More accurate warnings about run-time relocations.
2479         * config/spu/spu.c (reloc_diagnostic): Test in_section.
2480
2481         Correctly warn about immediate arguments to specific intrinsics.
2482         * config/spu/spu.c (spu_check_builtin_parm): Handle CONST_VECTORs.
2483         (spu_expand_builtin_1): Call spu_check_builtin_parm before checking
2484         the instruction predicate.
2485
2486         Fix tree check errors with latest update.
2487         * config/spu/spu.c (expand_builtin_args, spu_expand_builtin_1): Use
2488         CALL_EXPR_ARG.
2489         (spu_expand_builtin): Use CALL_EXPR_FN.
2490
2491         Add missing specific intrinsics.
2492         * config/spu/spu-builtins.def: Add si_bisled, si_bisledd and
2493         si_bislede.
2494         * config/spu/spu_internals.h: Ditto.
2495
2496         Fix incorrect operand modifiers.
2497         * config/spu/spu-builtins.md (spu_mpy, spu_mpyu):  Remove use of %H.
2498         * config/spu/spu.md (xor<mode>3):  Change %S to %J.
2499
2500         Optimize one case of zero_extend of a vec_select.
2501         * config/spu/spu.md (_vec_extractv8hi_ze):  Add.
2502
2503         Accept any immediate for hbr.
2504         * config/spu/spu.md (hbr):  Change s constraints to i.
2505
2506 2007-02-21  Paul Brook  <paul@codesourcery.com>
2507
2508         * config/arm/arm.c (thumb2_final_prescan_insn): Don't incrememnt
2509         condexec_count when skipping USE and CLOBBER.
2510
2511 2007-02-21  Nick Clifton  <nickc@redhat.com>
2512
2513         * common.opt (Warray-bounds): Add Warning attribute.
2514         (Wstrict-overflow, Wstrict-overflow=, Wcoverage-mismatch):
2515         Likewise.
2516         (fsized-zeroes): Add Optimization attribute.
2517         (fsplit-wide-types, ftree-scev-cprop): Likewise.
2518         * c.opt (Wc++0x-compat): Add Warning attribute.
2519
2520 2007-02-21  Ulrich Weigand  <uweigand@de.ibm.com>
2521
2522         PR middle-end/30761
2523         * reload1.c (eliminate_regs_in_insn): In the single_set special
2524         case, attempt to re-recognize the insn before falling back to
2525         having reload fix it up.
2526
2527 2007-02-20  Eric Christopher  <echristo@gmail.com>
2528
2529         * config/frv/frv.c (frv_read_argument): Take a tree and int argument.
2530         Rewrite accordingly.
2531         (frv_read_iacc_argument): Ditto.
2532         (frv_expand_set_builtin): Take a call instead of arglist, update for
2533         above changes.
2534         (frv_expand_unop_builtin): Ditto.
2535         (frv_expand_binop_builtin): Ditto.
2536         (frv_expand_cut_builtin): Ditto.
2537         (frv_expand_binopimm_builtin): Ditto.
2538         (frv_expand_voidbinop_builtin): Ditto.
2539         (frv_expand_int_void2arg): Ditto.
2540         (frv_expand_prefetches): Ditto.
2541         (frv_expand_voidtriop_builtin): Ditto.
2542         (frv_expand_voidaccop_builtin): Ditto.
2543         (frv_expand_load_builtin): Ditto.
2544         (frv_expand_store_builtin): Ditto.
2545         (frv_expand_mdpackh_builtin): Ditto.
2546         (frv_expand_mclracc_builtin): Ditto.
2547         (frv_expand_mrdacc_builtin): Ditto.
2548         (frv_expand_mwtacc_builtin): Ditto.
2549         (frv_expand_builtin): Remove usage of CALL_EXPR_ARGS, update
2550         calls for above.
2551
2552 2007-02-20  Janis Johnson  <janis187@us.ibm.com>
2553
2554         * doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
2555         * configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
2556         cmpb instruction.
2557         (HAVE_GAS_DFP): Check for assembler support of decimal floating
2558         point instructions.
2559         * configure: Regenerate.
2560         * config.in: Regenerate.
2561         * config/rs6000/rs6000.opt (mcmpb, mdfp): New.
2562         * config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
2563         masks to power6 and power6x and to POWERPC_MASKS.
2564         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
2565         _ARCH_PWR6.
2566         * config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
2567         * config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
2568         * config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
2569         Access PROTOTYPE as variable, not mask.
2570
2571 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
2572
2573         * rtl.h (remove_reg_equal_equiv_notes): New prototype.
2574         * rtlanal.c (remove_reg_equal_equiv_notes): New function.
2575         * combine.c (adjust_for_new_dest): Use it.
2576         * postreload.c (reload_combine): Likewise.
2577
2578 2007-02-20  Steven Bosscher  <steven@gcc.gnu.org>
2579
2580         * rtlanal.c (find_reg_equal_equiv_note): Do not find REG_EQ*
2581         notes on an insn with multiple sets, even if single_set returns
2582         non-NULL for that insn.
2583
2584 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2585
2586         * fold-const.c (tree_expr_nonnegative_warnv_p): Handle scalb,
2587         scalbn and scalbln.
2588
2589 2007-02-20  Geoffrey Keating  <geoffk@apple.com>
2590
2591         * config/darwin.h (LINK_SPEC): Default -mmacosx-version-min only
2592         if user didn't pass it.
2593         * config/i386/darwin.h (CC1_SPEC): Likewise.
2594         * config/rs6000/darwin.h (CC1_SPEC): Likewise.
2595         (DARWIN_MINVERSION_SPEC): Don't depend on user's setting of
2596         -mmacosx-version-min.
2597
2598 2007-02-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2599             Uros Bizjak  <ubizjak@gmail.com>
2600
2601         * optabs.h (enum optab_index): Add new OTI_scalb.
2602         (scalb_optab): Define corresponding macro.
2603         * optabs.c (init_optabs): Initialize scalb_optab.
2604         * genopinit.c (optabs): Implement scalb_optab using scalb?f3
2605         patterns.
2606         * builtins.c (expand_builtin_mathfn_2, expand_builtin): Handle
2607         BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L} and BUILT_IN_SCALBLN{,F,L}.
2608         (expand_builtin): Expand BUILT_IN_SCALB{,F,L}, BUILT_IN_SCALBN{,F,L}
2609         and BUILT_IN_SCALBLN{,F,L} using expand_builtin_mathfn_2 if
2610         flag_unsafe_math_optimizations is set.
2611
2612         * config/i386/i386.md (scalbxf3, scalb<mode>3): New expanders
2613         to implement scalbf, scalb and scalbl built-ins as inline x87
2614         intrinsics.
2615
2616 2007-02-20  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2617             DJ Delorie <dj@redhat.com>
2618
2619         PR other/30824
2620         * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
2621         (diagnostic_report_diagnostic): ... here, and turn them into real
2622         errors. If warnings are inhibited, no need to do anything.
2623
2624 2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
2625
2626         * config/i386/i386.md (expm1xf2): Reorder insn sequence for
2627         better code generation.
2628
2629 2007-02-20  Ben Elliston  <bje@au.ibm.com>
2630
2631         * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
2632
2633 2007-02-20  Kazu Hirata  <kazu@codesourcery.com>
2634
2635         * config/alpha/alpha.c, config/alpha/alpha.md,
2636         config/alpha/lib1funcs.asm, config/alpha/vms-crt0-64.c,
2637         config/alpha/vms-psxcrt0-64.c, config/arc/arc.c,
2638         config/arc/arc.h, config/arm/arm.c, config/arm/arm.md,
2639         config/arm/lib1funcs.asm: Follow spelling conventions.
2640
2641         * config/c4x/c4x.md, config/cris/cris.c, config/crx/crx.c,
2642         config/fr30/fr30.md, config/i386/i386.h,
2643         config/iq2000/iq2000.h, config/iq2000/predicates.md,
2644         config/pa/milli64.S, config/pa/pa.c, config/pa/pa.h,
2645         config/pa/pa.md, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
2646         config/pdp11/pdp11.c, config/pdp11/pdp11.h,
2647         config/rs6000/altivec.md, config/rs6000/rs6000.c,
2648         config/s390/s390-modes.def, config/sparc/netbsd-elf.h,
2649         config/sparc/sparc.c, config/sparc/sparc.h,
2650         config/sparc/sparc.md, config/spu/constraints.md,
2651         config/spu/spu.c, config/stormy16/stormy16.md: Follow spelling
2652         conventions.
2653
2654 2007-02-20  Alan Modra  <amodra@bigpond.net.au>
2655
2656         PR target/29943
2657         * varasm.c (use_blocks_for_decl_p): Return false for decls with
2658         alias attribute.
2659
2660 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
2661
2662         * doc/invoke.texi (-ftree-lrs): Remove.
2663
2664 2007-02-19  Diego Novillo  <dnovillo@redhat.com>
2665
2666         * tree-ssa-pre.c (create_value_expr_from): Initialize POOL to
2667         NULL.
2668
2669 2007-02-19  Lee Millward  <lee.millward@codesourcery.com>
2670
2671         * config/ia64/ia64.c (ia64_expand_builtin): Use the
2672         new CALL_EXPR_FN macro for retrieving the function
2673         declaration of the input expression.
2674
2675 2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
2676
2677         * c.opt (Waddress): New.
2678         * common.opt (Walways-true): Delete.
2679         (Wstring-literal-comparison): Delete.
2680         * doc/invoke.texi (Warning Options): Delete -Walways-true and
2681         -Wstring-literal-comparison. Add -Waddress.
2682         (Waddress): New.
2683         (Walways-true): Delete.
2684         (Wstring-literal-comparison): Delete.
2685         * doc/extend.texi (#pragma GCC diagnostic): Use -Wformat
2686         consistently instead of -Walways-true in example.
2687         * c-opts.c (c_common_handle_option): -Waddress is enabled by -Wall.
2688         * c-typeck.c (parser_build_binary_op): Replace
2689         -Wstring-literal-comparison and -Walways-true with -Waddress.
2690         * c-common.c (c_common_truthvalue_conversion): Replace -Walways-true
2691         with -Waddress.
2692
2693 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2694
2695         * tree-cfg.c (dump_function_to_file): Be prepared for functions
2696         without DECL_STRUCT_FUNCTION initialized.
2697
2698 2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
2699
2700         * gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
2701         due to calls to functions taking pointers as parameters.
2702
2703 2007-02-19  Richard Henderson  <rth@redhat.com>
2704
2705         PR debug/29558
2706         * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
2707         in memory.
2708
2709 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
2710
2711         * config/s390/s390.c (s390_call_saved_register_used,
2712         s390_function_ok_for_sibcall): Adjust the way CALL_EXPR arguments are
2713         accessed to the new scheme.
2714
2715 2007-02-19  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
2716
2717         * config/cris/cris.c (cris_movem_load_rest_p, cris_store_multiple_op_p)
2718         (cris_print_index, cris_print_operand, cris_print_operand_address)
2719         (cris_reload_address_legitimized, cris_rtx_costs, cris_address_cost)
2720         (cris_side_effect_mode_ok, cris_valid_pic_const, cris_split_movdx)
2721         (cris_expand_pic_call_address): Use xxx_P predicate macros instead of
2722         GET_CODE () == xxx.
2723         * config/cris/cris.h (SECONDARY_RELOAD_CLASS, EXTRA_CONSTRAINT_Q,
2724         EXTRA_CONSTRAINT_T, BDAP_INDEX_P, BIAP_INDEX_P, SIMPLE_ADDRESS_P,
2725         GO_IF_LEGITIMATE_ADDRESS): Ditto.
2726         * config/cris/cris.md (define_insns: *btst, movdi, *mov_side<mode>)
2727         (*mov_sidesisf, *mov_side<mode>_mem, *mov_sidesisf_mem)
2728         (*clear_side<mode>, movsi, *movsi_internal, *ext_sideqihi)
2729         (*ext_side<mode>si, *op_side<mode>, *op_swap_side<mode>, addsi3)
2730         (*extopqihi_side, *extop<mode>si_side, *extopqihi_swap_side)
2731         (*extop<mode>si_swap_side, addi_mul, *addi,andsi3, andhi3, ashl<mode>3)
2732         (uminsi3, call, call_value): Ditto.
2733         (define_split: indir_to_reg_split, unnamed): Ditto.
2734
2735 2007-02-19  Dorit Nuzman  <dorit@il.ibm.com>
2736
2737         PR tree-optimization/30975
2738         * tree-vect-trasnform.c (vect_get_vec_def_for_stmt_copy): Remove
2739         wrong assert.
2740
2741 2007-02-18  Eric Christopher  <echristo@gmail.com>
2742
2743         * mips.c (mips_prepare_builtin_arg): Add argnum parameter.
2744         Remove use of arglist.
2745         (mips_expand_builtin): Remove use of arglist, pass in expr.
2746         (mips_expand_builtin_direct): Rewrite handling for arglist removal.
2747         (mips_expand_builtin_movtf): Ditto.
2748         (mips_expand_builtin_compare): Ditto.
2749
2750 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
2751
2752         * tree-sra.c (sra_build_assignment): Replace assertion
2753         checking with a comment explaining why it can't be done.
2754
2755 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
2756
2757         PR middle-end/30833
2758         * tree-dump.c (dequeue_and_dump): Add tcc_vl_exp case missed
2759         during CALL_EXPR representation conversion.
2760         * tree-ssa-propagate.c (set_rhs): Likewise.
2761
2762 2007-02-19  Alexandre Oliva  <aoliva@redhat.com>
2763
2764         * tree-sra.c (sra_build_assignment): Disable assertion checking
2765         for now.
2766
2767 2007-02-18  Roger Sayle  <roger@eyesopen.com>
2768
2769         * function.c (gimplify_parameters): Call build_gimple_modify_stmt
2770         instead of calling build2 with a GIMPLE_MODIFY_STMT.
2771         * gimple-low.c (lower_function_body, lower_builtin_setjmp):
2772         Likewise.
2773         * gimplify.c (build_stack_save_restore, gimplify_return_expr,
2774         gimplify_decl_expr,  gimplify_self_mod_expr, gimplify_cond_expr,
2775         gimplify_init_ctor_eval_range, gimple_push_cleanup,
2776         gimplify_omp_for, gimplify_omp_atomic_pipeline,
2777         gimplify_omp_atomic_mutex, gimplify_expr, gimplify_one_sizepos,
2778         force_gimple_operand): Likewise.
2779         * ipa-cp.c (constant_val_insert): Likewise.
2780         * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
2781         lambda_loopnest_to_gcc_loopnest, replace_uses_equiv_to_x_with_y,
2782         perfect_nestify): Likewise.
2783         * langhooks.c (lhd_omp_assignment): Likewise.
2784         * omp-low.c (lower_rec_input_clauses, lower_reduction_clauses,
2785         lower_copyprivate_clauses, lower_send_clauses,
2786         lower_send_shared_vars, expand_parallel_call,
2787         expand_omp_for_generic, expand_omp_for_static_nochunk,
2788         expand_omp_for_static_chunk, expand_omp_sections,
2789         lower_omp_single_copy, lower_omp_for_lastprivate,
2790         lower_omp_parallel, init_tmp_var, save_tmp_var): Likewise.
2791         * value-prof.c (tree_divmod_fixed_value, tree_mod_pow2,
2792         tree_mod_subtract, tree_ic, tree_stringop_fixed_value):
2793         Likewise.
2794
2795 2007-02-19  Kazu Hirata  <kazu@codesourcery.com>
2796
2797         * config/sh/divtab.c, config/sh/sh.c, config/sh/sh.h,
2798         config/sh/sh.md: Follow spelling conventions.
2799
2800         * config/frv/frv.c, config/frv/frv.h, config/frv/frv.md,
2801         config/frv/predicates.md: Follow spelling conventions.
2802
2803         * config/m68k/linux-unwind.h: Fix a comment typo.
2804         * target.h: Follow spelling conventions.
2805
2806 2007-02-18  Roger Sayle  <roger@eyesopen.com>
2807
2808         PR rtl-optimization/28173
2809         * simplify-rtx.c (simplify_binary_operation_1) <IOR>:  Optimize
2810         (X & C1) | C2 as C2 when (C1 & C2) == C1 and X has no side-effects.
2811         Optimize (X & C1) | C2 as X | C2 when (C1 | C2) == ~0.
2812         Canonicalize (X & C1) | C2 as (X & (C1 & ~C2)) | C2.
2813         <AND>: Canonicalize (X | C1) & C2 as (X & C2) | (C1 & C2).
2814
2815 2007-02-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2816
2817         * builtins.c (fold_builtin_load_exponent): New.
2818         (fold_builtin_2): Use it.
2819
2820 2007-02-18  Steven Bosscher  <steven@gcc.gnu.org>
2821
2822         PR rtl-optimization/30773
2823         * local-alloc.c (update_equiv_regs): Do not set reg_equiv_init
2824         if we fail to attach a REG_EQUIV note.
2825
2826 2007-02-18  David Edelsohn  <edelsohn@gnu.org>
2827             Roger Sayle  <roger@eyesopen.com>
2828
2829         * config/rs6000/rs6000.md (bswapsi2): New define_insn and splitter.
2830
2831 2007-02-18  Sandra Loosemore  <sandra@codesourcery.com>
2832
2833         * calls.c (initialize_argument_information): Pass original EXP
2834         and STRUCT_VALUE_ADDR_VALUE instead of a list of arguments.  Move
2835         code to split complex arguments here, as part of initializing the
2836         ARGS array.
2837         (expand_call): Remove code that builds a list of arguments and
2838         inserts implicit arguments into it.  Instead, just count how many
2839         implicit arguments there will be so we can determine the size of
2840         the ARGS array, and let initialize_argument_information do the work.
2841         (split_complex_values): Delete unused function.
2842
2843 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
2844
2845         * tree-eh.c (tree_could_trap_p): Handle VIEW_CONVERT_EXPR.
2846
2847 2007-02-18  Eric Botcazou  <ebotcazou@adacore.com>
2848
2849         * calls.c (mem_overlaps_already_clobbered_arg_p): Return true
2850         for arg pointer based indexed addressing.
2851
2852 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2853
2854         * config/ia64/ia64.h, config/ia64/ia64.md,
2855         config/ia64/predicates.md, config/ia64/sysv4.h: Follow
2856         spelling conventions.
2857
2858 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2859
2860         * config/m68k/m68k.c (split_di): New.
2861         * config/m68k/m68k-protos.h: Declare split_di.
2862         * config/m68k/m68k.md (extendsidi2*,ashldi3*,ashrdi3*,lshrdi3*):
2863           Improve predicate handling and split constant shifts.
2864
2865 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2866
2867         * config/m68k/m68k.md (extv,extzv,insv): disable dynamic
2868         parameter for register bitfield operations, general predicates
2869         cleanup
2870
2871 2007-02-18  Roman Zippel <zippel@linux-m68k.org>
2872
2873         * config/m68k/linux.h (MD_UNWIND_SUPPORT): Define.
2874         * config/m68k/linux-unwind.h: New file.
2875
2876 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2877
2878         * cfgloop.c, config/alpha/alpha.c, config/bfin/bfin.c,
2879         config/i386/athlon.md, config/ia64/ia64.md,
2880         config/rs6000/rs6000.c, config/s390/s390.c, config/spu/spu.md,
2881         df-problems.c, df.h, fold-const.c, ipa-cp.c, ipa-inline.c,
2882         ipa-prop.h, see.c, struct-equiv.c, tree-inline.c,
2883         tree-ssa-loop-niter.c, tree-vect-analyze.c,
2884         tree-vect-transform.c: Fix comment typos.
2885
2886 2007-02-17  Kazu Hirata  <kazu@codesourcery.com>
2887
2888         * sched-deps.c (find_insn_list): Remove.
2889         * sched-int.h: Remove the prototype for find_insn_list.
2890
2891 2007-02-16  Geoffrey Keating  <geoffk@apple.com>
2892
2893         * config/darwin.h (LINK_SPEC): Always pass -macosx_version_min
2894         to linker.
2895         (DARWIN_EXTRA_SPECS): Add %(darwin_minversion).
2896         * config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Just call
2897         darwin_rs6000_override_options.
2898         (C_COMMON_OVERRIDE_OPTIONS): Expect
2899         darwin_macosx_version_min to be non-NULL always.
2900         (TARGET_C99_FUNCTIONS): Likewise.
2901         (CC1_SPEC): Always pass -mmacosx-version-min to cc1*.
2902         (DARWIN_MINVERSION_SPEC): New.
2903         * config/rs6000/rs6000.c (darwin_rs6000_override_options): New.
2904         * config/i386/darwin.h (CC1_SPEC): Always pass -mmacosx-version-min
2905         to cc1*.
2906         (DARWIN_MINVERSION_SPEC): New.
2907         * config/darwin.opt (mmacosx-version-min): Initialize to non-NULL
2908         value.
2909         * config/darwin-c.c (darwin_cpp_builtins): Expect
2910         darwin_macosx_version_min to be non-NULL always.
2911
2912         * config/rs6000/rs6000.c: Clean up trailing whitespace.
2913
2914 2007-02-16  Uros Bizjak  <ubizjak@gmail.com>
2915
2916         * config/i386/i386.h (x86_use_xchgb): New.
2917         (TARGET_USE_XCHGB): New macro.
2918         * config/i386/i386.c (x86_use_xchgb): Set for PENT4.
2919         * config/i386/i386.md (*rotlhi3_1 splitter, *rotrhi3_1 splitter):
2920         Split after reload into bswaphi for shifts of 8.
2921         (bswaphi_lowpart): Generate rolw insn for HImode byte swaps.
2922         (*bswaphi_lowpart_1): Generate xchgb for Q registers for TARGET_XCHGB
2923         or when optimizing for size.
2924
2925 2007-02-16  Richard Guenther  <rguenther@suse.de>
2926             Christian Bruel  <christian.bruel@st.com>
2927
2928         * fold-const.c (tree_swap_operands_p): Treat SSA_NAMEs like
2929         DECLs but prefer SSA_NAMEs over DECLs.
2930
2931 2007-02-16  Richard Guenther  <rguenther@suse.de>
2932
2933         * tree-flow-inline.h (single_imm_use_p): Remove.
2934         (zero_imm_uses_p): Likewise.
2935         * tree-ssa-coalesce.c (create_outofssa_var_map): Use has_single_use
2936         instead of single_imm_use_p.
2937         * tree-cfg.c (replace_uses_by): Use has_zero_use instead of
2938         zero_imm_uses_p.
2939
2940 2007-02-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2941
2942         PR other/27843
2943         * Makefile.in (SYSTEM_HEADER_DIR): Use single quotes to avoid
2944         nested double- and backquotes.
2945
2946 2007-02-15  Roger Sayle  <roger@eyesopen.com>
2947
2948         PR middle-end/30391
2949         * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
2950         should be unreachable.
2951         (build2_stat): Allow construction of MODIFY_EXPR at any time.
2952         For the time being redirect GIMPLE_MODIFY_STMT to the new
2953         (renamed) build_gimple_modify_stmt_stat.
2954         (build2_gimple_stat): Rename to...
2955         (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
2956         Always build a GIMPLE_MODIFY_STMT node.
2957         * tree.h (build2_gimple, build2_gimple_stat): Delete.
2958         (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
2959         declarations.
2960
2961         * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
2962         gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
2963         * tree-complex.c (set_component_ssa_name, expand_complex_move,
2964         expand_complex_div_wide): Likewise.
2965         * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
2966         * tree-ssa-loop-im.c (schedule_sm): Likewise.
2967         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
2968         * tree-ssa-loop-manip.c (create_iv): Likewise.
2969         * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
2970         abs_replacement): Likewise.
2971         * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
2972         realify_fake_stores): Likewise.
2973
2974         * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
2975         node rather than a GIMPLE_MODIFY_STMT node.
2976         (std_gimpify_va_arg_expr, expand_builtin_va_copy,
2977         fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
2978         Likewise.
2979         (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
2980         * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
2981         GIMPLE_MODIFY_STMT.
2982
2983 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2984
2985         PR middle-end/30433
2986         * fold-const.c (fold_comparison): Add back the
2987         folding of constant complex comparisions.
2988
2989 2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2990
2991         PR middle-end/30729
2992         * stmt.c (warn_if_unused_value): VA_ARG_EXPR has side
2993         effects unknown to this function, return early.
2994
2995 2007-02-15  Ian Lance Taylor  <iant@google.com>
2996
2997         * lower-subreg.c (move_eh_region_note): New static function.
2998         (resolve_simple_move): Call it.
2999         (decompose_multiword_subregs): Track blocks for which we resolve a
3000         simple move which is also a control flow insn.  Pass them to
3001         find_many_sub_basic_blocks.
3002         (pass_lower_subreg): Add TODO_verify_flow.
3003         (pass_lower_subreg2): Likewise.
3004
3005 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3006             Brooks Moses  <brooks.moses@codesourcery.com>
3007             Lee Millward  <lee.millward@codesourcery.com>
3008
3009         * tree.h (enum tree_code_class): Add tcc_vl_exp.
3010         (VL_EXP_CLASS_P): New.
3011         (TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
3012         TREE_CODE_LENGTH.
3013         (TREE_OPERAND_CHECK_CODE): Likewise.
3014         (GIMPLE_STMT_OPERAND_CHECK): Likewise.
3015         (TREE_RTL_OPERAND_CHECK): Likewise.
3016         (tree_operand_check_failed): Make second parameter the whole tree
3017         instead of its code.  Fixed callers.
3018         (VL_EXP_CHECK): New.
3019         (TREE_OPERAND_LENGTH): New.
3020         (VL_EXP_OPERAND_LENGTH): New.
3021         (CALL_EXPR_FN): New.
3022         (CALL_EXPR_STATIC_CHAIN): New.
3023         (CALL_EXPR_ARGS): New.
3024         (CALL_EXPR_ARG): New.
3025         (call_expr_nargs): New.
3026         (CALL_EXPR_ARGP): New.
3027         (build_nt_call_list): Declare.
3028         (build_vl_exp_stat): Declare.
3029         (build_vl_exp): New.
3030         (build_call_list): Declare.
3031         (build_call_nary): Declare.
3032         (build_call_valist): Declare.
3033         (build_call_array): Declare.
3034         (call_expr_arg): Declare.
3035         (call_expr_argp): Declare.
3036         (call_expr_arglist): Declare.
3037         (fold_build_call_list): Declare.
3038         (fold_build_call_list_initializer): Declare.
3039         (fold_call_expr): Declare to replace fold_builtin.
3040         (fold_builtin_fputs): Update to agree with modified definition.
3041         (fold_builtin_strcpy): Likewise.
3042         (fold_builtin_strncpy): Likewise.
3043         (fold_builtin_memory_chk): Likewise.
3044         (fold_builtin_stxcpy_chk): Likewise.
3045         (fold_builtin_strncpy_chk): Likewise.
3046         (fold_builtin_next_arg): Likewise.
3047         (fold_build_call_expr): Declare.
3048         (fold_builtin_call_list): Declare.
3049         (fold_builtin_call_valist): Declare.
3050         (build_call_expr): Declare.
3051         (validate_arglist): Update to agree with modified definition.
3052         (tree_operand_length): New.
3053         (call_expr_arg_iterator): New.
3054         (init_call_expr_arg_iterator): New.
3055         (next_call_expr_arg): New.
3056         (first_call_expr_arg): New.
3057         (more_call_expr_args_p): New.
3058         (FOR_EACH_CALL_EXPR_ARG): New.
3059
3060         * tree.c (tree_code_class_string): Add entries for tcc_vl_exp
3061         and tcc_gimple_stmt.
3062         (tree_code_size): Update documentation.  Use sizeof (tree) rather
3063         than sizeof (char *).
3064         (tree_size): Likewise.  Add case for tcc_vl_exp.
3065         (tree_node_structure): Add case for tcc_vl_exp.
3066         (contains_placeholder_p): Likewise.
3067         (substitute_in_expr): Likewise.
3068         (substitute_placeholder_in_expr): Likewise.
3069         (stabilize_reference_1): Likewise.
3070         (build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
3071         to diagnose breakage of this interface for constructing CALL_EXPRs.
3072         (build_nt): Add similar assertion here.
3073         (build_nt_call_list): New.
3074         (simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
3075         (iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
3076         TREE_CODE_LENGTH.
3077         (get_callee_fndecl): Use new CALL_EXPR accessors.
3078         (tree_operand_check_failed): Change parameters to pass entire node
3079         instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
3080         (process_call_operands): New.
3081         (build_vl_exp_stat): New.
3082         (build_call_list): New.
3083         (build_call_nary): New.
3084         (build_call_valist): New.
3085         (build_call_array): New.
3086         (walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3087         (call_expr_arglist): New.
3088
3089         * tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
3090         tcc_vl_exp instead of a fixed-size tcc_expression.
3091
3092         * doc/c-tree.texi (CALL_EXPR): Document new representation and
3093         accessors for CALL_EXPRs.
3094         (AGGR_INIT_EXPR): Likewise.
3095
3096 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3097             Brooks Moses  <brooks.moses@codesourcery.com>
3098             Lee Millward  <lee.millward@codesourcery.com>
3099
3100         * builtins.c (c_strlen): Return NULL_TREE instead of 0.
3101         (expand_builtin_nonlocal_goto): Change parameter to be entire
3102         CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
3103         (expand_builtin_prefetch): Likewise.
3104         (expand_builtin_classify_type): Likewise.
3105         (mathfn_built_in): Return NULL_TREE instead of 0.
3106         (expand_errno_check): Use new CALL_EXPR accessors.
3107         (expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
3108         Return NULL_RTX instead of 0.
3109         (expand_builtin_mathfn_2): Likewise.
3110         (expand_builtin_mathfn_3): Likewise.
3111         (expand_builtin_interclass_mathfn): Likewise.
3112         (expand_builtin_sincos): Likewise.
3113         (expand_builtin_cexpi): Likewise.
3114         (expand_builtin_int_roundingfn): Likewise.
3115         (expand_builtin_int_roundingfn_2): Likewise.
3116         (expand_builtin_pow): Likewise.
3117         (expand_builtin_powi): Likewise.
3118         (expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
3119         of arglist, fixing callers appropriately.  Use new CALL_EXPR
3120         accessors and constructors.  Return NULL_RTX instead of 0.
3121         (expand_builtin_strstr): Likewise.
3122         (expand_builtin_strchr): Likewise.
3123         (expand_builtin_strrchr): Likewise.
3124         (expand_builtin_strpbrk): Likewise.
3125         (expand_builtin_memcpy): Likewise.
3126         (expand_builtin_mempcpy): Likewise.
3127         (expand_builtin_mempcpy_args): New.
3128         (expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
3129         (expand_builtin_memmove_args): New.
3130         (expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
3131         (expand_movstr): Likewise.
3132         (expand_builtin_strcpy): Likewise.
3133         (expand_builtin_strcpy_args): New.
3134         (expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
3135         (expand_builtin_strncpy): Likewise.
3136         (expand_builtin_memset): Likewise.
3137         (expand_builtin_memset_args): New.
3138         (expand_builtin_bzero): Similarly to expand_builtin_memset.
3139         (expand_builtin_memcmp): Likewise.
3140         (expand_builtin_strcmp): Likewise.
3141         (expand_builtin_strncmp): Likewise.
3142         (expand_builtin_strcat): Likewise.
3143         (expand_builtin_strncat): Likewise.
3144         (expand_builtin_strspn): Likewise.
3145         (expand_builtin_strcspn): Likewise.
3146         (expand_builtin_args_info): Likewise.
3147         (expand_builtin_va_start): Likewise.
3148         (gimplify_va_arg_expr): Likewise.
3149         (expand_builtin_va_end): Likewise.
3150         (expand_builtin_va_copy): Likewise.
3151         (expand_builtin_frame_address): Likewise.
3152         (expand_builtin_alloca): Likewise.
3153         (expand_builtin_bswap): Likewise.
3154         (expand_builtin_unop): Likewise.
3155         (expand_builtin_fputs): Likewise.
3156         (expand_builtin_expect): Likewise.
3157         (expand_builtin_fabs): Likewise.
3158         (expand_builtin_copysign): Likewise.
3159         (expand_builtin_printf): Likewise.
3160         (expand_builtin_fprintf): Likewise.
3161         (expand_builtin_sprintf): Likewise.
3162         (expand_builtin_init_trampoline): Likewise.
3163         (expand_builtin_signbit): Likewise.
3164         (expand_builtin_fork_or_exec): Likewise.
3165         (expand_builtin_sync_operation): Likewise.
3166         (expand_builtin_compare_and_swap): Likewise.
3167         (expand_builtin_lock_test_and_set): Likewise.
3168         (expand_builtin_lock_release): Likewise.
3169         (expand_builtin): Likewise.
3170         (builtin_mathfn_code): Likewise.
3171
3172         (fold_builtin_constant_p): Pass call arguments individually instead
3173         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
3174         accessors and constructors.  Return NULL_TREE instead of 0.
3175         (fold_builtin_expect): Likewise.
3176         (fold_builtin_classify_type): Likewise.
3177         (fold_builtin_strlen): Likewise.
3178         (fold_builtin_nan): Likewise.
3179         (integer_valued_real_p): Likewise.
3180         (fold_trunc_transparent_mathfn): Likewise.
3181         (fold_fixed_mathfn): Likewise.
3182         (fold_builtin_cabs): Likewise.
3183         (fold_builtin_sqrt): Likewise.
3184         (fold_builtin_cbrt): Likewise.
3185         (fold_builtin_cos): Likewise.
3186         (fold_builtin_cosh): Likewise.
3187         (fold_builtin_tan): Likewise.
3188         (fold_builtin_sincos): Likewise.
3189         (fold_builtin_cexp): Likewise.
3190         (fold_builtin_trunc): Likewise.
3191         (fold_builtin_floor): Likewise.
3192         (fold_builtin_ceil): Likewise.
3193         (fold_builtin_round): Likewise.
3194         (fold_builtin_int_roundingfn): Likewise.
3195         (fold_builtin_bitop): Likewise.
3196         (fold_builtin_bswap): Likewise.
3197         (fold_builtin_logarithm): Likewise.
3198         (fold_builtin_hypot): Likewise.
3199         (fold_builtin_pow): Likewise.
3200         (fold_builtin_powi): Likewise.
3201         (fold_builtin_exponent): Likewise.
3202         (fold_builtin_memset): Likewise.
3203         (fold_builtin_bzero): Likewise.
3204         (fold_builtin_memory_op): Likewise.
3205         (fold_builtin_bcopy): Deleted; call site changed to invoke
3206         fold_builtin_memory_op directly.
3207         (fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
3208         (fold_builtin_strncpy): Likewise.
3209         (fold_builtin_memcmp): Likewise.
3210         (fold_builtin_strcmp): Likewise.
3211         (fold_builtin_strncmp): Likewise.
3212         (fold_builtin_signbit): Likewise.
3213         (fold_builtin_copysign): Likewise.
3214         (fold_builtin_isascii): Likewise.
3215         (fold_builtin_toascii): Likewise.
3216         (fold_builtin_isdigit): Likewise.
3217         (fold_builtin_fabs): Likewise.
3218         (fold_builtin_abs): Likewise.
3219         (fold_builtin_fmin_fmax): Likewise.
3220         (fold_builtin_carg): Likewise.
3221         (fold_builtin_classify): Likewise.
3222         (fold_builtin_unordered_cmp): Likewise.
3223
3224         (fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
3225         New functions split out from fold_builtin_1.
3226         (fold_builtin_n): New.
3227         (fold_builtin_varargs): New.
3228         (fold_builtin): Deleted.  Most callers changed to use fold_call_expr
3229         instead.
3230         (fold_call_expr): New.
3231         (build_function_call_expr): Rewrite to use new helper function.
3232         (fold_builtin_call_list): New.
3233         (build_call_expr): New.
3234         (fold_builtin_call_valist): New.
3235         (rewrite_call_expr): New.
3236         (validate_arg): New.
3237         (validate_arglist): Change parameter to be entire CALL_EXPR instead
3238         of an arglist.  Change return type to bool.  Use new CALL_EXPR
3239         accessors.
3240
3241         (fold_builtin_strstr):  Pass call arguments individually instead
3242         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
3243         accessors and constructors.  Return NULL_TREE instead of 0.
3244         (fold_builtin_strchr): Likewise.
3245         (fold_builtin_strrchr): Likewise.
3246         (fold_builtin_strpbrk): Likewise.
3247         (fold_builtin_strcat): Likewise.
3248         (fold_builtin_strncat): Likewise.
3249         (fold_builtin_strspn): Likewise.
3250         (fold_builtin_strcspn): Likewise.
3251         (fold_builtin_fputs): Likewise.
3252         (fold_builtin_next_arg): Likewise.
3253         (fold_builtin_sprintf): Likewise.
3254
3255         (expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
3256         NULL_RTX instead of 0.
3257         (expand_builtin_memory_chk): Likewise.
3258         (maybe_emit_chk_warning): Likewise.
3259         (maybe_emit_sprintf_chk_warning): Likewise.
3260
3261         (fold_builtin_object_size): Pass call arguments individually instead
3262         of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
3263         accessors and constructors.  Return NULL_TREE instead of 0.
3264         (fold_builtin_memory_chk): Likewise.
3265         (fold_builtin_stxcpy_chk): Likewise.
3266         (fold_builtin_strncpy_chk): Likewise.
3267         (fold_builtin_strcat_chk): Likewise.
3268         (fold_builtin_strcat_chk): Likewise.
3269         (fold_builtin_strncat_chk): Likewise.
3270         (fold_builtin_sprintf_chk): Likewise.
3271         (fold_builtin_snprintf_chk): Likewise.
3272         (fold_builtin_printf): Likewise.
3273         (fold_builtin_vprintf): Likewise.
3274
3275         * fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
3276         constructors.
3277         (operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
3278         (make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3279         (extract_muldiv_1): Add VL_EXP_CLASS_P case.
3280         (fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
3281         (fold_unary): Likewise.
3282         (fold_binary): Likewise.
3283         (fold_ternary): Remove CALL_EXPR case, since they are no longer
3284         ternary expressions.
3285         (fold): Add logic for tcc_vl_exp.
3286         (fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
3287         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3288         (fold_build3_stat): Add assertion to flag broken interface for
3289         constructing CALL_EXPRs.
3290         (fold_build_call_list): New.
3291         (fold_build_call_list_initializer): New.
3292         (tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
3293         constructors.
3294         (fold_strip_sign_ops): Likewise.
3295
3296 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
3297             Brooks Moses  <brooks.moses@codesourcery.com>
3298             Lee Millward  <lee.millward@codesourcery.com>
3299
3300         * tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
3301         accessors and dump arguments explicitly.
3302
3303         * tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
3304         TREE_CODE_LENGTH.
3305         (dump_generic_node): Use new CALL_EXPR accessors and walk arguments
3306         explicitly.
3307         (print_call_name): Use new CALL_EXPR accessors.
3308
3309         * print-tree.c (print_node): Add case tcc_vl_exp.  Print
3310         CALL_EXPR arguments explicitly instead of as a list.  Use
3311         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3312
3313         * tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
3314         (vrp_visit_stmt): Likewise.
3315
3316         * tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
3317         know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
3318         TREE_CODE_LENGTH.
3319         (force_move_till_expr): Likewise.
3320
3321         * targhooks.c (default_external_stack_protect_fail): Use
3322         build_call_expr instead of build_function_call_expr.
3323         (default_hidden_stack_protect_fail): Likewise.
3324
3325         * tree-complex.c (expand_complex_libcall): Use build_call_expr to
3326         build the call.
3327
3328         * cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
3329         and walk arguments explicitly.
3330
3331         * tree-ssa-loop-niter.c (simplify_replace_tree): Use
3332         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3333         (expand_simple_operations): Likewise.
3334         (infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
3335
3336         * gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
3337         of TREE_CODE_LENGTH.
3338         (walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
3339
3340         * optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
3341         instead of TREE_CODE_LENGTH.
3342
3343         * value_prof.c (tree_ic): Use new CALL_EXPR accessors.
3344         (tree_ic_transform): Likewise.
3345         (interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
3346         parameter instead of arglist.  Fix callers.
3347         (tree_stringop_fixed_value): Use new CALL_EXPR accessors.
3348         (tree_stringops_transform): Likewise.
3349         (tree_indirect_call_to_profile): Likewise.
3350         (tree_stringops_values_to_profile): Likewise.
3351
3352         * tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
3353         (eliminate_tail_call): Likewise.
3354
3355         * ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
3356
3357         * tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
3358         Use TREE_OPERAND_LENGTH and generalize to handle any number of
3359         operands.
3360         (instantiate_parameters_1): Can't handle tcc_vl_exp here.
3361
3362         * omp-low.c (build_omp_barrier): Use build_call_expr.
3363         (lower_rec_input_clauses): Likewise.
3364         (lower_reduction_clauses): Likewise.
3365         (expand_parallel_call): Likewise.
3366         (maybe_catch_exception): Likewise.
3367         (expand_omp_for_generic): Likewise.
3368         (expand_omp_for_static_nochunk): Likewise.
3369         (expand_omp_sections): Likewise.
3370         (lower_omp_single_simple): Likewise.
3371         (lower_omp_single_copy): Likewise.
3372         (lower_omp_master): Likewise.
3373         (lower_omp_ordered): Likewise.
3374         (lower_omp_critical): Likewise.
3375
3376         * ipa-reference.c (check-call): Use new CALL_EXPR iterator.
3377         (scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
3378
3379         * tree-gimple.c (is_gimple_call_addr): Fix doc.
3380         (recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
3381         TREE_CODE_LENGTH.  Add tcc_vl_exp case.
3382
3383         * tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
3384         and generalize to handle any number of operands.
3385         (chrec_contains_undetermined): Likewise.
3386         (tree_contains_chrecs): Likewise.
3387         (evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
3388
3389         * cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
3390
3391         * tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
3392         fold_call_expr instead of fold_builtin.
3393         (ccp_fold_builtin): Likewise.  Update calls into builtins.c to
3394         match declarations there.
3395         (fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
3396         updates.
3397
3398         * tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
3399         TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
3400
3401         * ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
3402         (scan_function): Add case tcc_vl_exp for CALL_EXPR.
3403
3404         * tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
3405         accessors.
3406
3407         * tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
3408         (execute_cse_sincos): Use new CALL_EXPR accessors.
3409
3410         * tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
3411
3412         * gimple-low.c (lower_function_body): Use build_call_expr.
3413         (lower_builtin_setjmp): Likewise.
3414
3415         * expr.c (emit_block_move_via_libcall): Use build_call_expr.
3416         (set_storage_via_libcall): Likewise.