OSDN Git Service

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