OSDN Git Service

7c6288e81042bbd47893deb7997d6d8d13d8e719
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
1 2006-02-02  Diego Novillo  <dnovillo@redhat.com>
2
3         * tree-inline.c (copy_tree_r): Also copy OMP_CLAUSE nodes.
4
5 2006-02-02  Diego Novillo  <dnovillo@redhat.com>
6
7         PR 25990
8         * tree-cfg.c (move_block_to_fn): Clear out the basic block
9         array after growing it.
10
11 2006-02-01  Steve Ellcey  <sje@cup.hp.com>
12
13         PR middle-end/24901
14         * fold-const.c (fold_checksum_tree): Change type of buf.
15
16 2006-02-01  Bernd Schmidt  <bernd.schmidt@analog.com>
17
18         * reload.c (push_secondary_reload): Initialize t_icode.
19
20 2006-02-01  Jakub Jelinek  <jakub@redhat.com>
21
22         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): For
23         -msoft-float -mlong-double-128 only issue a warning, but don't
24         swich to DFmode long double.
25
26 2006-02-01  Hans-Peter Nilsson  <hp@axis.com>
27
28         * cse.c (fold_rtx) <case RTX_COMM_COMPARE, RTX_COMPARE>: When arg1
29         has a constant equivalent, iterate over equivalents for arg0,
30         calling simplify_relational_operation and if there's a result
31         cheaper than X, apply fold_rtx and return the result.
32
33 2006-02-01  Jan Hubicka  <jh@suse.cz>
34
35         * opts.c (no_unit_at_a_time_default): New global variable.
36         (decode_options): Use it.
37         * opts.h (no_unit_at_a_time_default): Declare.
38
39 2006-02-01  Paul Brook  <paul@codesourcery.com>
40
41         * function.c (assign_parm_setup_reg): Use function argument promotion
42         rules.
43         * expr.c (expand_expr_real_1): Use function argument promotion rules
44         for PARM_DECLs.
45
46 2006-02-01  Steve Ellcey  <sje@cup.hp.com>
47
48         * gcc.c (process_command): Change j to 'unsigned int'.
49
50 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
51
52         PR middle-end/26001
53         * expr.c (expand_expr_real_1) <case ARRAY_REF>:
54         Use the corrected index for the character
55         out of the string constant.
56
57 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
58
59         * mode-switching.c (optimize_mode_switching): Fix size
60         allocated for bb_info[n_entities].
61
62 2006-01-31  Andrew Pinski  <pinskia@physics.uc.edu>
63
64         * gcc.c (main): Correct type that is allocated for
65         explicit_link_files.
66
67 2006-01-31  Jakub Jelinek  <jakub@redhat.com>
68
69         * config/s390/s390.c (init_alignment_context): Set
70         ALIAS_SET_MEMORY_BARRIER on the MEM.
71         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): Likewise.
72
73 2006-01-31  Uttam Pawar  <uttamp@us.ibm.com>
74
75         PR middle-end/25933
76         * loop-unroll.c (unroll_loop_runtime_iterations): Free
77         dom_bbs pointer.
78         * tree-ssa-live.c (type_var_init): Allocate bitmap after
79         call to tpa_init.
80
81 2006-01-31  Marcin Dalecki  <martin@dalecki.de>
82
83         * tree-vrp.c: Use XNEW/XCNEW allocation wrappers.
84         * regrename.c: Ditto.
85         * tree-ssa-loop-im.c: Ditto.
86         * tree-dump.c: Ditto.
87         * tree-complex.c: Ditto.
88         * genrecog.c: Ditto.
89         * tree-ssa-threadupdate.c: Ditto.
90         * tracer.c: Ditto.
91         * java/class.c: Ditto.
92         * java/jcf-parse.c: Ditto.
93         * java/resource.c: Ditto.
94         * java/except.c: Ditto.
95         * java/jvspec.c: Ditto.
96         * java/jcf-write.c: Ditto.
97         * java/jcf-path.c: Ditto.
98         * java/gjavah.c: Ditto.
99         * java/zextract.c: Ditto.
100         * java/jcf-io.c: Ditto.
101         * java/jcf.h: Ditto.
102         * java/buffer.c: Ditto.
103         * java/lang.c: Ditto.
104         * java/parse-scan.y: Ditto.
105         * java/lex.c: Ditto.
106         * java/lex.h: Ditto.
107         * cfgloopmanip.c: Ditto.
108         * postreload-gcse.c: Ditto.
109         * tree-ssa-loop-manip.c: Ditto.
110         * postreload.c: Ditto.
111         * tree-ssa-loop-ch.c: Ditto.
112         * loop.c: Ditto.
113         * ipa-cp.c: Ditto.
114         * cppspec.c: Ditto.
115         * diagnostic.c: Ditto.
116         * final.c: Ditto.
117         * genoutput.c: Ditto.
118         * gcc.c: Ditto.
119         * cfghooks.c: Ditto.
120         * cfgloopanal.c: Ditto.
121         * objc/objc-act.c: Ditto.
122         * gcov.c: Ditto.
123         * genextract.c: Ditto.
124         * genautomata.c: Ditto.
125         * pretty-print.c: Ditto.
126         * genemit.c: Ditto.
127         * cgraphunit.c: Ditto.
128         * flow.c: Ditto.
129         * df-scan.c: Ditto.
130         * haifa-sched.c: Ditto.
131         * dominance.c: Ditto.
132         * dbxout.c: Ditto.
133         * tree-ssa-loop-ivopts.c: Ditto.
134         * df-core.c: Ditto.
135         * mode-switching.c: Ditto.
136         * modulo-sched.c: Ditto.
137         * graph.c: Ditto.
138         * ipa-pure-const.c: Ditto.
139         * cse.c: Ditto.
140         * fix-header.c: Ditto.
141         * web.c: Ditto.
142         * tree-stdarg.c: Ditto.
143         * ipa-utils.c: Ditto.
144         * loop-init.c: Ditto.
145         * ipa-inline.c: Ditto.
146         * cfganal.c: Ditto.
147         * global.c: Ditto.
148         * alloc-pool.c: Ditto.
149         * dwarf2out.c: Ditto.
150         * opts.c: Ditto.
151         * genattrtab.c: Ditto.
152         * tree-ssa-loop-ivcanon.c: Ditto.
153         * predict.c: Ditto.
154         * timevar.c: Ditto.
155         * lcm.c: Ditto.
156         * fortran/gfortranspec.c: Ditto.
157         * regmove.c: Ditto.
158         * local-alloc.c: Ditto.
159         * langhooks.c: Ditto.
160         * function.c: Ditto.
161         * tree-vectorizer.c: Ditto.
162         * gcse.c: Ditto.
163         * ipa-type-escape.c: Ditto.
164         * alias.c: Ditto.
165         * tree-if-conv.c: Ditto.
166         * profile.c: Ditto.
167         * ipa.c: Ditto.
168         * tree-data-ref.c: Ditto.
169         * loop-unroll.c: Ditto.
170         * treelang/treetree.c: Ditto.
171         * calls.c: Ditto.
172         * bt-load.c: Ditto.
173         * ggc-common.c: Ditto.
174         * except.c: Ditto.
175         * coverage.c: Ditto.
176         * cselib.c: Ditto.
177         * tree-cfgcleanup.c: Ditto.
178         * tree-ssa-pre.c: Ditto.
179         * cfgcleanup.c: Ditto.
180         * loop-invariant.c: Ditto.
181         * loop-iv.c: Ditto.
182         * ipa-prop.c: Ditto.
183         * print-tree.c: Ditto.
184         * conflict.c: Ditto.
185         * ggc-page.c: Ditto.
186         * sched-deps.c: Ditto.
187         * regclass.c: Ditto.
188         * tree-object-size.c: Ditto.
189         * combine.c: Ditto.
190         * bb-reorder.c: Ditto.
191         * resource.c: Ditto.
192         * var-tracking.c: Ditto.
193         * cfgloop.c: Ditto.
194         * df-problems.c: Ditto.
195         * reg-stack.c: Ditto.
196         * tlink.c: Ditto.
197         * gccspec.c: Ditto.
198         * sched-rgn.c: Ditto.
199         * tree-ssa-structalias.c: Ditto.
200         * tree-ssa-reassoc.c: Ditto.
201         * config/darwin-c.c: Ditto.
202         * config/darwin.c: Ditto.
203         * config/arm/arm.c: Ditto.
204         * cfgrtl.c: Ditto.
205         * collect2.c: Ditto.
206         * reload1.c: Ditto.
207
208 2006-01-31  Nicolas Pitre  <nico@cam.org>
209
210         * arm.md (smaxsi3): Make aware of smax_m1.
211         (smax_m1): New.
212
213 2006-01-31  Nathan Sidwell  <nathan@codesourcery.com>
214
215         * gcc/config/m68k/lb1sf68.asm: Use moveq to load small constants.
216
217 2006-01-31  Richard Guenther  <rguenther@suse.de>
218
219         * doc/invoke.texi (-msselibm): Document.
220         * target.h (expand_library_builtin): New target hook.
221         * builtins.c (expand_builtin): Use expand_library_builtin.
222         (default_expand_library_builtin): New function.
223         * gcc.c (LINK_GCC_MATH_SPEC): Define.
224         (LINK_COMMAND_SPEC): Handle %(link_gcc_math).
225         (link_gcc_math_spec): Declare.
226         (static_specs): Add link_gcc_math_spec.
227         * expr.h (default_expand_library_builtin): Declare.
228         * target-def.h (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
229         (TARGET_INITIALIZER): Add TARGET_EXPAND_LIBRARY_BUILTIN.
230         * config/i386/i386.h: Provide LINK_GCC_MATH_SPEC.
231         * config/i386/i386.opt (msselibm): New target option.
232         * config/i386/i386.c (ix86_builtin_function_variants): New array.
233         (ix86_init_sse_abi_builtins): New function.
234         (ix86_expand_library_builtin): Likewise.
235         (TARGET_EXPAND_LIBRARY_BUILTIN): Define.
236         (override_options): Handle error conditions wrt -msselibm.
237         (ix86_builtins): Add function codes for SSE2 ABI builtins.
238         (ix86_init_builtins): Call ix86_init_sse_abi_builtins.
239         * doc/extend.texi (__builtin_sse2_*): Document new target specific
240         builtins.
241
242 2006-01-31  Richard Guenther  <rguenther@suse.de>
243         Paolo Bonzini  <bonzini@gnu.org>
244
245         * doc/install.texi (--disable-libgcc-math): Document.
246
247 2006-01-30  Marcin Dalecki  <martin@dalecki.de>
248
249         * expr.h (expand_normal): new inline function.
250         * builtins.c: use it, use EXPAND_NORMAL explicitely.
251         * dojump.c: use it.
252         * dwarf2out.c: use it.
253         * expr.c: use it.
254         * calls.c: use it.
255         * expmed.c: use it.
256         * except.c: use it.
257         * config/sparc/sparc.c: use it.
258         * config/i386/i386.c: use it.
259         * config/rs6000/rs6000.c: use it.
260         * config/arm/arm.c: use it.
261         * config/mips/mips.c: use it.
262         * stmt.c: use it, use EXPAND_NORMAL explicitely.
263
264 2006-01-30  Roger Sayle  <roger@eyesopen.com>
265
266         * config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast
267         argv to the appropriate type.
268
269 2006-01-30  Zdenek Dvorak <dvorakz@suse.cz>
270
271         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Remove
272         unreachable code.
273
274 2006-01-30  Ulrich Weigand  <uweigand@de.ibm.com>
275
276         PR target/26018
277         * config/s390/s390.c (struct machine_function): New flag
278         decomposed_literal_pool_addresses_ok_p.
279         (s390_reorg): Set it before final stage of literal pool transforms.
280         (s390_decompose_address): Only accept displacements of the form
281         (minus (label_ref ...) (label_ref ...)) if that flag is set.
282
283 2006-01-30  Carlos O'Donell  <carlos@codesourcery.com>
284
285         * optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias
286         the comparison routine return.
287
288 2006-01-30  Michael Matz  <matz@suse.de>
289
290         * global.c (find_reg): Only evict for global regs.
291         Take n_refs into account and dump more info.
292
293 2006-01-30  J"orn Rennecke <joern.rennecke@st.com>
294
295         PR target/14798:
296         * sh.c (pragma_interrupt, trap_exit, sp_switch): Remove variable.
297         (pragma_trap, pragma_nosave_low_regs): Likewise.
298         (current_function_anonymous_args): Likewise.
299         (sh_deferred_function_attributes): New variable.
300         (sh_deferred_function_attributes_tail): Likewise.
301         (print_operand): For '@', look up trap_exit attribute.
302         (calc_live_regs): Look up trapa_handler attribute.  For trapa
303         handlers, save/restore fpscr, but don't do any other
304         interrupt-specific saves.
305         Don't save r0..r7 if the nosave_low_regs attribute is in effect.
306         Fix check for partially saved registers to check for SHmedia.
307         (sh_expand_prologue, sh_expand_epilogue): Look up sp_switch attribute.
308         (sh_output_function_epilogue): Don't clear any of the removed
309         variables.
310         (sh_insert_attributes): Don't check pragma_interrupt.
311         Insert deferred attributes.  Check that interrupt attribute is
312         present for other attributes that require its presence.
313         (sh_attribute_table): Add new attributes trapa_handler and
314         nosave_low_regs.
315         (sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
316         Don't check for pragma_interrupt.  Don't store argument.
317         * sh.h (pragma_interrupt, sp_switch): Don't declare.
318         (sh_deferred_function_attributes): Declare.
319         (sh_deferred_function_attributes_tail): Likewise.
320         * sh.md (sp_switch_1): Add operand.  Change generator caller.
321         (sh_pr_interrupt, sh_pr_trapa, sh_pr_nosave_low_regs): Remove.
322         (*return_i): Don't use when trap_exit attribute is in effect.
323         (*return_trapa): New insn pattern.
324         * sh-c.c: New file.
325         * config.gcc (sh[123456ble]*-* | sh-*-*): New trailer stanza,
326         setting c_target_objs and cxx_target_objs.
327         * t-sh: Add rule for sh-c.o.
328
329 2006-01-30  Richard Guenther  <rguenther@suse.de>
330
331         PR c++/23372
332         * gimplify.c (gimplify_target_expr): Handle easy cases
333         without creating a temporary.
334
335 2006-01-30  Nathan Sidwell  <nathan@codesourcery.com>
336
337         * vec.h (safe_grow): Remove duplicated line.
338
339 2006-01-29  Diego Novillo  <dnovillo@redhat.com>
340
341         PR 25874
342         * omp-low.c (execute_expand_omp): Move CFG cleanup code ...
343         (expand_omp): ... here.
344         (expand_omp_parallel): Only remove barriers for combined
345         parallel+workshare constructs.
346
347 2006-01-29  Eric Botcazou  <ebotcazou@adacore.com>
348
349         Revert
350
351         2005-11-09  Eric Botcazou  <ebotcazou@adacore.com>
352         * tree.c (build_qualified_type): Chain the new type to the original
353         type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO linked lists if it is
354         a POINTER_TYPE or a REFERENCE_TYPE respectively.
355         (build_pointer_type_for_mode): Only return unqualified types.
356         (build_reference_type_for_mode): Likewise.
357
358 2006-01-29  Gabriel Dos Reis  <gdr@integgrable-solutions.net>
359
360         * configure.ac (cxx_compat_warn): Set if -Wc++-compat is supported.
361         * Makefile.in (CXX_COMPAT_WARN): Define.
362         * configure: Regenerate.
363
364 2006-01-29  Dorit Nuzman  <dorit@il.ibm.com>
365
366         PR tree-opt/25911
367         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
368         to an if check.
369
370 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
371
372         * toplev.c: Fix thinko.
373
374 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
375             Marcin Dalecki  <martin@dalecki.de>
376
377         * toplev.c (floor_log2, exact_log2): Don't define if __cplusplus.
378         (push_srcloc): Use XNEW.
379         (init_asm_output, default_get_pch_validity): Use XNEWVEC.
380
381 2006-01-29  Kenneth Zadeck <zadeck@naturalbridge.com>
382
383         * df-core.c (df_set_blocks): Deleted all variable.
384
385 2006-01-28  Ian Lance Taylor  <ian@airs.com>
386
387         * cgraphunit.c (cgraph_assemble_pending_functions): Call
388         cgraph_output_pending_asms.
389
390 2006-01-28  Zack Weinberg  <zackw@panix.com>
391
392         * c.opt: Add -W(no-)overlength-strings.
393         * doc/invoke.texi: Document it.
394         * c-opts.c (c_common_handle_option): -pedantic implies
395         -Woverlength-strings, if not explicitly disabled already.
396         (c_common_post_options): -Woverlength-strings defaults to off, and
397         is always off for C++.
398         * c-common.c (fix_string_type): Issue warning about strings longer
399         than is portable only if warn_overlength_strings.  Rearrange code
400         a little for clarity.
401         * configure.in: Check for -Wno-overlength-strings as well before
402         enabling -pedantic in stage 1.
403         * Makefile.in (STRICT2_WARN): Add -Wno-overlength-strings.
404         (gcc.o-warn, insn-automata.o-warn, build/gencondmd.o-warn): Delete.
405
406         * genconditions.c (write_header, write_one_condition)
407         (write_conditions, write_writer): Consolidate very long strings
408         that were broken up to fit in C89 portable limit.  Don't use
409         printf when fputs will do.
410
411 2006-01-28  Adam Nemet  <anemet@caviumnetworks.com>
412
413         * combine.c (simplify_comparison <AND>): Check
414         TRULY_NOOP_TRUNCATION before start using a subreg.
415
416         * config/mips/mips.md (*branch_zero<mode>,
417         *branch_zero<mode>_inverted, *branch_equality<mode>,
418         *branch_equality<mode>_inverted, *branch_equality<mode>_mips16):
419         Remove mode check from comparisons.
420
421 2006-01-28  Kenneth Zadeck <zadeck@naturalbridge.com>
422
423         * config/mips/mips-protos.h (mips_set_live_on_entry): Deleted.
424
425 2006-01-28  Kazu Hirata  <kazu@codesourcery.com>
426
427         * expmed.c (const_mult_add_overflow_p): Remove.
428         * expr.h: Remove the prototype for const_mult_add_overflow_p.
429
430         * recog.c (validate_replace_rtx_subexp): Remove.
431         * recog.h: Remove the prototype for
432         validate_replace_rtx_subexp.
433
434         * integrate.h: Remove the prototype for
435         copy_decl_for_inlining.
436         * rtl.h: Remove the prototype for mark_constant_function.
437         * tree-vectorizer.h: Remove the prototype for
438         vect_strip_conversion.
439
440         * modulo-sched.c (create_partial_schedule,
441         free_partial_schedule, reset_partial_schedule): Make them
442         static.
443
444         * hooks.c (hook_bool_rtx_int_false): Remove.
445         * hooks.h: Remove the prototype for hook_bool_rtx_int_false.
446
447 2006-01-28  David Edelsohn  <edelsohn@gnu.org>
448
449         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
450         and -mlong-double-128 are incompatible.
451         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
452         * config/rs6000/t-aix43 (LIB2FUNCS_EXTRA): Add ppc64-fp.c.
453         (TARGET_LIBGCC2_CFLAGS): Define.
454         * config/rs6000/t-aix52 (LIB2FUNCS_EXTRA): Same.
455         (TARGET_LIBGCC2_CFLAGS): Same.
456         * config/rs6000/ppc64-fp.c: Compile for 64-bit AIX.
457
458 2006-01-28  Kazu Hirata  <kazu@codesourcery.com>
459
460         PR c/19606.
461         * c-typeck.c (build_binary_op): Perform implicit casts of
462         operands before shortening them.
463
464         * cfgloopmanip.c (split_loop_bb): Remove.
465         * cfgloop.h: Remove the prototype for split_loop_bb.
466
467         * cfgloop.c (flow_loop_outside_edge_p): Remove.
468         * cfgloop.h: Remove the prototype for
469         flow_loop_outside_edge_p.
470
471         * emit-rtl.c (init_virtual_regs): Make it static.
472         * function.h: Remove the prototype for init_virtual_regs.
473
474         * recog.c (peephole2_optimize): Make it static.
475         * recog.h: Remove the prototype for peephole2_optimize.
476
477 2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>
478
479         * df-scan.c (df_record_entry_block_defs): Check if
480         INCOMING_RETURN_ADDR_RTX is defined.
481
482 2006-01-27  Daniel Berlin  <dberlin@dberlin.org>
483             Kenneth Zadeck <zadeck@naturalbridge.com>
484
485         PR rtl-optimization/24762
486         * doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY.
487         * targhooks.c (hook_void_bitmap): New hook prototype.
488         * targhoohs.h (hook_void_bitmap): Ditto.
489         * bitmap.h (bitmap_head_def): Moved to coretypes.h.
490         * coretypes.h (bitmap_head_def): Moved from bitmap.h.
491         * target.h (live_on_entry): New function pointer.
492         * df-scan.c (df_all_hard_regs): Removed.
493         (df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs.
494         (df_scan_free_internal): Added df->entry_block_defs.
495         (df_scan_alloc): Ditto.
496         (df_scan_dump): Ditto.
497         (df_uses_record): Plumbed flag field properly thru calls.
498         Record EH_RETURN_DATA_REGNO in eh blocks unconditionally.
499         This part fixes PR24762.
500         (df_bb_refs_record): Added code to make the frame and arg
501         pointers live in EH blocks.
502         (df_refs_record): Added call to df_record_entry_block_defs.
503         (df_record_entry_block_defs): New function.
504         * df-core.c: Added comments to describe new artifical defs.
505         * df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags.
506         (entry_block_defs): New field in struct df.
507         (df_all_hard_regs): Deleted.
508         * target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY.
509         * df-problems.c (df_ru_bb_local_compute_process_def):
510         Added code to handle artifical defs in the entry to a function.
511         (df_ru_bb_local_compute): Ditto.
512         (df_rd_bb_local_compute_process_def):  Ditto.
513         (df_rd_bb_local_compute): Ditto.
514         (df_lr_bb_local_compute): Ditto.
515         (df_ur_bb_local_compute): Ditto.
516         (df_urec_bb_local_compute):  Ditto.
517         (df_chain_create_bb):  Ditto.
518         (df_ur_local_finalize): Removed entry.
519         (df_urec_init): Ditto.
520         (df_urec_local_finalize): Ditto.
521         (df_ri_bb_compute): Added detection of last use of pseudos.
522         * Makefile.in (df-scan.o): Updated dependencies.
523         * config/mips/mips-protos.h (mips_set_live_on_entry): Added.
524         * config/mips/mips.c (mips_set_live_on_entry): Added.
525         * config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value
526         for target hook.
527         * dce.c (marked_insn_p): Added code to handle artifical defs.
528
529 2006-01-27  H.J. Lu  <hongjiu.lu@intel.com>
530
531         * config/i386/emmintrin.h (_mm_cvtsd_f64): Add missing Intel
532         intrinsic.
533         (_mm_cvtsi128_si64): Likewise.
534         (_mm_cvtsd_si64): Likewise.
535         (_mm_cvttsd_si64): Likewise.
536         (_mm_cvtsi64_sd): Likewise.
537         (_mm_cvtsi64_si128): Likewise.
538         * config/i386/mmintrin.h (_m_from_int64): Likewise.
539         (_mm_cvtsi64_m64): Likewise.
540         (_m_to_int64): Likewise.
541         (_mm_cvtm64_si64): Likewise.
542         * config/i386/xmmintrin.h (_mm_cvtss_si64): Likewise.
543         (_mm_cvttss_si64): Likewise.
544         (_mm_cvtsi64_ss): Likewise.
545         (_mm_cvtss_f32): Likewise.
546
547 2006-01-27  Carlos O'Donell  <carlos@codesourcery.com>
548
549         * c-pragma.c (init_pragma) : Call c_register_pragma_with_expansion
550         for pragma redefine_extname.
551
552 2006-01-27  Jakub Jelinek  <jakub@redhat.com>
553
554         PR target/25864
555         * libgcc-std.ver: Add GCC_4.1.0 symbol version.
556         * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Only append
557         -mno-minimal-toc to previous content.
558         (bispecs): Remove goal.
559         * config/rs6000/ppc64-fp.c: Define TMODES before including fp-bit.h.
560         * config/rs6000/darwin-ldouble.c: Don't provide _xlq*@GCC_3.4
561         compatibility aliases on powerpc-*-*gnu*.
562         * config/rs6000/libgcc-ppc-glibc.ver: New file.
563         * config/rs6000/t-ppccomm (SHLIB_MAPFILES): Append
564         libgcc-ppc-glibc.ver on powerpc*-*-*gnu*.
565         (TARGET_LIBGCC2_CFLAGS): Append -specs=ldblspecs.
566         (ldblspecs): New goal.
567         * config/rs6000/t-linux64 (SHLIB_MAPFILES): Removed.
568         * mklibgcc.in: If $TPBIT is empty, don't compile _sf_to_tf and
569         _df_to_tf.
570         * config/fp-bit.h (TMODES): Don't define if none of TFLOAT,
571         L_sf_to_tf or L_df_to_tf is defined.
572
573 2006-01-27  David Edelsohn  <edelsohn@gnu.org>
574             Alan Modra  <amodra@bigpond.net.au>
575
576         PR target/25864
577         * config/rs6000/linux.h (POWERPC_LINUX): Define.
578         * config/rs6000/linux64.h (POWERPC_LINUX): Define.
579         * config/rs6000/darwin-ldouble.c: Build on 32-bit PowerPC.
580         * config/rs6000/darwin.h (TARGET_IEEEQUAD): Define to zero.
581         * config/rs6000/aix.h (TARGET_IEEEQUAD): Define to zero.
582         * config/rs6000/rs6000.c (rs6000_ieeequad): New variable.
583         (rs6000_override_options): Initialize rs6000_ieeequad.
584         Initialize TFmode format to ibm_extended_format if not
585         TARGET_IEEEQUAD.
586         (rs6000_handle_option): Accept -mabi= ibmlongdouble and
587         ieeelongdouble.
588         (rs6000_emit_move): Move !TARGET_IEEEQUAD as two parts.
589         (rs6000_return_in_memory): Only return IEEEQUAD in memory.
590         (function_arg_advance): IBM long double passed in two FPRs, not
591         split.
592         (function_arg): IBM long double passed in FPRs.
593         (rs6000_pass_by_reference): Only IEEEQUAD passed by reference.
594         (rs6000_gimplify_va_arg): IBM long double passed in two FPRs.
595         Only multireg GPR aligned.
596         (rs6000_init_libfuncs): Enable IBM long double functions if not
597         IEEEQUAD.
598         (rs6000_generate_compare): Use IBM long double compare if not
599         TARGET_IEEEQUAD.
600         * config/rs6000/rs6000.h (rs6000_ieeequad): Declare.
601         (TARGET_IEEEQUAD): Define.
602         (CANNOT_CHANGE_MODE_CLASS): Any mode larger than doubleword if
603         not TARGET_IEEEQUAD.
604         * config/rs6000/rs6000.md: Enable TFmode patterns if
605         !TARGET_IEEEQUAD.
606         * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
607         * config/rs6000/svr4.h (SUBTARGET_OVERRIDE_OPTIONS): -msoft-float
608         and -mlong-double-128 are incompatible.
609         * doc/invoke.texi (-mabi): Collect options together.  Add
610         ibmlongdouble and ieeelongdouble.
611
612 2006-01-27  Richard Sandiford  <richard@codesourcery.com>
613
614         * doc/rtl.texi (SYMBOL_REF_DATA): Adjust documentation for new
615         opaque type.
616         * optabs.c (init_one_libfunc): Use SET_SYMBOL_REF_DECL.
617         * varasm.c (make_decl_rtl, build_constant_desc): Likewise.
618         (force_const_mem): Use SET_SYMBOL_REF_CONSTANT.
619         * rtl.h (rtunion_def): Remove rt_ptr.
620         (X0PTR): Delete.
621         (SYMBOL_REF_DATA): Use X0ANY instead of X0PTR.
622         (SET_SYMBOL_REF_DECL, SET_SYMBOL_REF_CONSTANT): New macros.
623         * config/i386/winnt.c (i386_pe_mark_dllexport)
624         (i386_pe_mark_dllimport): Use SET_SYMBOL_REF_DECL.
625
626 2006-01-27 Gabor Loki <loki@gcc.gnu.org>
627
628         * cfgcleanup.c (try_crossjump_to_edge): Fix comment typo.
629
630 2006-01-26 Alexandre Oliva  <aoliva@redhat.com>
631
632         PR other/24829
633         PR target/24831
634         * gthr-dce.h: Do not gthrw-ify pthread_once_init,
635         pthread_key_delete.  From John David Anglin.  gthrw-ify
636         pthread_getunique_np only if it it's not a macro.  Delete
637         UNUSED macro.
638         (__gthread_objc_condition_allocate, __gthread_objc_condition_deallocate,
639         __gthread_objc_condition_wait, __gthread_objc_condition_broadcast,
640         __gthread_objc_condition_signal, __gthread_key_delete): Add
641         "__attribute__ ((__unused__))" to unused arguments.
642         (__gthread_recursive_mutex_init_function): Add missing return.
643         * gthr-dce.h, gthr-tpf.h, gthr-solaris.h, gthr-posix.h,
644         gthr-posix95.h: Use macro-based approach for name redirection
645         on targets missing weakref.
646
647 2006-01-26  Zack Weinberg  <zackw@panix.com>
648
649         * genconditions.c (write_header): In generated code, #ifdef out
650         all includes and fake declarations, except includes of bconfig.h
651         and system.h, unless GCC_VERSION >= 3001.  Do not include
652         gensupport.h in any case.
653         (write_conditions): Generate a definition of struct c_test.  Add
654         a comment to the generated #endif.
655         (write_one_condition): Escape backslashes in string too.
656         (write_writer): Generated code must escape backslashes and quote
657         marks (but not newlines) in the strings it writes.
658         * Makefile.in (build/gencondmd.o): Update dependencies.
659
660 2006-01-26  Steve Ellcey  <sje@cup.hp.com>
661
662         PR target/25961
663         * Makefile.in (insn-automata.o): Add header file dependencies.
664         * genautomata.c: Add includes.
665
666 2006-01-26  Steve Ellcey  <sje@cup.hp.com>
667
668         PR target/25961
669         * Makefile.in (insn-automata.o): Add -Wno-error flag.
670
671 2006-01-26  Paolo Bonzini  <bonzini@gnu.org>
672
673         * configure.ac: Expect target tools paths to be passed from the toplevel
674         and wrap the detection into AS_SET_VAR_IF.  Extract side-effects out of
675         AS_SET_VAR_IF.
676         * acinclude.m4 (gcc_AC_TOOL_DIRS, gcc_AC_CHECK_TOOL): Remove.
677
678 2006-01-26  Alexandre Oliva  <aoliva@redhat.com>
679
680         PR c/25892
681         * c.opt (Wpointer-sign): Init to -1.
682         * c-opts.c (c_common_handle_option): Set to 1 on OPT_Wall and
683         OPT_pedantic, to 0 otherwise.
684         * doc/invoke.texi: Update.
685
686 2006-01-26  Paolo Bonzini  <bonzini@gnu.org>
687
688         * config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Emit
689         constants provided by 80387 instructions in the destination mode.
690
691 2006-01-26  Richard Guenther  <rguenther@suse.de>
692             Andrew Pinski  <pinskia@physics.uc.edu>
693
694         PR tree-opt/21470
695         partial PR tree-opt/17064
696         * tree-ssa-structalias.c (intra_create_variable_infos):
697         Create heap variables for incoming parameters if
698         flag_argument_noalias > 1.
699         (find_what_p_points_to): Look through default defs of
700         parameter decls.
701
702 2006-01-26  Jeff Law  <law@redhat.com>
703
704         PR ada/25900
705         * tree-vrp.c (extract_range_from_assert): When merging a VR_RANGE
706         with a VR_ANTI_RANGE and the VR_ANTI_RANGEis completely contained
707         within the VR_RANGE, use the VR_RANGE as the result, not the
708         VR_ANTI_RANGE.
709         (adjust_range_with_scev): Reject ranges from SCEV which are out
710         of bounds for the type.
711
712 2006-01-26  Daniel Berlin  <dberlin@dberlin.org>
713
714         * tree-ssa-alias.c (maybe_create_global_var): Change
715         subvar walking to an assertion that we don't have subvar'd variables.
716
717 2006-01-26  Andrew Pinski  <pinskia@physics.uc.edu>
718
719         PR C/25861
720         * c-common.c (c_common_truthvalue_conversion) <case ADDR_EXPR>:
721         Use a new variable, inner.  PARM_DECLs are always non-weak.
722
723 2006-01-26  Shantonu Sen  <ssen@opendarwin.org>
724
725         * tree.h (OMP_CLAUSE_SUBCODE_CHECK): Add definition for
726         --disable-checking.
727
728 2006-01-26  Adam Nemet  <anemet@caviumnetworks.com>
729
730         * config/mips/mips.md (*clear_upper32): New combiner pattern.
731
732 2006-01-26  Richard Earnshaw  <richard.earnshaw@arm.com>
733
734         * arm.md (smaxsi3, sminsi3): Convert to define_expand.
735         (smax_insn, smin_insn, smax_0, smin_0): New.
736
737 2006-01-26  Hans-Peter Nilsson  <hp@axis.com>
738
739         PR target/25947
740         * config/cris/cris.c (cris_order_for_addsi3): New function.
741         * config/cris/cris-protos.h: Prototype it.
742         * config/cris/cris.md (split for "move.S1 [rx=rx+i],ry")
743         (split for "move.S1 ry,[rx=rx+i]", split for "clear.[bwd] [rx=rx+i]")
744         (split for "mov(s|u).S1 [rx=rx+i],ry", split for "op.S1 [rx=rx+i],ry")
745         (split for "op.S1 [rx=rx+i],ry (swapped)")
746         (split for "op(s|u).S1 [rx=rx+i],ry")
747         (split for "op(s|u).S1 [rx=rx+i],ry (swapped, plus or bound)"):
748         Apply cris_order_for_addsi3 when generating addsi3 insns.
749
750 2006-01-25  Diego Novillo  <dnovillo@redhat.com>
751
752         * tree.h (TREE_RANGE_CHECK): Fix range predicate.
753         (TREE_BLOCK): Add call to EXPR_CHECK.
754
755 2006-01-25  Diego Novillo  <dnovillo@redhat.com>
756
757         PR 25886
758         * tree-dump.c (dequeue_and_dump): Handle OMP_CLAUSE.
759         * tree-pretty-print.c (dump_omp_clause): Extract from ...
760         (dump_omp_clauses): ... here.
761         (dump_generic_node): Handle OMP_CLAUSE.
762         * tree.c (omp_clause_num_ops): New.
763         (omp_clause_code_name): New.
764         (tree_code_size): Handle OMP_CLAUSE.
765         (tree_size): Likewise.
766         (make_node): Document handling of OMP_CLAUSE.
767         (tree_node_structure): Handle OMP_CLAUSE.
768         (omp_clause_check_failed): New.
769         (omp_clause_range_check_failed): New.
770         (omp_clause_operand_check_failed): New.
771         (build_omp_clause): New.
772         (walk_tree): Adjust handling of OMP_CLAUSE_* nodes.
773         * tree.h (enum omp_clause_code): Declare.
774         (OMP_CLAUSE_SUBCODE_CHECK): Define.
775         (OMP_CLAUSE_RANGE_CHECK): Define.
776         (OMP_CLAUSE_ELT_CHECK): Define.
777         (omp_clause_check_failed): Declare.
778         (omp_clause_operand_check_failed): Declare.
779         (omp_clause_range_check_failed): Declare.
780         (OMP_CLAUSE_CHAIN): Do not use TREE_RANGE_CHECK.
781         (OMP_CLAUSE_OPERAND): Use OMP_CLAUSE_RANGE_CHECK.
782         (OMP_CLAUSE_PRIVATE_DEBUG): Use OMP_CLAUSE_SUBCODE_CHECK.
783         (OMP_CLAUSE_LASTPRIVATE): Likewise.
784         (OMP_CLAUSE_IF_EXPR): Likewise.
785         (OMP_CLAUSE_NUM_THREADS_EXPR): Likewise.
786         (OMP_CLAUSE_SCHEDULE_CHUNK_EXPR): Likewise.
787         (OMP_CLAUSE_REDUCTION_CODE): Likewise.
788         (OMP_CLAUSE_REDUCTION_INIT): Likewise.
789         (OMP_CLAUSE_REDUCTION_MERGE): Likewise.
790         (OMP_CLAUSE_REDUCTION_PLACEHOLDER): Likewise.
791         Use tree_node.omp_clause.subcode instead of TREE_COMPLEXITY.
792         (OMP_CLAUSE_SCHEDULE_KIND): Likewise.
793         (OMP_CLAUSE_DEFAULT_KIND): Likewise.
794         (OMP_CLAUSE_CODE): Define.
795         (OMP_CLAUSE_SET_CODE): Define.
796         (OMP_CLAUSE_CODE): Define.
797         (OMP_CLAUSE_OPERAND): Define.
798         (struct tree_omp_clause): Declare.
799         (union tree_node): Add field 'omp_clause'.
800         * treestruct.def (TS_OMP_CLAUSE): Define.
801         * tree.def (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_SHARED
802         OMP_CLAUSE_FIRSTPRIVATE, OMP_CLAUSE_LASTPRIVATE,
803         OMP_CLAUSE_REDUCTION, OMP_CLAUSE_COPYIN,
804         OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_IF,
805         OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE,
806         OMP_CLAUSE_NOWAIT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Remove.
807         (OMP_CLAUSE): Define.
808         * print-tree.c (print_node): Handle OMP_CLAUSE.
809         * omp-low.c: Adapt all uses of OMP_CLAUSE_* nodes.
810         * c-typeck.c: Likewise.
811         * gimplify.c: Likewise.
812         * c-omp.c: Likewise.
813         * tree-nested.c: Likewise.
814         * tree-inline.c: Likewise.
815         * c-parser.c: Likewise.
816         * gimple-low.c (lower_omp_directive): Do not set TREE_BLOCK on
817         clauses.
818
819 2006-01-25  Roger Sayle  <roger@eyesopen.com>
820
821         PR rtl-optimization/25703
822         * combine.c (try_combine): Handle zero_extract and strict_low_part
823         of non-lowpart SUBREGs for constant reg_subword_p set optimization.
824
825 2006-01-25  Peter Bergner  <bergner@vnet.ibm.com>
826
827         * global.c: Fix comment typos.
828
829 2006-01-25  Andrew Pinski  <pinskia@physics.uc.edu>
830
831         PR target/25758
832         * config/i386/i386.c (output_pic_addr_const) <case SYMBOL_REF>:
833         Use output_addr_const instead of assemble_name.
834
835 2006-01-25  Paolo Bonzini  <bonzini@gnu.org>
836
837         * Makefile.in (sched-vis.o): Update dependencies.
838         * haifa-sched.c (sched_finish): Clear current_sched_info.
839         * cfg.c (dump_bb_info): New, split from dump_flow_info.
840         (dump_flow_info): Call it.
841         * passes.c (execute_todo): Call print_rtl_slim_with_bb to make
842         a slim RTL dump.
843         * basic-block.h (dump_bb_info): Declare.
844         * tree-dump.c (dump_enable_all): OR the flags of a -fdump-tree-all
845         option, and apply options only for dump files whose TDF_RTL,
846         TDF_TREE, or TDF_IPA bits match.
847         * rtl.h: Declare new functions exported from sched-vis.c.
848         * sched-vis.c: Enable also if scheduling is not used.
849         (print_value): Print the mode of registers if not inside scheduling.
850         (print_insn): Make it work outside the scheduler.  Beautify the output
851         a bit.
852         (dump_insn_slim, debug_insn_slim, print_rtl_slim_with_bb): New.
853
854 2006-01-25  Richard Sandiford  <richard@codesourcery.com>
855
856         * doc/rtl.texi (SYMBOL_REF_CONSTANT, SYMBOL_REF_DATA): Document.
857         * gengtype.c (adjust_field_rtx_def): Garbage-collect field 2 of
858         a SYMBOL_REF as either a tree or a constant_descriptor_rtx,
859         depending on the value of CONSTANT_POOL_ADDRESS_P.
860         * optabs.c (init_one_libfunc): Nullify SYMBOL_REF_DATA rather than
861         SYMBOL_REF_DECL.
862         * varasm.c (make_decl_rtl, build_constant_desc): Set SYMBOL_REF_DATA
863         rather than SYMBOL_REF_DECL.
864         (rtx_constant_pool): Remove const_rtx_sym_htab.
865         (const_desc_rtx_sym_hash, const_desc_rtx_sym_eq): Delete.
866         (init_varasm_status): Don't initialize const_rtx_sym_htab.
867         (force_const_mem): Point SYMBOL_REF_DATA to the constant pool entry.
868         Remove handling of const_rtx_sym_htab.
869         (find_pool_constant): Delete.
870         (get_pool_constant, get_pool_constant_mark): Use SYMBOL_REF_CONSTANT
871         rather than find_pool_constant.
872         (get_pool_constant_for_function): Delete.
873         (get_pool_mode, mark_constant): Use SYMBOL_REF_CONSTANT rather than
874         find_pool_constant.
875         * rtl.h (rtunion_def): Add rt_constant and rt_ptr fields.
876         (X0CONSTANT, X0PTR, SYMBOL_REF_DATA): New macros.
877         (SYMBOL_REF_DECL): Return NULL if CONSTANT_POOL_ADDRESS_P.
878         (SYMBOL_REF_CONSTANT): New macro.
879         (get_pool_constant_for_function): Delete.
880         * config/i386/winnt.c (i386_pe_mark_dllexport): Set SYMBOL_REF_DATA
881         rather than SYMBOL_REF_DECL.
882         (i386_pe_mark_dllimport): Likewise.
883         * config/rs6000/rs6000.c (rs6000_emit_move): Copy SYMBOL_REF_DATA
884         rather than SYMBOL_REF_DECL.
885         * config/darwin.c (machopic_indirect_data_reference): Likewise.
886         (machopic_indirect_call_target): Likewise.
887
888 2006-01-25  Eric Botcazou  <ebotcazou@adacore.com>
889
890         * flow.c (delete_noop_moves): Add missing EOL to dump message.
891
892 2006-01-25  Richard Sandiford  <richard@codesourcery.com>
893
894         * genattrtab.c (gen_bypass): Allow bypasses to contain whitespace.
895
896 2006-01-25  Kaz Kojima  <kkojima@gcc.gnu.org>
897
898         * config/sh/predicates.md (sh_register_operand): Accept CONST_DOUBLE.
899
900 2006-01-24  David Daney  <ddaney@avtrex.com>
901
902         PR java/25816
903         * configure.ac (enable_tls): New enable option.
904         (HAVE_AS_TLS): Don't do assembler check if enable_tls set.
905         * configure: Regenerate.
906         * doc/install.texi (--enable-tls): Document new option.
907         (--disable-tls): Ditto.
908
909 2006-01-24  Richard Henderson  <rth@redehat.com>
910
911         * alias.h (ALIAS_SET_MEMORY_BARRIER): New.
912         * alias.c (true_dependence): Respect it.
913         (canon_true_dependence, write_dependence_p): Likewise.
914         * builtins.c (get_builtin_sync_mem): Set it.
915
916 2006-01-25  Zdenek Dvorak <dvorakz@suse.cz>
917
918         * loop-iv.c (iv_analysis_loop_init): Use df analysis in a more
919         efficient way.
920
921 2006-01-24  DJ Delorie  <dj@redhat.com>
922
923         * expmed.c (store_bit_field): Don't arbitrarily deny using insv
924         for storing constants in single-bit bitfields.
925
926 2006-01-25  Ben Elliston  <bje@au.ibm.com>
927
928         * dfp.c (dfp_byte_swap): Use uint32_t and not unsigned long.
929
930 2006-01-24  Andrew Pinski  <pinskia@physics.uc.edu>
931
932         PR tree-opt/25860
933         * tree-ssa-pre.c (phi_translate): Return NULL
934         for AGGREGATE_TYPE's.
935
936 2006-01-24  Zack Weinberg  <zackw@panix.com>
937
938         * genautomata.c (process_state_for_insn_equiv_partition):
939         Use xcalloc for insn_arcs_array.
940         * vec.h (DEF_VEC_ALLOC_FUNC_I): New set of templates.
941         (DEF_VEC_ALLOC_I): Use it, not DEF_VEC_ALLOC_FUNC_P.
942
943 2006-01-24  Richard Henderson  <rth@redhat.com>
944
945         * genextract.c (VEC_safe_set_locstr): Take VEC by reference;
946         update all callers.
947
948 2006-01-23  Paolo Bonzini  <bonzini@gnu.org>
949
950         PR rtl-optimization/25890
951         PR rtl-optimization/25905
952         * combine.c (expand_compound_operation, expand_field_assignment):
953         Fail if the bitfield's final position is out of bounds.
954
955 2006-01-24  Ian Lance Taylor  <ian@airs.com>
956
957         PR middle-end/25930
958         * cgraphunit.c (cgraph_output_in_order): Don't clear
959         cgraph_asm_nodes until after asm strings have been output.
960
961 2006-01-23  Adam Nemet  <anemet@caviumnetworks.com>
962
963         * fix-header.c (read_scan_file): Add new parameter imultilib when
964         calling register_include_chains.
965
966 2006-01-23  Diego Novillo  <dnovillo@redhat.com>
967
968         * omp-low.c: Update documentation.
969
970 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
971             Daniel Berlin  <dberlin@dberlin.org>
972
973         PR tree-opt/25315
974         PR tree-opt/25857
975         * tree-ssa-pre.c (insert_extra_phis): If an incomming edge is abnormal
976         return from the function.
977
978 2006-01-22  Zack Weinberg  <zackw@panix.com>
979
980         * rtl.def (match_code): Add second argument.
981         * genpreds.c (write_extract_subexp): New function.
982         (write_match_code): Add path argument.  Use write_extract_subexp.
983         (write_predicate_expr): Pass path to write_match_code.
984         (mark_mode_tests): MATCH_CODE applied to a subexpression does
985         not perform a mode test.
986         * genrecog.c (compute_predicate_codes): MATCH_CODE applied to
987         a subexpression does not constrain the top-level code set.
988         * read-rtl.c (read_rtx_variadic): New function.
989         (read_rtx_1): Use it; allow AND and IOR to be variadic.
990         * doc/md.texi: Document new notation.
991         * config/i386/predicates.md (cmpsi_operand_1): Fold into ...
992         (cmpsi_operand): ... here, using new notation.
993
994 2006-01-22  Zack Weinberg  <zackw@panix.com>
995
996         * varray.c: Remove GENERATOR_FILE #ifdefs.
997
998 2006-01-22  Zack Weinberg  <zackw@panix.com>
999
1000         * genautomata.c (output_reserved_units_table): Emit nothing if
1001         description->query_units_num is zero.  Remove extra blank line.
1002         (output_cpu_unit_reservation_p): Short circuit
1003         if description->query_units_num is zero.
1004
1005 2006-01-22  Zack Weinberg  <zackw@panix.com>
1006
1007         * genattrtab.c: Don't include genattrtab.h.  Define ATTR_NONE
1008         and ATTR_SPECIAL (from genattrtab.h).  Don't define num_dfa_decls
1009         nor any of the random handful of variables that used to be necessary
1010         when this program was linked with rtlanal.o.  Prune set of forward
1011         function declarations.
1012         (struct attr_desc): Remove static_p field.
1013         (hash_obstack, temp_obstack, attr_hash_table, attr_printf)
1014         (check_attr_test, make_internal_attr, make_numeric_value): Make static.
1015         (attr_string): Do not read the character one past the length of
1016         the string.
1017         (write_attr_get, find_attr, make_internal_attr): Don't touch static_p.
1018         (struct insn_reserv, all_insn_reservs, last_insn_reserv_p)
1019         (n_insn_reservs, gen_insn_reserv, struct bypass_list, all_bypasses)
1020         (n_bypasses, gen_bypass_1, gen_bypass, process_bypasses)
1021         (make_automaton_attrs): New.
1022         (main): Do not call into genautomata.  Call local gen_bypass
1023         and gen_insn_reserv as appropriate.  Call make_automaton_attrs.
1024         Remove special case for insn_alts.
1025         * genautomata.c: Include gensupport.h; not genattrtab.h nor
1026         varray.h (leftover from previous change).  Prune set of forward
1027         function declarations.  Remove state_alts fields from all
1028         structures.  Remove state_alts_table from struct automaton.
1029         Make everything except main static.  Do not maintain num_dfa_decls.
1030         Do not maintain state_alts fields of various structures.
1031         (process_decls): Don't validate condexp for dm_insn_reserv decls.
1032         (add_arc): Remove state_alts argument.  All callers updated.
1033         (output_reserved_units_table): Emit #ifdef here...
1034         (output_tables): ...not here.  Don't generate state_alts tables.
1035         (expand_automata): Don't generate attributes.
1036         (write_automata): Don't generate state_alts functions.
1037         (main): New function.
1038         (it_is_empty_reserv_sets, output_state_alts_full_vect_name)
1039         (output_state_alts_comb_vect_name, output_state_alts_check_vect_name)
1040         (AUTOMATON_STATE_ALTS_MACRO_NAME, INTERNAL_STATE_ALTS_FUNC_NAME)
1041         (STATE_ALTS_FUNC_NAME, INSN_DEFAULT_LATENCY_FUNC_NAME)
1042         (BYPASS_P_FUNC_NAME, output_state_alts_table)
1043         (output_automata_list_state_alts_code, output_internal_state_alts_func)
1044         (output_state_alts_func, make_insn_alts_attr, make_bypass_attr)
1045         (make_internal_dfa_insn_code_attr, make_default_insn_latency_attr):
1046         Delete.
1047         * genattr.c: Declare internal_dfa_insn_code in insn-attr.h.
1048         * genattrtab.h: Delete file.
1049         * Makefile.in (OBJS-common): Add insn-automata.o.
1050         (insn-automata.o): New rule.
1051         (simple_generated_c): Add insn-automata.c.
1052         (build/genattrtab.o, build/genautomata.o): Update dependencies.
1053         (genprogmd): Add automata.
1054         (build/genattrtab): Needs no extra objects nor libraries.
1055         (build/genautomata): Needs build/vec.o and -lm.
1056
1057 2006-01-22  Zack Weinberg  <zackw@panix.com>
1058
1059         * genautomata.c (process_state_longest_path, max_dfa_issue_rate)
1060         (output_dfa_max_issue_rate, locked_states_num): Delete.
1061         (struct automaton): Add locked_states field.
1062         (output_dead_lock_vect): Save number of locked states in
1063         automaton->locked_states.  If it is zero, don't print anything.
1064         (output_max_insn_queue_index_def): Define max_insn_queue_index const.
1065         (output_internal_dead_lock_func): Only test the dead_lock_vect
1066         for automata that have locked states.
1067         (output_statistics): Always print the number of locked states for
1068         each automaton.  Calculate total number of locked states here.
1069         (write_automata): Don't call output_dfa_max_issue_rate.
1070         * genattrtab.c: Define length_unit_log as a const variable.
1071         * genattr.c: Don't emit MAX_DFA_ISSUE_RATE.  Declare
1072         max_insn_queue_index const.
1073         * final.c (length_unit_log): Declare const.
1074         * doc/tm.texi: Remove all references to MAX_DFA_ISSUE_RATE.
1075
1076 2006-01-22  Zack Weinberg  <zackw@panix.com>
1077
1078         * genautomata.c:  Include vec.h, not varray.h.
1079         Delete vla_ptr_t, all of the VLA_PTR_ macros, and all of the
1080         VLA_HWINT_ macros.  Change vla_hwint_t to a typedef for
1081         VEC(vect_el_t,heap) *.  Convert all uses of VLA_* macros to
1082         VEC_* macros operating on appropriately typed vectors, or to
1083         malloced arrays when the size is known in advance.  Const-ify
1084         many char* variables and function arguments.  No functional changes.
1085         * Makefile.in (build/varray.o): Delete rule.
1086         (build/genattrtab): Depend on build/vec.o instead of build/varray.o.
1087         (build/genautomata.o): Depend on vec.h instead of $(VARRAY_H).
1088
1089 2006-01-22  Zack Weinberg  <zackw@panix.com>
1090
1091         * gensupport.c: Define get_insn_name and record_insn_name here.
1092         (read_md_rtx): Call record_insn_name as appropriate.
1093         * genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
1094         * genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
1095         * genpreds.c, genrecog.c: Don't define get_insn_name nor
1096         record_insn_name.
1097         * Makefile.in (BUILD_SUPPORT, BUILD_PRINT): Fold into BUILD_RTL.
1098         (BUILD_VARRAY): Delete.
1099         (genprognormal): Rename genprogmd.  Fold in all programs from
1100         genprognoprint; also attrtab.
1101         (build/genattrtab): Just mention genautomata.o and varray.o.
1102         Reorganize a bit, add comments to make the categories clearer.
1103
1104 2006-01-22  Zack Weinberg  <zackw@panix.com>
1105
1106         * genconditions.c (condition_table, add_condition): Delete.
1107         (write_conditions): Don't emit n_insn_conditions nor
1108         insn_elision_unavailable.  Issue the gcc version #ifdef here,
1109         inside the table, with no #else clause ...
1110         (write_header): ...not here.
1111         (write_writer): New function.
1112         (main): Don't initialize condition_table.  Use add_c_test.
1113         Call write_writer.
1114         * gensupport.c (init_md_reader_args_cb): Handle multiple input
1115         files on the command line.
1116         (maybe_eval_c_test): Don't check insn_elision_unavailable.
1117         Return -1 if there is no entry in the table, don't abort.
1118         (add_c_test, traverse_c_tests): New functions.
1119         * gensupport.h (insn_elision_unavailable, insn_conditions)
1120         (n_insn_conditions): Delete declarations.
1121         (add_c_test, traverse_c_tests): Declare.
1122         * read-rtl.c: Include gensupport.h.
1123         (read_conditions): New function.
1124         (read_rtx): If read_rtx_1 returns 0, treat as EOF.
1125         (read_rtx_1): If we get EOF when we were looking for an initial
1126         open paren, return 0.  Call read_conditions when appropriate.
1127         * Makefile.in: Kill BUILD_EARLY_SUPPORT and all references to
1128         dummy-conditions.o.  Eliminate references to insn-conditions.o,
1129         or change them to build/gencondmd.o, as appropriate.  Remove
1130         insn-constants.h from $(simple_generated_h) and insn-conditions.c
1131         from $(simple_generated_c).  For all files remaining in those
1132         two lists, add insn-conditions.md to the generator command line.
1133         Give insn-constants.h/s-constants their own rules.  Add rules
1134         for build/gencondmd.c, s-conditions, insn-conditions.md, s-condmd.
1135         (build/read-rtl.o): Depend on gensupport.h.
1136         (genprognormal): Include preds.
1137         (genprogearly): Rename genprognoprint; only difference is now that
1138         they don't link with $(BUILD_PRINT).
1139         * dummy-conditions.c: Delete.
1140
1141 2006-01-22  Zack Weinberg  <zackw@panix.com>
1142
1143         * genextract.c: Don't include insn-config.h.  Do include vec.h.
1144         Declare vectors of int, char, and locstr.
1145         (locstr): New typedef.
1146         (struct extraction): Make all array fields into bare pointers.
1147         (insn_name_ptr, insn_name_ptr_size): Move down by get_insn_name.
1148         (insn_code_number): Delete.
1149         (accum_extract): New struct.
1150         (VEC_safe_set_locstr, VEC_char_to_string): New functions.
1151         (gen_insn): Take insn_code_number as an argument.  Use an
1152         accum_extract structure instead of loading data directly into
1153         a struct extraction, and having to know how big it might get.
1154         (walk_rtx): Operate entirely on an accum_extract structure.
1155         (print_path): Avoid unnecessary use of printf.
1156         (print_header): New function, split out of main.  Distinguish
1157         more carefully between an unrecognizable insn and an insn that
1158         has the code number of a define_expand.
1159         (main): Pass insn_code_number to gen_insn.  Call print_header
1160         only after parsing.  Avoid unnecessary use of printf.
1161         * Makefile.in (build/vec.o): New rule.
1162         (build/genextract): Depend on build/vec.o.
1163         (build/genextract.o): Don't depend on insn-config.h.
1164
1165 2006-01-22  Zack Weinberg  <zackw@panix.com>
1166
1167         * Makefile.in: Consolidate most rules that use $(CC_FOR_BUILD) and/or
1168         $(RUN_GEN).  Use pattern rules to factor out as much boilerplate as
1169         practical.  Eliminate per-generator-program link rules.
1170
1171 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
1172
1173         PR middle-end/24437
1174         * tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
1175         with a call expr to ...
1176         * fold-const.c (fold_ternary) <case CALL_EXPR>: Here.
1177
1178 2006-01-23  Richard Guenther  <rguenther@suse.de>
1179
1180         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Add comment
1181         before make_edge with conditional EDGE_TRUE_VALUE.
1182
1183 2006-01-23  Steven Bosscher  <stevenb.gcc@gmail.com>
1184         Jan Hubicka  <jh@suse.cz>
1185         Richard Guenther  <rguenther@suse.de>
1186
1187         PR rtl-optimization/25654
1188         * cfgexpand.c (aggregate_contains_union_type): New function.
1189         (add_alias_set_conflicts): Call it.  Make sure to add conflicts
1190         for structure variables that contain a union type.
1191
1192 2006-01-23  Richard Sandiford  <richard@codesourcery.com>
1193
1194         * gengtype.c (new_structure): Return the structure.
1195         (create_option): Add an extra "next" argument.
1196         (create_field): New function.
1197         (adjust_field_rtx_def): Use create_option and create_field.
1198         Remove a now-unnecessary call to find_structure.
1199         (adjust_field_tree_def): Likewise.
1200         (note_yacc_type): Remove an unnecessary call to find_structure.
1201         * gengtype.h (new_structure): Return the structure.
1202         (create_option): Add an extra argument.
1203         * gengtype-yacc.y (type): Remove unnecessary calls to find_structure.
1204         (option): Adjust calls to create_option.
1205
1206 2006-01-22  David Edelsohn  <edelsohn@gnu.org>
1207
1208         * config/rs6000/aix.h (STACK_BOUNDARY): Define.
1209
1210 2006-01-22  Paul Brook  <paul@codesourcery.com>
1211         Peter Barada  <peter@the-baradas.com>
1212
1213         * config/m68k/m68k.md: Add Coldfire FPU support.
1214         Define FP mode macro and associated attributes.
1215         Use it for float mode patterns.
1216         * config/m68k/linux.h (FUNCTION_VALUE): Use m68k_function_value.
1217         (LIBCALL_VALUE): Use m68k_libcall_value.
1218         * config/m68k/m68k-protos.h (m68k_libcall_value): Add prototype.
1219         (m68k_function_value): Ditto.
1220         (emit_move_sequence): Ditto.
1221         * config/m68k/m68kemb.h (LIBCALL_VALUE): Use m68k_libcall_value.
1222         * config/m68k/m68k-none.h (ASM_SPEC): Add mcfv4e.
1223         * config/m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcfv4e.
1224         (MULTILIB_EXCEPTIONS): Ditto.
1225         * config/m68k/m68k.opt: Add mcfv4e.
1226         * config/m68k/m68k.c (m68k_handle_option): Handle OPT_mcfv4e.
1227         (m68k_compute_frame_layout): Include space for ColdFire FPU regs.
1228         (m68k_output_function_prologue): Save ColdFire FPU registers.
1229         (m68k_output_function_epilogue): Restore ColdFire FPU registers.
1230         (force_mode, fp_reg_operand, emit_move_sequence): New functions.
1231         (m68k_regno_mode_ok): Don't allow types larget than 8 bytes in
1232         ColdFire FPU registers.
1233         (m68k_libcall_value, m68k_function_value): New functions.
1234         * config/m68k/netbsd-elf.h (FUNCTION_VALUE): Use m68k_function_value.
1235         (LIBCALL_VALUE): Use m68k_libcall_value.
1236         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define __mcfv4e__.
1237         (MASK_COLDFIRE): Add MASK_CFV4E.
1238         (TARGET_COLDFIRE_FPU, TARGET_HARD_FLOAT, TARGET_FP_REG_SIZE): New.
1239         (MODES_TIEABLE_P): Use TARGET_HARD_FLOAT.
1240         (REG_CLASS_FROM_LETTER, PREFERRED_RELOAD_CLASS): Ditto.
1241         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Define.
1242         (GO_IF_LEGITIMATE_ADDRESS): Use it.
1243         (LEGITIMIZE_ADDRESS): Handle ColdFire FPU addresses.
1244         * doc/invoke.tex: Document -mcfv4e on m68k.
1245
1246 2006-01-22  Ranjit Mathew  <rmathew@gcc.gnu.org>
1247
1248         * doc/contribute.texi: Change CVS to SVN and update the corresponding
1249         URL.
1250
1251 2006-01-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
1252
1253         PR c++/16190
1254         * c-opts.c (c_common_handle_option): Don't include
1255         -Wnon-virtual-dtor in -Wall; enable if -Weffc++.
1256         * doc/invoke.texi (C++ Dialect Options): Document that
1257         -Wnon-virtual-dtor is no longer included in -Wall.
1258
1259 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
1260
1261         * gcov.c (print_version), gcov-dump.c (print_version),
1262         mips-tdump.c (main), mips-tfile.c (main): Update copyright notice
1263         dates.
1264
1265 2006-01-21  Kenneth Zadeck <zadeck@naturalbridge.com>
1266
1267         * df-scan.c (problem_SCAN): Added NULL reset function.
1268         (df_scan_reset_blocks): Added code to call reset block function
1269         (df_bb_refs_delete) Fixed comment.
1270         (df_insn_refs_delete): Made tolerant of deleting non existent info
1271         for dataflow problems that need to be reset.
1272         * df-core.c (df_set_blocks): Ditto.
1273         * df.h (struct df_problem): Added reset_fun.
1274         * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
1275         problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field.
1276         (df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New
1277         functions to clear out all references to def-use or use-def chains.
1278
1279 2006-01-21  Ben Elliston  <bje@au.ibm.com>
1280
1281         * varasm.c (assemble_real): Initialise data array.
1282
1283 2006-01-20  Paul Brook  <paul@codesourcery.com>
1284
1285         Merge from csl-arm-branch.
1286         2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
1287         * config/arm/arm.md (movdi): Force operands[1] to a register
1288         if we have a non-register source.
1289         (*arm_movdi, *movdf_soft_insn): Require that one of the
1290         operands be a register.
1291         * config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
1292         * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
1293
1294 2006-01-20  DJ Delorie  <dj@redhat.com>
1295
1296         * varasm.c (initialize_constant_valid_p): Allow pointers
1297         initialized from integer constants of lesser precision.
1298         (output_constant): Allow non-int-sized pointer modes to be
1299         initialized from integer constants.
1300
1301 2006-01-20  Joseph S. Myers  <joseph@codesourcery.com>
1302
1303         PR libstdc++/25524
1304         * cppdefault.h (struct default_include): Add multilib flag.
1305         * cppdefault.c (cpp_include_defaults): Set it.
1306         * c.opt (-imultilib): New option.
1307         * c-opts.c (imultilib): New.
1308         (c_common_handle_option): Handle -imultilib.
1309         (c_common_post_options): Likewise.
1310         * c-incpath.c (add_standard_paths, register_include_chains):
1311         Likewise.
1312         * c-incpath.h (register_include_chains): Add extra parameter.
1313         * gcc.c (do_spec_1): Generate -imultilib option.
1314         (The Specs Language): Update %I description.
1315         (process_command): Update copyright notice.
1316         * doc/cppopts.texi (-imultilib): Document.
1317         * doc/invoke.texi (-imultilib): Include in option summary.
1318         (%I): Update specs documentation.
1319
1320 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
1321
1322         * loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.
1323
1324 2006-01-20  Richard Sandiford  <richard@codesourcery.com>
1325
1326         * stmt.c (case_bit_test_cmp): Stabilize the sort using code
1327         label numbers.
1328
1329 2006-01-20  Richard Guenther  <rguenther@suse.de>
1330         Steven Bosscher <stevenb.gcc@gmail.com>
1331
1332         PR rtl-optimization/24626
1333         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Don't set
1334         EDGE_TRUE_VALUE if in RTL mode.
1335
1336         Revert
1337         2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
1338         * cfgrtl.c (rtl_verify_flow_info_1): Fix.
1339
1340 2006-01-20  Dirk Mueller  <dmueller@suse.com>
1341
1342         PR c++/5520
1343         * c-parser.c (c_parser_if_body): Use build_empty_stmt()
1344         instead of a special NOP marker.
1345         * c-typeck.c (c_finish_if_stmt): Remove obsoleted special
1346         NOP marker handling.
1347         * c-common.h (empty_body_warning): Add forward declaration.
1348         * c-common.c (empty_body_warning): Add (from c_finish_if_stmt).
1349         Now uses IS_EMPTY_STMT() instead of special NOP markers.
1350
1351 2006-01-20  Paul Brook  <paul@codesourcery.com>
1352
1353         * Makefile.in (lang_checks): Keep going if mkdir fails.
1354
1355 2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
1356
1357         * df-scan.c (df_scan_free_bb_info): Added basic block parameter to
1358         be able to clean out basic block when not necessary.
1359         (df_scan_free): Fixed to properly delete information if df is
1360         unused before calling df_finish.
1361         (df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
1362         df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
1363         or comment typos.
1364         (df_bb_refs_delete): New function.
1365         (df_refs_delete): Moved per block code to df_bb_refs_delete.
1366         * df-core.c (df_set_blocks): Added code to properly clean out
1367         unused blocks if they are not part of the blocks to consider.
1368         Added additional null check.
1369         (df_compact_blocks): Added basic block parameter to free_bb_fun to
1370         be able to clean out basic block when not necessary
1371         * df.h (df_free_bb_function): Ditto.
1372         (df_bb_refs_delete): New function.
1373         * df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
1374         df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
1375         basic block parameter to be able to clean out basic block when not
1376         necessary.
1377         (df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
1378         (df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
1379         Fixed to properly delete information if df is unused before
1380         calling df_finish.
1381
1382 2006-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
1383
1384         PR rtl-optimization/25799
1385         * df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
1386         Corrected confluence operator to remove bits from op2 before oring
1387         with op1 rather than removing bits from op1.
1388         (df_ru_transfer_function): Corrected test on wrong bitmap which
1389         caused infinite loop.  Both of these problems were introduced in
1390         the dataflow rewrite.
1391
1392 2006-01-19  DJ Delorie  <dj@redhat.com>
1393
1394         * reload1.c (find_reload_regs): Note the details of reload
1395         failures in the dump file.
1396         (spill_failure): Likewise.
1397
1398 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
1399
1400         * loop-iv.c: Include df.h and hashtab.h.
1401         (enum iv_grd_result): New enum.
1402         (DF_REF_IV, DF_REF_IV_SET): New macros.
1403         (struct biv_entry): New.
1404         (df, bivs): New global variables.
1405         (struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no,
1406         assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p):
1407         Removed.
1408         (clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr,
1409         iv_analyze_result, iv_analyze_def, biv_hash, biv_eq,
1410         analyzed_for_bivness_p, record_biv): New functions.
1411         (iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p,
1412         get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op,
1413         iv_analyze, biv_p, iv_analysis_done): Work with df representation of
1414         UD chains.
1415         (iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set
1416         analysed.
1417         (iv_number_of_iterations): Use new interface to iv analysis.
1418         * loop-unroll.c: Do not include varray.h.
1419         (analyze_iv_to_split_insn): Use new interface to iv
1420         analysis.
1421         * loop-unswitch.c (may_unswitch_on): Ditto.
1422         * df.c (df_bitmaps_free): Only work for bbs for that structures are
1423         allocated.
1424         (df_bb_modify): Realloc tables to the new index.
1425         (df_find_use): New function.
1426         * df.h (df_find_use): Declare.
1427         * optabs.c (expand_unop): Make the mode of the REG_EQUAL node be
1428         outmode.
1429         * cfgloop.h (struct rtx_iv): Remove analysed field.
1430         (iv_get_reaching_def): Removed.
1431         (iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare.
1432         * Makefile.in (loop-unroll.o): Remove VARRAY_H dependency.
1433         (loop-iv.o): Add df.h and hashtab.h dependency.
1434         * df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation.
1435
1436 2006-01-20  Alan Modra  <amodra@bigpond.net.au>
1437
1438         * libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended
1439         Double TFmode.
1440         (__floatundisf, __floatundidf): Likewise.
1441         * libgcc2.h (IS_IBM_EXTENDED): Define.
1442
1443 2006-01-19  DJ Delorie  <dj@redhat.com>
1444
1445         * config/m32c/m32c.h (REG_ALLOC_ORDER): Define.
1446
1447 2006-01-19  Paul Brook  <paul@codesourcery.com>
1448
1449         * gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
1450         as nothrow when unwinding tables are disabled.
1451
1452 2006-01-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1453
1454         PR testsuite/25171
1455         * c-decl.c (check_bitfield_type_and_width): Don't issue pedwarn "type
1456         of bit-field" when in system header.
1457
1458 2006-01-19  DJ Delorie  <dj@redhat.com>
1459
1460         * config/m32c/m32c.c (m32c_prepare_shift): Add code to deal with
1461         the 16 bit shift limit of the m16c.
1462
1463 2006-01-19  Andrew Pinski  <pinskia@physics.uc.edu>
1464
1465         PR target/22099
1466         * config/i386/i386.md (builtin_setjmp_receiver): Don't emit the label.
1467         * config/i386/i386.c (output_set_got): Output the label if we have one
1468         for the TARGET_DEEP_BRANCH_PREDICTION case.
1469
1470 2006-01-19  Jan Hubicka  <jh@suse.cz>
1471             H.J. Lu  <hongjiu.lu@intel.com>
1472             Evandro Menezes <evandro.menezes@amd.com>
1473
1474         * invoke.texi (generic): Document
1475         (i686) Update.
1476         * config.gcc: Make x86_64-* and i686-* default to generic tunning.
1477         * i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC,
1478         TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros.
1479         (x86_use_incdec, x86_pad_returns): New variables
1480         (TARGET_CPU_DEFAULT_generic): New constant
1481         (TARGET_CPU_DEFAULT_NAMES): Add generic.
1482         (enum processor_type): Add generic32 and generic64.
1483         * i386.md (cpu attribute): Add generic32/generic64
1484         (movhi splitter): Behave sanely when both partial_reg_dependency and
1485         partial_reg_stall are set.
1486         (K8 splitters): Enable for generic as well.
1487         * predicates.md (incdec_operand): Use TARGET_INCDEC
1488         (aligned_operand): Avoid memory mismatch stalls.
1489         * athlon.md: Enable for generic64, new patterns for 128bit moves.
1490         * ppro.md: Enable for generic32
1491         * i386.c (generic64_cost, generic32_cost): New.
1492         (m_GENERIC32, m_GENERIC64, m_GENERIC): New macros.
1493         (x86_use_leave): Enable for generic64.  (x86_use_sahf,
1494         x86_ext_80387_constants): Enable for generic32.  (x86_push_memory,
1495         x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop,
1496         x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
1497         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
1498         x86_partial_reg_dependency, x86_memory_mismatch_stall,
1499         x86_accumulate_outgoing_args, x86_prologue_using_move,
1500         x86_epilogue_using_move, x86_arch_always_fancy_math_387,
1501         x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule):
1502         Enable for generic.
1503         (x86_use_incdec, x86_pad_returns): New.
1504         (override_options): Add generic32 and generic64, translate "generic"
1505         to generic32/generic64 and "i686" to "generic32", refuse
1506         "generic32"/"generic64" as arch target.
1507         (ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon.
1508         (ix86_reorg): Honor PAD_RETURNS.
1509
1510 2006-01-19  Diego Novillo  <dnovillo@redhat.com>
1511
1512         * tree-pretty-print.c (dump_generic_node): Handle
1513         OMP_PARALLEL_FN, OMP_PARALLEL_DATA_ARG and OMP_RETURN_EXPR.
1514         * cgraph.c (cgraph_expand_queue): Rename from
1515         cgraph_analyze_queue.  Update all users.
1516         * cgraphunit.c (cgraph_assemble_pending_functions): Process
1517         cgraph_expand_queue.
1518         (cgraph_expand_all_functions): Likewise.
1519         (cgraph_finalize_pending_functions): Remove.  Update callers.
1520
1521         * tree.h (OMP_DIRECTIVE_P): Define.
1522         (OMP_PARALLEL_FN): Define.
1523         (OMP_PARALLEL_DATA_ARG): Define.
1524         (OMP_SECTIONS_SECTIONS): Define.
1525         * tree-pass.h (pass_expand_omp): Declare.
1526         * omp-low.c (struct omp_region): Declare.
1527         (struct omp_context): Remove fields 'parallel_type',
1528         'parallel_start_ix' and 'parallel_start_additional_args'.
1529         Update all users.
1530         (struct omp_for_data): Rename from struct expand_omp_for_data.
1531         (omp_regions): New static variable.
1532         (root_omp_region): New static variable.
1533         (find_omp_clause): Make static.
1534         (is_in_combined_parallel_ctx): Remove.
1535         (is_combined_parallel): New.
1536         (extract_omp_for_data): Move earlier in the file.
1537         (workshare_safe_to_combine_p): New.
1538         (get_ws_args_for): New.
1539         (determine_parallel_type): Move earlier in the file.
1540         (omp_copy_decl_2): Do not set DECL_CONTEXT of new local to the
1541         child function.
1542         (omp_copy_decl): Likewise.
1543         (create_omp_child_function): Likewise.
1544         (lookup_omp_region): New.
1545         (dump_omp_region): New.
1546         (debug_omp_region): New.
1547         (debug_all_omp_regions): New.
1548         (new_omp_region): New.
1549         (scan_omp_parallel): If parallel_nesting_level > 1, the
1550         directive is nested within another parallel directive.
1551         Set OMP_PARALLEL_FN.
1552         (scan_omp_for): Do not try to handle combined parallel+for
1553         cases.
1554         Remove FIXME comment.
1555         (scan_omp_nested): Remove.
1556         (scan_omp_1): Do not call scan_omp_nested when
1557         parallel_nesting_level is > 1.
1558         Do not change the DECL_CONTEXT of local variables found.
1559         (lookup_decl_in_outer_ctx): New.
1560         (lower_rec_input_clauses): Rename from expand_rec_input_clauses.
1561         (lower_lastprivate_clauses): Rename from expand_lastprivate_clauses.
1562         (lower_reduction_clauses): Rename from expand_reduction_clauses.
1563         (lower_copyprivate_clauses): Rename from expand_copyprivate_clauses.
1564         If CTX is nested, lookup VAR in the outer context when
1565         building copy assignment.
1566         (lower_send_clauses): Rename from expand_send_clauses.
1567         If CTX is nested, lookup VAR in the outer context when
1568         building copy assignments.
1569         (lower_send_shared_vars): Rename from expand_send_shared_vars.
1570         If CTX is nested, lookup VAR in the outer context when
1571         building copy assignments.
1572         (expand_parallel_call): Rename from build_parallel_call.
1573         Handle combined parallel+workshare cases.
1574         Re-implement to emit code into the CFG.
1575         (list2chain): New.
1576         (expand_omp_parallel): Re-implement to emit code into the CFG.
1577         Call move_sese_region_to_fn to outline the sub-graph
1578         containing the parallel region.
1579         (expand_omp_for_1): Remove.
1580         (expand_omp_for_generic): Re-implement to emit code into the
1581         CFG.
1582         (expand_omp_for_static_nochunk): Likewise.
1583         (expand_omp_for_static_chunk): Likewise.
1584         (expand_omp_for): Likewise.
1585         (expand_omp_sections): Likewise.
1586         (remove_exit_barriers): New.
1587         (expand_omp_synch): New.
1588         (expand_omp): New.
1589         (build_omp_regions_1): New.
1590         (build_omp_regions): New.
1591         (execute_expand_omp): New.
1592         (gate_expand_omp): New.
1593         (pass_expand_omp): Define.
1594         (lower_omp_sections): Rename from expand_omp_sections.
1595         Set OMP_SECTIONS_SECTIONS.
1596         (lower_omp_single_simple): Rename from expand_omp_single_simple.
1597         (lower_omp_single_copy): Rename from expand_omp_single_copy.
1598         (lower_omp_single): Rename from expand_omp_simple.
1599         (lower_omp_master): Rename from expand_omp_master.
1600         (lower_omp_ordered): Rename from expand_omp_ordered.
1601         (lower_omp_critical): Rename from expand_omp_critical.
1602         (lower_omp_for_lastprivate): Rename from expand_omp_for_lastprivate.
1603         (lower_omp_for): Re-implement.
1604         (lower_omp_parallel): Re-implement.
1605         (lower_regimplify): Rename from expand_regimplify.
1606         (lower_omp_1): Rename from expand_omp_1.
1607         If there are syntax errors in the program, replace every
1608         OpenMP directive with NOP.
1609         Call lower_omp_* instead of expand_omp_*.
1610         (lower_omp): Rename from expand_omp.
1611
1612         * tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN_EXPR.
1613         * tree-gimple.h (enum omp_parallel_type): Remove.
1614         (gimple_boolify): Declare extern.
1615         (find_omp_clause, determine_parallel_type): Remove.
1616
1617         * gimple-low.c (lower_omp_directive): New.
1618         (lower_stmt): Call it.
1619         (record_vars_into): Move from ...
1620         (record_vars): ... here.
1621         Call record_vars_into with current_function_decl.
1622
1623         * gimplify.c (struct gimplify_ctx): Remove fields
1624         combined_pre_p and combined_ctxp.  Update users.
1625         (get_formal_tmp_var): Add documentation.
1626         (gimple_boolify): Make extern.
1627         (gimplify_expr_in_ctx): Remove.  Update callers.
1628         (gimplify_omp_parallel): Do not assume that OMP_PARALLEL_BODY
1629         will always be a BIND_EXPR.
1630         (gimplify_expr): Handle OMP_RETURN_EXPR.
1631         * tree.def (BLOCK): Remove documentation about BLOCK_TYPE_TAGS.
1632         (OMP_PARALLEL): Add 3 operands.
1633         (OMP_SECTIONS): Add 1 operand.
1634         (OMP_RETURN_EXPR): Define.
1635
1636         * tree-inline.c (estimate_num_insns_1): Handle OpenMP directives.
1637         (copy_tree_r): Restore TREE_CHAIN in OMP_CLAUSE_*.
1638         * tree-iterator.c (alloc_stmt_list): Assert that we are not
1639         creating a circular free list.
1640         (free_stmt_list): Assert that we are not freeing stmt_list_cache.
1641
1642         * tree-flow.h (move_sese_region_to_fn): Declare.
1643         (record_vars_into): Declare.
1644         * tree-cfg.c (make_omp_sections_edges): New.
1645         (make_exit_edges): Handle OMP_PARALLEL, OMP_FOR, OMP_SINGLE,
1646         OMP_MASTER, OMP_ORDERED, OMP_CRITICAL, OMP_RETURN_EXPR,
1647         OMP_SECTIONS and OMP_SECTION.
1648         (is_ctrl_altering_stmt): Return true for OMP_DIRECTIVE_P.
1649         (set_bb_for_stmt): Undo change to check currently_expanding_to_rtl.
1650         (verify_stmt): Do not handle OMP_DIRECTIVE_P.
1651         (gather_blocks_in_sese_region): New.
1652         (struct move_stmt_d): Declare.
1653         (move_stmt_r): New.
1654         (move_block_to_fn): New.
1655         (move_sese_region_to_fn): New.
1656
1657         * passes.c (init_optimization_passes): Schedule
1658         pass_expand_omp after pass_init_datastructures.
1659
1660         * tree-ssa-operands.c (get_expr_operands): Handle
1661         OMP_PARALLEL, OMP_SECTIONS, OMP_FOR, OMP_RETURN_EXPR,
1662         OMP_SINGLE, OMP_MASTER, OMP_ORDERED, OMP_CRITICAL.
1663
1664 2006-01-19  Jeff Law  <law@redhat.com>
1665
1666         * tree-vrp.c (extract_range_from_assert): Refine the result range
1667         if the variable referenced by the ASSERT_EXPR has a range and
1668         either the tentative result range or the previous range is a
1669         VR_ANTI_RANGE.
1670
1671 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
1672
1673         * c-decl.c (add_flexible_array_elts_to_size): Simplify vector accesses.
1674
1675 2006-01-19  Jan Hubicka  <jh@suse.cz>
1676
1677         * tree-vect-patterns.c (vect_pattern_recog_1): Prevent parse error.
1678
1679 2006-01-19  Paolo Bonzini  <bonzini@gnu.org>
1680
1681         * combine.c (try_combine): Do not worry about MEMs wrapped by USEs.
1682         (expand_compound_operation, expand_field_assignment): Fail if the
1683         bit lengths of an extract operation are out of range.
1684         (make_extraction): Compute wanted_inner_mode based on the position
1685         and length of the extraction.  Make it extraction_mode for non-constant
1686         positions, and do not modify offset in that case.  When generating a
1687         new MEM, use a mode that can hold the extraction while keeping correct
1688         alignment.  Remove code that supported MEMs wrapped by USEs.
1689         (simplify_shift_const_1, force_to_mode) <case USE>: Remove.
1690
1691 2006-01-19  Andreas Krebbel  <krebbel1@de.ibm.com>
1692
1693         * config/s390/s390.md ("Y", "y"): New mode attribute.
1694         ("*cmpdi_ccs", "*cmpsi_ccs", "*adddi3_imm_cc", "*adddi3_carry1_cc",
1695         "*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly",
1696         "*adddi3_cc", "*adddi3_cconly", "*adddi3_cconly2", "*adddi3_64",
1697         "*addsi3_imm_cc", "*addsi3_carry1_cc",
1698         "*addsi3_carry1_cconly", "*addsi3_carry2_cc", "*addsi3_carr2_cconly",
1699         "*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
1700         "*subdi3_borrow_cc", "*subdi3_borrow_cconly", "*subdi3_cc",
1701         "*subdi3_cc2", "*subdi3_cconly", "*subdi3_cconly2", "*subdi3_64",
1702         "*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
1703         "*subsi3_cc2", "*subsi3_cconly", "*subsi3_cconly", "*subsi3_cconly2",
1704         "addsi3", "subsi3"): Insn patterns removed.
1705         ("*add<mode>3_carry1_cc", "*add<mode>3_carry1_cconly",
1706         "*add<mode>3_carry2_cc", "*add<mode>3_carry2_cconly", "*add<mode>3_cc",
1707         "*add<mode>3_cconly", "*add<mode>3_cconly2", "*add<mode>3_imm_cc",
1708         "*sub<mode>3_borrow_cc", "*sub<mode>3_borrow_cconly",
1709         "*sub<mode>3_cc", "*sub<mode>3_cc2", "*sub<mode>3_cconly",
1710         "*sub<mode>3_cconly2"): New insn patterns.
1711         ("addsi3", "subsi3"): New expanders.
1712
1713 2006-01-19  Dorit Nuzman  <dorit@il.ibm.com>
1714
1715         * Makefile.in (tree-vect-patterns.o): Add rule for new file.
1716         * tree-vect-analyze.c (vect_determine_vectorization_factor): Use
1717         existing STMT_VINFO_VECTYPE if available.
1718         (vect_mark_relevant): Add special handling for stmts that are
1719         marked as STMT_VINFO_IN_PATTERN_P.
1720         (vect_analyze_loop): Call vect_pattern_recog.
1721         * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
1722         * tree-vectorizer.h (in_pattern_p, related_stmt): New fields in
1723         stmt_info.
1724         (STMT_VINFO_IN_PATTERN_P, STMT_VINFO_RELATED_STMT): New macros.
1725         (vect_recog_func_ptr): New function-pointer type.
1726         * tree-vect-patterns.c: New file.
1727         (vect_recog_widen_sum_pattern, vect_recog_widen_mult_pattern):
1728         (vect_recog_dot_prod_pattern, vect_pattern_recog):
1729         (vect_pattern_recog_1): New functions.
1730         (vect_pattern_recog_funcs): New array of function pointers.
1731
1732         * tree-vectorizer.h (ternary_op): New enum value.
1733         * tree-vect-transform.c (vect_create_epilog_for_reduction): Added
1734         declaration. Revised documentation. Removed redundant dump prints.
1735         Removed redundant argument. Added support for reduction patterns.
1736         (vectorizable_reduction): Added support for reduction patterns.
1737         (vect_transform_stmt): Added support for patterns.
1738
1739         * expr.c (expand_expr_real_1): Added case for DOT_PROD_EXPR.
1740         * genopinit.c (udot_prod_optab, sdot_prod_optab): Initialize.
1741         * optabs.c (optab_for_tree_code): Added case for DOT_PROD_EXPR.
1742         (expand_widen_pattern_expr): New function.
1743         (init_optabs): Initialize new optabs udot_prod_optab,
1744         sdot_prod_optab.
1745         * optabs.h (OTI_sdot_prod, OTI_udot_prod): New.
1746         (sdot_prod_optab, udot_prod_optab): Define new optabs.
1747         (expand_widen_pattern_expr): New function declaration.
1748         * tree.def (DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR): New
1749         tree-codes.
1750         * tree-inline.c (estimate_num_insns_1): Added cases for new
1751         tree-codes DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
1752         * tree-pretty-print.c (dump_generic_node): Likewise.
1753         (op_prio): Likewise.
1754         (op_symbol): Added cases for WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
1755         * tree-ssa-operands.c (get_expr_operands): Added case for
1756         DOT_PROD_EXPR.
1757         * tree-vect-patterns.c (widened_name_p): New function.
1758         (vect_recog_dot_prod_pattern): Added function implementation.
1759         * tree-vect-transform.c (get_initial_def_for_reduction): Added
1760         cases for DOT_PROD_EXPR, WIDEN_SUM_EXPR.
1761         * config/rs6000/altivec.md (udot_prod<mode>, sdot_prodv8hi): New.
1762         * config/i386/sse.md (sdot_prodv8hi, udot_prodv4si): New.
1763
1764         * expr.c (expand_expr_real_1): Added case for WIDEN_SUM_EXPR.
1765         * genopinit.c (widen_ssum_optab, widen_usum_optab): Initialize.
1766         * optabs.c (optab_for_tree_code): Added case for WIDEN_SUM_EXPR.
1767         (init_optabs): Initialize new optabs widen_ssum_optab,
1768         widen_usum_optab.
1769         * optabs.h (OTI_widen_ssum, OTI_widen_usum): New.
1770         (widen_ssum_optab, widen_usum_optab): Define new optabs.
1771         * tree-vect-generic.c: (expand_vector_operations_1): Check type of
1772         use instead of type of def.
1773         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Added
1774         function implementation.
1775         * config/rs6000/altivec.md (widen_usum<mode>, widen_ssumv16qi,
1776         widen_ssumv8hi): New.
1777
1778         * doc/tm.texi (ssum_widen, usum_widen, sdot_prod, udot_prod): New
1779         patterns.
1780
1781 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
1782
1783         PR c/25805
1784         * c-decl.c (add_flexible_array_elts_to_size): New function.
1785         (finish_decl): Use it.
1786
1787 2006-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
1788
1789         * diagnostic.h: Include options.h.
1790         * config/rs6000/x-darwin (host-ppc-darwin.o): Correct the
1791         dependancies for diagnostic.h.
1792         * Makefile.in (DIAGNOSTIC_H): Add options.h.
1793
1794 2006-01-16  Daniel Berlin  <dberlin@dberlin.org>
1795
1796         * tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
1797         (ssa_ro_call_cache_valid): Ditto.
1798         * tree-ssa-alias.c (sort_tags_by_id): New function.
1799         (init_transitive_clobber_worklist): Ditto.
1800         (add_to_worklist): Ditto.
1801         (mark_aliases_call_clobbered): Ditto.
1802         (compute_tag_properties): Ditto.
1803         (set_initial_properties): Ditto.
1804         (compute_call_clobbered): Ditto.
1805         (compute_may_aliases):  Call compute_call_clobbered and grouping.
1806         (compute_flow_sensitive_aliasing): Remove clobbering related code.
1807         (compute_flow_insensitive_aliasing): Grouping now happens in our
1808         caller.
1809         (setup_pointers_and_addressables): Remove clobbering related code.
1810         (add_may_alias): Ditto.
1811         (replace_may_alias): Ditto.
1812         (get_nmt_for): Ditto.
1813         (create_global_var):
1814         (is_escape_site): Return an escape_type enumeration.
1815         * tree-flow-inline.h (is_call_clobbered):  Global var does not
1816         imply call clobbered.
1817         (mark_call_clobbered): Take a reason for marking this. Remove
1818         marking of globalness, and cache invalidation.
1819         (clear_call_clobbered): Remove cache invalidation code.
1820         * tree-dfa.c (dump_variable): If details is on, dump the reason
1821         for escaping.
1822         * tree-outof-ssa.c (create_temp): Copy escape mask from original
1823         variable.
1824         * tree-flow.h (struct ptr_info_def): Add escape mask member.
1825         (struct var_ann_d): Ditto.
1826         (enum escape_type): New.
1827         (mark_call_clobbered): Adjust prototype.
1828         * tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
1829         are never call clobbered.
1830         Record reasons for escaping.
1831         * tree-ssa-structalias.h (is_escape_site): Update prototype.
1832         * tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
1833         (ssa_ro_call_cache_valid): Ditto.
1834         (clobbered_v_may_defs): Ditto.
1835         (clobbered_vuses): Ditto.
1836         (ro_call_vuses): Ditto.
1837         (clobber_stats): New.
1838         (init_ssa_operands): Zero out clobber stats.
1839         (fini_ssa_operands): Print out clobber stats.
1840         (get_call_expr_operands): Pass callee fndecl to
1841         add_call_read_ops).
1842         (add_call_clobber_ops): Remove use of cache.
1843         Add use of PURE_CONST information.
1844         (add_call_read_ops): Remove use of cache.
1845         Add use of static not_read information.
1846
1847 2006-01-18  Alexandre Oliva  <aoliva@redhat.com>
1848
1849         Introduce TLS descriptors for i386 and x86_64.
1850         * config/i386/i386.h (TARGET_GNU2_TLS): New macro.
1851         (TARGET_ANY_GNU_TLS): New macro.
1852         (enum tls_dialect): Added TLS_DIALECT_GNU2.
1853         (struct machine_function): Add tls_descriptor_call_expanded_p.
1854         (ix86_tls_descriptor_calls_expande_in_cfun): New macro.
1855         (ix86_current_function_calls_tls_descriptor): Likewise.
1856         * config/i386/i386.c (ix86_tls_dialect): Fix typo in comment.
1857         (override_options): Introduce gnu2 tls dialect.
1858         (ix86_frame_pointer_required): Functions containing TLSCALLs are
1859         not leaves.
1860         (ix86_select_alt_pic_regnum, ix86_compute_frame_layout):
1861         Likewise.
1862         (legitimize_tls_address): Adjust logic for GNU2 TLS.
1863         (ix86_init_machine_status): Initialize new field.
1864         (ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS.
1865         (ix86_tls_module_base): New.
1866         * config/i386/i386-protos.h (ix86_tls_module_base): Declare it.
1867         * config/i386/i386.md (UNSPEC_TLSDESC): New constant.
1868         (tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS.
1869         (tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise.
1870         (tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns.
1871         (*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise.
1872         (tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise.
1873         (*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise.
1874         * config/i386/predicates.md (tls_modbase_operand): New.
1875         (tp_or_register_operand): New.
1876
1877 2006-01-18  Daniel Berlin  <dberlin@dberlin.org>
1878
1879         * ipa-reference.c (check_operand):  Allow FUNCTION_DECL.
1880         (look_for_address_of): Ditto.
1881         (ipa_init): Walk the function decls.
1882         (static_execute): Don't set readonly on FUNCTION_DECL's.
1883
1884 2006-01-18  Roger Sayle  <roger@eyesopen.com>
1885
1886         * config/i386/i386.md (shift spliter): Fix a a typo in the splitter
1887         for shifts where the source and destination registers are different.
1888
1889 2006-01-18  Paul Brook  <paul@codesourcery.com>
1890
1891         Merge from csl-arm-branch.
1892         2005-03-14  Julian Brown  <julian@codesourcery.com>
1893         * config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
1894         (aeabi_llsl): Likewise.
1895         (ashrdi3): Likewise.
1896         (aeabi_lasr): Likewise.
1897         (lshrdi3): Likewise.
1898         (aeabi_llsr): Likewise.
1899         2005-03-10  Julian Brown  <julian@codesourcery.com>
1900         * config.gcc: Disable shared libgcc for SymbianOS.
1901         * config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.
1902
1903 2006-01-18  DJ Delorie  <dj@redhat.com>
1904
1905         * c-pragma.c (handle_pragma_diagnostic): New.
1906         (init_pragma): Register it.
1907         * doc/extend.texi: Document it.
1908
1909         * diagnostic.def: Add DK_UNSPECIFIED and DK_IGNORED.
1910         * diagnostic.h (diagnostic_classify_diagnostic): Declare.
1911         (diagnostic_context): Add classify_diagnostic[].
1912         * diagnostic.c (diagnostic_count_diagnostic): Don't count warnings
1913         as errors if they're overridden to DK_WARNING.
1914         (diagnostic_initialize): Initialize classify_diagnostic[].
1915         (diagnostic_set_kind_override): New.
1916         (diagnostic_report_diagnostic): Check for kind changes.
1917         * opts.c (common_handle_option): Take lang_mask.  Update callers.
1918         Handle OPT_Werror_.
1919         * common.opt (Werror=): New.
1920         * doc/invoke.texi: Document -Werror=*
1921
1922 2006-01-18  Jeff Law  <law@redhat.com>
1923
1924         * tree-vrp.c (test_for_singularity): Correct test for new
1925         min limit.  Use operand_equal_p rather than pointer equality
1926         for testing if new min/max values are equal.
1927
1928         * tree-ssa-propagate.c (substitute_and_fold): Delay simplifications
1929         using range information until after propagation and folding.
1930
1931 2006-01-18  Richard Henderson  <rth@redhat.com>
1932             Aldy Hernandez  <aldyh@redhat.com>
1933             Jakub Jelinek  <jakub@redhat.com>
1934             Diego Novillo  <dnovillo@redhat.com>
1935
1936         * omp-low.c: New file.
1937         * c-omp.c: New file.
1938
1939 2006-01-18  Richard Henderson  <rth@redhat.com>
1940             Jakub Jelinek  <jakub@redhat.com>
1941             Diego Novillo  <dnovillo@redhat.com>
1942
1943         * doc/invoke.texi: Document -fopenmp.
1944         * tree-dump.h (debug_function): Declare.
1945         * hooks.c (hook_bool_tree_bool_false): New function.
1946         (hook_tree_tree_null): Remove.
1947         (hook_tree_tree_tree_null): New.
1948         * hooks.h: Update to match.
1949         * tree-pretty-print.c (debug_tree_chain): New.
1950         (print_generic_expr): Handle TDF_CHAIN.
1951         (dump_generic_node): Handle BLOCK.
1952         Do not abort with incomplete SWITCH_EXPRs.
1953         Do not dump body of an OpenMP directive if TDF_SLIM is given.
1954         <case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
1955         print space after directive name.
1956         <OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
1957         Handle OMP_MASTER and OMP_ORDERED.
1958         Handle printing of OMP_BODY just in one place, goto
1959         dump_omp_body in the rest of OMP_* nodes that have
1960         OMP_BODY.
1961         Don't handle clause nodes here.  Update omp statements to
1962         use dump_omp_clauses.
1963         Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
1964         OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
1965         OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
1966         GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
1967         GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
1968         GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
1969         Adjust output for GOMP_PARALLEL.
1970         (dump_omp_clauses): New.
1971         (print_declaration): Dump DECL_VALUE_EXPR.
1972         (op_symbol_1): Split out of op_symbol.
1973         (dumping_stmts): Remove.  Update all users.
1974         * cgraph.c (cgraph_analyze_queue): New.
1975         (cgraph_add_new_function): New.
1976         * cgraph.h (cgraph_analyze_queue): Declare.
1977         (cgraph_add_new_function): Declare.
1978         (cgraph_lower_function): Remove.
1979         * tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
1980         nodes.  Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
1981         and TYPE_P nodes in its default clause.
1982         (empty_body_p): New.
1983         (tree_range_check_failed): New.
1984         (build5_stat): New.
1985         * tree.h (OMP_CLAUSE_REDUCTION_INIT,
1986         OMP_CLAUSE_REDUCTION_MERGE,
1987         OMP_CLAUSE_REDUCTION_PLACEHOLDER,
1988         OMP_CLAUSE_PRIVATE_DEBUG,
1989         OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
1990         OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
1991         OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
1992         OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
1993         OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
1994         OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
1995         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
1996         OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
1997         OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
1998         OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
1999         OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
2000         OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
2001         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
2002         OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
2003         (TREE_RANGE_CHECK): New.
2004         (empty_body_p): Declare.
2005         (enum omp_clause_default_kind): New.
2006         (build_string_literal): Declare.
2007         (enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
2008         (build5_stat, build5): Declare.
2009         * tree-pass.h (TDF_CHAIN): Define.
2010         * tree-pass.h (PROP_gimple_lomp): Define.
2011         (pass_lower_omp): Declare.
2012         * diagnostic.h (debug_tree_chain): Declare.
2013         * builtins.c (get_builtin_sync_mode): Use 0 as last argument to
2014         mode_for_size.
2015         (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
2016         * builtins.c (build_string_literal): Make extern.
2017         * gcc.c (include_spec_function): New.
2018         (static_spec_functions): Add it.
2019         (main): Move load of libgomp.spec ...
2020         (LINK_COMMAND_SPEC): ... here.
2021         (link_gomp_spec): New.
2022         (static_specs): Include it.
2023         (LINK_COMMAND_SPEC): Add link_gomp.
2024         (GOMP_SELF_SPECS): New.
2025         (driver_self_specs): Include it.
2026         (switch_matches): Don't mark inline.
2027         (main): Load libgomp.spec.
2028         * tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
2029         OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
2030         and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
2031         * tree-gimple.h (enum omp_parallel): Declare.
2032         (determine_parallel_type): Declare.
2033         (omp_firstprivatize_variable): Declare.
2034         (omp_reduction_init): Declare.
2035         (diagnose_omp_structured_block_errors): Declare.
2036         (struct walk_stmt_info): Add want_return_expr.
2037         (struct walk_stmt_info): Add want_bind_expr, want_locations.
2038         (find_omp_clause): Declare.
2039         (insert_field_into_struct): Declare.
2040         (struct walk_stmt_info): Move from tree-nested.c
2041         (walk_stmts): Declare.
2042         * c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
2043         to 200505.
2044         * cgraphunit.c (cgraph_lower_function): Make static.
2045         (cgraph_finalize_pending_functions): New.
2046         (cgraph_finalize_function): Call it.
2047         (cgraph_finalize_compilation_unit): Likewise.
2048         * builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
2049         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
2050         (BT_FN_UINT_UINT): New.
2051         (DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
2052         DEF_FUNCTION_TYPE_VAR_4): Document.
2053         (BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
2054         BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
2055         BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
2056         BT_FN_VOID_OMPFN_PTR_UINT_UINT,
2057         BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
2058         BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
2059         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
2060         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
2061         * builtins.def: Update DEF_BUILTIN comment to include COND argument.
2062         Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
2063         into separate files.
2064         (DEF_GOMP_BUILTIN): New.
2065         (BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
2066         BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
2067         BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
2068         BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
2069         BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
2070         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
2071         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
2072         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
2073         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
2074         BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
2075         BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
2076         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
2077         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
2078         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
2079         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
2080         BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
2081         BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
2082         BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
2083         BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
2084         BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
2085         BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
2086         BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
2087         BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
2088         BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
2089         BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
2090         BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
2091         * sync-builtins.def: New file, moved from builtins.def.
2092         * omp-builtins.def: New file, moved from builtins.def.
2093         * c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
2094         * gimple-low.c (lower_function_body): Clear data.
2095         (lower_stmt): Do not handle COMPOUND_EXPR.
2096         Remove call to print_node_brief.
2097         * c-tree.h (c_finish_omp_clauses): New prototype.
2098         (C_DECL_THREADPRIVATE_P): Define.
2099         (lookup_name_no_remap, c_omp_remap_private): Remove
2100         (c_begin_omp_parallel, c_finish_omp_parallel): Update.
2101         (check_for_loop_decls): Update decl.
2102         (lookup_name_no_remap, c_omp_remap_private): Declare.
2103         (build_indirect_ref, build_modify_expr, pushdecl,
2104         pushdecl_top_level): Move to c-common.h.
2105         * dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
2106         before the switch, but just in the 2 places that need it.
2107         * c-decl.c (diagnose_mismatched_decls): Do not check for
2108         mismatched thread-local attributes when OLDDECL is marked
2109         threadprivate and NEWDECL has no thread-local attributes.
2110         (merge_decls): Merge C_DECL_THREADPRIVATE_P.
2111         (c_gimple_diagnostics_recursively): Rename from
2112         c_warn_unused_result_recursively.  Invoke
2113         diagnose_omp_structured_block_errors.
2114         (check_for_loop_decls): Return a singular decl found.
2115         * langhooks.c (lhd_omp_predetermined_sharing): Return
2116         OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
2117         (lhd_omp_firstprivatize_type_sizes): New.
2118         (lhd_omp_assignment): New.
2119         (lhd_omp_predetermined_sharing): New.
2120         * langhooks.h (struct gimplify_omp_ctx): Forward declare.
2121         (struct lang_hooks_for_types): Add
2122         omp_firstprivatize_type_sizes, omp_privatize_by_reference,
2123         omp_predetermined_sharing, omp_disregard_value_expr,
2124         omp_private_debug_clause, omp_clause_default_ctor,
2125         omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
2126         (c_finish_omp_clauses): New.
2127         (c_finish_bc_stmt): Diagnose break within omp for.
2128         (c_begin_omp_parallel, c_finish_omp_parallel): New.
2129         (build_unary_op): Return error_mark after reporting
2130         a readonly_error.
2131         (build_modify_expr): Likewise.
2132         * gimplify.c: Include optabs.h and pointer-set.h.
2133         (enum gimplify_omp_var_data): Declare.
2134         (struct gimplify_omp_ctx): Declare.
2135         (struct gimplify_ctx): Add fields prev_context, combined_pre_p
2136         and combined_ctxp.
2137         (gimplify_ctxp, gimplify_omp_ctxp): New local variables.
2138         (push_gimplify_context, pop_gimplify_context): Allow nesting.
2139         (splay_tree_compare_decl_uid): New.
2140         (new_omp_context): New.
2141         (delete_omp_context): New.
2142         (gimple_add_tmp_var): Call omp_add_variable.
2143         (gimplify_bind_expr): Likewise.
2144         (gimplify_var_or_parm_decl): If omp_notice_variable returned
2145         true, disregard DECL_VALUE_EXPR on the decl if any.
2146         (gimplify_expr_in_ctx): New.
2147         (omp_firstprivatize_variable, omp_firstprivatize_type_sizes
2148         omp_add_variable, omp_notice_variable, omp_is_private
2149         gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
2150         gimplify_adjust_omp_clauses, gimplify_omp_parallel
2151         gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
2152         gimplify_omp_atomic_fetch_op, goa_stabilize_expr
2153         gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
2154         gimplify_omp_atomic): New.
2155         (gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2156         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
2157         OMP_CRITICAL and OMP_ATOMIC.
2158         (gimplify_body): Verify gimplify_ctxp is empty after gimplification.
2159         * c-pragma.h (enum pragma_kind): Add
2160         PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
2161         PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
2162         PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
2163         PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
2164         PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
2165         PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
2166         PRAGMA_OMP_THREADPRIVATE.
2167         * tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
2168         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
2169         OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
2170         OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
2171         OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
2172         OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
2173         OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
2174         OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
2175         OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
2176         * print-tree.c (print_node): Dump DECL_VALUE_EXPR.
2177         * tree-ssa-dce.c (find_control_dependence): Do not assume that
2178         ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
2179         * tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
2180         OpenMP directives.
2181         (struct nesting_info): Add field_map,
2182         suppress_expansion, debug_var_chain.
2183         (create_nesting_tree): Initialize them.
2184         (lookup_field_for_decl): Use field_map.
2185         (get_nonlocal_debug_decl, get_local_debug_decl): New.
2186         (convert_local_omp_clauses): New.
2187         (finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
2188         (walk_body): Split out of walk_function.
2189         (convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
2190         (convert_nonlocal_reference): Handle omp statements.
2191         (convert_local_reference): Likewise.
2192         (unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
2193         (unnest_nesting_tree): New.
2194         (lower_nested_functions): Call it.
2195         (insert_field_into_struct): Make extern.
2196         (struct walk_stmt_info): Move to tree-gimple.h.
2197         (walk_stmts): Make extern.
2198         * omp-builtins.def: New file.
2199         * tree-iterator.c (expr_only): Clarify comment.
2200         * c-common.h (pushdecl_top_level, pushdecl,
2201         build_modify_expr, build_indirect_ref,
2202         c_finish_omp_master, c_finish_omp_critical,
2203         c_finish_omp_ordered, c_finish_omp_barrier,
2204         c_finish_omp_atomic, c_finish_omp_flush,
2205         c_finish_omp_for, c_split_parallel_clauses,
2206         omp_clause_default_kind, c_omp_sharing_predetermined,
2207         c_omp_remap_decl): Declare.
2208         * Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
2209         (OBJS-common): Add omp-low.o.
2210         (c-omp.o, omp-low.o): Add.
2211         (gimplify.o): Add dependency on $(OPTABS_H).
2212         (GTFILES): Add omp-low.c.
2213         (gt-stringpool.h): Add.
2214         * tree-cfg.c (set_bb_for_stmt): Do not update the
2215         block-to-labels map if we are currently expanding to RTL.
2216         (tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
2217         checks.
2218         Handle IDENTIFIER_NODE.
2219         (tree_verify_flow_info): Do not ICE when emitting error
2220         messages about invalid labels.
2221         (dump_function_to_file): Reset CFUN before emitting the body
2222         of the function.
2223         (debug_function): New.
2224         * passes.c (init_optimization_passes): Schedule
2225         pass_lower_omp.
2226         * langhooks-def.h (lhd_omp_predetermined_sharing,
2227         lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
2228         Declare.
2229         (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
2230         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
2231         (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
2232         LANG_HOOKS_OMP_PREDETERMINED_SHARING,
2233         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
2234         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
2235         LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
2236         LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
2237         LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
2238         LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
2239         (LANG_HOOK_DECLS): Use them.
2240
2241 2006-01-18  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
2242             Richard Henderson  <rth@redhat.com>
2243             Jakub Jelinek  <jakub@redhat.com>
2244             Diego Novillo  <dnovillo@redhat.com>
2245
2246         * c-parser.c (pragma_omp_clause): Define.
2247         (c_parser_declaration_or_fndef): Document OpenMP syntax.
2248         (c_parser_compound_statement): Likewise.
2249         (c_parser_statement): Likewise.
2250         (c_parser_pragma): Handle omp pragmas.
2251         (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
2252         OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
2253         (c_parser_omp_clause_name, check_no_duplicate_clause,
2254         c_parser_omp_variable_list,
2255         c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
2256         c_parser_omp_clause_copyprivate,
2257         c_parser_omp_clause_default,
2258         c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
2259         c_parser_omp_clause_lastprivate,
2260         c_parser_omp_clause_nowait,
2261         c_parser_omp_clause_num_threads,
2262         c_parser_omp_clause_ordered, c_parser_omp_clause_private,
2263         c_parser_omp_clause_reduction,
2264         c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
2265         c_parser_omp_all_clauses, c_parser_omp_structured_block,
2266         c_parser_omp_atomic, c_parser_omp_barrier,
2267         c_parser_omp_critical, c_parser_omp_flush,
2268         c_parser_omp_for_loop, c_parser_omp_for,
2269         c_parser_omp_master, c_parser_omp_ordered,
2270         c_parser_omp_sections_scope, c_parser_omp_sections,
2271         c_parser_omp_parallel, c_parser_omp_single,
2272         c_parser_omp_construct, c_parser_omp_threadprivate): New.
2273         * c-pragma.c (init_pragma): Do omp pragma registration here.
2274         * c.opt (fopenmp): New flag.
2275
2276 2006-01-18  Eric Christopher  <echristo@apple.com>
2277
2278         * gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
2279         * config/darwin.h (GOMP_SELF_SPECS): Define.
2280
2281 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
2282
2283         * rtl.h: Remove the prototype for reg_alloc.
2284
2285 2006-01-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2286
2287         PR target/25731
2288         * config.gcc (hppa*-*-linux*, hppa[12]*-*-hpux10*, hppa*64*-*-hpux11*,
2289         hppa[12]*-*-hpux11*): Override default shared libgcc version for both
2290         sjlj and dwarf2 exception handling.
2291         * pa/t-hpux-shlib (SHLIB_SOVERSION): New make variable.
2292         Rework to allow overriding SHLIB_EXT and SHLIB_SOVERSION.
2293         * pa/pa.c (function_value): Treat complex and vector types as
2294         aggregates.
2295         (function_arg): Likewise.  Only pass scalar floats in the floating
2296         point argument registers.
2297         * pa/t-slibgcc-dwarf-ver: New file.
2298         * pa/t-slibgcc-sjlj-ver: New file.
2299         * pa/t-slibgcc-elf-ver: Delete file.
2300
2301 2006-01-19  Alan Modra  <amodra@bigpond.net.au>
2302
2303         * config/rs6000/rs6000.c (rs6000_assemble_integer): Correct
2304         unlikely_test_section_p test.
2305
2306 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
2307
2308         * mode-switching.c (optimize_mode_switching): Make it static.
2309         * basic-block.h: Remove the prototype for
2310         optimize_mode_switching.
2311
2312         * modulo-sched.c (sms_schedule): Make it static.
2313         * rtl.h: Remove the prototype for sms_schedule.
2314
2315         * postreload-gcse.c (gcse_after_reload_main): Make it static.
2316         * rtl.h: Remove the prototype for gcse_after_reload_main.
2317
2318         * reg-stack.c (reg_to_stack): Make it static.
2319         * rtl.h: Remove the prototype for reg_to_stack.
2320
2321         * regrename.c (regrename_optimize, copyprop_hardreg_forward):
2322         Make them static.
2323         * rtl.h: Remove the prototypes for regrename_optimize and
2324         copyprop_hardreg_forward.
2325
2326 2006-01-18  Eric Botcazou  <ebotcazou@adacore.com>
2327
2328         * config/alpha/alpha.c (alpha_split_tfmode_pair): Rename into
2329         alpha_split_tmode_pair.  Add 'mode' and 'fixup_overlap' arguments.
2330         Test against the appropriate null constant for the mode.
2331         If 'fixup_overlap' is true, swap the operands if they overlap.
2332         (alpha_split_tfmode_frobsign): Adjust call to alpha_split_tfmode_pair.
2333         * config/alpha/alpha-protos.h (alpha_split_tfmode_pair): Rename into
2334         alpha_split_tmode_pair and adjust for above change.
2335         * config/alpha/alpha.md (movtf_internal): Adjust call to
2336         alpha_split_tfmode_pair and rely on it to swap the operands.
2337         (movti_internal): New insn and post-reload splitter.
2338         (movti): New expander.
2339
2340 2006-01-18  Philippe De Muyter  <phdm@macqel.be>
2341
2342         * config/m68k/m68k.md (*addsi3_5200): Allow addq/subq to memory
2343         operands.
2344
2345 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
2346
2347         * rtlanal.c (global_reg_mentioned_p_1,
2348         global_reg_mentioned_p): Remove.
2349         * rtl.h: Remove the prototype for global_reg_mentioned_p.
2350
2351         * flow.c (initialize_uninitialized_subregs): Make it static.
2352         * rtl.h: Remove the prototype for
2353         initialize_uninitialized_subregs.
2354
2355         * function.c (instantiate_virtual_regs): Make it static.
2356         * function.h: Remove the prototype for
2357         instantiate_virtual_regs.
2358
2359         * regmove.c (regmove_optimize, combine_stack_adjustments):
2360         Make them static.
2361         * rtl.h: Remove the prototypes for regmove_optimize and
2362         combine_stack_adjustments.
2363
2364 2006-01-17  Roger Sayle  <roger@eyesopen.com>
2365
2366         * config/i386/i386.c (COSTS_N_BYTES): New macro.
2367         (size_cost): Encode costs in bytes so that a reg-reg addition is
2368         equivalent to COSTS_N_INSNS(1).
2369         (override_options): Use the size_cost.branch_cost as the default
2370         ix86_branch_cost when optimizing for size.
2371
2372 2006-01-18  Ben Elliston  <bje@au.ibm.com>
2373
2374         * Makefile.in (D32PBIT_FUNCS): New.
2375         (D64PBIT_FUNCS, D128PBIT_FUNCS): Likewise.
2376         (libgcc.mk): Set D32PBIT, D64PBIT, D128PBIT, D32PBIT_FUNCS,
2377         D64PBIT_FUNCS and D128PBIT_FUNCS.
2378         (LIBGCC_DEPS): Include $(D32PBIT), $(D64PBIT), $(D128PBIT).
2379         * mklibgcc.in Bring in the DFP support code if D32PBIT, D64PBIT or
2380         D128PBIT are set.
2381         (decnumber_dep): Define.
2382         * doc/libgcc.texi (Decimal float library routines): New node.
2383         * config/dfp-bit.h, config/dfp-bit.c: New files.
2384
2385 2006-01-18  Ben Elliston  <bje@au.ibm.com>
2386
2387         * expr.c (emit_move_change_mode): Always adjust addresses, not
2388         just during reload.  Copy replacements only during reload.
2389         (emit_move_insn_1): Move MODE_DECIMAL_FLOAT modes by invoking
2390         emit_move_via_integer.
2391
2392 2006-01-17  Shantonu Sen  <ssen@opendarwin.org>
2393
2394         * Makefile.in (check-%, check-consistency): Use $${srcdir}
2395         instead of $(srcdir) and ${srcdir}.
2396
2397 2006-01-17  Richard Earnshaw  <rearnsha@arm.com>
2398
2399         PR target/592
2400         PR middle-end/11135
2401         * arm.h (struct machine_function): Add pic_reg.
2402         * arm.c (arm_pic_register): Make unsigned.
2403         (arm_override_options): Only set arm_pic_register if
2404         TARGET_SINGLE_PIC_BASE.
2405         (use_return_insn): Only test for a pic register if it is fixed.
2406         (arm_compute_save_reg0_reg12_mask): Likewise.
2407         (thumb_compute_save_reg_mask): Likewise.
2408         (legitimate_pic_operand): Factor out some known invariants.
2409         (legitimize_pic_address): If we don't have a fixed pic register,
2410         then set up a pseudo in the function entry sequence.  Handle the
2411         pic base being in a pseudo.
2412         (arm_load_pic_register): Handle the pic register being in a pseudo.
2413         (arm_expand_prologue): Only set up the pic register if it is fixed.
2414         (thumb_expand_prologue): Likewise.
2415         * arm.md (pic_load_addr_based): Handle the pic base being a pseudo.
2416         (pic_load_addr_based_insn): Likewise.
2417         (builtin_setjmp_receiver): Don't restore the pic base if it isn't
2418         fixed.
2419
2420 2006-01-18  Ben Elliston  <bje@au.ibm.com>
2421
2422         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
2423         decimal float modes for all floating point registers.
2424
2425         * config/rs6000/predicates.md (reg_or_mem_operand): Pair up
2426         match_code "mem" with match_test "macho_lo_sum_memory_operand".
2427
2428 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
2429
2430         PR c/25682
2431         * c-typeck.c (build_unary_op): Fold offsetof-like expressions
2432         even when the pointer is not NULL.
2433
2434 2006-01-16  Ian Lance Taylor  <ian@airs.com>
2435
2436         * common.opt (ftoplevel-reorder): New option.
2437         * cgraph.c (cgraph_asm_nodes): New global variable.
2438         (cgraph_asm_last_node): New static variable.
2439         (cgraph_order): New global variable.
2440         (cgraph_create_node): Set new order field.
2441         (cgraph_varpool_node): Likewise.
2442         (decide_is_variable_needed): Return true if not
2443         flag_toplevel_reorder.
2444         (cgraph_add_asm_node): New function.
2445         * cgraph.h (struct cgraph_node): Add order field.
2446         (struct cgraph_varpool_node): Add order field.
2447         (struct cgraph_asm_node): Define.
2448         (cgraph_asm_nodes, cgraph_order): Declare.
2449         (cgraph_add_asm_node): Declare.
2450         * cgraphunit.c (cgraph_varpool_assemble_decl): New static
2451         function.
2452         (cgraph_varpool_assemble_pending_decls): Call it.
2453         (cgraph_output_pending_asms): New static function.
2454         (cgraph_finalize_compilation_unit): Call it.
2455         (struct cgraph_order_sort): Define.
2456         (cgraph_output_in_order): New static function.
2457         (cgraph_optimize): Call cgraph_output_pending_asms.  Add code for
2458         !flag_toplevel_reorder case.
2459         * c-parser.c: Include "cgraph.h".
2460         (c_parser_asm_definition): Call cgraph_add_asm_node rather than
2461         assemble_asm.
2462         * Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
2463         than -fno-unit-at-a-time.
2464         * doc/invoke.texi (Option Summary): Mention
2465         -fno-toplevel-reorder.
2466         (Optimize Options): Document -fno-toplevel-reorder.  Mention it in
2467         -funit-at-a-time documentation.
2468
2469 2006-01-17  Hans-Peter Nilsson  <hp@axis.com>
2470             Kazu Hirata  <kazu@codesourcery.com>
2471
2472         * Makefile.in (FUNCTION_H, LAMBDA_H): Use $(TREE_H), not tree.h.
2473
2474 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
2475
2476         * Makefile.in (FUNCTION_H): New.  Use it instead of
2477         function.h throughout the file.
2478         * function.h: Include tree.h.
2479
2480 2006-01-17  Ben Elliston  <bje@au.ibm.com>
2481
2482         * recog.c: Separate some functions with whitespace.
2483
2484 2006-01-16  Richard Henderson  <rth@redhat.com>
2485
2486         Merge from gomp branch:
2487         * Makefile.in (TREE_INLINE_H): New.  Use it as needed.
2488         * tree-inline.h (struct copy_body_data): Move from tree-inline.c
2489         and rename from struct inline_data.  Rename callee* to dst*;
2490         caller* to src*; add copy_decl hook, transform_call_graph_edges,
2491         transform_new_cfg, transform_return_to_modify, and
2492         transform_lang_insert_block flags; remove cloning_p, versioning_p,
2493         update_clones_p.
2494         (copy_body_r, insert_decl_map, remap_decl, remap_type): Declare.
2495         (copy_decl_for_dup): Remove.
2496         * tree-inline.c (struct inline_data): Move to header.
2497         (insert_decl_map): Export.
2498         (remap_decl): Update for member name changes.  Use copy_decl hook.
2499         Allow for replacement to be a non-decl.  Remove dead code.
2500         (remap_type_1): Check for existing mapping.
2501         (remap_type): Export.
2502         (remap_decls): Update for member name changes.
2503         (remap_block, copy_bb, copy_cfg_body, copy_generic_body): Likewise.
2504         (copy_body, setup_one_parameter, declare_return_variable): Likewise.
2505         (expand_call_inline, optimize_inline_calls, clone_body): Likewise.
2506         (copy_tree_r, mark_local_for_remap_r, unsave_expr_now): Likewise.
2507         (tree_function_versioning, build_duplicate_type): Likewise.
2508         (copy_body_r): Likewise.  Export.
2509         (copy_decl_for_dup): Split into ...
2510         (copy_decl_for_dup_finish, copy_decl_to_var,
2511         copy_decl_no_change, copy_decl_maybe_to_var): ... these.
2512         (replace_ref_tree, inlining_p): Remove.
2513
2514 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
2515
2516         * ifcvt.c (if_convert): Make it static.
2517         * rtl.h: Remove the prototype for if_convert.
2518
2519         * local-alloc.c (local_alloc): Make it static.
2520         * rtl.h: Remove the prototype for local_alloc.
2521
2522         * loop.c (loop_optimize): Make it static.
2523         * cfgloop.h: Remove the prototype for loop_optimize.
2524         * rtl.h: Likewise.
2525
2526 2006-01-16  DJ Delorie  <dj@redhat.com>
2527
2528         * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
2529         mems.
2530
2531 2006-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2532
2533         * pa.md: Disparage copies between general and floating-point registers
2534         in 32-bit move patterns.
2535
2536 2006-01-16  H.J. Lu  <hongjiu.lu@intel.com>
2537
2538         PR testsuite/25741
2539         * Makefile.in (check-%): Depend on site.exp instead of
2540         $(TESTSUITEDIR)/site.exp. Run "runtest" in separate language
2541         directories.
2542
2543 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
2544
2545         * global.c (global_alloc): Make it static.
2546         * rtl.h: Remove the prototype for global_alloc.
2547
2548 2006-01-16  Richard Guenther  <rguenther@suse.de>
2549
2550         * tree-ssa-alias.c (struct used_part): Add write_only field.
2551         (get_or_create_used_part_for): Initialize it to true.
2552         (create_overlap_variables_for): Don't create structure variables
2553         for structures that only are written to.
2554         (find_used_portions): Handle MODIFY_EXPR to track whether a
2555         structure is only written to.
2556
2557 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
2558
2559         * bb-reorder.c (partition_hot_cold_basic_blocks): Make it
2560         static.
2561         * basic-block.h: Remove the prototype for
2562         partition_hot_cold_basic_blocks.
2563
2564 2006-01-16  Rafael Ãƒvila de Espíndola <rafael.espindola@gmail.com>
2565
2566         * cppspec.c (lang_specific_spec_functions): Remove.
2567         * gcc.c (lookup_spec_function): Use static_spec_functions directly.
2568         * gcc.h (lang_specific_spec_functions): Remove.
2569         * gccspec.c (lang_specific_spec_functions): Remove.
2570
2571 2006-01-16  Paolo Bonzini  <bonzini@gnu.org>
2572
2573         * combine.c (record_value_for_reg): Invalidate registers
2574         if INSN is null.
2575         (record_dead_and_set_regs_1): Likewise, by passing them to
2576         record_value_for_reg.
2577         (record_dead_and_set_regs): Invalidate stores made by a
2578         call.  We do not combine across a call, but we still
2579         relied on equivalences.
2580
2581 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
2582
2583         * tree-vrp.c (extract_range_from_binary_expr): Cope with
2584         vrp_int_const_binop returning non-constant nodes.
2585
2586 2006-01-16  Paul Brook  <paul@codesourcery.com>
2587
2588         * config/m68k/m68k.c (output_move_const_into_data_reg):
2589         Output correct mnemonic for mvz and mvs.
2590
2591 2006-01-16  Gabor Loki  <loki@gcc.gnu.org>
2592
2593         * rtl-factoring.c: Add sequence abstraction algorithm.
2594         * cfgcleanup.c (outgoing_edges_match): Extra checks.
2595         (try_crossjump_to_edge): Avoid deleting preserve label when redirecting
2596         ABNORMAL edges.
2597         (block_has_preserve_label): New function.
2598         * common.opt: Register new pass.
2599         * Makefile.in: Ditto.
2600         * passes.c: Ditto.
2601         * timevar.def: Ditto.
2602         * tree-pass.h: Ditto.
2603         * emit-rtl.c (make_jump_insn_raw): Remove forward decl.
2604         * rtl.h (make_jump_insn_raw): Add forward decl.
2605         * doc/invoke.texi: Add documentation for -frtl-abstract-sequences.
2606
2607 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
2608             Roger Sayle  <roger@eyesopen.com>
2609
2610         * fold-const.c (fold_minmax): New static function.
2611         (fold_binary) <MIN_EXPR>: Call it.
2612         <MAX_EXPR>: Likewise.
2613         * stor-layout.c (place_field): Use DECL_SIZE consistently
2614         in the computation of the new record size.
2615
2616 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
2617
2618         * cse.c (cse_condition_code_reg): Make it static.
2619         * rtl.h: Remove the prototype for cse_condition_code_reg.
2620
2621         * combine.c (combine_instructions): Make it static.
2622         * rtl.h: Remove the prototype for combine_instructions.
2623
2624 2006-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2625
2626         PR target/25168
2627         * tree.c (get_file_function_name_long): Concatenate the first global
2628         object name with a string derived from the input filename of the object
2629         for type "F".
2630
2631 2006-01-16  Ben Elliston  <bje@au.ibm.com>
2632
2633         * config/i386/winnt-stubs.c: Update FSF address.
2634         * config/xtensa/ieee754-df.S: Ditto.
2635         * config/xtensa/ieee754-sf.S: Ditto.
2636
2637 2006-01-14  Ian Lance Taylor  <ian@airs.com>
2638
2639         * ifcvt.c (noce_init_if_info): New static function, broken out of
2640         noce_process_if_block.
2641         (noce_process_if_block): Call noce_init_if_info.
2642         (check_cond_move_block): New static function.
2643         (cond_move_process_if_block): New static function.
2644         (process_if_block): Call cond_move_process_if_block.
2645
2646 2006-01-15  Kazu Hirata  <kazu@codesourcery.com>
2647
2648         * cselib.c (hash_table): Rename to cselib_hash_table.
2649         (cselib_clear_table, discard_useless_values,
2650         remove_useless_values, cselib_lookup_mem, cselib_lookup,
2651         cselib_init, cselib_finish): Adjust uses of hash_table.
2652
2653 2006-01-14  Kazu Hirata  <kazu@codesourcery.com>
2654
2655         PR tree-optimization/25485
2656         * tree-vrp.c (extract_range_from_binary_expr): Handle cases
2657         where one of the operands of TRUTH_AND_EXPR and TRUTH_OR_EXPR
2658         is known to be false and true, respectively.
2659
2660 2006-01-14  Richard Guenther  <rguenther@suse.de>
2661
2662         PR tree-optimization/22548
2663         PR tree-optimization/22555
2664         PR tree-optimization/22501
2665         * Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
2666         * params.def (salias-max-array-elements): New parameter.
2667         * params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
2668         * doc/invoke.texi (salias-max-array-elements): Document.
2669         * tree-flow-inline.h (var_can_have_subvars): We also handle
2670         arrays now.
2671         * tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
2672         COMPONENT_REF.
2673         * tree-ssa-structalias.c (params.h): Include.
2674         (push_fields_onto_fieldstack): Handle ARRAY_TYPE.
2675         (find_func_aliases): Handle multiple constraints from ARRAY_REF.
2676         (get_constraint_for): For ADDR_EXPR operating on something
2677         containing an ARRAY_REF, add all subvars to the solution.
2678         (handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
2679         * tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
2680         for creating MUST_DEFs.
2681         (get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.
2682
2683 2006-01-14  Zdenek Dvorak <dvorakz@suse.cz>
2684
2685         * tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
2686         functions.
2687         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
2688         assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
2689         number_of_iterations_le): New functions.
2690         (number_of_iterations_special): Removed.
2691         (number_of_iterations_exit): Do not use number_of_iterations_special.
2692         * tree.c (unsigned_type_for): Always return integer type.
2693
2694 2006-01-14  Steven Bosscher  <stevenb.gcc@gmail.com>
2695         Richard Guenther  <rguenther@suse.de>
2696
2697         PR rtl-optimization/24257
2698         * gcse.c (find_moveable_store): Only consider a store movable
2699         when the SET_SRC of the insn can be assigned to a register.
2700
2701 2006-01-14  Ian Lance Taylor  <ian@airs.com>
2702
2703         * tree.c (tree_not_class_check_failed): New function.
2704         * tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
2705         (tree_not_class_check_failed): Declare.
2706
2707 2006-01-13  Ian Lance Taylor  <ian@airs.com>
2708
2709         * reload1.c (do_output_reload): Add assertion rejecting a
2710         CALL_INSN.
2711
2712 2006-01-13  Adam Nemet  <anemet@caviumnetworks.com>
2713
2714         * combine.c (struct reg_stat): Add new fields truncation_label and
2715         truncated_to_mode.
2716         (record_value_for_reg): Reset truncated_to_mode.
2717         (record_truncated_value): New function.
2718         (check_promoted_subreg): Call it.  Rename to check_conversions.
2719         (combine_instructions): Rename check_promoted_subreg to
2720         check_conversions.
2721         (reg_truncated_to_mode): New function.
2722         (make_extraction): Use it.  Check TRULY_NOOP_TRUNCATION.
2723         (gen_lowpart_or_truncate): New function.
2724         (force_to_mode): Use it instead of gen_lowpart.
2725
2726 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
2727
2728         * tree-ssa-alias.c (add_type_alias): Fix typo.  Test whether
2729         VAR is a tag, not its type tag.
2730
2731 2006-01-13  Alexandre Oliva  <aoliva@redhat.com>
2732
2733         * config/i386/sse.md (*vec_extractv2di_1_sse2): Reorder
2734         alternatives to match style of other entries.
2735         (*vec_extractv2di_1_sse): Likewise.  Fix mode attr.
2736
2737 2006-01-13  Daniel Berlin  <dberlin@dberlin.org>
2738
2739         PR tree-optimization/25771
2740         * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
2741         SSA_NAMES.
2742
2743 2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
2744
2745         PR tree-opt/24365
2746         * tree-inline.c (declare_return_variable): If the return variable
2747         was marked as a non gimple complex, set the return slot variable
2748         to be a non gimple comple variable.
2749
2750 2006-01-13  Richard Guenther  <rguenther@suse.de>
2751
2752         * builtins.c (expand_builtin_sincos): New function.
2753         (expand_builtin_mathfn_3): Remove dead code, sin and cos
2754         do not set errno.
2755         (expand_builtin): Expand sincos using expand_builtin_sincos.
2756
2757 2006-01-12  DJ Delorie  <dj@redhat.com>
2758
2759         * config/m32c/shift.md: Rewrite: Allow arbitrary operands for
2760         shift counts, separate SI shifts for m32c vs m16c, pass shift type
2761         so that constant shifts can be split.
2762         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add In6.
2763         (m32c_valid_pointer_mode): Make static.
2764         (shift_gen_func_for): New.
2765         (m32c_prepare_shift): Use it.  Split large const shifts into
2766         multiple shifts.
2767         * config/m32c/predicates.md (shiftcount_operand): Allow more
2768         general operands.
2769         (longshiftcount_operand): New.
2770         * doc/md.texi (Machine Constraints): Document In6.
2771
2772 2006-01-13  Ben Elliston  <bje@au.ibm.com>
2773
2774         * doc/tm.texi (Data Output): Add REAL_VALUE_TO_TARGET_DECIMAL32,
2775         REAL_VALUE_TO_TARGET_DECIMAL64 and REAL_VALUE_TO_TARGET_DECIMAL128
2776         documentation.
2777
2778 2006-01-12  Daniel Berlin  <dberlin@dberlin.org>
2779
2780         * tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
2781         to try to avoid clobbering pieces of structures when we know
2782         something about the whole structure.
2783         * tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR
2784
2785 2006-01-13  Ben Elliston  <bje@au.ibm.com>
2786
2787         * doc/rtl.texi (Insns): Remove statement that libcalls cannot
2788         return in memory, as this is no limitation is no longer present.
2789
2790 2006-01-12  DJ Delorie  <dj@redhat.com>
2791
2792         * config/m32c/addsub.md (addhi3): Add two more alternatives, for
2793         mova with fb, and for fb+0 -> An.
2794
2795         * config/m32c/mov.md (peephole2): Fix enabling logic.
2796
2797         * config/m32c/m32c.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
2798         DTOR_LIST_BEGIN, DTOR_LIST_END, CTORS_SECTION_ASM_OP,
2799         DTORS_SECTION_ASM_OP, INIT_ARRAY_SECTION_ASM_OP,
2800         FINI_ARRAY_SECTION_ASM_OP): Define.
2801
2802         * config/m32c/m32c.c (m32c_legitimize_address): Remove temporary
2803         variable.
2804         (m32c_legitimize_reload_address): New logic to reload FB to An.
2805         (m32c_output_reg_push): Add newline.
2806         (m32c_output_reg_pop): Likewise.
2807
2808 2006-01-12  Ulrich Weigand  <uweigand@de.ibm.com>
2809
2810         * struct-equiv.c (find_dying_inputs): Fix off-by-one bug.
2811
2812 2006-01-11  Andrew Pinski  <pinskia@physics.uc.edu>
2813
2814         * config/i386/darwin.h (SUBTARGET_ENCODE_SECTION_INFO): Define.
2815
2816 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
2817
2818         * config/sh/predicates.md (sh_rep_vec): Add parallel to
2819         match_code.
2820
2821 2006-01-11  Ben Elliston  <bje@au.ibm.com>
2822
2823         * rtlanal.c (find_reg_note): Assert insn is not null.
2824
2825 2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2826
2827         * df-scan.c (df_hard_reg_init): Move declaration of i outside
2828         ifdef.
2829
2830 2006-01-11  Jeff Law  <law@redhat.com>
2831
2832         * tree-ssa-threadupdate.c (threaded_edges): New VEC to
2833         hold edge pairs.
2834         (mark_threaded_blocks, register_jump_thread): New functions.
2835         (thread_through_all_blocks): Remove unwanted argument.  No
2836         longer rely on e->aux to communicate thread target info.
2837         Call mark_threaded_blocks.  Release the threaded_blocks
2838         bitmap and threaded_edges vector when complete.
2839         * tree-ssa-dom.c (struct edge_info): Remove redirection_target field.
2840         (threaded_blocks): Remove.
2841         (tree_ssa_dominator_optimize): Remove initialization and
2842         finalization of threaded_blocks.  Simplify call to
2843         thread_through_all_blocks.
2844         (thread_across_edge): Call register_jump_thread rather than
2845         storing thread information into e->aux.
2846         (free_all_edge_infos): Simplify now that e->aux is no longer
2847         used to communicate with thread_through_all_blocks.
2848         * tree-flow.h (thread_through_all_blocks): Update prototype.
2849         (register_jump_thread): Prototype.
2850
2851 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
2852
2853         * df-core.c (df_compact_blocks, df_bb_replace): Use
2854         SET_BASIC_BLOCK instead of BASIC_BLOCK.
2855
2856 2006-01-11  Richard Guenther  <rguenther@suse.de>
2857
2858         PR tree-optimization/25734
2859         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
2860         stop propagation after successful propagation to the LHS.
2861
2862 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
2863
2864         * basic-block.h (control_flow_graph): Change the type of
2865         x_basic_block_info to VEC(basic_block,gc) *.
2866         (BASIC_BLOCK_FOR_FUNCTION, BASIC_BLOCK): Adjust the uses of
2867         basic_block_info.
2868         (SET_BASIC_BLOCK): New.
2869         * cfg.c (compact_blocks, expunge_block): Use SET_BASIC_BLOCK
2870         instead of BASIC_BLOCK when assigning to BASIC_BLOCK.
2871         * cfgbuild.c (find_basic_blocks): Likewise.
2872         * cfglayout.c (fixup_reorder_chain): Likewise.
2873         * cfgrtl.c (create_basic_block_structure,
2874         rtl_create_basic_block): Likewise.
2875         * ifcvt.c (find_if_case_1): Likewise.
2876         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb):
2877         Likewise.
2878
2879 2006-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
2880
2881         * Makefile.in: Removed rotted odf.c entry.
2882
2883 2006-01-11  Hans-Peter Nilsson  <hp@axis.com>
2884
2885         PR target/25706
2886         * config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
2887         ("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
2888         ("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
2889         output pattern modifier, not %e.
2890         * config/cris/cris.c (cris_op_str): Update comment about pattern
2891         modifier.
2892         (cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
2893         before falling through into...
2894         <case 'E'>: Redefined from old 'e' case.
2895
2896 2006-01-11  Jan Hubicka  <jh@suse.cz>
2897
2898         PR target/25042
2899         * i386.c (ix86_init_mmx_sse_builtins): Do not delcare float128
2900
2901 2006-01-11  Jan Hubicka  <jh@suse.cz>
2902
2903         * i386.h (TARGET_DECOMPOSE_LEA): Kill.
2904         * i386.c (x86_decompose_lea): Kill.
2905         (ix86_rtx_costs): Kill.
2906
2907 2006-01-11  Jan Hubicka  <jh@suse.cz>
2908
2909         * cgraph.c (cgraph_insert_node_to_hashtable): New function.
2910         * cgraph.h (cgraph_node): Add inline_decl.
2911         (cgraph_insert_node_to_hashtable): Declare.
2912         (save_inline_function_body): Declare.
2913         * cgraphunit.c (verify_cgraph_node): Inline edges might point to inline
2914         clones.
2915         (cgraph_preserve_function_body_p): Do not presrve when dump is enabled.
2916         (cgraph_function_versioning): Update call of tree_function_versioning.
2917         (save_inline_function_body): New function.
2918         * function.h (struct function): Kill saved_eh, saved_cfg, saved_args,
2919         saved_static_chain_decl, saved_blocks and saved-unexpanded_var_list.
2920         * ipa-inline.c (cgraph_mark_inline_edge): Look for inline clones.
2921         (cgraph_default_inline_p): Likewise.
2922         (cgraph_decide_inlining_incrementally): Likewise.
2923         * tree-inline.c (inline_data): Kill saving_p add update_clones_p.
2924         (copy_bb): Kill saving; do updating of clones.
2925         (copy_cfg_body): Kill saving.
2926         (initialize_inlined-parameters): Likewise.
2927         (expand_call_inline): Likewise.
2928         (save_body): Kill.
2929         (tree_function_versioning): New parameter "update_clones".
2930         (inlining_p): Kill saving.
2931         * tree-inline.h (tree_function_versioning): Update prototype.
2932         * tree-optimize.c (tree_rest_of_compilation): Use clonning instead of
2933         saving.
2934
2935 2006-01-11  Ian Lance Taylor <ian@airs.com>
2936
2937         * combine.c (struct undo): Remove is_int.  Enumify types of undos.
2938         Allow undoing set of machine mode.
2939         (do_SUBST): Use enums instead of is_int.
2940         (do_SUBST_MODE): New function.
2941         (SUBST_MODE): New macro.
2942         (try_combine): Use SUBST_MODE/PUT_MODE instead of generating a new
2943         reg and trying to replace reg_regno_rtx with a new register.
2944         (undo_all): Use new enums, handle undoing a PUT_MODE change.
2945         (simplify_set): Use SUBST_MODE.
2946         (distribute_notes): Remove code that tried to update reg notes
2947         for regno_reg_rtx changes.
2948
2949 2006-01-11  Paolo Bonzini  <bonzini@gnu.org>
2950
2951         PR tree-optimization/23109
2952         PR tree-optimization/23948
2953         PR tree-optimization/24123
2954
2955         * Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
2956         * tree-cfg.c (single_noncomplex_succ): New.
2957         * tree-flow.h (single_noncomplex_succ): Declare it.
2958         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
2959         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
2960         (struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
2961         insert_bb, register_division_in, insert_reciprocals,
2962         replace_reciprocal, free_bb): New.
2963         (execute_cse_reciprocals_1): Rewritten.
2964         (execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
2965         Do not commit any edge insertion.  Always compute dominators and
2966         create the allocation pool.
2967         * target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
2968         * target.h (struct gcc_target): Add min_divistions_for_recip_mul.
2969         * targhooks.c (default_min_divistions_for_recip_mul): New.
2970         * targhooks.h (default_min_divistions_for_recip_mul): New prototype.
2971         * passes.c (init_optimization_passes): Run recip after tree loop
2972         optimizations.
2973         * doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.
2974
2975 2006-01-11  Danny Berlin <dberlin@dberlin.org>
2976             Kenneth Zadeck <zadeck@naturalbridge.com>
2977
2978         * df.h (DF_SCAN, DF_RU, DF_RD, DF_LR, DF_UR, DF_UREC, DF_CHAIN,
2979         DF_RI, DF_LAST_PROBLEM_PLUS1, DF_DU_CHAIN, DF_UD_CHAIN,
2980         DF_REF_TYPE_NAMES, DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS,
2981         DF_SCAN_BB_INFO, DF_RU_BB_INFO, DF_RD_BB_INFO, DF_LR_BB_INFO,
2982         DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_IN, DF_LIVE_OUT,
2983         DF_RA_LIVE_IN, DF_RA_LIVE_OUT, DF_UPWARD_LIVE_IN,
2984         DF_UPWARD_LIVE_OUT, DF_REF_REAL_REG, DF_REF_REGNO,
2985         DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_BBNO,
2986         DF_REF_INSN, DF_REF_INSN_UID, DF_REF_TYPE, DF_REF_CHAIN,
2987         DF_REF_ID, DF_REF_FLAGS, DF_REF_NEXT_REG, DF_REF_PREV_REG,
2988         DF_REF_NEXT_REF, DF_REF_DATA, DF_REF_REG_DEF_P, DF_REF_REG_USE_P,
2989         DF_REF_REG_MEM_STORE_P, DF_REF_REG_MEM_LOAD_P, DF_REF_REG_MEM_P,
2990         DF_DEFS_SIZE, DF_DEFS_GET, DF_DEFS_SET, DF_USES_SIZE, DF_USES_GET,
2991         DF_USES_SET, DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_SET,
2992         DF_REG_USE_GET, DF_REG_USE_SET, DF_REGNO_FIRST_DEF,
2993         DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
2994         DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
2995         DF_INSN_UID_GET, DF_INSN_UID_LUID, DF_INSN_UID_DEFS,
2996         DF_INSN_UID_USES, DF_SCAN_INITIAL, DF_SCAN_GLOBAL,
2997         DF_SCAN_POST_ALLOC): New macros.
2998         (df_flow_dir, df_ref_type, df_ref_flags, df_alloc_function,
2999         df_free_bb_function, df_local_compute_function, df_init_function,
3000         df_dataflow_function, df_confluence_function_0,
3001         df_confluence_function_n, df_transfer_function,
3002         df_finalizer_function, df_free_function, df_dump_problem_function,
3003         df_problem, dataflow, df_insn_info, df_reg_info, df_ref, df_link,
3004         df_ref_info, df, df_map, df_scan_bb_info, df_ru_bb_info,
3005         df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
3006         df_urec_bb_info, ) New types.
3007         (df_invalidated_by_call, df_all_hard_regs, df_state) New public
3008         variables.
3009         (df_init, df_add_problem, df_set_blocks, df_finish, df_analyze,
3010         df_analyze_simple_change_some_blocks,
3011         df_analyze_simple_change_one_block, df_compact_blocks,
3012         df_bb_replace, df_bb_regno_last_use_find,
3013         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
3014         df_insn_regno_def_p, df_find_def, df_find_use,
3015         df_iterative_dataflow, df_dump, df_chain_dump, df_refs_chain_dump,
3016         df_regs_chain_dump, df_insn_debug, df_insn_debug_regno,
3017         df_regno_debug, df_ref_debug, debug_df_insn, debug_df_regno,
3018         debug_df_reg, debug_df_defno, debug_df_useno, debug_df_ref,
3019         debug_df_chain, df_get_dependent_problem, df_chain_create,
3020         df_chain_unlink, df_chain_copy, df_get_live_in, df_get_live_out,
3021         df_grow_bb_info, df_chain_dump, df_print_bb_index,
3022         df_ru_add_problem, df_ru_get_bb_info, df_rd_add_problem,
3023         df_rd_get_bb_info, df_lr_add_problem, df_lr_get_bb_info,
3024         df_ur_add_problem, df_ur_get_bb_info, df_urec_add_problem,
3025         df_urec_get_bb_info, df_chain_add_problem, df_ri_add_problem,
3026         df_reg_lifetime, df_scan_get_bb_info, df_scan_add_problem,
3027         df_rescan_blocks, df_ref_create, df_get_artificial_defs,
3028         df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
3029         df_ref_remove, df_insn_refs_delete, df_refs_delete,
3030         df_reorganize_refs, df_set_state, df_hard_reg_init,
3031         df_read_modify_subreg_p) New public functions.
3032         * df-core.c: The core dataflow solver and glue routines for rtl
3033         dataflow.
3034         (df_init, df_add_problem, df_set_blocks, df_finish,
3035         df_hybrid_search_forward, df_hybrid_search_backward,
3036         df_iterative_dataflow, df_prune_to_subcfg, df_analyze_problem,
3037         df_analyze, df_get_bb_info, df_set_bb_info, df_bb_replace,
3038         df_bb_regno_last_use_find, df_bb_regno_first_def_find,
3039         df_bb_regno_last_def_find, df_insn_regno_def_p, df_find_def,
3040         df_reg_defined, df_find_use, df_reg_used, df_dump,
3041         df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
3042         df_insn_debug_regno, df_regno_debug, df_ref_debug, debug_df_insn,
3043         debug_df_reg, debug_df_regno, debug_df_ref debug_df_defno,
3044         debug_df_useno, reset_df_after_reload): New functions.
3045         * df-scan.c: The scanning fuctions, once in df.c, completely
3046         rewritten so that they now fully model the functionality of
3047         register usage at the backend.
3048         (df_scan_free_internal, df_scan_get_bb_info, df_scan_set_bb_info,
3049         df_scan_free_bb_info, df_scan_alloc, df_scan_free, df_scan_dump,
3050         df_scan_add_problem, df_grow_reg_info, df_grow_ref_info,
3051         df_grow_insn_info, df_rescan_blocks, df_ref_create,
3052         df_get_artificial_defs, df_get_artificial_uses,
3053         df_reg_chain_create, df_ref_unlink, df_reg_chain_unlink,
3054         df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete,
3055         df_refs_delete, df_reorganize_refs, df_set_state,
3056         df_ref_create_structure, df_ref_record, df_read_modify_subreg_p,
3057         df_def_record_1, df_defs_record, df_uses_record,
3058         df_insn_contains_asm_1, df_insn_contains_asm, df_insn_refs_record,
3059         df_has_eh_preds, df_bb_refs_record, df_refs_record, df_mark_reg,
3060         df_record_exit_block_uses, df_hard_reg_init): New functions.
3061
3062         * df-problems.c: Seven concrete dataflow problems that use the
3063         scanning in df-scan.c and are solved by the engine in df-core.c.
3064         (df_get_dependent_problem, df_chain_create, df_chain_unlink,
3065         df_chain_copy, df_get_live_in, df_get_live_out, df_grow_bb_info,
3066         df_chain_dump, df_print_bb_index, df_ref_bitmap, df_set_seen,
3067         df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
3068         df_ru_free_bb_info, df_ru_alloc,
3069         df_ru_bb_local_compute_process_def,
3070         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
3071         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
3072         df_ru_transfer_function, df_ru_free, df_ru_dump,
3073         df_ru_add_problem, df_rd_get_bb_info, df_rd_set_bb_info,
3074         df_rd_free_bb_info, df_rd_alloc,
3075         df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
3076         df_rd_local_compute, df_rd_init_solution, df_rd_confluence_n,
3077         df_rd_transfer_function, df_rd_free, df_rd_dump,
3078         df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
3079         df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
3080         df_lr_local_compute, df_lr_init, df_lr_confluence_0,
3081         df_lr_confluence_n, df_lr_transfer_function, df_lr_free,
3082         df_lr_dump, df_lr_add_problem, df_ur_get_bb_info,
3083         df_ur_set_bb_info, df_ur_free_bb_info, df_ur_alloc,
3084         df_ur_bb_local_compute, df_ur_local_compute, df_ur_init,
3085         df_ur_local_finalize, df_ur_confluence_n, df_ur_transfer_function,
3086         df_ur_free, df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
3087         df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
3088         df_urec_mark_reg_change, df_urec_check_earlyclobber,
3089         df_urec_mark_reg_use_for_earlyclobber,
3090         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
3091         df_urec_local_compute, df_urec_init, df_urec_local_finalize,
3092         df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
3093         df_urec_dump, df_urec_add_problem, df_chain_alloc,
3094         df_chain_create_bb_process_use, df_chain_create_bb,
3095         df_chain_finalize, df_chain_free, df_chains_dump,
3096         df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
3097         df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
3098         df_reg_lifetime): New functions.
3099         * df.c: Deleted file.
3100         * ddg.c (create_ddg_dep_no_link, build_inter_loop_deps): Made code
3101         consistent with new df api.
3102         * modulo-sched.c (sms_schedule, rest_of_handle_sms,
3103         rest_of_handle_sms): Ditto.
3104         * web.c (unionfind_union, union_defs, entry_register, web_main):
3105         Ditto.
3106         * loop_invariant.c (invariant_for_use, hash_invariant_expr_1,
3107         invariant_expr_equal_p, find_defs, check_dependencies,
3108         find_invariant_insn, find_invariants_to_move, move_invariant_reg,
3109         free_inv_motion_data, move_loop_invariants): Ditto.
3110         * Makefile.in (df.c, df-scan.c df-problems.c df-core.c):
3111         Update dependencies.
3112         (odf.c): Added defective entry that was deleted later in day.
3113         * sched-deps.c (sched_analyze_1): Ditto.
3114
3115 2006-01-11  Zdenek Dvorak <dvorakz@suse.cz>
3116
3117         * tree-ssa-operands.c (get_expr_operands): Record addressable
3118         variables directly.  Do not call add_stmt_operands for CONST_DECLs
3119         and ARRAY_DECLs.
3120         (get_indirect_ref_operands): Remove handling of *(&a + offset) case.
3121         (add_stmt_operands): Handle only objects satisfying SSA_VAR_P.
3122
3123 2006-01-11  Ben Elliston  <bje@au.ibm.com>
3124
3125         * config/i386/i386.c (ix86_return_in_memory): Fix comment: this
3126         function returns true in the positive case.
3127
3128 2006-01-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3129
3130         PR target/20754
3131         * config/pa/pa.md: Create separate 32 and 64-bit move patterns
3132         for SI, DI, SF and DF modes.  Add alternatives to copy between
3133         general and floating point registers to the 32-bit patterns.
3134         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED_RTX): Delete undefine.
3135         * config/pa/pa.h (SECONDARY_MEMORY_NEEDED_RTX): Delete define.
3136         (SECONDARY_MEMORY_NEEDED): Secondary memory is only needed when
3137         generating 64-bit code.
3138         * config/pa/pa.c (output_move_double): Handle copies between general
3139         and floating registers.
3140
3141 2006-01-10  Stuart Hastings  <stuart@apple.com>
3142
3143         * config/i386/i386.md (set_got): Update.
3144         (set_got_labelled): New.  (UNSPEC_LD_MPIC): New.
3145         (builtin_setjmp_receiver): Mach-O support.
3146         * config/i386/darwin.h (TARGET_ASM_FILE_END) Define.
3147         (GOT_SYMBOL_NAME): Define.
3148         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
3149         (TARGET_DEEP_BRANCH_PREDICTION): Remove.
3150         * config/i386/i386.c (override_options): Revise for Darwin.
3151         (USE_HIDDEN_LINKONCE): Enable for Mach-O.  (ix86_file_end): Mach-O
3152         support.  (darwin_x86_file_end): New.  (output_set_got): Add label
3153         parameter, revise for Mach-O.  (x86_output_mi_thunk): Likewise.
3154         * config/i386/i386-protos.h (output_set_got): Likewise.
3155         * config/darwin.c (machopic_legitimize_pic_address): Update
3156         regs_ever_live[].
3157
3158 2006-01-10  Kaz Kojima  <kkojima@gcc.gnu.org>
3159
3160         * config/sh/sh.h (SH5_WOULD_BE_PARTIAL_NREGS): Use GET_MODE_SIZE
3161         when MODE isn't BLKmode.
3162
3163 2006-01-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
3164
3165         PR rtl-optimization/25367
3166         * config/sparc/sparc.h (HARD_REGNO_RENAME_OK): New macro.
3167
3168 2006-01-10  Hans-Peter Nilsson  <hp@axis.com>
3169
3170         PR target/25718
3171         * config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
3172         for a negative bound.
3173
3174 2006-01-10  Richard Guenther  <rguenther@suse.de>
3175
3176         * tree-ssa-structalias.c (get_constraint_for_component_ref):
3177         Never override with anything constraint.
3178
3179 2006-01-10  Jan Beulich  <jbeulich@novell.com>
3180
3181         * config/i386/i386.c (ix86_data_alignment): Don't force alignment to
3182         256 bits when optimize_size.
3183
3184 2006-01-10  Jan Beulich  <jbeulich@novell.com>
3185
3186         * config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
3187         MASK_ALIGN_DOUBLE.
3188         * config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
3189         * config/i386/t-nwld (SHLIB_LINK): Insert spaces between expr
3190         arguments.
3191
3192 2006-01-10  Ben Elliston  <bje@au.ibm.com>
3193
3194         * config/rs6000/predicates.md (easy_fp_constant): Discount decimal
3195         float modes.
3196         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): New.
3197         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
3198         (USE_FP_FOR_ARG): Reject decimal float modes.
3199         (function_arg_advance): Likewise.
3200         (output_toc): Handle emitting TDmode, DDmode and SDmode constants.
3201         (rs6000_handle_altivec_attribute): Do not permit decimal floating
3202         point types in AltiVec vectors.
3203         (rs6000_function_value): Use GP_ARG_RETURN for decimal floats.
3204         (rs6000_libcall_value): Likewise.
3205
3206 2006-01-09  Bob Wilson  <bob.wilson@acm.org>
3207
3208         * config/xtensa/ieee754-df.S: New file.
3209         * config/xtensa/ieee754-sf.S: New file.
3210         * config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove fp-bit.c & dp-bit.c.
3211         (LIB1ASMFUNCS): Add SFmode and DFmode floating-point functions.
3212         * config/xtensa/lib1funcs.asm: Include ieee754-df.S and ieee754-sf.S.
3213
3214 2006-01-09  Kazu Hirata  <kazu@codesourcery.com>
3215
3216         * config/sh/predicates.md (binary_float_operator,
3217         binary_logical_operator, commutative_float_operator,
3218         equality_comparison_operator, greater_comparison_operator,
3219         less_comparison_operator, logical_operator,
3220         noncommutative_float_operator, shift_operator,
3221         symbol_ref_operand, unary_float_operator): Remove redundant
3222         conditionals.
3223
3224 2006-01-09  Jeff Law  <law@redhat.com>
3225
3226         * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Remove
3227         code to propagate the RHS of a cast into COND_EXPR_COND.  Remove
3228         now unused arguments.  Callers updated.
3229         (eliminate_redundant_computations): Remove now unused arguments,
3230         callers updated.
3231         (local_fold): Remove, no longer used.
3232         (find_equivalent_equality_comparison): Removed from tree-ssa-dom.c
3233         and moved to...
3234         * tree-ssa-forwprop.c (find_equivalent_equality_comparison): Here.
3235         (simplify_cond): New function.
3236         (forward_propagate_into_cond): Call simplify_cond.
3237
3238 2006-01-09  Alexandre Oliva  <aoliva@redhat.com>
3239
3240         * config/i386/sse.md (*vec_extractv2di_1_sse2): New.
3241         (*vec_extractv2di_1_sse): New.
3242
3243 2006-01-09  Ben Elliston  <bje@au.ibm.com>
3244
3245         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Typo fix.
3246
3247 2006-01-08  Richard Guenther  <rguenther@suse.de>
3248
3249         * tree-ssa-structalias.c (get_constraint_for): Remove
3250         anyoffset argument.
3251         (get_constraint_for_component_ref): Likewise.
3252         (do_deref): Likewise.
3253         (get_constraint_for): Likewise.
3254         (do_structure_copy): Likewise.
3255         (handle_ptr_arith): Likewise.
3256         (find_func_aliases): Likewise.  Remove unused need_anyoffset
3257         variable.
3258
3259 2006-01-08  J"orn Rennecke  <joern.rennecke@st.com>
3260             Kaz Kojima  <kkojima@gcc.gnu.org>
3261
3262         * config/sh/sh.h (CONST_OK_FOR_K16): Define.
3263         (CONST_OK_FOR_K): Add CONST_OK_FOR_K16 case.
3264         (EXTRA_CONSTRAINT_C16): Remove.
3265         (EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Define.
3266         (EXTRA_CONSTRAINT_C): Remove EXTRA_CONSTRAINT_C16 case and add
3267         EXTRA_CONSTRAINT_Css and EXTRA_CONSTRAINT_Csu cases.
3268         * config/sh/sh.c (print_operand): Handle unsigned 16-bit symbolic
3269         constants of SHmedia.  Handle nested constant expressions of
3270         SHmedia correctly.
3271         (andcosts): Fix the costs for SHmedia constants.
3272         (sh_rtx_costs): Take account of outer_code for SHmedia constants.
3273         * config/sh/sh.md (*movsi_media): Use Css constraint instead of C16.
3274         (*movsi_media_nofpu, *movqi_media, *movhi_media): Likewise.
3275         (*movdi_media, *movdi_media_nofpu, movv8qi_i, movv2hi_i): Likewise.
3276         (movv4hi_i, movv2si_i): Likewise.
3277         (movsi_const): Adjust the second operand of ior so to match with
3278         the Csu constraint.
3279         (movdi_const, movdi_const_32bit): Likewise.
3280         (movdi_const_16bit+1): Don't sign-extend LOW.
3281         (movdi_const_16bit+2): Likewise.  Remove the zero_extend and truncate
3282         step.
3283         (*double_shori): Fix the split condition.  Use GEN_INT instead
3284         of get_int_mode calls.  Mask lower 16-bit of the argument of
3285         the last GEN_INT.
3286         (sym2GOTPLT): Remove.
3287         (symGOTPLT2reg): Replace gen_sym2GOTPLT with gen_rtx_CONST and
3288         gen_rtx_UNSPEC.
3289         * config/sh/predicates.md (arith_operand): Use EXTRA_CONSTRAINT_Css
3290         instead of EXTRA_CONSTRAINT_C16.
3291
3292 2006-01-07  Ian Lance Taylor  <ian@airs.com>
3293             David Edelsohn  <edelsohn@gnu.org>
3294
3295         PR rtl-optimization/25662
3296         * optabs.c (simplify_expand_binop): Use simplify_binary_operation
3297         for constant operands instead of simplify_gen_binary.
3298         * simplify-rtx.c (simplify_gen_binary): Swap commutative operands
3299         after trying simplify_binary_operation
3300
3301 2006-01-06  Daniel Berlin  <dberlin@dberlin.org>
3302
3303         * tree.c (iterative_hash_expr): Hash decls based on UID.
3304
3305 2006-01-06  Eric Christopher  <echristo@apple.com>
3306
3307         * doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
3308         (TARGET_UNWIND_EMIT): Fix spelling.
3309         * target.h (gcc_target): Add except_table_label.
3310         * except.c (output_function_exception_table): Use.
3311         * varasm.c (default_emit_except_table_label): New.
3312         * target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
3313         define.
3314         (asm_out): Add here.
3315         * output.h (default_emit_except_table_label): Prototype.
3316         * config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
3317         * config/darwin.c (darwin_emit_except_table_label): Define.
3318         * config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.
3319
3320 2006-01-06  Zdenek Dvorak <dvorakz@suse.cz>
3321
3322         PR tree-optimization/18527
3323         * tree-ssa-loop-niter.c (number_of_iterations_cond,
3324         number_of_iterations_special, number_of_iterations_exit):
3325         Move base and step of an iv to a single structure.  Add
3326         no_overflow flag, and use it in # of iterations analysis.
3327         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Add
3328         folded_casts argument.
3329         (simple_iv): Pass base and step in a structure.  Set no_overflow
3330         flag.
3331         (scev_const_prop): Add argument to analyze_scalar_evolution_in_loop.
3332         Evaluate expensiveness of computing # of iterations instead of
3333         the final expression.
3334         * tree-scalar-evolution.h (affine_iv): New structure.
3335         (simple_iv): Declaration changed.
3336         * tree-chrec.c (chrec_apply): Handle chrecs containing symbols.
3337         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev,
3338         find_givs_in_stmt): Changed due to simple_iv change.
3339
3340 2006-01-06  Jeff Law  <law@redhat.com>
3341
3342         PR ada/24994
3343         * tree-cfg.c (bsi_replace): Rename final argument from
3344         PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
3345         change (stmt -> orig_stmt).
3346         * tree-eh.c (verify_eh_throw_stmt_node): New function.
3347         (bsi_remove): Add new argument.  Remove EH information
3348         if requested.
3349         (verify_eh_throw_table_statements): New function.
3350         (bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
3351         updated.
3352         * tree-optimize.c (execute_free_cfg_annotations): Verify
3353         the EH throw statement table after removing annotations.
3354         * except.h (verify_eh_throw_table_statements): Prototype.
3355         * tree-flow.h (bsi_remove): Update prototype.
3356         * tree-vrp.c (remove_range_assertions): Add new argument to
3357         bsi_remove call.
3358         * tree-ssa-loop-im.c (move_computations_stmt): Likewise.
3359         * tree-complex.c (expand_complex_div_wide): Likewise.
3360         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
3361         * tree-tailcall.c (eliminate_tailcall): Likewise.
3362         * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
3363         * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
3364         * tree-nrv.c (tree_nrv): Likewise.
3365         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
3366         * tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
3367         (combine_blocks): Likewise.
3368         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
3369         * tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
3370         (cleanup_control_flow): Likewise.
3371         (remove_forwarder_block): Likewise.
3372         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
3373         * tree-sra.c (sra_replace): Likewise.
3374         * tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
3375         (forward_propagate_single_use_vars): Likewise.
3376         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
3377         * tree-inline.c (expand_call_inline): Likewise.
3378         * tree-vect-transform.c (vect_transform_loop): Likewise.
3379         * tree-outof-ssa.c (rewrite_trees): Likewise.
3380         * tree-cfg.c (make_goto_expr_edges): Likewise.
3381         (cleanup_dead_labels): Likewise.
3382         (tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
3383         (bsi_move_before, bsi_move_after): Likewise.
3384         (bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
3385         (tree_redirect_edge_and_branch, tree_split_block): Likewise.
3386
3387 2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>
3388
3389         PR tree-opt/25528
3390         * tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
3391         and IMAGPART_EXPR.
3392         * tree-flow-inline.h (var_can_have_subvars): Handle complex types
3393         on non gimple variables.  Also add checks at the top for decls and
3394         mtags.
3395         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
3396         complex types.
3397         * tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
3398         and IMAGPART_EXPR for creating MUST_DEFs.
3399         (get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
3400         and NAME_MEMORY_TAG separately from the DECLs.
3401
3402 2006-01-06  Richard Guenther  <rguenther@suse.de>
3403
3404         * tree-dfa.c (mark_new_vars_to_rename): Create stmt
3405         annotation, if necessary.
3406         * tree-ssa-pre.c (create_expression_by_pieces): Remove
3407         redundant calls to update_stmt.
3408         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr):
3409         Likewise.
3410
3411 2006-01-05  Richard Henderson  <rth@redhat.com>
3412
3413         * c-parser.c (c_parser_objc_methodprotolist): Handle CPP_PRAGMA.
3414
3415 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
3416
3417         * c-typeck.c: Update copyright date.
3418
3419 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
3420
3421         * c-typeck.c (build_c_cast): Always warn when casting
3422         from a pointer to an integer of different size, even if
3423         the node was constant.
3424
3425 2006-01-05  Richard Guenther  <rguenther@suse.de>
3426
3427         PR tree-optimization/22555
3428         * tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
3429         if one structure field is an array.
3430         * tree-ssa-operands.c (get_expr_operands): Continue scanning
3431         operands even if we found a subvar, but ignore VOPs in this
3432         case.
3433         * tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
3434         for renaming.
3435         * tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.
3436
3437 2006-01-05  Richard Earnshaw  <rearnsha@arm.com>
3438
3439         PR middle-end/24998
3440         * arm/t-netbsd (LIB2FUNCS_EXTRA): Define.
3441
3442 2006-01-05  Richard Guenther  <rguenther@suse.de>
3443             Diego Novillo  <dnovillo@redhat.com>
3444
3445         * tree-pass.h (TODO_remove_unused_locals): Define.
3446         * gimple-low.c (expand_var_p, remove_useless_vars,
3447         pass_remove_useless_vars): Remove.  Update all users.
3448         * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names.
3449         (remove_unused_locals): New function.
3450         * tree-flow.h (remove_unused_locals): Declare.
3451         * passes.c (execute_todo): Call remove_unused_locals if
3452         TODO_remove_unused_locals is set.
3453         * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals.
3454         * tree-ssa-dce.c (pass_dce): Likewise.
3455         * tree-outof-ssa.c (pass_del_ssa): Likewise.
3456
3457 2006-01-05  Richard Guenther  <rguenther@suse.de>
3458
3459         * tree-flow.h (struct fieldoff): Decompose field to
3460         type, size and decl.
3461         * tree-ssa-alias.c (create_sft): Take type as parameter.
3462         (create_overlap_variables_for): Store type, size and decl
3463         in the fieldoff structure.
3464         * tree-ssa-structalias.c (fieldoff_compare): Adjust users
3465         of struct fieldoff.
3466         (push_fields_onto_fieldstack): Likewise.
3467         (create_variable_info_for): Likewise.  Use offset for the
3468         SFT name if the decl is not available.
3469
3470 2006-01-04  Paul Brook  <paul@codesourcery.com>
3471
3472         * config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.
3473
3474 2006-01-04  Daniel Berlin  <dberlin@dberlin.org>
3475
3476         * lambda-code.c (can_put_in_inner_loop): Relax
3477         restrictions.
3478         (can_put_after_inner_loop): New function.
3479         (can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
3480         (perfect_nestify): Change to make copies and modify uses.
3481
3482 2006-01-04  Richard Henderson  <rth@redhat.com>
3483
3484         Merge from gomp branch:
3485         * c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
3486         via integer constant.
3487         (pragma_lex): Remove.
3488         * c-pch.c (c_common_pch_pragma): Accept the name as an argument,
3489         rather than parsing it.
3490         * c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
3491         handle_pragma_extern_prefix): Add %< %> quotes.
3492         (registered_pragmas): New.
3493         (c_register_pragma_1): New.
3494         (c_register_pragma): Use it.
3495         (c_register_pragma_with_expansion): Likewise.
3496         (c_invoke_pragma_handler): New.
3497         (init_pragma): Use cpp_register_deferred_pragma directly for
3498         pch_preprocess.
3499         * c-pragma.h (enum pragma_kind): New.
3500         (pragma_handler): New.
3501         (c_invoke_pragma_handler): Declare.
3502         * c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
3503         CPP_PRAGMA_EOL.
3504         * c-common.h (c_common_pch_pragma): Update decl.
3505         * Makefile.in (c-parser.o): Update dependencies.
3506         (GTFILES): Add c-pragma.h.
3507         * c-parser.c (struct c_token): Add pragma_kind.
3508         (struct c_parser): Add in_pragma.
3509         (c_lex_one_token): Always initialize keyword and pragma_kind.
3510         Extract data for CPP_PRAGMA.
3511         (c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
3512         (c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
3513         Don't allow CPP_PRAGMA_EOL if in_pragma.
3514         (c_parser_consume_pragma): New.
3515         (c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
3516         (c_parser_skip_to_end_of_parameter): Likewise.
3517         (c_parser_skip_to_end_of_block_or_statement): Likewise.
3518         (c_parser_skip_to_pragma_eol): New.
3519         (c_parser_external_declaration): Handle CPP_PRAGMA.
3520         (c_parser_compound_statement_nostart): Likewise.
3521         (c_parser_statement_after_labels): Likewise.
3522         (c_parser_pragma): New.
3523         (pragma_lex): Likewise.
3524         (c_parser_pragma_pch_preprocess): New.
3525         (c_parser_new): Merge into ...
3526         (c_parse_file): ... here.  Call c_parser_pragma_pch_preprocess.
3527
3528 2006-01-04  Jeff Law  <law@redhat.com>
3529
3530         PR ada/24994
3531         * tree-cfg.c (bsi_replace): Remove the original statement
3532         from the EH throw statement table.
3533
3534 2006-01-04  Jakub Jelinek  <jakub@redhat.com>
3535
3536         * config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
3537         make the prototype extern "C" and add throw ().
3538
3539         PR target/25554
3540         * config/i386/i386.md (testqi_ext_3): Ensure len is positive
3541         and pos non-negative and pos + len <= 32.
3542         (testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
3543         drop pos + len < HOST_BITS_PER_WIDE_INT test.
3544         (testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
3545
3546         PR c/25559
3547         * c-common.c (handle_vector_size_attribute): Reject zero vector size
3548         as well as sizes not multiple of component size.
3549
3550         PR debug/25562
3551         * function.c (instantiate_expr): New function.
3552         (instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
3553         walk its DECL_VALUE_EXPR with instantiate_expr.
3554
3555         * dwarf2out.c (loc_descriptor_from_tree_1): Don't add
3556         DW_OP_deref{,_size} if address isn't going to be added.
3557
3558 2006-01-04  Ben Elliston  <bje@au.ibm.com>
3559
3560         * config/fp-bit.h: Use top-of-file comment from libgcc2.c.
3561         * config/fp-bit.c: Likewise.
3562
3563 2006-01-03  Daniel Berlin  <dberlin@dberlin.org>
3564
3565         * dominance.c: Add comment about why we use DFS numbering
3566         of dominance tree.
3567
3568 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
3569             Richard Henderson  <rth@redhat.com>
3570
3571         Merge from gomp-branch:
3572         * varasm.c (assemble_variable): Handle thread-local COMMON data.
3573         * defaults.h (ASM_OUTPUT_TLS_COMMON): Define.
3574
3575 2006-01-03  Paolo Bonzini  <bonzini@gnu.org>
3576
3577         PR rtl-optimization/25578
3578         * combine.c (combine_simplify_rtx, force_to_mode): Don't
3579         pass a parameter to simplify_shift_const if changing ASHIFTRT
3580         to LSHIFTRT.
3581
3582 2006-01-03  Adrian Straetling  <straetling@de.ibm.com>
3583
3584         * builtins.c (get_builtin_sync_mem): New function.
3585         (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
3586         expand_builtin_lock_test_and_set, expand_builtin_lock_release):
3587         Call get_builtin_sync_mem to generate mem rtx.
3588
3589 2006-01-03  Richard Guenther  <rguenther@suse.de>
3590
3591         PR c/25183
3592         * stmt.c (add_case_node): Make sure to clear overflow flags
3593         from ranges.
3594
3595 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
3596
3597         Merge from gomp-branch.
3598         * config/sparc/sync.md: New file.
3599         * config/sparc/sparc.md (UNSPECV_MEMBAR, UNSPECV_CAS, UNSPECV_SWAP,
3600         UNSPECV_LDSTUB): New constants.
3601         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): New function.
3602         * config/sparc/predicates.md (memory_reg_operand): New predicate.
3603         * config/sparc/sparc-protos.h (sparc_expand_compare_and_swap_12): New
3604         prototype.
3605
3606 2006-01-03  Roger Sayle  <roger@eyesopen.com>
3607
3608         * combine.c (reg_subword_p): New predicate to test whether the
3609         destination of a set refers to a subword/piece of a register.
3610         (try_combine): Generalize the code to merge the setting of a
3611         pseudo to a constant followed by a set of a subword of that
3612         register to a constant.
3613
3614 2006-01-03  Kazu Hirata  <kazu@codesourcery.com>
3615
3616         * basic-block.h (control_flow_graph): Change the type of
3617         x_label_to_block_map to VEC(basic_block,gc) *.
3618         * tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
3619         set_bb_for_stmt): Adjust the uses of x_label_to_block_map.
3620
3621         * tree-ssa-propagate.c (cfg_blocks): Change the type to
3622         VEC(basic_block,heap) *.
3623         (cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
3624         ssa_prop_fini): Adjust the uses of cfg_blocks.
3625
3626 2006-01-03  Steven Bosscher  <stevenb.gcc@gmail.com>
3627
3628         * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
3629         COMPONENT_REFs.
3630         * emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
3631         hashing trees instead of a pointer hash.
3632         (mem_attrs_htab_eq): Do a deep compare instead of a pointer
3633         compare for MEM_EXPR.
3634
3635         PR rtl-optimization/25130
3636         * cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
3637         when comparing MEMs for GCSE
3638
3639 2006-01-03  Ben Elliston  <bje@au.ibm.com>
3640
3641         * targhooks.h (default_decimal_float_supported_p): Declare.
3642         * targhooks.c (default_decimal_float_supported_p): Define.
3643         * target-def.h (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Redefine to
3644         `default_decimal_float_supported_p'.
3645         * doc/tm.texi (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Update.
3646
3647 2006-01-02  Adam Nemet  <anemet@caviumnetworks.com>
3648
3649         * combine.c (apply_distributive_law <SUBREG>): Check
3650         TRULY_NOOP_TRUNCATION.
3651
3652 2006-01-02  Geoffrey Keating  <geoffk@apple.com>
3653
3654         * dwarf2out.c (have_switched_text_section): Delete.
3655         (have_multiple_function_sections): New.
3656         (have_location_lists): Make 'bool'.
3657         (add_AT_loc_list): Use 'true' not '1'.
3658         (dwarf2out_switch_text_section): Set have_multiple_function_sections.
3659         (output_loc_list): Use have_multiple_function_sections.
3660         (output_ranges): Likewise.
3661         (dwarf2out_begin_function): Set have_multiple_function_sections if
3662         necessary.
3663         (dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
3664         Check function_section rather than DECL_SECTION_NAME.
3665         (dwarf2out_finish): Use have_multiple_function_sections.
3666         Don't clear have_location_lists.
3667
3668 2006-01-02  Eric Botcazou  <ebotcazou@adacore.com>
3669             Jan Hubicka  <jh@suse.cz>
3670
3671         * cfglayout.c (fixup_reorder_chain): Remove kludge for the
3672         case of conditional jump jumping to the next instruction.
3673         * cfgrtl.c (force_nonfallthru_and_redirect): Accept all
3674         cases of conditional jump jumping to the next instruction.
3675
3676 2006-01-02  Jan Hubicka  <jh@suse.cz>
3677
3678         * i386.c (*_cost): Add COSTS_N_INSNS.
3679         (ix86_rtx_costs): Do not use COSTS_N_INSNS.
3680
3681 2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
3682
3683         PR target/25259
3684         * Makefile.in (DECNUMINC): Include libdecnumber's build directory.
3685
3686 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
3687
3688         * config/arm/arm.c (all_fpus): Fix comment typo.
3689         * config/darwin.c: Likewise.
3690         * config/frv/frv.h (FRV_STRUCT_VALUE_REGNUM): Likewise.
3691         * config/h8300/h8300.md (extendqisi2_h8300hs): Likewise.
3692         * config/m68hc11/m68hc11.c (m68hc11_reload_operands): Likewise.
3693
3694 2006-01-01  David Edelsohn  <edelsohn@gnu.org>
3695
3696         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.
3697         (rs6000_split_compare_and_swapqhi): New.
3698         * config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New.
3699         (sync_compare_and_swapqhi_internal): New.
3700         * config/rs6000/rs6000-protos.h: Declare.