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