emit-rtl.c (immed_double_const): Cleanup.
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2006-02-23  Zdenek Dvorak <dvorakz@suse.cz>
2
3         * emit-rtl.c (immed_double_const): Cleanup.
4
5 2006-02-23  Daniel Berlin  <dberlin@dberlin.org>
6         
7         Fix PR tree-optimization/26376
8         * tree-ssa-structalias.c (find_func_aliases):  Use get_id_for_tree,
9         remove assert.
10
11 2006-02-23  Jakub Jelinek  <jakub@redhat.com>
12
13         PR middle-end/26412
14         * gimplify.c (omp_add_variable): Guard variable size decl test with
15         DECL_SIZE (decl) check.
16
17 2006-02-23  Richard Guenther  <rguenther@suse.de>
18
19         PR middle-end/26439
20         * tree-ssa-structalias.c (find_func_aliases): Handle complex types
21         like aggregate types.
22
23 2006-02-23  Jakub Jelinek  <jakub@redhat.com>
24
25         * configure.ac: Add --with{,out}-long-double-128 configure option.
26         (TARGET_DEFAULT_LONG_DOUBLE_128): New test.
27         * configure: Rebuilt.
28         * config.in: Rebuilt.
29         * doc/install.texi (Options specification): Document
30         --with-long-double-128.
31
32         * config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128]
33         (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
34         * config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128]
35         (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
36
37 2006-02-23  Aldy Hernandez  <aldyh@redhat.com>
38
39         * config/s390/s390.c (override_options): Handle
40         TARGET_DEFAULT_LONG_DOUBLE_128.
41
42         * config/alpha/alpha.c (override_options): Handle
43         TARGET_DEFAULT_LONG_DOUBLE_128.
44
45         * config/sparc/sparc.c (sparc_override_options): Handle
46         TARGET_DEFAULT_LONG_DOUBLE_128.
47
48 2006-02-22  Daniel Jacobowitz  <dan@codesourcery.com>
49
50         * Makefile.in (stmp-fixinc): Use real-$(INSTALL_HEADERS_DIR).
51         (real-install-headers-tar, real-install-headers-cpio)
52         (real-install-headers-cp): New targets.
53
54 2006-02-22  Richard Sandiford  <richard@codesourcery.com>
55
56         * tree.h (variable_section): Delete.
57         * varasm.c (variable_section): Delete.
58
59 2006-02-22  Paolo Bonzini  <bonzini@gnu.org>
60
61         * install.texi: Add notes on install.texi2html.
62         (Building in parallel): Do not use footnotes.
63
64 2006-02-21  Aldy Hernandez  <aldyh@redhat.com>
65
66         PR libgomp/26234
67         * doc/install.texi (Configuration): Document --disable-libgomp.
68
69 2006-02-21  Geoffrey Keating  <geoffk@apple.com>
70
71         * config/i386/darwin.h (DWARF2_FRAME_REG_OUT): New.
72
73 2006-02-21  Alexandre Oliva  <aoliva@redhat.com>
74
75         * config/i386/sse.md (vec_extractv2df_1_sse): New.
76         (vec_extractv2df_0_sse): New.
77
78 2006-02-21  Alexandre Oliva  <aoliva@redhat.com>
79
80         * defaults.h (CFA_FRAME_BASE_OFFSET): Define.
81         * config/ia64/ia64.h (CFA_FRAME_BASE_OFFSET): Override.
82         * doc/tm.texi (CFA_FRAME_BASE_OFFSET): Document.
83         * dwarf2out.c (build_cfa_loc): New offset parameter.  Add it
84         to the result of the expression.
85         (def_cfa_1): Adjust.
86         (frame_pointer_cfa_offset): Rename to...
87         (frame_pointer_fb_offset): ... this.  Adjust all uses.
88         (convert_cfa_to_loc_list): Rename to...
89         (convert_cfa_to_fb_loc_list): ... this.  New offset parameter.
90         Pass it on to build_cfa_loc.
91         (compute_frame_pointer_to_cfa_displacement): Rename to...
92         (compute_frame_pointer_to_fb_displacement): ... this.  New
93         offset parameter.  Use it in computation.
94         (gen_subprogram_die): Compute cfa_fb_offset with the new
95         macro, and use it to compute the fb loc list and the
96         displacement.
97
98 2006-02-21  Bernd Schmidt  <bernd.schmidt@analog.com>
99
100         * config/bfin/predicates.md (cc_operand): Delete predicate.  All uses
101         replaced with register_operand.
102         * config/bfin/bfin.c (bfin_register_move_cost): Moving CC to any
103         non-DREG is expensive.
104         * config/bfin/bfin.h (FIXED_REGISTERS): CC isn't fixed.
105         * config/bfin/bfin.md (movbi): Fix constraints and template for moves
106         involving memory.
107
108 2006-02-21  Joseph S. Myers  <joseph@codesourcery.com>
109
110         * doc/install.texi2html: Use set -e.
111
112 2006-02-21  Richard Sandiford  <richard@codesourcery.com>
113
114         * doc/tm.texi (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_BSS)
115         (ASM_OUTPUT_SHARED_LOCAL): Delete.
116         * doc/invoke.texi (-fshared-data): Delete.
117         * common.opt (fshared-data): Delete.
118         * varasm.c (asm_emit_uninitialised): Remove flag_shared_data handling.
119         (assemble_static_space): Remove #if 0 code.
120         * system.h (ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_BSS)
121         (ASM_OUTPUT_SHARED_LOCAL): Poison.
122         * config/cris/cris.h: Remove FIXME.
123
124 2006-02-21  Paolo Bonzini  <bonzini@gnu.org>
125
126         * doc/sourcebuild.texi (Front End Directory): No more double-colon
127         hooks.
128
129 2006-02-21  Jakub Jelinek  <jakub@redhat.com>
130
131         PR middle-end/26379
132         * combine.c (simplify_shift_const_1): Disable nested shifts
133         optimization for vector shifts.
134
135 2006-02-20  Roger Sayle  <roger@eyesopen.com>
136
137         PR tree-optimization/26361
138         * tree-vrp.c (extract_range_from_unary_expr): Handle NEGATE_EXPR
139         of unsigned integer types.
140
141 2006-02-20  Sebastian Pop  <pop@cri.ensmp.fr>
142
143         * tree-chrec.c (eq_evolutions_p): New.
144         * tree-chrec.h (eq_evolutions_p): Declared.
145         * tree-data-ref.c: Fix formatting.
146         (datadep_stats, dependence_stats): New.
147         (gcd): Moved...
148         (print_direction_vector): New.
149         (dump_data_dependence_relation): Use print_direction_vector.
150         (object_analysis, create_data_ref): Handle COMPONENT_REF.
151         (compute_subscript_distance): Static.
152         (initialize_data_dependence_relation): Static.  Get the number
153         of loops surrounding the references from the callers, and initialize
154         DDR_SIZE_VECT to nb_loops.  Use both base_addr_differ_p and
155         base_object_differ_p analyzers.
156         (analyze_ziv_subscript, analyze_siv_subscript_cst_affine, 
157         compute_overlap_steps_for_affine_1_2,
158         analyze_subscript_affine_affine): Count the classified dependences.
159         Print a message when a test failed.
160         (can_use_analyze_subscript_affine_affine): New. 
161         (analyze_siv_subscript): Compute the data dependences on symbolic
162         scevs that verify can_use_analyze_subscript_affine_affine.
163         (chrec_steps_divide_constant_p): Returns true, false, or unknown.
164         (analyze_miv_subscript): Update use of chrec_steps_divide_constant_p.
165         Handle symbolic scevs.
166         (analyze_overlapping_iterations): Let symbolic affine scevs to be
167         analyzed.
168         (subscript_dependence_tester): Moved...
169         (build_classic_dist_vector, build_classic_dir_vector): Don't use 
170         lambda_vector_clear on newly allocated vectors.  Get nb_loops from
171         DDR_SIZE_VECT instead of getting it in parameter.
172         (subscript_dependence_tester): ... here.  Take as a parameter 
173         loop_nest_depth.  Call build_classic_dist_vector and
174         build_classic_dir_vector.
175         (compute_affine_dependence): Update subscript_dependence_tester 
176         parameters.  Update datadep_stats counters.  Call 
177         compute_subscript_distance.
178         (compute_self_dependence): Save the dist and dir vectors.  Call 
179         compute_subscript_distance.
180         (ddr_p, DEF_VEC_P(ddr_p), DEF_VEC_ALLOC_P(ddr_p,heap)): Moved...
181         (compute_all_dependences): Reorder parameters as they were before
182         conversion to VEC.  Pass nb_loops and loop_nest_depth.  Don't call
183         compute_subscript_distance.  Update the use of 
184         compute_affine_dependence and initialize_data_dependence_relation.
185         (find_data_references_in_loop): Handle COMPONENT_REF.
186         (compute_data_dependences_for_loop): Initialize dependence_stats.
187         Don't call build_classic_dist_vector and build_classic_dir_vector.
188         Update the parameters of initialize_data_dependence_relation and 
189         compute_all_dependences.  Print the statistics from datadep_stats.
190         (analyze_all_data_dependences): Static.  Not used until the pass for
191         checking the data dependences is contributed.
192         * tree-data-ref.h (ddr_p, DEF_VEC_P(ddr_p),
193         DEF_VEC_ALLOC_P(ddr_p,heap)): ... here.
194         (initialize_data_dependence_relation, compute_affine_dependence, 
195         analyze_all_data_dependences, compute_subscript_distance): Removed.
196         (print_direction_vector): New.
197         * lambda.h (gcd): ... here.
198         (lambda_vector_gcd): Moved here from gcd_vector.
199         * lambda-code.c (gcd, gcd_vector): Removed.
200         (lambda_compute_target_space): Use lambda_vector_gcd.  Fix formatting.
201         * Makefile.in (tree-vect-patterns.o): Depends on TREE_DATA_REF_H.
202
203 2006-02-20  Diego Novillo  <dnovillo@redhat.com>
204
205         * ipa-type-escape.c: Tidy some comments and white space.
206         * tree-ssa-operands.c: Likewise.
207
208 2006-02-20  Andrew Pinski  <pinskia@physics.uc.edu>
209
210         PR tree-opt/25879
211         * tree-pretty-print.c (debug_tree_chain): Walk the chains.
212         (dump_decl_name): Do not walk the decl tree chains.
213         * tree-pass.h (TDF_CHAIN): Remove.
214
215 2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
216
217         * Makefile.in (C): Remove
218         (PROTO): Remove
219         (.PHONY): Remove C and PROTO
220
221 2006-02-20  Roger Sayle  <roger@eyesopen.com>
222
223         PR middle-end/26236
224         * doc/c-tree.texi (INTEGER_TYPE): Remove reference to the now
225         deprecated CHAR_TYPE tree code.
226
227 2006-02-20  Paolo Bonzini  <bonzini@gnu.org>
228
229         * configure.ac (target_list): Add install-info, dvi, html.
230         * configure: Regenerate.
231
232         * ada/Make-lang.in, cp/Make-lang.in, fortran/Make-lang.in,
233         java/Make-lang.in, objc/Make-lang.in, objcp/Make-lang.in,
234         treelang/Make-lang.in: Do not use double-colon rules.
235
236 2006-02-20  Daniel Berlin  <dberlin@dberlin.org>
237
238         * tree.h (struct tree_memory_tag): Add is_used_alone member.
239         (TMT_USED_ALONE): New macro.
240         * tree-pass.h (PROP_tmt_usage): New property.
241         (TODO_update_tmt_usage): New todo.
242         * tree-ssa-alias.c (updating_used_alone): New variable.
243         (recalculate_used_alone): New function.   
244         (compute_may_aliases): Set updating_used_alone, call
245         recalculate_used_alone. 
246         * tree-sra.c (pass_sra): Note that this pass destroys
247         PROP_tmt_usage, and add TODO_update_tmt_usage.
248         * tree-ssa-forwprop.c (pass_forwprop): Ditto.
249         * tree-flow.h (updating_used_alone): Prototype.
250         (recalculate_used_alone): Ditto.
251         * passes.c (execute_todo): Add code to set updating_used_alone,
252         and call recalculate.
253         * tree-ssa-operands.c (add_virtual_operand): Only append bare def
254         for clobber if used alone, and add assert to verify used_alone
255         status.
256         
257 2006-02-20  Angel Nunez Mencias  <anunez@de.ibm.com>
258
259         * config/s390/s390.c (legitimize_pic_address): Assertions checking
260         for non tls symbols added.
261         (legitimize_address): Do nothing for PLUS expressions if one of the
262         addends is a tls symbol reference.
263
264 2006-02-20  Paolo Bonzini  <bonzini@gnu.org>
265
266         PR bootstrap/25476
267
268         * Makefile.in (LDFLAGS): Define from autoconf substitution.
269
270         * Makefile.in (BOOTSTRAPPING): New.
271         (quickstrap): New definition if BOOTSTRAPPING=yes.
272
273         * Makefile.in (CONFIG_LANGUAGES): Substitute all_selected_languages.
274         * configure.ac: Substitute all_selected_languages with the languages
275         that were configured.  For all the other variables except
276         lang_specs_files, include all the languages in the tree.
277         * configure: Regenerate.
278         
279         * Makefile.in (stmp-fixinc): Copy includes from the prev-gcc directory,
280         if there is one.  Run the commands to run fixincludes in the same
281         subshell.
282
283         * doc/makefile.texi: Document new makefile targets from toplevel bootstrap.
284         * doc/install.texi: Document exact conventions for searching target tools.
285         Document --with-build-time-tools.  Document toplevel bootstrap.  Document
286         something more about building an Ada cross-compiler.  Don't list GNU Make
287         requirements which affect all platforms.
288
289 2006-02-19  Roger Sayle  <roger@eyesopen.com>
290
291         PR middle-end/19543
292         * varasm.c (compare_constant) <INTEGER_CST>: Integer constants are
293         only equivalent if the have both the same mode and precision.
294
295 2006-02-20  Ben Elliston  <bje@au.ibm.com>
296
297         * doc/tree-ssa.texi (Interfaces): Describe low vs. high GIMPLE.
298
299 2006-02-19  Roger Sayle  <roger@eyesopen.com>
300             Steven Bosscher  <stevenb.gcc@gmail.com>
301
302         * gcse.c (want_to_gcse_p): On STACK_REGS targets, look through
303         constant pool references to identify stack mode constants.
304         * rtlanal.c (constant_pool_constant_p): New predicate to check
305         whether operand is a floating point constant in the pool.
306         * rtl.h (constant_pool_constant_p): Prototype here.
307         * loop.c (scan_loop): Avoid hoisting constants from the constant
308         pool on STACK_REGS targets.
309         (load_mems): Likewise.
310         * loop-invariant.c (get_inv_cost): Make hoisting constant pool
311         loads into x87 registers expensive in terms of register pressure.
312
313 2006-02-19  Roger Sayle  <roger@eyesopen.com>
314
315         * gthr-posix.h: On Tru64, map __gthr_foo as a weak reference to
316         __foo and not foo when _PTHREAD_USE_MANGLED_NAMES_ is defined.
317
318 2006-02-19  David Edelsohn  <edelsohn@gnu.org>
319
320         * config/rs6000/xcoff.h (TARGET_ASM_OUTPUT_ANCHOR): Define.
321         * config/rs6000/rs6000.c (rs6000_xcoff_asm_output_anchor): Define.
322
323 2006-02-19  Daniel Berlin  <dberlin@dberlin.org>
324
325         * doc/invoke.texi: Document -fipa-pta.
326         * common.opt: Add ipa-pta option.
327         * tree-ssa-structalias.c (DONT_PROPAGATE_WITH_ANYTHING): Removed.
328         (do_sd_constraint): Enable DONT_PROPAGATE_WITH_ANYTHING code.
329         (do_ds_constraint): Ditto.
330         (get_constraint_for): Only add to referenced_vars if
331         referenced_vars exists.
332         (insert_into_field_list): Rewrite to do this unsorted.
333         (insert_into_field_list_sorted): Rename old insert_into_field_list
334         to this.
335         (create_function_info_for): Use insert_into_field_list_sorted.
336         (create_variable_info_for): Rewrite so it uses unsorted version,
337         since the field list is sorted.
338         (intra_create_variable_infos): Only add to referenced_vars if
339         referenced_vars exists.
340         (ipa_pta_execute): Init heapvars, and delete when done.
341         * passes.c (init_optimization_passes): Add call to pass_ipa_pta.
342
343 2006-02-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
344
345         * doc/install.texi: Add missing `@samp'.
346
347 2006-02-18  Andrew Pinski <pinskia@physics.uc.edu>
348
349         * config/rs6000/darwin.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P):
350         Use the arguments.
351
352 2006-02-18  Mark Wielaard  <mark@klomp.org>
353
354         * doc/contrib.texi (Contributors): Add classpath/libgcj hackers
355         who added new 4.1 features, bug fixes and integration support.
356
357 2006-02-18  David Edelsohn  <edelsohn@gnu.org>
358
359         PR target/26350
360         * config/rs6000/rs6000.md (extenddftf2): Force 0.0 to validized
361         MEM for ABI_V4 pic.
362
363 2006-02-18  Richard Sandiford  <richard@codesourcery.com>
364
365         * cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE.
366         * emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx.
367         (copy_insn_1): Likewise.  Don't copy each field individually.
368         Reindent.
369         * read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead
370         of RTX_SIZE.
371         * reload1.c (eliminate_regs): Use shallow_copy_rtx.
372         * rtl.c (rtx_size): Rename variable to...
373         (rtx_code_size): ...this.
374         (rtx_size): New function.
375         (rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE.
376         (copy_rtx): Use shallow_copy_rtx.  Don't copy each field individually.
377         Reindent.
378         (shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE.
379         * rtl.h (rtx_code_size): New variable.
380         (rtx_size): Change from a variable to a function.
381         (RTX_SIZE): Rename to...
382         (RTX_CODE_SIZE): ...this.
383
384         PR target/9703
385         PR tree-optimization/17106
386         * doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document.
387         (Anchored Addresses): New section.
388         * doc/invoke.texi (-fsection-anchors): Document.
389         * doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise.
390         (SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise.
391         (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise.
392         * hooks.c (hook_bool_mode_rtx_false): New function.
393         * hooks.h (hook_bool_mode_rtx_false): Declare.
394         * gengtype.c (create_optional_field): New function.
395         (adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when
396         SYMBOL_REF_IN_BLOCK_P is true.
397         * target.h (output_anchor, use_blocks_for_constant_p): New hooks.
398         (min_anchor_offset, max_anchor_offset): Likewise.
399         (use_anchors_for_symbol_p): New hook.
400         * toplev.c (compile_file): Call output_object_blocks.
401         (target_supports_section_anchors_p): New function.
402         (process_options): Check that -fsection-anchors is only used on
403         targets that support it and when -funit-at-a-time is in effect.
404         * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL
405         if the decl doesn't have one.
406         * dwarf2out.c: Remove instantiations of VEC(rtx,gc).
407         * expr.c (emit_move_multi_word, emit_move_insn): Pass the result
408         of force_const_mem through use_anchored_address.
409         (expand_expr_constant): New function.
410         (expand_expr_addr_expr_1): Call it.  Use the same modifier when
411         calling expand_expr for INDIRECT_REF.
412         (expand_expr_real_1): Pass DECL_RTL through use_anchored_address
413         for all modifiers except EXPAND_INITIALIZER.  Use expand_expr_constant.
414         * expr.h (use_anchored_address): Declare.
415         * loop-unroll.c: Don't declare rtx vectors here.
416         * explow.c: Include output.h.
417         (validize_mem): Call use_anchored_address.
418         (use_anchored_address): New function.
419         * common.opt (-fsection-anchors): New switch.
420         * varasm.c (object_block_htab, anchor_labelno): New variables.
421         (hash_section, object_block_entry_eq, object_block_entry_hash)
422         (use_object_blocks_p, get_block_for_section, create_block_symbol)
423         (use_blocks_for_decl_p, change_symbol_section): New functions.
424         (get_variable_section): New function, split out from assemble_variable.
425         (make_decl_rtl): Create a block symbol if use_object_blocks_p and
426         use_blocks_for_decl_p say so.  Use change_symbol_section if the
427         symbol has already been created.
428         (assemble_variable_contents): New function, split out from...
429         (assemble_variable): ...here.  Don't output any code for
430         block symbols; just pass them to place_block_symbol.
431         Use get_variable_section and assemble_variable_contents.
432         (get_constant_alignment, get_constant_section, get_constant_size): New
433         functions, split from output_constant_def_contents.
434         (build_constant_desc): Create a block symbol if use_object_blocks_p
435         says so.  Or into SYMBOL_REF_FLAGS.
436         (assemble_constant_contents): New function, split from...
437         (output_constant_def_contents): ...here.  Don't output any code
438         for block symbols; just pass them to place_section_symbol.
439         Use get_constant_section and get_constant_alignment.
440         (force_const_mem): Create a block symbol if use_object_blocks_p and
441         use_blocks_for_constant_p say so.  Or into SYMBOL_REF_FLAGS.
442         (output_constant_pool_1): Add an explicit alignment argument.
443         Don't switch sections here.
444         (output_constant_pool): Adjust call to output_constant_pool_1.
445         Switch sections here instead.  Don't output anything for block symbols;
446         just pass them to place_block_symbol.
447         (init_varasm_once): Initialize object_block_htab.
448         (default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK.
449         (default_asm_output_anchor, default_use_aenchors_for_symbol_p)
450         (place_block_symbol, get_section_anchor, output_object_block)
451         (output_object_block_htab, output_object_blocks): New functions.
452         * target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro.
453         (TARGET_ASM_OUT): Include it.
454         (TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro.
455         (TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros.
456         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro.
457         (TARGET_INITIALIZER): Include them.
458         * rtl.c (rtl_check_failed_block_symbol): New function.
459         * rtl.h: Include vec.h.  Declare heap and gc rtx vectors.
460         (block_symbol, object_block): New structures.
461         (rtx_def): Add a block_symbol field to the union.
462         (BLOCK_SYMBOL_CHECK): New macro.
463         (rtl_check_failed_block_symbol): Declare.
464         (SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags.
465         (SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates.
466         (SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2.
467         (SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors.
468         * output.h (output_section_symbols): Declare.
469         (object_block): Name structure.
470         (place_section_symbol, get_section_anchor, default_asm_output_anchor)
471         (default_use_anchors_for_symbol_p): Declare.
472         * Makefile.in (RTL_BASE_H): Add vec.h.
473         (explow.o): Depend on output.h.
474         * config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default.
475         (TARGET_MAX_ANCHOR_OFFSET): Likewise.
476         (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
477         (rs6000_use_blocks_for_constant_p): New function.
478
479 2006-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
480
481         * doc/install.texi (hppa*-hp-hpux*): Update for 4.1.0.
482
483 2006-02-18  Andrew Pinski  <pinskia@physics.uc.edu>
484
485         PR tree-opt/25680
486         * tree-ssa-ccp.c (ccp_fold): Handle store CCP of REALPART_EXPR and
487         IMAGPART_EXPR.
488
489 2006-02-18  Diego Novillo  <dnovillo@redhat.com>
490
491         * tree-flow.h (struct var_ann_d): Rename field is_alias_tag to
492         is_aliased.
493         Update all users.
494
495 2006-02-18  Jakub Jelinek  <jakub@redhat.com>
496
497         PR middle-end/26334
498         * stmt.c (decl_overlaps_hard_reg_set_p): Use DECL_HARD_REGISTER
499         instead of DECL_REGISTER.
500
501 2006-02-18  Olivier Hainque  <hainque@adacore.com>
502
503         PR ada/13408
504         * pa.h (WIDEST_HARDWARE_FP_SIZE): Define.
505
506 2006-02-18  Joseph S. Myers  <joseph@codesourcery.com>
507
508         PR target/24837
509         * config.gcc: Define UCLIBC_DEFAULT to 0 or 1.
510         * opth-gen.awk: Handle Var and InverseMask together.
511         * config/linux.opt (muclibc, mglibc): Use Var(linux_uclibc).
512         * config/linux.h: Use #if not #ifdef for testing UCLIBC_DEFAULT.
513         (TARGET_C99_FUNCTIONS): Test OPTION_GLIBC not TARGET_GLIBC.
514         (CHOOSE_DYNAMIC_LINKER): Give an error for -mglibc and -muclibc
515         used together.
516         (UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
517         LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
518         * config/alpha/linux-elf.h (GLIBC_DYNAMIC_LINKER,
519         UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
520         LINUX_DYNAMIC_LINKER): Define.
521         (ELF_DYNAMIC_LINKER): Define to LINUX_DYNAMIC_LINKER.
522         * config/alpha/linux.h (TARGET_C99_FUNCTIONS): Define to
523         TARGET_GLIBC.
524         * config/cris/linux.h (GLIBC_DYNAMIC_LINKER): Define.
525         (CRIS_LINK_SUBTARGET_SPEC): Pass a -dynamic-linker option.
526         * config/frv/linux.h (GLIBC_DYNAMIC_LINKER): Define.
527         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
528         (TARGET_C99_FUNCTIONS): Don't define.
529         * config/i386/linux.h (DYNAMIC_LINKER): Rename to
530         GLIBC_DYNAMIC_LINKER.
531         (SUBTARGET_EXTRA_SPECS): Use LINUX_DYNAMIC_LINKER.
532         * config/i386/linux64.h (GLIBC_DYNAMIC_LINKER32,
533         GLIBC_DYNAMIC_LINKER64): Define.
534         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
535         LINUX_DYNAMIC_LINKER64.
536         * config/ia64/linux.h (GLIBC_DYNAMIC_LINKER): Define.
537         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
538         * config/m32r/linux.h (GLIBC_DYNAMIC_LINKE): Define.
539         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
540         * config/m68k/linux.h (GLIBC_DYNAMIC_LINKER): Define.
541         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
542         * config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32,
543         GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32,
544         UCLIBC_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKERN32): Define.
545         (LINK_SPEC): Use LINUX_DYNAMIC_LINKERN32, LINUX_DYNAMIC_LINKER64
546         and LINUX_DYNAMIC_LINKER32.
547         * config/mn10300/linux.h (GLIBC_DYNAMIC_LINKER): Define.
548         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
549         * config/pa/pa-linux.h (GLIBC_DYNAMIC_LINKER): Define.
550         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
551         * config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define to
552         TARGET_GLIBC.
553         * config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Likewise.
554         (GLIBC_DYNAMIC_LINKER32, GLIBC_DYNAMIC_LINKER64,
555         UCLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER64,
556         CHOOSE_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
557         LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
558         (LINK_OS_LINUX_SPEC32): Use LINUX_DYNAMIC_LINKER32.
559         (LINK_OS_LINUX_SPEC64): Use LINUX_DYNAMIC_LINKER64.
560         * config/rs6000/sysv4.h (GLIBC_DYNAMIC_LINKER,
561         UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
562         LINUX_DYNAMIC_LINKER): Define.
563         (LINK_OS_LINUX_SPEC): Use LINUX_DYNAMIC_LINKE.
564         * config/s390/linux.h (GLIBC_DYNAMIC_LINKER32,
565         GLIBC_DYNAMIC_LINKER64): Define.
566         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER32 and
567         LINUX_DYNAMIC_LINKER64.
568         * config/sh/linux.h (GLIBC_DYNAMIC_LINKER): Define.
569         (SUBTARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
570         * config/sparc/linux.h (GLIBC_DYNAMIC_LINKER,
571         UCLIBC_DYNAMIC_LINKER, CHOOSE_DYNAMIC_LINKER,
572         LINUX_DYNAMIC_LINKER): Define.
573         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
574         (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
575         * config/sparc/linux64.h (GLIBC_DYNAMIC_LINKER32,
576         GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER32,
577         UCLIBC_DYNAMIC_LINKER64, CHOOSE_DYNAMIC_LINKER,
578         LINUX_DYNAMIC_LINKER32, LINUX_DYNAMIC_LINKER64): Define.
579         (LINK_ARCH32_SPEC): Use LINUX_DYNAMIC_LINKER32.
580         (LINK_ARCH64_SPEC, LINK_SPEC): Use LINUX_DYNAMIC_LINKER64.
581         (TARGET_C99_FUNCTIONS): Define to TARGET_GLIBC.
582         * config/xtensa/linux.h (GLIBC_DYNAMIC_LINKER): Define.
583         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
584         * doc/invoke.texi (-muclibc): Remove caveat about supported
585         targets.
586
587 2006-02-17  Grigory Zagorodnev <grigory_zagorodnev@linux.intel.com>
588
589         * doc/cpp.texi (__TIMESTAMP__): Document.
590
591 2006-02-17  Roger Sayle  <roger@eyesopen.com>
592
593         PR middle-end/25600
594         * fold-const.c (fold_binary): Fold (X >> C) != 0 into X < 0 when
595         C is one less than the width of X (and related transformations).
596         * simplify_rtx.c (simplify_unary_operation_1): Transform 
597         (neg (lt x 0)) into either (ashiftrt X C) or (lshiftrt X C)
598         depending on STORE_FLAG_VALUE, were C is one less then the
599         width of X.
600
601 2006-02-17  Daniel Berlin  <dberlin@dberlin.org>
602
603         Fix PR tree-optimization/26341
604         * tree-ssa-operands.c (add_virtual_operand): Remove assert 
605         about NAME_MEMORY_TAG's.
606
607 2006-02-17  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
608
609         PR target/26255
610         * pa.md: Create separate HI and QI move patterns for 32-bit and 64-bit
611         with hardware float support, and software float support.  Add fcpy
612         alternative to hardware patterns.  Add alternatives to copy between
613         general and floating-point registers to the 32-bit pattern.
614         * pa.c (pa_secondary_reload): Don't abort if reload tries to find a
615         secondary reload to load a QI or HI mode constant into a floating
616         point register. 
617         * pa32-regs.h (VALID_FP_MODE_P): Allow QImode and HImode.
618         * pa64-regs.h (VALID_FP_MODE_P): Likewise.
619
620 2006-02-17  Andrew Pinski  <pinskia@physics.uc.edu>
621
622         PR target/26272
623         * config/rs6000/darwin.md (load_macho_picbase_si): Add
624         pc to the pattern.
625         (load_macho_picbase_di): Likewise.
626
627 2006-02-16  Jeff Law  <law@redhat.com>
628
629         * tree-vrp.c (set_value_range_to_nonnegative): New function.
630         (vrp_expr_computes_nonnegative, ssa_name_nonnegative_p): Likewise.
631         (ssa_name_nonzero_p): Likewise.
632         (get_value_range): Return NULL if VRP is not running.
633         (extract_range_from_expr): Fallback to tree_expr_XXX_p if
634         VRP routines do not discover a range.
635         (vrp_finalize): Clear VR_VALUE to indicate VRP is not running.
636         * tree.h (ssa_name_nonzero_p, ssa_name_nonnegative_p): Prototype.
637         * fold-const.c (tree_expr_nonzero_p): For SSA_NAMEs, query VRP.
638         (tree_expr_nonnegative_p): Similarly.
639         * tree-ssa-dom.c (nonzero_vars, nonzero_vars_stack): Remove.
640         (restore_nonzero_vars_to_original_value): Remove.
641         (unsafe_associative_fp_binop): Remove.
642         (tree_ssa_dominator_optimize): Remove initialization and
643         finalization of nonzero_vars and nonzero_vars_stack.
644         (dom_opt_initialize_block): No longer push marker on
645         nonzero_vars_stack.
646         (dom_opt_finalize_block): No longer call
647         restore_nonzero_vars_to_original_value.
648         (record_equivalences_from_phis): No longer look for
649         nonzero PHI arguments.
650         (cprop_into_successor_phis): No longer propagate nonzero
651         property into PHI arguments.  Lose unused argument.  Caller
652         updated.
653         (record_equivalences_from_stmt): No longer record nonzero
654         values for SSA_NAMEs.
655         (lookup_avail_expr): No longer use nonzero_vars.
656
657         * stor-layout.c (set_sizetype): Set TYPE_MAX_VALUE properly
658         for sizetype when sizetype is unsigned.
659
660 2006-02-16  Denis Nagorny <denis_nagorny@linux.intel.com>
661
662         PR rtl-optimization/25603
663         * reload.c (reg_inc_found_and_valid_p): New. Check REG_INC note.
664         (regno_clobbered_p): Use it. Reusing SETS argument for REG_INC case.
665         * reload1.c (choose_reload_regs): Added call of regno_clobbered_p 
666         with new meaning of SETS.
667
668 2006-02-16  Joseph S. Myers  <joseph@codesourcery.com>
669
670         PR target/20353
671         PR target/24578
672         PR target/24837
673         * config/linux.opt: New file.
674         * config/linux.h (CHOOSE_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,
675         LINUX_DYNAMIC_LINKER): Define.
676         (TARGET_C99_FUNCTIONS): Define depending on TARGET_GLIBC.
677         * config.gcc (*-*-linux*): Define extra_options.
678         (*-*-*uclibc*): Define UCLIBC_DEFAULT.
679         (arm*-*-linux-gnueabi): Change to arm*-*-linux-*eabi.
680         * config/arm/linux-eabi.h (LINUX_TARGET_INTERPRETER): Change to
681         GLIBC_DYNAMIC_LINKER.
682         * config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): Likewise.
683         (LINUX_TARGET_LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
684         * config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Define.
685         (LINK_SPEC): Use LINUX_DYNAMIC_LINKER.
686         * doc/invoke.texi (GNU/Linux Options): New section.
687
688 2006-02-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
689
690         * config/sparc/sparc.md (setjmp): Rewrite.
691         (setjmp_32): Delete.
692         (setjmp_64): Likewise.
693
694 2006-02-16  Daniel Berlin <dberlin@dberlin.org>
695
696         * tree-ssa-operands.c (access_can_touch_variable): Fix typo in
697          previous change.
698
699 2006-02-16  Zdenek Dvorak <dvorakz@suse.cz>
700
701         * loop-invariant.c (invariant_for_use, check_dependencies): Fail for
702         read-write uses.
703
704 2006-02-16  Zdenek Dvorak <dvorakz@suse.cz>
705
706         PR rtl-optimization/26296
707         * Makefile.in (loop-invariant.c): Add except.h dependency.
708         * loop-invariant.c: Include except.h.
709         (find_invariant_insn): Ignore insns satisfying can_throw_internal.
710
711 2005-02-16  Paul Brook  <paul@codesourcery.com>
712
713         * reload1.c (emit_reload_insns): Invalidate dead input registers used
714         for reloads.
715
716 2006-02-16  Bernd Schmidt  <bernd.schmidt@analog.com>
717
718         PR rtl-optimization/25636
719         * local-alloc.c (update_equiv_regs): Lose a bogus rtx_equal_p test
720         when deciding whether an insn is an initializing insn.
721
722 2006-02-15 Daniel Berlin  <dberlin@dberlin.org>
723
724         * tree.c (init_ttree): Add STRUCT_FIELD_TAG handling.
725         (tree_code_size): Ditto.
726         * tree.h (struct tree_memory_tag): Remove parent_var.
727         (struct tree_struct_field_tag): New.
728         (SFT_OFFSET): New.
729         (SFT_SIZE): New.
730         (union tree_node): Add sft member.
731         * tree-ssa-alias.c (get_tmt_for): Don't handle TYPE_READONLY
732         specially here.
733         (create_sft): Add size and offset argument, set SFT_OFFSET and
734         SFT_SIZE.
735         (create_overlap_variables_for): Update for SFT_OFFSET/SFT_SIZE.
736         * treestruct.def: Add TS_STRUCT_FIELD_TAG.
737         * tree-flow-inline.h (get_subvar_at): Update for
738         SFT_OFFSET/SFT_SIZE.
739         (var_can_have_subvars): Ditto.
740         (overlap_subvar): Ditto.
741         * print-tree.c (print_node): Print out interesting things for
742         SFT's.
743         * tree-flow.h (struct subvar): Remove offset and size members.
744         * tree-ssa-operands.c (get_expr_operands): Update for
745         get_indirect_ref_operands changes.
746         (get_indirect_ref_operands): Call add_virtual_operand instead of
747         add_stmt_operand.  Only recurse on base var if requested.
748         (access_can_touch_variable): New function.
749         (add_stmt_operand): Split virtual operand handling into ...
750         (add_virtual_operand): Here.  Add offset, size, and for_clobber
751         arguments.  Prune alias sets.
752         (add_call_clobber_ops): Call add_virtual_operand.
753         
754 2006-02-15  Jakub Jelinek  <jakub@redhat.com>
755
756         PR middle-end/26300
757         * combine.c (make_extraction): Bail out if ORIG_POS is negative.
758
759         * tree.h (struct tree_omp_clause): Use OMP_CLAUSE_CODE rather
760         than TREE_CODE as index into omp_clause_num_ops array.
761
762 2006-02-15  Uttam Pawar  <uttamp@us.ibm.com>
763
764         PR rtl-optimization/26184
765         * modulo-sched.c (generate_reg_moves): Free bitmap vector
766         uses_of_defs.
767         * modulo-sched.c (sms_schedule): Free g_arr pointer.
768         * modulo-sched.c (sms_schedule_by_order): Free bitmap pointers
769         must_precede, must_follow and tobe_scheduled.
770
771         PR other/26147
772         * opts.c (common_handle_option): Free new_option pointer.
773         * df-core.c (df_analyze): Free postorder pointer.
774
775 2006-02-15  Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
776
777         * Makefile.in: Fix the examples about the use of stamps
778
779 2006-02-15  Michael Matz  <matz@suse.de>
780
781         PR middle-end/22275
782
783         * stor-layout.c (layout_decl): Zero-width bitfields aren't
784         influenced by maximum_field_alignment or DECL_PACKED.
785         (update_alignment_for_field): Ditto.
786         (place_field): Ditto.
787         * doc/extend.texi (<#pragma pack>, <Type Attributes>): Document
788         this behaviour.
789
790 2006-02-15  Paolo Bonzini  <bonzini@gnu.org>
791
792         * cfg.c (dump_flow_info): Get dump flags as an additional parameter.
793         (debug_flow_info): Pass it.
794         * alias.c (rest_of_handle_cfg): Adjust calls to dump_flow_info.
795         * bb-reorder.c (reorder_basic_blocks): Likewise.
796         * cfgcleanup.c (rest_of_handle_jump2): Likewise.
797         * cse.c (rest_of_handle_cse, rest_of_handle_cse2): Likewise.
798         * flow.c (life_analysis, recompute_reg_usage): Likewise.
799         * gcse.c (gcse_main, bypass_jumps): Likewise.
800         * ifcvt.c (rest_of_handle_if_conversion): Likewise.
801         * local-alloc.c (rest_of_handle_local_alloc): Likewise.
802         * loop-init.c (rtl_loop_init, rtl_loop_done): Likewise.
803         * profile.c (compute_branch_probabilities, branch_prob): Likewise.
804         * rtl.h (dump_flow_info): Adjust prototype.
805         * tracer.c (rest_of_handle_tracer, tracer): Likewise.
806         * var-tracking.c (variable_tracking_main): Likewise.
807         * passes.c (execute_todo): Obey TDF_BLOCKS for RTL.
808         * tree-dump.c (enable_rtl_dump_file): Enable the details and blocks
809         options.
810
811 2006-02-15  Marcin Dalecki <martin@dalecki.de>
812
813         * tree-ssa-dom.c (dom_thread_across_edge): fix tag expression
814         construction.
815
816 2006-02-14  Zdenek Dvorak <dvorakz@suse.cz>
817
818         PR tree-optimization/26209
819         * tree-ssa-loop.c (pass_scev_cprop): Add TODO_cleanup_cfg.
820         * tree-cfgcleanup.c (cleanup_control_flow): Remove dead
821         eh edges.
822         * tree-cfg.c (replace_uses_by): Do not alter cfg.
823
824 2006-02-14  Roger Sayle  <roger@eyesopen.com>
825
826         PR middle-end/23670
827         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Optimize (X&Y)|Y into
828         (X,Y) and the corresponding symmetry related transformations.
829         (fold_binary) <BIT_AND_EXPR>: Likewise, optimize (X|Y)&Y into
830         (X,Y) and its symmetry related transformations.
831
832 2006-02-14  Roger Sayle  <roger@eyesopen.com>
833
834         * dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU
835         and GEU.
836
837 2006-02-14  Adam Nemet  <anemet@caviumnetworks.com>
838
839         * simplify-rtx.c (simplify_subreg): Combine SUBREG and TRUNCATE.
840
841 2006-02-14  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
842
843         PR bootstrap/26053
844         * configure.ac (HAVE_COMDAT_GROUP): Don't assume non-GNU linkers
845         support COMDAT group.
846         * configure: Regenerate.
847
848 2006-02-14  Roger Sayle  <roger@eyesopen.com>
849
850         PR middle-end/26279
851         PR middle-end/26280
852         PR middle-end/26283
853         * dojump.c (do_compare_rtx_and_jump): Handle multi-word LE.
854
855 2006-02-14  Daniel Berlin  <dberlin@dberlin.org>
856
857         Fix PR tree-optimization/26260
858
859         * doc/invoke.texi (max-fields-for-field-sensitive): Document
860         param.
861         * params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New.
862         * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto.
863         * tree-ssa-structalias.c (create_variable_info_for): Use
864         MAX_FIELDS_FOR_FIELD_SENSITIVE.
865         
866 2006-02-14  Zdenek Dvorak <dvorakz@suse.cz>
867
868         * doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
869         Document.
870         * tree-ssa-loop-niter.c (number_of_iterations_ne,
871         number_of_iterations_lt, number_of_iterations_cond): Remember the shape
872         of the ending condition.
873         * tree-ssa-loop-manip.c: Include params.h.
874         (build_if_stmt, can_unroll_loop_p, determine_exit_conditions,
875         tree_unroll_loop): New functions.
876         * tree-pass.h (pass_loop_prefetch): Declare.
877         * loop.c (rest_of_handle_loop_optimize): Test for
878         -fprefetch-loop-arrays-rtl.
879         * tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h.
880         * timevar.def (TV_TREE_PREFETCH): New timevar.
881         * tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch,
882         pass_loop_prefetch): New.
883         * tree-cfgcleanup.c: Include tree-scalar-evolution.h.
884         (cleanup_tree_cfg_loop): Call scev_reset.
885         * common.opt (fprefetch-loop-arrays-rtl): Add.
886         * tree-ssa-loop-prefetch.c: New file.
887         * tree-outof-ssa.c (struct value_expr_d): Add expr_vars field.
888         (new_temp_expr_table): Initialize expr_vars.
889         (free_temp_expr_table): Cleanup expr_vars.
890         (check_replaceable, find_replaceable_in_bb): Prevent accumulating
891         expressions from being merged into one.
892         * tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h.
893         (struct tree_niter_desc): Add control, bound and cmp fields.
894         (tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop):
895         Declare.
896         * Makefile.in (tree-ssa-loop-prefetch.o): Add.
897         (tree-cfgcleanup.o): Add SCEV_H dependency.
898         (tree-ssa-loop-manip.o): Add PARAMS_H dependency.
899         * passes.c (init_optimization_passes): Add pass_loop_prefetch.
900
901 2006-02-14  Richard Guenther  <rguenther@suse.de>
902
903         PR tree-optimization/26258
904         * tree-ssa-structalias.c (find_func_aliases): Handle aggregates
905         in PHI argument processing.
906
907 2006-02-13  Adam Nemet  <anemet@caviumnetworks.com>
908
909         * simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>: Return
910         new expression in the requested machine mode.
911
912 2006-02-13  Roger Sayle  <roger@eyesopen.com>
913
914         * optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx
915         directly, instead let do_compare_rtx_and_jump handle this for us.
916         * expr.c (expand_expr_real_1): Likewise.
917         * dojump.c (do_jump_by_parts_greater_rtx): Make static.  Move
918         before do_jump_by_parts_greater.
919         (do_jump_by_parts_greater): Move after do_jump_by_parts_greater_rtx.
920         * expr.h (do_jump_by_parts_greater_rtx): Delete prototype.
921
922 2006-02-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
923
924         * pa/quadlib.c: Use defines instead of enum qfcmp_magic.
925
926 2006-02-13  Zdenek Dvorak <dvorakz@suse.cz>
927
928         PR rtl-optimization/26235
929         * loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats.
930         (invariant_expr_equal_p): Handle 'i' and 'n' formats.  Fail on unknown
931         format.
932
933 2006-02-13  Jeff Law  <law@redhat.com>
934
935         * tree-vrp.c (extract_range_from_binary_expr): Remove handling of
936         TRUTH_XOR_EPR.
937
938 2006-02-13  Jakub Jelinek  <jakub@redhat.com>
939
940         PR middle-end/26092
941         * gimplify.c (gimplify_call_expr): Don't call get_callee_fndecl
942         twice if decl is a builtin.  When trying again, call get_callee_fndecl
943         first to verify it is still a builtin.
944
945 2006-02-13  Geoffrey Keating  <geoffk@apple.com>
946
947         * dwarf2out.c (base_type_die): Don't add AT_name here.
948         (subrange_type_die): Don't add AT_name here.
949         (modified_type_die): Rearrange code flow.  Do add AT_name here.
950
951 2006-02-13  Zdenek Dvorak <dvorakz@suse.cz>
952
953         PR rtl-optimization/26247
954         PR rtl-optimization/26248
955         * loop-invariant.c (may_assign_reg_p): Do not allow VOIDmode.
956
957 2006-02-13  Richard Sandiford  <richard@codesourcery.com>
958
959         * config/floatunditf.c: Use if __LDBL_MANT_DIG__ == 113.
960         * config/fixtfdi.c: Likewise.
961         * config/fixunstfdi.c: Likewise.
962         * config/floatditf.c: Likewise.
963
964 2006-02-13  Roger Sayle  <roger@eyesopen.com>
965
966         PR middle-end/24427
967         * fold-const.c (fold_binary) <BIT_IOR_EXPR>: Transform (X&C1)|C2
968         into (X,C2) if C1 is a subset of the bits of C2.  Transform
969         (X&C1)|C2 into X|C2 if C1|C2 == ~0.  Canonicalize (X&C1)|C2 as
970         (X&(C1&~C2))|C2.
971         <BIT_AND_EXPR>: Canonicalize (X|C1)&C2 as (X&C2)|(C1&C2).
972
973 2006-02-13  Josh Conner  <jconner@apple.com>
974
975         PR target/25376
976         * varasm.c (function_section): Check for section name before
977         calling select_section on targets that define
978         USE_SELECT_SECTION_FOR_FUNCTIONS.  On other targets, use
979         unlikely_text_section instead of hot_function_section if
980         first_function_block_is_cold.
981
982 2006-02-13  J"orn Rennecke <joern.rennecke@st.com>
983
984         PR middle-end/25335
985         * reload1.c (gen_reload): Also use find_replacement in UNARY_P case.
986
987 2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>
988
989         PR rtl-optimization/26222
990         * function.c (assign_stack_temp_for_type): Do not reuse stack slots
991         after tree->rtl expansion.
992         * loop-invariant.c (move_invariant_reg): Use force_operand on rhs
993         before passing it to emit_move_insn.
994
995 2006-02-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>
996
997         * doc/invoke.texi (-Write-strings): Document that it is enabled by
998         default. 
999         * c.opt (-Wwrite-strings): Declare variable warn_write_strings.
1000         Clarify documentation.
1001         * c-common.h (warn_write_strings): Remove.
1002         * c-common.c (warn_write_strings): Likewise.
1003         * c-opts.c (c_common_init_options): Enable -Wwrite-strings by
1004         default for C++.
1005
1006 2006-02-12  Roger Sayle  <roger@eyesopen.com>
1007
1008         PR middle-end/25724
1009         * dojump.c (do_jump): Call do_compare_rtx_and_jump.
1010         (do_jump_parts_zero_rtx): New function renamed from
1011         do_jump_parts_equality_rtx.  Made static.  Add a mode argument.
1012         (do_jump_parts_equality_rtx): New function split out from
1013         do_jump_parts_equality.  Old implementation renamed as above.
1014         Call do_jump_parts_zero_rtx if either operand is zero.
1015         (do_jump_parts_equality): Call do_jump_parts_equality_rtx to
1016         do all of the heavy lifting.
1017         (do_compare_rtx_and_jump): Handle multi-word comparisons by
1018         calling either do_jump_by_parts_greater_rtx or
1019         do_jump_by_parts_equality_rtx.
1020         * expr.h (do_jump_by_parts_equality_rtx): Remove prototype.
1021         * expmed.c (do_cmp_and_jump): Now multi-word optimization has
1022         moved to do_compare_rtx_and_jump, call it directly.
1023         * stmt.c (do_jump_if_equal): Remove static prototype.  Add a
1024         mode argument.  Call do_compare_rtx_and_jump.
1025         (emit_case_nodes): Update calls to do_jump_if_equal.
1026
1027 2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>
1028
1029         PR rtl-optimization/26225
1030         * loop-invariant.c (may_assign_reg_p): Do not allow BLKmode operands.
1031
1032 2006-02-12  Zdenek Dvorak <dvorakz@suse.cz>
1033
1034         PR rtl-optimization/26232
1035         * loop-invariant.c (find_invariant_insn): Ignore insns that set CC0.
1036
1037 2006-02-11  Jason Merrill  <jason@redhat.com>
1038
1039         PR tree-opt/24365
1040         * tree-inline.c (declare_return_variable): Just don't use the
1041         modify target if it's a gimple complex reg and the return slot
1042         isn't.
1043
1044 2006-02-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1045
1046         * doc/contrib.texi: Update my entry.
1047
1048 2006-02-10  Geoffrey Keating  <geoffk@apple.com>
1049
1050         * config/i386/darwin.h (DBX_REGISTER_NUMBER): Define.
1051
1052 2006-02-10  Diego Novillo  <dnovillo@redhat.com>
1053
1054         * tree-inline.c (estimate_num_insns_1): Make OpenMP directives
1055         expensive.
1056
1057 2006-02-10  Zdenek Dvorak <dvorakz@suse.cz>
1058
1059         * doc/invoke.texi (-floop-optimize2): Removed.
1060         * toplev.c (process_options): Remove handling of flag_loop_optimize2.
1061         * loop-init.c (gate_handle_loop2): Do not test flag_loop_optimize2.
1062         Test flag_branch_on_count_reg only if HAVE_doloop_end.
1063         * common.opt (floop-optimize2): Removed.
1064         (fmove-loop-invariants): Enabled by default.
1065
1066 2006-02-10  Sebastian Pop  <pop@cri.ensmp.fr>
1067
1068         * tree-if-conv.c (combine_blocks): Free the result of
1069         get_loop_exit_edges.
1070
1071 2006-02-10  Jeff Law  <law@redhat.com>
1072
1073         * fold-const.c (tree_expr_nonzero_p): Fix thinko.
1074
1075         PR tree-optimization/26213
1076         * tree-ssa-threadedge.c (simplify_control_stmt_condition): Do not
1077         loop trying to follow SSA_NAME_VALUE chains.
1078
1079 2006-02-10  Richard Guenther  <rguenther@suse.de>
1080
1081         * tree-dfa.c (get_ref_base_and_extent): When computing maxsize
1082         deal with structures that end in implicitly variable sized arrays.
1083
1084 2006-02-09  Zdenek Dvorak <dvorakz@suse.cz>
1085
1086         PR rtl-optimization/24762
1087         * df-scan.c (df_bb_refs_record): Record correct registers defined on
1088         eh edges.
1089
1090 2006-02-09  Zdenek Dvorak <dvorakz@suse.cz>
1091
1092         * tree-ssa-loop-ivopts.c (struct loop_data, loop_data): Removed.
1093         (struct ivopts_data): Add regs_used field.
1094         (tree_ssa_iv_optimize_init): Do not allocate aux fields for loops.
1095         (ivopts_global_cost_for_size, determine_set_costs): Use data->regs_used
1096         instead of loop_data->regs_used;
1097         (free_loop_data): Do not free aux fields for loops.
1098         (tree_ssa_iv_optimize): Do not pass loops to tree_ssa_iv_optimize_init
1099         and tree_ssa_iv_optimize_finalize.
1100
1101 2006-02-09  Kaz Kojima  <kkojima@gcc.gnu.org>
1102
1103         * config/sh/sh.h (FUNCTION_VALUE): Don't handle CHAR_TYPE.
1104
1105 2006-02-09  J"orn Rennecke <joern.rennecke@st.com>
1106
1107         PR target/26141
1108         * sh.c (sh_gimplify_va_arg_expr): Don't change the result type when
1109         computing the effective result type.
1110
1111 2006-02-09  J"orn Rennecke <joern.rennecke@st.com>
1112
1113         PR inline-asm/16194
1114         * tree.h (decl_overlaps_hard_reg_set_p) Don't declare.
1115         (tree_overlaps_hard_reg_set): Declare.
1116         * stmt.c (decl_overlaps_hard_reg_set_p): Now static.  Change return
1117         type and signature to match function type expected by walk_tree.
1118         (tree_overlaps_hard_reg_set): New function.
1119         (decl_conflicts_with_clobbers_p): Rename to:
1120         (tree_conflicts_with_clobbers_p).  Take HARD_REG_SET * argument.
1121         Use tree_overlaps_hard_reg_set.  Changed caller.
1122         * doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Replace
1123         decl_overlaps_hard_reg_set_p with tree_overlaps_hard_reg_set.
1124         * cris.c (cris_md_asm_clobbers): Likewise.
1125
1126 2006-02-09  Bernd Schmidt  <bernd.schmidt@analog.com>
1127
1128         * reload1.c (emit_input_reload_insns): Delete code that tries to
1129         inherit using find_equiv_reg.
1130
1131 2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1132
1133         * c-common.h (flag_const_strings): Don't declare.
1134         * c-common.c (flag_const_strings): Remove.
1135         * c.opt (fconst_strings): Remove.
1136         * c-opts.c (c_common_handle_option): Remove <OPT_fconst_strings>.
1137         <OPT_Wwrite_strings>: Don't set flag_const_strings.
1138         (c_common_init_options): Don't set flag_const_strings.
1139         * doc/invoke.texi (-fno-const-strings): Remove documentation.
1140
1141 2006-02-09  Richard Earnshaw  <richard.earnshaw@arm.com>
1142
1143         * arm.md (tlobits_cbranch): New pattern.
1144         * arm.h (arm_select_cc_mode): For thumb, only return CC_Nmode if
1145         testing a single bit.
1146
1147 2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>
1148
1149         PR tree-opt/26179
1150         * tree-ssa-pre.c (create_component_ref_by_pieces):
1151         Handle RETURN_DECL like VAR_DECL.
1152
1153 2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>
1154
1155         PR middle-end/26134
1156         * fold-const.c (fold_indirect_ref_1): Fold 
1157         "*(foo *)&complexfoo" to "__real__ complexfoo"
1158         and "((foo*)&complexfoo)[1]" to "__imag__ complexfoo".
1159
1160 2006-02-09  Andrew Pinski  <pinskia@physics.uc.edu>
1161
1162         * tree-flow-inline.h (var_can_have_subvars): 
1163         Volatile variables should not have subvariables.
1164
1165 2006-02-09  Diego Novillo  <dnovillo@redhat.com>
1166
1167         PR 26180
1168         * tree-vrp.c (vrp_int_const_binop): Detect overflow when
1169         multiplying unsigned values.
1170         Tidy comments.
1171
1172 2006-02-09  Eric Botcazou  <ebotcazou@libertysurf.fr>
1173
1174         * config/sparc/sparc.c (tls_call_delay): Fix oversight.
1175
1176 2006-02-08  Jason Merrill  <jason@redhat.com>
1177
1178         PR c++/25979
1179         * tree.def: Elaborate on difference from MODIFY_EXPR.
1180         * doc/c-tree.texi (INIT_EXPR): Likewise.
1181         * gimplify.c (internal_get_tmp_var): Use INIT_EXPR.
1182         (gimplify_decl_expr, gimplify_init_ctor_eval): Likewise.
1183         (gimplify_target_expr): Likewise.
1184         (gimplify_cond_expr): Remove target handling.
1185         (gimplify_modify_expr): Don't clobber INIT_EXPR code here.
1186         (gimplify_expr): Clobber it here.
1187         (gimplify_modify_expr_rhs): Push assignment into COND_EXPR here.
1188         Do return slot optimization if we have an INIT_EXPR.
1189
1190         PR tree-opt/24365
1191         * tree-inline.c (declare_return_variable): Also clear 
1192         DECL_COMPLEX_GIMPLE_REG_P as needed in the modify_dest case.
1193
1194         PR c++/16405
1195         * gimplify.c (gimplify_modify_expr_rhs): Re-enable *& handling.
1196
1197         PR middle-end/22439
1198         * gimplify.c (gimplify_one_sizepos): Fix typo.
1199
1200 2006-02-08  Jeff Law  <law@redhat.com>
1201
1202         PR tree-optimization/21417
1203         * tree-ssa-threadedge.c (thread_across_edge): Reject threading
1204         across a backedge if the control statement at the end of the
1205         block is data dependent on other statements in the same block.
1206         (record_temporary_equivalences_from_stmts): Remove over-conservative
1207         test for threading across backedges.
1208
1209         * tree-ssa-dce.c (remove_dead_statement): When removing a dead
1210         control statement, handle all three special cases in the same
1211         manner as they all have the same desired solution.  No longer
1212         special case edge flag updating when the post dominator is
1213         the exit block.
1214
1215 2006-02-08  Roger Sayle  <roger@eyesopen.com>
1216
1217         * tree.def (CHAR_TYPE): Remove.
1218         * dbxout.c (dbxout_type): Delete dead handling of CHAR_TYPE.
1219         * dwarf2out.c (base_type_die, is_base_type): Likewise.
1220         (gen_type_die) <ARRAY_TYPE>: Remove handling of CHAR_TYPE arrays.
1221         (gen_string_type_die): Delete unreachable function.
1222
1223         * tree-pretty-print.c (dump_generic_node): Don't handle CHAR_TYPE.
1224         * tree.c (build_int_cst_wide, type_contains_placeholder_1,
1225         type_hash_eq, variably_modified_type_p, walk_type_fields): Likewise.
1226         * tree.h (NUMERICAL_TYPE_CHECK, INTEGRAL_TYPE_P): Likewise.
1227         * builtins.c (type_to_class): Likewise.
1228         * fold-const.c (fold_convert, build_range_check,
1229         merge_ranges): Likewise.
1230         * expr.c (count_type_elements): Likewise.
1231         * c-pretty-print.c (pp_c_type_specifier): Likewise.
1232         * stor-layout.c (layout_type): Likewise.
1233         * ipa-type-escape.c (type_to_consider): Likewise.
1234         * gimplify.c (omp_firstprivatize_type_sizes,
1235         gimplify_type_sizes): Likewise.
1236         * explow.c (promote_mode): Likewise.
1237         * tree-sra.c (is_sra_scalar_type): Likewise.
1238         * varasm.c (output_constant): Likewise.
1239         * tree-inline.c (remap_type_1): Likewise.
1240         * convert.c (convert_to_pointer, convert_to_real,
1241         convert_to_integer, convert_to_complex): Likewise.
1242
1243 2006-02-08  Daniel Berlin  <dberlin@dberlin.org>
1244
1245         * df-scan.c (df_def_record_1): A set destination may
1246         be a parallel regardless of mode.
1247
1248 2006-02-08  Roger Sayle  <roger@eyesopen.com>
1249
1250         PR target/22209
1251         * config/mips/mips.h (MIN_UNITS_PER_WORD): Don't define for libgcc.
1252         * config/mips/_tilib.c: Remove.
1253         * config/fixtfdi.c: New libgcc source file.
1254         * config/fixunstfdi.c: New source file.
1255         * config/floatditf.c: New source file.
1256         * config/floatunditf.c: New souce file.
1257         * config/mips/t-iris6 (LIB2FUNCS_EXTRA): Include the new source
1258         files above instead of config/mips/_tilib.c.
1259         * config/mips/t-linux64 (LIB2FUNCS_EXTRA): Likewise.
1260
1261 2006-02-08  Jeff Law  <law@redhat.com>
1262
1263         PR tree-optimization/26169
1264         * tree-vrp.c (execute_vrp): Perform any queued SSA updates before
1265         threading jumps.
1266
1267 2006-02-08  Zdenek Dvorak <dvorakz@suse.cz>
1268
1269         * df.h (DF_REG_SIZE): Return the length of the initialized
1270         part of the array.
1271
1272 2006-02-08  Nathan Sidwell  <nathan@codesourcery.com>
1273
1274         * gcc/config/m68k/lb1sf68.asm (__divsf3, __divdf3, __mulsf3,
1275         __muldf3): Return a correctly signed zero.
1276
1277 2006-02-08  Paolo Bonzini  <bonzini@gnu.org>
1278
1279         * passes.c (register_one_dump_file): Accept the current properties
1280         instead of pass number.  Adjust call to dump_register.  Remove
1281         duplicated code.
1282         (register_dump_files): Now a wrapper around...
1283         (register_dump_files_1): ... this one.  Do not modify the pass
1284         structure.
1285         (next_pass_1): Cosmetic fix.
1286         (execute_todo): Keep second parameter only.  Use curr_properties
1287         instead of fetching it from the pass structure.  Check and set
1288         last_verified.
1289         (execute_one_pass): Handle TODO_set_props.  Use curr_properties
1290         instead of fetching it from the pass structure.  Fix calls to
1291         execute_todo.  Update curr_properties and initialize .vcg RTL dump
1292         after running the pass.  Reset last_verified.
1293         * tree-dump.c (dump_files): Renumber consecutively.  Put .cgraph dump
1294         at the beginning.
1295         (FIRST_AUTO_NUMBERED_DUMP): New.
1296         (dump_register): Remove "num" parameter, assign it within the
1297         function.
1298         (get_dump_file_name): Modify template for dumps.
1299         * tree-dump.h (dump_register): Adjust prototype.
1300         * tree-pass.h (enum tree_dump_index): Move cgraph at the beginning.
1301         (PROP_trees): Add PROP_gimple_lomp.
1302         (TODO_set_props): New.
1303         * gimple-low.c (pass_lower_cf): Do not destroy PROP_gimple_lcf.
1304         * tree-eh.c (pass_lower_eh): Do not destroy PROP_gimple_leh.
1305         * cfgexpand.c (pass_expand): Destroy PROP_trees.
1306
1307 2006-02-08  Jakub Jelinek  <jakub@redhat.com>
1308
1309         * config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
1310         (sparc64-*-linux*): Likewise.
1311         * config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
1312         * config/sparc/t-linux: New file.
1313         * config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
1314         __floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
1315         (__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
1316         -m32 -mlong-double-128.
1317
1318         * config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
1319         * config/alpha/t-linux: New file.
1320         * config/alpha/libgcc-alpha-ldbl.ver: New file.
1321
1322         * config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
1323         __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
1324         (CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
1325         * config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
1326         __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
1327         (CPP_ARCH32_SPEC): Remove.
1328
1329 2006-02-07  Uttam Pawar  <uttamp@us.ibm.com>
1330
1331         PR tree-optimization/26145
1332         * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Free
1333         bbs pointer.
1334
1335 2006-02-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1336
1337         PR target/26109
1338         * pa.c (attr_length_indirect_call): Don't return length 8 for distances
1339         >= 240000 when generating code for SOM runtime.
1340         (output_indirect_call): Don't use "b,l" instruction for indirect calls
1341         to $$dyncall when generating code for SOM runtime..
1342
1343 2006-02-07  Dirk Mueller  <dmueller@suse.com>
1344
1345         PR c++/18150
1346         * doc/invoke.texi (-Wsequence-point): Update documentation
1347         that -Wsequence-point is implemented for C++ as well.
1348
1349 2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
1350
1351         * config/sol26.h (CPP_SUBTARGET_SPEC): Accept -pthread.
1352         * config/sol2.h (CPP_SUBTARGET_SPEC): Likewise.
1353         (LIB_SPEC): Likewise.
1354         * doc/invoke.texi (SPARC options): Document -pthread.
1355
1356 2006-02-07  Geoffrey Keating  <geoffk@apple.com>
1357
1358         * config/i386/i386.c (ix86_delegitimize_address): Support Darwin
1359         PIC addresses.
1360
1361 2006-02-07  Roger Sayle  <roger@eyesopen.com>
1362
1363         * config/sparc/sparc.c (sparc_type_code): Don't handle CHAR_TYPE.
1364         Correct comment describing BOOLEAN_TYPE.
1365
1366 2006-02-07  Dirk Mueller  <dmueller@suse.com>
1367
1368         * c.opt: C++ frontend supports -Wdiv-by-zero.
1369         * c-opts.c (c_common_handle_option): Remove dead case.
1370
1371 2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
1372
1373         * configure.ac (TLS assembler check): Do not enable TLS by
1374         default on SPARC/Solaris before version 10.
1375         * configure: Regenerate.
1376
1377 2006-02-07  David Edelsohn  <edelsohn@gnu.org>
1378
1379         * doc/invoke.texi (xl-compat): Document conversion and support
1380         routine names.
1381
1382 2006-02-07  Jeff Law  <law@redhat.com>
1383
1384         * tree-vrp.c (find_conditional_asserts): Update comments.
1385         (simplify_stmt_for_jump_threading): New.
1386         (identify_jump_threads, finalize_jump_threads): New.
1387         (vrp_finalize): Call identify_jump_threads.
1388         (execute_vrp): Call finalize_jump_threads.
1389         * tree-ssa-dom.c (struct opt_stats_d): Remove num_iterations field.
1390         (vrp_element, vrp_data, vrp_element_p): Remove.
1391         (vrp_hash_elt, vrp_variables_stack): Remove.
1392         (vrp_hash, vrp_eq, record_range): Remove.
1393         (simplify_cond_and_lookup_avail_expr): Remove.
1394         (extract_range_from_cond): Remove.
1395         (thread_across_edge): Relocated into tree-ssa-threadedge.c.
1396         (simplify_stmt_for_jump_threading): New.
1397         (dom_thread_across_edge): New wrapper.
1398         (tree_ssa_dominator_optimize): No longer initialize or
1399         finalize any of the VRP datastructures.  Remove iteration
1400         step and simplify as a result of removal of iteration step.
1401         (pass_dominator): Perform a cfg cleanup after DOM.
1402         (dom_opt_finalize_block): Use the new common routines
1403         for threading jumps.  Simplify stack management slightly.
1404         No longer need to unwind VRP state.
1405         (record_equivalences_from_incoming_edge): No longer record
1406         VRP information.
1407         (eliminate_redundant_computations): No longer call
1408         simplify_cond_and_lookup_avail_expr.
1409         * tree-flow.h (potentially_threadable_block): Prototype.
1410         (thread_across_edge): Likewise.
1411         * Makefile.in (OBJS-common):  Add tree-ssa-threadedge.o
1412         (tree-ssa-threadedge.o): Add dependencies.
1413         * tree-ssa-threadedge.c: New file.
1414         * passes.c (init_optimization_passes): Merge PHIs before
1415         calling VRP.  Run VRP again late in the SSA optimization pipeline.
1416
1417 2006-02-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
1418
1419         * df-core.c (df_set_blocks): Do not dereference function pointers.
1420         (df_finish1): Likewise.
1421         (df_hybrid_search_forward): Likewise.
1422         (df_hybrid_search_backward): Likewise.
1423         (df_iterative_dataflow): Likewise.
1424         (df_analyze_problem): Likewise.
1425         (df_compact_blocks): Likewise.
1426         (df_dump): Likewise.
1427         * df-scan.c (df_rescan_blocks): Likewise.
1428         (df_record_entry_block_defs): Likewise.
1429
1430         * genconditions.c (write_conditions): Guard the definition of
1431         'insn_conditions' with the check on GCC version.
1432         (write_writer): Guard the traversal 'insn_conditions' with
1433         the check on GCC version.
1434
1435 2006-02-07  Richard Guenther  <rguenther@suse.de>
1436
1437         PR c++/26140
1438         Revert
1439         2006-01-30  Richard Guenther  <rguenther@suse.de>
1440         PR c++/23372
1441         * gimplify.c (gimplify_target_expr): Handle easy cases
1442         without creating a temporary.
1443
1444 2006-02-07  Pete Steinmetz  <steinmtz@us.ibm.com>
1445
1446         * sched-rgn.c (compute_dom_prob_ps, compute_trg_info): Eradicate
1447         use of float in probability computations.  Use edge probabilities
1448         in place of statically computed probabilities.
1449         (min_spec_prob): New static variable.
1450         (schedule_insns): Initialize it.
1451         (GET_SRC_PROB): Removed.
1452         * doc/invoke.texi (min-sched-prob): Renamed to min-spec-prob.
1453
1454 2006-02-07  Alexandre Oliva  <aoliva@redhat.com>
1455
1456         PR debug/24444
1457         * config/ia64/unwind-ia64.c: Revert last change.
1458         * config/ia64/ia64.h (ARG_POINTER_CFA_OFFSET): Removed.
1459         (INCOMING_FRAME_SP_OFFSET): Define.
1460
1461 2006-02-06  Roger Sayle  <roger@eyesopen.com>
1462
1463         * config/ia64/ia64.c (hfa_element_mode): Don't handle CHAR_TYPE.
1464
1465 2006-02-07  Ben Elliston  <bje@au.ibm.com>
1466
1467         * config/i386/i386.c (ix86_scalar_mode_supported_p): New.
1468         (TARGET_SCALAR_MODE_SUPPORTED_P): Define hook.
1469         (classify_argument): Handle SDmode, DDmode, TDmode for 64-bit.
1470         (ix86_return_in_memory): Handle TDmode.
1471         (ix86_libcall_value): Handle SDmode, DDmode, TDmode.
1472         (ix86_value_regno): Return non-TDmode decimal float modes in %eax.
1473
1474 2006-02-06  Richard Sandiford  <richard@codesourcery.com>
1475
1476         * reorg.c (dbr_schedule): Use dump_file instead of file.
1477
1478 2006-02-06  Steve Ellcey  <sje@cup.hp.com>
1479
1480         PR target/25917
1481         * config/ia64/predicates.md (extr_len_operand): New predicate.
1482         * config/ia64/ia64.md (extv): Tighten constraints.
1483         (extzv): Ditto.
1484         (*tbit_and_2): Ditto.
1485         (*tbit_and_3): Ditto.
1486         (*tbit_or_2): Ditto.
1487         (*tbit_or_3): Ditto.
1488         (*bit_zero): Ditto.
1489         (*bit_one): Ditto.
1490
1491 2006-02-06  Andrew Pinski  <pinskia@physics.uc.edu>
1492
1493         PR target/23359
1494         * config/i386/i386.md (trap): Use ASM_SHORT instead of .word.
1495
1496 2006-02-06  Zdenek Dvorak <dvorakz@suse.cz>
1497
1498         * tree-vrp.c (execute_vrp): Do not pass dump argument to.
1499         loop_optimizer_init and loop_optimizer_finalize
1500         * tree-ssa-sink.c (execute_sink_code): Ditto.
1501         * tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
1502         * tree-ssa-loop.c (tree_loop_optimizer_init, tree_ssa_loop_init,
1503         tree_ssa_loop_done): Ditto.
1504         * tree-ssa-pre.c (init_pre, fini_pre): Ditto.
1505         * sched-ebb.c: Include output.h.
1506         (schedule_ebbs): Do not use dump argument.
1507         * value-prof.h (struct profile_hooks): Remove profile_dump_file.
1508         * loop.c (loop_dump_stream): Removed.
1509         (loop_optimize, rest_of_handle_loop_optimize): Do not use dump
1510         argument.
1511         (scan_loop, move_movables, find_and_verify_loops, mark_loop_jump,
1512         emit_prefetch_instructions, loop_bivs_find, loop_bivs_check,
1513         final_biv_value, loop_biv_eliminable_p, loop_givs_rescan,
1514         loop_iterations, strength_reduce, record_biv, record_giv,
1515         final_giv_value, check_final_value, check_ext_dependent_givs,
1516         combine_givs, check_dbra_loop, maybe_eliminate_biv, load_mems,
1517         try_copy_prop, loop_delete_insns, try_swap_copy_prop): Use
1518         dump_file instead of loop_dump_stream.
1519         * ddg.c (print_ddg_edge, print_ddg, vcg_print_ddg): Do not call
1520         argument dump_file.
1521         * reorg.c (dbr_schedule, rest_of_handle_delay_slots): Do not use
1522         dump argument.
1523         * flow.c (life_analysis, rest_of_handle_life): Ditto.
1524         * haifa-sched.c: Include output.h
1525         (schedule_insns, sched_init): Do not use dump argument.
1526         * mode-switching.c (optimize_mode_switching): Ditto.
1527         * modulo-sched.c (stats_file): Removed.
1528         (print_node_sched_params): Do not call argument dump_file.
1529         (sms_schedule_by_order, loop_canon_p, sms_schedule,
1530         rest_of_handle_sms): Do not use dump argument.  Use dump_file instead
1531         of stats_file.
1532         * cse.c (cse_main, rest_of_handle_cse, rest_of_handle_cse2): Do not
1533         use dump argument.
1534         * loop-init.c (loop_optimizer_init, loop_optimizer_finalize,
1535         rtl_loop_init, rtl_loop_done): Ditto.
1536         * global.c (global_alloc, rest_of_handle_global_alloc): Ditto.
1537         * predict.c (combine_predictions_for_bb, tree_estimate_probability):
1538         Ditto.
1539         * recog.c (peephole2_optimize, rest_of_handle_peephole2): Ditto.
1540         * lcm.c (pre_edge_lcm, pre_edge_rev_lcm): Ditto.
1541         * regmove.c (fixup_match_1, fixup_match_2, regmove_optimize,
1542         rest_of_handle_regmove, rest_of_handle_stack_adjustments): Ditto.
1543         * emit-rtl.c (renumber_insns): Ditto.
1544         * cfgexpand.c (add_reg_br_prob_note, expand_gimple_cond_expr,
1545         expand_gimple_basic_block, tree_expand_cfg): Ditto.
1546         * regclass.c (regclass): Ditto.
1547         * tree-outof-ssa.c (analyze_edges_for_bb, perform_edge_inserts,
1548         remove_ssa_form, rewrite_out_of_ssa): Ditto.
1549         * reg-stack.c (compensate_edge, compensate_edges, convert_regs_1,
1550         convert_regs_2, convert_regs, reg_to_stack, rest_of_handle_stack_regs):
1551         Ditto.
1552         * sched-rgn.c (schedule_insns, rest_of_handle_sched): Ditto.
1553         * local-alloc.c (rest_of_handle_local_alloc): Do not pass dump_file
1554         to regclass.
1555         * gcse.c (gcse_file, debug_stderr): Removed.
1556         (gcse_main, bypass_jumps, rest_of_handle_jump_bypass,
1557         rest_of_handle_gcse): Do not use dump argument.
1558         (cprop_jump, cprop_insn, do_local_cprop, cprop, find_implicit_sets,
1559         one_cprop_pass, bypass_block, compute_pre_data, insert_insn_end_bb,
1560         pre_edge_insert, pre_insert_copy_insn, pre_delete, one_pre_gcse_pass,
1561         compute_code_hoist_vbeinout, compute_code_hoist_data,
1562         one_code_hoisting_pass, trim_ld_motion_mems, update_ld_motion_stores,
1563         compute_store_table, build_store_vectors, insert_insn_start_bb,
1564         insert_store, remove_reachable_equiv_notes, replace_store_insn,
1565         store_motion): Use dump_file instead of gcse_file.
1566         * ipa-type-escape.c (type_escape_execute): Remove debugging comments.
1567         * profile.c (profile_dump_file): Removed.
1568         (branch_prob): Use dump_file instead of profile_dump_file.
1569         * ipa.c (cgraph_remove_unreachable_nodes): Do not call argument
1570         dump_file.
1571         * tree-ssa-copy.c (dump_copy_of): Ditto.
1572         * rtl-factoring.c (rtl_seqabstr, rest_of_rtl_seqabstr): Do not pass
1573         dump file to life_analysis.
1574         * bt-load.c (branch_target_load_optimize): Ditto.
1575         * cfgcleanup.c (rest_of_handle_jump2): Do not pass dump_file to
1576         renumber_insns.
1577         * rtl.h (cse_main, renumber_insns, schedule_insns, schedule_ebbs,
1578         regclass, dbr_schedule): Declaration changed.
1579         * sched-int.h (sched_init): Declaration changed.
1580         * tree-profile.c (tree_profile_dump_file): Removed.
1581         (tree_profile_hooks): Removed profile_dump_file hook.
1582         * rtl-profile (rtl_profile_dump_file): Removed.
1583         (rtl_profile_hooks): emoved profile_dump_file hook.
1584         * cfgloop.h (loop_optimizer_init, loop_optimizer_finalize): Declaration
1585         changed.
1586         * c-gimplify.c (c_genericize): Do not call local variable dump_file.
1587         * tree-cfg.c (build_tree_cfg): Ditto.
1588         * Makefile.in (haifa-sched.o, sched-ebb.o): Add output.h dependency.
1589         * basic-block.h (life_analysis, pre_edge_lcm, pre_edge_rev_lcm):
1590         Declaration changed.
1591         * config/sh/sh.c (sh_output_mi_thunk): Do not pass dump_file to
1592         life_analysis and schedule_insns.
1593         * config/m68hc11/m68hc11.c (m68hc11_reorg): Do not pass dump_file to
1594         life_analysis.
1595         * config/mt/mt.c (mt_machine_reorg): Do not pass dump_file to
1596         dbr_schedule.
1597         * config/mips/mips.c (mips_reorg): Ditto.
1598         * config/ia64/ia64.c (ia64_reorg): Do not pass dump_file to
1599         schedule_ebbs.
1600
1601 2006-02-06  Aldy Hernandez  <aldyh@redhat.com>
1602
1603         * config/s390/s390.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1604         (s390_mangle_fundamental_type): New.
1605         * config/s390/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
1606         Define.
1607
1608         * config/alpha/alpha.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1609         (alpha_mangle_fundamental_type): New.
1610         * config/alpha/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
1611         Define.
1612
1613         * config/sparc/linux.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
1614         Define.
1615         * config/sparc/linux64.h (TARGET_ALTERNATE_LONG_DOUBLE_MANGLING):
1616         Define.
1617         * config/sparc/sparc.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
1618         (sparc_mangle_fundamental_type): New.
1619
1620 2006-02-06  Jakub Jelinek  <jakub@redhat.com>
1621
1622         * config.gcc (s390-*-linux*): Add s390/t-linux to tmake_file.
1623         (s390x-*-linux*): Likewise.
1624         * config/s390/t-linux64 (SHLIB_MAPFILES): Removed.
1625         * config/s390/t-linux: New file.
1626
1627 2006-02-02  Bernd Schmidt  <bernd.schmidt@analog.com>
1628
1629         * config/i386/sync.md (sync_add<mode>, sync_sub<mode>, sync_ior<mode>,
1630         sync_and<mode>, sync_xor<mode>): Operand 0 is in-out.
1631
1632 2006-02-06  Daniel Berlin  <dberlin@dberlin.org>
1633
1634         * tree-ssa-pre.c (bb_value_sets_t): Add antic_safe_loads.
1635         (ANTIC_SAFE_LOADS): New macro.
1636         (find_or_generate_expression): Add prototype.
1637         (set_contains_value): Allow null set for sake of not always having
1638         to allocate ANTIC_SAFE_LOADS.
1639         (phi_translate): Move placement of AGGREGATE_TYPE_P check.
1640         Allow COMPONENT_REF too.
1641         (valid_in_set): Allow COMPONENT_REF.
1642         Check ANTIC_SAFE_LOADS too.
1643         (compute_antic_aux): Print out ANTIC_SAFE_LOADS.
1644         (compute_rvuse_and_antic_safe): Add ANTIC_SAFE computation, and
1645         rename.
1646         (can_PRE_operation): Add COMPONENT_REF.
1647         (create_component_ref_by_pieces): New function.
1648         (create_expression_by_pieces): Use create_component_ref_by_pieces.
1649         (insert_aux): Move AGGREGATE_TYPE_P check here.
1650         (compute_avail): Set bb local stmt uids.
1651         (pass_pre): Use TODO_update_ssa_only_virtuals.
1652         
1653 2006-02-06  Ben Elliston  <bje@au.ibm.com>
1654
1655         * configure.ac: Unconditionally disable decimal float by default.
1656         * configure: Regenerate.
1657
1658 2006-02-06  Ben Elliston  <bje@au.ibm.com>
1659
1660         * read-rtl.c (read_name): Terminate reading on EOF.
1661
1662 2006-02-06  Ben Elliston  <bje@au.ibm.com>
1663
1664         * dfp.c (decimal_real_arithmetic): Change second argument type
1665         from int to enum tree_code. Do not always return true, but now
1666         return result of any call to decimal_do helper functions.
1667         * dfp.h (decimal_real_arithmetic): Update prototype.
1668
1669 2006-02-05  Eric Botcazou  <ebotcazou@libertysurf.fr>
1670
1671         * config/sparc/sol2-bi.h (SPARC_DEFAULT_CMODEL): Set to CM_MEDMID.
1672
1673 2006-02-05  Andrew Pinski  <pinskia@physics.uc.edu>
1674
1675         PR tree-opt/25251
1676         * tree-cfg.c (cleanup_dead_labels): Also don't remove
1677         forced labels.
1678
1679 2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>
1680
1681         * tree-vrp.c (cfg_loops): Removed.
1682         (adjust_range_with_scev, vrp_visit_assignment, execute_vrp):
1683         Use current_loops instead of cfg_loops.  Pass flags to
1684         loop_optimizer_init.
1685         * cfgloopmanip.c (fix_loop_structure): Update only available
1686         information.
1687         * tree-ssa-loop-ch.c (copy_loop_headers): Pass flags to
1688         loop_optimizer_init.
1689         * modulo-sched.c (build_loops_structure): Removed.
1690         (sms_schedule): Use loop_optimizer_init.
1691         * loop-init.c (loop_optimizer_init): Use flags to determine
1692         which properties of loops to prepare.
1693         (rtl_loop_init): Pass flags to loop_optimizer_init.
1694         * tree-ssa-sink.c (execute_sink_code): Ditto.
1695         * tree-ssa-loop.c (tree_loop_optimizer_init): Ditto.
1696         * tree-ssa-pre.c (init_pre): Ditto.
1697         * cfgloop.h (LOOPS_NORMAL): New.
1698         (loop_optimizer_init): Declaration changed.
1699
1700 2006-02-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1701
1702         * pa/x-ada-hpux10, pa/t-pa-hpux10, pa/t-pa-hpux11: New files.
1703         * config.gcc (hppa[12]*-*-hpux10*): Use pa/t-pa-hpux10 instead of
1704         pa/t-pa.
1705         * config.gcc (hppa[12]*-*-hpux11*): Use pa/t-pa-hpux11 instead of
1706         pa/t-pa.
1707         * config.host (hppa*-*-hpux10*): Use pa/x-ada-hpux10 instead of
1708         pa/x-ada.
1709         * pa/t-pa-hpux: Add lib2funcs.asm and quadlib.c rules.
1710         * pa/t-pa64: Delete quadlib.c rule.
1711         * pa/x-ada: Revert last change.
1712         * pa/t-pa: Revert last change.  Delete quadlib.c rule.
1713
1714 2006-02-04  Zdenek Dvorak <dvorakz@suse.cz>
1715
1716         PR rtl-optimization/26087
1717         * rtlanal.c (canonicalize_condition): Do not cross basic block
1718         boundaries.
1719
1720 2006-02-04  Alexandre Oliva  <aoliva@redhat.com>
1721
1722         PR debug/24444
1723         * config/ia64/ia64.c: Include debug.h.
1724         (MAX_ARTIFICIAL_LABEL_BYTES): New.
1725         (ia64_label_after_insn, ia64_dwarf2out_def_steady_cfa): New.
1726         (IA64_CHANGE_CFA_IN_EPILOGUE): Define to 0.
1727         (process_epilogue, process_set, process_for_unwind_directive):
1728         Output unwind info only if requested.  Add CFA info if requested.
1729         Add new arguments as needed.  Adjust callers.
1730         * config/ia64/ia64.h (ARG_POINTER_CFA_OFFSET): Override
1731         incorrect default.
1732         (DWARF2_FRAME_INFO): Define to zero.
1733         * config/ia64/unwind-ia64.c: Remove code that compensated for
1734         the CFA offset error fixed above.
1735         * config/ia64/t-ia64 (ia64.o): Depend on debug.h.
1736         * dwarf2out.c (DWARF2_FRAME_INFO): Define default.
1737         (dwarf2out_do_frame): Require nonzero DWARF2_UNWIND_INFO for
1738         -funwind-tables and -fexceptions to enable frame info.
1739         (dwarf2out_frame_init): Define initial CFA even if
1740         DWARF2_UNWIND_INFO is disabled.  Call initial_return_save if
1741         DWARF2_UNWIND_INFO is nonzero, not just defined.
1742         (dwarf2out_frame_finish): Output non-EH call frame info only
1743         if DWARF2_FRAME_INFO is nonzero.
1744         (convert_cfa_to_loc_list,
1745         compute_frame_pointer_to_cfa_displacement): Define even if
1746         unwind info is not supported.
1747         (gen_subprogram_die): Use the above unconditionally.  Remove
1748         legacy alternate code.
1749         * toplev.c (compile_file): Compile in call to
1750         dwarf2out_frame_finish if DWARF2_DEBUGGING_INFO is defined.
1751         (lang_dependent_init): Ditto for dwarf2out_frame_init.
1752
1753 2006-02-04  David Edelsohn  <edelsohn@gnu.org>
1754             Jakub Jelinek  <jakub@redhat.com>
1755
1756         * config/rs6000/rs6000.c (rs6000_mangle_fundamental_type): Mangle
1757         IBM extended float format long double as "g" on powerpc*-linux.
1758
1759 2006-02-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1760
1761         PR target/25926
1762         * pa/x-ada (X_ADA_CFLAGS): Define _X_HPUX10 on HP-UX 10.
1763         * pa/t-pa (TARGET_LIBGCC2_CFLAGS): Define _T_HPUX10 on HP-UX 10.
1764
1765 2006-02-03  Jason Merrill  <jason@redhat.com>
1766
1767         PR c++/25979
1768         * gimplify.c (gimplify_modify_expr_rhs): Disable *& optimization for now.
1769
1770         PR middle-end/25977
1771         * gimplify.c (gimplify_modify_expr_rhs): It's not always safe to do RVO
1772         on the return slot if it's an NRV.
1773
1774 2006-02-03  Zdenek Dvorak <dvorakz@suse.cz>
1775
1776         * tree-ssa-loop-ivopts.c (enum use_type): Remove USE_OUTER.
1777         (dump_use, add_derived_ivs_candidates, determine_use_iv_cost,
1778         rewrite_use): Do not handle USE_OUTER.
1779         (find_interesting_uses_outer_or_nonlin, find_interesting_uses_outer,
1780         add_iv_outer_candidates, may_replace_final_value,
1781         determine_use_iv_cost_outer, rewrite_use_outer): Removed.
1782         (find_interesting_uses_op): Functionality of
1783         find_interesting_uses_outer_or_nonlin moved here.
1784         (find_interesting_uses_outside): Use find_interesting_uses_op.
1785
1786 2006-02-03  Alan Modra  <amodra@bigpond.net.au>
1787
1788         PR target/25960
1789         * config/rs6000/darwin-ldouble.c (__gcc_qadd): Preserve -0.0 result.
1790
1791 2006-02-03  Andreas Krebbel  <krebbel1@de.ibm.com>
1792             Ulrich Weigand  <uweigand@de.ibm.com>
1793
1794         PR target/25864
1795         * config/s390/2084.md ("x_fsimptf", "x_fmultf", "x_fdivtf",
1796         "x_floadtf", "x_ftrunctf", "x_ftruncdf"): New insn reservations.
1797         * config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): New functions.
1798         * config/s390/s390.c (struct processor_costs): Add mxbr, sqxbr, dxbr 
1799         and dxr fields.
1800         (z900_cost, z990_cost, z9_109_cost): Values for the new fields added.
1801         (s390_rtx_costs): Use the new fields to calculate rtx costs.
1802         (s390_secondary_input_reload_class, s390_secondary_output_reload_class):
1803         Define secondary reloads for TFmode moves.
1804         (constant_modes): Add TFmode.
1805         (NR_C_MODES): Set to 8.
1806         * config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): Add __LONG_DOUBLE_128__
1807         builtin define.
1808         (LONG_DOUBLE_TYPE_SIZE): Set to 128 or 64.
1809         (LIBGCC2_LONG_DOUBLE_TYPE_SIZE, WIDEST_HARDWARE_FP_SIZE): Define.
1810         (HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS, 
1811         CANNOT_CHANGE_MODE_CLASS): Consider TFmode.
1812         * config/s390/s390.md ("type" attribute): Add fsimptf, floadtf, fmultf, 
1813         fdivtf, fsqrttf, ftrunctf, ftruncdf as possible values.
1814         (FPR mode macro): Add TFmode.
1815         (DSF mode macro): New.
1816         (<de>, <dee> mode attributes): Removed.
1817         (<xde>, <xdee>, <RRe>, <RXe>, <Rf> mode attributes): New.
1818         ("*cmp<mode>_ccs_0", "*cmp<mode>_ccs_0_ibm", "*cmp<mode>_ccs", 
1819         "*cmp<mode>_ccs_ibm", "fix_trunc<FPR:mode><GPR:mode>2_ieee", 
1820         "floatdi<mode>2", "floatsi<mode>2_ieee", "*add<mode>3", 
1821         "*add<mode>3_cc", "*add<mode>3_cconly", "*add<mode>3_ibm", 
1822         "*sub<mode>3", "*sub<mode>3_cc", "*sub<mode>3_cconly", 
1823         "*sub<mode>3_ibm", "*mul<mode>3_ibm", "*fmadd<mode>", "*fmsub<mode>",
1824         "*div<mode>3", "*div<mode>3_ibm", "*neg<mode>2_cc", 
1825         "*neg<mode>2_cconly", "*neg<mode>2", "*neg<mode>2_ibm", 
1826         "*abs<mode>2_cc", "*abs<mode>2_cconly", "*abs<mode>2",
1827         "*abs<mode>2_ibm", "*negabs<mode>2_cc", "*negabs<mode>2_cconly", 
1828         "*negabs<mode>2", "sqrt<mode>2"):
1829         Changed <de> to <xde>. R constraint replaced by <Rf>.
1830         ("*mul<mode>3"): Changed <dee> to <xdee>. R constraint replaced by 
1831         <Rf>.
1832         ("fix_trunc<FPR:mode>di2"): 'FPR:' removed.
1833         ("*fmadd<mode>", "*fmsub<mode>"): FPR mode replaced by DSF.
1834         ("*movtf_64", "*movtf_31"): New insn definitions followed by 5 
1835         splitters.
1836         ("movtf", "reload_outtf", "reload_intf", "trunctfdf2", "trunctfsf2", 
1837         "extenddftf2", "extendsftf2"): New expanders.
1838         ("*trunctfdf2_ieee", "*trunctfdf2_ibm", "*trunctfsf2_ieee", 
1839         "*trunctfsf2_ibm", "*extenddftf2_ieee", "*extenddftf2_ibm",
1840         "*extendsftf2_ieee", "*extendsftf2_ibm"): New insn patterns.
1841         * config/s390/s390.opt (mlong-double-128, mlong-double-64):
1842         New options.
1843         * config/s390/t-crtstuff (TARGET_LIBGCC2_CFLAGS): Macro defined.
1844         * config/s390/libgcc-glibc.ver (__divtc3, __multc3, __powitf2, 
1845         __fixtfti, __fixunstfti, __floattitf, __fixtfdi, __fixunstfdi,
1846         __floatditf): Add a GCC_4.1.0 symbol version tag.
1847         * doc/invoke.texi (-mlong-double-128, -mlong-double-64): Document
1848         the new options.
1849
1850 2006-02-02  Andrew Pinski  <pinskia@physics.uc.edu>
1851
1852         PR target/25377
1853         * config/i386/i386.c (ix86_function_ok_for_sibcall):
1854         Use targetm.binds_local_p instead of TREE_PUBLIC.
1855
1856 2006-02-02  Roger Sayle  <roger@eyesopen.com>
1857
1858         * tree.h (TYPE_STRING_FLAG): Document that this field may be used
1859         on INTEGER_TYPEs to indicate that it denotes a character type.
1860         * tree.c (build_common_tree_nodes): Set TYPE_STRING_FLAG on
1861         signed_char_type_node, unsigned_char_type_node and char_type_node.
1862         * dwarf2out.c (base_type_die): Treat CHAR_TYPE identically to
1863         INTEGER_TYPE.  Use TYPE_STRING_FLAG to decide whether to emit
1864         a DW_ATE_[un]signed_char instead of a DW_ATE_[un]signed.
1865
1866 2006-02-02  Zdenek Dvorak <dvorakz@suse.cz>
1867             Daniel Berlin  <dberlin@dberlin.org>
1868
1869         * tree-tailcall.c (arg_needs_copy_p): New function.
1870         (eliminate_tail_call): Use arg_needs_copy_p.
1871         (tree_optimize_tail_calls_1): Ditto. Also call add_virtual_phis.
1872         (add_virtual_phis): New function.
1873
1874 2006-02-02  Jakub Jelinek  <jakub@redhat.com>
1875
1876         * config/sparc/sparc.c (sparc_output_scratch_registers): Use
1877         #ignore instead of #scratch for %g7 .register directive.
1878
1879 2006-02-02  Andreas Tobler  <a.tobler@schweiz.ch>
1880
1881         * config/sparc/freebsd.h (ENDFILE_SPEC): Add space to separate
1882         object files.
1883
1884 2006-02-02  Bernd Schmidt  <bernd.schmidt@analog.com>
1885
1886         * flow.c (calculate_global_regs_live): Assert that there aren't any
1887         EDGE_FAKE edges.
1888
1889 2006-02-02  Paolo Bonzini  <bonzini@gnu.org>
1890
1891         * tree-flow-inline.h (bsi_after_labels): Rewrite, return
1892         what its name says.
1893         * lambda-code.c (perfect_nestify): Use bsi_insert_before on
1894         bsi_after_labels iterator.
1895         * tree-if-conv.c (find_phi_replacement_condition,
1896         replace_phi_with_cond_modify_expr): Likewise.
1897         * tree-scalar-evolution.c (scev_const_prop): Likewise.
1898         * tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Likewise.
1899
1900 2006-02-02  Diego Novillo  <dnovillo@redhat.com>
1901
1902         * tree-inline.c (copy_tree_r): Also copy OMP_CLAUSE nodes.
1903
1904 2006-02-02  Diego Novillo  <dnovillo@redhat.com>
1905
1906         PR 25990
1907         * tree-cfg.c (move_block_to_fn): Clear out the basic block
1908         array after growing it.
1909
1910 2006-02-01  Steve Ellcey  <sje@cup.hp.com>
1911
1912         PR middle-end/24901
1913         * fold-const.c (fold_checksum_tree): Change type of buf.
1914
1915 2006-02-01  Bernd Schmidt  <bernd.schmidt@analog.com>
1916
1917         * reload.c (push_secondary_reload): Initialize t_icode.
1918
1919 2006-02-01  Jakub Jelinek  <jakub@redhat.com>
1920
1921         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For
1922         -msoft-float -mlong-double-128 only issue a warning, but don't
1923         swich to DFmode long double.
1924
1925 2006-02-01  Hans-Peter Nilsson  <hp@axis.com>
1926
1927         * cse.c (fold_rtx) <case RTX_COMM_COMPARE, RTX_COMPARE>: When arg1
1928         has a constant equivalent, iterate over equivalents for arg0,
1929         calling simplify_relational_operation and if there's a result
1930         cheaper than X, apply fold_rtx and return the result.
1931
1932 2006-02-01  Jan Hubicka  <jh@suse.cz>
1933
1934         * opts.c (no_unit_at_a_time_default): New global variable.
1935         (decode_options): Use it.
1936         * opts.h (no_unit_at_a_time_default): Declare.
1937
1938 2006-02-01  Paul Brook  <paul@codesourcery.com>
1939
1940         * function.c (assign_parm_setup_reg): Use function argument promotion
1941         rules.
1942         * expr.c (expand_expr_real_1): Use function argument promotion rules
1943         for PARM_DECLs.
1944
1945 2006-02-01  Steve Ellcey  <sje@cup.hp.com>
1946
1947         * gcc.c (process_command): Change j to 'unsigned int'.
1948
1949 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
1950
1951         PR middle-end/26001
1952         * expr.c (expand_expr_real_1) <case ARRAY_REF>:
1953         Use the corrected index for the character
1954         out of the string constant.
1955
1956 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
1957
1958         * mode-switching.c (optimize_mode_switching): Fix size
1959         allocated for bb_info[n_entities].
1960
1961 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
1962
1963         * gcc.c (main): Correct type that is allocated for
1964         explicit_link_files.
1965
1966 2006-01-31  Jakub Jelinek  <jakub@redhat.com>
1967
1968         * config/s390/s390.c (init_alignment_context): Set
1969         ALIAS_SET_MEMORY_BARRIER on the MEM.
1970         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Likewise.
1971
1972 2006-01-31  Uttam Pawar  <uttamp@us.ibm.com>
1973
1974         PR middle-end/25933
1975         * loop-unroll.c (unroll_loop_runtime_iterations): Free
1976         dom_bbs pointer.
1977         * tree-ssa-live.c (type_var_init): Allocate bitmap after
1978         call to tpa_init.
1979
1980 2006-01-31  Marcin Dalecki  <martin@dalecki.de>
1981
1982         * tree-vrp.c: Use XNEW/XCNEW allocation wrappers.
1983         * regrename.c: Ditto.
1984         * tree-ssa-loop-im.c: Ditto.
1985         * tree-dump.c: Ditto.
1986         * tree-complex.c: Ditto.
1987         * genrecog.c: Ditto.
1988         * tree-ssa-threadupdate.c: Ditto.
1989         * tracer.c: Ditto.
1990         * java/class.c: Ditto.
1991         * java/jcf-parse.c: Ditto.
1992         * java/resource.c: Ditto.
1993         * java/except.c: Ditto.
1994         * java/jvspec.c: Ditto.
1995         * java/jcf-write.c: Ditto.
1996         * java/jcf-path.c: Ditto.
1997         * java/gjavah.c: Ditto.
1998         * java/zextract.c: Ditto.
1999         * java/jcf-io.c: Ditto.
2000         * java/jcf.h: Ditto.
2001         * java/buffer.c: Ditto.
2002         * java/lang.c: Ditto.
2003         * java/parse-scan.y: Ditto.
2004         * java/lex.c: Ditto.
2005         * java/lex.h: Ditto.
2006         * cfgloopmanip.c: Ditto.
2007         * postreload-gcse.c: Ditto.
2008         * tree-ssa-loop-manip.c: Ditto.
2009         * postreload.c: Ditto.
2010         * tree-ssa-loop-ch.c: Ditto.
2011         * loop.c: Ditto.
2012         * ipa-cp.c: Ditto.
2013         * cppspec.c: Ditto.
2014         * diagnostic.c: Ditto.
2015         * final.c: Ditto.
2016         * genoutput.c: Ditto.
2017         * gcc.c: Ditto.
2018         * cfghooks.c: Ditto.
2019         * cfgloopanal.c: Ditto.
2020         * objc/objc-act.c: Ditto.
2021         * gcov.c: Ditto.
2022         * genextract.c: Ditto.
2023         * genautomata.c: Ditto.
2024         * pretty-print.c: Ditto.
2025         * genemit.c: Ditto.
2026         * cgraphunit.c: Ditto.
2027         * flow.c: Ditto.
2028         * df-scan.c: Ditto.
2029         * haifa-sched.c: Ditto.
2030         * dominance.c: Ditto.
2031         * dbxout.c: Ditto.
2032         * tree-ssa-loop-ivopts.c: Ditto.
2033         * df-core.c: Ditto.
2034         * mode-switching.c: Ditto.
2035         * modulo-sched.c: Ditto.
2036         * graph.c: Ditto.
2037         * ipa-pure-const.c: Ditto.
2038         * cse.c: Ditto.
2039         * fix-header.c: Ditto.
2040         * web.c: Ditto.
2041         * tree-stdarg.c: Ditto.
2042         * ipa-utils.c: Ditto.
2043         * loop-init.c: Ditto.
2044         * ipa-inline.c: Ditto.
2045         * cfganal.c: Ditto.
2046         * global.c: Ditto.
2047         * alloc-pool.c: Ditto.
2048         * dwarf2out.c: Ditto.
2049         * opts.c: Ditto.
2050         * genattrtab.c: Ditto.
2051         * tree-ssa-loop-ivcanon.c: Ditto.
2052         * predict.c: Ditto.
2053         * timevar.c: Ditto.
2054         * lcm.c: Ditto.
2055         * fortran/gfortranspec.c: Ditto.
2056         * regmove.c: Ditto.
2057         * local-alloc.c: Ditto.
2058         * langhooks.c: Ditto.
2059         * function.c: Ditto.
2060         * tree-vectorizer.c: Ditto.
2061         * gcse.c: Ditto.
2062         * ipa-type-escape.c: Ditto.
2063         * alias.c: Ditto.
2064         * tree-if-conv.c: Ditto.
2065         * profile.c: Ditto.
2066         * ipa.c: Ditto.
2067         * tree-data-ref.c: Ditto.
2068         * loop-unroll.c: Ditto.
2069         * treelang/treetree.c: Ditto.
2070         * calls.c: Ditto.
2071         * bt-load.c: Ditto.
2072         * ggc-common.c: Ditto.
2073         * except.c: Ditto.
2074         * coverage.c: Ditto.
2075         * cselib.c: Ditto.
2076         * tree-cfgcleanup.c: Ditto.
2077         * tree-ssa-pre.c: Ditto.
2078         * cfgcleanup.c: Ditto.
2079         * loop-invariant.c: Ditto.
2080         * loop-iv.c: Ditto.
2081         * ipa-prop.c: Ditto.
2082         * print-tree.c: Ditto.
2083         * conflict.c: Ditto.
2084         * ggc-page.c: Ditto.
2085         * sched-deps.c: Ditto.
2086         * regclass.c: Ditto.
2087         * tree-object-size.c: Ditto.
2088         * combine.c: Ditto.
2089         * bb-reorder.c: Ditto.
2090         * resource.c: Ditto.
2091         * var-tracking.c: Ditto.
2092         * cfgloop.c: Ditto.
2093         * df-problems.c: Ditto.
2094         * reg-stack.c: Ditto.
2095         * tlink.c: Ditto.
2096         * gccspec.c: Ditto.
2097         * sched-rgn.c: Ditto.
2098         * tree-ssa-structalias.c: Ditto.
2099         * tree-ssa-reassoc.c: Ditto.
2100         * config/darwin-c.c: Ditto.
2101         * config/darwin.c: Ditto.
2102         * config/arm/arm.c: Ditto.
2103         * cfgrtl.c: Ditto.
2104         * collect2.c: Ditto.
2105         * reload1.c: Ditto.
2106
2107 2006-01-31  Nicolas Pitre  <nico@cam.org>
2108
2109         * arm.md (smaxsi3): Make aware of smax_m1.
2110         (smax_m1): New.
2111
2112 2006-01-31  Nathan Sidwell  <nathan@codesourcery.com>
2113
2114         * gcc/config/m68k/lb1sf68.asm: Use moveq to load small constants.
2115
2116 2006-01-31  Richard Guenther  <rguenther@suse.de>
2117
2118         * doc/invoke.texi (-msselibm): Document.
2119         * target.h (expand_library_builtin): New target hook.
2120         * builtins.c (expand_builtin): Use expand_library_builtin.
2121         (default_expand_library_builtin): New function.
2122         * gcc.c (LINK_GCC_MATH_SPEC): Define.
2123         (LINK_COMMAND_SPEC): Handle %(link_gcc_math).
2124         (link_gcc_math_spec): Declare.
2125         (static_specs): Add link_gcc_math_spec.
2126         * expr.h (default_expand_library_builtin): Declare.
2127         * target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
2128         (TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
2129         * config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
2130         * config/i386/i386.opt (msselibm): New target option.
2131         * config/i386/i386.c (ix86_builtin_function_variants): New array.
2132         (ix86_init_sse_abi_builtins): New function.
2133         (ix86_expand_library_builtin): Likewise.
2134         (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
2135         (override_options): Handle error conditions wrt -msselibm.
2136         (ix86_builtins): Add function codes for SSE2 ABI builtins.
2137         (ix86_init_builtins): Call ix86_init_sse_abi_builtins.
2138         * doc/extend.texi (__builtin_sse2_*): Document new target specific
2139         builtins.
2140
2141 2006-01-31  Richard Guenther  <rguenther@suse.de>
2142         Paolo Bonzini  <bonzini@gnu.org>
2143
2144         * doc/install.texi (--disable-libgcc-math): Document.
2145
2146 2006-01-30  Marcin Dalecki  <martin@dalecki.de>
2147
2148         * expr.h (expand_normal): new inline function.
2149         * builtins.c: use it, use EXPAND_NORMAL explicitely.
2150         * dojump.c: use it.
2151         * dwarf2out.c: use it.
2152         * expr.c: use it.
2153         * calls.c: use it.
2154         * expmed.c: use it.
2155         * except.c: use it.
2156         * config/sparc/sparc.c: use it.
2157         * config/i386/i386.c: use it.
2158         * config/rs6000/rs6000.c: use it.
2159         * config/arm/arm.c: use it.
2160         * config/mips/mips.c: use it.
2161         * stmt.c: use it, use EXPAND_NORMAL explicitely.
2162
2163 2006-01-30  Roger Sayle  <roger@eyesopen.com>
2164
2165         * config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast
2166         argv to the appropriate type.
2167
2168 2006-01-30  Zdenek Dvorak <dvorakz@suse.cz>
2169
2170         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Remove
2171         unreachable code.
2172
2173 2006-01-30  Ulrich Weigand  <uweigand@de.ibm.com>
2174
2175         PR target/26018
2176         * config/s390/s390.c (struct machine_function): New flag
2177         decomposed_literal_pool_addresses_ok_p.
2178         (s390_reorg): Set it before final stage of literal pool transforms.
2179         (s390_decompose_address): Only accept displacements of the form
2180         (minus (label_ref ...) (label_ref ...)) if that flag is set.
2181
2182 2006-01-30  Carlos O'Donell  <carlos@codesourcery.com>
2183
2184         * optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias
2185         the comparison routine return.
2186
2187 2006-01-30  Michael Matz  <matz@suse.de>
2188
2189         * global.c (find_reg): Only evict for global regs.
2190         Take n_refs into account and dump more info.
2191
2192 2006-01-30  J"orn Rennecke <joern.rennecke@st.com>
2193
2194         PR target/14798:
2195         * sh.c (pragma_interrupt, trap_exit, sp_switch): Remove variable.
2196         (pragma_trap, pragma_nosave_low_regs): Likewise.
2197         (current_function_anonymous_args): Likewise.
2198         (sh_deferred_function_attributes): New variable.
2199         (sh_deferred_function_attributes_tail): Likewise.
2200         (print_operand): For '@', look up trap_exit attribute.
2201         (calc_live_regs): Look up trapa_handler attribute.  For trapa
2202         handlers, save/restore fpscr, but don't do any other
2203         interrupt-specific saves.
2204         Don't save r0..r7 if the nosave_low_regs attribute is in effect.
2205         Fix check for partially saved registers to check for SHmedia.
2206         (sh_expand_prologue, sh_expand_epilogue): Look up sp_switch attribute.
2207         (sh_output_function_epilogue): Don't clear any of the removed
2208         variables.
2209         (sh_insert_attributes): Don't check pragma_interrupt.
2210         Insert deferred attributes.  Check that interrupt attribute is
2211         present for other attributes that require its presence.
2212         (sh_attribute_table): Add new attributes trapa_handler and
2213         nosave_low_regs.
2214         (sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
2215         Don't check for pragma_interrupt.  Don't store argument.
2216         * sh.h (pragma_interrupt, sp_switch): Don't declare.
2217         (sh_deferred_function_attributes): Declare.
2218         (sh_deferred_function_attributes_tail): Likewise.
2219         * sh.md (sp_switch_1): Add operand.  Change generator caller.
2220         (sh_pr_interrupt, sh_pr_trapa, sh_pr_nosave_low_regs): Remove.
2221         (*return_i): Don't use when trap_exit attribute is in effect.
2222         (*return_trapa): New insn pattern.
2223         * sh-c.c: New file.
2224         * config.gcc (sh[123456ble]*-* | sh-*-*): New trailer stanza,
2225         setting c_target_objs and cxx_target_objs.
2226         * t-sh: Add rule for sh-c.o.
2227
2228 2006-01-30  Richard Guenther  <rguenther@suse.de>
2229
2230         PR c++/23372
2231         * gimplify.c (gimplify_target_expr): Handle easy cases
2232         without creating a temporary.
2233
2234 2006-01-30  Nathan Sidwell  <nathan@codesourcery.com>
2235
2236         * vec.h (safe_grow): Remove duplicated line.
2237
2238 2006-01-29  Diego Novillo  <dnovillo@redhat.com>
2239
2240         PR 25874
2241         * omp-low.c (execute_expand_omp): Move CFG cleanup code ...
2242         (expand_omp): ... here.
2243         (expand_omp_parallel): Only remove barriers for combined
2244         parallel+workshare constructs.
2245
2246 2006-01-29  Eric Botcazou  <ebotcazou@adacore.com>
2247
2248         Revert
2249
2250         2005-11-09  Eric Botcazou  <ebotcazou@adacore.com>
2251         * tree.c (build_qualified_type): Chain the new type to the original
2252         type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO linked lists if it is
2253         a POINTER_TYPE or a REFERENCE_TYPE respectively.
2254         (build_pointer_type_for_mode): Only return unqualified types.
2255         (build_reference_type_for_mode): Likewise.
2256
2257 2006-01-29  Gabriel Dos Reis  <gdr@integgrable-solutions.net>
2258
2259         * configure.ac (cxx_compat_warn): Set if -Wc++-compat is supported.
2260         * Makefile.in (CXX_COMPAT_WARN): Define.
2261         * configure: Regenerate.
2262
2263 2006-01-29  Dorit Nuzman  <dorit@il.ibm.com>
2264
2265         PR tree-opt/25911
2266         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
2267         to an if check.
2268
2269 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2270
2271         * toplev.c: Fix thinko.
2272
2273 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
2274             Marcin Dalecki  <martin@dalecki.de>
2275
2276         * toplev.c (floor_log2, exact_log2): Don't define if __cplusplus.
2277         (push_srcloc): Use XNEW.
2278         (init_asm_output, default_get_pch_validity): Use XNEWVEC.
2279
2280 2006-01-29  Kenneth Zadeck <zadeck@naturalbridge.com>
2281
2282         * df-core.c (df_set_blocks): Deleted all variable.
2283
2284 2006-01-28  Ian Lance Taylor  <ian@airs.com>
2285
2286         * cgraphunit.c (cgraph_assemble_pending_functions): Call
2287         cgraph_output_pending_asms.
2288
2289 2006-01-28  Zack Weinberg  <zackw@panix.com>
2290
2291         * c.opt: Add -W(no-)overlength-strings.
2292         * doc/invoke.texi: Document it.
2293         * c-opts.c (c_common_handle_option): -pedantic implies
2294         -Woverlength-strings, if not explicitly disabled already.
2295         (c_common_post_options): -Woverlength-strings defaults to off, and
2296         is always off for C++.
2297         * c-common.c (fix_string_type): Issue warning about strings longer
2298         than is portable only if warn_overlength_strings.  Rearrange code
2299         a little for clarity.
2300         * configure.in: Check for -Wno-overlength-strings as well before
2301         enabling -pedantic in stage 1.
2302         * Makefile.in (STRICT2_WARN): Add -Wno-overlength-strings.
2303         (gcc.o-warn, insn-automata.o-warn, build/gencondmd.o-warn): Delete.
2304
2305         * genconditions.c (write_header, write_one_condition)
2306         (write_conditions, write_writer): Consolidate very long strings
2307         that were broken up to fit in C89 portable limit.  Don't use
2308         printf when fputs will do.
2309
2310 2006-01-28  Adam Nemet  <anemet@caviumnetworks.com>
2311
2312         * combine.c (simplify_comparison <AND>): Check
2313         TRULY_NOOP_TRUNCATION before start using a subreg.
2314
2315         * config/mips/mips.md (*branch_zero<mode>,
2316         *branch_zero<mode>_inverted, *branch_equality<mode>,
2317         *branch_equality<mode>_inverted, *branch_equality<mode>_mips16):
2318         Remove mode check from comparisons.
2319
2320 2006-01-28  Kenneth Zadeck <zadeck@naturalbridge.com>
2321
2322         * config/mips/mips-protos.h (mips_set_live_on_entry): Deleted.
2323
2324 2006-01-28  Kazu Hirata  <kazu@codesourcery.com>
2325
2326         * expmed.c (const_mult_add_overflow_p): Remove.
2327         * expr.h: Remove the prototype for const_mult_add_overflow_p.
2328
2329         * recog.c (validate_replace_rtx_subexp): Remove.
2330         * recog.h: Remove the prototype for
2331         validate_replace_rtx_subexp.
2332
2333         * integrate.h: Remove the prototype for
2334         copy_decl_for_inlining.
2335         * rtl.h: Remove the prototype for mark_constant_function.
2336         * tree-vectorizer.h: Remove the prototype for
2337         vect_strip_conversion.
2338
2339         * modulo-sched.c (create_partial_schedule,
2340         free_partial_schedule, reset_partial_schedule): Make them
2341         static.
2342
2343         * hooks.c (hook_bool_rtx_int_false): Remove.
2344         * hooks.h: Remove the prototype for hook_bool_rtx_int_false.
2345
2346 2006-01-28  David Edelsohn  <edelsohn@gnu.org>
2347
2348         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
2349         and -mlong-double-128 are incompatible.
2350         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
2351         * config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): Add ppc64-fp.c.
2352         (TARGET_LIBGCC2_CFLAGS): Define.
2353         * config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): Same.
2354         (TARGET_LIBGCC2_CFLAGS): Same.
2355         * config/rs6000/ppc64-fp.c: Compile for 64-bit AIX.
2356
2357 2006-01-28  Kazu Hirata  <kazu@codesourcery.com>
2358
2359         PR c/19606.
2360         * c-typeck.c (build_binary_op): Perform implicit casts of
2361         operands before shortening them.
2362
2363         * cfgloopmanip.c (split_loop_bb): Remove.
2364         * cfgloop.h: Remove the prototype for split_loop_bb.
2365
2366         * cfgloop.c (flow_loop_outside_edge_p): Remove.
2367         * cfgloop.h: Remove the prototype for
2368         flow_loop_outside_edge_p.
2369
2370         * emit-rtl.c (init_virtual_regs): Make it static.
2371         * function.h: Remove the prototype for init_virtual_regs.
2372
2373         * recog.c (peephole2_optimize): Make it static.
2374         * recog.h: Remove the prototype for peephole2_optimize.
2375
2376 2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>
2377
2378         * df-scan.c (df_record_entry_block_defs): Check if
2379         INCOMING_RETURN_ADDR_RTX is defined.
2380
2381 2006-01-27  Daniel Berlin  <dberlin@dberlin.org>
2382             Kenneth Zadeck <zadeck@naturalbridge.com>
2383
2384         PR rtl-optimization/24762
2385         * doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY.
2386         * targhooks.c (hook_void_bitmap): New hook prototype.
2387         * targhoohs.h (hook_void_bitmap): Ditto.
2388         * bitmap.h (bitmap_head_def): Moved to coretypes.h.
2389         * coretypes.h (bitmap_head_def): Moved from bitmap.h.
2390         * target.h (live_on_entry): New function pointer.
2391         * df-scan.c (df_all_hard_regs): Removed.
2392         (df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs.
2393         (df_scan_free_internal): Added df->entry_block_defs.
2394         (df_scan_alloc): Ditto.
2395         (df_scan_dump): Ditto.
2396         (df_uses_record): Plumbed flag field properly thru calls.
2397         Record EH_RETURN_DATA_REGNO in eh blocks unconditionally.
2398         This part fixes PR24762.
2399         (df_bb_refs_record): Added code to make the frame and arg
2400         pointers live in EH blocks.
2401         (df_refs_record): Added call to df_record_entry_block_defs.
2402         (df_record_entry_block_defs): New function.
2403         * df-core.c: Added comments to describe new artifical defs.
2404         * df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags.
2405         (entry_block_defs): New field in struct df.
2406         (df_all_hard_regs): Deleted.
2407         * target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY.
2408         * df-problems.c (df_ru_bb_local_compute_process_def):
2409         Added code to handle artifical defs in the entry to a function.
2410         (df_ru_bb_local_compute): Ditto.
2411         (df_rd_bb_local_compute_process_def):  Ditto.
2412         (df_rd_bb_local_compute): Ditto.
2413         (df_lr_bb_local_compute): Ditto.
2414         (df_ur_bb_local_compute): Ditto.
2415         (df_urec_bb_local_compute):  Ditto.
2416         (df_chain_create_bb):  Ditto.
2417         (df_ur_local_finalize): Removed entry.
2418         (df_urec_init): Ditto.
2419         (df_urec_local_finalize): Ditto.
2420         (df_ri_bb_compute): Added detection of last use of pseudos.
2421         * Makefile.in (df-scan.o): Updated dependencies.
2422         * config/mips/mips-protos.h (mips_set_live_on_entry): Added.
2423         * config/mips/mips.c (mips_set_live_on_entry): Added.
2424         * config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value
2425         for target hook.
2426         * dce.c (marked_insn_p): Added code to handle artifical defs.
2427
2428 2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>
2429
2430         * config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
2431         intrinsic.
2432         (_mm_cvtsi128_si64): Likewise.
2433         (_mm_cvtsd_si64): Likewise.
2434         (_mm_cvttsd_si64): Likewise.
2435         (_mm_cvtsi64_sd): Likewise.
2436         (_mm_cvtsi64_si128): Likewise.
2437         * config/i386/mmintrin.h (_m_from_int64): Likewise.
2438         (_mm_cvtsi64_m64): Likewise.
2439         (_m_to_int64): Likewise.
2440         (_mm_cvtm64_si64): Likewise.
2441         * config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
2442         (_mm_cvttss_si64): Likewise.
2443         (_mm_cvtsi64_ss): Likewise.
2444         (_mm_cvtss_f32): Likewise.
2445
2446 2006-01-27  Carlos O'Donell  <carlos@codesourcery.com>
2447
2448         * c-pragma.c (init_pragma) : Call c_register_pragma_with_expansion
2449         for pragma redefine_extname.
2450
2451 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
2452
2453         PR target/25864
2454         * libgcc-std.ver: Add GCC_4.1.0 symbol version.
2455         * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append
2456         -mno-minimal-toc to previous content.
2457         (bispecs): Remove goal.
2458         * config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h.
2459         * config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4
2460         compatibility aliases on powerpc-*-*gnu*.
2461         * config/rs6000/libgcc-ppc-glibc.ver: New file.
2462         * config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append
2463         libgcc-ppc-glibc.ver on powerpc*-*-*gnu*.
2464         (TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs.
2465         (ldblspecs): New goal.
2466         * config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed.
2467         * mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and
2468         _df_to_tf.
2469         * config/fp-bit.h (TMODES): Don't define if none of TFLOAT,
2470         L_sf_to_tf or L_df_to_tf is defined.
2471
2472 2006-01-27  David Edelsohn  <edelsohn@gnu.org>
2473             Alan Modra  <amodra@bigpond.net.au>
2474
2475         PR target/25864
2476         * config/rs6000/linux.h (POWERPC_LINUX): Define.
2477         * config/rs6000/linux64.h (POWERPC_LINUX): Define.
2478         * config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC.
2479         * config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero.
2480         * config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero.
2481         * config/rs6000/rs6000.c (rs6000_ieeequad): New variable.
2482         (rs6000_override_options): Initialize rs6000_ieeequad.
2483         Initialize TFmode format to ibm_extended_format if not
2484         TARGET_IEEEQUAD.
2485         (rs6000_handle_option): Accept -mabi= ibmlongdouble and
2486         ieeelongdouble.
2487         (rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts.
2488         (rs6000_return_in_memory): Only return IEEEQUAD in memory.
2489         (function_arg_advance): IBM long double passed in two FPRs, not
2490         split.
2491         (function_arg): IBM long double passed in FPRs.
2492         (rs6000_pass_by_reference): Only IEEEQUAD passed by reference.
2493         (rs6000_gimplify_va_arg): IBM long double passed in two FPRs.
2494         Only multireg GPR aligned.
2495         (rs6000_init_libfuncs): Enable IBM long double functions if not
2496         IEEEQUAD.
2497         (rs6000_generate_compare): Use IBM long double compare if not
2498         TARGET_IEEEQUAD.
2499         * config/rs6000/rs6000.h (rs6000_ieeequad): Declare.
2500         (TARGET_IEEEQUAD): Define.
2501         (CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if
2502         not TARGET_IEEEQUAD.
2503         * config/rs6000/rs6000.md: Enable TFmode patterns if
2504         !TARGET_IEEEQUAD.
2505         * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
2506         * config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
2507         and -mlong-double-128 are incompatible.
2508         * doc/invoke.texi (-mabi): Collect options together.  Add
2509         ibmlongdouble and ieeelongdouble.
2510
2511 2006-01-27  Richard Sandiford  <richard@codesourcery.com>
2512
2513         * doc/rtl.texi (SYMBOL_REF_DATA): Adjust documentation for new
2514         opaque type.
2515         * optabs.c (init_one_libfunc): Use SET_SYMBOL_REF_DECL.
2516         * varasm.c (make_decl_rtl, build_constant_desc): Likewise.
2517         (force_const_mem): Use SET_SYMBOL_REF_CONSTANT.
2518         * rtl.h (rtunion_def): Remove rt_ptr.
2519         (X0PTR): Delete.
2520         (SYMBOL_REF_DATA): Use X0ANY instead of X0PTR.
2521         (SET_SYMBOL_REF_DECL, SET_SYMBOL_REF_CONSTANT): New macros.
2522         * config/i386/winnt.c (i386_pe_mark_dllexport)
2523         (i386_pe_mark_dllimport): Use SET_SYMBOL_REF_DECL.
2524
2525 2006-01-27 Gabor Loki <loki@gcc.gnu.org>
2526
2527         * cfgcleanup.c (try_crossjump_to_edge): Fix comment typo.
2528
2529 2006-01-26 Alexandre Oliva  <aoliva@redhat.com>
2530
2531         PR other/24829
2532         PR target/24831
2533         * gthr-dce.h: Do not gthrw-ify pthread_once_init,
2534         pthread_key_delete.  From John David Anglin.  gthrw-ify
2535         pthread_getunique_np only if it it's not a macro.  Delete
2536         UNUSED macro.
2537         (__gthread_objc_condition_allocate, __gthread_objc_condition_deallocate,
2538         __gthread_objc_condition_wait, __gthread_objc_condition_broadcast,
2539         __gthread_objc_condition_signal, __gthread_key_delete): Add
2540         "__attribute__ ((__unused__))" to unused arguments.
2541         (__gthread_recursive_mutex_init_function): Add missing return.
2542         * gthr-dce.h, gthr-tpf.h, gthr-solaris.h, gthr-posix.h,
2543         gthr-posix95.h: Use macro-based approach for name redirection
2544         on targets missing weakref.
2545
2546 2006-01-26  Zack Weinberg  <zackw@panix.com>
2547
2548         * genconditions.c (write_header): In generated code, #ifdef out
2549         all includes and fake declarations, except includes of bconfig.h
2550         and system.h, unless GCC_VERSION >= 3001.  Do not include
2551         gensupport.h in any case.
2552         (write_conditions): Generate a definition of struct c_test.  Add
2553         a comment to the generated #endif.
2554         (write_one_condition): Escape backslashes in string too.
2555         (write_writer): Generated code must escape backslashes and quote
2556         marks (but not newlines) in the strings it writes.
2557         * Makefile.in (build/gencondmd.o): Update dependencies.
2558
2559 2006-01-26  Steve Ellcey  <sje@cup.hp.com>
2560
2561         PR target/25961
2562         * Makefile.in (insn-automata.o): Add header file dependencies.
2563         * genautomata.c: Add includes.
2564
2565 2006-01-26  Steve Ellcey  <sje@cup.hp.com>
2566
2567         PR target/25961
2568         * Makefile.in (insn-automata.o): Add -Wno-error flag.
2569
2570 2006-01-26  Paolo Bonzini  <bonzini@gnu.org>
2571
2572         * configure.ac: Expect target tools paths to be passed from the toplevel
2573         and wrap the detection into AS_SET_VAR_IF.  Extract side-effects out of
2574         AS_SET_VAR_IF.
2575         * acinclude.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL): Remove.
2576
2577 2006-01-26  Alexandre Oliva  <aoliva@redhat.com>
2578
2579         PR c/25892
2580         * c.opt (Wpointer-sign): Init to -1.
2581         * c-opts.c (c_common_handle_option): Set to 1 on OPT_Wall and
2582         OPT_pedantic, to 0 otherwise.
2583         * doc/invoke.texi: Update.
2584
2585 2006-01-26  Paolo Bonzini  <bonzini@gnu.org>
2586
2587         * config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Emit
2588         constants provided by 80387 instructions in the destination mode.
2589
2590 2006-01-26  Richard Guenther  <rguenther@suse.de>
2591             Andrew Pinski  <pinskia@physics.uc.edu>
2592
2593         PR tree-opt/21470
2594         partial PR tree-opt/17064
2595         * tree-ssa-structalias.c (intra_create_variable_infos):
2596         Create heap variables for incoming parameters if
2597         flag_argument_noalias > 1.
2598         (find_what_p_points_to): Look through default defs of
2599         parameter decls.
2600
2601 2006-01-26  Jeff Law  <law@redhat.com>
2602
2603         PR ada/25900
2604         * tree-vrp.c (extract_range_from_assert): When merging a VR_RANGE
2605         with a VR_ANTI_RANGE and the VR_ANTI_RANGE is completely contained
2606         within the VR_RANGE, use the VR_RANGE as the result, not the
2607         VR_ANTI_RANGE.
2608         (adjust_range_with_scev): Reject ranges from SCEV which are out of
2609         bounds for the type.
2610
2611 2006-01-26  Daniel Berlin  <dberlin@dberlin.org>
2612
2613         * tree-ssa-alias.c (maybe_create_global_var): Change
2614         subvar walking to an assertion that we don't have subvar'd variables.
2615
2616 2006-01-26  Andrew Pinski  <pinskia@physics.uc.edu>
2617
2618         PR C/25861
2619         * c-common.c (c_common_truthvalue_conversion) <case ADDR_EXPR>:
2620         Use a new variable, inner.  PARM_DECLs are always non-weak.
2621
2622 2006-01-26  Shantonu Sen  <ssen@opendarwin.org>
2623
2624         * tree.h (OMP_CLAUSE_SUBCODE_CHECK): Add definition for
2625         --disable-checking.
2626
2627 2006-01-26  Adam Nemet  <anemet@caviumnetworks.com>
2628
2629         * config/mips/mips.md (*clear_upper32): New combiner pattern.
2630
2631 2006-01-26  Richard Earnshaw  <richard.earnshaw@arm.com>
2632
2633         * arm.md (smaxsi3, sminsi3): Convert to define_expand.
2634         (smax_insn, smin_insn, smax_0, smin_0): New.
2635
2636 2006-01-26  Hans-Peter Nilsson  <hp@axis.com>
2637
2638         PR target/25947
2639         * config/cris/cris.c (cris_order_for_addsi3): New function.
2640         * config/cris/cris-protos.h: Prototype it.
2641         * config/cris/cris.md (split for "move.S1 [rx=rx+i],ry")
2642         (split for "move.S1 ry,[rx=rx+i]", split for "clear.[bwd] [rx=rx+i]")
2643         (split for "mov(s|u).S1 [rx=rx+i],ry", split for "op.S1 [rx=rx+i],ry")
2644         (split for "op.S1 [rx=rx+i],ry (swapped)")
2645         (split for "op(s|u).S1 [rx=rx+i],ry")
2646         (split for "op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)"):
2647         Apply cris_order_for_addsi3 when generating addsi3 insns.
2648
2649 2006-01-25  Diego Novillo  <dnovillo@redhat.com>
2650
2651         * tree.h (TREE_RANGE_CHECK): Fix range predicate.
2652         (TREE_BLOCK): Add call to EXPR_CHECK.
2653
2654 2006-01-25  Diego Novillo  <dnovillo@redhat.com>
2655
2656         PR 25886
2657         * tree-dump.c (dequeue_and_dump): Handle OMP_CLAUSE.
2658         * tree-pretty-print.c (dump_omp_clause): Extract from ...
2659         (dump_omp_clauses): ... here.
2660         (dump_generic_node): Handle OMP_CLAUSE.
2661         * tree.c (omp_clause_num_ops): New.
2662         (omp_clause_code_name): New.
2663         (tree_code_size): Handle OMP_CLAUSE.
2664         (tree_size): Likewise.
2665         (make_node): Document handling of OMP_CLAUSE.
2666         (tree_node_structure): Handle OMP_CLAUSE.
2667         (omp_clause_check_failed): New.
2668         (omp_clause_range_check_failed): New.
2669         (omp_clause_operand_check_failed): New.
2670         (build_omp_clause): New.
2671         (walk_tree): Adjust handling of OMP_CLAUSE_* nodes.
2672         * tree.h (enum omp_clause_code): Declare.
2673         (OMP_CLAUSE_SUBCODE_CHECK): Define.
2674         (OMP_CLAUSE_RANGE_CHECK): Define.
2675         (OMP_CLAUSE_ELT_CHECK): Define.
2676         (omp_clause_check_failed): Declare.
2677         (omp_clause_operand_check_failed): Declare.
2678         (omp_clause_range_check_failed): Declare.
2679         (OMP_CLAUSE_CHAIN): Do not use TREE_RANGE_CHECK.
2680         (OMP_CLAUSE_OPERAND): Use OMP_CLAUSE_RANGE_CHECK.
2681         (OMP_CLAUSE_PRIVATE_DEBUG): Use OMP_CLAUSE_SUBCODE_CHECK.
2682         (OMP_CLAUSE_LASTPRIVATE): Likewise.
2683         (OMP_CLAUSE_IF_EXPR): Likewise.
2684         (OMP_CLAUSE_NUM_THREADS_EXPR): Likewise.
2685         (OMP_CLAUSE_SCHEDULE_CHUNK_EXPR): Likewise.
2686         (OMP_CLAUSE_REDUCTION_CODE): Likewise.
2687         (OMP_CLAUSE_REDUCTION_INIT): Likewise.
2688         (OMP_CLAUSE_REDUCTION_MERGE): Likewise.
2689         (OMP_CLAUSE_REDUCTION_PLACEHOLDER): Likewise.
2690         Use tree_node.omp_clause.subcode instead of TREE_COMPLEXITY.
2691         (OMP_CLAUSE_SCHEDULE_KIND): Likewise.
2692         (OMP_CLAUSE_DEFAULT_KIND): Likewise.
2693         (OMP_CLAUSE_CODE): Define.
2694         (OMP_CLAUSE_SET_CODE): Define.
2695         (OMP_CLAUSE_CODE): Define.
2696         (OMP_CLAUSE_OPERAND): Define.
2697         (struct tree_omp_clause): Declare.
2698         (union tree_node): Add field 'omp_clause'.
2699         * treestruct.def (TS_OMP_CLAUSE): Define.
2700         * tree.def (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_SHARED
2701         OMP_CLAUSE_FIRSTPRIVATE, OMP_CLAUSE_LASTPRIVATE,
2702         OMP_CLAUSE_REDUCTION, OMP_CLAUSE_COPYIN,
2703         OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_IF,
2704         OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE,
2705         OMP_CLAUSE_NOWAIT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Remove.
2706         (OMP_CLAUSE): Define.
2707         * print-tree.c (print_node): Handle OMP_CLAUSE.
2708         * omp-low.c: Adapt all uses of OMP_CLAUSE_* nodes.
2709         * c-typeck.c: Likewise.
2710         * gimplify.c: Likewise.
2711         * c-omp.c: Likewise.
2712         * tree-nested.c: Likewise.
2713         * tree-inline.c: Likewise.
2714         * c-parser.c: Likewise.
2715         * gimple-low.c (lower_omp_directive): Do not set TREE_BLOCK on
2716         clauses.
2717
2718 2006-01-25  Roger Sayle  <roger@eyesopen.com>
2719
2720         PR rtl-optimization/25703
2721         * combine.c (try_combine): Handle zero_extract and strict_low_part
2722         of non-lowpart SUBREGs for constant reg_subword_p set optimization.
2723
2724 2006-01-25  Peter Bergner  <bergner@vnet.ibm.com>
2725
2726         * global.c: Fix comment typos.
2727
2728 2006-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
2729
2730         PR target/25758
2731         * config/i386/i386.c (output_pic_addr_const) <case SYMBOL_REF>:
2732         Use output_addr_const instead of assemble_name.
2733
2734 2006-01-25  Paolo Bonzini  <bonzini@gnu.org>
2735
2736         * Makefile.in (sched-vis.o): Update dependencies.
2737         * haifa-sched.c (sched_finish): Clear current_sched_info.
2738         * cfg.c (dump_bb_info): New, split from dump_flow_info.
2739         (dump_flow_info): Call it.
2740         * passes.c (execute_todo): Call print_rtl_slim_with_bb to make
2741         a slim RTL dump.
2742         * basic-block.h (dump_bb_info): Declare.
2743         * tree-dump.c (dump_enable_all): OR the flags of a -fdump-tree-all
2744         option, and apply options only for dump files whose TDF_RTL,
2745         TDF_TREE, or TDF_IPA bits match.
2746         * rtl.h: Declare new functions exported from sched-vis.c.
2747         * sched-vis.c: Enable also if scheduling is not used.
2748         (print_value): Print the mode of registers if not inside scheduling.
2749         (print_insn): Make it work outside the scheduler.  Beautify the output
2750         a bit.
2751         (dump_insn_slim, debug_insn_slim, print_rtl_slim_with_bb): New.
2752
2753 2006-01-25  Richard Sandiford  <richard@codesourcery.com>
2754
2755         * doc/rtl.texi (SYMBOL_REF_CONSTANT, SYMBOL_REF_DATA): Document.
2756         * gengtype.c (adjust_field_rtx_def): Garbage-collect field 2 of
2757         a SYMBOL_REF as either a tree or a constant_descriptor_rtx,
2758         depending on the value of CONSTANT_POOL_ADDRESS_P.
2759         * optabs.c (init_one_libfunc): Nullify SYMBOL_REF_DATA rather than
2760         SYMBOL_REF_DECL.
2761         * varasm.c (make_decl_rtl, build_constant_desc): Set SYMBOL_REF_DATA
2762         rather than SYMBOL_REF_DECL.
2763         (rtx_constant_pool): Remove const_rtx_sym_htab.
2764         (const_desc_rtx_sym_hash, const_desc_rtx_sym_eq): Delete.
2765         (init_varasm_status): Don't initialize const_rtx_sym_htab.
2766         (force_const_mem): Point SYMBOL_REF_DATA to the constant pool entry.
2767         Remove handling of const_rtx_sym_htab.
2768         (find_pool_constant): Delete.
2769         (get_pool_constant, get_pool_constant_mark): Use SYMBOL_REF_CONSTANT
2770         rather than find_pool_constant.
2771         (get_pool_constant_for_function): Delete.
2772         (get_pool_mode, mark_constant): Use SYMBOL_REF_CONSTANT rather than
2773         find_pool_constant.
2774         * rtl.h (rtunion_def): Add rt_constant and rt_ptr fields.
2775         (X0CONSTANT, X0PTR, SYMBOL_REF_DATA): New macros.
2776         (SYMBOL_REF_DECL): Return NULL if CONSTANT_POOL_ADDRESS_P.
2777         (SYMBOL_REF_CONSTANT): New macro.
2778         (get_pool_constant_for_function): Delete.
2779         * config/i386/winnt.c (i386_pe_mark_dllexport): Set SYMBOL_REF_DATA
2780         rather than SYMBOL_REF_DECL.
2781         (i386_pe_mark_dllimport): Likewise.
2782         * config/rs6000/rs6000.c (rs6000_emit_move): Copy SYMBOL_REF_DATA
2783         rather than SYMBOL_REF_DECL.
2784         * config/darwin.c (machopic_indirect_data_reference): Likewise.
2785         (machopic_indirect_call_target): Likewise.
2786
2787 2006-01-25  Eric Botcazou  <ebotcazou@adacore.com>
2788
2789         * flow.c (delete_noop_moves): Add missing EOL to dump message.
2790
2791 2006-01-25  Richard Sandiford  <richard@codesourcery.com>
2792
2793         * genattrtab.c (gen_bypass): Allow bypasses to contain whitespace.
2794
2795 2006-01-25  Kaz Kojima  <kkojima@gcc.gnu.org>
2796
2797         * config/sh/predicates.md (sh_register_operand): Accept CONST_DOUBLE.
2798
2799 2006-01-24  David Daney  <ddaney@avtrex.com>
2800
2801         PR java/25816
2802         * configure.ac (enable_tls): New enable option.
2803         (HAVE_AS_TLS): Don't do assembler check if enable_tls set.
2804         * configure: Regenerate.
2805         * doc/install.texi (--enable-tls): Document new option.
2806         (--disable-tls): Ditto.
2807
2808 2006-01-24  Richard Henderson  <rth@redehat.com>
2809
2810         * alias.h (ALIAS_SET_MEMORY_BARRIER): New.
2811         * alias.c (true_dependence): Respect it.
2812         (canon_true_dependence, write_dependence_p): Likewise.
2813         * builtins.c (get_builtin_sync_mem): Set it.
2814
2815 2006-01-25  Zdenek Dvorak <dvorakz@suse.cz>
2816
2817         * loop-iv.c (iv_analysis_loop_init): Use df analysis in a more
2818         efficient way.
2819
2820 2006-01-24  DJ Delorie  <dj@redhat.com>
2821
2822         * expmed.c (store_bit_field): Don't arbitrarily deny using insv
2823         for storing constants in single-bit bitfields.
2824
2825 2006-01-25  Ben Elliston  <bje@au.ibm.com>
2826
2827         * dfp.c (dfp_byte_swap): Use uint32_t and not unsigned long.
2828
2829 2006-01-24  Andrew Pinski  <pinskia@physics.uc.edu>
2830
2831         PR tree-opt/25860
2832         * tree-ssa-pre.c (phi_translate): Return NULL
2833         for AGGREGATE_TYPE's.
2834
2835 2006-01-24  Zack Weinberg  <zackw@panix.com>
2836
2837         * genautomata.c (process_state_for_insn_equiv_partition):
2838         Use xcalloc for insn_arcs_array.
2839         * vec.h (DEF_VEC_ALLOC_FUNC_I): New set of templates.
2840         (DEF_VEC_ALLOC_I): Use it, not DEF_VEC_ALLOC_FUNC_P.
2841
2842 2006-01-24  Richard Henderson  <rth@redhat.com>
2843
2844         * genextract.c (VEC_safe_set_locstr): Take VEC by reference;
2845         update all callers.
2846
2847 2006-01-23  Paolo Bonzini  <bonzini@gnu.org>
2848
2849         PR rtl-optimization/25890
2850         PR rtl-optimization/25905
2851         * combine.c (expand_compound_operation, expand_field_assignment):
2852         Fail if the bitfield's final position is out of bounds.
2853
2854 2006-01-24  Ian Lance Taylor  <ian@airs.com>
2855
2856         PR middle-end/25930
2857         * cgraphunit.c (cgraph_output_in_order): Don't clear
2858         cgraph_asm_nodes until after asm strings have been output.
2859
2860 2006-01-23  Adam Nemet  <anemet@caviumnetworks.com>
2861
2862         * fix-header.c (read_scan_file): Add new parameter imultilib when
2863         calling register_include_chains.
2864
2865 2006-01-23  Diego Novillo  <dnovillo@redhat.com>
2866
2867         * omp-low.c: Update documentation.
2868
2869 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
2870             Daniel Berlin  <dberlin@dberlin.org>
2871
2872         PR tree-opt/25315
2873         PR tree-opt/25857
2874         * tree-ssa-pre.c (insert_extra_phis): If an incomming edge is abnormal
2875         return from the function.
2876
2877 2006-01-22  Zack Weinberg  <zackw@panix.com>
2878
2879         * rtl.def (match_code): Add second argument.
2880         * genpreds.c (write_extract_subexp): New function.
2881         (write_match_code): Add path argument.  Use write_extract_subexp.
2882         (write_predicate_expr): Pass path to write_match_code.
2883         (mark_mode_tests): MATCH_CODE applied to a subexpression does
2884         not perform a mode test.
2885         * genrecog.c (compute_predicate_codes): MATCH_CODE applied to
2886         a subexpression does not constrain the top-level code set.
2887         * read-rtl.c (read_rtx_variadic): New function.
2888         (read_rtx_1): Use it; allow AND and IOR to be variadic.
2889         * doc/md.texi: Document new notation.
2890         * config/i386/predicates.md (cmpsi_operand_1): Fold into ...
2891         (cmpsi_operand): ... here, using new notation.
2892
2893 2006-01-22  Zack Weinberg  <zackw@panix.com>
2894
2895         * varray.c: Remove GENERATOR_FILE #ifdefs.
2896
2897 2006-01-22  Zack Weinberg  <zackw@panix.com>
2898
2899         * genautomata.c (output_reserved_units_table): Emit nothing if
2900         description->query_units_num is zero.  Remove extra blank line.
2901         (output_cpu_unit_reservation_p): Short circuit
2902         if description->query_units_num is zero.
2903
2904 2006-01-22  Zack Weinberg  <zackw@panix.com>
2905
2906         * genattrtab.c: Don't include genattrtab.h.  Define ATTR_NONE
2907         and ATTR_SPECIAL (from genattrtab.h).  Don't define num_dfa_decls
2908         nor any of the random handful of variables that used to be necessary
2909         when this program was linked with rtlanal.o.  Prune set of forward
2910         function declarations.
2911         (struct attr_desc): Remove static_p field.
2912         (hash_obstack, temp_obstack, attr_hash_table, attr_printf)
2913         (check_attr_test, make_internal_attr, make_numeric_value): Make static.
2914         (attr_string): Do not read the character one past the length of
2915         the string.
2916         (write_attr_get, find_attr, make_internal_attr): Don't touch static_p.
2917         (struct insn_reserv, all_insn_reservs, last_insn_reserv_p)
2918         (n_insn_reservs, gen_insn_reserv, struct bypass_list, all_bypasses)
2919         (n_bypasses, gen_bypass_1, gen_bypass, process_bypasses)
2920         (make_automaton_attrs): New.
2921         (main): Do not call into genautomata.  Call local gen_bypass
2922         and gen_insn_reserv as appropriate.  Call make_automaton_attrs.
2923         Remove special case for insn_alts.
2924         * genautomata.c: Include gensupport.h; not genattrtab.h nor
2925         varray.h (leftover from previous change).  Prune set of forward
2926         function declarations.  Remove state_alts fields from all
2927         structures.  Remove state_alts_table from struct automaton.
2928         Make everything except main static.  Do not maintain num_dfa_decls.
2929         Do not maintain state_alts fields of various structures.
2930         (process_decls): Don't validate condexp for dm_insn_reserv decls.
2931         (add_arc): Remove state_alts argument.  All callers updated.
2932         (output_reserved_units_table): Emit #ifdef here...
2933         (output_tables): ...not here.  Don't generate state_alts tables.
2934         (expand_automata): Don't generate attributes.
2935         (write_automata): Don't generate state_alts functions.
2936         (main): New function.
2937         (it_is_empty_reserv_sets, output_state_alts_full_vect_name)
2938         (output_state_alts_comb_vect_name, output_state_alts_check_vect_name)
2939         (AUTOMATON_STATE_ALTS_MACRO_NAME, INTERNAL_STATE_ALTS_FUNC_NAME)
2940         (STATE_ALTS_FUNC_NAME, INSN_DEFAULT_LATENCY_FUNC_NAME)
2941         (BYPASS_P_FUNC_NAME, output_state_alts_table)
2942         (output_automata_list_state_alts_code, output_internal_state_alts_func)
2943         (output_state_alts_func, make_insn_alts_attr, make_bypass_attr)
2944         (make_internal_dfa_insn_code_attr, make_default_insn_latency_attr):
2945         Delete.
2946         * genattr.c: Declare internal_dfa_insn_code in insn-attr.h.
2947         * genattrtab.h: Delete file.
2948         * Makefile.in (OBJS-common): Add insn-automata.o.
2949         (insn-automata.o): New rule.
2950         (simple_generated_c): Add insn-automata.c.
2951         (build/genattrtab.o, build/genautomata.o): Update dependencies.
2952         (genprogmd): Add automata.
2953         (build/genattrtab): Needs no extra objects nor libraries.
2954         (build/genautomata): Needs build/vec.o and -lm.
2955
2956 2006-01-22  Zack Weinberg  <zackw@panix.com>
2957
2958         * genautomata.c (process_state_longest_path, max_dfa_issue_rate)
2959         (output_dfa_max_issue_rate, locked_states_num): Delete.
2960         (struct automaton): Add locked_states field.
2961         (output_dead_lock_vect): Save number of locked states in
2962         automaton->locked_states.  If it is zero, don't print anything.
2963         (output_max_insn_queue_index_def): Define max_insn_queue_index const.
2964         (output_internal_dead_lock_func): Only test the dead_lock_vect
2965         for automata that have locked states.
2966         (output_statistics): Always print the number of locked states for
2967         each automaton.  Calculate total number of locked states here.
2968         (write_automata): Don't call output_dfa_max_issue_rate.
2969         * genattrtab.c: Define length_unit_log as a const variable.
2970         * genattr.c: Don't emit MAX_DFA_ISSUE_RATE.  Declare
2971         max_insn_queue_index const.
2972         * final.c (length_unit_log): Declare const.
2973         * doc/tm.texi: Remove all references to MAX_DFA_ISSUE_RATE.
2974
2975 2006-01-22  Zack Weinberg  <zackw@panix.com>
2976
2977         * genautomata.c:  Include vec.h, not varray.h.
2978         Delete vla_ptr_t, all of the VLA_PTR_ macros, and all of the
2979         VLA_HWINT_ macros.  Change vla_hwint_t to a typedef for
2980         VEC(vect_el_t,heap) *.  Convert all uses of VLA_* macros to
2981         VEC_* macros operating on appropriately typed vectors, or to
2982         malloced arrays when the size is known in advance.  Const-ify
2983         many char* variables and function arguments.  No functional changes.
2984         * Makefile.in (build/varray.o): Delete rule.
2985         (build/genattrtab): Depend on build/vec.o instead of build/varray.o.
2986         (build/genautomata.o): Depend on vec.h instead of $(VARRAY_H).
2987
2988 2006-01-22  Zack Weinberg  <zackw@panix.com>
2989
2990         * gensupport.c: Define get_insn_name and record_insn_name here.
2991         (read_md_rtx): Call record_insn_name as appropriate.
2992         * genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
2993         * genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
2994         * genpreds.c, genrecog.c: Don't define get_insn_name nor
2995         record_insn_name.
2996         * Makefile.in (BUILD_SUPPORT, BUILD_PRINT): Fold into BUILD_RTL.
2997         (BUILD_VARRAY): Delete.
2998         (genprognormal): Rename genprogmd.  Fold in all programs from
2999         genprognoprint; also attrtab.
3000         (build/genattrtab): Just mention genautomata.o and varray.o.
3001         Reorganize a bit, add comments to make the categories clearer.
3002
3003 2006-01-22  Zack Weinberg  <zackw@panix.com>
3004
3005         * genconditions.c (condition_table, add_condition): Delete.
3006         (write_conditions): Don't emit n_insn_conditions nor
3007         insn_elision_unavailable.  Issue the gcc version #ifdef here,
3008         inside the table, with no #else clause ...
3009         (write_header): ...not here.
3010         (write_writer): New function.
3011         (main): Don't initialize condition_table.  Use add_c_test.
3012         Call write_writer.
3013         * gensupport.c (init_md_reader_args_cb): Handle multiple input
3014         files on the command line.
3015         (maybe_eval_c_test): Don't check insn_elision_unavailable.
3016         Return -1 if there is no entry in the table, don't abort.
3017         (add_c_test, traverse_c_tests): New functions.
3018         * gensupport.h (insn_elision_unavailable, insn_conditions)
3019         (n_insn_conditions): Delete declarations.
3020         (add_c_test, traverse_c_tests): Declare.
3021         * read-rtl.c: Include gensupport.h.
3022         (read_conditions): New function.
3023         (read_rtx): If read_rtx_1 returns 0, treat as EOF.
3024         (read_rtx_1): If we get EOF when we were looking for an initial
3025         open paren, return 0.  Call read_conditions when appropriate.
3026         * Makefile.in: Kill BUILD_EARLY_SUPPORT and all references to
3027         dummy-conditions.o.  Eliminate references to insn-conditions.o,
3028         or change them to build/gencondmd.o, as appropriate.  Remove
3029         insn-constants.h from $(simple_generated_h) and insn-conditions.c
3030         from $(simple_generated_c).  For all files remaining in those
3031         two lists, add insn-conditions.md to the generator command line.
3032         Give insn-constants.h/s-constants their own rules.  Add rules
3033         for build/gencondmd.c, s-conditions, insn-conditions.md, s-condmd.
3034         (build/read-rtl.o): Depend on gensupport.h.
3035         (genprognormal): Include preds.
3036         (genprogearly): Rename genprognoprint; only difference is now that
3037         they don't link with $(BUILD_PRINT).
3038         * dummy-conditions.c: Delete.
3039
3040 2006-01-22  Zack Weinberg  <zackw@panix.com>
3041
3042         * genextract.c: Don't include insn-config.h.  Do include vec.h.
3043         Declare vectors of int, char, and locstr.
3044         (locstr): New typedef.
3045         (struct extraction): Make all array fields into bare pointers.
3046         (insn_name_ptr, insn_name_ptr_size): Move down by get_insn_name.
3047         (insn_code_number): Delete.
3048         (accum_extract): New struct.
3049         (VEC_safe_set_locstr, VEC_char_to_string): New functions.
3050         (gen_insn): Take insn_code_number as an argument.  Use an
3051         accum_extract structure instead of loading data directly into
3052         a struct extraction, and having to know how big it might get.
3053         (walk_rtx): Operate entirely on an accum_extract structure.
3054         (print_path): Avoid unnecessary use of printf.
3055         (print_header): New function, split out of main.  Distinguish
3056         more carefully between an unrecognizable insn and an insn that
3057         has the code number of a define_expand.
3058         (main): Pass insn_code_number to gen_insn.  Call print_header
3059         only after parsing.  Avoid unnecessary use of printf.
3060         * Makefile.in (build/vec.o): New rule.
3061         (build/genextract): Depend on build/vec.o.
3062         (build/genextract.o): Don't depend on insn-config.h.
3063
3064 2006-01-22  Zack Weinberg  <zackw@panix.com>
3065
3066         * Makefile.in: Consolidate most rules that use $(CC_FOR_BUILD) and/or
3067         $(RUN_GEN).  Use pattern rules to factor out as much boilerplate as
3068         practical.  Eliminate per-generator-program link rules.
3069
3070 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
3071
3072         PR middle-end/24437
3073         * tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
3074         with a call expr to ...
3075         * fold-const.c (fold_ternary) <case CALL_EXPR>: Here.
3076
3077 2006-01-23  Richard Guenther  <rguenther@suse.de>
3078
3079         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Add comment
3080         before make_edge with conditional EDGE_TRUE_VALUE.
3081
3082 2006-01-23  Steven Bosscher  <stevenb.gcc@gmail.com>
3083         Jan Hubicka  <jh@suse.cz>
3084         Richard Guenther  <rguenther@suse.de>
3085
3086         PR rtl-optimization/25654
3087         * cfgexpand.c (aggregate_contains_union_type): New function.
3088         (add_alias_set_conflicts): Call it.  Make sure to add conflicts
3089         for structure variables that contain a union type.
3090
3091 2006-01-23  Richard Sandiford  <richard@codesourcery.com>
3092
3093         * gengtype.c (new_structure): Return the structure.
3094         (create_option): Add an extra "next" argument.
3095         (create_field): New function.
3096         (adjust_field_rtx_def): Use create_option and create_field.
3097         Remove a now-unnecessary call to find_structure.
3098         (adjust_field_tree_def): Likewise.
3099         (note_yacc_type): Remove an unnecessary call to find_structure.
3100         * gengtype.h (new_structure): Return the structure.
3101         (create_option): Add an extra argument.
3102         * gengtype-yacc.y (type): Remove unnecessary calls to find_structure.
3103         (option): Adjust calls to create_option.
3104
3105 2006-01-22  David Edelsohn  <edelsohn@gnu.org>
3106
3107         * config/rs6000/aix.h (STACK_BOUNDARY): Define.
3108
3109 2006-01-22  Paul Brook  <paul@codesourcery.com>
3110         Peter Barada  <peter@the-baradas.com>
3111
3112         * config/m68k/m68k.md: Add Coldfire FPU support.
3113         Define FP mode macro and associated attributes.
3114         Use it for float mode patterns.
3115         * config/m68k/linux.h (FUNCTION_VALUE): Use m68k_function_value.
3116         (LIBCALL_VALUE): Use m68k_libcall_value.
3117         * config/m68k/m68k-protos.h (m68k_libcall_value): Add prototype.
3118         (m68k_function_value): Ditto.
3119         (emit_move_sequence): Ditto.
3120         * config/m68k/m68kemb.h (LIBCALL_VALUE): Use m68k_libcall_value.
3121         * config/m68k/m68k-none.h (ASM_SPEC): Add mcfv4e.
3122         * config/m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcfv4e.
3123         (MULTILIB_EXCEPTIONS): Ditto.
3124         * config/m68k/m68k.opt: Add mcfv4e.
3125         * config/m68k/m68k.c (m68k_handle_option): Handle OPT_mcfv4e.
3126         (m68k_compute_frame_layout): Include space for ColdFire FPU regs.
3127         (m68k_output_function_prologue): Save ColdFire FPU registers.
3128         (m68k_output_function_epilogue): Restore ColdFire FPU registers.
3129         (force_mode, fp_reg_operand, emit_move_sequence): New functions.
3130         (m68k_regno_mode_ok): Don't allow types larget than 8 bytes in
3131         ColdFire FPU registers.
3132         (m68k_libcall_value, m68k_function_value): New functions.
3133         * config/m68k/netbsd-elf.h (FUNCTION_VALUE): Use m68k_function_value.
3134         (LIBCALL_VALUE): Use m68k_libcall_value.
3135         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define __mcfv4e__.
3136         (MASK_COLDFIRE): Add MASK_CFV4E.
3137         (TARGET_COLDFIRE_FPU, TARGET_HARD_FLOAT, TARGET_FP_REG_SIZE): New.
3138         (MODES_TIEABLE_P): Use TARGET_HARD_FLOAT.
3139         (REG_CLASS_FROM_LETTER, PREFERRED_RELOAD_CLASS): Ditto.
3140         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Define.
3141         (GO_IF_LEGITIMATE_ADDRESS): Use it.
3142         (LEGITIMIZE_ADDRESS): Handle ColdFire FPU addresses.
3143         * doc/invoke.tex: Document -mcfv4e on m68k.
3144
3145 2006-01-22  Ranjit Mathew  <rmathew@gcc.gnu.org>
3146
3147         * doc/contribute.texi: Change CVS to SVN and update the corresponding
3148         URL.
3149
3150 2006-01-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
3151
3152         PR c++/16190
3153         * c-opts.c (c_common_handle_option): Don't include
3154         -Wnon-virtual-dtor in -Wall; enable if -Weffc++.
3155         * doc/invoke.texi (C++ Dialect Options): Document that
3156         -Wnon-virtual-dtor is no longer included in -Wall.
3157
3158 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
3159
3160         * gcov.c (print_version), gcov-dump.c (print_version),
3161         mips-tdump.c (main), mips-tfile.c (main): Update copyright notice
3162         dates.
3163
3164 2006-01-21  Kenneth Zadeck <zadeck@naturalbridge.com>
3165
3166         * df-scan.c (problem_SCAN): Added NULL reset function.
3167         (df_scan_reset_blocks): Added code to call reset block function
3168         (df_bb_refs_delete) Fixed comment.
3169         (df_insn_refs_delete): Made tolerant of deleting non existent info
3170         for dataflow problems that need to be reset.
3171         * df-core.c (df_set_blocks): Ditto.
3172         * df.h (struct df_problem): Added reset_fun.
3173         * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
3174         problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field.
3175         (df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New
3176         functions to clear out all references to def-use or use-def chains.
3177
3178 2006-01-21  Ben Elliston  <bje@au.ibm.com>
3179
3180         * varasm.c (assemble_real): Initialise data array.
3181
3182 2006-01-20  Paul Brook  <paul@codesourcery.com>
3183
3184         Merge from csl-arm-branch.
3185         2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
3186         * config/arm/arm.md (movdi): Force operands[1] to a register
3187         if we have a non-register source.
3188         (*arm_movdi, *movdf_soft_insn): Require that one of the
3189         operands be a register.
3190         * config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
3191         * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
3192
3193 2006-01-20  DJ Delorie  <dj@redhat.com>
3194
3195         * varasm.c (initialize_constant_valid_p): Allow pointers
3196         initialized from integer constants of lesser precision.
3197         (output_constant): Allow non-int-sized pointer modes to be
3198         initialized from integer constants.
3199
3200 2006-01-20  Joseph S. Myers  <joseph@codesourcery.com>
3201
3202         PR libstdc++/25524
3203         * cppdefault.h (struct default_include): Add multilib flag.
3204         * cppdefault.c (cpp_include_defaults): Set it.
3205         * c.opt (-imultilib): New option.
3206         * c-opts.c (imultilib): New.
3207         (c_common_handle_option): Handle -imultilib.
3208         (c_common_post_options): Likewise.
3209         * c-incpath.c (add_standard_paths, register_include_chains):
3210         Likewise.
3211         * c-incpath.h (register_include_chains): Add extra parameter.
3212         * gcc.c (do_spec_1): Generate -imultilib option.
3213         (The Specs Language): Update %I description.
3214         (process_command): Update copyright notice.
3215         * doc/cppopts.texi (-imultilib): Document.
3216         * doc/invoke.texi (-imultilib): Include in option summary.
3217         (%I): Update specs documentation.
3218
3219 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
3220
3221         * loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.
3222
3223 2006-01-20  Richard Sandiford  <richard@codesourcery.com>
3224
3225         * stmt.c (case_bit_test_cmp): Stabilize the sort using code
3226         label numbers.
3227
3228 2006-01-20  Richard Guenther  <rguenther@suse.de>
3229         Steven Bosscher <stevenb.gcc@gmail.com>
3230
3231         PR rtl-optimization/24626
3232         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Don't set
3233         EDGE_TRUE_VALUE if in RTL mode.
3234
3235         Revert
3236         2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
3237         * cfgrtl.c (rtl_verify_flow_info_1): Fix.
3238
3239 2006-01-20  Dirk Mueller  <dmueller@suse.com>
3240
3241         PR c++/5520
3242         * c-parser.c (c_parser_if_body): Use build_empty_stmt()
3243         instead of a special NOP marker.
3244         * c-typeck.c (c_finish_if_stmt): Remove obsoleted special
3245         NOP marker handling.
3246         * c-common.h (empty_body_warning): Add forward declaration.
3247         * c-common.c (empty_body_warning): Add (from c_finish_if_stmt).
3248         Now uses IS_EMPTY_STMT() instead of special NOP markers.
3249
3250 2006-01-20  Paul Brook  <paul@codesourcery.com>
3251
3252         * Makefile.in (lang_checks): Keep going if mkdir fails.
3253
3254 2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
3255
3256         * df-scan.c (df_scan_free_bb_info): Added basic block parameter to
3257         be able to clean out basic block when not necessary.
3258         (df_scan_free): Fixed to properly delete information if df is
3259         unused before calling df_finish.
3260         (df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
3261         df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
3262         or comment typos.
3263         (df_bb_refs_delete): New function.
3264         (df_refs_delete): Moved per block code to df_bb_refs_delete.
3265         * df-core.c (df_set_blocks): Added code to properly clean out
3266         unused blocks if they are not part of the blocks to consider.
3267         Added additional null check.
3268         (df_compact_blocks): Added basic block parameter to free_bb_fun to
3269         be able to clean out basic block when not necessary
3270         * df.h (df_free_bb_function): Ditto.
3271         (df_bb_refs_delete): New function.
3272         * df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
3273         df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
3274         basic block parameter to be able to clean out basic block when not
3275         necessary.
3276         (df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
3277         (df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
3278         Fixed to properly delete information if df is unused before
3279         calling df_finish.
3280
3281 2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
3282
3283         PR rtl-optimization/25799
3284         * df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
3285         Corrected confluence operator to remove bits from op2 before oring
3286         with op1 rather than removing bits from op1.
3287         (df_ru_transfer_function): Corrected test on wrong bitmap which
3288         caused infinite loop.  Both of these problems were introduced in
3289         the dataflow rewrite.
3290
3291 2006-01-19  DJ Delorie  <dj@redhat.com>
3292
3293         * reload1.c (find_reload_regs): Note the details of reload
3294         failures in the dump file.
3295         (spill_failure): Likewise.
3296
3297 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
3298
3299         * loop-iv.c: Include df.h and hashtab.h.
3300         (enum iv_grd_result): New enum.
3301         (DF_REF_IV, DF_REF_IV_SET): New macros.
3302         (struct biv_entry): New.
3303         (df, bivs): New global variables.
3304         (struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no,
3305         assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p):
3306         Removed.
3307         (clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr,
3308         iv_analyze_result, iv_analyze_def, biv_hash, biv_eq,
3309         analyzed_for_bivness_p, record_biv): New functions.
3310         (iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p,
3311         get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op,
3312         iv_analyze, biv_p, iv_analysis_done): Work with df representation of
3313         UD chains.
3314         (iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set
3315         analysed.
3316         (iv_number_of_iterations): Use new interface to iv analysis.
3317         * loop-unroll.c: Do not include varray.h.
3318         (analyze_iv_to_split_insn): Use new interface to iv
3319         analysis.
3320         * loop-unswitch.c (may_unswitch_on): Ditto.
3321         * df.c (df_bitmaps_free): Only work for bbs for that structures are
3322         allocated.
3323         (df_bb_modify): Realloc tables to the new index.
3324         (df_find_use): New function.
3325         * df.h (df_find_use): Declare.
3326         * optabs.c (expand_unop): Make the mode of the REG_EQUAL node be
3327         outmode.
3328         * cfgloop.h (struct rtx_iv): Remove analysed field.
3329         (iv_get_reaching_def): Removed.
3330         (iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare.
3331         * Makefile.in (loop-unroll.o): Remove VARRAY_H dependency.
3332         (loop-iv.o): Add df.h and hashtab.h dependency.
3333         * df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation.
3334
3335 2006-01-20  Alan Modra  <amodra@bigpond.net.au>
3336
3337         PR target/25668
3338         * libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended
3339         Double TFmode.
3340         (__floatundisf, __floatundidf): Likewise.
3341         * libgcc2.h (IS_IBM_EXTENDED): Define.
3342
3343 2006-01-19  DJ Delorie  <dj@redhat.com>
3344
3345         * config/m32c/m32c.h (REG_ALLOC_ORDER): Define.
3346
3347 2006-01-19  Paul Brook  <paul@codesourcery.com>
3348
3349         * gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
3350         as nothrow when unwinding tables are disabled.
3351
3352 2006-01-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3353
3354         PR testsuite/25171
3355         * c-decl.c (check_bitfield_type_and_width): Don't issue pedwarn "type
3356         of bit-field" when in system header.
3357
3358 2006-01-19  DJ Delorie  <dj@redhat.com>
3359
3360         * config/m32c/m32c.c (m32c_prepare_shift): Add code to deal with
3361         the 16 bit shift limit of the m16c.
3362
3363 2006-01-19  Andrew Pinski  <pinskia@physics.uc.edu>
3364
3365         PR target/22099
3366         * config/i386/i386.md (builtin_setjmp_receiver): Don't emit the label.
3367         * config/i386/i386.c (output_set_got): Output the label if we have one
3368         for the TARGET_DEEP_BRANCH_PREDICTION case.
3369
3370 2006-01-19  Jan Hubicka  <jh@suse.cz>
3371             H.J. Lu  <hongjiu.lu@intel.com>
3372             Evandro Menezes <evandro.menezes@amd.com>
3373
3374         * invoke.texi (generic): Document
3375         (i686) Update.
3376         * config.gcc: Make x86_64-* and i686-* default to generic tunning.
3377         * i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC,
3378         TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros.
3379         (x86_use_incdec, x86_pad_returns): New variables
3380         (TARGET_CPU_DEFAULT_generic): New constant
3381         (TARGET_CPU_DEFAULT_NAMES): Add generic.
3382         (enum processor_type): Add generic32 and generic64.
3383         * i386.md (cpu attribute): Add generic32/generic64
3384         (movhi splitter): Behave sanely when both partial_reg_dependency and
3385         partial_reg_stall are set.
3386         (K8 splitters): Enable for generic as well.
3387         * predicates.md (incdec_operand): Use TARGET_INCDEC
3388         (aligned_operand): Avoid memory mismatch stalls.
3389         * athlon.md: Enable for generic64, new patterns for 128bit moves.
3390         * ppro.md: Enable for generic32
3391         * i386.c (generic64_cost, generic32_cost): New.
3392         (m_GENERIC32, m_GENERIC64, m_GENERIC): New macros.
3393         (x86_use_leave): Enable for generic64.  (x86_use_sahf,
3394         x86_ext_80387_constants): Enable for generic32.  (x86_push_memory,
3395         x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop,
3396         x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
3397         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
3398         x86_partial_reg_dependency, x86_memory_mismatch_stall,
3399         x86_accumulate_outgoing_args, x86_prologue_using_move,
3400         x86_epilogue_using_move, x86_arch_always_fancy_math_387,
3401         x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule):
3402         Enable for generic.
3403         (x86_use_incdec, x86_pad_returns): New.
3404         (override_options): Add generic32 and generic64, translate "generic"
3405         to generic32/generic64 and "i686" to "generic32", refuse
3406         "generic32"/"generic64" as arch target.
3407         (ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon.
3408         (ix86_reorg): Honor PAD_RETURNS.
3409
3410 2006-01-19  Diego Novillo  <dnovillo@redhat.com>
3411
3412         * tree-pretty-print.c (dump_generic_node): Handle
3413         OMP_PARALLEL_FN, OMP_PARALLEL_DATA_ARG and OMP_RETURN_EXPR.
3414         * cgraph.c (cgraph_expand_queue): Rename from
3415         cgraph_analyze_queue.  Update all users.
3416         * cgraphunit.c (cgraph_assemble_pending_functions): Process
3417         cgraph_expand_queue.
3418         (cgraph_expand_all_functions): Likewise.
3419         (cgraph_finalize_pending_functions): Remove.  Update callers.
3420
3421         * tree.h (OMP_DIRECTIVE_P): Define.
3422         (OMP_PARALLEL_FN): Define.
3423         (OMP_PARALLEL_DATA_ARG): Define.
3424         (OMP_SECTIONS_SECTIONS): Define.
3425         * tree-pass.h (pass_expand_omp): Declare.
3426         * omp-low.c (struct omp_region): Declare.
3427         (struct omp_context): Remove fields 'parallel_type',
3428         'parallel_start_ix' and 'parallel_start_additional_args'.
3429         Update all users.
3430         (struct omp_for_data): Rename from struct expand_omp_for_data.
3431         (omp_regions): New static variable.
3432         (root_omp_region): New static variable.
3433         (find_omp_clause): Make static.
3434         (is_in_combined_parallel_ctx): Remove.
3435         (is_combined_parallel): New.
3436         (extract_omp_for_data): Move earlier in the file.
3437         (workshare_safe_to_combine_p): New.
3438         (get_ws_args_for): New.
3439         (determine_parallel_type): Move earlier in the file.
3440         (omp_copy_decl_2): Do not set DECL_CONTEXT of new local to the
3441         child function.
3442         (omp_copy_decl): Likewise.
3443         (create_omp_child_function): Likewise.
3444         (lookup_omp_region): New.
3445         (dump_omp_region): New.
3446         (debug_omp_region): New.
3447         (debug_all_omp_regions): New.
3448         (new_omp_region): New.
3449         (scan_omp_parallel): If parallel_nesting_level > 1, the
3450         directive is nested within another parallel directive.
3451         Set OMP_PARALLEL_FN.
3452         (scan_omp_for): Do not try to handle combined parallel+for
3453         cases.
3454         Remove FIXME comment.
3455         (scan_omp_nested): Remove.
3456         (scan_omp_1): Do not call scan_omp_nested when
3457         parallel_nesting_level is > 1.
3458         Do not change the DECL_CONTEXT of local variables found.
3459         (lookup_decl_in_outer_ctx): New.
3460         (lower_rec_input_clauses): Rename from expand_rec_input_clauses.
3461         (lower_lastprivate_clauses): Rename from expand_lastprivate_clauses.
3462         (lower_reduction_clauses): Rename from expand_reduction_clauses.
3463         (lower_copyprivate_clauses): Rename from expand_copyprivate_clauses.
3464         If CTX is nested, lookup VAR in the outer context when
3465         building copy assignment.
3466         (lower_send_clauses): Rename from expand_send_clauses.
3467         If CTX is nested, lookup VAR in the outer context when
3468         building copy assignments.
3469         (lower_send_shared_vars): Rename from expand_send_shared_vars.
3470         If CTX is nested, lookup VAR in the outer context when
3471         building copy assignments.
3472         (expand_parallel_call): Rename from build_parallel_call.
3473         Handle combined parallel+workshare cases.
3474         Re-implement to emit code into the CFG.
3475         (list2chain): New.
3476         (expand_omp_parallel): Re-implement to emit code into the CFG.
3477         Call move_sese_region_to_fn to outline the sub-graph
3478         containing the parallel region.
3479         (expand_omp_for_1): Remove.
3480         (expand_omp_for_generic): Re-implement to emit code into the
3481         CFG.
3482         (expand_omp_for_static_nochunk): Likewise.
3483         (expand_omp_for_static_chunk): Likewise.
3484         (expand_omp_for): Likewise.
3485         (expand_omp_sections): Likewise.
3486         (remove_exit_barriers): New.
3487         (expand_omp_synch): New.
3488         (expand_omp): New.
3489         (build_omp_regions_1): New.
3490         (build_omp_regions): New.
3491         (execute_expand_omp): New.
3492         (gate_expand_omp): New.
3493         (pass_expand_omp): Define.
3494         (lower_omp_sections): Rename from expand_omp_sections.
3495         Set OMP_SECTIONS_SECTIONS.
3496         (lower_omp_single_simple): Rename from expand_omp_single_simple.
3497         (lower_omp_single_copy): Rename from expand_omp_single_copy.
3498         (lower_omp_single): Rename from expand_omp_simple.
3499         (lower_omp_master): Rename from expand_omp_master.
3500         (lower_omp_ordered): Rename from expand_omp_ordered.
3501         (lower_omp_critical): Rename from expand_omp_critical.
3502         (lower_omp_for_lastprivate): Rename from expand_omp_for_lastprivate.
3503         (lower_omp_for): Re-implement.
3504         (lower_omp_parallel): Re-implement.
3505         (lower_regimplify): Rename from expand_regimplify.
3506         (lower_omp_1): Rename from expand_omp_1.
3507         If there are syntax errors in the program, replace every
3508         OpenMP directive with NOP.
3509         Call lower_omp_* instead of expand_omp_*.
3510         (lower_omp): Rename from expand_omp.
3511
3512         * tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN_EXPR.
3513         * tree-gimple.h (enum omp_parallel_type): Remove.
3514         (gimple_boolify): Declare extern.
3515         (find_omp_clause, determine_parallel_type): Remove.
3516
3517         * gimple-low.c (lower_omp_directive): New.
3518         (lower_stmt): Call it.
3519         (record_vars_into): Move from ...
3520         (record_vars): ... here.
3521         Call record_vars_into with current_function_decl.
3522
3523         * gimplify.c (struct gimplify_ctx): Remove fields
3524         combined_pre_p and combined_ctxp.  Update users.
3525         (get_formal_tmp_var): Add documentation.
3526         (gimple_boolify): Make extern.
3527         (gimplify_expr_in_ctx): Remove.  Update callers.
3528         (gimplify_omp_parallel): Do not assume that OMP_PARALLEL_BODY
3529         will always be a BIND_EXPR.
3530         (gimplify_expr): Handle OMP_RETURN_EXPR.
3531         * tree.def (BLOCK): Remove documentation about BLOCK_TYPE_TAGS.
3532         (OMP_PARALLEL): Add 3 operands.
3533         (OMP_SECTIONS): Add 1 operand.
3534         (OMP_RETURN_EXPR): Define.
3535
3536         * tree-inline.c (estimate_num_insns_1): Handle OpenMP directives.
3537         (copy_tree_r): Restore TREE_CHAIN in OMP_CLAUSE_*.
3538         * tree-iterator.c (alloc_stmt_list): Assert that we are not
3539         creating a circular free list.
3540         (free_stmt_list): Assert that we are not freeing stmt_list_cache.
3541
3542         * tree-flow.h (move_sese_region_to_fn): Declare.
3543         (record_vars_into): Declare.
3544         * tree-cfg.c (make_omp_sections_edges): New.
3545         (make_exit_edges): Handle OMP_PARALLEL, OMP_FOR, OMP_SINGLE,
3546         OMP_MASTER, OMP_ORDERED, OMP_CRITICAL, OMP_RETURN_EXPR,
3547         OMP_SECTIONS and OMP_SECTION.
3548         (is_ctrl_altering_stmt): Return true for OMP_DIRECTIVE_P.
3549         (set_bb_for_stmt): Undo change to check currently_expanding_to_rtl.
3550         (verify_stmt): Do not handle OMP_DIRECTIVE_P.
3551         (gather_blocks_in_sese_region): New.
3552         (struct move_stmt_d): Declare.
3553         (move_stmt_r): New.
3554         (move_block_to_fn): New.
3555         (move_sese_region_to_fn): New.
3556
3557         * passes.c (init_optimization_passes): Schedule
3558         pass_expand_omp after pass_init_datastructures.
3559
3560         * tree-ssa-operands.c (get_expr_operands): Handle
3561         OMP_PARALLEL, OMP_SECTIONS, OMP_FOR, OMP_RETURN_EXPR,
3562         OMP_SINGLE, OMP_MASTER, OMP_ORDERED, OMP_CRITICAL.
3563
3564 2006-01-19  Jeff Law  <law@redhat.com>
3565
3566         * tree-vrp.c (extract_range_from_assert): Refine the result range
3567         if the variable referenced by the ASSERT_EXPR has a range and
3568         either the tentative result range or the previous range is a
3569         VR_ANTI_RANGE.
3570
3571 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
3572
3573         * c-decl.c (add_flexible_array_elts_to_size): Simplify vector accesses.
3574
3575 2006-01-19  Jan Hubicka  <jh@suse.cz>
3576
3577         * tree-vect-patterns.c (vect_pattern_recog_1): Prevent parse error.
3578
3579 2006-01-19  Paolo Bonzini  <bonzini@gnu.org>
3580
3581         * combine.c (try_combine): Do not worry about MEMs wrapped by USEs.
3582         (expand_compound_operation, expand_field_assignment): Fail if the
3583         bit lengths of an extract operation are out of range.
3584         (make_extraction): Compute wanted_inner_mode based on the position
3585         and length of the extraction.  Make it extraction_mode for non-constant
3586         positions, and do not modify offset in that case.  When generating a
3587         new MEM, use a mode that can hold the extraction while keeping correct
3588         alignment.  Remove code that supported MEMs wrapped by USEs.
3589         (simplify_shift_const_1, force_to_mode) <case USE>: Remove.
3590
3591 2006-01-19  Andreas Krebbel  <krebbel1@de.ibm.com>
3592
3593         * config/s390/s390.md ("Y", "y"): New mode attribute.
3594         ("*cmpdi_ccs", "*cmpsi_ccs", "*adddi3_imm_cc", "*adddi3_carry1_cc",
3595         "*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly",
3596         "*adddi3_cc", "*adddi3_cconly", "*adddi3_cconly2", "*adddi3_64",
3597         "*addsi3_imm_cc", "*addsi3_carry1_cc",
3598         "*addsi3_carry1_cconly", "*addsi3_carry2_cc", "*addsi3_carr2_cconly",
3599         "*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
3600         "*subdi3_borrow_cc", "*subdi3_borrow_cconly", "*subdi3_cc",
3601         "*subdi3_cc2", "*subdi3_cconly", "*subdi3_cconly2", "*subdi3_64",
3602         "*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
3603         "*subsi3_cc2", "*subsi3_cconly", "*subsi3_cconly", "*subsi3_cconly2",
3604         "addsi3", "subsi3"): Insn patterns removed.
3605         ("*add<mode>3_carry1_cc", "*add<mode>3_carry1_cconly",
3606         "*add<mode>3_carry2_cc", "*add<mode>3_carry2_cconly", "*add<mode>3_cc",
3607         "*add<mode>3_cconly", "*add<mode>3_cconly2", "*add<mode>3_imm_cc",
3608         "*sub<mode>3_borrow_cc", "*sub<mode>3_borrow_cconly",
3609         "*sub<mode>3_cc", "*sub<mode>3_cc2", "*sub<mode>3_cconly",
3610         "*sub<mode>3_cconly2"): New insn patterns.
3611         ("addsi3", "subsi3"): New expanders.
3612
3613 2006-01-19  Dorit Nuzman  <dorit@il.ibm.com>
3614
3615         * Makefile.in (tree-vect-patterns.o): Add rule for new file.
3616         * tree-vect-analyze.c (vect_determine_vectorization_factor): Use
3617         existing STMT_VINFO_VECTYPE if available.
3618         (vect_mark_relevant): Add special handling for stmts that are
3619         marked as STMT_VINFO_IN_PATTERN_P.
3620         (vect_analyze_loop): Call vect_pattern_recog.
3621         * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
3622         * tree-vectorizer.h (in_pattern_p, related_stmt): New fields in
3623         stmt_info.
3624         (STMT_VINFO_IN_PATTERN_P, STMT_VINFO_RELATED_STMT): New macros.
3625         (vect_recog_func_ptr): New function-pointer type.
3626         * tree-vect-patterns.c: New file.
3627         (vect_recog_widen_sum_pattern, vect_recog_widen_mult_pattern):
3628         (vect_recog_dot_prod_pattern, vect_pattern_recog):
3629         (vect_pattern_recog_1): New functions.
3630         (vect_pattern_recog_funcs): New array of function pointers.
3631
3632         * tree-vectorizer.h (ternary_op): New enum value.
3633         * tree-vect-transform.c (vect_create_epilog_for_reduction): Added
3634         declaration. Revised documentation. Removed redundant dump prints.
3635         Removed redundant argument. Added support for reduction patterns.
3636         (vectorizable_reduction): Added support for reduction patterns.
3637         (vect_transform_stmt): Added support for patterns.
3638
3639         * expr.c (expand_expr_real_1): Added case for DOT_PROD_EXPR.
3640         * genopinit.c (udot_prod_optab, sdot_prod_optab): Initialize.
3641         * optabs.c (optab_for_tree_code): Added case for DOT_PROD_EXPR.
3642         (expand_widen_pattern_expr): New function.
3643         (init_optabs): Initialize new optabs udot_prod_optab,
3644         sdot_prod_optab.
3645         * optabs.h (OTI_sdot_prod, OTI_udot_prod): New.
3646         (sdot_prod_optab, udot_prod_optab): Define new optabs.
3647         (expand_widen_pattern_expr): New function declaration.
3648         * tree.def (DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR): New
3649         tree-codes.
3650         * tree-inline.c (estimate_num_insns_1): Added cases for new
3651         tree-codes DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
3652         * tree-pretty-print.c (dump_generic_node): Likewise.
3653         (op_prio): Likewise.
3654         (op_symbol): Added cases for WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
3655         * tree-ssa-operands.c (get_expr_operands): Added case for
3656         DOT_PROD_EXPR.
3657         * tree-vect-patterns.c (widened_name_p): New function.
3658         (vect_recog_dot_prod_pattern): Added function implementation.
3659         * tree-vect-transform.c (get_initial_def_for_reduction): Added
3660         cases for DOT_PROD_EXPR, WIDEN_SUM_EXPR.
3661         * config/rs6000/altivec.md (udot_prod<mode>, sdot_prodv8hi): New.
3662         * config/i386/sse.md (sdot_prodv8hi, udot_prodv4si): New.
3663
3664         * expr.c (expand_expr_real_1): Added case for WIDEN_SUM_EXPR.
3665         * genopinit.c (widen_ssum_optab, widen_usum_optab): Initialize.
3666         * optabs.c (optab_for_tree_code): Added case for WIDEN_SUM_EXPR.
3667         (init_optabs): Initialize new optabs widen_ssum_optab,
3668         widen_usum_optab.
3669         * optabs.h (OTI_widen_ssum, OTI_widen_usum): New.
3670         (widen_ssum_optab, widen_usum_optab): Define new optabs.
3671         * tree-vect-generic.c: (expand_vector_operations_1): Check type of
3672         use instead of type of def.
3673         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Added
3674         function implementation.
3675         * config/rs6000/altivec.md (widen_usum<mode>, widen_ssumv16qi,
3676         widen_ssumv8hi): New.
3677
3678         * doc/tm.texi (ssum_widen, usum_widen, sdot_prod, udot_prod): New
3679         patterns.
3680
3681 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
3682
3683         PR c/25805
3684         * c-decl.c (add_flexible_array_elts_to_size): New function.
3685         (finish_decl): Use it.
3686
3687 2006-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
3688
3689         * diagnostic.h: Include options.h.
3690         * config/rs6000/x-darwin (host-ppc-darwin.o): Correct the
3691         dependancies for diagnostic.h.
3692         * Makefile.in (DIAGNOSTIC_H): Add options.h.
3693
3694 2006-01-16  Daniel Berlin  <dberlin@dberlin.org>
3695
3696         * tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
3697         (ssa_ro_call_cache_valid): Ditto.
3698         * tree-ssa-alias.c (sort_tags_by_id): New function.
3699         (init_transitive_clobber_worklist): Ditto.
3700         (add_to_worklist): Ditto.
3701         (mark_aliases_call_clobbered): Ditto.
3702         (compute_tag_properties): Ditto.
3703         (set_initial_properties): Ditto.
3704         (compute_call_clobbered): Ditto.
3705         (compute_may_aliases):  Call compute_call_clobbered and grouping.
3706         (compute_flow_sensitive_aliasing): Remove clobbering related code.
3707         (compute_flow_insensitive_aliasing): Grouping now happens in our
3708         caller.
3709         (setup_pointers_and_addressables): Remove clobbering related code.
3710         (add_may_alias): Ditto.
3711         (replace_may_alias): Ditto.
3712         (get_nmt_for): Ditto.
3713         (create_global_var):
3714         (is_escape_site): Return an escape_type enumeration.
3715         * tree-flow-inline.h (is_call_clobbered):  Global var does not
3716         imply call clobbered.
3717         (mark_call_clobbered): Take a reason for marking this. Remove
3718         marking of globalness, and cache invalidation.
3719         (clear_call_clobbered): Remove cache invalidation code.
3720         * tree-dfa.c (dump_variable): If details is on, dump the reason
3721         for escaping.
3722         * tree-outof-ssa.c (create_temp): Copy escape mask from original
3723         variable.
3724         * tree-flow.h (struct ptr_info_def): Add escape mask member.
3725         (struct var_ann_d): Ditto.
3726         (enum escape_type): New.
3727         (mark_call_clobbered): Adjust prototype.
3728         * tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
3729         are never call clobbered.
3730         Record reasons for escaping.
3731         * tree-ssa-structalias.h (is_escape_site): Update prototype.
3732         * tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
3733         (ssa_ro_call_cache_valid): Ditto.
3734         (clobbered_v_may_defs): Ditto.
3735         (clobbered_vuses): Ditto.
3736         (ro_call_vuses): Ditto.
3737         (clobber_stats): New.
3738         (init_ssa_operands): Zero out clobber stats.
3739         (fini_ssa_operands): Print out clobber stats.
3740         (get_call_expr_operands): Pass callee fndecl to
3741         add_call_read_ops).
3742         (add_call_clobber_ops): Remove use of cache.
3743         Add use of PURE_CONST information.
3744         (add_call_read_ops): Remove use of cache.
3745         Add use of static not_read information.
3746
3747 2006-01-18  Alexandre Oliva  <aoliva@redhat.com>
3748
3749         Introduce TLS descriptors for i386 and x86_64.
3750         * config/i386/i386.h (TARGET_GNU2_TLS): New macro.
3751         (TARGET_ANY_GNU_TLS): New macro.
3752         (enum tls_dialect): Added TLS_DIALECT_GNU2.
3753         (struct machine_function): Add tls_descriptor_call_expanded_p.
3754         (ix86_tls_descriptor_calls_expande_in_cfun): New macro.
3755         (ix86_current_function_calls_tls_descriptor): Likewise.
3756         * config/i386/i386.c (ix86_tls_dialect): Fix typo in comment.
3757         (override_options): Introduce gnu2 tls dialect.
3758         (ix86_frame_pointer_required): Functions containing TLSCALLs are
3759         not leaves.
3760         (ix86_select_alt_pic_regnum, ix86_compute_frame_layout):
3761         Likewise.
3762         (legitimize_tls_address): Adjust logic for GNU2 TLS.
3763         (ix86_init_machine_status): Initialize new field.
3764         (ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS.
3765         (ix86_tls_module_base): New.
3766         * config/i386/i386-protos.h (ix86_tls_module_base): Declare it.
3767         * config/i386/i386.md (UNSPEC_TLSDESC): New constant.
3768         (tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS.
3769         (tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise.
3770         (tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns.
3771         (*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise.
3772         (tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise.
3773         (*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise.
3774         * config/i386/predicates.md (tls_modbase_operand): New.
3775         (tp_or_register_operand): New.
3776
3777 2006-01-18  Daniel Berlin  <dberlin@dberlin.org>
3778
3779         * ipa-reference.c (check_operand):  Allow FUNCTION_DECL.
3780         (look_for_address_of): Ditto.
3781         (ipa_init): Walk the function decls.
3782         (static_execute): Don't set readonly on FUNCTION_DECL's.
3783
3784 2006-01-18  Roger Sayle  <roger@eyesopen.com>
3785
3786         * config/i386/i386.md (shift spliter): Fix a a typo in the splitter
3787         for shifts where the source and destination registers are different.
3788
3789 2006-01-18  Paul Brook  <paul@codesourcery.com>
3790
3791         Merge from csl-arm-branch.
3792         2005-03-14  Julian Brown  <julian@codesourcery.com>
3793         * config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
3794         (aeabi_llsl): Likewise.
3795         (ashrdi3): Likewise.
3796         (aeabi_lasr): Likewise.
3797         (lshrdi3): Likewise.
3798         (aeabi_llsr): Likewise.
3799         2005-03-10  Julian Brown  <julian@codesourcery.com>
3800         * config.gcc: Disable shared libgcc for SymbianOS.
3801         * config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.
3802
3803 2006-01-18  DJ Delorie  <dj@redhat.com>
3804
3805         * c-pragma.c (handle_pragma_diagnostic): New.
3806         (init_pragma): Register it.
3807         * doc/extend.texi: Document it.
3808
3809         * diagnostic.def: Add DK_UNSPECIFIED and DK_IGNORED.
3810         * diagnostic.h (diagnostic_classify_diagnostic): Declare.
3811         (diagnostic_context): Add classify_diagnostic[].
3812         * diagnostic.c (diagnostic_count_diagnostic): Don't count warnings
3813         as errors if they're overridden to DK_WARNING.
3814         (diagnostic_initialize): Initialize classify_diagnostic[].
3815         (diagnostic_set_kind_override): New.
3816         (diagnostic_report_diagnostic): Check for kind changes.
3817         * opts.c (common_handle_option): Take lang_mask.  Update callers.
3818         Handle OPT_Werror_.
3819         * common.opt (Werror=): New.
3820         * doc/invoke.texi: Document -Werror=*
3821
3822 2006-01-18  Jeff Law  <law@redhat.com>
3823
3824         * tree-vrp.c (test_for_singularity): Correct test for new
3825         min limit.  Use operand_equal_p rather than pointer equality
3826         for testing if new min/max values are equal.
3827
3828         * tree-ssa-propagate.c (substitute_and_fold): Delay simplifications
3829         using range information until after propagation and folding.
3830
3831 2006-01-18  Richard Henderson  <rth@redhat.com>
3832             Aldy Hernandez  <aldyh@redhat.com>
3833             Jakub Jelinek  <jakub@redhat.com>
3834             Diego Novillo  <dnovillo@redhat.com>
3835
3836         * omp-low.c: New file.
3837         * c-omp.c: New file.
3838
3839 2006-01-18  Richard Henderson  <rth@redhat.com>
3840             Jakub Jelinek  <jakub@redhat.com>
3841             Diego Novillo  <dnovillo@redhat.com>
3842
3843         * doc/invoke.texi: Document -fopenmp.
3844         * tree-dump.h (debug_function): Declare.
3845         * hooks.c (hook_bool_tree_bool_false): New function.
3846         (hook_tree_tree_null): Remove.
3847         (hook_tree_tree_tree_null): New.
3848         * hooks.h: Update to match.
3849         * tree-pretty-print.c (debug_tree_chain): New.
3850         (print_generic_expr): Handle TDF_CHAIN.
3851         (dump_generic_node): Handle BLOCK.
3852         Do not abort with incomplete SWITCH_EXPRs.
3853         Do not dump body of an OpenMP directive if TDF_SLIM is given.
3854         <case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
3855         print space after directive name.
3856         <OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
3857         Handle OMP_MASTER and OMP_ORDERED.
3858         Handle printing of OMP_BODY just in one place, goto
3859         dump_omp_body in the rest of OMP_* nodes that have
3860         OMP_BODY.
3861         Don't handle clause nodes here.  Update omp statements to
3862         use dump_omp_clauses.
3863         Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
3864         OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
3865         OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
3866         GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
3867         GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
3868         GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
3869         Adjust output for GOMP_PARALLEL.
3870         (dump_omp_clauses): New.
3871         (print_declaration): Dump DECL_VALUE_EXPR.
3872         (op_symbol_1): Split out of op_symbol.
3873         (dumping_stmts): Remove.  Update all users.
3874         * cgraph.c (cgraph_analyze_queue): New.
3875         (cgraph_add_new_function): New.
3876         * cgraph.h (cgraph_analyze_queue): Declare.
3877         (cgraph_add_new_function): Declare.
3878         (cgraph_lower_function): Remove.
3879         * tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
3880         nodes.  Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
3881         and TYPE_P nodes in its default clause.
3882         (empty_body_p): New.
3883         (tree_range_check_failed): New.
3884         (build5_stat): New.
3885         * tree.h (OMP_CLAUSE_REDUCTION_INIT,
3886         OMP_CLAUSE_REDUCTION_MERGE,
3887         OMP_CLAUSE_REDUCTION_PLACEHOLDER,
3888         OMP_CLAUSE_PRIVATE_DEBUG,
3889         OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
3890         OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
3891         OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
3892         OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
3893         OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
3894         OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
3895         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
3896         OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
3897         OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
3898         OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
3899         OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
3900         OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
3901         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
3902         OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
3903         (TREE_RANGE_CHECK): New.
3904         (empty_body_p): Declare.
3905         (enum omp_clause_default_kind): New.
3906         (build_string_literal): Declare.
3907         (enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
3908         (build5_stat, build5): Declare.
3909         * tree-pass.h (TDF_CHAIN): Define.
3910         * tree-pass.h (PROP_gimple_lomp): Define.
3911         (pass_lower_omp): Declare.
3912         * diagnostic.h (debug_tree_chain): Declare.
3913         * builtins.c (get_builtin_sync_mode): Use 0 as last argument to
3914         mode_for_size.
3915         (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
3916         * builtins.c (build_string_literal): Make extern.
3917         * gcc.c (include_spec_function): New.
3918         (static_spec_functions): Add it.
3919         (main): Move load of libgomp.spec ...
3920         (LINK_COMMAND_SPEC): ... here.
3921         (link_gomp_spec): New.
3922         (static_specs): Include it.
3923         (LINK_COMMAND_SPEC): Add link_gomp.
3924         (GOMP_SELF_SPECS): New.
3925         (driver_self_specs): Include it.
3926         (switch_matches): Don't mark inline.
3927         (main): Load libgomp.spec.
3928         * tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
3929         OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
3930         and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
3931         * tree-gimple.h (enum omp_parallel): Declare.
3932         (determine_parallel_type): Declare.
3933         (omp_firstprivatize_variable): Declare.
3934         (omp_reduction_init): Declare.
3935         (diagnose_omp_structured_block_errors): Declare.
3936         (struct walk_stmt_info): Add want_return_expr.
3937         (struct walk_stmt_info): Add want_bind_expr, want_locations.
3938         (find_omp_clause): Declare.
3939         (insert_field_into_struct): Declare.
3940         (struct walk_stmt_info): Move from tree-nested.c
3941         (walk_stmts): Declare.
3942         * c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
3943         to 200505.
3944         * cgraphunit.c (cgraph_lower_function): Make static.
3945         (cgraph_finalize_pending_functions): New.
3946         (cgraph_finalize_function): Call it.
3947         (cgraph_finalize_compilation_unit): Likewise.
3948         * builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
3949         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
3950         (BT_FN_UINT_UINT): New.
3951         (DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
3952         DEF_FUNCTION_TYPE_VAR_4): Document.
3953         (BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
3954         BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
3955         BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
3956         BT_FN_VOID_OMPFN_PTR_UINT_UINT,
3957         BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
3958         BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
3959         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
3960         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
3961         * builtins.def: Update DEF_BUILTIN comment to include COND argument.
3962         Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
3963         into separate files.
3964         (DEF_GOMP_BUILTIN): New.
3965         (BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
3966         BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
3967         BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
3968         BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
3969         BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
3970         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
3971         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
3972         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
3973         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
3974         BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
3975         BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
3976         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
3977         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
3978         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
3979         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
3980         BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
3981         BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
3982         BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
3983         BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
3984         BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
3985         BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
3986         BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
3987         BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
3988         BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
3989         BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
3990         BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
3991         * sync-builtins.def: New file, moved from builtins.def.
3992         * omp-builtins.def: New file, moved from builtins.def.
3993         * c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
3994         * gimple-low.c (lower_function_body): Clear data.
3995         (lower_stmt): Do not handle COMPOUND_EXPR.
3996         Remove call to print_node_brief.
3997         * c-tree.h (c_finish_omp_clauses): New prototype.
3998         (C_DECL_THREADPRIVATE_P): Define.
3999         (lookup_name_no_remap, c_omp_remap_private): Remove
4000         (c_begin_omp_parallel, c_finish_omp_parallel): Update.
4001         (check_for_loop_decls): Update decl.
4002         (lookup_name_no_remap, c_omp_remap_private): Declare.
4003         (build_indirect_ref, build_modify_expr, pushdecl,
4004         pushdecl_top_level): Move to c-common.h.
4005         * dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
4006         before the switch, but just in the 2 places that need it.
4007         * c-decl.c (diagnose_mismatched_decls): Do not check for
4008         mismatched thread-local attributes when OLDDECL is marked
4009         threadprivate and NEWDECL has no thread-local attributes.
4010         (merge_decls): Merge C_DECL_THREADPRIVATE_P.
4011         (c_gimple_diagnostics_recursively): Rename from
4012         c_warn_unused_result_recursively.  Invoke
4013         diagnose_omp_structured_block_errors.
4014         (check_for_loop_decls): Return a singular decl found.
4015         * langhooks.c (lhd_omp_predetermined_sharing): Return
4016         OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
4017         (lhd_omp_firstprivatize_type_sizes): New.
4018         (lhd_omp_assignment): New.
4019         (lhd_omp_predetermined_sharing): New.
4020         * langhooks.h (struct gimplify_omp_ctx): Forward declare.
4021         (struct lang_hooks_for_types): Add
4022         omp_firstprivatize_type_sizes, omp_privatize_by_reference,
4023         omp_predetermined_sharing, omp_disregard_value_expr,
4024         omp_private_debug_clause, omp_clause_default_ctor,
4025         omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
4026         (c_finish_omp_clauses): New.
4027         (c_finish_bc_stmt): Diagnose break within omp for.
4028         (c_begin_omp_parallel, c_finish_omp_parallel): New.
4029         (build_unary_op): Return error_mark after reporting
4030         a readonly_error.
4031         (build_modify_expr): Likewise.
4032         * gimplify.c: Include optabs.h and pointer-set.h.
4033         (enum gimplify_omp_var_data): Declare.
4034         (struct gimplify_omp_ctx): Declare.
4035         (struct gimplify_ctx): Add fields prev_context, combined_pre_p
4036         and combined_ctxp.
4037         (gimplify_ctxp, gimplify_omp_ctxp): New local variables.
4038         (push_gimplify_context, pop_gimplify_context): Allow nesting.
4039         (splay_tree_compare_decl_uid): New.
4040         (new_omp_context): New.
4041         (delete_omp_context): New.
4042         (gimple_add_tmp_var): Call omp_add_variable.
4043         (gimplify_bind_expr): Likewise.
4044         (gimplify_var_or_parm_decl): If omp_notice_variable returned
4045         true, disregard DECL_VALUE_EXPR on the decl if any.
4046         (gimplify_expr_in_ctx): New.
4047         (omp_firstprivatize_variable, omp_firstprivatize_type_sizes
4048         omp_add_variable, omp_notice_variable, omp_is_private
4049         gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
4050         gimplify_adjust_omp_clauses, gimplify_omp_parallel
4051         gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
4052         gimplify_omp_atomic_fetch_op, goa_stabilize_expr
4053         gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
4054         gimplify_omp_atomic): New.
4055         (gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
4056         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
4057         OMP_CRITICAL and OMP_ATOMIC.
4058         (gimplify_body): Verify gimplify_ctxp is empty after gimplification.
4059         * c-pragma.h (enum pragma_kind): Add
4060         PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
4061         PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
4062         PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
4063         PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
4064         PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
4065         PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
4066         PRAGMA_OMP_THREADPRIVATE.
4067         * tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
4068         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
4069         OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
4070         OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
4071         OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
4072         OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
4073         OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
4074         OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
4075         OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
4076         * print-tree.c (print_node): Dump DECL_VALUE_EXPR.
4077         * tree-ssa-dce.c (find_control_dependence): Do not assume that
4078         ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
4079         * tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
4080         OpenMP directives.
4081         (struct nesting_info): Add field_map,
4082         suppress_expansion, debug_var_chain.
4083         (create_nesting_tree): Initialize them.
4084         (lookup_field_for_decl): Use field_map.
4085         (get_nonlocal_debug_decl, get_local_debug_decl): New.
4086         (convert_local_omp_clauses): New.
4087         (finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
4088         (walk_body): Split out of walk_function.
4089         (convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
4090         (convert_nonlocal_reference): Handle omp statements.
4091         (convert_local_reference): Likewise.
4092         (unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
4093         (unnest_nesting_tree): New.
4094         (lower_nested_functions): Call it.
4095         (insert_field_into_struct): Make extern.
4096         (struct walk_stmt_info): Move to tree-gimple.h.
4097         (walk_stmts): Make extern.
4098         * omp-builtins.def: New file.
4099         * tree-iterator.c (expr_only): Clarify comment.
4100         * c-common.h (pushdecl_top_level, pushdecl,
4101         build_modify_expr, build_indirect_ref,
4102         c_finish_omp_master, c_finish_omp_critical,
4103         c_finish_omp_ordered, c_finish_omp_barrier,
4104         c_finish_omp_atomic, c_finish_omp_flush,
4105         c_finish_omp_for, c_split_parallel_clauses,
4106         omp_clause_default_kind, c_omp_sharing_predetermined,
4107         c_omp_remap_decl): Declare.
4108         * Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
4109         (OBJS-common): Add omp-low.o.
4110         (c-omp.o, omp-low.o): Add.
4111         (gimplify.o): Add dependency on $(OPTABS_H).
4112         (GTFILES): Add omp-low.c.
4113         (gt-stringpool.h): Add.
4114         * tree-cfg.c (set_bb_for_stmt): Do not update the
4115         block-to-labels map if we are currently expanding to RTL.
4116         (tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
4117         checks.
4118         Handle IDENTIFIER_NODE.
4119         (tree_verify_flow_info): Do not ICE when emitting error
4120         messages about invalid labels.
4121         (dump_function_to_file): Reset CFUN before emitting the body
4122         of the function.
4123         (debug_function): New.
4124         * passes.c (init_optimization_passes): Schedule
4125         pass_lower_omp.
4126         * langhooks-def.h (lhd_omp_predetermined_sharing,
4127         lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
4128         Declare.
4129         (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
4130         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
4131         (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
4132         LANG_HOOKS_OMP_PREDETERMINED_SHARING,
4133         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
4134         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
4135         LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
4136         LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
4137         LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
4138         LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
4139         (LANG_HOOK_DECLS): Use them.
4140
4141 2006-01-18  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
4142             Richard Henderson  <rth@redhat.com>
4143             Jakub Jelinek  <jakub@redhat.com>
4144             Diego Novillo  <dnovillo@redhat.com>
4145
4146         * c-parser.c (pragma_omp_clause): Define.
4147         (c_parser_declaration_or_fndef): Document OpenMP syntax.
4148         (c_parser_compound_statement): Likewise.
4149         (c_parser_statement): Likewise.
4150         (c_parser_pragma): Handle omp pragmas.
4151         (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
4152         OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
4153         (c_parser_omp_clause_name, check_no_duplicate_clause,
4154         c_parser_omp_variable_list,
4155         c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
4156         c_parser_omp_clause_copyprivate,
4157         c_parser_omp_clause_default,
4158         c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
4159         c_parser_omp_clause_lastprivate,
4160         c_parser_omp_clause_nowait,
4161         c_parser_omp_clause_num_threads,
4162         c_parser_omp_clause_ordered, c_parser_omp_clause_private,
4163         c_parser_omp_clause_reduction,
4164         c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
4165         c_parser_omp_all_clauses, c_parser_omp_structured_block,
4166         c_parser_omp_atomic, c_parser_omp_barrier,
4167         c_parser_omp_critical, c_parser_omp_flush,
4168         c_parser_omp_for_loop, c_parser_omp_for,
4169         c_parser_omp_master, c_parser_omp_ordered,
4170         c_parser_omp_sections_scope, c_parser_omp_sections,
4171         c_parser_omp_parallel, c_parser_omp_single,
4172         c_parser_omp_construct, c_parser_omp_threadprivate): New.
4173         * c-pragma.c (init_pragma): Do omp pragma registration here.
4174         * c.opt (fopenmp): New flag.
4175
4176 2006-01-18  Eric Christopher  <echristo@apple.com>
4177
4178         * gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
4179         * config/darwin.h (GOMP_SELF_SPECS): Define.
4180
4181 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
4182
4183         * rtl.h: Remove the prototype for reg_alloc.
4184
4185 2006-01-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4186
4187         PR target/25731
4188         * config.gcc (hppa*-*-linux*, hppa[12]*-*-hpux10*, hppa*64*-*-hpux11*,
4189         hppa[12]*-*-hpux11*): Override default shared libgcc version for both
4190         sjlj and dwarf2 exception handling.
4191         * pa/t-hpux-shlib (SHLIB_SOVERSION): New make variable.
4192         Rework to allow overriding SHLIB_EXT and SHLIB_SOVERSION.
4193         * pa/pa.c (function_value): Treat complex and vector types as
4194         aggregates.
4195         (function_arg): Likewise.  Only pass scalar floats in the floating
4196         point argument registers.
4197         * pa/t-slibgcc-dwarf-ver: New file.
4198         * pa/t-slibgcc-sjlj-ver: New file.
4199         * pa/t-slibgcc-elf-ver: Delete file.
4200
4201 2006-01-19  Alan Modra  <amodra@bigpond.net.au>
4202
4203         * config/rs6000/rs6000.c (rs6000_assemble_integer): Correct
4204         unlikely_test_section_p test.
4205
4206 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
4207
4208         * mode-switching.c (optimize_mode_switching): Make it static.
4209         * basic-block.h: Remove the prototype for
4210         optimize_mode_switching.
4211
4212         * modulo-sched.c (sms_schedule): Make it static.
4213         * rtl.h: Remove the prototype for sms_schedule.
4214
4215         * postreload-gcse.c (gcse_after_reload_main): Make it static.
4216         * rtl.h: Remove the prototype for gcse_after_reload_main.
4217
4218         * reg-stack.c (reg_to_stack): Make it static.
4219         * rtl.h: Remove the prototype for reg_to_stack.
4220
4221         * regrename.c (regrename_optimize, copyprop_hardreg_forward):
4222         Make them static.
4223         * rtl.h: Remove the prototypes for regrename_optimize and
4224         copyprop_hardreg_forward.
4225
4226 2006-01-18  Eric Botcazou  <ebotcazou@adacore.com>
4227
4228         * config/alpha/alpha.c (alpha_split_tfmode_pair): Rename into
4229         alpha_split_tmode_pair.  Add 'mode' and 'fixup_overlap' arguments.
4230         Test against the appropriate null constant for the mode.
4231         If 'fixup_overlap' is true, swap the operands if they overlap.
4232         (alpha_split_tfmode_frobsign): Adjust call to alpha_split_tfmode_pair.
4233         * config/alpha/alpha-protos.h (alpha_split_tfmode_pair): Rename into
4234         alpha_split_tmode_pair and adjust for above change.
4235         * config/alpha/alpha.md (movtf_internal): Adjust call to
4236         alpha_split_tfmode_pair and rely on it to swap the operands.
4237         (movti_internal): New insn and post-reload splitter.
4238         (movti): New expander.
4239
4240 2006-01-18  Philippe De Muyter  <phdm@macqel.be>
4241
4242         * config/m68k/m68k.md (*addsi3_5200): Allow addq/subq to memory
4243         operands.
4244
4245 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
4246
4247         * rtlanal.c (global_reg_mentioned_p_1,
4248         global_reg_mentioned_p): Remove.
4249         * rtl.h: Remove the prototype for global_reg_mentioned_p.
4250
4251         * flow.c (initialize_uninitialized_subregs): Make it static.
4252         * rtl.h: Remove the prototype for
4253         initialize_uninitialized_subregs.
4254
4255         * function.c (instantiate_virtual_regs): Make it static.
4256         * function.h: Remove the prototype for
4257         instantiate_virtual_regs.
4258
4259         * regmove.c (regmove_optimize, combine_stack_adjustments):
4260         Make them static.
4261         * rtl.h: Remove the prototypes for regmove_optimize and
4262         combine_stack_adjustments.
4263
4264 2006-01-17  Roger Sayle  <roger@eyesopen.com>
4265
4266         * config/i386/i386.c (COSTS_N_BYTES): New macro.
4267         (size_cost): Encode costs in bytes so that a reg-reg addition is
4268         equivalent to COSTS_N_INSNS(1).
4269         (override_options): Use the size_cost.branch_cost as the default
4270         ix86_branch_cost when optimizing for size.
4271
4272 2006-01-18  Ben Elliston  <bje@au.ibm.com>
4273
4274         * Makefile.in (D32PBIT_FUNCS): New.
4275         (D64PBIT_FUNCS, D128PBIT_FUNCS): Likewise.
4276         (libgcc.mk): Set D32PBIT, D64PBIT, D128PBIT, D32PBIT_FUNCS,
4277         D64PBIT_FUNCS and D128PBIT_FUNCS.
4278         (LIBGCC_DEPS): Include $(D32PBIT), $(D64PBIT), $(D128PBIT).
4279         * mklibgcc.in Bring in the DFP support code if D32PBIT, D64PBIT or
4280         D128PBIT are set.
4281         (decnumber_dep): Define.
4282         * doc/libgcc.texi (Decimal float library routines): New node.
4283         * config/dfp-bit.h, config/dfp-bit.c: New files.
4284
4285 2006-01-18  Ben Elliston  <bje@au.ibm.com>
4286
4287         * expr.c (emit_move_change_mode): Always adjust addresses, not
4288         just during reload.  Copy replacements only during reload.
4289         (emit_move_insn_1): Move MODE_DECIMAL_FLOAT modes by invoking
4290         emit_move_via_integer.
4291
4292 2006-01-17  Shantonu Sen  <ssen@opendarwin.org>
4293
4294         * Makefile.in (check-%, check-consistency): Use $${srcdir}
4295         instead of $(srcdir) and ${srcdir}.
4296
4297 2006-01-17  Richard Earnshaw  <rearnsha@arm.com>
4298
4299         PR target/592
4300         PR middle-end/11135
4301         * arm.h (struct machine_function): Add pic_reg.
4302         * arm.c (arm_pic_register): Make unsigned.
4303         (arm_override_options): Only set arm_pic_register if
4304         TARGET_SINGLE_PIC_BASE.
4305         (use_return_insn): Only test for a pic register if it is fixed.
4306         (arm_compute_save_reg0_reg12_mask): Likewise.
4307         (thumb_compute_save_reg_mask): Likewise.
4308         (legitimate_pic_operand): Factor out some known invariants.
4309         (legitimize_pic_address): If we don't have a fixed pic register,
4310         then set up a pseudo in the function entry sequence.  Handle the
4311         pic base being in a pseudo.
4312         (arm_load_pic_register): Handle the pic register being in a pseudo.
4313         (arm_expand_prologue): Only set up the pic register if it is fixed.
4314         (thumb_expand_prologue): Likewise.
4315         * arm.md (pic_load_addr_based): Handle the pic base being a pseudo.
4316         (pic_load_addr_based_insn): Likewise.
4317         (builtin_setjmp_receiver): Don't restore the pic base if it isn't
4318         fixed.
4319
4320 2006-01-18  Ben Elliston  <bje@au.ibm.com>
4321
4322         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
4323         decimal float modes for all floating point registers.
4324
4325         * config/rs6000/predicates.md (reg_or_mem_operand): Pair up
4326         match_code "mem" with match_test "macho_lo_sum_memory_operand".
4327
4328 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
4329
4330         PR c/25682
4331         * c-typeck.c (build_unary_op): Fold offsetof-like expressions
4332         even when the pointer is not NULL.
4333
4334 2006-01-16  Ian Lance Taylor  <ian@airs.com>
4335
4336         * common.opt (ftoplevel-reorder): New option.
4337         * cgraph.c (cgraph_asm_nodes): New global variable.
4338         (cgraph_asm_last_node): New static variable.
4339         (cgraph_order): New global variable.
4340         (cgraph_create_node): Set new order field.
4341         (cgraph_varpool_node): Likewise.
4342         (decide_is_variable_needed): Return true if not
4343         flag_toplevel_reorder.
4344         (cgraph_add_asm_node): New function.
4345         * cgraph.h (struct cgraph_node): Add order field.
4346         (struct cgraph_varpool_node): Add order field.
4347         (struct cgraph_asm_node): Define.
4348         (cgraph_asm_nodes, cgraph_order): Declare.
4349         (cgraph_add_asm_node): Declare.
4350         * cgraphunit.c (cgraph_varpool_assemble_decl): New static
4351         function.
4352         (cgraph_varpool_assemble_pending_decls): Call it.
4353         (cgraph_output_pending_asms): New static function.
4354         (cgraph_finalize_compilation_unit): Call it.
4355         (struct cgraph_order_sort): Define.
4356         (cgraph_output_in_order): New static function.
4357         (cgraph_optimize): Call cgraph_output_pending_asms.  Add code for
4358         !flag_toplevel_reorder case.
4359         * c-parser.c: Include "cgraph.h".
4360         (c_parser_asm_definition): Call cgraph_add_asm_node rather than
4361         assemble_asm.
4362         * Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
4363         than -fno-unit-at-a-time.
4364         * doc/invoke.texi (Option Summary): Mention
4365         -fno-toplevel-reorder.
4366         (Optimize Options): Document -fno-toplevel-reorder.  Mention it in
4367         -funit-at-a-time documentation.
4368
4369 2006-01-17  Hans-Peter Nilsson  <hp@axis.com>
4370             Kazu Hirata  <kazu@codesourcery.com>
4371
4372         * Makefile.in (FUNCTION_H, LAMBDA_H): Use $(TREE_H), not tree.h.
4373
4374 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
4375
4376         * Makefile.in (FUNCTION_H): New.  Use it instead of
4377         function.h throughout the file.
4378         * function.h: Include tree.h.
4379
4380 2006-01-17  Ben Elliston  <bje@au.ibm.com>
4381
4382         * recog.c: Separate some functions with whitespace.
4383
4384 2006-01-16  Richard Henderson  <rth@redhat.com>
4385
4386         Merge from gomp branch:
4387         * Makefile.in (TREE_INLINE_H): New.  Use it as needed.
4388         * tree-inline.h (struct copy_body_data): Move from tree-inline.c
4389         and rename from struct inline_data.  Rename callee* to dst*;
4390         caller* to src*; add copy_decl hook, transform_call_graph_edges,
4391         transform_new_cfg, transform_return_to_modify, and
4392         transform_lang_insert_block flags; remove cloning_p, versioning_p,
4393         update_clones_p.
4394         (copy_body_r, insert_decl_map, remap_decl, remap_type): Declare.
4395         (copy_decl_for_dup): Remove.
4396         * tree-inline.c (struct inline_data): Move to header.
4397         (insert_decl_map): Export.
4398         (remap_decl): Update for member name changes.  Use copy_decl hook.
4399         Allow for replacement to be a non-decl.  Remove dead code.
4400         (remap_type_1): Check for existing mapping.
4401         (remap_type): Export.
4402         (remap_decls): Update for member name changes.
4403         (remap_block, copy_bb, copy_cfg_body, copy_generic_body): Likewise.
4404         (copy_body, setup_one_parameter, declare_return_variable): Likewise.
4405         (expand_call_inline, optimize_inline_calls, clone_body): Likewise.
4406         (copy_tree_r, mark_local_for_remap_r, unsave_expr_now): Likewise.
4407         (tree_function_versioning, build_duplicate_type): Likewise.
4408         (copy_body_r): Likewise.  Export.
4409         (copy_decl_for_dup): Split into ...
4410         (copy_decl_for_dup_finish, copy_decl_to_var,
4411         copy_decl_no_change, copy_decl_maybe_to_var): ... these.
4412         (replace_ref_tree, inlining_p): Remove.
4413
4414 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
4415
4416         * ifcvt.c (if_convert): Make it static.
4417         * rtl.h: Remove the prototype for if_convert.
4418
4419         * local-alloc.c (local_alloc): Make it static.
4420         * rtl.h: Remove the prototype for local_alloc.
4421
4422         * loop.c (loop_optimize): Make it static.
4423         * cfgloop.h: Remove the prototype for loop_optimize.
4424         * rtl.h: Likewise.
4425
4426 2006-01-16  DJ Delorie  <dj@redhat.com>
4427
4428         * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
4429         mems.
4430
4431 2006-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4432
4433         * pa.md: Disparage copies between general and floating-point registers
4434         in 32-bit move patterns.
4435
4436 2006-01-16  H.J. Lu  <hongjiu.lu@intel.com>
4437
4438         PR testsuite/25741
4439         * Makefile.in (check-%): Depend on site.exp instead of
4440         $(TESTSUITEDIR)/site.exp. Run "runtest" in separate language
4441         directories.
4442
4443 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
4444
4445         * global.c (global_alloc): Make it static.
4446         * rtl.h: Remove the prototype for global_alloc.
4447
4448 2006-01-16  Richard Guenther  <rguenther@suse.de>
4449
4450         * tree-ssa-alias.c (struct used_part): Add write_only field.
4451         (get_or_create_used_part_for): Initialize it to true.
4452         (create_overlap_variables_for): Don't create structure variables
4453         for structures that only are written to.
4454         (find_used_portions): Handle MODIFY_EXPR to track whether a
4455         structure is only written to.
4456
4457 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
4458
4459         * bb-reorder.c (partition_hot_cold_basic_blocks): Make it
4460         static.
4461         * basic-block.h: Remove the prototype for
4462         partition_hot_cold_basic_blocks.
4463
4464 2006-01-16  Rafael Ãvila de EspÃ�­ndola <rafael.espindola@gmail.com>
4465
4466         * cppspec.c (lang_specific_spec_functions): Remove.
4467         * gcc.c (lookup_spec_function): Use static_spec_functions directly.
4468         * gcc.h (lang_specific_spec_functions): Remove.
4469         * gccspec.c (lang_specific_spec_functions): Remove.
4470
4471 2006-01-16  Paolo Bonzini  <bonzini@gnu.org>
4472
4473         * combine.c (record_value_for_reg): Invalidate registers
4474         if INSN is null.
4475         (record_dead_and_set_regs_1): Likewise, by passing them to
4476         record_value_for_reg.
4477         (record_dead_and_set_regs): Invalidate stores made by a
4478         call.  We do not combine across a call, but we still
4479         relied on equivalences.
4480
4481 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
4482
4483         * tree-vrp.c (extract_range_from_binary_expr): Cope with
4484         vrp_int_const_binop returning non-constant nodes.
4485
4486 2006-01-16  Paul Brook  <paul@codesourcery.com>
4487
4488         * config/m68k/m68k.c (output_move_const_into_data_reg):
4489         Output correct mnemonic for mvz and mvs.
4490
4491 2006-01-16  Gabor Loki  <loki@gcc.gnu.org>
4492
4493         * rtl-factoring.c: Add sequence abstraction algorithm.
4494         * cfgcleanup.c (outgoing_edges_match): Extra checks.
4495         (try_crossjump_to_edge): Avoid deleting preserve label when redirecting
4496         ABNORMAL edges.
4497         (block_has_preserve_label): New function.
4498         * common.opt: Register new pass.
4499         * Makefile.in: Ditto.
4500         * passes.c: Ditto.
4501         * timevar.def: Ditto.
4502         * tree-pass.h: Ditto.
4503         * emit-rtl.c (make_jump_insn_raw): Remove forward decl.
4504         * rtl.h (make_jump_insn_raw): Add forward decl.
4505         * doc/invoke.texi: Add documentation for -frtl-abstract-sequences.
4506
4507 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
4508             Roger Sayle  <roger@eyesopen.com>
4509
4510         * fold-const.c (fold_minmax): New static function.
4511         (fold_binary) <MIN_EXPR>: Call it.
4512         <MAX_EXPR>: Likewise.
4513         * stor-layout.c (place_field): Use DECL_SIZE consistently
4514         in the computation of the new record size.
4515
4516 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
4517
4518         * cse.c (cse_condition_code_reg): Make it static.
4519         * rtl.h: Remove the prototype for cse_condition_code_reg.
4520
4521         * combine.c (combine_instructions): Make it static.
4522         * rtl.h: Remove the prototype for combine_instructions.
4523
4524 2006-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4525
4526         PR target/25168
4527         * tree.c (get_file_function_name_long): Concatenate the first global
4528         object name with a string derived from the input filename of the object
4529         for type "F".
4530
4531 2006-01-16  Ben Elliston  <bje@au.ibm.com>
4532
4533         * config/i386/winnt-stubs.c: Update FSF address.
4534         * config/xtensa/ieee754-df.S: Ditto.
4535         * config/xtensa/ieee754-sf.S: Ditto.
4536
4537 2006-01-14  Ian Lance Taylor  <ian@airs.com>
4538
4539         * ifcvt.c (noce_init_if_info): New static function, broken out of
4540         noce_process_if_block.
4541         (noce_process_if_block): Call noce_init_if_info.
4542         (check_cond_move_block): New static function.
4543         (cond_move_process_if_block): New static function.
4544         (process_if_block): Call cond_move_process_if_block.
4545
4546 2006-01-15  Kazu Hirata  <kazu@codesourcery.com>
4547
4548         * cselib.c (hash_table): Rename to cselib_hash_table.
4549         (cselib_clear_table, discard_useless_values,
4550         remove_useless_values, cselib_lookup_mem, cselib_lookup,
4551         cselib_init, cselib_finish): Adjust uses of hash_table.
4552
4553 2006-01-14  Kazu Hirata  <kazu@codesourcery.com>
4554
4555         PR tree-optimization/25485
4556         * tree-vrp.c (extract_range_from_binary_expr): Handle cases
4557         where one of the operands of TRUTH_AND_EXPR and TRUTH_OR_EXPR
4558         is known to be false and true, respectively.
4559
4560 2006-01-14  Richard Guenther  <rguenther@suse.de>
4561
4562         PR tree-optimization/22548
4563         PR tree-optimization/22555
4564         PR tree-optimization/22501
4565         * Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
4566         * params.def (salias-max-array-elements): New parameter.
4567         * params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
4568         * doc/invoke.texi (salias-max-array-elements): Document.
4569         * tree-flow-inline.h (var_can_have_subvars): We also handle
4570         arrays now.
4571         * tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
4572         COMPONENT_REF.
4573         * tree-ssa-structalias.c (params.h): Include.
4574         (push_fields_onto_fieldstack): Handle ARRAY_TYPE.
4575         (find_func_aliases): Handle multiple constraints from ARRAY_REF.
4576         (get_constraint_for): For ADDR_EXPR operating on something
4577         containing an ARRAY_REF, add all subvars to the solution.
4578         (handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
4579         * tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
4580         for creating MUST_DEFs.
4581         (get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.
4582
4583 2006-01-14  Zdenek Dvorak <dvorakz@suse.cz>
4584
4585         * tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
4586         functions.
4587         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
4588         assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
4589         number_of_iterations_le): New functions.
4590         (number_of_iterations_special): Removed.
4591         (number_of_iterations_exit): Do not use number_of_iterations_special.
4592         * tree.c (unsigned_type_for): Always return integer type.
4593
4594 2006-01-14  Steven Bosscher  <stevenb.gcc@gmail.com>
4595         Richard Guenther  <rguenther@suse.de>
4596
4597         PR rtl-optimization/24257
4598         * gcse.c (find_moveable_store): Only consider a store movable
4599         when the SET_SRC of the insn can be assigned to a register.
4600
4601 2006-01-14  Ian Lance Taylor  <ian@airs.com>
4602
4603         * tree.c (tree_not_class_check_failed): New function.
4604         * tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
4605         (tree_not_class_check_failed): Declare.
4606
4607 2006-01-13  Ian Lance Taylor  <ian@airs.com>
4608
4609         * reload1.c (do_output_reload): Add assertion rejecting a
4610         CALL_INSN.
4611
4612 2006-01-13  Adam Nemet  <anemet@caviumnetworks.com>
4613
4614         * combine.c (struct reg_stat): Add new fields truncation_label and
4615         truncated_to_mode.
4616         (record_value_for_reg): Reset truncated_to_mode.
4617         (record_truncated_value): New function.
4618         (check_promoted_subreg): Call it.  Rename to check_conversions.
4619         (combine_instructions): Rename check_promoted_subreg to
4620         check_conversions.
4621         (reg_truncated_to_mode): New function.
4622         (make_extraction): Use it.  Check TRULY_NOOP_TRUNCATION.
4623         (gen_lowpart_or_truncate): New function.
4624         (force_to_mode): Use it instead of gen_lowpart.
4625
4626 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
4627
4628         * tree-ssa-alias.c (add_type_alias): Fix typo.  Test whether
4629         VAR is a tag, not its type tag.
4630
4631 2006-01-13  Alexandre Oliva  <aoliva@redhat.com>
4632
4633         * config/i386/sse.md (*vec_extractv2di_1_sse2): Reorder
4634         alternatives to match style of other entries.
4635         (*vec_extractv2di_1_sse): Likewise.  Fix mode attr.
4636
4637 2006-01-13  Daniel Berlin  <dberlin@dberlin.org>
4638
4639         PR tree-optimization/25771
4640         * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
4641         SSA_NAMES.
4642
4643 2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
4644
4645         PR tree-opt/24365
4646         * tree-inline.c (declare_return_variable): If the return variable
4647         was marked as a non gimple complex, set the return slot variable
4648         to be a non gimple comple variable.
4649
4650 2006-01-13  Richard Guenther  <rguenther@suse.de>
4651
4652         * builtins.c (expand_builtin_sincos): New function.
4653         (expand_builtin_mathfn_3): Remove dead code, sin and cos
4654         do not set errno.
4655         (expand_builtin): Expand sincos using expand_builtin_sincos.
4656
4657 2006-01-12  DJ Delorie  <dj@redhat.com>
4658
4659         * config/m32c/shift.md: Rewrite: Allow arbitrary operands for
4660         shift counts, separate SI shifts for m32c vs m16c, pass shift type
4661         so that constant shifts can be split.
4662         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add In6.
4663         (m32c_valid_pointer_mode): Make static.
4664         (shift_gen_func_for): New.
4665         (m32c_prepare_shift): Use it.  Split large const shifts into
4666         multiple shifts.
4667         * config/m32c/predicates.md (shiftcount_operand): Allow more
4668         general operands.
4669         (longshiftcount_operand): New.
4670         * doc/md.texi (Machine Constraints): Document In6.
4671
4672 2006-01-13  Ben Elliston  <bje@au.ibm.com>
4673
4674         * doc/tm.texi (Data Output): Add REAL_VALUE_TO_TARGET_DECIMAL32,
4675         REAL_VALUE_TO_TARGET_DECIMAL64 and REAL_VALUE_TO_TARGET_DECIMAL128
4676         documentation.
4677
4678 2006-01-12  Daniel Berlin  <dberlin@dberlin.org>
4679
4680         * tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
4681         to try to avoid clobbering pieces of structures when we know
4682         something about the whole structure.
4683         * tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR
4684
4685 2006-01-13  Ben Elliston  <bje@au.ibm.com>
4686
4687         * doc/rtl.texi (Insns): Remove statement that libcalls cannot
4688         return in memory, as this is no limitation is no longer present.
4689
4690 2006-01-12  DJ Delorie  <dj@redhat.com>
4691
4692         * config/m32c/addsub.md (addhi3): Add two more alternatives, for
4693         mova with fb, and for fb+0 -> An.
4694
4695         * config/m32c/mov.md (peephole2): Fix enabling logic.
4696
4697         * config/m32c/m32c.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
4698         DTOR_LIST_BEGIN, DTOR_LIST_END, CTORS_SECTION_ASM_OP,
4699         DTORS_SECTION_ASM_OP, INIT_ARRAY_SECTION_ASM_OP,
4700         FINI_ARRAY_SECTION_ASM_OP): Define.
4701
4702         * config/m32c/m32c.c (m32c_legitimize_address): Remove temporary
4703         variable.
4704         (m32c_legitimize_reload_address): New logic to reload FB to An.
4705         (m32c_output_reg_push): Add newline.
4706         (m32c_output_reg_pop): Likewise.
4707
4708 2006-01-12  Ulrich Weigand  <uweigand@de.ibm.com>
4709
4710         * struct-equiv.c (find_dying_inputs): Fix off-by-one bug.
4711
4712 2006-01-11  Andrew Pinski  <pinskia@physics.uc.edu>
4713
4714         * config/i386/darwin.h (SUBTARGET_ENCODE_SECTION_INFO): Define.
4715
4716 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
4717
4718         * config/sh/predicates.md (sh_rep_vec): Add parallel to
4719         match_code.
4720
4721 2006-01-11  Ben Elliston  <bje@au.ibm.com>
4722
4723         * rtlanal.c (find_reg_note): Assert insn is not null.
4724
4725 2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
4726
4727         * df-scan.c (df_hard_reg_init): Move declaration of i outside
4728         ifdef.
4729
4730 2006-01-11  Jeff Law  <law@redhat.com>
4731
4732         * tree-ssa-threadupdate.c (threaded_edges): New VEC to
4733         hold edge pairs.
4734         (mark_threaded_blocks, register_jump_thread): New functions.
4735         (thread_through_all_blocks): Remove unwanted argument.  No
4736         longer rely on e->aux to communicate thread target info.
4737         Call mark_threaded_blocks.  Release the threaded_blocks
4738         bitmap and threaded_edges vector when complete.
4739         * tree-ssa-dom.c (struct edge_info): Remove redirection_target field.
4740         (threaded_blocks): Remove.
4741         (tree_ssa_dominator_optimize): Remove initialization and
4742         finalization of threaded_blocks.  Simplify call to
4743         thread_through_all_blocks.
4744         (thread_across_edge): Call register_jump_thread rather than
4745         storing thread information into e->aux.
4746         (free_all_edge_infos): Simplify now that e->aux is no longer
4747         used to communicate with thread_through_all_blocks.
4748         * tree-flow.h (thread_through_all_blocks): Update prototype.
4749         (register_jump_thread): Prototype.
4750
4751 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
4752
4753         * df-core.c (df_compact_blocks, df_bb_replace): Use
4754         SET_BASIC_BLOCK instead of BASIC_BLOCK.
4755
4756 2006-01-11  Richard Guenther  <rguenther@suse.de>
4757
4758         PR tree-optimization/25734
4759         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
4760         stop propagation after successful propagation to the LHS.
4761
4762 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
4763
4764         * basic-block.h (control_flow_graph): Change the type of
4765         x_basic_block_info to VEC(basic_block,gc) *.
4766         (BASIC_BLOCK_FOR_FUNCTION, BASIC_BLOCK): Adjust the uses of
4767         basic_block_info.
4768         (SET_BASIC_BLOCK): New.
4769         * cfg.c (compact_blocks, expunge_block): Use SET_BASIC_BLOCK
4770         instead of BASIC_BLOCK when assigning to BASIC_BLOCK.
4771         * cfgbuild.c (find_basic_blocks): Likewise.
4772         * cfglayout.c (fixup_reorder_chain): Likewise.
4773         * cfgrtl.c (create_basic_block_structure,
4774         rtl_create_basic_block): Likewise.
4775         * ifcvt.c (find_if_case_1): Likewise.
4776         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb):
4777         Likewise.
4778
4779 2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
4780
4781         * Makefile.in: Removed rotted odf.c entry.
4782
4783 2006-01-11  Hans-Peter Nilsson  <hp@axis.com>
4784
4785         PR target/25706
4786         * config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
4787         ("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
4788         ("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
4789         output pattern modifier, not %e.
4790         * config/cris/cris.c (cris_op_str): Update comment about pattern
4791         modifier.
4792         (cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
4793         before falling through into...
4794         <case 'E'>: Redefined from old 'e' case.
4795
4796 2006-01-11  Jan Hubicka  <jh@suse.cz>
4797
4798         PR target/25042
4799         * i386.c (ix86_init_mmx_sse_builtins): Do not delcare float128
4800
4801 2006-01-11  Jan Hubicka  <jh@suse.cz>
4802
4803         * i386.h (TARGET_DECOMPOSE_LEA): Kill.
4804         * i386.c (x86_decompose_lea): Kill.
4805         (ix86_rtx_costs): Kill.
4806
4807 2006-01-11  Jan Hubicka  <jh@suse.cz>
4808
4809         * cgraph.c (cgraph_insert_node_to_hashtable): New function.
4810         * cgraph.h (cgraph_node): Add inline_decl.
4811         (cgraph_insert_node_to_hashtable): Declare.
4812         (save_inline_function_body): Declare.
4813         * cgraphunit.c (verify_cgraph_node): Inline edges might point to inline
4814         clones.
4815         (cgraph_preserve_function_body_p): Do not presrve when dump is enabled.
4816         (cgraph_function_versioning): Update call of tree_function_versioning.
4817         (save_inline_function_body): New function.
4818         * function.h (struct function): Kill saved_eh, saved_cfg, saved_args,
4819         saved_static_chain_decl, saved_blocks and saved-unexpanded_var_list.
4820         * ipa-inline.c (cgraph_mark_inline_edge): Look for inline clones.
4821         (cgraph_default_inline_p): Likewise.
4822         (cgraph_decide_inlining_incrementally): Likewise.
4823         * tree-inline.c (inline_data): Kill saving_p add update_clones_p.
4824         (copy_bb): Kill saving; do updating of clones.
4825         (copy_cfg_body): Kill saving.
4826         (initialize_inlined-parameters): Likewise.
4827         (expand_call_inline): Likewise.
4828         (save_body): Kill.
4829         (tree_function_versioning): New parameter "update_clones".
4830         (inlining_p): Kill saving.
4831         * tree-inline.h (tree_function_versioning): Update prototype.
4832         * tree-optimize.c (tree_rest_of_compilation): Use clonning instead of
4833         saving.
4834
4835 2006-01-11  Ian Lance Taylor <ian@airs.com>
4836
4837         * combine.c (struct undo): Remove is_int.  Enumify types of undos.
4838         Allow undoing set of machine mode.
4839         (do_SUBST): Use enums instead of is_int.
4840         (do_SUBST_MODE): New function.
4841         (SUBST_MODE): New macro.
4842         (try_combine): Use SUBST_MODE/PUT_MODE instead of generating a new
4843         reg and trying to replace reg_regno_rtx with a new register.
4844         (undo_all): Use new enums, handle undoing a PUT_MODE change.
4845         (simplify_set): Use SUBST_MODE.
4846         (distribute_notes): Remove code that tried to update reg notes
4847         for regno_reg_rtx changes.
4848
4849 2006-01-11  Paolo Bonzini  <bonzini@gnu.org>
4850
4851         PR tree-optimization/23109
4852         PR tree-optimization/23948
4853         PR tree-optimization/24123
4854
4855         * Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
4856         * tree-cfg.c (single_noncomplex_succ): New.
4857         * tree-flow.h (single_noncomplex_succ): Declare it.
4858         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
4859         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
4860         (struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
4861         insert_bb, register_division_in, insert_reciprocals,
4862         replace_reciprocal, free_bb): New.
4863         (execute_cse_reciprocals_1): Rewritten.
4864         (execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
4865         Do not commit any edge insertion.  Always compute dominators and
4866         create the allocation pool.
4867         * target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
4868         * target.h (struct gcc_target): Add min_divistions_for_recip_mul.
4869         * targhooks.c (default_min_divistions_for_recip_mul): New.
4870         * targhooks.h (default_min_divistions_for_recip_mul): New prototype.
4871         * passes.c (init_optimization_passes): Run recip after tree loop
4872         optimizations.
4873         * doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.
4874
4875 2006-01-11  Danny Berlin <dberlin@dberlin.org>
4876             Kenneth Zadeck <zadeck@naturalbridge.com>
4877
4878         * df.h (DF_SCAN, DF_RU, DF_RD, DF_LR, DF_UR, DF_UREC, DF_CHAIN,
4879         DF_RI, DF_LAST_PROBLEM_PLUS1, DF_DU_CHAIN, DF_UD_CHAIN,
4880         DF_REF_TYPE_NAMES, DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS,
4881         DF_SCAN_BB_INFO, DF_RU_BB_INFO, DF_RD_BB_INFO, DF_LR_BB_INFO,
4882         DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_IN, DF_LIVE_OUT,
4883         DF_RA_LIVE_IN, DF_RA_LIVE_OUT, DF_UPWARD_LIVE_IN,
4884         DF_UPWARD_LIVE_OUT, DF_REF_REAL_REG, DF_REF_REGNO,
4885         DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_BBNO,
4886         DF_REF_INSN, DF_REF_INSN_UID, DF_REF_TYPE, DF_REF_CHAIN,
4887         DF_REF_ID, DF_REF_FLAGS, DF_REF_NEXT_REG, DF_REF_PREV_REG,
4888         DF_REF_NEXT_REF, DF_REF_DATA, DF_REF_REG_DEF_P, DF_REF_REG_USE_P,
4889         DF_REF_REG_MEM_STORE_P, DF_REF_REG_MEM_LOAD_P, DF_REF_REG_MEM_P,
4890         DF_DEFS_SIZE, DF_DEFS_GET, DF_DEFS_SET, DF_USES_SIZE, DF_USES_GET,
4891         DF_USES_SET, DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_SET,
4892         DF_REG_USE_GET, DF_REG_USE_SET, DF_REGNO_FIRST_DEF,
4893         DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
4894         DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
4895         DF_INSN_UID_GET, DF_INSN_UID_LUID, DF_INSN_UID_DEFS,
4896         DF_INSN_UID_USES, DF_SCAN_INITIAL, DF_SCAN_GLOBAL,
4897         DF_SCAN_POST_ALLOC): New macros.
4898         (df_flow_dir, df_ref_type, df_ref_flags, df_alloc_function,
4899         df_free_bb_function, df_local_compute_function, df_init_function,
4900         df_dataflow_function, df_confluence_function_0,
4901         df_confluence_function_n, df_transfer_function,
4902         df_finalizer_function, df_free_function, df_dump_problem_function,
4903         df_problem, dataflow, df_insn_info, df_reg_info, df_ref, df_link,
4904         df_ref_info, df, df_map, df_scan_bb_info, df_ru_bb_info,
4905         df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
4906         df_urec_bb_info, ) New types.
4907         (df_invalidated_by_call, df_all_hard_regs, df_state) New public
4908         variables.
4909         (df_init, df_add_problem, df_set_blocks, df_finish, df_analyze,
4910         df_analyze_simple_change_some_blocks,
4911         df_analyze_simple_change_one_block, df_compact_blocks,
4912         df_bb_replace, df_bb_regno_last_use_find,
4913         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
4914         df_insn_regno_def_p, df_find_def, df_find_use,
4915         df_iterative_dataflow, df_dump, df_chain_dump, df_refs_chain_dump,
4916         df_regs_chain_dump, df_insn_debug, df_insn_debug_regno,
4917         df_regno_debug, df_ref_debug, debug_df_insn, debug_df_regno,
4918         debug_df_reg, debug_df_defno, debug_df_useno, debug_df_ref,
4919         debug_df_chain, df_get_dependent_problem, df_chain_create,
4920         df_chain_unlink, df_chain_copy, df_get_live_in, df_get_live_out,
4921         df_grow_bb_info, df_chain_dump, df_print_bb_index,
4922         df_ru_add_problem, df_ru_get_bb_info, df_rd_add_problem,
4923         df_rd_get_bb_info, df_lr_add_problem, df_lr_get_bb_info,
4924         df_ur_add_problem, df_ur_get_bb_info, df_urec_add_problem,
4925         df_urec_get_bb_info, df_chain_add_problem, df_ri_add_problem,
4926         df_reg_lifetime, df_scan_get_bb_info, df_scan_add_problem,
4927         df_rescan_blocks, df_ref_create, df_get_artificial_defs,
4928         df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
4929         df_ref_remove, df_insn_refs_delete, df_refs_delete,
4930         df_reorganize_refs, df_set_state, df_hard_reg_init,
4931         df_read_modify_subreg_p) New public functions.
4932         * df-core.c: The core dataflow solver and glue routines for rtl
4933         dataflow.
4934         (df_init, df_add_problem, df_set_blocks, df_finish,
4935         df_hybrid_search_forward, df_hybrid_search_backward,
4936         df_iterative_dataflow, df_prune_to_subcfg, df_analyze_problem,
4937         df_analyze, df_get_bb_info, df_set_bb_info, df_bb_replace,
4938         df_bb_regno_last_use_find, df_bb_regno_first_def_find,
4939         df_bb_regno_last_def_find, df_insn_regno_def_p, df_find_def,
4940         df_reg_defined, df_find_use, df_reg_used, df_dump,
4941         df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
4942         df_insn_debug_regno, df_regno_debug, df_ref_debug, debug_df_insn,
4943         debug_df_reg, debug_df_regno, debug_df_ref debug_df_defno,
4944         debug_df_useno, reset_df_after_reload): New functions.
4945         * df-scan.c: The scanning fuctions, once in df.c, completely
4946         rewritten so that they now fully model the functionality of
4947         register usage at the backend.
4948         (df_scan_free_internal, df_scan_get_bb_info, df_scan_set_bb_info,
4949         df_scan_free_bb_info, df_scan_alloc, df_scan_free, df_scan_dump,
4950         df_scan_add_problem, df_grow_reg_info, df_grow_ref_info,
4951         df_grow_insn_info, df_rescan_blocks, df_ref_create,
4952         df_get_artificial_defs, df_get_artificial_uses,
4953         df_reg_chain_create, df_ref_unlink, df_reg_chain_unlink,
4954         df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete,
4955         df_refs_delete, df_reorganize_refs, df_set_state,
4956         df_ref_create_structure, df_ref_record, df_read_modify_subreg_p,
4957         df_def_record_1, df_defs_record, df_uses_record,
4958         df_insn_contains_asm_1, df_insn_contains_asm, df_insn_refs_record,
4959         df_has_eh_preds, df_bb_refs_record, df_refs_record, df_mark_reg,
4960         df_record_exit_block_uses, df_hard_reg_init): New functions.
4961
4962         * df-problems.c: Seven concrete dataflow problems that use the
4963         scanning in df-scan.c and are solved by the engine in df-core.c.
4964         (df_get_dependent_problem, df_chain_create, df_chain_unlink,
4965         df_chain_copy, df_get_live_in, df_get_live_out, df_grow_bb_info,
4966         df_chain_dump, df_print_bb_index, df_ref_bitmap, df_set_seen,
4967         df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
4968         df_ru_free_bb_info, df_ru_alloc,
4969         df_ru_bb_local_compute_process_def,
4970         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
4971         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
4972         df_ru_transfer_function, df_ru_free, df_ru_dump,
4973         df_ru_add_problem, df_rd_get_bb_info, df_rd_set_bb_info,
4974         df_rd_free_bb_info, df_rd_alloc,
4975         df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
4976         df_rd_local_compute, df_rd_init_solution, df_rd_confluence_n,
4977         df_rd_transfer_function, df_rd_free, df_rd_dump,
4978         df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
4979         df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
4980         df_lr_local_compute, df_lr_init, df_lr_confluence_0,
4981         df_lr_confluence_n, df_lr_transfer_function, df_lr_free,
4982         df_lr_dump, df_lr_add_problem, df_ur_get_bb_info,
4983         df_ur_set_bb_info, df_ur_free_bb_info, df_ur_alloc,
4984         df_ur_bb_local_compute, df_ur_local_compute, df_ur_init,
4985         df_ur_local_finalize, df_ur_confluence_n, df_ur_transfer_function,
4986         df_ur_free, df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
4987         df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
4988         df_urec_mark_reg_change, df_urec_check_earlyclobber,
4989         df_urec_mark_reg_use_for_earlyclobber,
4990         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
4991         df_urec_local_compute, df_urec_init, df_urec_local_finalize,
4992         df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
4993         df_urec_dump, df_urec_add_problem, df_chain_alloc,
4994         df_chain_create_bb_process_use, df_chain_create_bb,
4995         df_chain_finalize, df_chain_free, df_chains_dump,
4996         df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
4997         df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
4998         df_reg_lifetime): New functions.
4999         * df.c: Deleted file.
5000         * ddg.c (create_ddg_dep_no_link, build_inter_loop_deps): Made code
5001         consistent with new df api.
5002         * modulo-sched.c (sms_schedule, rest_of_handle_sms,
5003         rest_of_handle_sms): Ditto.
5004         * web.c (unionfind_union, union_defs, entry_register, web_main):
5005         Ditto.
5006         * loop_invariant.c (invariant_for_use, hash_invariant_expr_1,
5007         invariant_expr_equal_p, find_defs, check_dependencies,
5008         find_invariant_insn, find_invariants_to_move, move_invariant_reg,
5009         free_inv_motion_data, move_loop_invariants): Ditto.
5010         * Makefile.in (df.c, df-scan.c df-problems.c df-core.c):
5011         Update dependencies.
5012         (odf.c): Added defective entry that was deleted later in day.
5013         * sched-deps.c (sched_analyze_1): Ditto.
5014
5015 2006-01-11  Zdenek Dvorak <dvorakz@suse.cz>
5016
5017         * tree-ssa-operands.c (get_expr_operands): Record addressable
5018         variables directly.  Do not call add_stmt_operands for CONST_DECLs
5019         and ARRAY_DECLs.
5020         (get_indirect_ref_operands): Remove handling of *(&a + offset) case.
5021         (add_stmt_operands): Handle only objects satisfying SSA_VAR_P.
5022
5023 2006-01-11  Ben Elliston  <bje@au.ibm.com>
5024
5025         * config/i386/i386.c (ix86_return_in_memory): Fix comment: this
5026         function returns true in the positive case.
5027
5028 2006-01-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
5029
5030         PR target/20754
5031         * config/pa/pa.md: Create separate 32 and 64-bit move patterns
5032         for SI, DI, SF and DF modes.  Add alternatives to copy between
5033         general and floating point registers to the 32-bit patterns.
5034         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED_RTX): Delete undefine.
5035         * config/pa/pa.h (SECONDARY_MEMORY_NEEDED_RTX): Delete define.
5036         (SECONDARY_MEMORY_NEEDED): Secondary memory is only needed when
5037         generating 64-bit code.
5038         * config/pa/pa.c (output_move_double): Handle copies between general
5039         and floating registers.
5040
5041 2006-01-10  Stuart Hastings  <stuart@apple.com>
5042
5043         * config/i386/i386.md (set_got): Update.
5044         (set_got_labelled): New.  (UNSPEC_LD_MPIC): New.
5045         (builtin_setjmp_receiver): Mach-O support.
5046         * config/i386/darwin.h (TARGET_ASM_FILE_END) Define.
5047         (GOT_SYMBOL_NAME): Define.
5048         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
5049         (TARGET_DEEP_BRANCH_PREDICTION): Remove.
5050         * config/i386/i386.c (override_options): Revise for Darwin.
5051         (USE_HIDDEN_LINKONCE): Enable for Mach-O.  (ix86_file_end): Mach-O
5052         support.  (darwin_x86_file_end): New.  (output_set_got): Add label
5053         parameter, revise for Mach-O.  (x86_output_mi_thunk): Likewise.
5054         * config/i386/i386-protos.h (output_set_got): Likewise.
5055         * config/darwin.c (machopic_legitimize_pic_address): Update
5056         regs_ever_live[].
5057
5058 2006-01-10  Kaz Kojima  <kkojima@gcc.gnu.org>
5059
5060         * config/sh/sh.h (SH5_WOULD_BE_PARTIAL_NREGS): Use GET_MODE_SIZE
5061         when MODE isn't BLKmode.
5062
5063 2006-01-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
5064
5065         PR rtl-optimization/25367
5066         * config/sparc/sparc.h (HARD_REGNO_RENAME_OK): New macro.
5067
5068 2006-01-10  Hans-Peter Nilsson  <hp@axis.com>
5069
5070         PR target/25718
5071         * config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
5072         for a negative bound.
5073
5074 2006-01-10  Richard Guenther  <rguenther@suse.de>
5075
5076         * tree-ssa-structalias.c (get_constraint_for_component_ref):
5077         Never override with anything constraint.
5078
5079 2006-01-10  Jan Beulich  <jbeulich@novell.com>
5080
5081         * config/i386/i386.c (ix86_data_alignment): Don't force alignment to
5082         256 bits when optimize_size.
5083
5084 2006-01-10  Jan Beulich  <jbeulich@novell.com>
5085
5086         * config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
5087         MASK_ALIGN_DOUBLE.
5088         * config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
5089         * config/i386/t-nwld (SHLIB_LINK): Insert spaces between expr
5090         arguments.
5091
5092 2006-01-10  Ben Elliston  <bje@au.ibm.com>
5093
5094         * config/rs6000/predicates.md (easy_fp_constant): Discount decimal
5095         float modes.
5096         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): New.
5097         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
5098         (USE_FP_FOR_ARG): Reject decimal float modes.
5099         (function_arg_advance): Likewise.
5100         (output_toc): Handle emitting TDmode, DDmode and SDmode constants.
5101         (rs6000_handle_altivec_attribute): Do not permit decimal floating
5102         point types in AltiVec vectors.
5103         (rs6000_function_value): Use GP_ARG_RETURN for decimal floats.
5104         (rs6000_libcall_value): Likewise.
5105
5106 2006-01-09  Bob Wilson  <bob.wilson@acm.org>
5107
5108         * config/xtensa/ieee754-df.S: New file.
5109         * config/xtensa/ieee754-sf.S: New file.
5110         * config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove fp-bit.c & dp-bit.c.
5111         (LIB1ASMFUNCS): Add SFmode and DFmode floating-point functions.
5112         * config/xtensa/lib1funcs.asm: Include ieee754-df.S and ieee754-sf.S.
5113
5114 2006-01-09  Kazu Hirata  <kazu@codesourcery.com>
5115
5116         * config/sh/predicates.md (binary_float_operator,
5117         binary_logical_operator, commutative_float_operator,
5118         equality_comparison_operator, greater_comparison_operator,
5119         less_comparison_operator, logical_operator,
5120         noncommutative_float_operator, shift_operator,
5121         symbol_ref_operand, unary_float_operator): Remove redundant
5122         conditionals.
5123
5124 2006-01-09  Jeff Law  <law@redhat.com>
5125
5126         * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Remove
5127         code to propagate the RHS of a cast into COND_EXPR_COND.  Remove
5128         now unused arguments.  Callers updated.
5129         (eliminate_redundant_computations): Remove now unused arguments,
5130         callers updated.
5131         (local_fold): Remove, no longer used.
5132         (find_equivalent_equality_comparison): Removed from tree-ssa-dom.c
5133         and moved to...
5134         * tree-ssa-forwprop.c (find_equivalent_equality_comparison): Here.
5135         (simplify_cond): New function.
5136         (forward_propagate_into_cond): Call simplify_cond.
5137
5138 2006-01-09  Alexandre Oliva  <aoliva@redhat.com>
5139
5140         * config/i386/sse.md (*vec_extractv2di_1_sse2): New.
5141         (*vec_extractv2di_1_sse): New.
5142
5143 2006-01-09  Ben Elliston  <bje@au.ibm.com>
5144
5145         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Typo fix.
5146
5147 2006-01-08  Richard Guenther  <rguenther@suse.de>
5148
5149         * tree-ssa-structalias.c (get_constraint_for): Remove
5150         anyoffset argument.
5151         (get_constraint_for_component_ref): Likewise.
5152         (do_deref): Likewise.
5153         (get_constraint_for): Likewise.
5154         (do_structure_copy): Likewise.
5155         (handle_ptr_arith): Likewise.
5156         (find_func_aliases): Likewise.  Remove unused need_anyoffset
5157         variable.
5158
5159 2006-01-08  J"orn Rennecke  <joern.rennecke@st.com>
5160             Kaz Kojima  <kkojima@gcc.gnu.org>
5161
5162         * config/sh/sh.h (CONST_OK_FOR_K16): Define.
5163         (CONST_OK_FOR_K): Add CONST_OK_FOR_K16 case.
5164         (EXTRA_CONSTRAINT_C16): Remove.
5165         (EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Define.
5166         (EXTRA_CONSTRAINT_C): Remove EXTRA_CONSTRAINT_C16 case and add
5167         EXTRA_CONSTRAINT_Css and EXTRA_CONSTRAINT_Csu cases.
5168         * config/sh/sh.c (print_operand): Handle unsigned 16-bit symbolic
5169         constants of SHmedia.  Handle nested constant expressions of
5170         SHmedia correctly.
5171         (andcosts): Fix the costs for SHmedia constants.
5172         (sh_rtx_costs): Take account of outer_code for SHmedia constants.
5173         * config/sh/sh.md (*movsi_media): Use Css constraint instead of C16.
5174         (*movsi_media_nofpu, *movqi_media, *movhi_media): Likewise.
5175         (*movdi_media, *movdi_media_nofpu, movv8qi_i, movv2hi_i): Likewise.
5176         (movv4hi_i, movv2si_i): Likewise.
5177         (movsi_const): Adjust the second operand of ior so to match with
5178         the Csu constraint.
5179         (movdi_const, movdi_const_32bit): Likewise.
5180         (movdi_const_16bit+1): Don't sign-extend LOW.
5181         (movdi_const_16bit+2): Likewise.  Remove the zero_extend and truncate
5182         step.
5183         (*double_shori): Fix the split condition.  Use GEN_INT instead
5184         of get_int_mode calls.  Mask lower 16-bit of the argument of
5185         the last GEN_INT.
5186         (sym2GOTPLT): Remove.
5187         (symGOTPLT2reg): Replace gen_sym2GOTPLT with gen_rtx_CONST and
5188         gen_rtx_UNSPEC.
5189         * config/sh/predicates.md (arith_operand): Use EXTRA_CONSTRAINT_Css
5190         instead of EXTRA_CONSTRAINT_C16.
5191
5192 2006-01-07  Ian Lance Taylor  <ian@airs.com>
5193             David Edelsohn  <edelsohn@gnu.org>
5194
5195         PR rtl-optimization/25662
5196         * optabs.c (simplify_expand_binop): Use simplify_binary_operation
5197         for constant operands instead of simplify_gen_binary.
5198         * simplify-rtx.c (simplify_gen_binary): Swap commutative operands
5199         after trying simplify_binary_operation
5200
5201 2006-01-06  Daniel Berlin  <dberlin@dberlin.org>
5202
5203         * tree.c (iterative_hash_expr): Hash decls based on UID.
5204
5205 2006-01-06  Eric Christopher  <echristo@apple.com>
5206
5207         * doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
5208         (TARGET_UNWIND_EMIT): Fix spelling.
5209         * target.h (gcc_target): Add except_table_label.
5210         * except.c (output_function_exception_table): Use.
5211         * varasm.c (default_emit_except_table_label): New.
5212         * target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
5213         define.
5214         (asm_out): Add here.
5215         * output.h (default_emit_except_table_label): Prototype.
5216         * config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
5217         * config/darwin.c (darwin_emit_except_table_label): Define.
5218         * config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.
5219
5220 2006-01-06  Zdenek Dvorak <dvorakz@suse.cz>
5221
5222         PR tree-optimization/18527
5223         * tree-ssa-loop-niter.c (number_of_iterations_cond,
5224         number_of_iterations_special, number_of_iterations_exit):
5225         Move base and step of an iv to a single structure.  Add
5226         no_overflow flag, and use it in # of iterations analysis.
5227         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Add
5228         folded_casts argument.
5229         (simple_iv): Pass base and step in a structure.  Set no_overflow
5230         flag.
5231         (scev_const_prop): Add argument to analyze_scalar_evolution_in_loop.
5232         Evaluate expensiveness of computing # of iterations instead of
5233         the final expression.
5234         * tree-scalar-evolution.h (affine_iv): New structure.
5235         (simple_iv): Declaration changed.
5236         * tree-chrec.c (chrec_apply): Handle chrecs containing symbols.
5237         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev,
5238         find_givs_in_stmt): Changed due to simple_iv change.
5239
5240 2006-01-06  Jeff Law  <law@redhat.com>
5241
5242         PR ada/24994
5243         * tree-cfg.c (bsi_replace): Rename final argument from
5244         PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
5245         change (stmt -> orig_stmt).
5246         * tree-eh.c (verify_eh_throw_stmt_node): New function.
5247         (bsi_remove): Add new argument.  Remove EH information
5248         if requested.
5249         (verify_eh_throw_table_statements): New function.
5250         (bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
5251         updated.
5252         * tree-optimize.c (execute_free_cfg_annotations): Verify
5253         the EH throw statement table after removing annotations.
5254         * except.h (verify_eh_throw_table_statements): Prototype.
5255         * tree-flow.h (bsi_remove): Update prototype.
5256         * tree-vrp.c (remove_range_assertions): Add new argument to
5257         bsi_remove call.
5258         * tree-ssa-loop-im.c (move_computations_stmt): Likewise.
5259         * tree-complex.c (expand_complex_div_wide): Likewise.
5260         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
5261         * tree-tailcall.c (eliminate_tailcall): Likewise.
5262         * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
5263         * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
5264         * tree-nrv.c (tree_nrv): Likewise.
5265         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
5266         * tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
5267         (combine_blocks): Likewise.
5268         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
5269         * tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
5270         (cleanup_control_flow): Likewise.
5271         (remove_forwarder_block): Likewise.
5272         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
5273         * tree-sra.c (sra_replace): Likewise.
5274         * tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
5275         (forward_propagate_single_use_vars): Likewise.
5276         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
5277         * tree-inline.c (expand_call_inline): Likewise.
5278         * tree-vect-transform.c (vect_transform_loop): Likewise.
5279         * tree-outof-ssa.c (rewrite_trees): Likewise.
5280         * tree-cfg.c (make_goto_expr_edges): Likewise.
5281         (cleanup_dead_labels): Likewise.
5282         (tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
5283         (bsi_move_before, bsi_move_after): Likewise.
5284         (bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
5285         (tree_redirect_edge_and_branch, tree_split_block): Likewise.
5286
5287 2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>
5288
5289         PR tree-opt/25528
5290         * tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
5291         and IMAGPART_EXPR.
5292         * tree-flow-inline.h (var_can_have_subvars): Handle complex types
5293         on non gimple variables.  Also add checks at the top for decls and
5294         mtags.
5295         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
5296         complex types.
5297         * tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
5298         and IMAGPART_EXPR for creating MUST_DEFs.
5299         (get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
5300         and NAME_MEMORY_TAG separately from the DECLs.
5301
5302 2006-01-06  Richard Guenther  <rguenther@suse.de>
5303
5304         * tree-dfa.c (mark_new_vars_to_rename): Create stmt
5305         annotation, if necessary.
5306         * tree-ssa-pre.c (create_expression_by_pieces): Remove
5307         redundant calls to update_stmt.
5308         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr):
5309         Likewise.
5310
5311 2006-01-05  Richard Henderson  <rth@redhat.com>
5312
5313         * c-parser.c (c_parser_objc_methodprotolist): Handle CPP_PRAGMA.
5314
5315 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
5316
5317         * c-typeck.c: Update copyright date.
5318
5319 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
5320
5321         * c-typeck.c (build_c_cast): Always warn when casting
5322         from a pointer to an integer of different size, even if
5323         the node was constant.
5324
5325 2006-01-05  Richard Guenther  <rguenther@suse.de>
5326
5327         PR tree-optimization/22555
5328         * tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
5329         if one structure field is an array.
5330         * tree-ssa-operands.c (get_expr_operands): Continue scanning
5331         operands even if we found a subvar, but ignore VOPs in this
5332         case.
5333         * tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
5334         for renaming.
5335         * tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.
5336
5337 2006-01-05  Richard Earnshaw  <rearnsha@arm.com>
5338
5339         PR middle-end/24998
5340         * arm/t-netbsd (LIB2FUNCS_EXTRA): Define.
5341
5342 2006-01-05  Richard Guenther  <rguenther@suse.de>
5343             Diego Novillo  <dnovillo@redhat.com>
5344
5345         * tree-pass.h (TODO_remove_unused_locals): Define.
5346         * gimple-low.c (expand_var_p, remove_useless_vars,
5347         pass_remove_useless_vars): Remove.  Update all users.
5348         * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names.
5349         (remove_unused_locals): New function.
5350         * tree-flow.h (remove_unused_locals): Declare.
5351         * passes.c (execute_todo): Call remove_unused_locals if
5352         TODO_remove_unused_locals is set.
5353         * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals.
5354         * tree-ssa-dce.c (pass_dce): Likewise.
5355         * tree-outof-ssa.c (pass_del_ssa): Likewise.
5356
5357 2006-01-05  Richard Guenther  <rguenther@suse.de>
5358
5359         * tree-flow.h (struct fieldoff): Decompose field to
5360         type, size and decl.
5361         * tree-ssa-alias.c (create_sft): Take type as parameter.
5362         (create_overlap_variables_for): Store type, size and decl
5363         in the fieldoff structure.
5364         * tree-ssa-structalias.c (fieldoff_compare): Adjust users
5365         of struct fieldoff.
5366         (push_fields_onto_fieldstack): Likewise.
5367         (create_variable_info_for): Likewise.  Use offset for the
5368         SFT name if the decl is not available.
5369
5370 2006-01-04  Paul Brook  <paul@codesourcery.com>
5371
5372         * config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.
5373
5374 2006-01-04  Daniel Berlin  <dberlin@dberlin.org>
5375
5376         * lambda-code.c (can_put_in_inner_loop): Relax
5377         restrictions.
5378         (can_put_after_inner_loop): New function.
5379         (can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
5380         (perfect_nestify): Change to make copies and modify uses.
5381
5382 2006-01-04  Richard Henderson  <rth@redhat.com>
5383
5384         Merge from gomp branch:
5385         * c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
5386         via integer constant.
5387         (pragma_lex): Remove.
5388         * c-pch.c (c_common_pch_pragma): Accept the name as an argument,
5389         rather than parsing it.
5390         * c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
5391         handle_pragma_extern_prefix): Add %< %> quotes.
5392         (registered_pragmas): New.
5393         (c_register_pragma_1): New.
5394         (c_register_pragma): Use it.
5395         (c_register_pragma_with_expansion): Likewise.
5396         (c_invoke_pragma_handler): New.
5397         (init_pragma): Use cpp_register_deferred_pragma directly for
5398         pch_preprocess.
5399         * c-pragma.h (enum pragma_kind): New.
5400         (pragma_handler): New.
5401         (c_invoke_pragma_handler): Declare.
5402         * c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
5403         CPP_PRAGMA_EOL.
5404         * c-common.h (c_common_pch_pragma): Update decl.
5405         * Makefile.in (c-parser.o): Update dependencies.
5406         (GTFILES): Add c-pragma.h.
5407         * c-parser.c (struct c_token): Add pragma_kind.
5408         (struct c_parser): Add in_pragma.
5409         (c_lex_one_token): Always initialize keyword and pragma_kind.
5410         Extract data for CPP_PRAGMA.
5411         (c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
5412         (c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
5413         Don't allow CPP_PRAGMA_EOL if in_pragma.
5414         (c_parser_consume_pragma): New.
5415         (c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
5416         (c_parser_skip_to_end_of_parameter): Likewise.
5417         (c_parser_skip_to_end_of_block_or_statement): Likewise.
5418         (c_parser_skip_to_pragma_eol): New.
5419         (c_parser_external_declaration): Handle CPP_PRAGMA.
5420         (c_parser_compound_statement_nostart): Likewise.
5421         (c_parser_statement_after_labels): Likewise.
5422         (c_parser_pragma): New.
5423         (pragma_lex): Likewise.
5424         (c_parser_pragma_pch_preprocess): New.
5425         (c_parser_new): Merge into ...
5426         (c_parse_file): ... here.  Call c_parser_pragma_pch_preprocess.
5427
5428 2006-01-04  Jeff Law  <law@redhat.com>
5429
5430         PR ada/24994
5431         * tree-cfg.c (bsi_replace): Remove the original statement
5432         from the EH throw statement table.
5433
5434 2006-01-04  Jakub Jelinek  <jakub@redhat.com>
5435
5436         * config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
5437         make the prototype extern "C" and add throw ().
5438
5439         PR target/25554
5440         * config/i386/i386.md (testqi_ext_3): Ensure len is positive
5441         and pos non-negative and pos + len <= 32.
5442         (testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
5443         drop pos + len < HOST_BITS_PER_WIDE_INT test.
5444         (testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
5445
5446         PR c/25559
5447         * c-common.c (handle_vector_size_attribute): Reject zero vector size
5448         as well as sizes not multiple of component size.
5449
5450         PR debug/25562
5451         * function.c (instantiate_expr): New function.
5452         (instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
5453         walk its DECL_VALUE_EXPR with instantiate_expr.
5454
5455         * dwarf2out.c (loc_descriptor_from_tree_1): Don't add
5456         DW_OP_deref{,_size} if address isn't going to be added.
5457
5458 2006-01-04  Ben Elliston  <bje@au.ibm.com>
5459
5460         * config/fp-bit.h: Use top-of-file comment from libgcc2.c.
5461         * config/fp-bit.c: Likewise.
5462
5463 2006-01-03  Daniel Berlin  <dberlin@dberlin.org>
5464
5465         * dominance.c: Add comment about why we use DFS numbering
5466         of dominance tree.
5467
5468 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
5469             Richard Henderson  <rth@redhat.com>
5470
5471         Merge from gomp-branch:
5472         * varasm.c (assemble_variable): Handle thread-local COMMON data.
5473         * defaults.h (ASM_OUTPUT_TLS_COMMON): Define.
5474
5475 2006-01-03  Paolo Bonzini  <bonzini@gnu.org>
5476
5477         PR rtl-optimization/25578
5478         * combine.c (combine_simplify_rtx, force_to_mode): Don't
5479         pass a parameter to simplify_shift_const if changing ASHIFTRT
5480         to LSHIFTRT.
5481
5482 2006-01-03  Adrian Straetling  <straetling@de.ibm.com>
5483
5484         * builtins.c (get_builtin_sync_mem): New function.
5485         (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
5486         expand_builtin_lock_test_and_set, expand_builtin_lock_release):
5487         Call get_builtin_sync_mem to generate mem rtx.
5488
5489 2006-01-03  Richard Guenther  <rguenther@suse.de>
5490
5491         PR c/25183
5492         * stmt.c (add_case_node): Make sure to clear overflow flags
5493         from ranges.
5494
5495 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
5496
5497         Merge from gomp-branch.
5498         * config/sparc/sync.md: New file.
5499         * config/sparc/sparc.md (UNSPECV_MEMBAR, UNSPECV_CAS, UNSPECV_SWAP,
5500         UNSPECV_LDSTUB): New constants.
5501         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): New function.
5502         * config/sparc/predicates.md (memory_reg_operand): New predicate.
5503         * config/sparc/sparc-protos.h (sparc_expand_compare_and_swap_12): New
5504         prototype.
5505
5506 2006-01-03  Roger Sayle  <roger@eyesopen.com>
5507
5508         * combine.c (reg_subword_p): New predicate to test whether the
5509         destination of a set refers to a subword/piece of a register.
5510         (try_combine): Generalize the code to merge the setting of a
5511         pseudo to a constant followed by a set of a subword of that
5512         register to a constant.
5513
5514 2006-01-03  Kazu Hirata  <kazu@codesourcery.com>
5515
5516         * basic-block.h (control_flow_graph): Change the type of
5517         x_label_to_block_map to VEC(basic_block,gc) *.
5518         * tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
5519         set_bb_for_stmt): Adjust the uses of x_label_to_block_map.
5520
5521         * tree-ssa-propagate.c (cfg_blocks): Change the type to
5522         VEC(basic_block,heap) *.
5523         (cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
5524         ssa_prop_fini): Adjust the uses of cfg_blocks.
5525
5526 2006-01-03  Steven Bosscher  <stevenb.gcc@gmail.com>
5527
5528         * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
5529         COMPONENT_REFs.
5530         * emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
5531         hashing trees instead of a pointer hash.
5532         (mem_attrs_htab_eq): Do a deep compare instead of a pointer
5533         compare for MEM_EXPR.
5534
5535         PR rtl-optimization/25130
5536         * cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
5537         when comparing MEMs for GCSE
5538
5539 2006-01-03  Ben Elliston  <bje@au.ibm.com>
5540
5541         * targhooks.h (default_decimal_float_supported_p): Declare.
5542         * targhooks.c (default_decimal_float_supported_p): Define.
5543         * target-def.h (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Redefine to
5544         `default_decimal_float_supported_p'.
5545         * doc/tm.texi (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Update.
5546
5547 2006-01-02  Adam Nemet  <anemet@caviumnetworks.com>
5548
5549         * combine.c (apply_distributive_law <SUBREG>): Check
5550         TRULY_NOOP_TRUNCATION.
5551
5552 2006-01-02  Geoffrey Keating  <geoffk@apple.com>
5553
5554         * dwarf2out.c (have_switched_text_section): Delete.
5555         (have_multiple_function_sections): New.
5556         (have_location_lists): Make 'bool'.
5557         (add_AT_loc_list): Use 'true' not '1'.
5558         (dwarf2out_switch_text_section): Set have_multiple_function_sections.
5559         (output_loc_list): Use have_multiple_function_sections.
5560         (output_ranges): Likewise.
5561         (dwarf2out_begin_function): Set have_multiple_function_sections if
5562         necessary.
5563         (dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
5564         Check function_section rather than DECL_SECTION_NAME.
5565         (dwarf2out_finish): Use have_multiple_function_sections.
5566         Don't clear have_location_lists.
5567
5568 2006-01-02  Eric Botcazou  <ebotcazou@adacore.com>
5569             Jan Hubicka  <jh@suse.cz>
5570
5571         * cfglayout.c (fixup_reorder_chain): Remove kludge for the
5572         case of conditional jump jumping to the next instruction.
5573         * cfgrtl.c (force_nonfallthru_and_redirect): Accept all
5574         cases of conditional jump jumping to the next instruction.
5575
5576 2006-01-02  Jan Hubicka  <jh@suse.cz>
5577
5578         * i386.c (*_cost): Add COSTS_N_INSNS.
5579         (ix86_rtx_costs): Do not use COSTS_N_INSNS.
5580
5581 2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
5582
5583         PR target/25259
5584         * Makefile.in (DECNUMINC): Include libdecnumber's build directory.
5585
5586 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
5587
5588         * config/arm/arm.c (all_fpus): Fix comment typo.
5589         * config/darwin.c: Likewise.
5590         * config/frv/frv.h (FRV_STRUCT_VALUE_REGNUM): Likewise.
5591         * config/h8300/h8300.md (extendqisi2_h8300hs): Likewise.
5592         * config/m68hc11/m68hc11.c (m68hc11_reload_operands): Likewise.
5593
5594 2006-01-01  David Edelsohn  <edelsohn@gnu.org>
5595
5596         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.
5597         (rs6000_split_compare_and_swapqhi): New.
5598         * config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New.
5599         (sync_compare_and_swapqhi_internal): New.
5600         * config/rs6000/rs6000-protos.h: Declare.