r110128@banpei: zack | 2006-01-22 14:50:42 -0800
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2006-01-22  Zack Weinberg  <zackw@panix.com>
2
3         * genautomata.c (output_reserved_units_table): Emit nothing if
4         description->query_units_num is zero.  Remove extra blank line.
5         (output_cpu_unit_reservation_p): Short circuit
6         if description->query_units_num is zero.
7
8 2006-01-22  Zack Weinberg  <zackw@panix.com>
9
10         * genattrtab.c: Don't include genattrtab.h.  Define ATTR_NONE
11         and ATTR_SPECIAL (from genattrtab.h).  Don't define num_dfa_decls
12         nor any of the random handful of variables that used to be necessary
13         when this program was linked with rtlanal.o.  Prune set of forward
14         function declarations.
15         (struct attr_desc): Remove static_p field.
16         (hash_obstack, temp_obstack, attr_hash_table, attr_printf)
17         (check_attr_test, make_internal_attr, make_numeric_value): Make static.
18         (attr_string): Do not read the character one past the length of
19         the string.
20         (write_attr_get, find_attr, make_internal_attr): Don't touch static_p.
21         (struct insn_reserv, all_insn_reservs, last_insn_reserv_p)
22         (n_insn_reservs, gen_insn_reserv, struct bypass_list, all_bypasses)
23         (n_bypasses, gen_bypass_1, gen_bypass, process_bypasses)
24         (make_automaton_attrs): New.
25         (main): Do not call into genautomata.  Call local gen_bypass
26         and gen_insn_reserv as appropriate.  Call make_automaton_attrs.
27         Remove special case for insn_alts.
28         * genautomata.c: Include gensupport.h; not genattrtab.h nor
29         varray.h (leftover from previous change).  Prune set of forward
30         function declarations.  Remove state_alts fields from all
31         structures.  Remove state_alts_table from struct automaton.
32         Make everything except main static.  Do not maintain num_dfa_decls.
33         Do not maintain state_alts fields of various structures.
34         (process_decls): Don't validate condexp for dm_insn_reserv decls.
35         (add_arc): Remove state_alts argument.  All callers updated.
36         (output_reserved_units_table): Emit #ifdef here...
37         (output_tables): ...not here.  Don't generate state_alts tables.
38         (expand_automata): Don't generate attributes.
39         (write_automata): Don't generate state_alts functions.
40         (main): New function.
41         (it_is_empty_reserv_sets, output_state_alts_full_vect_name)
42         (output_state_alts_comb_vect_name, output_state_alts_check_vect_name)
43         (AUTOMATON_STATE_ALTS_MACRO_NAME, INTERNAL_STATE_ALTS_FUNC_NAME)
44         (STATE_ALTS_FUNC_NAME, INSN_DEFAULT_LATENCY_FUNC_NAME)
45         (BYPASS_P_FUNC_NAME, output_state_alts_table)
46         (output_automata_list_state_alts_code, output_internal_state_alts_func)
47         (output_state_alts_func, make_insn_alts_attr, make_bypass_attr)
48         (make_internal_dfa_insn_code_attr, make_default_insn_latency_attr):
49         Delete.
50         * genattr.c: Declare internal_dfa_insn_code in insn-attr.h.
51         * genattrtab.h: Delete file.
52         * Makefile.in (OBJS-common): Add insn-automata.o.
53         (insn-automata.o): New rule.
54         (simple_generated_c): Add insn-automata.c.
55         (build/genattrtab.o, build/genautomata.o): Update dependencies.
56         (genprogmd): Add automata.
57         (build/genattrtab): Needs no extra objects nor libraries.
58         (build/genautomata): Needs build/vec.o and -lm.
59
60 2006-01-22  Zack Weinberg  <zackw@panix.com>
61
62         * genautomata.c (process_state_longest_path, max_dfa_issue_rate)
63         (output_dfa_max_issue_rate, locked_states_num): Delete.
64         (struct automaton): Add locked_states field.
65         (output_dead_lock_vect): Save number of locked states in
66         automaton->locked_states.  If it is zero, don't print anything.
67         (output_max_insn_queue_index_def): Define max_insn_queue_index const.
68         (output_internal_dead_lock_func): Only test the dead_lock_vect
69         for automata that have locked states.
70         (output_statistics): Always print the number of locked states for
71         each automaton.  Calculate total number of locked states here.
72         (write_automata): Don't call output_dfa_max_issue_rate.
73         * genattrtab.c: Define length_unit_log as a const variable.
74         * genattr.c: Don't emit MAX_DFA_ISSUE_RATE.  Declare
75         max_insn_queue_index const.
76         * final.c (length_unit_log): Declare const.
77         * doc/tm.texi: Remove all references to MAX_DFA_ISSUE_RATE.
78
79 2006-01-22  Zack Weinberg  <zackw@panix.com>
80
81         * genautomata.c:  Include vec.h, not varray.h.
82         Delete vla_ptr_t, all of the VLA_PTR_ macros, and all of the
83         VLA_HWINT_ macros.  Change vla_hwint_t to a typedef for
84         VEC(vect_el_t,heap) *.  Convert all uses of VLA_* macros to
85         VEC_* macros operating on appropriately typed vectors, or to
86         malloced arrays when the size is known in advance.  Const-ify
87         many char* variables and function arguments.  No functional changes.
88         * Makefile.in (build/varray.o): Delete rule.
89         (build/genattrtab): Depend on build/vec.o instead of build/varray.o.
90         (build/genautomata.o): Depend on vec.h instead of $(VARRAY_H).
91
92 2006-01-22  Zack Weinberg  <zackw@panix.com>
93
94         * gensupport.c: Define get_insn_name and record_insn_name here.
95         (read_md_rtx): Call record_insn_name as appropriate.
96         * genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
97         * genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
98         * genpreds.c, genrecog.c: Don't define get_insn_name nor
99         record_insn_name.
100         * Makefile.in (BUILD_SUPPORT, BUILD_PRINT): Fold into BUILD_RTL.
101         (BUILD_VARRAY): Delete.
102         (genprognormal): Rename genprogmd.  Fold in all programs from
103         genprognoprint; also attrtab.
104         (build/genattrtab): Just mention genautomata.o and varray.o.
105         Reorganize a bit, add comments to make the categories clearer.
106
107 2006-01-22  Zack Weinberg  <zackw@panix.com>
108
109         * genconditions.c (condition_table, add_condition): Delete.
110         (write_conditions): Don't emit n_insn_conditions nor
111         insn_elision_unavailable.  Issue the gcc version #ifdef here,
112         inside the table, with no #else clause ...
113         (write_header): ...not here.
114         (write_writer): New function.
115         (main): Don't initialize condition_table.  Use add_c_test.
116         Call write_writer.
117         * gensupport.c (init_md_reader_args_cb): Handle multiple input
118         files on the command line.
119         (maybe_eval_c_test): Don't check insn_elision_unavailable.
120         Return -1 if there is no entry in the table, don't abort.
121         (add_c_test, traverse_c_tests): New functions.
122         * gensupport.h (insn_elision_unavailable, insn_conditions)
123         (n_insn_conditions): Delete declarations.
124         (add_c_test, traverse_c_tests): Declare.
125         * read-rtl.c: Include gensupport.h.
126         (read_conditions): New function.
127         (read_rtx): If read_rtx_1 returns 0, treat as EOF.
128         (read_rtx_1): If we get EOF when we were looking for an initial
129         open paren, return 0.  Call read_conditions when appropriate.
130         * Makefile.in: Kill BUILD_EARLY_SUPPORT and all references to
131         dummy-conditions.o.  Eliminate references to insn-conditions.o,
132         or change them to build/gencondmd.o, as appropriate.  Remove
133         insn-constants.h from $(simple_generated_h) and insn-conditions.c
134         from $(simple_generated_c).  For all files remaining in those
135         two lists, add insn-conditions.md to the generator command line.
136         Give insn-constants.h/s-constants their own rules.  Add rules
137         for build/gencondmd.c, s-conditions, insn-conditions.md, s-condmd.
138         (build/read-rtl.o): Depend on gensupport.h.
139         (genprognormal): Include preds.
140         (genprogearly): Rename genprognoprint; only difference is now that
141         they don't link with $(BUILD_PRINT).
142         * dummy-conditions.c: Delete.
143
144 2006-01-22  Zack Weinberg  <zackw@panix.com>
145
146         * genextract.c: Don't include insn-config.h.  Do include vec.h.
147         Declare vectors of int, char, and locstr.
148         (locstr): New typedef.
149         (struct extraction): Make all array fields into bare pointers.
150         (insn_name_ptr, insn_name_ptr_size): Move down by get_insn_name.
151         (insn_code_number): Delete.
152         (accum_extract): New struct.
153         (VEC_safe_set_locstr, VEC_char_to_string): New functions.
154         (gen_insn): Take insn_code_number as an argument.  Use an
155         accum_extract structure instead of loading data directly into
156         a struct extraction, and having to know how big it might get.
157         (walk_rtx): Operate entirely on an accum_extract structure.
158         (print_path): Avoid unnecessary use of printf.
159         (print_header): New function, split out of main.  Distinguish
160         more carefully between an unrecognizable insn and an insn that
161         has the code number of a define_expand.
162         (main): Pass insn_code_number to gen_insn.  Call print_header
163         only after parsing.  Avoid unnecessary use of printf.
164         * Makefile.in (build/vec.o): New rule.
165         (build/genextract): Depend on build/vec.o.
166         (build/genextract.o): Don't depend on insn-config.h.
167
168 2006-01-22  Zack Weinberg  <zackw@panix.com>
169
170         * Makefile.in: Consolidate most rules that use $(CC_FOR_BUILD) and/or
171         $(RUN_GEN).  Use pattern rules to factor out as much boilerplate as
172         practical.  Eliminate per-generator-program link rules.
173
174 2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
175
176         PR middle-end/24437
177         * tree-ssa-ccp.c (fold_stmt): Move folding of OBJ_TYPE_REF
178         with a call expr to ...
179         * fold-const.c (fold_ternary) <case CALL_EXPR>: Here.
180
181 2006-01-23  Richard Guenther  <rguenther@suse.de>
182
183         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Add comment
184         before make_edge with conditional EDGE_TRUE_VALUE.
185
186 2006-01-23  Steven Bosscher  <stevenb.gcc@gmail.com>
187         Jan Hubicka  <jh@suse.cz>
188         Richard Guenther  <rguenther@suse.de>
189
190         PR rtl-optimization/25654
191         * cfgexpand.c (aggregate_contains_union_type): New function.
192         (add_alias_set_conflicts): Call it.  Make sure to add conflicts
193         for structure variables that contain a union type.
194
195 2006-01-23  Richard Sandiford  <richard@codesourcery.com>
196
197         * gengtype.c (new_structure): Return the structure.
198         (create_option): Add an extra "next" argument.
199         (create_field): New function.
200         (adjust_field_rtx_def): Use create_option and create_field.
201         Remove a now-unnecessary call to find_structure.
202         (adjust_field_tree_def): Likewise.
203         (note_yacc_type): Remove an unnecessary call to find_structure.
204         * gengtype.h (new_structure): Return the structure.
205         (create_option): Add an extra argument.
206         * gengtype-yacc.y (type): Remove unnecessary calls to find_structure.
207         (option): Adjust calls to create_option.
208
209 2006-01-22  David Edelsohn  <edelsohn@gnu.org>
210
211         * config/rs6000/aix.h (STACK_BOUNDARY): Define.
212
213 2006-01-22  Paul Brook  <paul@codesourcery.com>
214         Peter Barada  <peter@the-baradas.com>
215
216         * config/m68k/m68k.md: Add Coldfire FPU support.
217         Define FP mode macro and associated attributes.
218         Use it for float mode patterns.
219         * config/m68k/linux.h (FUNCTION_VALUE): Use m68k_function_value.
220         (LIBCALL_VALUE): Use m68k_libcall_value.
221         * config/m68k/m68k-protos.h (m68k_libcall_value): Add prototype.
222         (m68k_function_value): Ditto.
223         (emit_move_sequence): Ditto.
224         * config/m68k/m68kemb.h (LIBCALL_VALUE): Use m68k_libcall_value.
225         * config/m68k/m68k-none.h (ASM_SPEC): Add mcfv4e.
226         * config/m68k/t-m68kelf (MULTILIB_OPTIONS): Add mcfv4e.
227         (MULTILIB_EXCEPTIONS): Ditto.
228         * config/m68k/m68k.opt: Add mcfv4e.
229         * config/m68k/m68k.c (m68k_handle_option): Handle OPT_mcfv4e.
230         (m68k_compute_frame_layout): Include space for ColdFire FPU regs.
231         (m68k_output_function_prologue): Save ColdFire FPU registers.
232         (m68k_output_function_epilogue): Restore ColdFire FPU registers.
233         (force_mode, fp_reg_operand, emit_move_sequence): New functions.
234         (m68k_regno_mode_ok): Don't allow types larget than 8 bytes in
235         ColdFire FPU registers.
236         (m68k_libcall_value, m68k_function_value): New functions.
237         * config/m68k/netbsd-elf.h (FUNCTION_VALUE): Use m68k_function_value.
238         (LIBCALL_VALUE): Use m68k_libcall_value.
239         * config/m68k/m68k.h (TARGET_CPU_CPP_BUILTINS): Define __mcfv4e__.
240         (MASK_COLDFIRE): Add MASK_CFV4E.
241         (TARGET_COLDFIRE_FPU, TARGET_HARD_FLOAT, TARGET_FP_REG_SIZE): New.
242         (MODES_TIEABLE_P): Use TARGET_HARD_FLOAT.
243         (REG_CLASS_FROM_LETTER, PREFERRED_RELOAD_CLASS): Ditto.
244         (GO_IF_COLDFIRE_FPU_LEGITIMATE_ADDRESS): Define.
245         (GO_IF_LEGITIMATE_ADDRESS): Use it.
246         (LEGITIMIZE_ADDRESS): Handle ColdFire FPU addresses.
247         * doc/invoke.tex: Document -mcfv4e on m68k.
248
249 2006-01-22  Ranjit Mathew  <rmathew@gcc.gnu.org>
250
251         * doc/contribute.texi: Change CVS to SVN and update the corresponding
252         URL.
253
254 2006-01-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
255
256         PR c++/16190
257         * c-opts.c (c_common_handle_option): Don't include
258         -Wnon-virtual-dtor in -Wall; enable if -Weffc++.
259         * doc/invoke.texi (C++ Dialect Options): Document that
260         -Wnon-virtual-dtor is no longer included in -Wall.
261
262 2006-01-21  Joseph S. Myers  <joseph@codesourcery.com>
263
264         * gcov.c (print_version), gcov-dump.c (print_version),
265         mips-tdump.c (main), mips-tfile.c (main): Update copyright notice
266         dates.
267
268 2005-01-21  Kenneth Zadeck <zadeck@naturalbridge.com>
269
270         * df-scan.c (problem_SCAN): Added NULL reset function.
271         (df_scan_reset_blocks): Added code to call reset block function
272         (df_bb_refs_delete) Fixed comment.
273         (df_insn_refs_delete): Made tolerant of deleting non existent info
274         for dataflow problems that need to be reset.
275         * df-core.c (df_set_blocks): Ditto.
276         * df.h (struct df_problem): Added reset_fun.
277         * df-problems.c (problem_RU, problem_RD, problem_LR, problem_UR,
278         problem_UREC, problem_CHAIN, problem_RI): Initialized reset_fun field.
279         (df_chain_insn_reset, df_chain_bb_reset, df_chain_reset): New
280         functions to clear out all references to def-use or use-def chains.
281
282 2006-01-21  Ben Elliston  <bje@au.ibm.com>
283
284         * varasm.c (assemble_real): Initialise data array.
285
286 2006-01-20  Paul Brook  <paul@codesourcery.com>
287
288         Merge from csl-arm-branch.
289         2005-09-21  Kazu Hirata  <kazu@codesourcery.com>
290         * config/arm/arm.md (movdi): Force operands[1] to a register
291         if we have a non-register source.
292         (*arm_movdi, *movdf_soft_insn): Require that one of the
293         operands be a register.
294         * config/arm/iwmmxt.md (*iwmmxt_arm_movdi): Likewise.
295         * config/arm/vfp.md (*arm_movdi_vfp, *movdf_vfp): Likewise.
296
297 2006-01-20  DJ Delorie  <dj@redhat.com>
298
299         * varasm.c (initialize_constant_valid_p): Allow pointers
300         initialized from integer constants of lesser precision.
301         (output_constant): Allow non-int-sized pointer modes to be
302         initialized from integer constants.
303
304 2006-01-20  Joseph S. Myers  <joseph@codesourcery.com>
305
306         PR libstdc++/25524
307         * cppdefault.h (struct default_include): Add multilib flag.
308         * cppdefault.c (cpp_include_defaults): Set it.
309         * c.opt (-imultilib): New option.
310         * c-opts.c (imultilib): New.
311         (c_common_handle_option): Handle -imultilib.
312         (c_common_post_options): Likewise.
313         * c-incpath.c (add_standard_paths, register_include_chains):
314         Likewise.
315         * c-incpath.h (register_include_chains): Add extra parameter.
316         * gcc.c (do_spec_1): Generate -imultilib option.
317         (The Specs Language): Update %I description.
318         (process_command): Update copyright notice.
319         * doc/cppopts.texi (-imultilib): Document.
320         * doc/invoke.texi (-imultilib): Include in option summary.
321         (%I): Update specs documentation.
322
323 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
324
325         * loop-iv.c (iv_analysis_loop_init): Use df in more conservative way.
326
327 2006-01-20  Richard Sandiford  <richard@codesourcery.com>
328
329         * stmt.c (case_bit_test_cmp): Stabilize the sort using code
330         label numbers.
331
332 2006-01-20  Richard Guenther  <rguenther@suse.de>
333         Steven Bosscher <stevenb.gcc@gmail.com>
334
335         PR rtl-optimization/24626
336         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Don't set
337         EDGE_TRUE_VALUE if in RTL mode.
338
339         Revert
340         2005-03-30 Mostafa Hagog <mustafa@il.ibm.com>
341         * cfgrtl.c (rtl_verify_flow_info_1): Fix.
342
343 2006-01-20  Dirk Mueller  <dmueller@suse.com>
344
345         PR c++/5520
346         * c-parser.c (c_parser_if_body): Use build_empty_stmt()
347         instead of a special NOP marker.
348         * c-typeck.c (c_finish_if_stmt): Remove obsoleted special
349         NOP marker handling.
350         * c-common.h (empty_body_warning): Add forward declaration.
351         * c-common.c (empty_body_warning): Add (from c_finish_if_stmt).
352         Now uses IS_EMPTY_STMT() instead of special NOP markers.
353
354 2005-01-20  Paul Brook  <paul@codesourcery.com>
355
356         * Makefile.in (lang_checks): Keep going if mkdir fails.
357
358 2005-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
359
360         * df-scan.c (df_scan_free_bb_info): Added basic block parameter to
361         be able to clean out basic block when not necessary.
362         (df_scan_free): Fixed to properly delete information if df is
363         unused before calling df_finish.
364         (df_scan_alloc, df_rescan_blocks, df_reg_chain_unlink,
365         df_insn_create_insn_record, df_bb_refs_record): Fixed formatting
366         or comment typos.
367         (df_bb_refs_delete): New function.
368         (df_refs_delete): Moved per block code to df_bb_refs_delete.
369         * df-core.c (df_set_blocks): Added code to properly clean out
370         unused blocks if they are not part of the blocks to consider.
371         Added additional null check.
372         (df_compact_blocks): Added basic block parameter to free_bb_fun to
373         be able to clean out basic block when not necessary
374         * df.h (df_free_bb_function): Ditto.
375         (df_bb_refs_delete): New function.
376         * df-problems.c (df_ru_free_bb_info, df_rd_set_bb_info,
377         df_lr_set_bb_info, df_ur_free_bb_info, df_urec_free_bb_info):Added
378         basic block parameter to be able to clean out basic block when not
379         necessary.
380         (df_ru_alloc, df_rd_alloc): Fixed dyslexic overflow test.
381         (df_ru_free, df_rd_free, df_lr_free, df_ur_free, df_urec_free):
382         Fixed to properly delete information if df is unused before
383         calling df_finish.
384
385 2005-01-19  Kenneth Zadeck <zadeck@naturalbridge.com>
386
387         PR rtl-optimization/25799
388         * df-problems.c (df_ru_confluence_n, df_rd_confluence_n):
389         Corrected confluence operator to remove bits from op2 before oring
390         with op1 rather than removing bits from op1.
391         (df_ru_transfer_function): Corrected test on wrong bitmap which
392         caused infinite loop.  Both of these problems were introduced in
393         the dataflow rewrite.
394
395 2006-01-19  DJ Delorie  <dj@redhat.com>
396
397         * reload1.c (find_reload_regs): Note the details of reload
398         failures in the dump file.
399         (spill_failure): Likewise.
400
401 2006-01-20  Zdenek Dvorak <dvorakz@suse.cz>
402
403         * loop-iv.c: Include df.h and hashtab.h.
404         (enum iv_grd_result): New enum.
405         (DF_REF_IV, DF_REF_IV_SET): New macros.
406         (struct biv_entry): New.
407         (df, bivs): New global variables.
408         (struct insn_info, insn_info, last_def, bivs, max_insn_no, max_reg_no,
409         assign_luids, mark_sets, kill_sets, mark_single_set, simple_set_p):
410         Removed.
411         (clear_iv_info, latch_dominating_def, record_iv, iv_analyze_expr,
412         iv_analyze_result, iv_analyze_def, biv_hash, biv_eq,
413         analyzed_for_bivness_p, record_biv): New functions.
414         (iv_analysis_loop_init, iv_get_reaching_def, simple_reg_p,
415         get_biv_step_1, get_biv_step, iv_analyze_biv, iv_analyze_op,
416         iv_analyze, biv_p, iv_analysis_done): Work with df representation of
417         UD chains.
418         (iv_constant, iv_subreg, iv_extend, iv_mult, iv_shift): Do not set
419         analysed.
420         (iv_number_of_iterations): Use new interface to iv analysis.
421         * loop-unroll.c: Do not include varray.h.
422         (analyze_iv_to_split_insn): Use new interface to iv
423         analysis.
424         * loop-unswitch.c (may_unswitch_on): Ditto.
425         * df.c (df_bitmaps_free): Only work for bbs for that structures are
426         allocated.
427         (df_bb_modify): Realloc tables to the new index.
428         (df_find_use): New function.
429         * df.h (df_find_use): Declare.
430         * optabs.c (expand_unop): Make the mode of the REG_EQUAL node be
431         outmode.
432         * cfgloop.h (struct rtx_iv): Remove analysed field.
433         (iv_get_reaching_def): Removed.
434         (iv_analyze_result, iv_analyze_expr, iv_current_loop_df): Declare.
435         * Makefile.in (loop-unroll.o): Remove VARRAY_H dependency.
436         (loop-iv.o): Add df.h and hashtab.h dependency.
437         * df-problems.c (df_ru_alloc, df_rd_alloc): Fix memory reallocation.
438
439 2006-01-20  Alan Modra  <amodra@bigpond.net.au>
440
441         * libgcc2.c (__floatdisf, __floatdidf): Don't use IBM Extended
442         Double TFmode.
443         (__floatundisf, __floatundidf): Likewise.
444         * libgcc2.h (IS_IBM_EXTENDED): Define.
445
446 2006-01-19  DJ Delorie  <dj@redhat.com>
447
448         * config/m32c/m32c.h (REG_ALLOC_ORDER): Define.
449
450 2006-01-19  Paul Brook  <paul@codesourcery.com>
451
452         * gcc/config/arm/arm.c (arm_compute_func_type): Treat all functions
453         as nothrow when unwinding tables are disabled.
454
455 2006-01-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
456
457         PR testsuite/25171
458         * c-decl.c (check_bitfield_type_and_width): Don't issue pedwarn "type
459         of bit-field" when in system header.
460
461 2006-01-19  DJ Delorie  <dj@redhat.com>
462
463         * config/m32c/m32c.c (m32c_prepare_shift): Add code to deal with
464         the 16 bit shift limit of the m16c.
465
466 2006-01-19  Andrew Pinski  <pinskia@physics.uc.edu>
467
468         PR target/22099
469         * config/i386/i386.md (builtin_setjmp_receiver): Don't emit the label.
470         * config/i386/i386.c (output_set_got): Output the label if we have one
471         for the TARGET_DEEP_BRANCH_PREDICTION case.
472
473 2006-01-19  Jan Hubicka  <jh@suse.cz>
474             H.J. Lu  <hongjiu.lu@intel.com>
475             Evandro Menezes <evandro.menezes@amd.com>
476
477         * invoke.texi (generic): Document
478         (i686) Update.
479         * config.gcc: Make x86_64-* and i686-* default to generic tunning.
480         * i386.h (TARGET_GENERIC32, TARGET_GENERIC64, TARGET_GENERIC,
481         TARGET_USE_INCDEC, TARGET_PAD_RETURNS): New macros.
482         (x86_use_incdec, x86_pad_returns): New variables
483         (TARGET_CPU_DEFAULT_generic): New constant
484         (TARGET_CPU_DEFAULT_NAMES): Add generic.
485         (enum processor_type): Add generic32 and generic64.
486         * i386.md (cpu attribute): Add generic32/generic64
487         (movhi splitter): Behave sanely when both partial_reg_dependency and
488         partial_reg_stall are set.
489         (K8 splitters): Enable for generic as well.
490         * predicates.md (incdec_operand): Use TARGET_INCDEC
491         (aligned_operand): Avoid memory mismatch stalls.
492         * athlon.md: Enable for generic64, new patterns for 128bit moves.
493         * ppro.md: Enable for generic32
494         * i386.c (generic64_cost, generic32_cost): New.
495         (m_GENERIC32, m_GENERIC64, m_GENERIC): New macros.
496         (x86_use_leave): Enable for generic64.  (x86_use_sahf,
497         x86_ext_80387_constants): Enable for generic32.  (x86_push_memory,
498         x86_movx, x86_unroll_strlen, x86_deep_branch, x86_use_simode_fiop,
499         x86_use_cltd, x86_promote_QImode, x86_sub_esp_4, x86_sub_esp_8,
500         x86_add_esp_4, x86_add_esp_8, x86_integer_DFmode_moves,
501         x86_partial_reg_dependency, x86_memory_mismatch_stall,
502         x86_accumulate_outgoing_args, x86_prologue_using_move,
503         x86_epilogue_using_move, x86_arch_always_fancy_math_387,
504         x86_sse_partial_reg_dependency, x86_four_jump_limit, x86_schedule):
505         Enable for generic.
506         (x86_use_incdec, x86_pad_returns): New.
507         (override_options): Add generic32 and generic64, translate "generic"
508         to generic32/generic64 and "i686" to "generic32", refuse
509         "generic32"/"generic64" as arch target.
510         (ix86_issue_rate, ix86_adjust_cost): Handle generic as athlon.
511         (ix86_reorg): Honor PAD_RETURNS.
512
513 2006-01-19  Diego Novillo  <dnovillo@redhat.com>
514
515         * tree-pretty-print.c (dump_generic_node): Handle
516         OMP_PARALLEL_FN, OMP_PARALLEL_DATA_ARG and OMP_RETURN_EXPR.
517         * cgraph.c (cgraph_expand_queue): Rename from
518         cgraph_analyze_queue.  Update all users.
519         * cgraphunit.c (cgraph_assemble_pending_functions): Process
520         cgraph_expand_queue.
521         (cgraph_expand_all_functions): Likewise.
522         (cgraph_finalize_pending_functions): Remove.  Update callers.
523
524         * tree.h (OMP_DIRECTIVE_P): Define.
525         (OMP_PARALLEL_FN): Define.
526         (OMP_PARALLEL_DATA_ARG): Define.
527         (OMP_SECTIONS_SECTIONS): Define.
528         * tree-pass.h (pass_expand_omp): Declare.
529         * omp-low.c (struct omp_region): Declare.
530         (struct omp_context): Remove fields 'parallel_type',
531         'parallel_start_ix' and 'parallel_start_additional_args'.
532         Update all users.
533         (struct omp_for_data): Rename from struct expand_omp_for_data.
534         (omp_regions): New static variable.
535         (root_omp_region): New static variable.
536         (find_omp_clause): Make static.
537         (is_in_combined_parallel_ctx): Remove.
538         (is_combined_parallel): New.
539         (extract_omp_for_data): Move earlier in the file.
540         (workshare_safe_to_combine_p): New.
541         (get_ws_args_for): New.
542         (determine_parallel_type): Move earlier in the file.
543         (omp_copy_decl_2): Do not set DECL_CONTEXT of new local to the
544         child function.
545         (omp_copy_decl): Likewise.
546         (create_omp_child_function): Likewise.
547         (lookup_omp_region): New.
548         (dump_omp_region): New.
549         (debug_omp_region): New.
550         (debug_all_omp_regions): New.
551         (new_omp_region): New.
552         (scan_omp_parallel): If parallel_nesting_level > 1, the
553         directive is nested within another parallel directive.
554         Set OMP_PARALLEL_FN.
555         (scan_omp_for): Do not try to handle combined parallel+for
556         cases.
557         Remove FIXME comment.
558         (scan_omp_nested): Remove.
559         (scan_omp_1): Do not call scan_omp_nested when
560         parallel_nesting_level is > 1.
561         Do not change the DECL_CONTEXT of local variables found.
562         (lookup_decl_in_outer_ctx): New.
563         (lower_rec_input_clauses): Rename from expand_rec_input_clauses.
564         (lower_lastprivate_clauses): Rename from expand_lastprivate_clauses.
565         (lower_reduction_clauses): Rename from expand_reduction_clauses.
566         (lower_copyprivate_clauses): Rename from expand_copyprivate_clauses.
567         If CTX is nested, lookup VAR in the outer context when
568         building copy assignment.
569         (lower_send_clauses): Rename from expand_send_clauses.
570         If CTX is nested, lookup VAR in the outer context when
571         building copy assignments.
572         (lower_send_shared_vars): Rename from expand_send_shared_vars.
573         If CTX is nested, lookup VAR in the outer context when
574         building copy assignments.
575         (expand_parallel_call): Rename from build_parallel_call.
576         Handle combined parallel+workshare cases.
577         Re-implement to emit code into the CFG.
578         (list2chain): New.
579         (expand_omp_parallel): Re-implement to emit code into the CFG.
580         Call move_sese_region_to_fn to outline the sub-graph
581         containing the parallel region.
582         (expand_omp_for_1): Remove.
583         (expand_omp_for_generic): Re-implement to emit code into the
584         CFG.
585         (expand_omp_for_static_nochunk): Likewise.
586         (expand_omp_for_static_chunk): Likewise.
587         (expand_omp_for): Likewise.
588         (expand_omp_sections): Likewise.
589         (remove_exit_barriers): New.
590         (expand_omp_synch): New.
591         (expand_omp): New.
592         (build_omp_regions_1): New.
593         (build_omp_regions): New.
594         (execute_expand_omp): New.
595         (gate_expand_omp): New.
596         (pass_expand_omp): Define.
597         (lower_omp_sections): Rename from expand_omp_sections.
598         Set OMP_SECTIONS_SECTIONS.
599         (lower_omp_single_simple): Rename from expand_omp_single_simple.
600         (lower_omp_single_copy): Rename from expand_omp_single_copy.
601         (lower_omp_single): Rename from expand_omp_simple.
602         (lower_omp_master): Rename from expand_omp_master.
603         (lower_omp_ordered): Rename from expand_omp_ordered.
604         (lower_omp_critical): Rename from expand_omp_critical.
605         (lower_omp_for_lastprivate): Rename from expand_omp_for_lastprivate.
606         (lower_omp_for): Re-implement.
607         (lower_omp_parallel): Re-implement.
608         (lower_regimplify): Rename from expand_regimplify.
609         (lower_omp_1): Rename from expand_omp_1.
610         If there are syntax errors in the program, replace every
611         OpenMP directive with NOP.
612         Call lower_omp_* instead of expand_omp_*.
613         (lower_omp): Rename from expand_omp.
614
615         * tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN_EXPR.
616         * tree-gimple.h (enum omp_parallel_type): Remove.
617         (gimple_boolify): Declare extern.
618         (find_omp_clause, determine_parallel_type): Remove.
619
620         * gimple-low.c (lower_omp_directive): New.
621         (lower_stmt): Call it.
622         (record_vars_into): Move from ...
623         (record_vars): ... here.
624         Call record_vars_into with current_function_decl.
625
626         * gimplify.c (struct gimplify_ctx): Remove fields
627         combined_pre_p and combined_ctxp.  Update users.
628         (get_formal_tmp_var): Add documentation.
629         (gimple_boolify): Make extern.
630         (gimplify_expr_in_ctx): Remove.  Update callers.
631         (gimplify_omp_parallel): Do not assume that OMP_PARALLEL_BODY
632         will always be a BIND_EXPR.
633         (gimplify_expr): Handle OMP_RETURN_EXPR.
634         * tree.def (BLOCK): Remove documentation about BLOCK_TYPE_TAGS.
635         (OMP_PARALLEL): Add 3 operands.
636         (OMP_SECTIONS): Add 1 operand.
637         (OMP_RETURN_EXPR): Define.
638
639         * tree-inline.c (estimate_num_insns_1): Handle OpenMP directives.
640         (copy_tree_r): Restore TREE_CHAIN in OMP_CLAUSE_*.
641         * tree-iterator.c (alloc_stmt_list): Assert that we are not
642         creating a circular free list.
643         (free_stmt_list): Assert that we are not freeing stmt_list_cache.
644
645         * tree-flow.h (move_sese_region_to_fn): Declare.
646         (record_vars_into): Declare.
647         * tree-cfg.c (make_omp_sections_edges): New.
648         (make_exit_edges): Handle OMP_PARALLEL, OMP_FOR, OMP_SINGLE,
649         OMP_MASTER, OMP_ORDERED, OMP_CRITICAL, OMP_RETURN_EXPR,
650         OMP_SECTIONS and OMP_SECTION.
651         (is_ctrl_altering_stmt): Return true for OMP_DIRECTIVE_P.
652         (set_bb_for_stmt): Undo change to check currently_expanding_to_rtl.
653         (verify_stmt): Do not handle OMP_DIRECTIVE_P.
654         (gather_blocks_in_sese_region): New.
655         (struct move_stmt_d): Declare.
656         (move_stmt_r): New.
657         (move_block_to_fn): New.
658         (move_sese_region_to_fn): New.
659
660         * passes.c (init_optimization_passes): Schedule
661         pass_expand_omp after pass_init_datastructures.
662
663         * tree-ssa-operands.c (get_expr_operands): Handle
664         OMP_PARALLEL, OMP_SECTIONS, OMP_FOR, OMP_RETURN_EXPR,
665         OMP_SINGLE, OMP_MASTER, OMP_ORDERED, OMP_CRITICAL.
666
667 2006-01-19  Jeff Law  <law@redhat.com>
668
669         * tree-vrp.c (extract_range_from_assert): Refine the result range
670         if the variable referenced by the ASSERT_EXPR has a range and
671         either the tentative result range or the previous range is a
672         VR_ANTI_RANGE.
673
674 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
675
676         * c-decl.c (add_flexible_array_elts_to_size): Simplify vector accesses.
677
678 2006-01-19  Jan Hubicka  <jh@suse.cz>
679
680         * tree-vect-patterns.c (vect_pattern_recog_1): Prevent parse error.
681
682 2006-01-19  Paolo Bonzini  <bonzini@gnu.org>
683
684         * combine.c (try_combine): Do not worry about MEMs wrapped by USEs.
685         (expand_compound_operation, expand_field_assignment): Fail if the
686         bit lengths of an extract operation are out of range.
687         (make_extraction): Compute wanted_inner_mode based on the position
688         and length of the extraction.  Make it extraction_mode for non-constant
689         positions, and do not modify offset in that case.  When generating a
690         new MEM, use a mode that can hold the extraction while keeping correct
691         alignment.  Remove code that supported MEMs wrapped by USEs.
692         (simplify_shift_const_1, force_to_mode) <case USE>: Remove.
693
694 2006-01-19  Andreas Krebbel  <krebbel1@de.ibm.com>
695
696         * config/s390/s390.md ("Y", "y"): New mode attribute.
697         ("*cmpdi_ccs", "*cmpsi_ccs", "*adddi3_imm_cc", "*adddi3_carry1_cc",
698         "*adddi3_carry1_cconly", "*adddi3_carry2_cc", "*adddi3_carry2_cconly",
699         "*adddi3_cc", "*adddi3_cconly", "*adddi3_cconly2", "*adddi3_64",
700         "*addsi3_imm_cc", "*addsi3_carry1_cc",
701         "*addsi3_carry1_cconly", "*addsi3_carry2_cc", "*addsi3_carr2_cconly",
702         "*addsi3_cc", "*addsi3_cconly", "*addsi3_cconly2",
703         "*subdi3_borrow_cc", "*subdi3_borrow_cconly", "*subdi3_cc",
704         "*subdi3_cc2", "*subdi3_cconly", "*subdi3_cconly2", "*subdi3_64",
705         "*subsi3_borrow_cc", "*subsi3_borrow_cconly", "*subsi3_cc",
706         "*subsi3_cc2", "*subsi3_cconly", "*subsi3_cconly", "*subsi3_cconly2",
707         "addsi3", "subsi3"): Insn patterns removed.
708         ("*add<mode>3_carry1_cc", "*add<mode>3_carry1_cconly",
709         "*add<mode>3_carry2_cc", "*add<mode>3_carry2_cconly", "*add<mode>3_cc",
710         "*add<mode>3_cconly", "*add<mode>3_cconly2", "*add<mode>3_imm_cc",
711         "*sub<mode>3_borrow_cc", "*sub<mode>3_borrow_cconly",
712         "*sub<mode>3_cc", "*sub<mode>3_cc2", "*sub<mode>3_cconly",
713         "*sub<mode>3_cconly2"): New insn patterns.
714         ("addsi3", "subsi3"): New expanders.
715
716 2006-01-19  Dorit Nuzman  <dorit@il.ibm.com>
717
718         * Makefile.in (tree-vect-patterns.o): Add rule for new file.
719         * tree-vect-analyze.c (vect_determine_vectorization_factor): Use
720         existing STMT_VINFO_VECTYPE if available.
721         (vect_mark_relevant): Add special handling for stmts that are
722         marked as STMT_VINFO_IN_PATTERN_P.
723         (vect_analyze_loop): Call vect_pattern_recog.
724         * tree-vectorizer.c (new_stmt_vec_info): Initialize new fields.
725         * tree-vectorizer.h (in_pattern_p, related_stmt): New fields in
726         stmt_info.
727         (STMT_VINFO_IN_PATTERN_P, STMT_VINFO_RELATED_STMT): New macros.
728         (vect_recog_func_ptr): New function-pointer type.
729         * tree-vect-patterns.c: New file.
730         (vect_recog_widen_sum_pattern, vect_recog_widen_mult_pattern):
731         (vect_recog_dot_prod_pattern, vect_pattern_recog):
732         (vect_pattern_recog_1): New functions.
733         (vect_pattern_recog_funcs): New array of function pointers.
734
735         * tree-vectorizer.h (ternary_op): New enum value.
736         * tree-vect-transform.c (vect_create_epilog_for_reduction): Added
737         declaration. Revised documentation. Removed redundant dump prints.
738         Removed redundant argument. Added support for reduction patterns.
739         (vectorizable_reduction): Added support for reduction patterns.
740         (vect_transform_stmt): Added support for patterns.
741
742         * expr.c (expand_expr_real_1): Added case for DOT_PROD_EXPR.
743         * genopinit.c (udot_prod_optab, sdot_prod_optab): Initialize.
744         * optabs.c (optab_for_tree_code): Added case for DOT_PROD_EXPR.
745         (expand_widen_pattern_expr): New function.
746         (init_optabs): Initialize new optabs udot_prod_optab,
747         sdot_prod_optab.
748         * optabs.h (OTI_sdot_prod, OTI_udot_prod): New.
749         (sdot_prod_optab, udot_prod_optab): Define new optabs.
750         (expand_widen_pattern_expr): New function declaration.
751         * tree.def (DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR): New
752         tree-codes.
753         * tree-inline.c (estimate_num_insns_1): Added cases for new
754         tree-codes DOT_PROD_EXPR, WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
755         * tree-pretty-print.c (dump_generic_node): Likewise.
756         (op_prio): Likewise.
757         (op_symbol): Added cases for WIDEN_SUM_EXPR, WIDEN_MULT_EXPR.
758         * tree-ssa-operands.c (get_expr_operands): Added case for
759         DOT_PROD_EXPR.
760         * tree-vect-patterns.c (widened_name_p): New function.
761         (vect_recog_dot_prod_pattern): Added function implementation.
762         * tree-vect-transform.c (get_initial_def_for_reduction): Added
763         cases for DOT_PROD_EXPR, WIDEN_SUM_EXPR.
764         * config/rs6000/altivec.md (udot_prod<mode>, sdot_prodv8hi): New.
765         * config/i386/sse.md (sdot_prodv8hi, udot_prodv4si): New.
766
767         * expr.c (expand_expr_real_1): Added case for WIDEN_SUM_EXPR.
768         * genopinit.c (widen_ssum_optab, widen_usum_optab): Initialize.
769         * optabs.c (optab_for_tree_code): Added case for WIDEN_SUM_EXPR.
770         (init_optabs): Initialize new optabs widen_ssum_optab,
771         widen_usum_optab.
772         * optabs.h (OTI_widen_ssum, OTI_widen_usum): New.
773         (widen_ssum_optab, widen_usum_optab): Define new optabs.
774         * tree-vect-generic.c: (expand_vector_operations_1): Check type of
775         use instead of type of def.
776         * tree-vect-patterns.c (vect_recog_widen_sum_pattern): Added
777         function implementation.
778         * config/rs6000/altivec.md (widen_usum<mode>, widen_ssumv16qi,
779         widen_ssumv8hi): New.
780
781         * doc/tm.texi (ssum_widen, usum_widen, sdot_prod, udot_prod): New
782         patterns.
783
784 2006-01-19  Richard Sandiford  <richard@codesourcery.com>
785
786         PR c/25805
787         * c-decl.c (add_flexible_array_elts_to_size): New function.
788         (finish_decl): Use it.
789
790 2006-01-18  Andrew Pinski  <pinskia@physics.uc.edu>
791
792         * diagnostic.h: Include options.h.
793         * config/rs6000/x-darwin (host-ppc-darwin.o): Correct the
794         dependancies for diagnostic.h.
795         * Makefile.in (DIAGNOSTIC_H): Add options.h.
796
797 2006-01-16  Daniel Berlin  <dberlin@dberlin.org>
798
799         * tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
800         (ssa_ro_call_cache_valid): Ditto.
801         * tree-ssa-alias.c (sort_tags_by_id): New function.
802         (init_transitive_clobber_worklist): Ditto.
803         (add_to_worklist): Ditto.
804         (mark_aliases_call_clobbered): Ditto.
805         (compute_tag_properties): Ditto.
806         (set_initial_properties): Ditto.
807         (compute_call_clobbered): Ditto.
808         (compute_may_aliases):  Call compute_call_clobbered and grouping.
809         (compute_flow_sensitive_aliasing): Remove clobbering related code.
810         (compute_flow_insensitive_aliasing): Grouping now happens in our
811         caller.
812         (setup_pointers_and_addressables): Remove clobbering related code.
813         (add_may_alias): Ditto.
814         (replace_may_alias): Ditto.
815         (get_nmt_for): Ditto.
816         (create_global_var):
817         (is_escape_site): Return an escape_type enumeration.
818         * tree-flow-inline.h (is_call_clobbered):  Global var does not
819         imply call clobbered.
820         (mark_call_clobbered): Take a reason for marking this. Remove
821         marking of globalness, and cache invalidation.
822         (clear_call_clobbered): Remove cache invalidation code.
823         * tree-dfa.c (dump_variable): If details is on, dump the reason
824         for escaping.
825         * tree-outof-ssa.c (create_temp): Copy escape mask from original
826         variable.
827         * tree-flow.h (struct ptr_info_def): Add escape mask member.
828         (struct var_ann_d): Ditto.
829         (enum escape_type): New.
830         (mark_call_clobbered): Adjust prototype.
831         * tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
832         are never call clobbered.
833         Record reasons for escaping.
834         * tree-ssa-structalias.h (is_escape_site): Update prototype.
835         * tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
836         (ssa_ro_call_cache_valid): Ditto.
837         (clobbered_v_may_defs): Ditto.
838         (clobbered_vuses): Ditto.
839         (ro_call_vuses): Ditto.
840         (clobber_stats): New.
841         (init_ssa_operands): Zero out clobber stats.
842         (fini_ssa_operands): Print out clobber stats.
843         (get_call_expr_operands): Pass callee fndecl to
844         add_call_read_ops).
845         (add_call_clobber_ops): Remove use of cache.
846         Add use of PURE_CONST information.
847         (add_call_read_ops): Remove use of cache.
848         Add use of static not_read information.
849
850 2006-01-18  Alexandre Oliva  <aoliva@redhat.com>
851
852         Introduce TLS descriptors for i386 and x86_64.
853         * config/i386/i386.h (TARGET_GNU2_TLS): New macro.
854         (TARGET_ANY_GNU_TLS): New macro.
855         (enum tls_dialect): Added TLS_DIALECT_GNU2.
856         (struct machine_function): Add tls_descriptor_call_expanded_p.
857         (ix86_tls_descriptor_calls_expande_in_cfun): New macro.
858         (ix86_current_function_calls_tls_descriptor): Likewise.
859         * config/i386/i386.c (ix86_tls_dialect): Fix typo in comment.
860         (override_options): Introduce gnu2 tls dialect.
861         (ix86_frame_pointer_required): Functions containing TLSCALLs are
862         not leaves.
863         (ix86_select_alt_pic_regnum, ix86_compute_frame_layout):
864         Likewise.
865         (legitimize_tls_address): Adjust logic for GNU2 TLS.
866         (ix86_init_machine_status): Initialize new field.
867         (ix86_tls_get_addr): Use TARGET_ANY_GNU_TLS.
868         (ix86_tls_module_base): New.
869         * config/i386/i386-protos.h (ix86_tls_module_base): Declare it.
870         * config/i386/i386.md (UNSPEC_TLSDESC): New constant.
871         (tls_global_dynamic_32, tls_global_dynamic_64): Handle GNU2 TLS.
872         (tls_local_dynamic_base_32, tls_local_dynamic_base_64): Likewise.
873         (tls_dynamic_gnu2_32, *tls_dynamic_lea_32): New patterns.
874         (*tls_dynamic_call_32, *tls_dynamic_gnu2_combine_32): Likewise.
875         (tls_dynamic_gnu2_64, *tls_dynamic_lea_64): Likewise.
876         (*tls_dynamic_call_64, *tls_dynamic_gnu2_combine_64): Likewise.
877         * config/i386/predicates.md (tls_modbase_operand): New.
878         (tp_or_register_operand): New.
879
880 2006-01-18  Daniel Berlin  <dberlin@dberlin.org>
881
882         * ipa-reference.c (check_operand):  Allow FUNCTION_DECL.
883         (look_for_address_of): Ditto.
884         (ipa_init): Walk the function decls.
885         (static_execute): Don't set readonly on FUNCTION_DECL's.
886
887 2006-01-18  Roger Sayle  <roger@eyesopen.com>
888
889         * config/i386/i386.md (shift spliter): Fix a a typo in the splitter
890         for shifts where the source and destination registers are different.
891
892 2006-01-18  Paul Brook  <paul@codesourcery.com>
893
894         Merge from csl-arm-branch.
895         2005-03-14  Julian Brown  <julian@codesourcery.com>
896         * config/arm/lib1funcs.asm (ashldi3): Don't define on SymbianOS.
897         (aeabi_llsl): Likewise.
898         (ashrdi3): Likewise.
899         (aeabi_lasr): Likewise.
900         (lshrdi3): Likewise.
901         (aeabi_llsr): Likewise.
902         2005-03-10  Julian Brown  <julian@codesourcery.com>
903         * config.gcc: Disable shared libgcc for SymbianOS.
904         * config/arm/t-symbian (LIB2ADDEH): Include config/arm/pr-support.c.
905
906 2006-01-18  DJ Delorie  <dj@redhat.com>
907
908         * c-pragma.c (handle_pragma_diagnostic): New.
909         (init_pragma): Register it.
910         * doc/extend.texi: Document it.
911
912         * diagnostic.def: Add DK_UNSPECIFIED and DK_IGNORED.
913         * diagnostic.h (diagnostic_classify_diagnostic): Declare.
914         (diagnostic_context): Add classify_diagnostic[].
915         * diagnostic.c (diagnostic_count_diagnostic): Don't count warnings
916         as errors if they're overridden to DK_WARNING.
917         (diagnostic_initialize): Initialize classify_diagnostic[].
918         (diagnostic_set_kind_override): New.
919         (diagnostic_report_diagnostic): Check for kind changes.
920         * opts.c (common_handle_option): Take lang_mask.  Update callers.
921         Handle OPT_Werror_.
922         * common.opt (Werror=): New.
923         * doc/invoke.texi: Document -Werror=*
924
925 2006-01-18  Jeff Law  <law@redhat.com>
926
927         * tree-vrp.c (test_for_singularity): Correct test for new
928         min limit.  Use operand_equal_p rather than pointer equality
929         for testing if new min/max values are equal.
930
931         * tree-ssa-propagate.c (substitute_and_fold): Delay simplifications
932         using range information until after propagation and folding.
933
934 2006-01-18  Richard Henderson  <rth@redhat.com>
935             Aldy Hernandez  <aldyh@redhat.com>
936             Jakub Jelinek  <jakub@redhat.com>
937             Diego Novillo  <dnovillo@redhat.com>
938
939         * omp-low.c: New file.
940         * c-omp.c: New file.
941
942 2006-01-18  Richard Henderson  <rth@redhat.com>
943             Jakub Jelinek  <jakub@redhat.com>
944             Diego Novillo  <dnovillo@redhat.com>
945
946         * doc/invoke.texi: Document -fopenmp.
947         * tree-dump.h (debug_function): Declare.
948         * hooks.c (hook_bool_tree_bool_false): New function.
949         (hook_tree_tree_null): Remove.
950         (hook_tree_tree_tree_null): New.
951         * hooks.h: Update to match.
952         * tree-pretty-print.c (debug_tree_chain): New.
953         (print_generic_expr): Handle TDF_CHAIN.
954         (dump_generic_node): Handle BLOCK.
955         Do not abort with incomplete SWITCH_EXPRs.
956         Do not dump body of an OpenMP directive if TDF_SLIM is given.
957         <case OMP_PARALLEL, OMP_FOR, OMP_SECTIONS>: Don't
958         print space after directive name.
959         <OMP_FOR>: Handle printing OMP_FOR_PRE_BODY.
960         Handle OMP_MASTER and OMP_ORDERED.
961         Handle printing of OMP_BODY just in one place, goto
962         dump_omp_body in the rest of OMP_* nodes that have
963         OMP_BODY.
964         Don't handle clause nodes here.  Update omp statements to
965         use dump_omp_clauses.
966         Handle OMP_SINGLE, OMP_SECTIONS, OMP_SECTION,
967         OMP_CLAUSE_ORDERED, OMP_CLAUSE_SCHEDULE, OMP_ATOMIC,
968         OMP_CRITICAL, OMP_CLAUSE_NOWAIT, GOMP_CLAUSE_IF,
969         GOMP_CLAUSE_NUM_THREADS, GOMP_FOR, GOMP_CLAUSE_SHARED,
970         GOMP_CLAUSE_FIRSTPRIVATE, GOMP_CLAUSE_LASTPRIVATE,
971         GOMP_CLAUSE_COPYIN and GOMP_CLAUSE_COPYPRIVATE.
972         Adjust output for GOMP_PARALLEL.
973         (dump_omp_clauses): New.
974         (print_declaration): Dump DECL_VALUE_EXPR.
975         (op_symbol_1): Split out of op_symbol.
976         (dumping_stmts): Remove.  Update all users.
977         * cgraph.c (cgraph_analyze_queue): New.
978         (cgraph_add_new_function): New.
979         * cgraph.h (cgraph_analyze_queue): Declare.
980         (cgraph_add_new_function): Declare.
981         (cgraph_lower_function): Remove.
982         * tree.c (walk_tree): Walk OMP_CLAUSE_CHAIN of OMP_CLAUSE_*
983         nodes.  Use switch for all nodes, handle most of IS_EXPR_CODE_CLASS
984         and TYPE_P nodes in its default clause.
985         (empty_body_p): New.
986         (tree_range_check_failed): New.
987         (build5_stat): New.
988         * tree.h (OMP_CLAUSE_REDUCTION_INIT,
989         OMP_CLAUSE_REDUCTION_MERGE,
990         OMP_CLAUSE_REDUCTION_PLACEHOLDER,
991         OMP_CLAUSE_PRIVATE_DEBUG,
992         OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE, OMP_FOR_PRE_BODY,
993         OMP_MASTER_BODY, OMP_ORDERED_BODY OMP_BODY,
994         OMP_CLAUSES, OMP_CLAUSE_DECL, OMP_CLAUSE_DEFAULT_KIND,
995         OMP_CLAUSE_CHAIN, OMP_CLAUSE_OUTER_DECL,
996         OMP_CLAUSE_INNER_DECL, OMP_CLAUSE_NUM_THREADS_EXPR,
997         OMP_CLAUSE_IF_EXPR, OMP_CLAUSE_SCHEDULE_CHUNK_EXPR,
998         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE. OMP_PARALLEL_VAR_INIT,
999         OMP_PARALLEL_VAR_REDUC, OMP_FOR_VAR_INIT,
1000         OMP_FOR_VAR_LAST, OMP_FOR_VAR_REDUC,
1001         OMP_SECTIONS_VAR_INIT, OMP_SECTIONS_VAR_LAST,
1002         OMP_SECTIONS_VAR_REDUC, OMP_CLAUSE_REDUCTION_CODE
1003         OMP_SINGLE_CLAUSES, OMP_SINGLE_BODY,
1004         OMP_CLAUSE_SCHEDULE_CHUNK_SIZE, OMP_SECTION_BODY,
1005         OMP_CRITICAL_NAME, OMP_CRITICAL_BODY): New.
1006         (TREE_RANGE_CHECK): New.
1007         (empty_body_p): Declare.
1008         (enum omp_clause_default_kind): New.
1009         (build_string_literal): Declare.
1010         (enum omp_clause_schedule_kind, OMP_CLAUSE_SCHEDULE_KIND): New.
1011         (build5_stat, build5): Declare.
1012         * tree-pass.h (TDF_CHAIN): Define.
1013         * tree-pass.h (PROP_gimple_lomp): Define.
1014         (pass_lower_omp): Declare.
1015         * diagnostic.h (debug_tree_chain): Declare.
1016         * builtins.c (get_builtin_sync_mode): Use 0 as last argument to
1017         mode_for_size.
1018         (expand_builtin): Handle sync BUILT_IN_*_16 builtins.
1019         * builtins.c (build_string_literal): Make extern.
1020         * gcc.c (include_spec_function): New.
1021         (static_spec_functions): Add it.
1022         (main): Move load of libgomp.spec ...
1023         (LINK_COMMAND_SPEC): ... here.
1024         (link_gomp_spec): New.
1025         (static_specs): Include it.
1026         (LINK_COMMAND_SPEC): Add link_gomp.
1027         (GOMP_SELF_SPECS): New.
1028         (driver_self_specs): Include it.
1029         (switch_matches): Don't mark inline.
1030         (main): Load libgomp.spec.
1031         * tree-gimple.c (is_gimple_stmt): True for OMP_MASTER,
1032         OMP_ORDERED, OMP_CRITICAL, OMP_SECTIONS, OMP_SECTION,
1033         and OMP_SINGLE, OMP_FOR and OMP_PARALLEL.
1034         * tree-gimple.h (enum omp_parallel): Declare.
1035         (determine_parallel_type): Declare.
1036         (omp_firstprivatize_variable): Declare.
1037         (omp_reduction_init): Declare.
1038         (diagnose_omp_structured_block_errors): Declare.
1039         (struct walk_stmt_info): Add want_return_expr.
1040         (struct walk_stmt_info): Add want_bind_expr, want_locations.
1041         (find_omp_clause): Declare.
1042         (insert_field_into_struct): Declare.
1043         (struct walk_stmt_info): Move from tree-nested.c
1044         (walk_stmts): Declare.
1045         * c-cppbuiltin.c (c_cpp_builtins): If -fopenmp, #define _OPENMP
1046         to 200505.
1047         * cgraphunit.c (cgraph_lower_function): Make static.
1048         (cgraph_finalize_pending_functions): New.
1049         (cgraph_finalize_function): Call it.
1050         (cgraph_finalize_compilation_unit): Likewise.
1051         * builtin-types.def (BT_I16, BT_FN_I16_VPTR_I16,
1052         BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.
1053         (BT_FN_UINT_UINT): New.
1054         (DEF_FUNCTION_TYPE_6, DEF_FUNCTION_TYPE_7,
1055         DEF_FUNCTION_TYPE_VAR_4): Document.
1056         (BT_PTR_LONG, BT_PTR_PTR, BT_FN_BOOL, BT_FN_INT,
1057         BT_FN_VOID_PTRPTR, BT_PTR_FN_VOID_PTR,
1058         BT_FN_BOOL_LONGPTR_LONGPTR, BT_FN_VOID_OMPFN_PTR_UINT,
1059         BT_FN_VOID_OMPFN_PTR_UINT_UINT,
1060         BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
1061         BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
1062         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
1063         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): New.
1064         * builtins.def: Update DEF_BUILTIN comment to include COND argument.
1065         Move all DEF_SYNC_BUILTIN () and DEF_GOMP_BUILTIN () builtins
1066         into separate files.
1067         (DEF_GOMP_BUILTIN): New.
1068         (BUILT_IN_OMP_GET_THREAD_NUM, BUILT_IN_GOMP_BARRIER,
1069         BUILT_IN_GOMP_CRITICAL_START, BUILT_IN_GOMP_CRITICAL_END,
1070         BUILT_IN_GOMP_CRITICAL_NAME_START, BUILT_IN_GOMP_CRITICAL_NAME_END,
1071         BUILT_IN_GOMP_LOOP_STATIC_START, BUILT_IN_GOMP_LOOP_DYNAMIC_START,
1072         BUILT_IN_GOMP_LOOP_GUIDED_START, BUILT_IN_GOMP_LOOP_RUNTIME_START,
1073         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START,
1074         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START,
1075         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START,
1076         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START,
1077         BUILT_IN_GOMP_LOOP_STATIC_NEXT, BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT,
1078         BUILT_IN_GOMP_LOOP_GUIDED_NEXT, BUILT_IN_GOMP_LOOP_RUNTIME_NEXT,
1079         BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT,
1080         BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT,
1081         BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT,
1082         BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT,
1083         BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
1084         BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
1085         BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
1086         BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
1087         BUILT_IN_GOMP_LOOP_END, BUILT_IN_GOMP_LOOP_END_NOWAIT,
1088         BUILT_IN_GOMP_ORDERED_START, BUILT_IN_GOMP_ORDERED_END,
1089         BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
1090         BUILT_IN_GOMP_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_NEXT,
1091         BUILT_IN_GOMP_PARALLEL_SECTIONS_START, BUILT_IN_GOMP_SECTIONS_END,
1092         BUILT_IN_GOMP_SECTIONS_END_NOWAIT, BUILT_IN_GOMP_SINGLE_START,
1093         BUILT_IN_GOMP_SINGLE_COPY_START, BUILT_IN_GOMP_SINGLE_COPY_END): New.
1094         * sync-builtins.def: New file, moved from builtins.def.
1095         * omp-builtins.def: New file, moved from builtins.def.
1096         * c-objc-common.h (LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.
1097         * gimple-low.c (lower_function_body): Clear data.
1098         (lower_stmt): Do not handle COMPOUND_EXPR.
1099         Remove call to print_node_brief.
1100         * c-tree.h (c_finish_omp_clauses): New prototype.
1101         (C_DECL_THREADPRIVATE_P): Define.
1102         (lookup_name_no_remap, c_omp_remap_private): Remove
1103         (c_begin_omp_parallel, c_finish_omp_parallel): Update.
1104         (check_for_loop_decls): Update decl.
1105         (lookup_name_no_remap, c_omp_remap_private): Declare.
1106         (build_indirect_ref, build_modify_expr, pushdecl,
1107         pushdecl_top_level): Move to c-common.h.
1108         * dwarf2out.c (loc_descriptor_from_tree_1): Don't set unsignedp
1109         before the switch, but just in the 2 places that need it.
1110         * c-decl.c (diagnose_mismatched_decls): Do not check for
1111         mismatched thread-local attributes when OLDDECL is marked
1112         threadprivate and NEWDECL has no thread-local attributes.
1113         (merge_decls): Merge C_DECL_THREADPRIVATE_P.
1114         (c_gimple_diagnostics_recursively): Rename from
1115         c_warn_unused_result_recursively.  Invoke
1116         diagnose_omp_structured_block_errors.
1117         (check_for_loop_decls): Return a singular decl found.
1118         * langhooks.c (lhd_omp_predetermined_sharing): Return
1119         OMP_CLAUSE_DEFAULT_SHARED for DECL_ARTIFICIAL decls.
1120         (lhd_omp_firstprivatize_type_sizes): New.
1121         (lhd_omp_assignment): New.
1122         (lhd_omp_predetermined_sharing): New.
1123         * langhooks.h (struct gimplify_omp_ctx): Forward declare.
1124         (struct lang_hooks_for_types): Add
1125         omp_firstprivatize_type_sizes, omp_privatize_by_reference,
1126         omp_predetermined_sharing, omp_disregard_value_expr,
1127         omp_private_debug_clause, omp_clause_default_ctor,
1128         omp_clause_copy_ctor, omp_clause_assign_op, omp_clause_dtor.
1129         (c_finish_omp_clauses): New.
1130         (c_finish_bc_stmt): Diagnose break within omp for.
1131         (c_begin_omp_parallel, c_finish_omp_parallel): New.
1132         (build_unary_op): Return error_mark after reporting
1133         a readonly_error.
1134         (build_modify_expr): Likewise.
1135         * gimplify.c: Include optabs.h and pointer-set.h.
1136         (enum gimplify_omp_var_data): Declare.
1137         (struct gimplify_omp_ctx): Declare.
1138         (struct gimplify_ctx): Add fields prev_context, combined_pre_p
1139         and combined_ctxp.
1140         (gimplify_ctxp, gimplify_omp_ctxp): New local variables.
1141         (push_gimplify_context, pop_gimplify_context): Allow nesting.
1142         (splay_tree_compare_decl_uid): New.
1143         (new_omp_context): New.
1144         (delete_omp_context): New.
1145         (gimple_add_tmp_var): Call omp_add_variable.
1146         (gimplify_bind_expr): Likewise.
1147         (gimplify_var_or_parm_decl): If omp_notice_variable returned
1148         true, disregard DECL_VALUE_EXPR on the decl if any.
1149         (gimplify_expr_in_ctx): New.
1150         (omp_firstprivatize_variable, omp_firstprivatize_type_sizes
1151         omp_add_variable, omp_notice_variable, omp_is_private
1152         gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1
1153         gimplify_adjust_omp_clauses, gimplify_omp_parallel
1154         gimplify_omp_for, gimplify_omp_workshare, goa_lhs_expr_p
1155         gimplify_omp_atomic_fetch_op, goa_stabilize_expr
1156         gimplify_omp_atomic_pipeline, gimplify_omp_atomic_mutex
1157         gimplify_omp_atomic): New.
1158         (gimplify_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
1159         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
1160         OMP_CRITICAL and OMP_ATOMIC.
1161         (gimplify_body): Verify gimplify_ctxp is empty after gimplification.
1162         * c-pragma.h (enum pragma_kind): Add
1163         PRAGMA_OMP_ATOMIC, PRAGMA_OMP_BARRIER,
1164         PRAGMA_OMP_CRITICAL, PRAGMA_OMP_FLUSH, PRAGMA_OMP_FOR,
1165         PRAGMA_OMP_MASTER, PRAGMA_OMP_ORDERED,
1166         PRAGMA_OMP_PARALLEL, PRAGMA_OMP_PARALLEL_FOR,
1167         PRAGMA_OMP_PARALLEL_SECTIONS, PRAGMA_OMP_SECTION,
1168         PRAGMA_OMP_SECTIONS, PRAGMA_OMP_SINGLE,
1169         PRAGMA_OMP_THREADPRIVATE.
1170         * tree.def (OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
1171         OMP_SINGLE, OMP_SECTION, OMP_MASTER, OMP_ORDERED,
1172         OMP_CRITICAL, OMP_ATOMIC, OMP_CLAUSE_PRIVATE,
1173         OMP_CLAUSE_SHARED, OMP_CLAUSE_FIRSTPRIVATE,
1174         OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_REDUCTION,
1175         OMP_CLAUSE_COPYIN, OMP_CLAUSE_COPYPRIVATE,
1176         OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS,
1177         OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_NOWAIT,
1178         OMP_CLAUSE_ORDERED, OMP_CLAUSE_DEFAULT): Define.
1179         * print-tree.c (print_node): Dump DECL_VALUE_EXPR.
1180         * tree-ssa-dce.c (find_control_dependence): Do not assume that
1181         ENTRY_BLOCK_PTR->next_bb == single_succ (ENTRY_BLOCK_PTR).
1182         * tree-nested.c (convert_call_expr): Call walk_body on OMP_BODY for
1183         OpenMP directives.
1184         (struct nesting_info): Add field_map,
1185         suppress_expansion, debug_var_chain.
1186         (create_nesting_tree): Initialize them.
1187         (lookup_field_for_decl): Use field_map.
1188         (get_nonlocal_debug_decl, get_local_debug_decl): New.
1189         (convert_local_omp_clauses): New.
1190         (finalize_nesting_tree_1): Add debug_var_chain to toplevel block.
1191         (walk_body): Split out of walk_function.
1192         (convert_nonlocal_omp_clauses, convert_local_omp_clauses): New.
1193         (convert_nonlocal_reference): Handle omp statements.
1194         (convert_local_reference): Likewise.
1195         (unnest_nesting_tree_1): Split out of finalize_nesting_tree_1.
1196         (unnest_nesting_tree): New.
1197         (lower_nested_functions): Call it.
1198         (insert_field_into_struct): Make extern.
1199         (struct walk_stmt_info): Move to tree-gimple.h.
1200         (walk_stmts): Make extern.
1201         * omp-builtins.def: New file.
1202         * tree-iterator.c (expr_only): Clarify comment.
1203         * c-common.h (pushdecl_top_level, pushdecl,
1204         build_modify_expr, build_indirect_ref,
1205         c_finish_omp_master, c_finish_omp_critical,
1206         c_finish_omp_ordered, c_finish_omp_barrier,
1207         c_finish_omp_atomic, c_finish_omp_flush,
1208         c_finish_omp_for, c_split_parallel_clauses,
1209         omp_clause_default_kind, c_omp_sharing_predetermined,
1210         c_omp_remap_decl): Declare.
1211         * Makefile.in (BUILTINS_DEF): Add omp-builtins.def.
1212         (OBJS-common): Add omp-low.o.
1213         (c-omp.o, omp-low.o): Add.
1214         (gimplify.o): Add dependency on $(OPTABS_H).
1215         (GTFILES): Add omp-low.c.
1216         (gt-stringpool.h): Add.
1217         * tree-cfg.c (set_bb_for_stmt): Do not update the
1218         block-to-labels map if we are currently expanding to RTL.
1219         (tree_node_can_be_shared): Remove unnecessary CONSTANT_CLASS_P
1220         checks.
1221         Handle IDENTIFIER_NODE.
1222         (tree_verify_flow_info): Do not ICE when emitting error
1223         messages about invalid labels.
1224         (dump_function_to_file): Reset CFUN before emitting the body
1225         of the function.
1226         (debug_function): New.
1227         * passes.c (init_optimization_passes): Schedule
1228         pass_lower_omp.
1229         * langhooks-def.h (lhd_omp_predetermined_sharing,
1230         lhd_omp_assignment, lhd_omp_firstprivatize_type_sizes):
1231         Declare.
1232         (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
1233         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
1234         (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE,
1235         LANG_HOOKS_OMP_PREDETERMINED_SHARING,
1236         LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
1237         LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE,
1238         LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR,
1239         LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
1240         LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP,
1241         LANG_HOOKS_OMP_CLAUSE_DTOR): Define.
1242         (LANG_HOOK_DECLS): Use them.
1243
1244 2006-01-18  Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
1245             Richard Henderson  <rth@redhat.com>
1246             Jakub Jelinek  <jakub@redhat.com>
1247             Diego Novillo  <dnovillo@redhat.com>
1248
1249         * c-parser.c (pragma_omp_clause): Define.
1250         (c_parser_declaration_or_fndef): Document OpenMP syntax.
1251         (c_parser_compound_statement): Likewise.
1252         (c_parser_statement): Likewise.
1253         (c_parser_pragma): Handle omp pragmas.
1254         (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
1255         OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK): Define.
1256         (c_parser_omp_clause_name, check_no_duplicate_clause,
1257         c_parser_omp_variable_list,
1258         c_parser_omp_var_list_parens, c_parser_omp_clause_copyin,
1259         c_parser_omp_clause_copyprivate,
1260         c_parser_omp_clause_default,
1261         c_parser_omp_clause_firstprivate, c_parser_omp_clause_if,
1262         c_parser_omp_clause_lastprivate,
1263         c_parser_omp_clause_nowait,
1264         c_parser_omp_clause_num_threads,
1265         c_parser_omp_clause_ordered, c_parser_omp_clause_private,
1266         c_parser_omp_clause_reduction,
1267         c_parser_omp_clause_schedule, c_parser_omp_clause_shared,
1268         c_parser_omp_all_clauses, c_parser_omp_structured_block,
1269         c_parser_omp_atomic, c_parser_omp_barrier,
1270         c_parser_omp_critical, c_parser_omp_flush,
1271         c_parser_omp_for_loop, c_parser_omp_for,
1272         c_parser_omp_master, c_parser_omp_ordered,
1273         c_parser_omp_sections_scope, c_parser_omp_sections,
1274         c_parser_omp_parallel, c_parser_omp_single,
1275         c_parser_omp_construct, c_parser_omp_threadprivate): New.
1276         * c-pragma.c (init_pragma): Do omp pragma registration here.
1277         * c.opt (fopenmp): New flag.
1278
1279 2006-01-18  Eric Christopher  <echristo@apple.com>
1280
1281         * gcc.c (GOMP_SELF_SPECS): Bracket in #ifndef/#endif.
1282         * config/darwin.h (GOMP_SELF_SPECS): Define.
1283
1284 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
1285
1286         * rtl.h: Remove the prototype for reg_alloc.
1287
1288 2006-01-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1289
1290         PR target/25731
1291         * config.gcc (hppa*-*-linux*, hppa[12]*-*-hpux10*, hppa*64*-*-hpux11*,
1292         hppa[12]*-*-hpux11*): Override default shared libgcc version for both
1293         sjlj and dwarf2 exception handling.
1294         * pa/t-hpux-shlib (SHLIB_SOVERSION): New make variable.
1295         Rework to allow overriding SHLIB_EXT and SHLIB_SOVERSION.
1296         * pa/pa.c (function_value): Treat complex and vector types as
1297         aggregates.
1298         (function_arg): Likewise.  Only pass scalar floats in the floating
1299         point argument registers.
1300         * pa/t-slibgcc-dwarf-ver: New file.
1301         * pa/t-slibgcc-sjlj-ver: New file.
1302         * pa/t-slibgcc-elf-ver: Delete file.
1303
1304 2006-01-19  Alan Modra  <amodra@bigpond.net.au>
1305
1306         * config/rs6000/rs6000.c (rs6000_assemble_integer): Correct
1307         unlikely_test_section_p test.
1308
1309 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
1310
1311         * mode-switching.c (optimize_mode_switching): Make it static.
1312         * basic-block.h: Remove the prototype for
1313         optimize_mode_switching.
1314
1315         * modulo-sched.c (sms_schedule): Make it static.
1316         * rtl.h: Remove the prototype for sms_schedule.
1317
1318         * postreload-gcse.c (gcse_after_reload_main): Make it static.
1319         * rtl.h: Remove the prototype for gcse_after_reload_main.
1320
1321         * reg-stack.c (reg_to_stack): Make it static.
1322         * rtl.h: Remove the prototype for reg_to_stack.
1323
1324         * regrename.c (regrename_optimize, copyprop_hardreg_forward):
1325         Make them static.
1326         * rtl.h: Remove the prototypes for regrename_optimize and
1327         copyprop_hardreg_forward.
1328
1329 2006-01-18  Eric Botcazou  <ebotcazou@adacore.com>
1330
1331         * config/alpha/alpha.c (alpha_split_tfmode_pair): Rename into
1332         alpha_split_tmode_pair.  Add 'mode' and 'fixup_overlap' arguments.
1333         Test against the appropriate null constant for the mode.
1334         If 'fixup_overlap' is true, swap the operands if they overlap.
1335         (alpha_split_tfmode_frobsign): Adjust call to alpha_split_tfmode_pair.
1336         * config/alpha/alpha-protos.h (alpha_split_tfmode_pair): Rename into
1337         alpha_split_tmode_pair and adjust for above change.
1338         * config/alpha/alpha.md (movtf_internal): Adjust call to
1339         alpha_split_tfmode_pair and rely on it to swap the operands.
1340         (movti_internal): New insn and post-reload splitter.
1341         (movti): New expander.
1342
1343 2006-01-18  Philippe De Muyter  <phdm@macqel.be>
1344
1345         * config/m68k/m68k.md (*addsi3_5200): Allow addq/subq to memory
1346         operands.
1347
1348 2006-01-18  Kazu Hirata  <kazu@codesourcery.com>
1349
1350         * rtlanal.c (global_reg_mentioned_p_1,
1351         global_reg_mentioned_p): Remove.
1352         * rtl.h: Remove the prototype for global_reg_mentioned_p.
1353
1354         * flow.c (initialize_uninitialized_subregs): Make it static.
1355         * rtl.h: Remove the prototype for
1356         initialize_uninitialized_subregs.
1357
1358         * function.c (instantiate_virtual_regs): Make it static.
1359         * function.h: Remove the prototype for
1360         instantiate_virtual_regs.
1361
1362         * regmove.c (regmove_optimize, combine_stack_adjustments):
1363         Make them static.
1364         * rtl.h: Remove the prototypes for regmove_optimize and
1365         combine_stack_adjustments.
1366
1367 2006-01-17  Roger Sayle  <roger@eyesopen.com>
1368
1369         * config/i386/i386.c (COSTS_N_BYTES): New macro.
1370         (size_cost): Encode costs in bytes so that a reg-reg addition is
1371         equivalent to COSTS_N_INSNS(1).
1372         (override_options): Use the size_cost.branch_cost as the default
1373         ix86_branch_cost when optimizing for size.
1374
1375 2006-01-18  Ben Elliston  <bje@au.ibm.com>
1376
1377         * Makefile.in (D32PBIT_FUNCS): New.
1378         (D64PBIT_FUNCS, D128PBIT_FUNCS): Likewise.
1379         (libgcc.mk): Set D32PBIT, D64PBIT, D128PBIT, D32PBIT_FUNCS,
1380         D64PBIT_FUNCS and D128PBIT_FUNCS.
1381         (LIBGCC_DEPS): Include $(D32PBIT), $(D64PBIT), $(D128PBIT).
1382         * mklibgcc.in Bring in the DFP support code if D32PBIT, D64PBIT or
1383         D128PBIT are set.
1384         (decnumber_dep): Define.
1385         * doc/libgcc.texi (Decimal float library routines): New node.
1386         * config/dfp-bit.h, config/dfp-bit.c: New files.
1387
1388 2006-01-18  Ben Elliston  <bje@au.ibm.com>
1389
1390         * expr.c (emit_move_change_mode): Always adjust addresses, not
1391         just during reload.  Copy replacements only during reload.
1392         (emit_move_insn_1): Move MODE_DECIMAL_FLOAT modes by invoking
1393         emit_move_via_integer.
1394
1395 2006-01-17  Shantonu Sen  <ssen@opendarwin.org>
1396
1397         * Makefile.in (check-%, check-consistency): Use $${srcdir}
1398         instead of $(srcdir) and ${srcdir}.
1399
1400 2006-01-17  Richard Earnshaw  <rearnsha@arm.com>
1401
1402         PR target/592
1403         PR middle-end/11135
1404         * arm.h (struct machine_function): Add pic_reg.
1405         * arm.c (arm_pic_register): Make unsigned.
1406         (arm_override_options): Only set arm_pic_register if
1407         TARGET_SINGLE_PIC_BASE.
1408         (use_return_insn): Only test for a pic register if it is fixed.
1409         (arm_compute_save_reg0_reg12_mask): Likewise.
1410         (thumb_compute_save_reg_mask): Likewise.
1411         (legitimate_pic_operand): Factor out some known invariants.
1412         (legitimize_pic_address): If we don't have a fixed pic register,
1413         then set up a pseudo in the function entry sequence.  Handle the
1414         pic base being in a pseudo.
1415         (arm_load_pic_register): Handle the pic register being in a pseudo.
1416         (arm_expand_prologue): Only set up the pic register if it is fixed.
1417         (thumb_expand_prologue): Likewise.
1418         * arm.md (pic_load_addr_based): Handle the pic base being a pseudo.
1419         (pic_load_addr_based_insn): Likewise.
1420         (builtin_setjmp_receiver): Don't restore the pic base if it isn't
1421         fixed.
1422
1423 2006-01-18  Ben Elliston  <bje@au.ibm.com>
1424
1425         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Reject
1426         decimal float modes for all floating point registers.
1427
1428         * config/rs6000/predicates.md (reg_or_mem_operand): Pair up
1429         match_code "mem" with match_test "macho_lo_sum_memory_operand".
1430
1431 2006-01-17  Jakub Jelinek  <jakub@redhat.com>
1432
1433         PR c/25682
1434         * c-typeck.c (build_unary_op): Fold offsetof-like expressions
1435         even when the pointer is not NULL.
1436
1437 2006-01-16  Ian Lance Taylor  <ian@airs.com>
1438
1439         * common.opt (ftoplevel-reorder): New option.
1440         * cgraph.c (cgraph_asm_nodes): New global variable.
1441         (cgraph_asm_last_node): New static variable.
1442         (cgraph_order): New global variable.
1443         (cgraph_create_node): Set new order field.
1444         (cgraph_varpool_node): Likewise.
1445         (decide_is_variable_needed): Return true if not
1446         flag_toplevel_reorder.
1447         (cgraph_add_asm_node): New function.
1448         * cgraph.h (struct cgraph_node): Add order field.
1449         (struct cgraph_varpool_node): Add order field.
1450         (struct cgraph_asm_node): Define.
1451         (cgraph_asm_nodes, cgraph_order): Declare.
1452         (cgraph_add_asm_node): Declare.
1453         * cgraphunit.c (cgraph_varpool_assemble_decl): New static
1454         function.
1455         (cgraph_varpool_assemble_pending_decls): Call it.
1456         (cgraph_output_pending_asms): New static function.
1457         (cgraph_finalize_compilation_unit): Call it.
1458         (struct cgraph_order_sort): Define.
1459         (cgraph_output_in_order): New static function.
1460         (cgraph_optimize): Call cgraph_output_pending_asms.  Add code for
1461         !flag_toplevel_reorder case.
1462         * c-parser.c: Include "cgraph.h".
1463         (c_parser_asm_definition): Call cgraph_add_asm_node rather than
1464         assemble_asm.
1465         * Makefile.in (CRTSTUFF_CFLAGS): Use -fno-toplevel-reorder rather
1466         than -fno-unit-at-a-time.
1467         * doc/invoke.texi (Option Summary): Mention
1468         -fno-toplevel-reorder.
1469         (Optimize Options): Document -fno-toplevel-reorder.  Mention it in
1470         -funit-at-a-time documentation.
1471
1472 2006-01-17  Hans-Peter Nilsson  <hp@axis.com>
1473             Kazu Hirata  <kazu@codesourcery.com>
1474
1475         * Makefile.in (FUNCTION_H, LAMBDA_H): Use $(TREE_H), not tree.h.
1476
1477 2006-01-17  Kazu Hirata  <kazu@codesourcery.com>
1478
1479         * Makefile.in (FUNCTION_H): New.  Use it instead of
1480         function.h throughout the file.
1481         * function.h: Include tree.h.
1482
1483 2006-01-17  Ben Elliston  <bje@au.ibm.com>
1484
1485         * recog.c: Separate some functions with whitespace.
1486
1487 2006-01-16  Richard Henderson  <rth@redhat.com>
1488
1489         Merge from gomp branch:
1490         * Makefile.in (TREE_INLINE_H): New.  Use it as needed.
1491         * tree-inline.h (struct copy_body_data): Move from tree-inline.c
1492         and rename from struct inline_data.  Rename callee* to dst*;
1493         caller* to src*; add copy_decl hook, transform_call_graph_edges,
1494         transform_new_cfg, transform_return_to_modify, and
1495         transform_lang_insert_block flags; remove cloning_p, versioning_p,
1496         update_clones_p.
1497         (copy_body_r, insert_decl_map, remap_decl, remap_type): Declare.
1498         (copy_decl_for_dup): Remove.
1499         * tree-inline.c (struct inline_data): Move to header.
1500         (insert_decl_map): Export.
1501         (remap_decl): Update for member name changes.  Use copy_decl hook.
1502         Allow for replacement to be a non-decl.  Remove dead code.
1503         (remap_type_1): Check for existing mapping.
1504         (remap_type): Export.
1505         (remap_decls): Update for member name changes.
1506         (remap_block, copy_bb, copy_cfg_body, copy_generic_body): Likewise.
1507         (copy_body, setup_one_parameter, declare_return_variable): Likewise.
1508         (expand_call_inline, optimize_inline_calls, clone_body): Likewise.
1509         (copy_tree_r, mark_local_for_remap_r, unsave_expr_now): Likewise.
1510         (tree_function_versioning, build_duplicate_type): Likewise.
1511         (copy_body_r): Likewise.  Export.
1512         (copy_decl_for_dup): Split into ...
1513         (copy_decl_for_dup_finish, copy_decl_to_var,
1514         copy_decl_no_change, copy_decl_maybe_to_var): ... these.
1515         (replace_ref_tree, inlining_p): Remove.
1516
1517 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
1518
1519         * ifcvt.c (if_convert): Make it static.
1520         * rtl.h: Remove the prototype for if_convert.
1521
1522         * local-alloc.c (local_alloc): Make it static.
1523         * rtl.h: Remove the prototype for local_alloc.
1524
1525         * loop.c (loop_optimize): Make it static.
1526         * cfgloop.h: Remove the prototype for loop_optimize.
1527         * rtl.h: Likewise.
1528
1529 2006-01-16  DJ Delorie  <dj@redhat.com>
1530
1531         * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs of
1532         mems.
1533
1534 2006-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1535
1536         * pa.md: Disparage copies between general and floating-point registers
1537         in 32-bit move patterns.
1538
1539 2006-01-16  H.J. Lu  <hongjiu.lu@intel.com>
1540
1541         PR testsuite/25741
1542         * Makefile.in (check-%): Depend on site.exp instead of
1543         $(TESTSUITEDIR)/site.exp. Run "runtest" in separate language
1544         directories.
1545
1546 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
1547
1548         * global.c (global_alloc): Make it static.
1549         * rtl.h: Remove the prototype for global_alloc.
1550
1551 2006-01-16  Richard Guenther  <rguenther@suse.de>
1552
1553         * tree-ssa-alias.c (struct used_part): Add write_only field.
1554         (get_or_create_used_part_for): Initialize it to true.
1555         (create_overlap_variables_for): Don't create structure variables
1556         for structures that only are written to.
1557         (find_used_portions): Handle MODIFY_EXPR to track whether a
1558         structure is only written to.
1559
1560 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
1561
1562         * bb-reorder.c (partition_hot_cold_basic_blocks): Make it
1563         static.
1564         * basic-block.h: Remove the prototype for
1565         partition_hot_cold_basic_blocks.
1566
1567 2006-01-16  Rafael Ãƒvila de Espíndola <rafael.espindola@gmail.com>
1568
1569         * cppspec.c (lang_specific_spec_functions): remove
1570         * gcc.c (lookup_spec_function): use static_spec_functions directelly
1571         * gcc.h (lang_specific_spec_functions): remove
1572         * gccspec.c (lang_specific_spec_functions): remove
1573
1574 2005-01-16  Paolo Bonzini  <bonzini@gnu.org>
1575
1576         * combine.c (record_value_for_reg): Invalidate registers
1577         if INSN is null.
1578         (record_dead_and_set_regs_1): Likewise, by passing them to
1579         record_value_for_reg.
1580         (record_dead_and_set_regs): Invalidate stores made by a
1581         call.  We do not combine across a call, but we still
1582         relied on equivalences.
1583
1584 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
1585
1586         * tree-vrp.c (extract_range_from_binary_expr): Cope with
1587         vrp_int_const_binop returning non-constant nodes.
1588
1589 2006-01-16  Paul Brook  <paul@codesourcery.com>
1590
1591         * config/m68k/m68k.c (output_move_const_into_data_reg):
1592         Output correct mnemonic for mvz and mvs.
1593
1594 2006-01-16  Gabor Loki  <loki@gcc.gnu.org>
1595
1596         * rtl-factoring.c: Add sequence abstraction algorithm.
1597         * cfgcleanup.c (outgoing_edges_match): Extra checks.
1598         (try_crossjump_to_edge): Avoid deleting preserve label when redirecting
1599         ABNORMAL edges.
1600         (block_has_preserve_label): New function.
1601         * common.opt: Register new pass.
1602         * Makefile.in: Ditto.
1603         * passes.c: Ditto.
1604         * timevar.def: Ditto.
1605         * tree-pass.h: Ditto.
1606         * emit-rtl.c (make_jump_insn_raw): Remove forward decl.
1607         * rtl.h (make_jump_insn_raw): Add forward decl.
1608         * doc/invoke.texi: Add documentation for -frtl-abstract-sequences.
1609
1610 2006-01-16  Eric Botcazou  <ebotcazou@adacore.com>
1611             Roger Sayle  <roger@eyesopen.com>
1612
1613         * fold-const.c (fold_minmax): New static function.
1614         (fold_binary) <MIN_EXPR>: Call it.
1615         <MAX_EXPR>: Likewise.
1616         * stor-layout.c (place_field): Use DECL_SIZE consistently
1617         in the computation of the new record size.
1618
1619 2006-01-16  Kazu Hirata  <kazu@codesourcery.com>
1620
1621         * cse.c (cse_condition_code_reg): Make it static.
1622         * rtl.h: Remove the prototype for cse_condition_code_reg.
1623
1624         * combine.c (combine_instructions): Make it static.
1625         * rtl.h: Remove the prototype for combine_instructions.
1626
1627 2006-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1628
1629         PR target/25168
1630         * tree.c (get_file_function_name_long): Concatenate the first global
1631         object name with a string derived from the input filename of the object
1632         for type "F".
1633
1634 2006-01-16  Ben Elliston  <bje@au.ibm.com>
1635
1636         * config/i386/winnt-stubs.c: Update FSF address.
1637         * config/xtensa/ieee754-df.S: Ditto.
1638         * config/xtensa/ieee754-sf.S: Ditto.
1639
1640 2006-01-14  Ian Lance Taylor  <ian@airs.com>
1641
1642         * ifcvt.c (noce_init_if_info): New static function, broken out of
1643         noce_process_if_block.
1644         (noce_process_if_block): Call noce_init_if_info.
1645         (check_cond_move_block): New static function.
1646         (cond_move_process_if_block): New static function.
1647         (process_if_block): Call cond_move_process_if_block.
1648
1649 2006-01-15  Kazu Hirata  <kazu@codesourcery.com>
1650
1651         * cselib.c (hash_table): Rename to cselib_hash_table.
1652         (cselib_clear_table, discard_useless_values,
1653         remove_useless_values, cselib_lookup_mem, cselib_lookup,
1654         cselib_init, cselib_finish): Adjust uses of hash_table.
1655
1656 2006-01-14  Kazu Hirata  <kazu@codesourcery.com>
1657
1658         PR tree-optimization/25485
1659         * tree-vrp.c (extract_range_from_binary_expr): Handle cases
1660         where one of the operands of TRUTH_AND_EXPR and TRUTH_OR_EXPR
1661         is known to be false and true, respectively.
1662
1663 2006-01-14  Richard Guenther  <rguenther@suse.de>
1664
1665         PR tree-optimization/22548
1666         PR tree-optimization/22555
1667         PR tree-optimization/22501
1668         * Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
1669         * params.def (salias-max-array-elements): New parameter.
1670         * params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
1671         * doc/invoke.texi (salias-max-array-elements): Document.
1672         * tree-flow-inline.h (var_can_have_subvars): We also handle
1673         arrays now.
1674         * tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
1675         COMPONENT_REF.
1676         * tree-ssa-structalias.c (params.h): Include.
1677         (push_fields_onto_fieldstack): Handle ARRAY_TYPE.
1678         (find_func_aliases): Handle multiple constraints from ARRAY_REF.
1679         (get_constraint_for): For ADDR_EXPR operating on something
1680         containing an ARRAY_REF, add all subvars to the solution.
1681         (handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
1682         * tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
1683         for creating MUST_DEFs.
1684         (get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.
1685
1686 2006-01-14  Zdenek Dvorak <dvorakz@suse.cz>
1687
1688         * tree-ssa-loop-niter.c (number_of_iterations_cond): Split into several
1689         functions.
1690         (number_of_iterations_ne, number_of_iterations_lt_to_ne,
1691         assert_no_overflow_lt, assert_loop_rolls_lt, number_of_iterations_lt,
1692         number_of_iterations_le): New functions.
1693         (number_of_iterations_special): Removed.
1694         (number_of_iterations_exit): Do not use number_of_iterations_special.
1695         * tree.c (unsigned_type_for): Always return integer type.
1696
1697 2006-01-14  Steven Bosscher  <stevenb.gcc@gmail.com>
1698         Richard Guenther  <rguenther@suse.de>
1699
1700         PR rtl-optimization/24257
1701         * gcse.c (find_moveable_store): Only consider a store movable
1702         when the SET_SRC of the insn can be assigned to a register.
1703
1704 2006-01-14  Ian Lance Taylor  <ian@airs.com>
1705
1706         * tree.c (tree_not_class_check_failed): New function.
1707         * tree.h (NON_TYPE_CHECK): Call tree_not_class_check_failed.
1708         (tree_not_class_check_failed): Declare.
1709
1710 2006-01-13  Ian Lance Taylor  <ian@airs.com>
1711
1712         * reload1.c (do_output_reload): Add assertion rejecting a
1713         CALL_INSN.
1714
1715 2006-01-13  Adam Nemet  <anemet@caviumnetworks.com>
1716
1717         * combine.c (struct reg_stat): Add new fields truncation_label and
1718         truncated_to_mode.
1719         (record_value_for_reg): Reset truncated_to_mode.
1720         (record_truncated_value): New function.
1721         (check_promoted_subreg): Call it.  Rename to check_conversions.
1722         (combine_instructions): Rename check_promoted_subreg to
1723         check_conversions.
1724         (reg_truncated_to_mode): New function.
1725         (make_extraction): Use it.  Check TRULY_NOOP_TRUNCATION.
1726         (gen_lowpart_or_truncate): New function.
1727         (force_to_mode): Use it instead of gen_lowpart.
1728
1729 2006-01-13  Diego Novillo  <dnovillo@redhat.com>
1730
1731         * tree-ssa-alias.c (add_type_alias): Fix typo.  Test whether
1732         VAR is a tag, not its type tag.
1733
1734 2006-01-13  Alexandre Oliva  <aoliva@redhat.com>
1735
1736         * config/i386/sse.md (*vec_extractv2di_1_sse2): Reorder
1737         alternatives to match style of other entries.
1738         (*vec_extractv2di_1_sse): Likewise.  Fix mode attr.
1739
1740 2006-01-13  Daniel Berlin  <dberlin@dberlin.org>
1741
1742         PR tree-optimization/25771
1743         * tree-ssa-pre.c (insert_extra_phis): Don't insert merges of abnormal
1744         SSA_NAMES.
1745
1746 2006-01-13  Andrew Pinski  <pinskia@physics.uc.edu>
1747
1748         PR tree-opt/24365
1749         * tree-inline.c (declare_return_variable): If the return variable
1750         was marked as a non gimple complex, set the return slot variable
1751         to be a non gimple comple variable.
1752
1753 2006-01-13  Richard Guenther  <rguenther@suse.de>
1754
1755         * builtins.c (expand_builtin_sincos): New function.
1756         (expand_builtin_mathfn_3): Remove dead code, sin and cos
1757         do not set errno.
1758         (expand_builtin): Expand sincos using expand_builtin_sincos.
1759
1760 2006-01-12  DJ Delorie  <dj@redhat.com>
1761
1762         * config/m32c/shift.md: Rewrite: Allow arbitrary operands for
1763         shift counts, separate SI shifts for m32c vs m16c, pass shift type
1764         so that constant shifts can be split.
1765         * config/m32c/m32c.c (m32c_const_ok_for_constraint_p): Add In6.
1766         (m32c_valid_pointer_mode): Make static.
1767         (shift_gen_func_for): New.
1768         (m32c_prepare_shift): Use it.  Split large const shifts into
1769         multiple shifts.
1770         * config/m32c/predicates.md (shiftcount_operand): Allow more
1771         general operands.
1772         (longshiftcount_operand): New.
1773         * doc/md.texi (Machine Constraints): Document In6.
1774
1775 2006-01-13  Ben Elliston  <bje@au.ibm.com>
1776
1777         * doc/tm.texi (Data Output): Add REAL_VALUE_TO_TARGET_DECIMAL32,
1778         REAL_VALUE_TO_TARGET_DECIMAL64 and REAL_VALUE_TO_TARGET_DECIMAL128
1779         documentation.
1780
1781 2006-01-12  Daniel Berlin  <dberlin@dberlin.org>
1782
1783         * tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
1784         to try to avoid clobbering pieces of structures when we know
1785         something about the whole structure.
1786         * tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR
1787
1788 2006-01-13  Ben Elliston  <bje@au.ibm.com>
1789
1790         * doc/rtl.texi (Insns): Remove statement that libcalls cannot
1791         return in memory, as this is no limitation is no longer present.
1792
1793 2006-01-12  DJ Delorie  <dj@redhat.com>
1794
1795         * config/m32c/addsub.md (addhi3): Add two more alternatives, for
1796         mova with fb, and for fb+0 -> An.
1797
1798         * config/m32c/mov.md (peephole2): Fix enabling logic.
1799
1800         * config/m32c/m32c.h (CTOR_LIST_BEGIN, CTOR_LIST_END,
1801         DTOR_LIST_BEGIN, DTOR_LIST_END, CTORS_SECTION_ASM_OP,
1802         DTORS_SECTION_ASM_OP, INIT_ARRAY_SECTION_ASM_OP,
1803         FINI_ARRAY_SECTION_ASM_OP): Define.
1804
1805         * config/m32c/m32c.c (m32c_legitimize_address): Remove temporary
1806         variable.
1807         (m32c_legitimize_reload_address): New logic to reload FB to An.
1808         (m32c_output_reg_push): Add newline.
1809         (m32c_output_reg_pop): Likewise.
1810
1811 2006-01-12  Ulrich Weigand  <uweigand@de.ibm.com>
1812
1813         * struct-equiv.c (find_dying_inputs): Fix off-by-one bug.
1814
1815 2006-01-11  Andrew Pinski  <pinskia@physics.uc.edu>
1816
1817         * config/i386/darwin.h (SUBTARGET_ENCODE_SECTION_INFO): Define.
1818
1819 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
1820
1821         * config/sh/predicates.md (sh_rep_vec): Add parallel to
1822         match_code.
1823
1824 2006-01-11  Ben Elliston  <bje@au.ibm.com>
1825
1826         * rtlanal.c (find_reg_note): Assert insn is not null.
1827
1828 2005-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1829
1830         * df-scan.c (df_hard_reg_init): Move declaration of i outside
1831         ifdef.
1832
1833 2006-01-11  Jeff Law  <law@redhat.com>
1834
1835         * tree-ssa-threadupdate.c (threaded_edges): New VEC to
1836         hold edge pairs.
1837         (mark_threaded_blocks, register_jump_thread): New functions.
1838         (thread_through_all_blocks): Remove unwanted argument.  No
1839         longer rely on e->aux to communicate thread target info.
1840         Call mark_threaded_blocks.  Release the threaded_blocks
1841         bitmap and threaded_edges vector when complete.
1842         * tree-ssa-dom.c (struct edge_info): Remove redirection_target field.
1843         (threaded_blocks): Remove.
1844         (tree_ssa_dominator_optimize): Remove initialization and
1845         finalization of threaded_blocks.  Simplify call to
1846         thread_through_all_blocks.
1847         (thread_across_edge): Call register_jump_thread rather than
1848         storing thread information into e->aux.
1849         (free_all_edge_infos): Simplify now that e->aux is no longer
1850         used to communicate with thread_through_all_blocks.
1851         * tree-flow.h (thread_through_all_blocks): Update prototype.
1852         (register_jump_thread): Prototype.
1853
1854 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
1855
1856         * df-core.c (df_compact_blocks, df_bb_replace): Use
1857         SET_BASIC_BLOCK instead of BASIC_BLOCK.
1858
1859 2006-01-11  Richard Guenther  <rguenther@suse.de>
1860
1861         PR tree-optimization/25734
1862         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Do not
1863         stop propagation after successful propagation to the LHS.
1864
1865 2006-01-11  Kazu Hirata  <kazu@codesourcery.com>
1866
1867         * basic-block.h (control_flow_graph): Change the type of
1868         x_basic_block_info to VEC(basic_block,gc) *.
1869         (BASIC_BLOCK_FOR_FUNCTION, BASIC_BLOCK): Adjust the uses of
1870         basic_block_info.
1871         (SET_BASIC_BLOCK): New.
1872         * cfg.c (compact_blocks, expunge_block): Use SET_BASIC_BLOCK
1873         instead of BASIC_BLOCK when assigning to BASIC_BLOCK.
1874         * cfgbuild.c (find_basic_blocks): Likewise.
1875         * cfglayout.c (fixup_reorder_chain): Likewise.
1876         * cfgrtl.c (create_basic_block_structure,
1877         rtl_create_basic_block): Likewise.
1878         * ifcvt.c (find_if_case_1): Likewise.
1879         * tree-cfg.c (init_empty_tree_cfg, build_tree_cfg, create_bb):
1880         Likewise.
1881
1882 2005-01-11  Kenneth Zadeck <zadeck@naturalbridge.com>
1883
1884         * Makefile.in: Removed rotted odf.c entry.
1885
1886 2006-01-11  Hans-Peter Nilsson  <hp@axis.com>
1887
1888         PR target/25706
1889         * config/cris/cris.md ("*extopqihi_side", "*extop<mode>si_side")
1890         ("*extop<mode>si_swap_side_biap", "*extop<mode>si_swap_side",
1891         ("*extopqihi", "*extop<mode>si", "*extop<mode>si_swap"): Use %E
1892         output pattern modifier, not %e.
1893         * config/cris/cris.c (cris_op_str): Update comment about pattern
1894         modifier.
1895         (cris_print_operand) <case 'e'>: Clear cris_output_insn_is_bound
1896         before falling through into...
1897         <case 'E'>: Redefined from old 'e' case.
1898
1899 2006-01-11  Jan Hubicka  <jh@suse.cz>
1900
1901         PR target/25042
1902         * i386.c (ix86_init_mmx_sse_builtins): Do not delcare float128
1903
1904 2006-01-11  Jan Hubicka  <jh@suse.cz>
1905
1906         * i386.h (TARGET_DECOMPOSE_LEA): Kill.
1907         * i386.c (x86_decompose_lea): Kill.
1908         (ix86_rtx_costs): Kill.
1909
1910 2006-01-11  Jan Hubicka  <jh@suse.cz>
1911
1912         * cgraph.c (cgraph_insert_node_to_hashtable): New function.
1913         * cgraph.h (cgraph_node): Add inline_decl.
1914         (cgraph_insert_node_to_hashtable): Declare.
1915         (save_inline_function_body): Declare.
1916         * cgraphunit.c (verify_cgraph_node): Inline edges might point to inline
1917         clones.
1918         (cgraph_preserve_function_body_p): Do not presrve when dump is enabled.
1919         (cgraph_function_versioning): Update call of tree_function_versioning.
1920         (save_inline_function_body): New function.
1921         * function.h (struct function): Kill saved_eh, saved_cfg, saved_args,
1922         saved_static_chain_decl, saved_blocks and saved-unexpanded_var_list.
1923         * ipa-inline.c (cgraph_mark_inline_edge): Look for inline clones.
1924         (cgraph_default_inline_p): Likewise.
1925         (cgraph_decide_inlining_incrementally): Likewise.
1926         * tree-inline.c (inline_data): Kill saving_p add update_clones_p.
1927         (copy_bb): Kill saving; do updating of clones.
1928         (copy_cfg_body): Kill saving.
1929         (initialize_inlined-parameters): Likewise.
1930         (expand_call_inline): Likewise.
1931         (save_body): Kill.
1932         (tree_function_versioning): New parameter "update_clones".
1933         (inlining_p): Kill saving.
1934         * tree-inline.h (tree_function_versioning): Update prototype.
1935         * tree-optimize.c (tree_rest_of_compilation): Use clonning instead of
1936         saving.
1937
1938 2006-01-11  Ian Lance Taylor <ian@airs.com>
1939
1940         * combine.c (struct undo): Remove is_int.  Enumify types of undos.
1941         Allow undoing set of machine mode.
1942         (do_SUBST): Use enums instead of is_int.
1943         (do_SUBST_MODE): New function.
1944         (SUBST_MODE): New macro.
1945         (try_combine): Use SUBST_MODE/PUT_MODE instead of generating a new
1946         reg and trying to replace reg_regno_rtx with a new register.
1947         (undo_all): Use new enums, handle undoing a PUT_MODE change.
1948         (simplify_set): Use SUBST_MODE.
1949         (distribute_notes): Remove code that tried to update reg notes
1950         for regno_reg_rtx changes.
1951
1952 2006-01-11  Paolo Bonzini  <bonzini@gnu.org>
1953
1954         PR tree-optimization/23109
1955         PR tree-optimization/23948
1956         PR tree-optimization/24123
1957
1958         * Makefile.in (tree-ssa-math-opts.o): Adjust dependencies.
1959         * tree-cfg.c (single_noncomplex_succ): New.
1960         * tree-flow.h (single_noncomplex_succ): Declare it.
1961         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
1962         * tree-ssa-math-opts.c (enum place_reciprocal): Remove.
1963         (struct occurrence, occ_head, occ_pool, is_divide_by, compute_merit,
1964         insert_bb, register_division_in, insert_reciprocals,
1965         replace_reciprocal, free_bb): New.
1966         (execute_cse_reciprocals_1): Rewritten.
1967         (execute_cse_reciprocals): Adjust calls to execute_cse_reciprocals_1.
1968         Do not commit any edge insertion.  Always compute dominators and
1969         create the allocation pool.
1970         * target-def.h (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL): New.
1971         * target.h (struct gcc_target): Add min_divistions_for_recip_mul.
1972         * targhooks.c (default_min_divistions_for_recip_mul): New.
1973         * targhooks.h (default_min_divistions_for_recip_mul): New prototype.
1974         * passes.c (init_optimization_passes): Run recip after tree loop
1975         optimizations.
1976         * doc/tm.texi (Misc): Document TARGET_MIN_DIVISIONS_FOR_RECIP_MUL.
1977
1978 2005-01-11  Danny Berlin <dberlin@dberlin.org>
1979             Kenneth Zadeck <zadeck@naturalbridge.com>
1980
1981         * df.h (DF_SCAN, DF_RU, DF_RD, DF_LR, DF_UR, DF_UREC, DF_CHAIN,
1982         DF_RI, DF_LAST_PROBLEM_PLUS1, DF_DU_CHAIN, DF_UD_CHAIN,
1983         DF_REF_TYPE_NAMES, DF_HARD_REGS, DF_EQUIV_NOTES, DF_SUBREGS,
1984         DF_SCAN_BB_INFO, DF_RU_BB_INFO, DF_RD_BB_INFO, DF_LR_BB_INFO,
1985         DF_UR_BB_INFO, DF_UREC_BB_INFO, DF_LIVE_IN, DF_LIVE_OUT,
1986         DF_RA_LIVE_IN, DF_RA_LIVE_OUT, DF_UPWARD_LIVE_IN,
1987         DF_UPWARD_LIVE_OUT, DF_REF_REAL_REG, DF_REF_REGNO,
1988         DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_BBNO,
1989         DF_REF_INSN, DF_REF_INSN_UID, DF_REF_TYPE, DF_REF_CHAIN,
1990         DF_REF_ID, DF_REF_FLAGS, DF_REF_NEXT_REG, DF_REF_PREV_REG,
1991         DF_REF_NEXT_REF, DF_REF_DATA, DF_REF_REG_DEF_P, DF_REF_REG_USE_P,
1992         DF_REF_REG_MEM_STORE_P, DF_REF_REG_MEM_LOAD_P, DF_REF_REG_MEM_P,
1993         DF_DEFS_SIZE, DF_DEFS_GET, DF_DEFS_SET, DF_USES_SIZE, DF_USES_GET,
1994         DF_USES_SET, DF_REG_SIZE, DF_REG_DEF_GET, DF_REG_DEF_SET,
1995         DF_REG_USE_GET, DF_REG_USE_SET, DF_REGNO_FIRST_DEF,
1996         DF_REGNO_LAST_USE, DF_INSN_SIZE, DF_INSN_GET, DF_INSN_SET,
1997         DF_INSN_CONTAINS_ASM, DF_INSN_LUID, DF_INSN_DEFS, DF_INSN_USES,
1998         DF_INSN_UID_GET, DF_INSN_UID_LUID, DF_INSN_UID_DEFS,
1999         DF_INSN_UID_USES, DF_SCAN_INITIAL, DF_SCAN_GLOBAL,
2000         DF_SCAN_POST_ALLOC): New macros.
2001         (df_flow_dir, df_ref_type, df_ref_flags, df_alloc_function,
2002         df_free_bb_function, df_local_compute_function, df_init_function,
2003         df_dataflow_function, df_confluence_function_0,
2004         df_confluence_function_n, df_transfer_function,
2005         df_finalizer_function, df_free_function, df_dump_problem_function,
2006         df_problem, dataflow, df_insn_info, df_reg_info, df_ref, df_link,
2007         df_ref_info, df, df_map, df_scan_bb_info, df_ru_bb_info,
2008         df_ru_bb_info, df_rd_bb_info, df_lr_bb_info, df_ur_bb_info,
2009         df_urec_bb_info, ) New types.
2010         (df_invalidated_by_call, df_all_hard_regs, df_state) New public
2011         variables.
2012         (df_init, df_add_problem, df_set_blocks, df_finish, df_analyze,
2013         df_analyze_simple_change_some_blocks,
2014         df_analyze_simple_change_one_block, df_compact_blocks,
2015         df_bb_replace, df_bb_regno_last_use_find,
2016         df_bb_regno_first_def_find, df_bb_regno_last_def_find,
2017         df_insn_regno_def_p, df_find_def, df_find_use,
2018         df_iterative_dataflow, df_dump, df_chain_dump, df_refs_chain_dump,
2019         df_regs_chain_dump, df_insn_debug, df_insn_debug_regno,
2020         df_regno_debug, df_ref_debug, debug_df_insn, debug_df_regno,
2021         debug_df_reg, debug_df_defno, debug_df_useno, debug_df_ref,
2022         debug_df_chain, df_get_dependent_problem, df_chain_create,
2023         df_chain_unlink, df_chain_copy, df_get_live_in, df_get_live_out,
2024         df_grow_bb_info, df_chain_dump, df_print_bb_index,
2025         df_ru_add_problem, df_ru_get_bb_info, df_rd_add_problem,
2026         df_rd_get_bb_info, df_lr_add_problem, df_lr_get_bb_info,
2027         df_ur_add_problem, df_ur_get_bb_info, df_urec_add_problem,
2028         df_urec_get_bb_info, df_chain_add_problem, df_ri_add_problem,
2029         df_reg_lifetime, df_scan_get_bb_info, df_scan_add_problem,
2030         df_rescan_blocks, df_ref_create, df_get_artificial_defs,
2031         df_get_artificial_uses, df_reg_chain_create, df_reg_chain_unlink,
2032         df_ref_remove, df_insn_refs_delete, df_refs_delete,
2033         df_reorganize_refs, df_set_state, df_hard_reg_init,
2034         df_read_modify_subreg_p) New public functions.
2035         * df-core.c: The core dataflow solver and glue routines for rtl
2036         dataflow.
2037         (df_init, df_add_problem, df_set_blocks, df_finish,
2038         df_hybrid_search_forward, df_hybrid_search_backward,
2039         df_iterative_dataflow, df_prune_to_subcfg, df_analyze_problem,
2040         df_analyze, df_get_bb_info, df_set_bb_info, df_bb_replace,
2041         df_bb_regno_last_use_find, df_bb_regno_first_def_find,
2042         df_bb_regno_last_def_find, df_insn_regno_def_p, df_find_def,
2043         df_reg_defined, df_find_use, df_reg_used, df_dump,
2044         df_refs_chain_dump, df_regs_chain_dump, df_insn_debug,
2045         df_insn_debug_regno, df_regno_debug, df_ref_debug, debug_df_insn,
2046         debug_df_reg, debug_df_regno, debug_df_ref debug_df_defno,
2047         debug_df_useno, reset_df_after_reload): New functions.
2048         * df-scan.c: The scanning fuctions, once in df.c, completely
2049         rewritten so that they now fully model the functionality of
2050         register usage at the backend.
2051         (df_scan_free_internal, df_scan_get_bb_info, df_scan_set_bb_info,
2052         df_scan_free_bb_info, df_scan_alloc, df_scan_free, df_scan_dump,
2053         df_scan_add_problem, df_grow_reg_info, df_grow_ref_info,
2054         df_grow_insn_info, df_rescan_blocks, df_ref_create,
2055         df_get_artificial_defs, df_get_artificial_uses,
2056         df_reg_chain_create, df_ref_unlink, df_reg_chain_unlink,
2057         df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete,
2058         df_refs_delete, df_reorganize_refs, df_set_state,
2059         df_ref_create_structure, df_ref_record, df_read_modify_subreg_p,
2060         df_def_record_1, df_defs_record, df_uses_record,
2061         df_insn_contains_asm_1, df_insn_contains_asm, df_insn_refs_record,
2062         df_has_eh_preds, df_bb_refs_record, df_refs_record, df_mark_reg,
2063         df_record_exit_block_uses, df_hard_reg_init): New functions.
2064
2065         * df-problems.c: Seven concrete dataflow problems that use the
2066         scanning in df-scan.c and are solved by the engine in df-core.c.
2067         (df_get_dependent_problem, df_chain_create, df_chain_unlink,
2068         df_chain_copy, df_get_live_in, df_get_live_out, df_grow_bb_info,
2069         df_chain_dump, df_print_bb_index, df_ref_bitmap, df_set_seen,
2070         df_unset_seen, df_ru_get_bb_info, df_ru_set_bb_info,
2071         df_ru_free_bb_info, df_ru_alloc,
2072         df_ru_bb_local_compute_process_def,
2073         df_ru_bb_local_compute_process_use, df_ru_bb_local_compute,
2074         df_ru_local_compute, df_ru_init_solution, df_ru_confluence_n,
2075         df_ru_transfer_function, df_ru_free, df_ru_dump,
2076         df_ru_add_problem, df_rd_get_bb_info, df_rd_set_bb_info,
2077         df_rd_free_bb_info, df_rd_alloc,
2078         df_rd_bb_local_compute_process_def, df_rd_bb_local_compute,
2079         df_rd_local_compute, df_rd_init_solution, df_rd_confluence_n,
2080         df_rd_transfer_function, df_rd_free, df_rd_dump,
2081         df_rd_add_problem, df_lr_get_bb_info, df_lr_set_bb_info,
2082         df_lr_free_bb_info, df_lr_alloc, df_lr_bb_local_compute,
2083         df_lr_local_compute, df_lr_init, df_lr_confluence_0,
2084         df_lr_confluence_n, df_lr_transfer_function, df_lr_free,
2085         df_lr_dump, df_lr_add_problem, df_ur_get_bb_info,
2086         df_ur_set_bb_info, df_ur_free_bb_info, df_ur_alloc,
2087         df_ur_bb_local_compute, df_ur_local_compute, df_ur_init,
2088         df_ur_local_finalize, df_ur_confluence_n, df_ur_transfer_function,
2089         df_ur_free, df_ur_dump, df_ur_add_problem, df_urec_get_bb_info,
2090         df_urec_set_bb_info, df_urec_free_bb_info, df_urec_alloc,
2091         df_urec_mark_reg_change, df_urec_check_earlyclobber,
2092         df_urec_mark_reg_use_for_earlyclobber,
2093         df_urec_mark_reg_use_for_earlyclobber_1, df_urec_bb_local_compute,
2094         df_urec_local_compute, df_urec_init, df_urec_local_finalize,
2095         df_urec_confluence_n, df_urec_transfer_function, df_urec_free,
2096         df_urec_dump, df_urec_add_problem, df_chain_alloc,
2097         df_chain_create_bb_process_use, df_chain_create_bb,
2098         df_chain_finalize, df_chain_free, df_chains_dump,
2099         df_chain_add_problem, df_ri_alloc, df_ri_bb_compute,
2100         df_ri_compute, df_ri_free, df_ri_dump, df_ri_add_problem,
2101         df_reg_lifetime): New functions.
2102         * df.c: Deleted file.
2103         * ddg.c (create_ddg_dep_no_link, build_inter_loop_deps): Made code
2104         consistent with new df api.
2105         * modulo-sched.c (sms_schedule, rest_of_handle_sms,
2106         rest_of_handle_sms): Ditto.
2107         * web.c (unionfind_union, union_defs, entry_register, web_main):
2108         Ditto.
2109         * loop_invariant.c (invariant_for_use, hash_invariant_expr_1,
2110         invariant_expr_equal_p, find_defs, check_dependencies,
2111         find_invariant_insn, find_invariants_to_move, move_invariant_reg,
2112         free_inv_motion_data, move_loop_invariants): Ditto.
2113         * Makefile.in (df.c, df-scan.c df-problems.c df-core.c):
2114         Update dependencies.
2115         (odf.c): Added defective entry that was deleted later in day.
2116         * sched-deps.c (sched_analyze_1): Ditto.
2117
2118 2006-01-11  Zdenek Dvorak <dvorakz@suse.cz>
2119
2120         * tree-ssa-operands.c (get_expr_operands): Record addressable
2121         variables directly.  Do not call add_stmt_operands for CONST_DECLs
2122         and ARRAY_DECLs.
2123         (get_indirect_ref_operands): Remove handling of *(&a + offset) case.
2124         (add_stmt_operands): Handle only objects satisfying SSA_VAR_P.
2125
2126 2006-01-11  Ben Elliston  <bje@au.ibm.com>
2127
2128         * config/i386/i386.c (ix86_return_in_memory): Fix comment: this
2129         function returns true in the positive case.
2130
2131 2006-01-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
2132
2133         PR target/20754
2134         * config/pa/pa.md: Create separate 32 and 64-bit move patterns
2135         for SI, DI, SF and DF modes.  Add alternatives to copy between
2136         general and floating point registers to the 32-bit patterns.
2137         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED_RTX): Delete undefine.
2138         * config/pa/pa.h (SECONDARY_MEMORY_NEEDED_RTX): Delete define.
2139         (SECONDARY_MEMORY_NEEDED): Secondary memory is only needed when
2140         generating 64-bit code.
2141         * config/pa/pa.c (output_move_double): Handle copies between general
2142         and floating registers.
2143
2144 2006-01-10  Stuart Hastings  <stuart@apple.com>
2145
2146         * config/i386/i386.md (set_got): Update.
2147         (set_got_labelled): New.  (UNSPEC_LD_MPIC): New.
2148         (builtin_setjmp_receiver): Mach-O support.
2149         * config/i386/darwin.h (TARGET_ASM_FILE_END) Define.
2150         (GOT_SYMBOL_NAME): Define.
2151         (FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): New.
2152         (TARGET_DEEP_BRANCH_PREDICTION): Remove.
2153         * config/i386/i386.c (override_options): Revise for Darwin.
2154         (USE_HIDDEN_LINKONCE): Enable for Mach-O.  (ix86_file_end): Mach-O
2155         support.  (darwin_x86_file_end): New.  (output_set_got): Add label
2156         parameter, revise for Mach-O.  (x86_output_mi_thunk): Likewise.
2157         * config/i386/i386-protos.h (output_set_got): Likewise.
2158         * config/darwin.c (machopic_legitimize_pic_address): Update
2159         regs_ever_live[].
2160
2161 2006-01-10  Kaz Kojima  <kkojima@gcc.gnu.org>
2162
2163         * config/sh/sh.h (SH5_WOULD_BE_PARTIAL_NREGS): Use GET_MODE_SIZE
2164         when MODE isn't BLKmode.
2165
2166 2006-01-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
2167
2168         PR rtl-optimization/25367
2169         * config/sparc/sparc.h (HARD_REGNO_RENAME_OK): New macro.
2170
2171 2006-01-10  Hans-Peter Nilsson  <hp@axis.com>
2172
2173         PR target/25718
2174         * config/cris/cris.md ("uminsi3"): Don't use 8- or 16-bit sizes
2175         for a negative bound.
2176
2177 2006-01-10  Richard Guenther  <rguenther@suse.de>
2178
2179         * tree-ssa-structalias.c (get_constraint_for_component_ref):
2180         Never override with anything constraint.
2181
2182 2006-01-10  Jan Beulich  <jbeulich@novell.com>
2183
2184         * config/i386/i386.c (ix86_data_alignment): Don't force alignment to
2185         256 bits when optimize_size.
2186
2187 2006-01-10  Jan Beulich  <jbeulich@novell.com>
2188
2189         * config/i386/netware.h (TARGET_SUBTARGET_DEFAULT): Include
2190         MASK_ALIGN_DOUBLE.
2191         * config/i386/nwld.h (LINK_SPEC): Add --extensions:GNU option.
2192         * config/i386/t-nwld (SHLIB_LINK): Insert spaces between expr
2193         arguments.
2194
2195 2006-01-10  Ben Elliston  <bje@au.ibm.com>
2196
2197         * config/rs6000/predicates.md (easy_fp_constant): Discount decimal
2198         float modes.
2199         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): New.
2200         (TARGET_SCALAR_MODE_SUPPORTED_P): Define.
2201         (USE_FP_FOR_ARG): Reject decimal float modes.
2202         (function_arg_advance): Likewise.
2203         (output_toc): Handle emitting TDmode, DDmode and SDmode constants.
2204         (rs6000_handle_altivec_attribute): Do not permit decimal floating
2205         point types in AltiVec vectors.
2206         (rs6000_function_value): Use GP_ARG_RETURN for decimal floats.
2207         (rs6000_libcall_value): Likewise.
2208
2209 2006-01-09  Bob Wilson  <bob.wilson@acm.org>
2210
2211         * config/xtensa/ieee754-df.S: New file.
2212         * config/xtensa/ieee754-sf.S: New file.
2213         * config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove fp-bit.c & dp-bit.c.
2214         (LIB1ASMFUNCS): Add SFmode and DFmode floating-point functions.
2215         * config/xtensa/lib1funcs.asm: Include ieee754-df.S and ieee754-sf.S.
2216
2217 2006-01-09  Kazu Hirata  <kazu@codesourcery.com>
2218
2219         * config/sh/predicates.md (binary_float_operator,
2220         binary_logical_operator, commutative_float_operator,
2221         equality_comparison_operator, greater_comparison_operator,
2222         less_comparison_operator, logical_operator,
2223         noncommutative_float_operator, shift_operator,
2224         symbol_ref_operand, unary_float_operator): Remove redundant
2225         conditionals.
2226
2227 2006-01-09  Jeff Law  <law@redhat.com>
2228
2229         * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Remove
2230         code to propagate the RHS of a cast into COND_EXPR_COND.  Remove
2231         now unused arguments.  Callers updated.
2232         (eliminate_redundant_computations): Remove now unused arguments,
2233         callers updated.
2234         (local_fold): Remove, no longer used.
2235         (find_equivalent_equality_comparison): Removed from tree-ssa-dom.c
2236         and moved to...
2237         * tree-ssa-forwprop.c (find_equivalent_equality_comparison): Here.
2238         (simplify_cond): New function.
2239         (forward_propagate_into_cond): Call simplify_cond.
2240
2241 2006-01-09  Alexandre Oliva  <aoliva@redhat.com>
2242
2243         * config/i386/sse.md (*vec_extractv2di_1_sse2): New.
2244         (*vec_extractv2di_1_sse): New.
2245
2246 2006-01-09  Ben Elliston  <bje@au.ibm.com>
2247
2248         * config/rs6000/rs6000.h (GO_IF_LEGITIMATE_ADDRESS): Typo fix.
2249
2250 2006-01-08  Richard Guenther  <rguenther@suse.de>
2251
2252         * tree-ssa-structalias.c (get_constraint_for): Remove
2253         anyoffset argument.
2254         (get_constraint_for_component_ref): Likewise.
2255         (do_deref): Likewise.
2256         (get_constraint_for): Likewise.
2257         (do_structure_copy): Likewise.
2258         (handle_ptr_arith): Likewise.
2259         (find_func_aliases): Likewise.  Remove unused need_anyoffset
2260         variable.
2261
2262 2006-01-08  J"orn Rennecke  <joern.rennecke@st.com>
2263             Kaz Kojima  <kkojima@gcc.gnu.org>
2264
2265         * config/sh/sh.h (CONST_OK_FOR_K16): Define.
2266         (CONST_OK_FOR_K): Add CONST_OK_FOR_K16 case.
2267         (EXTRA_CONSTRAINT_C16): Remove.
2268         (EXTRA_CONSTRAINT_Css, EXTRA_CONSTRAINT_Csu): Define.
2269         (EXTRA_CONSTRAINT_C): Remove EXTRA_CONSTRAINT_C16 case and add
2270         EXTRA_CONSTRAINT_Css and EXTRA_CONSTRAINT_Csu cases.
2271         * config/sh/sh.c (print_operand): Handle unsigned 16-bit symbolic
2272         constants of SHmedia.  Handle nested constant expressions of
2273         SHmedia correctly.
2274         (andcosts): Fix the costs for SHmedia constants.
2275         (sh_rtx_costs): Take account of outer_code for SHmedia constants.
2276         * config/sh/sh.md (*movsi_media): Use Css constraint instead of C16.
2277         (*movsi_media_nofpu, *movqi_media, *movhi_media): Likewise.
2278         (*movdi_media, *movdi_media_nofpu, movv8qi_i, movv2hi_i): Likewise.
2279         (movv4hi_i, movv2si_i): Likewise.
2280         (movsi_const): Adjust the second operand of ior so to match with
2281         the Csu constraint.
2282         (movdi_const, movdi_const_32bit): Likewise.
2283         (movdi_const_16bit+1): Don't sign-extend LOW.
2284         (movdi_const_16bit+2): Likewise.  Remove the zero_extend and truncate
2285         step.
2286         (*double_shori): Fix the split condition.  Use GEN_INT instead
2287         of get_int_mode calls.  Mask lower 16-bit of the argument of
2288         the last GEN_INT.
2289         (sym2GOTPLT): Remove.
2290         (symGOTPLT2reg): Replace gen_sym2GOTPLT with gen_rtx_CONST and
2291         gen_rtx_UNSPEC.
2292         * config/sh/predicates.md (arith_operand): Use EXTRA_CONSTRAINT_Css
2293         instead of EXTRA_CONSTRAINT_C16.
2294
2295 2006-01-07  Ian Lance Taylor  <ian@airs.com>
2296             David Edelsohn  <edelsohn@gnu.org>
2297
2298         PR rtl-optimization/25662
2299         * optabs.c (simplify_expand_binop): Use simplify_binary_operation
2300         for constant operands instead of simplify_gen_binary.
2301         * simplify-rtx.c (simplify_gen_binary): Swap commutative operands
2302         after trying simplify_binary_operation
2303
2304 2006-01-06  Daniel Berlin  <dberlin@dberlin.org>
2305
2306         * tree.c (iterative_hash_expr): Hash decls based on UID.
2307
2308 2006-01-06  Eric Christopher  <echristo@apple.com>
2309
2310         * doc/tm.texi (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Document.
2311         (TARGET_UNWIND_EMIT): Fix spelling.
2312         * target.h (gcc_target): Add except_table_label.
2313         * except.c (output_function_exception_table): Use.
2314         * varasm.c (default_emit_except_table_label): New.
2315         * target-def.h (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): New default
2316         define.
2317         (asm_out): Add here.
2318         * output.h (default_emit_except_table_label): Prototype.
2319         * config/darwin-protos.h (darwin_emit_except_table_label): Ditto.
2320         * config/darwin.c (darwin_emit_except_table_label): Define.
2321         * config/darwin.h (TARGET_ASM_EMIT_EXCEPT_TABLE): Ditto.
2322
2323 2006-01-06  Zdenek Dvorak <dvorakz@suse.cz>
2324
2325         PR tree-optimization/18527
2326         * tree-ssa-loop-niter.c (number_of_iterations_cond,
2327         number_of_iterations_special, number_of_iterations_exit):
2328         Move base and step of an iv to a single structure.  Add
2329         no_overflow flag, and use it in # of iterations analysis.
2330         * tree-scalar-evolution.c (analyze_scalar_evolution_in_loop): Add
2331         folded_casts argument.
2332         (simple_iv): Pass base and step in a structure.  Set no_overflow
2333         flag.
2334         (scev_const_prop): Add argument to analyze_scalar_evolution_in_loop.
2335         Evaluate expensiveness of computing # of iterations instead of
2336         the final expression.
2337         * tree-scalar-evolution.h (affine_iv): New structure.
2338         (simple_iv): Declaration changed.
2339         * tree-chrec.c (chrec_apply): Handle chrecs containing symbols.
2340         * tree-ssa-loop-ivopts.c (determine_biv_step, find_givs_in_stmt_scev,
2341         find_givs_in_stmt): Changed due to simple_iv change.
2342
2343 2006-01-06  Jeff Law  <law@redhat.com>
2344
2345         PR ada/24994
2346         * tree-cfg.c (bsi_replace): Rename final argument from
2347         PRESERVE_EH_INFO to UPDATE_EH_INFO.  Fix typo in last
2348         change (stmt -> orig_stmt).
2349         * tree-eh.c (verify_eh_throw_stmt_node): New function.
2350         (bsi_remove): Add new argument.  Remove EH information
2351         if requested.
2352         (verify_eh_throw_table_statements): New function.
2353         (bsi_remove): Add new argument REMOVE_EH_INFO.  All callers
2354         updated.
2355         * tree-optimize.c (execute_free_cfg_annotations): Verify
2356         the EH throw statement table after removing annotations.
2357         * except.h (verify_eh_throw_table_statements): Prototype.
2358         * tree-flow.h (bsi_remove): Update prototype.
2359         * tree-vrp.c (remove_range_assertions): Add new argument to
2360         bsi_remove call.
2361         * tree-ssa-loop-im.c (move_computations_stmt): Likewise.
2362         * tree-complex.c (expand_complex_div_wide): Likewise.
2363         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Likewise
2364         * tree-tailcall.c (eliminate_tailcall): Likewise.
2365         * tree-ssa-dse.c (dse_optimize_stmt): Likewise.
2366         * tree-ssa-loop-ivopts.c (remove_statement): Likewise.
2367         * tree-nrv.c (tree_nrv): Likewise.
2368         * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Likewise.
2369         * tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
2370         (combine_blocks): Likewise.
2371         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Likewise.
2372         * tree-cfgcleanup.c (cleanup_ctrl_expr_graph): Likewise.
2373         (cleanup_control_flow): Likewise.
2374         (remove_forwarder_block): Likewise.
2375         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
2376         * tree-sra.c (sra_replace): Likewise.
2377         * tree-ssa-forwprop.c (forward_propagate_into_cond): Likewise.
2378         (forward_propagate_single_use_vars): Likewise.
2379         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
2380         * tree-inline.c (expand_call_inline): Likewise.
2381         * tree-vect-transform.c (vect_transform_loop): Likewise.
2382         * tree-outof-ssa.c (rewrite_trees): Likewise.
2383         * tree-cfg.c (make_goto_expr_edges): Likewise.
2384         (cleanup_dead_labels): Likewise.
2385         (tree_merge_blocks, remove_bb, disband_implicit_edges): Likewise.
2386         (bsi_move_before, bsi_move_after): Likewise.
2387         (bsi_move_to_bb_end, try_redirect_by_replacing_jump): Likewise
2388         (tree_redirect_edge_and_branch, tree_split_block): Likewise.
2389
2390 2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>
2391
2392         PR tree-opt/25528
2393         * tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
2394         and IMAGPART_EXPR.
2395         * tree-flow-inline.h (var_can_have_subvars): Handle complex types
2396         on non gimple variables.  Also add checks at the top for decls and
2397         mtags.
2398         * tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
2399         complex types.
2400         * tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
2401         and IMAGPART_EXPR for creating MUST_DEFs.
2402         (get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
2403         and NAME_MEMORY_TAG separately from the DECLs.
2404
2405 2006-01-06  Richard Guenther  <rguenther@suse.de>
2406
2407         * tree-dfa.c (mark_new_vars_to_rename): Create stmt
2408         annotation, if necessary.
2409         * tree-ssa-pre.c (create_expression_by_pieces): Remove
2410         redundant calls to update_stmt.
2411         * tree-ssa-forwprop.c (tidy_after_forward_propagate_addr):
2412         Likewise.
2413
2414 2006-01-05  Richard Henderson  <rth@redhat.com>
2415
2416         * c-parser.c (c_parser_objc_methodprotolist): Handle CPP_PRAGMA.
2417
2418 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
2419
2420         * c-typeck.c: Update copyright date.
2421
2422 2006-01-05  Carlos O'Donell  <carlos@codesourcery.com>
2423
2424         * c-typeck.c (build_c_cast): Always warn when casting
2425         from a pointer to an integer of different size, even if
2426         the node was constant.
2427
2428 2006-01-05  Richard Guenther  <rguenther@suse.de>
2429
2430         PR tree-optimization/22555
2431         * tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
2432         if one structure field is an array.
2433         * tree-ssa-operands.c (get_expr_operands): Continue scanning
2434         operands even if we found a subvar, but ignore VOPs in this
2435         case.
2436         * tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
2437         for renaming.
2438         * tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.
2439
2440 2006-01-05  Richard Earnshaw  <rearnsha@arm.com>
2441
2442         PR middle-end/24998
2443         * arm/t-netbsd (LIB2FUNCS_EXTRA): Define.
2444
2445 2006-01-05  Richard Guenther  <rguenther@suse.de>
2446             Diego Novillo  <dnovillo@redhat.com>
2447
2448         * tree-pass.h (TODO_remove_unused_locals): Define.
2449         * gimple-low.c (expand_var_p, remove_useless_vars,
2450         pass_remove_useless_vars): Remove.  Update all users.
2451         * tree-ssa-live.c (mark_all_vars_used_1): Handle SSA names.
2452         (remove_unused_locals): New function.
2453         * tree-flow.h (remove_unused_locals): Declare.
2454         * passes.c (execute_todo): Call remove_unused_locals if
2455         TODO_remove_unused_locals is set.
2456         * tree-into-ssa.c (pass_build_ssa): Add TODO_remove_unused_locals.
2457         * tree-ssa-dce.c (pass_dce): Likewise.
2458         * tree-outof-ssa.c (pass_del_ssa): Likewise.
2459
2460 2006-01-05  Richard Guenther  <rguenther@suse.de>
2461
2462         * tree-flow.h (struct fieldoff): Decompose field to
2463         type, size and decl.
2464         * tree-ssa-alias.c (create_sft): Take type as parameter.
2465         (create_overlap_variables_for): Store type, size and decl
2466         in the fieldoff structure.
2467         * tree-ssa-structalias.c (fieldoff_compare): Adjust users
2468         of struct fieldoff.
2469         (push_fields_onto_fieldstack): Likewise.
2470         (create_variable_info_for): Likewise.  Use offset for the
2471         SFT name if the decl is not available.
2472
2473 2006-01-04  Paul Brook  <paul@codesourcery.com>
2474
2475         * config/m68k/m68k.c (m68k_output_mi_thunk): Use jmp, not jsr.
2476
2477 2006-01-04  Daniel Berlin  <dberlin@dberlin.org>
2478
2479         * lambda-code.c (can_put_in_inner_loop): Relax
2480         restrictions.
2481         (can_put_after_inner_loop): New function.
2482         (can_convert_to_perfect_nest): Use can_put_after_inner_loop as well.
2483         (perfect_nestify): Change to make copies and modify uses.
2484
2485 2006-01-04  Richard Henderson  <rth@redhat.com>
2486
2487         Merge from gomp branch:
2488         * c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id
2489         via integer constant.
2490         (pragma_lex): Remove.
2491         * c-pch.c (c_common_pch_pragma): Accept the name as an argument,
2492         rather than parsing it.
2493         * c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname,
2494         handle_pragma_extern_prefix): Add %< %> quotes.
2495         (registered_pragmas): New.
2496         (c_register_pragma_1): New.
2497         (c_register_pragma): Use it.
2498         (c_register_pragma_with_expansion): Likewise.
2499         (c_invoke_pragma_handler): New.
2500         (init_pragma): Use cpp_register_deferred_pragma directly for
2501         pch_preprocess.
2502         * c-pragma.h (enum pragma_kind): New.
2503         (pragma_handler): New.
2504         (c_invoke_pragma_handler): Declare.
2505         * c-common.c (c_parse_error): Pretty print CPP_PRAGMA and
2506         CPP_PRAGMA_EOL.
2507         * c-common.h (c_common_pch_pragma): Update decl.
2508         * Makefile.in (c-parser.o): Update dependencies.
2509         (GTFILES): Add c-pragma.h.
2510         * c-parser.c (struct c_token): Add pragma_kind.
2511         (struct c_parser): Add in_pragma.
2512         (c_lex_one_token): Always initialize keyword and pragma_kind.
2513         Extract data for CPP_PRAGMA.
2514         (c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL.
2515         (c_parser_consume_token): Don't allow CPP_PRAGMA unless errors.
2516         Don't allow CPP_PRAGMA_EOL if in_pragma.
2517         (c_parser_consume_pragma): New.
2518         (c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL.
2519         (c_parser_skip_to_end_of_parameter): Likewise.
2520         (c_parser_skip_to_end_of_block_or_statement): Likewise.
2521         (c_parser_skip_to_pragma_eol): New.
2522         (c_parser_external_declaration): Handle CPP_PRAGMA.
2523         (c_parser_compound_statement_nostart): Likewise.
2524         (c_parser_statement_after_labels): Likewise.
2525         (c_parser_pragma): New.
2526         (pragma_lex): Likewise.
2527         (c_parser_pragma_pch_preprocess): New.
2528         (c_parser_new): Merge into ...
2529         (c_parse_file): ... here.  Call c_parser_pragma_pch_preprocess.
2530
2531 2006-01-04  Jeff Law  <law@redhat.com>
2532
2533         PR ada/24994
2534         * tree-cfg.c (bsi_replace): Remove the original statement
2535         from the EH throw statement table.
2536
2537 2006-01-04  Jakub Jelinek  <jakub@redhat.com>
2538
2539         * config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
2540         make the prototype extern "C" and add throw ().
2541
2542         PR target/25554
2543         * config/i386/i386.md (testqi_ext_3): Ensure len is positive
2544         and pos non-negative and pos + len <= 32.
2545         (testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
2546         drop pos + len < HOST_BITS_PER_WIDE_INT test.
2547         (testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
2548
2549         PR c/25559
2550         * c-common.c (handle_vector_size_attribute): Reject zero vector size
2551         as well as sizes not multiple of component size.
2552
2553         PR debug/25562
2554         * function.c (instantiate_expr): New function.
2555         (instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
2556         walk its DECL_VALUE_EXPR with instantiate_expr.
2557
2558         * dwarf2out.c (loc_descriptor_from_tree_1): Don't add
2559         DW_OP_deref{,_size} if address isn't going to be added.
2560
2561 2006-01-04  Ben Elliston  <bje@au.ibm.com>
2562
2563         * config/fp-bit.h: Use top-of-file comment from libgcc2.c.
2564         * config/fp-bit.c: Likewise.
2565
2566 2006-01-03  Daniel Berlin  <dberlin@dberlin.org>
2567
2568         * dominance.c: Add comment about why we use DFS numbering
2569         of dominance tree.
2570
2571 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
2572             Richard Henderson  <rth@redhat.com>
2573
2574         Merge from gomp-branch:
2575         * varasm.c (assemble_variable): Handle thread-local COMMON data.
2576         * defaults.h (ASM_OUTPUT_TLS_COMMON): Define.
2577
2578 2006-01-03  Paolo Bonzini  <bonzini@gnu.org>
2579
2580         PR rtl-optimization/25578
2581         * combine.c (combine_simplify_rtx, force_to_mode): Don't
2582         pass a parameter to simplify_shift_const if changing ASHIFTRT
2583         to LSHIFTRT.
2584
2585 2006-01-03  Adrian Straetling  <straetling@de.ibm.com>
2586
2587         * builtins.c (get_builtin_sync_mem): New function.
2588         (expand_builtin_sync_operation, expand_builtin_compare_and_swap,
2589         expand_builtin_lock_test_and_set, expand_builtin_lock_release):
2590         Call get_builtin_sync_mem to generate mem rtx.
2591
2592 2006-01-03  Richard Guenther  <rguenther@suse.de>
2593
2594         PR c/25183
2595         * stmt.c (add_case_node): Make sure to clear overflow flags
2596         from ranges.
2597
2598 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
2599
2600         Merge from gomp-branch.
2601         * config/sparc/sync.md: New file.
2602         * config/sparc/sparc.md (UNSPECV_MEMBAR, UNSPECV_CAS, UNSPECV_SWAP,
2603         UNSPECV_LDSTUB): New constants.
2604         * config/sparc/sparc.c (sparc_expand_compare_and_swap_12): New function.
2605         * config/sparc/predicates.md (memory_reg_operand): New predicate.
2606         * config/sparc/sparc-protos.h (sparc_expand_compare_and_swap_12): New
2607         prototype.
2608
2609 2006-01-03  Roger Sayle  <roger@eyesopen.com>
2610
2611         * combine.c (reg_subword_p): New predicate to test whether the
2612         destination of a set refers to a subword/piece of a register.
2613         (try_combine): Generalize the code to merge the setting of a
2614         pseudo to a constant followed by a set of a subword of that
2615         register to a constant.
2616
2617 2006-01-03  Kazu Hirata  <kazu@codesourcery.com>
2618
2619         * basic-block.h (control_flow_graph): Change the type of
2620         x_label_to_block_map to VEC(basic_block,gc) *.
2621         * tree-cfg.c (init_empty_tree_cfg, label_to_block_fn,
2622         set_bb_for_stmt): Adjust the uses of x_label_to_block_map.
2623
2624         * tree-ssa-propagate.c (cfg_blocks): Change the type to
2625         VEC(basic_block,heap) *.
2626         (cfg_blocks_add, cfg_blocks_get, ssa_prop_init,
2627         ssa_prop_fini): Adjust the uses of cfg_blocks.
2628
2629 2006-01-03  Steven Bosscher  <stevenb.gcc@gmail.com>
2630
2631         * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
2632         COMPONENT_REFs.
2633         * emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
2634         hashing trees instead of a pointer hash.
2635         (mem_attrs_htab_eq): Do a deep compare instead of a pointer
2636         compare for MEM_EXPR.
2637
2638         PR rtl-optimization/25130
2639         * cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
2640         when comparing MEMs for GCSE
2641
2642 2006-01-03  Ben Elliston  <bje@au.ibm.com>
2643
2644         * targhooks.h (default_decimal_float_supported_p): Declare.
2645         * targhooks.c (default_decimal_float_supported_p): Define.
2646         * target-def.h (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Redefine to
2647         `default_decimal_float_supported_p'.
2648         * doc/tm.texi (TARGET_DECIMAL_FLOAT_SUPPORTED_P): Update.
2649
2650 2006-01-02  Adam Nemet  <anemet@caviumnetworks.com>
2651
2652         * combine.c (apply_distributive_law <SUBREG>): Check
2653         TRULY_NOOP_TRUNCATION.
2654
2655 2006-01-02  Geoffrey Keating  <geoffk@apple.com>
2656
2657         * dwarf2out.c (have_switched_text_section): Delete.
2658         (have_multiple_function_sections): New.
2659         (have_location_lists): Make 'bool'.
2660         (add_AT_loc_list): Use 'true' not '1'.
2661         (dwarf2out_switch_text_section): Set have_multiple_function_sections.
2662         (output_loc_list): Use have_multiple_function_sections.
2663         (output_ranges): Likewise.
2664         (dwarf2out_begin_function): Set have_multiple_function_sections if
2665         necessary.
2666         (dwarf2out_source_line): Don't fake separate_line_info_table_in_use.
2667         Check function_section rather than DECL_SECTION_NAME.
2668         (dwarf2out_finish): Use have_multiple_function_sections.
2669         Don't clear have_location_lists.
2670
2671 2006-01-02  Eric Botcazou  <ebotcazou@adacore.com>
2672             Jan Hubicka  <jh@suse.cz>
2673
2674         * cfglayout.c (fixup_reorder_chain): Remove kludge for the
2675         case of conditional jump jumping to the next instruction.
2676         * cfgrtl.c (force_nonfallthru_and_redirect): Accept all
2677         cases of conditional jump jumping to the next instruction.
2678
2679 2006-01-02  Jan Hubicka  <jh@suse.cz>
2680
2681         * i386.c (*_cost): Add COSTS_N_INSNS.
2682         (ix86_rtx_costs): Do not use COSTS_N_INSNS.
2683
2684 2006-01-02  Paolo Bonzini  <bonzini@gnu.org>
2685
2686         PR target/25259
2687         * Makefile.in (DECNUMINC): Include libdecnumber's build directory.
2688
2689 2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2690
2691         * config/arm/arm.c (all_fpus): Fix comment typo.
2692         * config/darwin.c: Likewise.
2693         * config/frv/frv.h (FRV_STRUCT_VALUE_REGNUM): Likewise.
2694         * config/h8300/h8300.md (extendqisi2_h8300hs): Likewise.
2695         * config/m68hc11/m68hc11.c (m68hc11_reload_operands): Likewise.
2696
2697 2006-01-01  David Edelsohn  <edelsohn@gnu.org>
2698
2699         * config/rs6000/rs6000.c (rs6000_expand_compare_and_swapqhi): New.
2700         (rs6000_split_compare_and_swapqhi): New.
2701         * config/rs6000/sync.md (sync_compare_and_swap{hi,qi}): New.
2702         (sync_compare_and_swapqhi_internal): New.
2703         * config/rs6000/rs6000-protos.h: Declare.