OSDN Git Service

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