OSDN Git Service

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